Welcher Weg ist einfacher für meine Kalenderrealisierung?

Begonnen von Roberturix, 30 Januar 2007, 09:51:02

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Roberturix

Wir haben den Mx1.4 mit der bindabei Funktion aktiv.
In diesem sind all unsere Termine enthalten, welche aber nur INTERN zur Verfügung stehen.
Paralell pflegen wir eine 2. Liste mit den Terminen die ausschließlich für die ÖFFENTLICHKEIT bestimmt ist, mit einem anderen kleinen Tool.
1. Diese doppelte Arbeit soll aber entfallen!
2. Das Aussehen der öffentlichen Termine muß überarbeitet/angepasst werden.

Mir stehen nun verschiedene Möglichkeiten zur Option:

Die Einfachste ich wohl eine separate Ausgabe zu gestalten - z.B. einen 2. (öffentlichen) Centerblock.
Habe ich versucht über eine eigene Kategorie zu lösen, was nur bedingt funktionierte.
Gleichzeitig ist die Übersichtlichkeit INTERN durch diese zusätzliche Kategorie verloren gegangen (Weil die Termine nicht in Ihren eigentlichen Kategorie geführt werden).
Als weiteres Problem entpuppte sich die Anzeige der BinDabei-Anzeige in den öffentlichen Terminen - welche auf jeden Fall ausgeschlossen werden muß.

Dann habe ich versucht eine Intern-/Externmarkierung einzubauen über welche ich entsprechend Filtern kann. Dies wäre m.E. die suaberste Lösung, ich bin aber an meinen mangelhaften php-Kenntnissen gescheitert.
Auch hier besteht dann das Problem der zu unterdrückenden öffentlichen BinDabei-Anzeige.

Ein paraleller zweiter Kalender bzw. Doppelter Termineintrag in separate Kategorie fällt als Alternative weg, da der doppelte Pflegeaufwand ausgeschaltet werden soll.

Hat noch jemand eine Idee wie ich das Problem lösen könnte?
Grüße
Roberturix




Roberturix

Ok... ich hab noch mal von Vorne angefangen, da ich mich beim letzten mal wohl verrannt habe.
Dies mal ist der Centerblock (separate öffentliche Ausgabe) genau so geworden wie ich es brauche.
Das einzige das mir nun noch fehlt ist das Filterkriterium für intern/öffentlich.

Kann mir bitte jemand beim erstellen behilflich sein?
Grundsätzlich kann ich mich doch am Feld "Start/End-Zeit ignorieren" orientieren, oder?

Ich muß...
ein zusätzliches Datenbankfeld erstellen.
die Variable benennen.
die Auswahlmöglichkeit (Button) erstellen.
die Ausgabe auf die Variable filtern.
Hab ich was vergessen?


Was ist definitiv nicht weiß:
in welchen Dateien / Zeilen ist hinterlegt das ein Feld/Button bei der Terminerstellung zur Verfügung steht.
in welchen Dateien / Zeilen muß das Filterkriterium eingetragen werden.


Roberturix

:yltype:
              :nuke:
                                 :crash:

Ich werd noch wahnsinnig mit diesem Kalender !
Das Feld "extern" habe ich mittlerweile in die DB eingetragen und manuell ein paar "1en" bei dern Terminen vergeben. Nun versuche ich im externen Centerblock die Filterung danach anzupassen.
Zwischenzeitlich stelle ich fest das die BinDabei-Funktion im original Centerblock zwar noch angezeigt wird, sich aber nicht mehr verändern lässt, d.h. keiner sich mehr ein-/austragen kann.
Ich lösche also das neue extern-Feld wieder, aber die BinDabei-Funktion ist weiterhin tot.
:mad2:  :puzzled:

Hilfeee  :please:


Roberturix

#3
hmm... brauche ich einen Geheimcode um geholfen zu bekommen?
Die Fragen sind doch sehr konkret gestellt und bedürften doch keinem besonderem Aufwand wann man sich im Kallender auskennt, oder irre ich mich da??

Die Bindabei-Funktion habe ich übrigens wieder hinbekommen...   :BD:

Musicman75

Das was Du vor hast erfordert extreme Veränderungen an dem gesamten Modul, was ziemlich viel Arbeit ist und nicht mal kurz erledigt werden kann. Deswegen hat wahrscheinlich hier noch niemand etwas geschrieben, wovon ich mich nicht ausnehme.
:red:
Wenn ich mal Zeit finde schau ich mir das mal an, aber versprechen kann ich nichts.
Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

