Zum Inhalt springen

cal 0.15.4 Base Calendar - Frontend Editing - HowTo

Erstellt am 6. September 2007 · 6 Antworten · letzte Antwort am 23. Juli 2008

Tags: Frontend-Benutzer, Kalender & Termine, Frage

salsamartin ·

Lieber Steffen,

habe eben mal in die 0.16.0 aus dem SVN geschaut...
Alle Achtung! Das TS wird einfacher, die Ajax-Funktionen, die Dialoge, das TS-Feld im Flexform, aber ich habe es natuerlich nicht zum Laufen gebracht, was die Eingabe eines Events angeht.

Javascript-Fehler GetElementbyID(event_js) oder so. Aber wahrscheinlich arbeitest Du genau daran gerade.

Aber bis die rundlaeuft, habe ich eine Verstaendnisfrage bezueglich Rechtevergabe mit der 0.15.4, da bastele ich nun schon zu lange dran herum. Die Doku hoert da auf, wo es spannend wird...
Jetzt muss ich den Spezialisten fragen.

Vielleicht kannst Du das ja auf Deinen Tutorials veroeffentlichen.

Eines vorab: Diese Loesung hier funktioniert bei mir nicht. Aber vielleicht hat hier schonmal jemand so etwas gemacht und kann die Korrektur posten...

Aufgabe:
Konfigurieren Sie einen oeffentlichen Kalender mit folgenden Eigenschaften:
a) Er kann von jedem Besucher der Webseite eingesehen werden.
b) Angemeldeten Benutzern mit Gruppenzugehoerigkeit "cal-usergroup" sollen Termine erstellen koennen
c) und ihre selbst-erstellten Termine auch bearbeiten koennen.
d) Termine, die Benutzer "userA" erstellt hat, duerfen nicht von "userB" bearbeitet werden koennen.
e) Termine sollen ueber ein frontend-formular mit Richtext-Editor eingegeben und bearbeitet werden koennen

1. Erstellen Sie das notwendige Typoscript fuer constants
2. Erstellen Sie das notwendige Typoscript fuer setup, basierend auf der setup.txt der Extension
3. Beschreiben Sie die notwendigen Einstellungen fuer das Plugin, um den Kalender auf einer Seite darzustellen

Zutaten:
1 EXT cal 0.15.4 (geladen und Templates im TS-config eingebunden)
1 sys_calendar (Sysfolder, id=25)
1 grp_calendarAuthor (FE-Gruppe, id=2)
1 grp_calendarAdmin (FE-Gruppe, id=3)
2 fe_user (userA,userB; Mitglieder in cal-usergroup)
1 Public Calendar (Content-Objekt auf der Seite)

Loesung:

sys_calendar = 25
grp_calendarAuthor = 2
grp_calendarAdmin = 3

2. Setup

plugin.tx_cal_controller.rights.create.event {
  saveEventToPid = {$sys_calendar}
  allowedToCreateEvents.group = {$grp_calendarAuthor}
  allowedToCreatePublicEvents.group = {$grp_calendarAuthor}
  enableAllFields.group = {$grp_calendarAuthor}
  fields {
    allowedToCreateHidden.group      = {$grp_calendarAuthor}
    allowedToCreateCalendar.group    = {$grp_calendarAuthor}
    allowedToCreateDateTime.group    = {$grp_calendarAuthor}
    allowedToCreateTitle.group       = {$grp_calendarAuthor}
    allowedToCreateOrganizer.group   = {$grp_calendarAuthor}
    allowedToCreateLocation.group    = {$grp_calendarAuthor}
    allowedToCreateTeaser.group      = {$grp_calendarAuthor}
    allowedToCreateDescription.group = {$grp_calendarAuthor}
    allowedToCreateRecurring.group   = {$grp_calendarAuthor}
    allowedToCreateNotify.group      = {$grp_calendarAuthor}
    allowedToCreateShared.group      = {$grp_calendarAuthor}
    allowedToCreateException.group   = {$grp_calendarAuthor}
  }
}
plugin.tx_cal_controller.rights.edit = 1
plugin.tx_cal_controller.rights.edit.event {
  allowedToEditEvents.group = {$grp_calendarAdmin}
  fields {
    allowedToEditHidden.group      = {$grp_calendarAuthor}
    allowedToEditCalendar.group    = {$grp_calendarAuthor}
    allowedToEditCategory.group    = {$grp_calendarAuthor}
    allowedToEditDateTime.group    = {$grp_calendarAuthor}
    allowedToEditTitle.group       = {$grp_calendarAuthor}
    allowedToEditOrganizer.group   = {$grp_calendarAuthor}
    allowedToEditLocation.group    = {$grp_calendarAuthor}
    allowedToEditTeaser.group      = {$grp_calendarAuthor}
    allowedToEditDescription.group = {$grp_calendarAuthor}
    allowedToEditRecurring.group   = {$grp_calendarAuthor}
    allowedToEditCreator.group     = {$grp_calendarAuthor}
    allowedToEditNotify.group      = {$grp_calendarAuthor}
    allowedToEditException.group   = {$grp_calendarAuthor}
  }
}

(Frage: werden fields {} hier ueberhaupt gebraucht oder reicht es, enableAllFields.group zu verwenden? Fehlt was? Ist was zu viel?)

