43

Agenda

Embed Size (px)

DESCRIPTION

Agenda. Überblick über Joomla Einführung Demos Joomla erweitern modules, components, mambots Die Joomla 1.0.x API Entwickeln ... und los (ab 8.9.) Woche 1 : Einarbeitung, User Stories, Sceletton, Clickdummy Woche 2 : 80% Major / 20% Minor stories implemented/tested - PowerPoint PPT Presentation

Citation preview

Page 1: Agenda
Page 2: Agenda

Agenda

Überblick über Joomla Einführung Demos

Joomla erweitern modules, components, mambots Die Joomla 1.0.x API

Entwickeln

... und los (ab 8.9.) Woche 1 : Einarbeitung, User Stories, Sceletton, Clickdummy Woche 2 : 80% Major / 20% Minor stories implemented/tested Woche 3 : 100% Major stories tested, 80% Minor stories implemented/tested Woche 4: 100% implemented, tested, documented.

Page 3: Agenda

Kapitel 1 Überblick über Joomla (1.0.x)

Was ist Joomla Einordnung & Alternativen Funktionen Versionen & Umgebung Installation Frontend & Backend Rollen Baukasten Demo: Fontend & Backend Seitenentwurf Demo: www.mni.fh-giessen.de

Page 4: Agenda

1.1 Was ist Joomla!?

Joomla! ist ein von Jumla abgeleitetes Wort aus der afrikanischen Sprache Swahili und bedeutet »alle zusammen«.

Joomla! ist die Weiterentwicklung des erfolgreichen Systems Mambo und wie Mambo ein Stück Software, mit dem sich eine Website per Webbrowser einfach verwalten lässt.

Joomla! ist (nach eigenen Angaben) ein »Cutting Edge Content Management System« und eines der leistungsfähigsten OpenSource - Content-Management-systeme auf der Welt.

Es wird weltweit für einfache Homepages bis hin zu aufwendigen Unternehmens-websites genutzt.

Es ist einfach zu installieren und einfach zu verwalten Es ist sehr verlässlich (aber nicht zuverlässig sicher !)

Joomla hat eine lebendige Community

www.joomla.org offizielle internationale Joomla-Seitewww.joomla.de offizielle deutsche Joomla-Seitewww.joomlaos.de Erweiterungenwww.joomlaportal.de Entwicklerforumdev.joomla.org/component/option,com_jd-wiki Developers Guidewww.filmanleitungen.de multimediale Joomla-Tutorials

Page 5: Agenda

1.2 Einordnung & Alternativen

Typo3 Zope/Plone Drupal E107 MediaWiki weitere:

http://www.cms-vergleich.de

open source vollständig

webbasiert

www.jdk.de/de/cms/wcm-cms-web-content-management/wcm-featurematrix.html 16.2.2008

Page 6: Agenda

1.3 Funktionen

Verwaltung von Inhalten und deren Darstellung Trennung von Inhalt und Darstellung

Inhalt: weitgehend ohne Formatierung Darstellung gesteuert über „templates“ und styles

Navigation Benutzerverwaltung

mit Rollenkonzept und Workflow ähnlich einem „Redaktions.system“ leider (zur Zeit) hartcodiert

damit verbunden: Zugriffsrechteverwaltung

Daneben: Caching-Mechanismus, Papierkorb, Archiv, Suchmaschinenfreundliche URLs,

mehrsprachiges Frontend, Besucherstatistiken, WYSIWYG-Editor für Inhalte

Erweiterbarkeit Foren, Bildergalerien, Bannerverwaltung, Dokumentenverwaltung, Templates,

Kalender

Page 7: Agenda

1.4 Content

Contentarten „Textueller-Content“: Content

vollständig integriert in Datenbank: strukturiert (Überschriften, Teaser, Inhalt), durchsuchbar.

„Medien-Content“: Medien „nur“ hochladbar und verlinkbar: Bilder, Videos, Audios, „Nicht-HTML“-

Dokumente (Word, pdfs, Excels,´...) Generierter Content

generiert aus den unterschiedlichsten Quellen: individuell programmiert Content

Statischer Content HTML-Seiten, die „grundsätzlich“ nicht erweitert werden.

Bsp.: Einstiegsseiten für Menüpunkte 1-stufig strukturiert, d.h. alle statischen Contentseiten werden als Liste geführt