Roberturix

Ich bin ja zwischenzeitlich nicht untätig  :smile:
Aber es gibt einen Punkt an dem ich zu knabbern habe:
In welchen Dateien (nur den Block?) / Zeilen muß das Filterkriterium für das DB-Feld "extern" eingetragen werden?

Wenn ich hier Hilfe bekomme, kann ich den Rest vorerst "unvorteilhaft zu Fuß" (direkt in der DB) eintragen.
Das passende Häkchen kann ich dann ja später in den Kalender einbauen.

Roberturix

#6
Ok... es hat gedauert aber ich habe es schlussendlich auch selber gefunden.
Mit Hilfe von diesem Thread habe ich diesen erstellt:
WHERE (startDate>= '$qrydate' or endDate>= '$qrydate')
and ($whereoption) and (extern = 1)";


fuktioniert super ! :BD:

Jetzt stellt sich mir aber das Problem den Block als definierte Ausgabe auf einen Link zu packen um ihn dann auch zur Verfügung stellen zu können.
Mit "include" in einem Modul klappt es nicht...
(gibts eigentlich irgendwo ne PHP-hilfe für Befehle im SELFhtml-Stil?)

Musicman75

Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

Roberturix

OK...
in einem "blank"-Modul
mit
$path = './blocks';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
include("block-Calendar_centerlist_open.php");

bekomme ich im debug-mode keine Fehlermeldung mehr.
Leider aber auch keine Ausgabe  :gruebel:

Kann ich denn Block so nicht ausgeben??

Roberturix

Ich habe gerade noch mal nachgeschaut.
Die SQL Abfragen/Ausgaben als normaler Block im Vergleich zu meiner "include"-Modulvariante sind identisch und fehlerfrei.

Warum bekomme ich aber keine Termine von der "include"-Modulvariante angezeigt ???  :puzzled:

Musicman75

kopier einfach den gesamten code in deine index.php des modules. mach am ende noch ein
echo $content; unset $content;
rein und versuchs nochmal
Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

Roberturix

Hab ich schon probiert, selbes Ergebnis

Mit Deinem echo $content; unset $content;
bekomme ich
Parse error: parse error, unexpected T_VARIABLE, expecting in Veranstaltungen/index.php on line 187
Also genau in echo $content; unset $content;

Musicman75

dann lass mal das unset weg

die variable muss genau den namen haben, in welche die ganzen daten im block geschrieben werden.
Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

Roberturix

Jawoll... das wars gewesen  :thumbup:
Vielen vielen Dank....
Funkioniert übrigens ohne Freigabe des Kalendermoduls für "Alle Besucher"!
Hier zu sehen  ;)

Wenn Du mir nun noch ein paar Tipps geben kannst, wie ich an den Einbau der "Häkchenfunktion" im Termin ran gehen kann, werde ich selber anfangen mich in das Thema einzuarbeiten.
Iss ja nich so das ich will oder kann.....
Ich brauch ja nur ab und zu mal einen Tipp, wie ich an schwierigen Stellen weiter komme.  ;)

Musicman75

arbeite dich mal durch dir functions.php. Folgende Funktionen:

function calGetSqlQuery
function calPrepareEventForSql
function calSubmitForm

Dort musst Du die Änderungen machen. Schau Dir einfach an, wie es zB für die Checkbox der Startzeit gemacht ist.
Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

Roberturix

*seuft* also noch mal schreiben...

Die Checkbox für die intern/extern Makierung war kein Problem gewesen einzubauen.
Copy, paste, manuelle anpassung der entsprechenden Einträge in der funktion.php

Nun möchte habe ich mich an etwas schwereres rangewagt:
ein zusätzliches Textfeld, welches nur für interne Informationen verwendet werden kann, denn das Beschreibungsfeld "hometext" ist  ja auch öffentlich zu lesen.

In der funktion.php und der index.php habe ich (nach meinem Verständnis) alle relevanten "hometext" Einträge dupliziert und nach "interntext" geändert, und das DB-Feld erstellt.
Rufe ich den Kalender nun auf bekomme ich lediglich eine weiße Seite geliefert, ohne php- oder sql-Fehler.
Lasse ich mir einen Kalenderblock im Center anzeigen, werden die linken und centerblöcke nicht angezeigt, die rechten sind da.
Lasse ich mir einen Kalenderblock Links oder Rechts anzeigen, werden keine Blöck angezeigt.

