. .
pragmaMx Support Forum 26 Mai 2012, 04:10:19 *
Willkommen Gast. Bitte einloggen oder registrieren.


Einloggen mit Benutzername und Passwort
News:
Brauchen Sie Hilfe? Bitte nutzen Sie unsere Suchfunktion bevor Sie Beiträge oder Fragen ins Board schreiben! Viele Fragen wurden bereits gestellt und beantwortet. Danke!
 
Übersicht Hilfe Forenregeln / Boardrules
 
Suche
Seiten: [1]   Nach unten
Drucken
Autor Thema: Multi-User-Kalender  (Gelesen 2334 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
keks
öfter hier
**
Offline 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 Offline

Beiträge: 63


« Antworten #1 am: 02 November 2003, 16:15:33 »

Ok, es geht voran! Smiley  

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:

 
Zitat

   $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:
 
Zitat

      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
 
Zitat

(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:

 
Zitat

   $cookie = mxGetUserSession(); #neu
   $username = $cookie[1]; #neu


[Editiert am 2/11/2003 von keks]
Gespeichert
keks
öfter hier
**
Offline 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.   Sad

Bei den anderen "Event"´s wird in Zeile 1029 folgendes zugewiesen:
 
Zitat
$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 Offline

Beiträge: 63


« Antworten #3 am: 04 November 2003, 23:34:21 »

Hiho,

jetzt verstehe ich, warum hier keiner antwortet.  Wink

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.  Wink  

Gruß
der Keks
Gespeichert
Andi
Administrator
******
Offline Offline

Geschlecht: Männlich
Beiträge: 19.424

Andi


WWW
« Antworten #4 am: 04 November 2003, 23:46:19 »

Hi Keks Smiley

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 Offline

Beiträge: 63


« Antworten #5 am: 05 November 2003, 00:38:25 »

Eine Antwort, eine Antwort!  Juhu! cheesy  Wink

Kein Problem. Ich versteh Dich schon, ich warte schließlich auch auf das Update.  Wink  

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 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:
 
Zitat
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
Inventar
*******
Offline Offline

Geschlecht: Männlich
Beiträge: 2.342

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 Offline

Beiträge: 63


« Antworten #8 am: 13 November 2003, 22:38:24 »

Genau das ist mein Problem. Richtig erkannt.  Wink  

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
 
Zitat
include("header.php");
 bzw.
 
Zitat
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
Inventar
*******
Offline Offline

Geschlecht: Männlich
Beiträge: 2.342

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 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
Administrator
******
Offline Offline

Geschlecht: Männlich
Beiträge: 19.424

Andi


WWW
« Antworten #11 am: 13 November 2003, 23:04:40 »

Hi Keks Smiley
 
Zitat
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 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 Offline

Beiträge: 63


« Antworten #13 am: 13 November 2003, 23:27:20 »

Ich habs!

Wenn ich beim zweiten Aufruf einfach folgendes davorsetze
 
Zitat
if (!function_exists("opentable")) {

dann klappts auch mit dem Nachbarn.  Wink  

Und die Funktion bleibt ansonsten erhalten.

Das müßte doch so gehen, oder?

der Keks
Gespeichert
Andi
Administrator
******
Offline Offline

Geschlecht: Männlich
Beiträge: 19.424

Andi


WWW
« 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 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. Wink

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
Administrator
******
Offline Offline

Geschlecht: Männlich
Beiträge: 19.424

Andi


WWW
« Antworten #16 am: 19 November 2003, 07:12:59 »

Hi Keks Smiley

hört sich ja super an! Schön, dass Du es geschafft hast.

Klar dass mich das interessiert, bitte eine Version an mich  Wink   question  

info@pragmamx.org

Du 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 Offline

Beiträge: 63


« Antworten #17 am: 19 November 2003, 15:03:39 »

Danke fürs Interesse! Wink

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.  Wink  
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
Seiten: [1]   Nach oben
Drucken
 
Gehe zu:  

Powered by SMF 1.1.16 | SMF © 2011, Simple Machines
design by hENNE, layout based on YAML