Dynamischer Content HTML-Seiten, die „ grundsätzlich“ listenartig erweitert werden.

Bsp.: News, Blogs, Termine, Inhaltssammlungen 2-stufig hierarchisch strukturiert:

– Einteilung in „sections“ (Bereiche).– Jeder Bereich ist nochmals eingeteilt in „categories“ (kategorien)

Page 8: Agenda

1.5 Versionen & Umgebung

Versionen: 1.0.x (ca. 2.7 MB)

1.0.13. wird z.Z. am häufigsten eingesetzt (-> MNI-Homepage, bis Mitte August)

... 1.0.15 seit 20.2. behebt einige Sicherheitslücken, Umstieg

empfohlen 1.5.x

1.5.0 komplett überarbeitetes Framework ... 1.5.6 seit 10.8. behebt einige Sicherheitslücken, Umstieg empfohlen

Betriebssysteme: Windows: XP oder Vista Linux

benötigte Komponenten Apache (ab 1.13.19) PHP (ab 4.2 mit MySQL-, XML- und Zlib Unterstützung, nicht „safe mode“) MySQL (ab 3.23.0 )

Installationspakete: XJ! (z.Z. 1.0.12): Apache 2.0.59, PHP 5.2.0, MySQL 4.1.11, Joomla 1.0.12, XAMPP (z.Z. 1.6.6): Apache 2.2.8, PHP 5.2.5 & 4.4.8. MySQL 5.0.51a, ...

Linux, Windows, MacOSX, Solaris

Page 9: Agenda

1.6 Installation

XAMPP installieren und starten Paket entpacken (installiert nach /opt/lampp)

tar xvfz <xampp-package-name> -C /opt Webserver starten:

/opt/lampp/lampp start

Datenbank einrichten: Administrationstool starten: localhost/phpmyadmin Datenbank anlegen: z.B. joomla (Bei Zweitinstallation: anderen Namen verwenden)

Joomla einrichten entpacken in Webroot-Verzeichnis (z.B. /apachefriends/xampp/htdocs/ oder – bei uns -

var/www/html. bei Zweitinstallation: anderen Namen verwenden) Unter Linux: Schreibrechte einrichten: chmod a+w <directory>

. administrator/backups administrator/components administrator/modules administrator/templates cache components images images/banners images/stories language mambots mambots/content mambots/editor mambots/editors-xtd mambots/search media modules templatesoder: chown www-data:www-data –R <Joomladir> (ändern Benutzerrechte auuf Apache-user)

Joomla installieren: localhost/joomla und den Anleitungen folgen Installationsverzeichnis löschen: rm –r installation

Joomla starten User-Frontend: localhost/joomla (bei XJ!: localhost:8888/...) Admin-Backend: localhost/joomla/administrator: (bei XJ!: s.o.)

Page 10: Agenda

1.7 Bereiche

Frontend Content: Frontpage, Latest news, Most read Menüs: Top-Menü, Main-Menü, Other-Menü Modules: Login, Polls, Who‘s online, RSS-Feeds Decoration: Logo, Banner

Backend Control Panel: Icon-Navigation Control Menue: Menü-Navigation Schnellübersicht: Logged, components, popular, latest Statusleiste

Page 11: Agenda

1.8 Rollen

1. public sieht Content im Frontend

2. registered darf sich im Frontend einloggen und alles sehen und tun, was für registrierte

Benutzer erlaubt wurde

3. author darf im Frontend content schreiben und seinen eigenen content bearbeiten

4. editor darf im Frontend content von anderen authors bearbeiten

5. publisher darf im content freischalten (veröffenbtlichen)

6. manager darf im Backend Dateien hochladen, Inhalte strukturiert ablegen und archivieren

7. administrator darf im Backend Menüs, Inhaltstrukturen und Design verwalten und Benutzer

anlegen

8. superadministrator darf im Backend Administratoren verwalten

Grundsätzlich: Die Benutzerrechte bauen aufeinander auf, d.h. die Rechte„niedrigerer“ Gruppen werden an höhere Gruppen vererbt

regis-tered

public

special

back

end

fron

tend

Page 12: Agenda

1.9 Baukasten

Menüs User-Module Login Suche Sections Archive Latest News Popular Syndicates Banners Statistik Template Chooser Related Items Wrapper Polls Who's Online Random Image Newsflash

