PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Squirrelmail durch einen Kalender erweitern



Gargi
07.02.2009, 20:53
Terminplaner online von überall her abrufbar? Klar, mit Squirrelmail!
Ich gehe davon aus, dass Ihr Squirrel, Apache, mysql und php am Laufen habt. Wir werden dann ein paar Plugins installieren, eine Datenbank anlegen, ein paar Dateien editieren und dann sollte es losgehen :)

Falls noch nicht geschehen (wie hier bereits empfohlen (http://www.gargi.org/showthread.php?t=897)) müssen noch ein paar Dateien nachinstalliert werden:


apt-get install php-db php-pear

Dann ziehen wir uns folgende Plugins herunter:


compatibility-2.0.14-1.0.tar
calendar_sql_backend-1.1-2.0.tar
shared_calendars-2.0.1-1.4.0.tar


Die Plugins findet Ihr unter folgender URL:
http://www.squirrelmail.org/plugins.php

Je nachdem wo Squirrelmail bei Euch auf dem Server installiert ist, findet Ihr alle Plugins unter dessen Installationsverzeichnis unter /plugins

Dort befindet Sich bereits ein Verzeichnis calendar. Das muss vorher umbenannt werden:


mv calendar calendar_old

Entpackt nun die neuen Plugins in das plugins Verzeichnis.

Nun müssen wir den Kalender und Sein Backend aktivieren. Dazu ruft die Squirrelmail Konfiguration auf:


squirrelmail-configure

Drückt im Hauptmenü die Taste 8 um neue Plugins zu aktivieren

Wählt nun hierfür


calendar
calendar_sql_backend


Speichert die Änderung mit S und beendet die Konfiguration mit Q .

Jetzt legen wir eine neue Datenbank an. Das machen wir ganz locker an der Konsole. Ihr habt sicher schon via phpmyadmin einen Datenbanknutzer angelegt. Den nennen wir in unseren Beispiel einfach mal "Kalender".

Nun eine neue Datenbank:


mysqladmin -u root -p create squirrelmail_calendar

Unsere neue Datenbank heißt nun squirrelmail_calendar. Die weißen wir jetzt unseren User Kalender zu:


mysql -u root -p

Jetzt seid Ihr an der mysql Konsole. Setzt hier nun folgenden Befehl ab:


grant SELECT, UPDATE, INSERT, DELETE on squirrelmail_calendar.* TO 'Kalender'@'localhost' identified by "DEINPASSWORT";
quit;
Oben natürlich anstatt den Usernamen Kalender Euren eigenen Namen einsetzten.

In Eure neue Datenbank setzt nun folgenden Befehl ab:


CREATE TABLE calendars (
id varchar(250) NOT NULL,
type varchar(30) NOT NULL,
name varchar(255) default '',
domain varchar(128) default '',
created_on datetime,
last_modified_on datetime,
ical_raw text NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY id (id),
KEY type (type)
) TYPE=MyISAM;

CREATE TABLE calendar_owners (
calendar_id varchar(250) NOT NULL,
owner_name varchar(128) NOT NULL,
PRIMARY KEY (calendar_id, owner_name),
UNIQUE KEY cal_owner (calendar_id, owner_name)
) TYPE=MyISAM;

CREATE TABLE calendar_readers (
calendar_id varchar(250) NOT NULL,
reader_name varchar(128) NOT NULL,
PRIMARY KEY (calendar_id, reader_name),
UNIQUE KEY cal_reader (calendar_id, reader_name)
) TYPE=MyISAM;

CREATE TABLE calendar_writers (
calendar_id varchar(250) NOT NULL,
writer_name varchar(128) NOT NULL,
PRIMARY KEY (calendar_id, writer_name),
UNIQUE KEY cal_writer (calendar_id, writer_name)
) TYPE=MyISAM;

CREATE TABLE events (
id int(11) NOT NULL AUTO_INCREMENT,
event_id varchar(250) NOT NULL,
calendar_id varchar(250) NOT NULL,
domain varchar(128) default '',
evt_start datetime,
evt_end datetime,
isAllDay enum('YES', 'NO') NOT NULL,
isRecurring enum('YES', 'NO') NOT NULL,
isTask enum('YES', 'NO') NOT NULL,
isHoliday enum('YES', 'NO') NOT NULL,
priority tinyint(3) unsigned default 5, -- default NORMAL priority
created_on datetime,
last_modified_on datetime,
ical_raw text NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY id (id),
UNIQUE KEY event_id (event_id, calendar_id),
KEY isRecurring (isRecurring),
KEY isTask (isTask),
KEY isHoliday (isHoliday),
KEY evt_start (evt_start),
KEY evt_end (evt_end) -- TODO: should create some sensible composite keys
) TYPE=MyISAM;

CREATE TABLE event_parent_calendars (
event_key int(11) NOT NULL,
parent_calendar_id varchar(250) NOT NULL,
PRIMARY KEY (event_key, parent_calendar_id),
UNIQUE KEY event_parent (event_key, parent_calendar_id)
) TYPE=MyISAM;

CREATE TABLE event_owners (
event_key int(11) NOT NULL,
owner_name varchar(128) NOT NULL,
PRIMARY KEY (event_key, owner_name),
UNIQUE KEY event_owner (event_key, owner_name)
) TYPE=MyISAM;

CREATE TABLE event_readers (
event_key int(11) NOT NULL,
reader_name varchar(128) NOT NULL,
PRIMARY KEY (event_key, reader_name),
UNIQUE KEY event_reader (event_key, reader_name)
) TYPE=MyISAM;

CREATE TABLE event_writers (
event_key int(11) NOT NULL,
writer_name varchar(128) NOT NULL,
PRIMARY KEY (event_key, writer_name),
UNIQUE KEY event_writer (event_key, writer_name)
) TYPE=MyISAM;

Loggt Euch dazu am besten in den phpmyadmin ein und klickt auf die squirrelmail_calendar Datenbank. Dann auf SQL klicken und den obeigen Text in das Eingabefenster kopieren und mit OK abschicken.

Nun müssen wir die Datenbankanbindung definieren. Das passiert in der Datei /plugins/calendar_sql_backend/config.php.

Im dortigen Verzeichnis erstmal die sampledatei auf die config.php kopieren:


mv config.php.sample config.php

Editiert nun die config.php. Definiert den Parameter $cal_dsn mit Euren Datenbank Usernamen und Passwort:


$cal_dsn = 'mysql://username:passwort@localhost/squirrelmail_calendar';

Die letzte Config liegt im Verzeichnis .../plugins/calendar/data

Hier auch erstmal den Sample umbenennen:


mv config.php.sample config.php

Sucht hier nun den Abschnitt


$cal_admins = array(

// for example only, real entries
// should not have the two slashes
// at the beginning of the line:
//
// 'martina*' => 'yes',
// 'pavel@example.net' => 'yes',
// 'jennifer@example.*' => 'no',

);

Fügt hier nun den Mailuser ein, der als Admin für den Kalender fungieren darf. Das kann so aussehen:


$cal_admins = array(

meine_mailbox => 'yes',

);

Auch hier die Änderungen speichern.

Jetzt könnt Ihr Euch im Squirrelmail anmelden und Euren ersten Kalender dort anlegen. Da das dort alles menügesteuert geht ist das selbsterklärend.

http://www.gargi.org/stuff/serverprojekt/squirrelcalendar.jpg

Viel Spaß mit Eurem Kalender!

cu
Gargi