FH Raumbelegung: iCal Support für Wochenübersicht

FH Raumbelegung: iCal Support für Wochenübersicht

Ab sofort gibt es in meinem Raumbelegung-Webservice die Möglichkeit, die Wochenübersicht via iCal abzurufen. Dadurch lässt sich der Service komfortabel in Kalenderapplikationen (z.B. der Thunderbird-Extension Lightning) verwenden. Verwendung: einfach an eine Wochenübersicht den Parameter format/ical anhängen oder die entsprechenden Links am Ende der Übersicht verwenden.

Um zum Beispiel immer die aktuelle Woche des Studiengangs WI07 als Kalender in meinem Thunderbird anzeigen zu können, habe ich dort folgende URL als iCal-Quelle angegeben:

http://raumbelegung.stud.ailoo.net/week/show/class/wi07-vz/format/ical

Vorschläge sind wie üblich willkommen :)

Raumbelegung Update

Wieder ein Update für den Raumbelegungs-Webservice: das Webinterface wurde (zumindest für vernünftige Browser) zum Großteil webzweinulljqueryajaxifiziert ™. Außerdem gibts mittlerweile den Desktopclient in der aktualisierten Version für die neue Basis zum Download auf der Projektseite.

Neue Version des FH Kufstein Raumbelegungs-Webservice

Ich hab mich mal wieder meinem Raumbelegungs-Webservice für die FH Kufstein gewidmet und das komplette System auf Basis des Zend Frameworks neu aufgebaut.

Resultat: der Code ist sauber und wartbar – das ZF nimmt einem einiges an Arbeit ab. Nur der Webservice hat einige Experimente gefordert, bis er mal lief. Ich habe übrigens nicht wie geplant Zend_Soap_Autodiscover eingesetzt, da ich damit kein funktionierendes Ergebnis hinbekommen habe. Im Endeffekt hab ich dann das WSDL-Dokument des alten Webservices kopiert und angepasst, war die einfachste Lösung und funktioniert.

Neuigkeiten:

  • Generelle Architektur basierend auf der MVC-Implementation des ZF
  • SOAP Webservice über Zend_Soap
  • Caching mittels Zend_Cache
  • Screenscraping mit simple_html_dom
  • Webclient mit einigen Änderungen beim URL-Handling

Mehr dazu auf der Projektseite.

WordPress Plugin: DateArchives

Please do not post feature requests or bug reports in the comments, but file a ticket in the designated Issue Tracker instead. Thank you!

I just wrote a simple WordPress plugin which creates post archives which are categorized by date. You can find an example of the plugin in action on the new archives page.

Installation

  1. Copy the code linked at the end of this post into a new file
  2. Save the file as something like datearchives.php
  3. Upload your new file into your wp-content/plugins folder
  4. Enable the plugin in your WordPress backend

Parameters

The plugin takes three optional arguments:

void DateArchives ( [ string $headingtag   [, string $splitformat  [, int $limit ]]] )
string headingtag
HTML tag which will be used for headings.
(defaults to h2)
string splitformat
String in strftime format which defines how posts should be categorized. Maybe better to understand if you take a look at my archive page – there I used the default format which results in categories like ‘June 2008′. By changing this string you can categorize your archives by day, month, year, even by hour if you wish so.
(defaults to %B %Y)
int limit
If you got many posts you may want to limit the output to a certain amount of posts. Will output all posts if set to 0 or null.
(defaults to null)

Note: As all parameters are optional, you can omit them all if you don’t need to tweak the plugin’s output.

(more…)

Zukunftspläne für den FH Kufstein Raumbelegungs-Webservice

Nur ein paar Gedanken zu meinem Raumbelegungs-Webservice für die FH Kufstein:

  • von Grund auf neu strukturieren und auf Basis des Zend Framework aufbauen
  • Zend_Soap_AutoDiscover statt NuSOAP für den SOAP Webservice
  • Caching datenbankbasiert statt filebasiert

…irgendwann ;)

AutoThumb WordPress plugin and English posts

I’m proud to announce two first-timers today: my first officially released WordPress plugin and the first page on this blog I wrote in English. It’s kind of a challenge to my English skills, so please correct me if you find any errors — I’m sure you will ;)

The plugin integrates the great phpThumb library into WordPress and therefore allows you to post images in different sizes flexibly.

Here we go: WordPress Plugin: AutoThumb

WordPress Plugin: AutoThumb

Please do not post feature requests or bug reports in the comments, but file a ticket in the designated Issue Tracker instead. Thank you!

After switching my blog to WordPress I needed a simple solution which allowed me to flexibly post images in different sizes without having to hassle with different filenames, paths etc.

The plugin is actually just a port of a plugin/snippet I wrote for MODx a while ago (see here). It scans your content’s source code for <img> tags with width and height attributes and passes them to phpThumb, a great PHP image editing library, which handles the resizing and editing of the image. Additionally, by passing parameters to phpThumb using a query string, it’s possible to edit the image in several ways (take a look at phpThumb’s demos).

The simplest way to get resized images is to specify width/height attibutes in your HTML. Autothumb will use the given values and remove the attributes from your page’s output. When you take a look at the URLs of the following example images, you will see that the <img>-tag’s src-attribute points to a file called image.php in the plugin’s directory. This file takes the image source and several other parameters and passes them to phpThumb, which will generate and output the final image (of course images will be cached).