MOS Image Legacy Mambot Includer Code support Suchmaschinenfreundliche URLs (SEF) MOS Rating Email Cloaking GeSHi Load Module Positions MOS Pagination

Die Module bestimmen den Inhalt der Objekte auf der SeiteContent-Mambots beeinflussen den Inhalt der Objekte auf der SeiteDas Template bestimmt die Positionen der Objekte auf der HTML-SeiteDas Stylesheet bestimmt das Aussehen der HTML-Objekte auf der Seite

daneben:tausende weiterer Modules und Mambots

Page 13: Agenda

1.10 frontend - backend

Page 14: Agenda

1.11 Seitenentwurf

Zielgruppenanalyse für wen ist die Seite gedacht und was will man diesen Gruppen vermitteln

Inhalte was soll rein, was nicht

Strukturen Menüstrukturen Content-Strukturen

statischer Content (naming conventions) dynamischer Content: sections ,categories (Granularität)

Medienstrukturen

Zugriffsmodell wer darf was

Design (realisiert in template) CI Seitenlayout CSS

Page 15: Agenda

1.12 templates

Page 16: Agenda

1.13 ... und dann

Bei einem Menüaufruf , werden alle publizierten Module für definierte Benutzerrollen an definierter Stelle in definierter Reihenfolge

ausgeführt und generieren dabei Context.

Page 17: Agenda

Kapitel 2 Joomla erweitern

Erweiterungen Module Komponenten Mambots

Die Joomla API Rules

Page 18: Agenda

2.1 Erweiterungen

Joomla sieht drei Arten vor, Erweiterungen zu realisieren Komponenten Module Mambots / Plugins

Page 19: Agenda

2.1.1 Komponenten

Komponenten implementieren umfangreiche Funktionen zur Erweiterung der Joomla-Funktionalität

Foren Repositories Gästebücher ...

Komponenten haben (meistens) Backend- und Frontend-Anteile Backend-Anteile zur Erstellung zur Verwaltung eigener Datenbankstrukturen Frontendanteile zum Verwalten der Datenbankstrukturen mit oft eingeschränkter

Funktionalität, z.B. abhängig von der Benutzergruppe

Komponenten werden oft ergänzt von Modulen zur Darstellung der in der Datenbank abgelegten Objekte.

Die Grenzen zu Modulen sind fließend, denn Komponenten ohne Backend-Anteil können das gleiche wie Module leisten.

Page 20: Agenda

2.1.2 Module

Module realisieren kleinere Funktionen meist durch Zugriff auf die Joomla-Datenbank, auf externe Quellen, lokalen Dateien, . oft auf Daten, die von Komponenten eingebracht wurden.

Module werden nur über das frontend aufgerufen. Der Aufruf erfolgt meist implizit über die Zuordnung von Modulen zu deren Positionen

im template ... oder über die die Funktion „mosLoadModules” (siehe “Joomla API”)

Module benötigen (mindestens) zwei Dateien (zumindest) eine Datei für die Logik und Darstellung eine XML-Datei für die Installation

Page 21: Agenda

2.1.2 Module: Beispiel

Module sollten nur in Joomla-Kontext aufrufbar sein Joomla bietet eine API (Framework) zum Zugriff auf wichtige Funktionen und

Objekte insb. Datenbank-Zugriffe

Module generieren i.A. HTML-Code

<?phpdefined('_VALID_MOS') or die ('Direct Access to this location is not allowed.');

global $mosConfig_offset;$database->setQuery("SELECT * FROM #__users LIMIT 5");$rows = $database->loadObjectList();

// iterate through all tuples of jos_users (if any)if ($rows) { echo "<ul>\n"; foreach ($rows as $row) { echo " <li>" . $row->name . "<li>\n"; } echo "<ul>\n";}?>

Page 22: Agenda

2.1.3 Mambots

Mambots werden in vier Gruppen eingeteilt Content Mambots: interpretieren (textuellen) Content und manipulieren ihn Search Mambots: erweitern die Suche auf eigene Datenbankstrukturen (z.B. von

Komponenten)

Mambots werden durch Ereignisse getriggert

Page 23: Agenda

2.1.3 Mambots: Beispiel

