430 likes | 534 Views
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
E N D
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.
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
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-Seite www.joomla.de offizielle deutsche Joomla-Seite www.joomlaos.de Erweiterungen www.joomlaportal.de Entwicklerforum dev.joomla.org/component/option,com_jd-wiki Developers Guide www.filmanleitungen.de multimediale Joomla-Tutorials
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
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
1.4Content • 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)
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
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.)
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
1.8 Rollen • public • sieht Content im Frontend • registered • darf sich im Frontend einloggen und alles sehen und tun, was für registrierte Benutzer erlaubt wurde • author • darf im Frontend content schreiben und seinen eigenen content bearbeiten • editor • darf im Frontend content von anderen authors bearbeiten • publisher • darf im content freischalten (veröffenbtlichen) • manager • darf im Backend Dateien hochladen, Inhalte strukturiert ablegen und archivieren • administrator • darf im Backend Menüs, Inhaltstrukturen und Design verwalten und Benutzer anlegen • superadministrator • darf im Backend Administratoren verwalten public regis-tered frontend special backend Grundsätzlich: Die Benutzerrechte bauen aufeinander auf, d.h. die Rechte „niedrigerer“ Gruppen werden an höhere Gruppen vererbt
MOS Image Legacy Mambot Includer Code support Suchmaschinenfreundliche URLs (SEF) MOS Rating Email Cloaking GeSHi Load Module Positions MOS Pagination 1.9 Baukasten Die Module bestimmen den Inhalt der Objekte auf der Seite Content-Mambots beeinflussen den Inhalt der Objekte auf der Seite Das Template bestimmt die Positionen der Objekte auf der HTML-Seite Das Stylesheet bestimmt das Aussehen der HTML-Objekte auf der Seite • 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 daneben:tausende weiterer Modules und Mambots
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
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.
Kapitel 2 Joomla erweitern • Erweiterungen • Module • Komponenten • Mambots • Die Joomla API • Rules
2.1 Erweiterungen Joomla sieht drei Arten vor, Erweiterungen zu realisieren • Komponenten • Module • Mambots / Plugins
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.
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
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 <?php defined('_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"; } ?>
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
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 <?php 2 defined( '_VALID_MOS' ) or die( 'Direct Access to this 3 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 ?>
2.1.4 Installation • später
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/
Kapitel 3 Entwickeln • Agile Methode • Rules • Die Projekte
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.
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.
3.2 Rules • Coding Style • Documentation Rules • Architectural rules
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
3.2.2 Documentation • www.phpdoc.org
3.2.3 Architectur • MVC: Model, View, Controller (see: Joomla! (Addison-Wesley) 7.1.2)
3.2.4 Security • http://www.joomla.de/content/view/215/17/
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
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