To prevent evil people playing with the query string and letting your server generate tons of different images, the plugin generates a hash which is a combination of the query string and a secret password you set in phpThumb’s config file. So every call with different parameters (even the same image with different sizes) has another unique hash and it’s not possible to generate new images without knowing the secret password.

(more…)

FH Kufstein Raumbelegung Webservice

FH Kufstein Raumbelegung Webservice

Bequemlichkeit kann machmal der Grund für neue Projekte sein. In diesem Fall die Bequemlichkeit, am Notebook immer Auskunft über die Raumbelegung, den Stundenplan und Planänderungen an der FH zu haben, ohne zum Infoscreen laufen zu müssen. Gegen Anfang des 2. Semesters bin ich auf den Online-Raumbelegungsplan der FH gestoßen, welcher die Basis für dieses Projekt bietet. Da ich mich mit dem Plan nicht wirklich anfreunden konnte, habe ich begonnen, ein eigenes System zu entwickeln, das sich auf die Daten aus genanntem Plan stützt.

Das Resultat ist eine auf PHP basierende Applikation, die die Daten des Raumbelegungsplans abruft und in Form eines SOAP-Webservices zur Verfügung stellt. Nachdem der Webservice in der ersten Version auf den schon doch recht angestaubten Libraries NuSOAP und php-html basierte, liegt der zweiten Version mittlerweile das Zend Framework in Version 1.6 und die Weiterentwicklung von php-html, simple_html_dom, zu Grunde. Das Resultat ist besseres Caching mit Zend_Cache, besserer Code und die Möglichkeit, das System flexibel zu erweitern.

Die Grundfunktion des Webservices besteht darin, den HTML-Quellcode des Online-Raumbelegungsplans, zu parsen, die relevanten Daten auszufiltern und diversen Clients als aufbereitete Daten zur Verfügung zu stellen. Der Webservice erlaubt das Filtern der Daten nach Datum, Studiengang, Lektor und Raum und ermöglicht es zusätzlich, Listen von ebendiesen Filterungskriterien auszulesen, um beispielsweise Auswahlfelder in Clientapplikationen damit zu füllen.

Der Webservice (PHP5/Zend_Soap) ist hier zu finden: http://raumbelegung.stud.ailoo.net/service (WSDL)

Desktopclient

Da ein Webservice ohne darauf aufbauende Applikation relativ langweilig ist, habe ich mich daran gemacht, einen Desktopclient in C# zu entwickeln. Da meine C#-Kenntnisse — vor allem was GUI-Applikationen angeht — (noch) relativ bescheiden sind, ist das Programm nicht sonderlich ausgefeilt und teilweise fehleranfällig. Anregungen und Kritik sind natürlich immer willkommen :)

Changelog
  • 0.2.2: Kleinere Bugfixes
  • 0.2.1: Umstellung der Webservice-URL

Anmerkung: Mittlerweile (v.A. durch die Verschmelzung Client/Service und die AJAX-Funktionalität) läuft der Webclient deutlich flüssiger und zuverlässiger als der Desktopclient.

Download

Der Desktopclient als Windows Installer Package (msi).

Webclient

Um den Service nicht nur auf Windows-Clients zu beschränken, gibt es seit kurzem einen Webclient, der ebenfalls in PHP geschrieben ist. Das Layout ist zwar relativ spartanisch, der Client funktioniert aber und erlaubt komfortablere Filterungsmethoden als der Desktopclient. Seit der zweiten Version greift der Webclient nicht mehr über das SOAP-API auf den Service zu, sondern ist voll in den Service integriert und basiert somit ebenfalls auf dem Zend Framework.

Raumbelegung Webclient

Der Plan bietet direkt über die URL diverse Filtermöglichkeiten, hier ein paar Beispiele:

Direkter Link für den Studiengang WI07-VZ für den aktuellen Tag
Andere Filterungsmöglichkeiten
Kombination von Filtern
Der Date-Filter ist recht flexibel (siehe dazu PHP strtotime)
Dies lässt sich natürlich auch mit anderen Filtern kombinieren
Zusätzlich gibt es auch eine Wochenübersicht
Direktaufruf für einen Studiengang
Direktaufruf für eine Kalenderwoche (KW 44, weil der 29.10 in dieser KW liegt)
iCal Wochenübersicht
Changelog
  • 0.2.3: iCal Support für Wochenübersicht
  • 0.2.2: Wochenübersicht hinzugefügt
  • 0.2.1: Erweiterung um AJAX-Funktionen mittels jQuery
  • 0.2: Zweite Version basierend auf Zend Framework
  • 0.1: Erste Version basierend auf altem Service
Lizenz
sämtlicher Code dieses Projekts (ausgenommen der verwendeten Biblotheken, für die die jeweilige Lizenz gilt) unterliegt der GPL (GNU General Public License)
Sourcecode
Alle Komponenten sind im Sourcecode der aktuellen Version über Subversion verfügbar. Da ich für die neue Version ein anderes SCM-System als Subversion verwendet habe und sich das Ganze im Moment noch recht stark in Entwicklung befindet, ist der aktuelle Code bisweilen nicht online verfügbar. Falls jemand interessiert ist, möge er mich kontaktieren.
Changelogs
Da die Changelogs mehr oder weniger in Blogposts festgehalten wurden/werden, dient der entsprechende Tag als gute Anlaufstelle.

Wem der Service nützlich ist und eventuell Lust hat, Clients für andere Betriebssysteme zu schreiben oder die bestehenden Clients zu erweitern, dem sei dies ausdrücklich erlaubt ;)