Dieser Mambot transformiert einen „Kurzink“ der Form {moshotlink=id name=klickenSiediesenLink}in die vollständige Form <a href=„index.php?option=com_content&task=view&id=ID> klickenSiediesenLink</a>

1 <?php2 defined( '_VALID_MOS' ) or die( 'Direct Access to this3 script is not allowed');4 $_MAMBOTS->registerFunction( 'onPrepareContent',5 'botMosHotLink' );6 function botMosHotLink( $published, &$row )7 {8 $regex = "/{moshotlink=([^\s]*)\s*name=([^\s]*)}/s";9 $repl = '<a href="index.php?'10 .'option=com_content&task=view&id=$1">'11 .'$2</a>';12 $row->text = preg_replace($regex, $repl, $row->text);13 return true;14 }15 ?>

Page 24: Agenda

2.1.4 Installation

später

Page 25: Agenda

2.2 Die Joomla 1.0.x API

Funktionen Konstanten, Variable Laufzeitobjekte zum Zugriff auf:

die Datenbank die Seite (mainframe) übergebenen Parameter auf Benutzerattribute auf Standard-HTML-Elemente auf Ausgaben in der Toolbar

http://www.galileocomputing.de/openbook/joomla/index.htm

http://help.joomla.org/content/category/12/108/125/

Page 26: Agenda

2.2.1 Funktionen (1)

Funktion Beschreibung

initEditor() Nimmt den Code des WYSIWYG-Editors mit in die Seite auf.Joomla 1.5.x: JEditor::init

mosCountModules ([string $position])

Gibt die Anzahl der Module an einer Position aus. $position. Name der Position, für die die Module gezählt werden sollen. Standardwert ist left.

mosErrorAlert (mixed $text) Gibt eine Fehlermeldung aus. $text. Text, der ausgeben werden soll.Joomla 1.5.x: josErrorAlert

mosFormatDate( string $date, [string $format])

Gibt entsprechend der lokalen Einstellungen die formatierte Version eines Datumsstrings aus. $date. Datum im datetime-Format. $format. Formatierungsstring.

mosGetParam( array &$arr, string $name, [mixed $default], [int $mask ])

Holt den Wert eines Übergabeparameters ab. Dabei werden HTML-Tags und Leerzeichen am Anfang und Ende entfernt. $arr. PHP-Variable, von der die Übergabe abgeholt werden soll. Beispiele sind $_GET, $_POST oder $_COOKIE. $name. Name des Parameters. $default. Vorgabewert, wenn der Parameter nicht gefunden wurde. $mask. Schaltet die Filter aus. Gültige Werte sind: _MOS_ALLOWHTML: Lässt Tags zu. _MOS_NOTRIM: Lässt Leerzeichen zu. _MOS_ALLOWRAW: Keine Filterung.

mosLoadModules( [string $position], [int $style])

Lädt die Module für eine angegebene Position. $position. Name der Position. $style. Gibt an, wie die Module ausgegeben werden: 0: übereinander in Tabelle 1: nebeneinander in Tabelle –1: unformatiert –2: in einzelnen <div>-Tags –3: in dreifachen <div>-Tags für abgerundete Ecken

mosMainBody() Gibt den Inhalt des Contentbereichs aus.

Page 27: Agenda

2.2.1 Funktionen (2)

Funktion Beschreibung

mosMail( string $from, string $fromname, string $recipient, string $subject, string $body)

Versendet eine E-Mail über den phpMailer. $from. E-Mail-Adresse des Absenders. $fromname. Name des Absenders. $recipient. E-Mail-Adresse des Empfängers. Hier kann auch ein Array mit Adressen übergeben werden. $subject. Betreff der Mail. $body. Inhalt der Mail. Joomla 1.5.x: josMail

mosNotAuth() Gibt die Meldung aus, dass der Benutzer diesen Bereich nicht sehen darf.

mosPathWay() Gibt den Klickpfad aus. Joomla 1.5.x: mosLoadModule('breadcrumbs');

mosReadDirectory (string $path)

Liest die Dateien aus einem Verzeichnis. $path. Der relative Pfad des Verzeichnisses. Joomla 1.5.x: JFolder::files oder JFolder::folders

mosRedirect (string $url) Weiterleitung auf eine andere Seite. $url. Zieladresse. Joomla 1.5.x: josRedirect

mosShowHead() Gibt den HTML-Head-Bereich aus.

