|
|
keks
öfter hier

Offline
Beiträge: 63
|
« am: 01 November 2003, 17:20:21 » |
|
Hiho, auf dem 6.9er Nuke wollte ich folgende Kalenderänderungen vormehmen: 1. Mehrere Nutzer verwalten ihre Termine getrennt mit nur einem Kalender. 2. Einzelne Termine können für (ausgewählte) andere freigegeben werden. (3. Unterscheidung bei der Freigabe zwischen Zeit und Inhalt. Damit könnte man sehen, wann jemand anderes "besetzt" ist, ohne zu wissen warum.) Das in Klammern ist vorerst zurückgesellt bzw. weniger wichtig. Zu dem Thema bekamm ich hier http://www.nukeboards.de/index.php?s=3c5cfb1bd617b3dc090b1abb8dda45d4&showtopic=18220&hl= schon mal wertvolle Hinweise - allerdings für den NukeKalender. Kann mir jemand spezielle Aussagen oder noch bessere Wege fürs vkpMx geben? Danke! Gruß der Keks
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
keks
öfter hier

Offline
Beiträge: 63
|
« Antworten #1 am: 02 November 2003, 16:15:33 » |
|
Ok, es geht voran! Vorweg: Kann mir jemand sagen, ob ich das alles einfacher/anders machen kann? Momentan kann jeder seine Termine verwalten und diese als privat oder öffentlich klassifizieren. Dazu "missbrauche" ich die Themen. Beim anzeigen des Kalenders lasse ich prüfen, ob der Nutzer mit dem Informanten des Termins übereinstimmt oder ob der Termin öffentlich ist. Nur dann wird was angezeigt. Daher sieht die index.php des Kalenders um die Zeile 250 nun wiefolgt aus: $cookie = mxGetUserSession(); #neu $username = $cookie[1]; #neu
$result = sql_query("SELECT ... FROM ".TABLE_CAL_EVENTS." WHERE (informant='$username' OR topic=1) #neu AND ... Ausserdem muss der zweite Teil auch noch mal bei Zeile ~440 rein: WHERE (informant='$username' OR topic=1) #neu AND ...
Soweit so gut. Nun soll aber auch noch eine Freigabemöglichkeit für andere Nutzer einzeln kommen. Dazu werde ich aber ne neue Tabelle brauchen? Oder wie kann man das machen? Danke, der Keks P.S. Nicht schimpfen, wenn das alles total unprofessionell und unsauber sein sollte. Ich bin ein blutiger Anfänger.... EDIT: Die Zeile (informant='$username' OR topic=1) #neu AND muss hinter jedes "WHERE". Wenn man das auch in den entsprechenden Blöcken macht, dann funktioniert es auch in allen Ansichten (rechts, links, Combi, Month, ...). Bei der Month-Ansicht (die kleine Monatsübersicht für die Außenseiten) habe ich besagte Zeile absichtlich NICHT eingefügt. Dadurch sieht jeder, inwieweit ein Tag schon "vergeben" ist. Erscheint mir sinnvoll bei einem Team-Kalender... Folgende Zeile muss für jede Funktion eingefügt werden - soweit ich das überblicke: $cookie = mxGetUserSession(); #neu $username = $cookie[1]; #neu
[Editiert am 2/11/2003 von keks]
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
keks
öfter hier

Offline
Beiträge: 63
|
« Antworten #2 am: 03 November 2003, 19:41:18 » |
|
Folgeproblem: Wo muss ich was ändern, damit die Benutzer auch die Termine löschen können? Sprich: Wo finde ich die Zeilen die bewirken, dass nur der Admin löschen kann? Gruß der Keks EDIT: Oh, oh. Das scheint schwerer zu sein als gedacht. Nach einigen Wühl-Stunden scheint mir das Problem in der functions.inc.php zu liegen. Den Aufruf der Funktion "CalendarDeleteEvent" aus den Kalenderblöcken kann ich da nicht nachvollziehen/finden. Bei den anderen "Event"´s wird in Zeile 1029 folgendes zugewiesen: $actionfile = "admin.php"
Das dürfte weitere Probleme verursachen, da normale Nutzer da natürlich nicht zugreifen können. Ehrlich gesagt: Ich bin an den Grenzen meines Verständnisses angekommen. Jede Hilfe und jeder Hinweis sind willkomen. Gruß der Keks
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
keks
öfter hier

Offline
Beiträge: 63
|
« Antworten #3 am: 04 November 2003, 23:34:21 » |
|
Hiho, jetzt verstehe ich, warum hier keiner antwortet. Das Thema ist mit ein paar kleinen Codeänderungen nicht gemacht. Ich hab mittlerweile eine Möglichkeit gefunden, den normalen Nutzer seine Termine wieder löschen zu lassen - auch wenn die "Umstände" noch etwas unsauber sind. Dank www.php.net wurschtel ich mich so durch. Optimal ist diese Vorgehensweise aber nicht. Falls mir also jemand von den großen Helden hier ne Hilfestellung geben kann: bitte bitte bitte! Momentaner Istzustand: Die Funktionen der admin/modules/calendar.php habe ich ausgelagert und rufe sie nun über die modules.php auf, da der Zugriff über die admin.php normalen Nutzer verwehrt ist. Dabei fallen mir ehrlich gesagt die umfangreichen Anpassungen von Adminfunktionen auf normale Nutzer ordentlich schwer, da sie ständig und überall auftreten. Gibt es keinen einfacheren Weg? Ein "Nein" würde zumindest motivierend wirken. Gruß der Keks
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
Andi
|
« Antworten #4 am: 04 November 2003, 23:46:19 » |
|
Hi Keks  bitte nicht falsch verstehen, es ist ein sehr interessantes Thema, aber im Moment hat von uns sicher keine Zeit, sich das genau anzusehen und Dich zu unterstützen. Aber mache weiter, Deine Ansätze hören sich schon gut an und mit Ausdauer wirst Du sicher etliches dabei lernen und es letztendlich schaffen.
|
|
|
|
|
Gespeichert
|
schön´s Grüssle, Andi Kein Support über PN, Mail oder ICQ! Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern. Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!
|
|
|
|
|
keks
öfter hier

Offline
Beiträge: 63
|
« Antworten #5 am: 05 November 2003, 00:38:25 » |
|
Eine Antwort, eine Antwort! Juhu! Kein Problem. Ich versteh Dich schon, ich warte schließlich auch auf das Update. Es war auch nicht mein Anliegen, dass irgendwer den Code durchforstet und mir das Modul umschreibt. Nur: Vielleicht kennt sich jemand mit den Funktionsabläufen so gut aus, dass er mir sagen kann: DAS wird DA SO und SO übergeben und gereglt, deswegen schau DA mal nach. Vor allem hab ich auch Sicherheitsbedenken, wenn ich Funktionen die über die admin.php ablaufen rauslöse und allen Benutzern zugängig mache. Bis auf weiteres werde ich hier also meine One-Man-Show fortsetzen und die Zwischenergebnisse posten. Vielleicht fällt ja doch mal jemanden was dazu ein... Gruß der Keks
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
keks
öfter hier

Offline
Beiträge: 63
|
« Antworten #6 am: 13 November 2003, 22:21:30 » |
|
Ein vorerst letzter Stein liegt mir im Weg, da folgende Fehlermeldung nervt: Fatal error: Cannot redeclare opentable() (previously declared in /home/www/web5/html/vkpmx/themes/vkp-Kwondo/theme.php:43) in /home/www/web5/html/vkpmx/themes/vkp-Kwondo/theme.php on line 42 Kann ich die Funktion "opentable" irgendwie "ent-deklarieren"? Ich weiss nicht wie ich das sonst verhindern kann. Das Problem entsteht, da ich eine allgemeingültige Funktion "X" aufrufe, die ich nicht ändern kann/will. In dieser Funktion "X" wird dann offenbar (zum zweiten mal bzw. obwohl schon bekannt) die Deklaration "opentable" verursacht. Daher meine Idee: Bevor ich die Funktion "X" aufrufe, lasse ich das System "opentable" vergessen... Aber wie? Gruß der Keks
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
BowlingX
|
« Antworten #7 am: 13 November 2003, 22:29:00 » |
|
Da hast du die Funktion Opentable irgendwo 2 mal deklariert (zweimal definiert mit function opentalbe()...) bzw. irgendeine Datei 2 mal includet oder ähnliches
|
|
|
|
|
Gespeichert
|
Kein Support über Mail, (ungefragter) PN oder ICQ, ausschließlich direkt im Forum!
|
|
|
|
|
keks
öfter hier

Offline
Beiträge: 63
|
« Antworten #8 am: 13 November 2003, 22:38:24 » |
|
Genau das ist mein Problem. Richtig erkannt. Daher meine Frage, wie bzw. ob ich die Funktion vor dem 2. Mal quasi "entladen" kann. Leider ist es (fast) unmöglich, den ersten oder zweiten Aufruf wegzunehmen, da er jeweils in allgemeinen und hier auch benötigten Funktionen steckt. Daher die Dopplung. Danke soweit, der Keks EDIT: Ich kann es nachvollziehen, aber das nutzt mir leider nix. Die Funktion "opentable" wird über include("header.php"); bzw. include("footer.php"); indirekt erzeugt/includet. Das geschieht zum einen in der index.php des Kalendermoduls selbst. Über diese index.php läuft aber auch der Aufruf der Funktion "CalendarUserChangeEvent" die wiederum unter anderen die Funktion "calPrepareEventForSql" aufruft. Und genau da taucht zum zweiten mal obiger "include"-Aufruf auf. Bums, aus, Fehlermeldung, Tränen, Verzweiflung. [Editiert am 13/11/2003 von keks]
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
BowlingX
|
« Antworten #9 am: 13 November 2003, 22:54:32 » |
|
Der Aufruf stört nicht! Nur das deklarieren, das definieren der Funktion in dieser Art:
function openTable() { }
Der Darf NICHT doppelt sein!
|
|
|
|
|
Gespeichert
|
Kein Support über Mail, (ungefragter) PN oder ICQ, ausschließlich direkt im Forum!
|
|
|
|
|
keks
öfter hier

Offline
Beiträge: 63
|
« Antworten #10 am: 13 November 2003, 23:01:58 » |
|
Thanks, aber das verstehe ich nicht ganz. Wenn ich eine Datei include die eine Funktion definiert, dann erscheint diese Fehlermeldung - oder etwa nicht? Dann wäre ich verwirrt.
Bisher hab ich mir das so vorgestellt. Siehe auch mein EDIT beim letzten Posting. Ein Trugschluss?
der Keks
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
Andi
|
« Antworten #11 am: 13 November 2003, 23:04:40 » |
|
Hi Keks In dieser Funktion "X" wird dann offenbar (zum zweiten mal bzw. obwohl schon bekannt) die Deklaration "opentable" verursacht. Es wird irgendwo die header.php ein zweites mal includet. Überprüfe mal die Reihenfolgen, wo, was passiert und die header.php includet wird. Oder wird sogar die theme.php irgendwo direkt includet?
|
|
|
|
|
Gespeichert
|
schön´s Grüssle, Andi Kein Support über PN, Mail oder ICQ! Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern. Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!
|
|
|
|
|
keks
öfter hier

Offline
Beiträge: 63
|
« Antworten #12 am: 13 November 2003, 23:14:58 » |
|
Siehe oben mein letztes EDIT: Es wird die header.php zweimal includet.
Aber ich kann doch nicht aus der index.php des Kalenders den include rauswerfen, da es dort anderweitig gebraucht wird - sonst hättest Du es wohl nicht reingeschrieben. *g* Selbiges gilt für die Funktion calPrepareEventForSql.
Dummerweise brauch ich (nach meinem derzeitigen Umbaustand) beides: index und calPrepareEventForSql. Da aber beides auch anderweitig genutzt wird kann ich es nicht ändern. Alternativ müsste ich eine Funktion calPrepareEventForSql1 schaffen und dort den include rauswerfen.
Ich dachte nur, es gäbe einen besseren weg über ein "entladen" der Funktion.
Danke Euch, der Keks
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
keks
öfter hier

Offline
Beiträge: 63
|
« Antworten #13 am: 13 November 2003, 23:27:20 » |
|
Ich habs! Wenn ich beim zweiten Aufruf einfach folgendes davorsetze if (!function_exists("opentable")) { dann klappts auch mit dem Nachbarn. Und die Funktion bleibt ansonsten erhalten. Das müßte doch so gehen, oder? der Keks
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
Andi
|
« Antworten #14 am: 13 November 2003, 23:49:23 » |
|
Booooaaaahhhh....
Da bist Du einem gewaltigen Bug auf die Spur gekommen. Stimmt, in der Funktion calPrepareEventForSql() darf die header.php natürlich nicht nochmal includet werden. Also Dein Weg mit der Abfrage function_exists() ist, wenn es so funktioniert, absolut ok. Kann es im Moment leider nicht testen, weil ich hier im Geschäft sitze...
|
|
|
|
|
Gespeichert
|
schön´s Grüssle, Andi Kein Support über PN, Mail oder ICQ! Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern. Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!
|
|
|
|
|
keks
öfter hier

Offline
Beiträge: 63
|
« Antworten #15 am: 19 November 2003, 01:06:35 » |
|
Die Schlacht ist geschlagen, der Multi-User-Kalender steht und ... *trommelwirbel* ... funktioniert.  Derzeitige Funktionen: Verwaltung privater und öffentlicher Termine. Dabei werden private Termine nur dem jeweiligen Nutzer angezeigt, öffentliche Termine sind dagegen für jedermann einsehbar. Die Einträge können auch durch normale Nutzer geändert/gelöscht werden - natürlich nur, soweit das ihre sind. Wenn sich jemand für die (etwas umfangreicheren) Änderungen interessiert: PM an mich genügt. "Ich freu mihich. Soviel Spaß für wenig Geld..." der Keks
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
Andi
|
« Antworten #16 am: 19 November 2003, 07:12:59 » |
|
Hi Keks  hört sich ja super an! Schön, dass Du es geschafft hast. Klar dass mich das interessiert, bitte eine Version an mich info@pragmamx.orgDu kannst es auch gerne in den Downloadbereich stellen.
|
|
|
|
|
Gespeichert
|
schön´s Grüssle, Andi Kein Support über PN, Mail oder ICQ! Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern. Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!
|
|
|
|
|
keks
öfter hier

Offline
Beiträge: 63
|
« Antworten #17 am: 19 November 2003, 15:03:39 » |
|
Danke fürs Interesse!  Bevor ich es in den Downloadbereich stelle, warte ich ab, was Du dazu sagst. Schon wegen möglichen Sicherheitslöchern. Sorry im voraus: für einen Fachmann sieht der Quellcode jetzt bestimmt "vergewaltigt" und furchtbar laienhaft aus. Aber letzteres ist es ja auch. Ich hab mich nach dem Prinzip Try&Error so durchgewurschtelt. Aber es funktioniert... Läßt sich eine Dokumentation unter "SiteUpdates" exportieren? Es wäre praktisch die Anleitung zum Umbau. Mail folgt, der Keks
|
|
|
|
|
Gespeichert
|
|
|
|
|