Deutschland United States United Kingdom
ContentLion - Open Source CMS

Kalender

Kalender

Ich würde mir einen Kalender wünschen, wo Termine angezeigt werden.
Also zum einen eine Monatsansicht und dadrunter eine Liste mit "[Datum] - Termin"
Und dass dann auf jeder Seite darstellen (wie ein Menü).
Meine Frage ist dazu, ob man das soweit mit JQuery (bspw.) realisieren kann, dass man kein Plugin braucht?
Oder jemand glaubt, dass das einfach ist und in ein paar Stunden sowas realisieren kann?
Oder mir einen Crashkurs zum Plugin entwickeln geben kann, damit ich das selber machen kann.

Was hast du denn für Kentnisse, fragen wir mal so! :D

Was heißt Schnippsel? :D

Also:
Zuerst legst du im Ordner "system/plugins" einen neuen Ordner mit deinem Pluginname an. (Nur Kleinbuchstaben, keine Zahlen oder "_" usw.)
Dann erstellst du in diesem Ordner 2 neue Dateien:
  • activate.php
  • deactivate.php


Die erste ist für das Installieren des Plugins zuständig, die zweite fürs deinstallieren.
Dann legst du noch eine Datei "info.php" mit folgendem Inhalt an:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
<?PHP
  $pluginInfo                   = new PluginInfo();
  $pluginInfo->path             "<Ordnername>";
  $pluginInfo->name             "<Pluginname>";
  $pluginInfo->authorName       "<Dein Name>";
  $pluginInfo->authorLink       "<Wenn du ne Webseite o.ä. hast, kannst du die hier angeben.>";
  $pluginInfo->version          "1.0.0";
  $pluginInfo->license          "GPL 2";
  $pluginInfo->licenseUrl       "http://www.gnu.org/licenses/gpl.html";
  $pluginInfo->supportedLanguages = array("de","en"); //Sprachen, die dein Plugin unterstützt.
  $this->Add($pluginInfo);
?>

Jetzt legst du noch einen Ordner "languages" an und erstellst 2 Dateien darin:
  • de.php
  • en.php


Alle Sprach-Tokens zu den Sprachen kommen in diese Datei(en).

Folgenden Aufbau muss die Datei [u]minimal haben - Bsp. de.php:[/u]

PHP-Quelltext

1
2
3
<?PHP
    $tokens['plugin_description'] = "<Deine Plugin-Beschreibung>";
?>


Da du einen Termin-Kalender erstellen möchtest, gehe ich davon aus, dass du eine neue Seite anlegen musst.
Das geht wie folgt:

Zuerst erstellst du einen Ordner "classes".
Da kommen alle PHP-Klassen rein.

Bsp.-Klasse für eine Seite:

Termin.php

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php

class Plugin_<Dein Pluginname>_<Dein Dateiname ohne Endungalso Termin> extends Editor //Plugin_Termin_Termin

    function __construct(Page $page) { //Konstruktor einer Seite    
            $this->page $page;
        }
    
    public function display () { //Diese Methode wird aufgerufen, wenn die Seite angezeigt werden soll
    
        $this->template = new Template();
        $this->template->load("plugin_guestbook_admin"); //Evtl. anpassen
        
        $this->template->assign_var("<Variable>""<Wert>");
        
        echo $this->template->getCode();
    }
    
    public function getHeader () {
        return "";
    }
    
    public function getEditableCode() {

    }
    
    public function save(Page $newPagePage $oldPage) {}
    
}

?>

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »JuKu« (6. Oktober 2012, 16:41)


Gute Anleitung ;-)

Zu jQuery: Schau mal hier: http://jqueryui.com/demos/datepicker/ . Du kannst auch gerne Plugins für jQuery mit in deins packen, kann man später immer noch auslagern.

Danke, ist aber noch nicht fertig.^^

Als nächstes muss deine Seite noch regsitriert werden, dies tust du im Installer:
activate.php:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
//Seite registrieren
$id Page::create("admin/plugins/guestbook/main""Plugin_<Dein Plugin>_<Klassen-Name = Dateiname ohne .php>""<Seiten Titel>");
//das "admin/plugins/guestbook/main" musst du natürlich noch anpassen. ;)

//Und nun ein Menü anlegen. ;)
$menuEntry = new MenuEntry();
    $menuEntry->menu 5;//Menü 5 ist das Extra-Menü im Admin-Bereich
    $menuEntry->title "<Dein Menü-Titel>";
    $menuEntry->href $id;//ID der Seite = $id (wird ja oben zurückgegeben)
    $menuEntry->type 0;//Typ 0 bedeutet, dass dieses Menü keien untermenüs etc. hat und eine interne Seite ist.
    $menuEntry->save();


Zu den einzelnen Menu-IDs werde ich noch eine Liste machen. ;)

In die deactivate.php muss jetzt folgendes rein, damit die Seite auch wieder gelöscht wird.^^

PHP-Quelltext

1
2
3
4
$mainPage = new Page();
    $mainPage->loadProperties("guestbook");//Seiten-Alias; musst du natürlich anpassen. ;)
    MenuEntry::DeleteByPage($mainPage);//Alle dazugehörigen Menüs der Seite löschen
    $mainPage->delete();//Seite löschen

Besteht überhaupt noch Interesse? ^^