[TYPO3-german] Cal mit FE-Editing und User-Gruppen-Berechtigung

Michael Schumann mulix at gmx.de
Thu Nov 6 20:20:24 CET 2014


Hallo Liste,

ich sitze an der Ext. Cal und versuche die Berechtigungen für das
Frontend-Editing korrekt zu setzen. Aber irgendwie komme ich da nicht
weiter.
Ziel ist das die User der Gruppen "Vereinsleitung" und "Vereinsverwaltung"
alle Termine bearbeiten und löschen darf. Die User der Gruppe
"Abteilungsleiter" aber nur jeweils Ihre eigenen Löschen und bearbeiten
darf.
Erstellen darf jeder der drei Gruppen, wobei die Gruppe "Abteilungsleiter"
als Kalenderterminveranstalter nur sich auswählen kann und die Gruppen
"Vereinsleitung" und "Vereinsverwaltung" einen Termin quasi jeder Abteilung
zuordnen darf. Das geht auch soweit da für alle Abteilungen
Kalenderterminveranstalter angelegt sind welche als Gemeinsame Benutzer die
"Vereinsleitung", "Vereinsverwaltung" sowie die passende Abteilung
eingetragen haben.

Egal wie aber ich verstehe es einfach nicht und finde im Netz zwar zig
Anleitungen aber der wirklich richtige Umsetzung ist einfach nicht dabei.

Hier mal die IDs der Gruppen:
Vereinsleitung: 12
Vereinsverwaltung: 13
Abteilungsleiter: 11
Die Kalender-ID: 2

Typo3 Version: 6.1.7
Cal: 1.7.0