So wie ich das verstanden habe sind in den funktion und index alle relevanten Funktionen hinterlegt.
Kann mir jemand einen Tipp geben wo ich noch schauen sollte?



Musicman75

Für die Ausgabe musst DU auch hier noch was ändern:
function calEventView($event)

Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

Roberturix

Hatte ich schon gemacht, siehr jetzt so aus


    global $calconf, $dbi, $bindauser, $bindanames, $bindanumber, $interntext;


    $event["hometext"] = strip_tags($event["hometext"], calGetAllowedtags());
    $event["interntext"] = strip_tags($event["interntext"], calGetAllowedtags());
    $event["hometext"] = (empty($event["hometext"])) ? $event["title"] : $event["hometext"];
    $event["interntext"] = (empty($event["interntext"])) ? $event["title"] : $event["interntext"];


    echo "<tr valign=\"top\"><td style=\"background-color: $bgcolor2;\"><span class=\"content\"><b>"Interntext"</b>:</span></td><td colspan=\"3\" style=\"background-color: $bgcolor1;\"><span class=\"content\">" . $event["interntext"] . "</span></td></tr>";


Fehlt da noch was?

Musicman75

lass mal diese Zeile weg:

$event["interntext"] = (empty($event["interntext"])) ? $event["title"] : $event["interntext"];
Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

Roberturix

nöö... hat keinen Effekt, weiterhin weiße Seite.
Aber beim auskommentieren hatte es bei mir geklickt  ;)

Ich habe erst mal alle Änderungen auskommeniert und einen nach den anderen getestet und wieder rein genommen. Es waren 2 fehlerhafte echo-Syntax (er erwartete php und bekam html) welche ich nun korrigiert habe.
Das Feld ist nun also genau da wo es sein soll.
Bei speichern bekomme ich nun folgende SQL-Fehlermeldung:
ZitatSQL query:
INSERT INTO mx4711_events SET aid = 'Perethil', title = 'testeintrag', hometext = 'externer Text', topic = 0, informant = 'Perethil', startDate = '2007-02-16', endDate = '2007-02-16', startTime = '09:00:00', endTime = '11:00:00', alldayevent = 0, categorie = '4', activ = 1, extern = 0, interntext = interner Text
, posteddate = '2007-02-16 19:06:00'

Error sql_query():
qry: INSERT INTO {prefix}_events SET aid = 'Perethil', title = 'testeintrag', hometext = 'externer Text', topic = 0, informant = 'Perethil', startDate = '2007-02-16', endDate = '2007-02-16', startTime = '09:00:00', endTime = '11:00:00', alldayevent = 0, categorie = '4', activ = 1, extern = 0, interntext = interner Text
, posteddate = '2007-02-16 19:06:00'
descr: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Text
, posteddate = '2007-02-16 19:06:00'' at line 1 ( mysql 1064 )

Da fällt mir sofort interntext = interner Text ohne Anführungsstriche auf, dürfte doch das Problem sein oder?

Ist der Fehler dafür im function calSubmitForm($event) zu suchen, oder eher woanders?

function calSubmitForm($event)
{
    global $user, $cookie, $dbi, $calconf;
    global $bgcolor1, $bgcolor2, $bgcolor3, $textcolor1, $textcolor2;
    $eventsdates = calGetEventDates($event);
    $event = array_merge($event, $eventsdates);
    // mxDebugFuncVars($event);
    $event["title"] = strip_tags($event["title"]);
    $event["hometext"] = strip_tags($event["hometext"], calGetAllowedtags());
    $event["interntext"] = strip_tags($event["interntext"], calGetAllowedtags());
    $event["categorie"] = calGetCurrentEventPoint($event["categorie"]);
    $event["eid"] = (empty($event["eid"])) ? 0 : $event["eid"];
    $event["aid"] = (empty($event["aid"])) ? calIsAdmin() : $event["aid"];
    $event["informant"] = (empty($event["informant"]) || $event["informant"] == $GLOBALS["anonymous"]) ? "" : $event["informant"]; // sicherstellen, dass informant nicht $GLOBALS["anonymous"]
    $event["posteddate"] = (empty($event["posteddate"])) ? 0 : $event["posteddate"];
    $checkalldayevent = (empty($event["alldayevent"])) ? "" : "checked";
    $checkaddarticle = (empty($event["addasarticle"])) ? "" : "checked";
    $checkextern = (empty($event["extern"])) ? "" : "checked";
    $namecaption = (empty($event["eid"])) ? _CALYOURNAME : _CALNAMEFIELD;
    // build Start and End Event Select