mosToolTip( string $tooltip, [string $title], [int $width], [string $image], [string $text], [string $href], [boolean $link])

Gibt den HTML-Code für ein Tooltip und das zugehörige Icon aus. Die JavaScript-Bibliothek overlib_mini.js muss eingebunden sein. $tooltip. Text der Anzeige. $title. Text im Titelfeld. $width. Breite des Tooltip. $image. Icon, das angezeigt werden soll. Der Pfad muss relativ zu /includes/js/ThemeOffice sein. Wenn der Parameter $text einen Wert hat, wird kein Bild angezeigt. $text. Text, der als Basis für das Tooltip dient. $href. Adresse, die angezeigt werden soll, wenn auf die Tooltip-Basis geklickt wird. $link. Gibt an, ob die Basis verlinkt werden soll.

sefRelToAbs (string $url) Konvertiert eine URL in ein suchmaschinenfreundliches Format. $url. Die Internet-Adresse, die konvertiert werden soll.

Page 28: Agenda

2.2.2 Konstanten & Variable

Konstante Beschreibung

_VALID_MOS Diese Konstante ist gesetzt (Wert: 1), wenn ein Skript innerhalb von Joomla! aufgerufen wird.

Variable Beschreibung

$mosConfig_absolute_path Der absolute Pfad zur Joomla!-Installation auf dem Server.

$mosConfig_lang Enthält den aktuellen Sprachnamen.

$mosConfig_live_site Enthält den URL-Pfad bis zur Joomla!-Seite. Alle URLs innerhalb von Joomla! sind daher relativ dazu.

$mosConfig_sitename Name der Joomla!-Seite.

Page 29: Agenda

2.2.3 Datenbank-Objekt

Methode Beschreibung

$database->getErrorMsg() Liefert im Fehlerfall die Fehlermeldung.

$database->getErrorNum() Liefert im Fehlerfall die Fehlernummer.

$database->getNumRows() Die Anzahl der Ergebnisse der letzten Abfrage.

$database->loadObjectList() Liefert das Abfrageergebnis als Array von Objekten.

$database->loadResult() Liefert das erste Feld des ersten Ergebnisses der Abfrage.

$database->query() Führt die Abfrage aus. Gibt eine Datenbankressource zurück, wenn die Abfrage erfolgreich war, ansonsten false.

$database->setQuery(string $sql)

Setzt das SQL-Statement für die Datenbankabfrage fest. $sql. Das SQL-Statement.

Page 30: Agenda

2.2.4 Mainframe-Objekt

Methode Beschreibung

$mainframe->addCustomHeadTag (string $html)

Fügt dem Head-Bereich der HTML-Ausgabe ein neues Tag hinzu. $html. Das neue HTML-Tag.

$mainframe->addMetaTag( string $name, string $content)

Fügt ein neues Metatag in den HTML-Header ein. $name. Inhalt des Name-Attributs. $content. Inhalt des Content-Attributs.

$mainframe->appendMetaTag (string $name, string $content)

Erweitert ein bereits existierendes Metatag im HTML-Header. $name. Name des zu erweiternden Tags. $content. Inhalt, der an den bestehenden Inhalt angehängt werden soll.

$mainframe->getPageTitle () Gibt den Titel der Seite zurück.

$mainframe->getPath(mixed $varname)

Gibt eine zuvor gespeicherte Pfadvariable zurück, beispielsweise, um die verschiedenen Teile einer Komponente aufzurufen. $varname. Der Name der Pfadvariablen.

$mainframe->getUser () Liefert ein Objekt vom Typ mosUser zurück, das die Daten des aktuell eingeloggten Benutzers enthält.

$mainframe->login (mixed $username, mixed $passwd)

Versucht, einen bestimmten Benutzer im System anzumelden. $username. Der Benutzername des Users. $passwd. Das Passwort des Benutzers.

$mainframe->logout () Beendet die aktuelle Session und loggt den Benutzer aus.

$mainframe->setPageTitle (string $title)

Setzt den Seitentitel auf den angegebenen Wert. $title. Der neue Seitentitel.

Page 31: Agenda

2.2.5 Parameter & Benutzerdaten

Methode Beschreibung

$params->def ( string $key, string $value)

Setzt einen Wert, der noch nicht registriert ist. $key. Name des neuen Parameters. $value. Wert, der gesetzt werden soll.