3. Einstellungen im cal-Plugin auf der Seite
Allgemeine Einstellungen:
+ Monats-Ansicht
+ Wochen-Ansicht
+ Tages-Ansicht
+ Ereignis-Ansicht
+ Ereignis erstellen
+ Ereignis editieren
+ Ereignis loeschen

Ausgangspunkt
+ Seite id=25

...die erste Version
Was fehlt? Was ist falsch? Geht die Aufgabenstellung ueberhaupt so zu loesen?
#paralyzed#

Und wie gesagt, die Loesung geht so noch nicht... 😢

salsamartin ·

In der svn-version (mindestens seit) 0.16.13 gibt es mittlerweile schoene Schalter wie:

plugin.tx_cal_controller.rights.edit.event.enableRTE = 1

Das loest sicher den Teil mit dem RTE

oder

plugin.tx_cal_controller.rights.edit.event.onlyOwnEvents.group = {$grp_calendarAuthor}

...bezieht sich das auf die ownEvents im ownCalendar oder gilt das auch fuer die Events (deren Eigentuemer(cruser_id) der eingeloggte FE-User ist) im PublicCalendar? Mein Wunschdenkenen nach ist das die Loesung, funktioniert aber bei mir so nicht.

Anmerkung: FE-Editing prinzipiell geht, das kann man leicht testen, in dem man plugin.tx_cal_controller.rights.admin.group = {$grp_calendarAuthor} setzt, dann koennen alle eingeloggten Mitglieder der Gruppe alle Termine bearbeiten...

#angry#

steffenk ·

Hi Martin,

ich bin im Moment etwas im Stress, werde da aber drauf eingehen.

Mario hat das FE-Editing umgestrickt und ich hab mir noch nicht alles angeschaut.

vg Steffen

pst ·

Das hört sich ja kompliziert an...
Ich muss zunächst mal ein großes Danke an die Entwickler loswerden, ohne die wir unser Projekt so nicht umsetzen könnten...

Aber: Irgendwie komme ich hinten und vorne nicht ganz bei mir der Konfiguration des Plugins: http://www.asta.uni-tuebingen.de/index.php?id=114

- der RTE geht nicht (trotz obiger Zeile)
- Kann man die Kategorien auch als Dropdown darstellen?
- Woher bekomme ich die Möglichkeit, ein Bild hochzuladen?
- Gibt es die Möglichkeit, die Termine direkt über einen Link in der Benachrichtigungsemail freizuschalten? Das würde mir jeden Abend ziemlich viel Zeit ersparen.
- Beim Speichern des Termins im FE bekomme ich nochmal eine Anzeige der Daten - aber wenn ich dort nicht speichern, sondern korrigieren will, muss ich auf abbrechen drücken - und alles ist weg...

Vielleicht gibt es ja zu einigen dieser Probleme schon eine Lösung... ansonsten gedulde ich mich bis zur nächsten Version ;-)
Philipp

salsamartin ·

Shared Public Calendar
Also der Loesungsansatz ist (Danke an Mario!)

plugin.tx_cal_controller.rights.create.event {
  addFeUserToShared = 1
  fields.allowedToCreateShared.group = {$grp_calendarAuthor}
}

Damit wird beim Anlegen eines neuen Events in der DB eine extra Referenz vom Event auf den fe_user angelegt, mit der das dann moeglich ist.

RTE
Damit der RTE auftaucht, braucht man noch

plugin.tx_cal_controller.rights.create.event {
  enableAllFields.group = {$grp_calendarAuthor}
  enableRTE = 1
}

Das ist zwar nicht logisch (enableAllFields), in der 0.15.4 habe ich es aber nicht anders hinbekommen. Siehe auch #698361 In diesem Post ist mittlerweile beschrieben, wie man cal 0.15.4 so hackt, dass es funktioniert.

Nebenwirkungen
Hierbei taucht das Problem auf, dass man moeglicherweise nicht alle Felder freigeben will. Braucht man aber den Image-Upload, sehe ich noch keine Moeglichkeit, als alles freizugeben (siehe auch #698391)

Thomas N ·

Hallo!

Das Thema is nun schon ne Weile her aber da ich im Inet nichts vernünftiges gefunden habe möchte ich dieses Tema gerne noch mal aufgreifen.

Gibt es bezgl der Konfiguration für das FE Editing schon irgendwas neues???

Ich Suche vergebends nach Möglichkeiten den Benutzern/Gruppen bestimmte Rechte zu geben und damit meine ich nicht "wer darf ein Event anlegen"; "wer darf locations anlegen", das is ja in der Doku deutlich beschrieben. Was allerdings nicht erwähnt wird sind die Rechte für einzelne Formularfelder für das FE Editing.

Z.B:
Wie lasse ich bestimmte Formularfelder ein- und ausblenden /je nach Gruppe. Und wie vergebe ich einem User die Rechte seine Events zu bearbeiten bzw. zu löschen? Über einen Kalender pro User würde das ja gehen, aber dann müsste man im BE immer einen Kalender anlegen und diesem dann dem User zuordnen. Bzw dem FE User die Rechte geben einen Kalender anzulegen. Was ich allerdings für eher unzumutbar halte!? oder?

Wie habt Ihr das gemacht? Könnt Ihr ne Seite empfehlen die evtl weiterhilft?

Bin dankbar für sämtliche Hinweise!