Mein TypoScript (Setup) für die Ext sieht soweit so aus (Sorry für das
massiv lange TypoScript:
plugin.tx_cal_controller {
  calendarName = Geschäftsstelle
  pidList = 170
  calendar = 2
  rights {
    edit = 1
    admin.user =
    admin.group = 12,13
    allowedUsers =
    allowedGroups = 11,12,13
    create {
      event {
        saveEventToPid = 170
        user =
        group = 11,12,13
        public = 0
        inPast {
          user =
          group = 11,12,13
        }
        forTodayAndFuture {
          user =
          group = 11,12,13
        }
        notifyUsersOnPublicCreate =
        publicEvents {
          user =
          group =
          public = 0
        }
        additionalFields =
        addFeUserToNotify =
        addFeUserToShared =
        addFeGroupToShared =
        addFeGroupToShared.ignore =
        enableRTE = 0
        enableAllFields {
          user =
          group =
          public = 0
        }
        timeOffset = 0
        fields {
          hidden {
            user =
            group =
            public = 0
            default = 0
            required = 0
          }
          event_type {
            user =
            group =
            public = 0
            # Possible values: 0=event,3=meeting
            allowedUids = 0
            default = 0
            required = 0
          }
          calendar_id {
            user =
            group =
            public = 0
            default = 2
            required = 0
          }
          category {
            user =
            group =
            public = 0
            default = 20
            required = 0
            allowedUids =
          }
          startdate {
            user =
            group =
            public = 1
            default =
            required = 1
            constrain {
              1 {
                #less/before/greater/after/equals/regexp/userfunc
                rule = regexp
                regexp = /(\d{4})-(\d{2})-(\d{2})/
                message = TEXT
                message {
                  dataWrap =  <span class="constrain">%%%WRONG_DATE%%%
(yyyy-mm-dd)</span>
                }
              }
            }
          }
          enddate {
            user =
            group =
            public = 1
            default =
            required = 1
            constrain <
plugin.tx_cal_controller.rights.create.event.fields.startdate.constrain
          }
          starttime {
            user =
            group =
            public = 1
            # usage: 1300 (hhmm) or now
            default =
            required = 1
            displayCondition {
              1 {
                #less/before/greater/after/equals/regexp/userfunc
                rule = equals
                conditionField = allday
                value = 0
                message = TEXT
                message {
                  dataWrap = false
                }
              }
            }
          }
          endtime {
            user =
            group =
            public = 1
            default =
            required = 1
            displayCondition {
              1 {
                #less/before/greater/after/equals/regexp/userfunc
                rule = equals
                conditionField = allday
                value = 0
                message = TEXT
                message {
                  dataWrap = false
                }
              }
            }
          }
          start {
            constrain {
              1 {
                #less/before/greater/after/equals/regexp/userfunc
                rule = before|equals
                field = end
                message = TEXT
                message {
                  dataWrap =  <span
class="constrain">%%%CONSTRAIN_START_BEFORE_END%%%</span>
                }
              }
              2 {
                #less/before/greater/after/equals/regexp/userfunc
                rule = after
                field = now
                message = TEXT
                message {
                  dataWrap =  <span
class="constrain">%%%IS_IN_PAST%%%</span>
                }
              }
            }
          }
          end {
            constrain {
              1 {
                #less/before/greater/after/equals/regexp/userfunc
                rule = after|equals
                field = start
                message = TEXT
                message {
                  dataWrap =  <span
class="constrain">%%%CONSTRAIN_END_AFTER_START%%%</span>
                }
              }
              2 {
                #less/before/greater/after/equals/regexp/userfunc
                rule = after
                field = now
                message = TEXT
                message {
                  dataWrap =  <span
class="constrain">%%%IS_IN_PAST%%%</span>
                }
              }
            }
          }
          allday {
            user =
            group =
            public = 0
            default = 0
            required = 0
          }
          title {
            user =
            group =
            public = 1
            default =
            required = 1
          }
          cal_organizer {
            user =
            group =
            public = 1
            default =
            required = 1
            allowedUids =
            onlyOwn = 1
          }
          organizer {
            user =
            group =
            public = 0
            default =
            required = 0
            allowedUids =
          }
          cal_location {
            user =
            group =
            public = 0
            default = 2
            required = 1
            allowedUids =
            onlyOwn =
          }
          location {
            user =
            group =
            public = 0
            default =
            required = 0
            allowedUids =
          }
          teaser {
            user =
            group =
            public = 0
            default =
            required = 0
          }
          description {
            user =
            group =
            public = 1
            default =
            required = 0
          }
          recurring {
            user =
            group =
            public = 0
            default =
            required = 0
            displayCondition {
              1 {
                #less/before/greater/after/equals/regexp/userfunc
                rule = equals
                conditionField = eventType
                value = 0
                message = TEXT
                message {
                  dataWrap = false
                }
              }
            }
          }
          notify {
            user =
            group =
            public = 0
            defaultUser =
            required = 0
            displayCondition {
              1 {
                #less/before/greater/after/equals/regexp/userfunc
                rule = equals
                conditionField = eventType
                value = 0
                message = TEXT
                message {
                  dataWrap = false
                }
              }
            }
          }
          shared {
            user =
            group =
            public = 0
            defaultUser =
            defaultGroup =
            required = 0
            displayCondition {
              1 {
                #less/before/greater/after/equals/regexp/userfunc
                rule = equals
                conditionField = eventType
                value = 0
                message = TEXT
                message {
                  dataWrap = false
                }
              }
            }
          }
          exception {
            user =
            group =
            public = 0
            default =
            required = 0
            displayCondition {
              1 {
                #less/before/greater/after/equals/regexp/userfunc
                rule = equals
                conditionField = eventType
                value = 0
                message = TEXT
                message {
                  dataWrap = false
                }
              }
            }
          }
          image {
            user =
            group =
            public = 0
            default =
            required = 0
          }
          image_caption {
            user =
            group =
            public = 0
            default =
            required = 0
          }
          image_title {
            user =
            group =
            public = 0
            default =
            required = 0
          }
          image_alt {
            user =
            group =
            public = 0
            default =
            required = 0
          }
          attachment {
            user =
            group =
            public = 0
            default =
            required = 0
          }
          attachment_caption {
            user =
            group =
            public = 0
            default =
            required = 0
          }
          attendee {
            user =
            group =
            public = 1
            default =
            required = 0
            allowedUids =
            displayCondition {
              1 {
                #less/before/greater/after/equals/regexp/userfunc
                rule = equals
                conditionField = eventType
                value = 3
                message = TEXT
                message {
                  dataWrap = false
                }
              }
            }
          }
          attendee_external {
            user =
            group =
            public = 1
            default =
            required = 0
            allowedUids =
            displayCondition {
              1 {
                #less/before/greater/after/equals/regexp/userfunc
                rule = equals
                conditionField = eventType
                value = 3
                message = TEXT
                message {
                  dataWrap = false
                }
              }
            }
          }
          sendout_invitation {
            user =
            group =
            public = 1
            default = 0
            required = 0
            displayCondition {
              1 {
                #less/before/greater/after/equals/regexp/userfunc
                rule = equals
                conditionField = eventType
                value = 3
                message = TEXT
                message {
                  dataWrap = false
                }
              }
            }
          }
        } //end plugin.tx_cal_controller.right.create.event.fields
      } //end plugin.tx_cal_controller.right.create.event
    } //end plugin.tx_cal_controller.rights.create
    
    edit {
      event {
        user =
        group = 12,13
        public = 0
        additionalFields =
        timeOffset = 0
        enableAllFields {
          user =
          group =
          public = 0
        }
        fields < plugin.tx_cal_controller.rights.create.event.fields
        enableRTE = 0
        onlyOwnEvents {
          user =
          group = 11
        }
        addFeUserToShared =
        addFeGroupToShared =
        addFeGroupToShared.ignore =
        startedEvents {
          user =
          group =
          public = 0
        }
      } //end plugin.tx_cal_controller.rights.edit.event
    } //end plugin.tx_cal_controller.rights.edit
    
    delete {
      event {
        user =
        group = 12,13
        public = 0
        onlyOwnEvents {
          user =
          group = 11
        }
        startedEvents {
          user =
          group =
        }
        timeOffset = 0
      } //end plugin.tx_cal_controller.rights.delete.event
    } //end plugin.tx_cal_controller.rights.delete
  } //end plugin.tx_cal_controller.rights
  
  view {
    dontShowConfirmView = 1
    calendar = 2
    categoryMode = 1
    category = 20
    event {
      eventViewPid = 1059
      createEventViewPid = 1061
      editEventViewPid = 1062
      deleteEventViewPid = 1063
      dateFormat = %a, %d. %b %Y
      eventModelTemplate =
fileadmin/templates/tmpl/ext_cal/event_model_intern.html
      useTitleForLinkTitle = 1
      ownLinkTitleText =
      dateDayPosition = 0
      dateMonthPosition = 1
      dateYearPosition = 2
      dateSplitSymbol = -
      event {
        title.dataWrap = |
        alldayTitle.dataWrap = |
        startdate.dataWrap = |
        starttime.dataWrap = |
        enddate.dataWrap = |
        endtime.dataWrap = |
        description.dataWrap = |
        location.dataWrap = |
        organizer.dataWrap = |
        category.dataWrap = |
      }
    }
    create_event {
      redirectAfterCreateToPid = 1055
      redirectAfterCreateToView = day
    edit_event < plugin.tx_cal_controller.view.create_event
    edit_event {
      redirectAfterEditToPid = 1055
      redirectAfterEditToView = day
    }
    
    delete_event {
      redirectAfterDeleteToPid = 1055
      redirectAfterDeleteToView = day
    }
    
    day {
      dayViewPid = 1055
      dayStart = 0700
      dayEnd = 2300
      dateFormatWeekList = %a, %d %b
      timeFormatDay = %H:00
      dateFormatDay = %a, %d %b
      displayDate.strftime = %d. %B %Y
    }
    week {
      weekViewPid = 1056
      timeFormatDay = %H:00
      dayViewLink.strftime = %a (%d)
      displayDate{
        1.strftime = %d. %B
        2.strftime = %d. %B %Y
        2.wrap = &nbsp; bis &nbsp;|
      }
      event {
        organizer {
          dataWrap = <div>|</div>
        }
      }
    }
    month {
      monthViewPid = 1057
      thisMonthsEvents = 1
      event{
        title.crop = 30|..
        alldayTitle.crop = 30|..
      }
    }
    year {
      yearViewPid = 1058
    }
    list {
      listViewPid = 1060
      starttime = now
      endtime = +6month
      pageBrowser = 1
      pageBrowser {
        recordsPerPage = 20
        actPage_stdWrap.wrap = <span><b>|</b></span>
        pages_stdWrap.wrap = <span>|</span>
      }
      enableMonthWrapper = 1
      heading{
        1.strftime = %d. %B %Y
        2.strftime = %d. %B %Y
        2.wrap = &nbsp; bis &nbsp;|
      }
      event {
        dateFormat = %d. %B
        category.dataWrap = |
      }
    }
  }
 }

Jemand ne Idee?

Viele Grüße
Michael



More information about the TYPO3-german mailing list