$params->get ( string $key, [mixed $default])

Liefert den Wert eines bestimmten Parameters zurück. $key. Name des Parameters. $default. Standardwert, falls der Parameter nicht gefunden wird.

$params->set ( string $key, string $value)

Setzt den Wert eines bestimmten Parameters. $key. Name des Parameters. $value. Wert, der gesetzt werden soll.

Name Inhalt

$my->id Die ID des Benutzers.

$my->Name Der echte Name des Benutzers.

$my->username Der Benutzername.

$my->usertype Der Name der Gruppe, zu der der Benutzer gehört.

Page 32: Agenda

2.2.6 HTML-Elemente

Methode Beschreibung$params Ein Objekt vom Typ mosParameter. Hier können verschiedene Daten übergeben werden, die normiert sind. So gibt popup an, ob es sich um ein Popup-Fenster handelt. Die mosHTML-Elemente passen Ihr Verhalten entsprechend an.$enable Wenn true, wird das Element ausgegeben. Standard ist false.

mosHTML::BackButton( object &$params, [boolean $enable] )

Gibt einen Zurück-Button aus, wenn in $params der Wert back_button auf true und popup auf false gesetzt ist.

mosHTML:: CloseButton( object &$params, [boolean $enable] )

Gibt einen Schließen-Button aus, wenn in $params der Wert popup auf true gesetzt ist.

mosHTML:: monthSelectList( string $tag_name, string $tag_attribs, mixed $selected )

Gibt eine Auswahlliste mit Monatsnamen aus.$tag_name. Der Name des erzeugten <select>-Tags. $tag_attribs. Weitere Attribute wie beispielsweise die CSS-Klasse. $selected. Index des ausgewählten Monats. Im einstelligen Bereich mit führender 0, also z.  B. 02.

mosHTML:: PrintIcon( int &$row, object &$params, boolean $enable, string $link )

Gibt ein Drucksymbol aus. $row. Index der Zeile, falls das Symbol in Listen dargestellt wird. $params. Ist der Wert print auf false gesetzt, wird kein Symbol angezeigt. $link. Die URL des Dokuments, das gedruckt werden soll.

mosHTML:: yesnoRadioList( string $tag_name, string $tag_attribs, mixed $selected, [string $yes], [string $no] )

Gibt Radiobuttons für »Ja« und »Nein« aus.$tag_name. Der Name der erzeugten Radiobuttons.$tag_attribs. Weitere Attribute wie beispielsweise die CSS-Klasse.$selected. Bestimmt, was vorausgewählt wird. 0 steht für »no«.$yes, $no. Beschriftung der einzelnen Optionen.

Page 33: Agenda

2.2.7 Toolbar

Methode Beschreibung$task Der Name der Funktion, die ausgeführt werden soll$alt Der Text für das alt-Attribut des Bildes.

$mosMenuBar->addNew ( string $task, [string $alt])

Gibt das Neu-Symbol aus.

$mosMenuBar->back( [mixed $alt], [mixed $href])

Gibt das Zurück-Symbol aus. E $href. Zieladresse beim Zurückspringen.

$mosMenuBar->cancel ( string $task, [string $alt])

Gibt das Abbrechen-Symbol aus.

$mosMenuBar->deleteList( [string $msg], string $task, [string $alt])

Gibt das Löschen-Symbol aus. E $msg. Meldung, die ausgegeben wird, wenn das Löschen erfolgreich war.

$mosMenuBar->editList ( string $task, [string $alt])

Gibt das Bearbeiten-Symbol aus.

$mosMenuBar->endTable () Beendet die Toolbar.

$mosMenuBar->publish ( string $task, [string $alt])

Gibt das Veröffentlichen-Symbol aus.

$mosMenuBar->save ( string $task, [string $alt])

Gibt das Speichern-Symbol aus.

$mosMenuBar->startTable () Beginnt die Toolbar.

$mosMenuBar->Trash ( string $task, [string $alt])

Gibt das Papierkorb-Symbol aus.

$mosMenuBar->unpublish ( string $task, [string $alt])

Gibt das Verstecken-Symbol aus.

Page 34: Agenda

Kapitel 3 Entwickeln

Agile Methode Rules Die Projekte

Page 35: Agenda

3.1 Agiles Manifest

