Zum Inhalt springen

Calendar Base (cal 1.4.0) FE-editing

Erstellt am 27. September 2010 · 2 Antworten · letzte Antwort am 12. Oktober 2010

Tags: Kalender & Termine, Frage

bigSatchmo ·

Hallo,

ich bin nun schon eine Weile am suchen und stell mich wahrscheinlich nur zu blöd an.
Ich möchte Calendar Base (1.4.0) mit Typo3 4.4.2 dazu bewegen, Frontendnutzern das Erstellen, Bearbeiten und Löschen der SELBST erstellten Events zu erlauben und bei Änderung und Erstellung eine Kontrolle des Admins zwischen schalten bevor die Änderung sichtbar ist.
Im TS steht

plugin.tx_cal_controller {

   event {
      eventViewPid = 330
      createEventViewPid = 330
      editEventViewPid = 330
      deleteEventViewPid = 330
  }
  rights {
    edit = 1
    defaultSavePid = 329
    admin.user = 72
    create {
      event {
        group = 1
        publicEvents.group = 1
        addFeUserToShared = 1
        saveEventToPid = 329
        publicEvents.group = 1
        allowedToCreateEvents.group = 1
        enableAllFields.group = 1
      }
    }
    edit {
      event.group = 1
       enableAllFields.group = 1
      event.addFeGroupToShared = 1
       event.onlyOwnEvents.group = 1
      event.publicEvents.group = 1
    }
    delete {
      event.group = 1
      event.addFeGroupToShared = 1
      event.onlyOwnEvents.user = 57,67
      event.allowedToDeleteEvents.group = 1
    }
  }
  language = de
  renderCharset = utf-8
  saveEventToPid = 329
}

bei den Templates habe ich New CSS-based template (cal), New CSS-styles (cal) und FE-Editing (cal) hinzugefügt
Der Rest ist relativ funktionstüchtig organisiert. Ich kann mir den Kalender in verschiedenen Varianten anschauen und das Erstellen, bearbeiten und löschen funktioniert bereits.

Wie zu sehen ist, möchte ich allen Nutzer erlauben eben diese Events zu erstellen, editieren und zu löschen. Und zwar so, dass Nutzer 2 den Eintrag von Nutzer 1 nicht ändern kann. Leider kann jeder Nutzer immer alles. Hat jemand eine Idee?
Und wenn es jemand gleich zur Hand hat, wie kann ich vorschreiben, dass ein Admin erst einen neuen oder geänderten Eintrag absegnen muss. Ist aber zweitrangig.

Danke und Grüße Enrico

deXx ·

Hallo,

ich habe genau dasselbe Problem. Alle User können alles ;-) ... es soll aber nur der eine User sein erstelltes Event ändern.

Irgendwie ist es ja auch logisch, da man per TypoScript angibt:

plugin.tx_cal_controller {
 
   event {
    edit {
       event.onlyOwnEvents.group = 1
    }
    }
  }

Die User als ID anzugeben halte ich bei 1500 Mitgliedern als unzumutbar, darüber hinaus hätte es den selben Effekt, wie die Usergroup (alle wären Editierberechtigt).

LG
deXx

bigSatchmo ·

Ich hätte mir auch mal für die Allgemeinheit selbst antworten können... sorry.
Das Problem ist die Entwicklerversion gewesen. Da hat irgendeiner mal auf Commit gedrückt und das ding funzt nur zur Hälfte. Also immer schön die Version von Typo3.org nutzen.

Zur Vollständigkeit aber hier nochmal mein TS:

#Rechte Vergabe für das Veranstlatungssystem
plugin.tx_cal_controller {
  language = de
  renderCharset = utf-8
  saveEventToPid = 329
  
  dateConfig {
    dayPosition = 0
    monthPosition = 1
    yearPosition = 2
    splitSymbol = .
  }
  event {
      eventViewPid = 89
      createEventViewPid = 89
      editEventViewPid = 89
      deleteEventViewPid = 89
  }
  rights {
    edit = 1
    defaultSavePid = 90
    create {
      event {
        enableRTE = 0
        group = 1
        publicEvents.public = 1
        publicEvents.group = 1
        addFeUserToShared = 1
        #addFeGroupToShared = 1
        #enableAllFields.group = 1
        addFeUserToNotify = 1
        saveEventToPid = 90
        fields {
            calendar_id.default = 1
            calendar_id.public = 0
            category.public = 1
            allowedToCreateImages.group = 1
            startdate.constrain.1.regexp = /(\d{2}).(\d{2}).(\d{4})/
            startdate.constrain.1.message.dataWrap = <span class="constrain">%%%WRONG_DATE%%% (TT.MM.JJJJ)</span>
            enddate.constrain.1.regexp = /(\d{2}).(\d{2}).(\d{4})/
            enddate.constrain.1.message.dataWrap = <span class="constrain">%%%WRONG_DATE%%% (TT.MM.JJJJ)</span>
          }
        fields.image.group = 1
        fields.cal_organizer.public = 0
        fields.cal_location.public = 0
        fields.event_type.public = 0
        fields.event_type.default = 0
        fields.recurring.group = 1
      }
    }
    edit {
       event.enableRTE = 0
       event.group = 1
       event.onlyOwnEvents.group = 1
       event.addFeUserToShared = 1
       event.addFeUserToNotify = 1
       event.fields {
            calendar_id.default = 1
            calendar_id.public = 0
            allowedToCreateImages.group = 1
            startdate.constrain.1.regexp = /(\d{2}).(\d{2}).(\d{4})/
            startdate.constrain.1.message.dataWrap = <span class="constrain">%%%WRONG_DATE%%% (TT.MM.JJJJ)</span>
            enddate.constrain.1.regexp = /(\d{2}).(\d{2}).(\d{4})/
            enddate.constrain.1.message.dataWrap = <span class="constrain">%%%WRONG_DATE%%% (TT.MM.JJJJ)</span>
            image.group = 1
            cal_organizer.public = 0
            cal_location.public = 0
            category.public = 1
            event_type.public = 0
            event_type.default = 0
            recurring.group = 1
          }
    }
    delete {
      event.group = 1
      event.addFeUserToShared = 1
      event.onlyOwnEvents.group = 1
      event.addFeUserToNotify = 1
    #  event.allowedToDeleteEvents.group = 1
    }
  }
  view {
    event.event.image.dataWrap = |
    event.event.cruser_name.dataWrap = <div>erstellt von:&nbsp; |</div>
    
    other.loginPageId = 86
    other.userFolderId = 87
    
    create_event.redirectAfterCreateToPid = 334
    create_event.endtime_stdWrap.dataWrap = bis <select name="tx_cal_controller[endtime]" id="endtime" size="1">|</select>
    create_event.endtime_stdWrap.dataWrap = <label for="endtime">bis:</label> <select name="tx_cal_controller[endtime]" id="endtime" size="1">|</select>
    create_event.location_stdWrap.dataWrap = <p><label for="location">Wo###LOCATION_REQUIRED###:</label><input type="text" value="|" size="20" name="tx_cal_controller[location]" id="location" /></p>

    edit_event.redirectAfterCreateToPid = 335
    edit_event.redirectAfterEditToPid = 335
    
    delete_event.redirectAfterDeleteToPid = 336
    
    edit_event.redirectAfterEditToView = single_view
    edit_event.location_stdWrap.dataWrap = <p><label for="location">Wo###LOCATION_REQUIRED###:</label><input type="text" value="|" size="20" name="tx_cal_controller[location]" id="location" /></p>
    edit_event.cal_location_stdWrap.dataWrap = <p><label for="cal_location">Wo###CAL_LOCATION_REQUIRED###:</label><select name="tx_cal_controller[cal_location]" size="1" id="cal_location">|</select></p>
    edit_event.endtime_stdWrap.dataWrap = <label for="endtime">bis:</label> <select name="tx_cal_controller[endtime]" id="endtime" size="1">|</select>
  }
}

es ist immer hilfreich im ObjectBrowser mal nach allen Möglichkeiten zu schauen, irgendwann tun einem die Augen weh aber man findet fast alles

Grüße Enrico