Page 1 of 1

[gelöst] Calendar eigene Erweiterung

Posted: Sat Feb 07, 2009 3:30 pm
by networker
Ich möchte den Kalender in CMSMS um Funktionalität erweitern:
Die Events haben verschiedene Kategorien: Orte und Arten, etc.
Aufgabe: In einem Formular wählt man, nach welchen Kategorien gefiltert werden soll und der Kalender zeigt nur diese an.
Laut Developers FAQ kann ich per UDT (m)ein php-Skript einbinden. Ich könnte ein Formular bauen und so das Modul steuern:

Code: Select all

global $gCms;
  if( !isset( $gCms->modules['TheModuleIWant'] ) || !isset( $gCms->modules['TheModuleIWant']['object'] ) )
    {
       return;
    }
  $themoduleiwant = $gCms->modules['TheModuleIWant']['object'];
  $themoduleiwant->DoThis($somedata);
  $themoduleiwant->DoThat($somemoredata);
Wie aber weiß ich, welche 'DoThis', 'DoThat' das Kalender-Modul hat und welche Parameter ich übergeben kann und muss?

Oder gibt es einen eleganteren Weg in CMSMS, diese Aufgabe zu lösen?
Für einen "Zeiger in die richtige Richtung" wäre ich dankbar!

Mit freundlichen Grüßen
Christian

Re: Calendar eigene Erweiterung "Fernsteuerung"

Posted: Sat Feb 07, 2009 7:37 pm
by NaN
Mit "DoThis" und "DoThat" sind meiner Meinung nach Funktionen der CMSms eigenen API gemeint.
Setz Dich dazu mal mit der Modul API auseinander: http://www.cmsmadesimple.org/apidoc/ .
(Links "CMSModule" auswählen und dann hat man rechts alle Funktionen, die von einem Modul aus aufgerufen werden können inkl. kurzer Erklärung)

Ein kurzes Beispiel
(habs nicht getestet; ist eh nicht ganz vollständig):

Code: Select all


global $gCms;

// prüfen ob Calendar-Modul installiert und aktiv ist (falls nicht, passiert einfach nichts: return;):
if( !isset( $gCms->modules['Calendar'] ) || !isset( $gCms->modules['Calendar']['object'] ) )
{
   return;
}

// Instanz des Calendar-Moduls erzeugen;
// über diese Instanz kann auf sämtliche Funktionen der Modul API zugegriffen werden;
// alle Links, Formulare oder Aktionen beziehen sich dabei immer auf das Calendar-Modul;
$calendar = $gCms->modules['Calendar']['object'];

// hiermit wird der <form>-Tag ausgegeben.
// das Formular führt nach dem Absenden die Standard Frontend-Funktion des Calendars aus (default)
// welche Aktionen der Kalender alles hat, da muss man sich erstmal durch den Kalender durchklicken 
// und die URL in der Adressleiste anschauen.
// Bsp. vom News-Modul: "...mact=News,cntnt01,detail,0..." nach dem "mact" der dritte Wert gibt die Aktion an.
// oder man wühlt sich durch den Quellcode des Calendar-Moduls.
echo $calendar->CreateFrontendFormStart ($id, $returnid, 'default');

// inputfelder:
echo $calendar->CreateInputText($id, $name, '', 32, 255) ;

$dropdown_items = array();
$dropdown_items['Eintrag 1'] = '1';
$dropdown_items['Eintrag 2'] = '2';
$dropdown_items['Eintrag 3'] = '3';
echo $calendar->CreateInputDropdown($id, $name, $dropdown_items) ;

echo $calendar->CreateInputSubmit($id, 'submit', 'absenden');
echo $calendar->CreateFormEnd();

Bin mir nicht sicher, ob das alles so mit einem UDT funktioniert.
Schau Dir evtl. auch mal das Skeleton Modul an.
Ist ein Dummy-Modul bei dem erklärt wird wie Module aufgebaut sind.

Re: Calendar eigene Erweiterung "Fernsteuerung"

Posted: Mon Feb 09, 2009 1:40 pm
by networker
Vielen Dank für die prompte Reaktion!

...ich mache dann erst mal "Hausaufgaben" und melde mich dann wieder.

Gruß
Christian