WBCE CMS – Way Better Content Editing.
You are not logged in.
Servus Gemeinde,
nutze auf einer WBCE 1.1.3 das Addon ProCalendar 1.3.6 und lasse die Terminliste über das Droplet ProCalendarEventlist ausgeben. Das funktioniert soweit ganz ordentlich (am Design muss ich noch feilen).
Nun hat ProCalendar ja die Möglichkeit, Termine privat zu setzen. Bei mir als Admin funktioniert das super, alle privaten Termine sind nur wenn eingeloggt sichtbar, aber bei allen anderen Gruppen haut das nicht hin, egal welche Berechtigung ich setze. Die Gruppe A darf natürlich die Terminseite (die auch auf privat gesetz ist) sehen, kriegt aber keinen privaten Termin zu Gesicht. Weder auf der eigentlichen Seite, auf der das Modul läuft, noch auf den Seiten, auf denen das Droplet die Terminliste ausgibt.
Was mache ich da falsch?
LG, pfreud01
Offline
Bevor ich zu WB gewechselt bin, hatte ich eine html-Seite und als Kalender den VCalendar eingebunden.
http://ultraapps.com/app_downloads.php?app_id=19
Dort konnte man als Admin einstellen dass ALLE alles sehen und ändern können.
Damit konnten sich die USER mit ihrem persönlichen Account anmelden und öffentliche und "private" Termine eintragen.
Jeder angemeldete USER konnte auch alle "privaten" Termine der anderen USER sehen und !ändern!.
Das geht m.w. mit dem ProCalendar nicht.
Hier ist "privat" "PRIVAT"
Wenn MAX einen privaten Eintrag macht, kann LEON diesen nicht sehen. (Ausnahme ist der SUPERADMIN=id1)
Da ich den ProCalendar auch für die Raumbelegung für nicht öffentliche Termine nutze, bin ich am Anfang genau wie oben beschrieben auf die Nase gefallen.
Da LEON nicht gesehen hat, dass MAX den Raum schon belegt hatte kam es zu "Doppelbelegung"
Deshalb habe ich eine Gruppe "Mitarbeiter" eingerichtet, die nur auf den Kalender kommt.
Wenn sich ein "Mitarbeiter" anmeldet sieht er alle "privaten" und öffentlichen Termine, der normale Webbesucher sieht nur die öffentlichen Termien.
Wenn es eine Möglichkeit gibt wie im VCalendar, bin ich auch daran interessiert.
LG Harald
"Fange nie an, aufzuhören - höre nie auf, anzufangen." Marcus Tullius Cicero (106-43 v.Chr.)
Offline
Heißt das, nur diejenigen sehen die privaten Termine, welche in der gleichen Gruppe sind, wie der Ersteller? Die könnten ja dann auch Termine eingeben, was ich nicht will. Möchte als Superadmin Termine eingeben, welche dann von bestimmten Gruppen nur gesehen werden dürfen bzw. die öffentlichen Termine von der ganzen Welt.
Offline
Heißt das, nur diejenigen sehen die privaten Termine, welche in der gleichen Gruppe sind, wie der Ersteller? Die könnten ja dann auch Termine eingeben, was ich nicht will.
hgs hatte es eigentlich schön beschrieben: privat heißt persönlich, also wirklich nur der Ersteller des Termins und der Superadmin können den Termin sehen.
Da offenbar Bedarf vorhanden ist, habe ich den procal 1.3.8 um die Funktionalität erweitert, dass ein Termin auch für alle eingeloggten User oder aber nur für eine bestimmte Gruppe sichtbar sein kann. Viel Spaß beim testen.
Offline
cool!
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Vielen Dank, Marmot! Das funktioniert prima!
Jetzt steh ich nur noch mit meiner Eventlist auf dem Kriegsfuß. Ich habe Termine mit und ohne Beschreibung. Egal, was ich einstelle, die erste Beschreibung ist stärker von Datum und Terminname abgesetzt als alle weiteren Beschreibungen anderer Termine. Lösche ich beim in der Terminliste als erstes stehenden Termin mit Beschreibung im Editor die <p>-Tags, erscheint der große Zeilenabstand beim darauffolgenden Termin mit Beschreibung. Ich krieg die Ausgabe einfach nicht einheitlich gebacken.
Hier mein Code des EventList-Droplets ab Zeile 66:
if ($datetime_start<> $datetime_end) {
$mod_list .= ''.date($dateformat,$datetime_start).' - '.date($dateformat,$datetime_end) .': ';
} else {
$mod_list .= ''.date($dateformat,$datetime_start).': ';
}
$mod_list .= '<b>'.$row["name"].'</b>';
$mod_list .= '<br />'.$row["description"].'<br />';
$mod_list .= "";
}
}
}
}
return $mod_list."";
Offline
Ich denke es wäre am besten, wenn du mal dein Droplet hier hochlädst und vielleicht auch den Aufruf dazu postest. Es existieren so viele Versionen des Droplets und so viele Leute haben schon dran gebastelt, dass sonst die Wahrscheinlichkeit groß ist, dass wir aneinander vorbei reden.
Offline
Jo, ist sicher klüger. Das ist der Aufruf:
[[ProCalendarEventlist?section_id=63&max=999&days=365&startnow=1]]
Und hier das komplette droplet:
//
// Shows an event list from procalendar >= 1.3
// usage: [[eventlist?section_id=<xx>&max=<xx>&kat=<xx>,<xx>&days=<xx>&year=<xx>&month=<xx>&startnow=1]]
// parameters:
// section_id : Section id from procalendar module
// on default all events of the current month are shown but you can custumize by using options:
// max (integer) : limits event list to max items (if no other limit is reached already)
// kat (integer) : only show defined kategories, kat ids can be found in prcalendar backend options
// more than one kategorie can be used by seperating ids with commas (no spaces)
// days (integer) : limits event list to items for <days> (if no other limit is reached already)
// year (integer) : year of start date
// month (integer) : month of start date
// dateformat (string): fomat of date representation as described in http://www.php.net/manual/en/function.date.php#refsect1-function.date-parameters
// startnow (0/1) : 0 or not set = show calendar month, 1 = start at current day
// archive (integer): if set, elapsed events are shown for $days, backward form now
global $database;
require_once(WB_PATH."/modules/procalendar/functions.php");
$startnow = isset($startnow) ? intval($startnow) : 0;
$max = isset($max) ? intval($max) : 10000;
$fixdays = isset($days);
$days = isset($days) ? intval($days) : 31;
$year = isset($year) ? intval ($year) : date('Y');
$month = isset($month) ? intval($month) : date('n');
$section_id = isset($section_id) ? intval($section_id) : 0 ;
// Set dateformat to suit your needs, add timeformat if needed
$dateformat = isset($dateformat) ? $dateformat : 'd.m.Y'; // Standard php date formats
// Fetch base page link
$page_id = 52;
$page_link ='http://domain.tld/wbce/pages/termine.php';
if ($section_id<>0) {
$sql = "SELECT link FROM ".TABLE_PREFIX."sections AS s, ".TABLE_PREFIX."pages AS p WHERE s.section_id = '".$section_id."' AND s.page_id = p.page_id";
$page_link = WB_URL.PAGES_DIRECTORY.$database->get_one($sql).PAGE_EXTENSION;
}
// Set start- and end date for query
$datestart = $startnow ? date('Y-n-j') : "$year-$month-1";
$dateend = $startnow ? date('Y-n-j', strtotime("+".($days-1)." day")) : $fixdays ? date('Y-n-j', strtotime($datestart." + ".($days-1)." day")) : "$year-$month-".($days < cal_days_in_month(CAL_GREGORIAN, $month,$year) ? $days : cal_days_in_month(CAL_GREGORIAN, $month,$year));
if (isset($archive)) {
$dateend = date('Y-n-j');
$datestart = date('Y-n-j', strtotime("-".($days-1)." day"));
}
$mod_list = '';
// Fetch the items
if (!isset($actions) || empty($actions))
$actions = fillActionArray($datestart, $dateend, $section_id);
if (is_array($actions)){
foreach($actions as $row){
if ($max > 0) {
if (!isset($kat) || (isset($kat) && in_array($row["acttype"], explode(',',$kat)))) {
$max--;
// Build url like : pages/kalendar.php?id=2&detail=1
$page_url = $page_link.'?id='.$row['id'].'&detail=1';
$ds = $row['date_start']." ".substr($row['time_start'],0,5);
$de = $row['date_end']." ".substr($row['time_end'],0,5);
$datetime_start = mktime(substr($ds,11,2),substr($ds,14,2),0,substr($ds,5,2),substr($ds,8,2),substr($ds,0,4));
$datetime_end = mktime(substr($de,11,2),substr($de,14,2),0,substr($de,5,2),substr($de,8,2),substr($de,0,4));
if ($datetime_start<> $datetime_end) {
$mod_list .= ''.date($dateformat,$datetime_start).' - '.date($dateformat,$datetime_end) .': ';
} else {
$mod_list .= ''.date($dateformat,$datetime_start).': ';
}
$mod_list .= '<b>'.$row["name"].'</b>';
$mod_list .= '<br />'.$row["description"].'<br />';
$mod_list .= "";
}
}
}
}
return $mod_list."";
Last edited by pfreud01 (28.01.2016 15:30:59)
Offline
Ich nehme an, Du rufst das Droplet aus einer WYSIWYG-Section heraus auf. Der CKE hat die unschöne Angewohnheit, standardmäßig alles in <p></p> zu packen, wodurch dann der Dropletoutput mit einem <p> beginnt. Das Droplet gibt dann nach Datum und Titel den im Backend als WYSIWYG hinterlegten Termin-Beschreibungstext aus, der ebenfalls in <p>-Tags steht.
Abhilfe: Beim Droplet-Aufruf das Absatzformat von "Normal" auf "Normal (DIV)" ändern.
Ggf. in der template.css Zeile 71 noch zu
margin:0
ändern.
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Danke für die Version, werde es Monntag mal testen.
LG Harald
"Fange nie an, aufzuhören - höre nie auf, anzufangen." Marcus Tullius Cicero (106-43 v.Chr.)
Offline
Allein das Ersetzen der <p>-Tags mit einem <div> hat die Lösung gebracht. Danke florian!
Echt toll, wie schnell und freundlich einem hier geholfen wird. Das war in den letzten Jahren in WB classic nicht mehr so. Aber mir scheint, (fast) alle freundlichen und kompetenten von dort sind in den letzten Monaten hierher gekommen.
Schönen Sonntag noch!
Offline
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Ggf. in der template.css Zeile 71 noch zu
margin:0
ändern.
Ähem, weils mich interessiert: Welches template.css meinst du da? Ich finde kein solches im ProCalendar.
Offline
Das ist das Stylesheet des Websitetemplates.
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
....
Da offenbar Bedarf vorhanden ist, habe ich den procal 1.3.8 um die Funktionalität erweitert, dass ein Termin auch für alle eingeloggten User oder aber nur für eine bestimmte Gruppe sichtbar sein kann. Viel Spaß beim testen.
Vielen Dank, ich hätte meinen Wunsch vieleicht schon früher nennen sollen.
Habe es durchgetestet und es funktioniert so wie gewünscht.
User A in Gruppe 10 kann Termine von USER B in Gruppe 10 sehen und umgekehrt, wenn der USER angemeldet ist.
Durch die Multigruppenzugehörtigkeit ist auch der Admin+Gruppe 10 in der Lage Termien für die Gruppe 10 sichtbar einzutragen, oder eben nur für seine Gruppe.
Perfekte Lösung!!
LG Harald
"Fange nie an, aufzuhören - höre nie auf, anzufangen." Marcus Tullius Cicero (106-43 v.Chr.)
Offline