Individuen und Interaktionen gelten mehr als Prozesse und Tools.Zwar sind wohldefinierte Entwicklungsprozesse und hochentwickelte Entwicklungswerkzeuge wichtig, wesentlich wichtiger ist jedoch die Qualifikation der Mitarbeitenden und eine effiziente Kommunikation zwischen ihnen.

Funktionierende Programme gelten mehr als ausführliche Dokumentation. Gut geschriebene Dokumentation kann zwar hilfreich sein, das eigentliche Ziel der Entwicklung ist jedoch die fertige Software. Außerdem ist eine intuitiv verständliche Software hilfreicher als umfangreiche Dokumentation, die sowieso niemand liest.

Die stetige Zusammenarbeit mit dem Kunden steht über Verträgen.Ein Vertrag ist normalerweise die Grundlage für die Zusammenarbeit. Was der Kunde aber wirklich will, kann nur in ständiger Kommunikation mit ihm ermittelt werden.

Der Mut und die Offenheit für Änderungen steht über dem Befolgen eines festgelegten Plans.Im Verlauf eines Entwicklungsprojektes ändern sich viele Anforderungen und Randbedingungen ebenso wie das Verständnis des Problemfeldes. Das Team muss darauf schnell reagieren können.

Page 36: Agenda

3.1 Agile Prinzipien

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.

Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

Business people and developers must work together daily throughout the project. Build projects around motivated individuals. Give them the environment and support they

need, and trust them to get the job done. The most efficient and effective method of conveying information to and within a

development team is face-to-face conversation. Working software is the primary measure of progress. Agile processes promote sustainable development. The sponsors, developers, and users

should be able to maintain a constant pace indefinitely. Continuous attention to technical excellence and good design enhances agility. Simplicity - the art of maximizing the amount of work not done - is essential. The best architectures, requirements, and designs emerge from self-organizing teams. At regular intervals, the team reflects on how to become more effective, then tunes and

adjusts its behavior accordingly.

Page 37: Agenda

3.2 Rules

Coding Style Documentation Rules Architectural rules

Page 38: Agenda

3.2.1 Coding style

Pear help.joomla.org/content/view/826/60 pear.php.net/manual/en/standards.php

... aus dem style guide: Indenting and Line Length Control Structures Function Calls Class Definitions Function Definitions Comments Including Code PHP Code Tags Header Comment Blocks Using CVS Naming Conventions File Formats E_STRICT-compatible code Error Handling Guidelines

Page 39: Agenda

3.2.2 Documentation

www.phpdoc.org

Page 40: Agenda

3.2.3 Architectur

MVC: Model, View, Controller (see: Joomla! (Addison-Wesley) 7.1.2)

Page 41: Agenda

3.2.4 Security

http://www.joomla.de/content/view/215/17/

Page 42: Agenda

3.2.4 IDE

Eclipse + PHP Development Tools (PDT)

http://www.eclipse.org/home/categories/languages.php + xdebug ( included in PDT)

http://www.eclipse.org/pdt/documents/XDebugGuide.pdf http://www.starbowconsulting.com/blog/tao/setting-eclipse-pdt-and-xdebug

+ SVN Extention http://subclipse.tigris.org/install.html

+ firebug + firePHP + webDevelopper + tidyHTML

Tutorial:http://www.joomlaportal.de/entwicklungsumgebung-joomla-1-0-x/110847-eclipse.html

... can only be run in actual JAVE runtime environment

Page 43: Agenda

3.3 Die Projekte

Development Support and Quality PHP, Apache, MySQL, Eclipse, SVN, PEAR, Documentation Integration (Downward compatibility), Optimization, Test,

New Style CI, Design, Templates YAML, FH Kompakt-style, templates, css Content Migration -> 1.5

Content Downward compatibility (Joomla 1.0.x)

GiessenStaff: statische Liste, Bildpreview -> 1.5.

GiessenList Plugin: Thesis-list, -> 1.5

GiessenDocman GiessenCatWheezle: integrate and migrate -> 1.5

GiessenEvent News as dynamic content, RSS, Calender (Plugin) (substituting GiessenNews)

GiessenSched Integration, Download, giessen_sso, mod_raumbelegung, GiessenGrabber -> 1.5,

GiessenJustNews: Teaser mit Bild, Bild, Standardform als dynamischer Content