Erfahrungsbericht
Projektstart (9. März 2008)
Gruppenbildung und Spezifikation
Nachdem wir beschlossen hatten, die Arbeit als Gruppe (A. Fischer und
G.Dymorz) durchzuführen, begannen wir zu bestimmen, was unser Extranet
alles können soll. Dazu starteten wir eine Spezifikation, was wir uns
als Extranet vorstellen. Da wir die zur Verfügung stehenden Tools nicht
kannten, wurde die Spezifikation ohne Rücksichtnahme auf das Tool
geschrieben. Wir wussten somit nicht, ob unser gewähltes CMS alles
umsetzen kann, was wir spezifiziert haben. Eventuell müssen für eine
Vervollständigung des Extranets einige Teile ausprogrammiert werden.
CMS Ermittlung an Hand der groben Definition unseres Extranets
Die drei zur Auswahl stehenden CMS Drupal, Nuxeo ECM und TWiki kannten
wir allesamt nicht, daher mussten wir zuerst eines für diese Arbeit
auswählen. Nachdem wir uns informiert hatten, entschieden wir uns für
Drupal.
Folgende Gründe sprachen für Drupal:
- Wir denken, dass Drupal unsere Anforderungen am besten abdecken kann.
- Da Drupal auf PHP Basis läuft, haben wir eine Möglichkeit dieses Projekt einfach zu hosten.
- Davon haben wir schon gehört und es interessiert uns.
Start des Prototypen
Für den Prototypen werden wir uns auf die bestehenden Möglichkeiten von
Drupal beschränken (ohne zusätzliche Programmierung), um den Aufwand
für dieses Projekt nicht unrealistisch gross werden zu lassen. Wir
haben uns entschieden selbst einmal ein Drupal aufzusetzen und zu
pflegen um auch diesen Schritt kennen zu lernen.
Installation
Download
Download der Version 6.1 von
drupal.org
Upload auf den Server
Entpacken und Heraufladen der Dateien auf den Server
Erstellen der Datenbank
DB erstellt und Benutzer mit allen Rechten auf dieser DB angelegt
Einrichten cron-Job
Shell-Script mit folgendem Inhalt angelegt:
curl --silent --compressed test.hardwired.ch/drupal/cron.php
Aufruf jeden Tag um 1:37 per cron
Ausführen des Installation-Scripts
DB Config durchgeführt
Site Config
Site name:
test.hardwired.ch
Site e-mail address:
drupal@adrian-fischer.ch
Clean URLs: Enabled
Update notifications: Yes
Manuelle Korrektur
drupal/sites/default/settings.php: $base_url = 'http://test.hardwired.ch/drupal'; // NO trailing slash!
Benutzer einrichten
- Rolle (role) "site admin" angelegt
- Alle Berechtigungen (permissions) für diese Rolle gesetzt
- Zwei Benutzer erfasst
- Diesen Benutzern die Rolle "site admin" zugewiesen
Drupal Update (20. April 2008)
Update auf Drupal Version 6.2
Spezifikationserweiterung (05. Mai 2008)
Vor dem Unterricht haben wir die Spezifikation vervollständigt und unter
DevTeam09
hoch geladen. Während dem Unterricht haben wir einige Informationen zur
Benutzerverwaltung erhalten. Weiter haben wir uns versucht schlau zu
machen, wie wir unsere Benutzerverwaltung mit Drupal umsetzen können.
Eine wirkliche Lösung haben wir noch nicht gefunden.
Prototypstart (18. Mai 2008)
Die
Drupal-Installation unter test.hardwired.ch basiert auf Drupal Version
6.2. Viele Module sind für diese Version (noch) nicht verfügbar. Wir
haben uns deshalb entschieden, auf dem Schulserver zu arbeiten. Dazu
verwenden wir zwei verschiedene Systeme:
- afische2 als Test
- gdymorz als Prototypen, den wir zeigen wollen
Für diese Aufteilung haben wir uns entschieden, um Veränderungen zuerst
am Testsystem zu probieren, ohne die Stabilität des Prototypen zu
gefährden.
Um mit unseren Tests zu beginnen, ermittelten wir zuerst einige
Erweiterungen, welche Teile von unseren Wünschen abdecken. Um dies
praktisch auszuprobieren haben wir folgende Module auf dem Testsystem
installiert.
Access Control / Zugriffe auf Testsystem
Zuerst
müssen wir ein Modul finden, welches es ermöglicht die
Benutzerverwaltung so umzusetzen wie wir uns dies vorstellen. Nach
einiger Zeit im Internet entschliessen wir uns Taxonomy-Modul zu
verwenden.
Installation und Aktivierung
- Download der Version 5.x-1.1 von drupal.org/project/tac_lite
- Upload
- Aktivierung über Administer > Site building > Modules
Konfiguration
Das Taxonomy-Modul basiert auf der Erfassung einer Kategorie: Administer > Content Management > Categories
- Name: Kunde
- Types: Page
- Hierarchy: Multiple
- Related terms: no
- Free taging: no
- Multiple select: yes
- Required: yes
Mit dieser Categorie stellen wir sicher, dass die Kunden nur auf
ihre eigenen Projekte zugreifen können. Dazu müssen wir Begriffe
(Term), in unserem Fall die Kunden, erfassen: Administer > Content
Management > Categories > Link: Add Terms
Erfassung der Rollen
Zu Testzwecken legten wir Rollen an: Administer > User management > Roles
- Kunde Muster GmbH
- Projekleiter
- Projektmitarbeiter
- Virtuelles Unternehmen
Der Administrator wird nicht als Rolle erfasst, sondern ist der siteadmin.
Jeder Benutzer kann verschiedenen Rollen zugeteilt bekommen. Diese
Rollen kombiniert ergeben die richtigen Ansichten auf die Projekte. Die
Erfassung dieser Rollen und der folgenden Benutzer ist provisorisch.
Sobald wir mehr über das Modul wissen und es weiter ausprobiert haben,
werden sich diese noch ändern, bis es stimmt.
Erfassung der Taxonomiebasierten Berechtigungen
Damit
der Zugriff auf die Einträge an Hand der Taxonomiebegriffe
eingeschränkt werden kann, müssen den Rollen diese Taxonomiebegriffe
zugeordnet werden (Role based priviliges): Administer > User
management > Access control > Access control by taxonomy Dazu
muss zuerst festgelegt werden, welche Categorie für diese Einschränkung
verwendet wird.
Erfassung der Benutzer
Damit wir unsere Einstellungen testen können, legen wir Benutzer an: Administer > User management > Users
- Gisela Dymorz (Rollen: Mitarbeiter Virtuelles Unternehmen, Projektleiter Virtuelles Unternehmen)
- Adrian Fischer (Rollen: Mitarbeiter Virtuelles Unternehmen, Projektleiter Virtuelles Unternehmen)
Erstellung einer Seite (Page)
Erstellung der Seite mit Menüeintrag und anschliessend testen ob das mit dem Zugriff wirklich funktioniert.
FCK Editor
Installation und Aktivierung
- Download der Version 5.x-2.1 von drupal.org/project/fckeditor
- Upload
- Aktivierung über Administer > Site building > Modules
- Download der FCK Komponenten www.fckeditor.net/download
CCK (Content Construction Kit)
Installation und Aktivierung
- Download der Version 5.x-1.7 von drupal.org/project/cck
- Upload
- Aktivierung aller Module über Administer > Site building > Modules
Views
Installation und Aktivierung
- Download der Version 5.x-1.6 von drupal.org/project/views
- Upload
- Aktivierung über Administer > Site building > Modules
Während dem Unterricht (19. Mai 2008)
News
Auf unserem Testsystem versuchten wir
eine Ansicht der News zu bekommen, welche nur einen Teil der
Informationen anzeigt und den Rest nicht. Dazu haben wir relativ lange
das Internet durchsucht und wurden auf
http://dornbush.net
fündig. Schlussendlich gelang es uns eine eingeschränkte Ansicht zu
erhalten und wir verstanden wie das mit den Blocks und Pages und
sämtlichen weiteren Views Einstellungen funktionierte.
Dazu mussten wir einen Content Type, eine View und Content erstellen.
Content Type
Administer > Content management > Content Types
Felder erstellen mit den entsprechenden Anzeigearten:
- Titel --> nichts machen, ist schon ok
- ShortText --> Teaser und Full (Label hidden)
- Message --> nur Full (Label hidden)
Views
Administer > Site buildings > Views
Neue View erstellen:
- Unter Page
- Provide Page View
- View Type: Teaser
- Title: News
- Use Pager
- Nodes per Page: 10
- Menu: Provide Menu
- Filters
- Node Type: is one of News
- Sort Criteria
Spezifikationsanpassungen
Wir haben versucht unsere Wunschstruktur mit Entitäten (Nodes) und dann Sichten (Views) abzubilden.
Beim
Erstellten der Views zeigten sich aber mehr und mehr Einschränkungen.
So lassen sich zum Beispiel in der Detailansicht einer View keine
Nodes, welche Verknüpfungen zu diesem gezeigten Node haben, als Liste
ausgeben. Auf Grund der gewonnenen Erkenntnisse haben wir unsere
Spezifikation komplett anpassen müssen. Unsere Vision ist unter
DevTeam09Vision zu finden. Die neue Spezifikation unter
DevTeam09.
Letzte Tests auf Testsystem (25. Mai 2008)
Wir installierten noch ein letztes Modul und probierten aus, wie sich
durch dieses Modul Einschränkungen in den Views realisieren lassen.
Installation Date-Modul
- Download der Version 5.x-1.8 von drupal.org/project/date
- Upload
- Aktivierung über Administer > Site building > Modules
Erstellung des eigentlichen Prototypes (25. Mai 2008)
Module installieren
Da wir sämtliche Module bis jetzt nur auf dem Testsystem verwendet
haben, müssen wir die Installation von den Tool, welche wir brauchen
auch auf dem eigentlichen Prototyp-System ebenfalls noch machen.
Folgende Module wurden installiert:
- Date-Module
- Views
- Taxonomy
- FCK-Editor
- CCK
Anschliessend schalten wir die Teile der Module auf enabled, welche wir
verwenden werden. Schlussendlich sind folgende Module aktiviert:
CCK:
- Content
- Date
- Fieldgroup
- Node Reference
- Text
- User Reference
Core (optional):
- Color
- Comment
- Help
- Menu
- Taxonomy
- Upload
Core (required):
- Block
- Filter
- Node
- System
- User
- Watchdog
Other:
- Date API
- Taxonomy Access Control Lite
- Update Status
Views:
Drush:
- Drush
- drush Package Manager
- drush Package Manager wget Support
Kategorien erstellen
Kategorien erstellen unter: Administer > Content Management > Categories
Für die Zugriffskontrolle:
- Name: Customers
- Description: Defines page access
- Types: News, Project, Task --> wurde nach der Content-Types Erfassung nachgeholt
- Hierarchy: Disabled
- Related terms: no
- Free taging: no
- Multiple select: yes
- Required: yes
- Weight: -1
- Terms:
- Avireal
- Intern
- Migros
- Siemens VDO
Für den Task-Status:
- Name: TaskState
- Description: Actual state
- Types: Task --> wurde nach der Content-Types Erfassung nachgeholt
- Hierarchy: Disabled
- Related terms: no
- Free taging: no
- Multiple select: no
- Required: yes
- Weight: 0
- Terms:
- Finished
- New
- Suspended
- Working
Erstellung aller Content Types
Content-Types erstellen unter: Administer > Content management > Content Types
Als Beispiel wurde hier die Einstellungen dieses Types noch detailiert aufgelistet: DevTeam09ContentTypes. Ist ein Property nicht erwähnt ist es leer oder falls etwas drin stehen muss (z.B. bei Auswahlboxen) der Standardwert.
Project
Der Typ besteht aus folgenden Feldern:
- From-To Date
- Title
- Short Description
- Taxonomy
- Description
News
Der Typ besteht aus folgenden Feldern:
- From-To Date
- Title
- Taxonomy
- Short Text
- Long Text
Task
Der Typ besteht aus folgenden Feldern:
- Title
- Taxonomy
- Body
- Due on
- Zuständige Person
- Project
Erstellung aller Views
Was nicht erwähnt ist, wurde nicht angepasst.
Einstellungen unter: Administer > Site buildings > Views
View HomeOverview
- Name: HomeOverview
- Description: Home Site for Drupal
- Page
- Provide Page View: yes
- URL: home
- View Type: Teaser List
- Title: Projects
- Use Pager: yes
- Breadcrumb trail should not include "Home": no
- Nodes per Page: 10
- Empty Text: No projects published.
- Menu
- Provide Menu: yes
- Menu Title: Home
- Filters
- Node: Type - is one of - Project
- Date: From-To Date - Date (field_fromtodate) - less than - now
- Date: From-To Date - To Date (field_fromtodate) - greater than - now
- Sort Criteria
- Date: From-To Date (field_fromtodate) - Descending
- Node: Title - Ascending
Damit diese Seite wie geplant als Start-Seite verwendet wird, wurde
unter Administer > Site configuration > Site Information die
Default front page auf home gesetzt. An derselben Stelle haben wir auch
den Namen unseres Extranets angepasst.
Views NewsOverview und NewsArchiveOverview
NewsOverview
- Name: NewsOverview
- Description: News-overview for news in the timerange from-to
- Page
- Provide Page View: yes
- URL: news
- View Type: Teaser List
- Title: News
- Use Pager: yes
- Nodes per Page: 10
- Empty Text: No news published.
- Menu
- Provide Menu: yes
- Menu Title: News
- Block
- Provide Block: yes
- View Type: Teaser List
- Title: News
- Nodes per Page: 3
- More Link: yes
- Empty Text: No news published.
- Filters
- Node: Type - is one of - News
- Date: From-To Date - Date (field_fromtodate) - less than - now
- Date: From-To Date - To Date (field_fromtodate) - greater than - now
- Sort Criteria
- Date: From-To Date (field_fromtodate) - Descending
- Node: Title - Ascending
Die NewsArchivOverview unterscheidet sich nur in folgenden Bereichen:
- Texte wurden mit archive erweitert, bzw. auf etwas angepasst
- Block wurde entfernt
- Filters
- Node: Type - is one of - News
- Date: From-To Date - To Date (field_fromtodate) - less than - now
Views ProjectsOverview und ProjectsArchiveOverview
ProjectOverview
- Name: ProjectOverview
- Description: Project-overview for projects in the timerange from-to
- Page
- Provide Page View: yes
- URL: projects
- View Type: Teaser List
- Title: Projects
- Use Pager: yes
- Nodes per Page: 10
- Empty Text: No projects published.
- Menu
- Provide Menu: yes
- Menu Title: Projects
- Filters
- Node: Type - is one of - Project
- Date: From-To Date - Date (field_fromtodate) - less than - now
- Date: From-To Date - To Date (field_fromtodate) - greater than - now
- Sort Criteria
- Date: From-To Date (field_fromtodate) - Descending
- Node: Title - Ascending
Die ProjectArchivOverview unterscheidet sich nur in folgenden Bereichen:
- Texte wurden mit archive erweitert
- Filters
- Node: Type - is one of - Project
- Date: From-To Date - To Date (field_fromtodate) - less than - now
Views TaskOverview und TaskArchiveOverview
TaskOverview
- Name: TaskOverview
- Description: Tasks-overview for tasks with state New or Working
- Page
- Provide Page View: yes
- URL: task
- View Type: Table View
- Title: Tasks
- Use Pager: yes
- Nodes per Page: 30
- Empty Text: No tasks published.
- Menu
- Provide Menu: yes
- Menu Title: News
- Block
- Provide Block: yes
- View Type: Table View
- Title: Tasks
- Nodes per Page: 15
- More Link: yes
- Empty Text: No tasks published.
- Fields
- Node: Title - Title - Normal - As Link - sortable yes - None
- User Reference: Zuständige Person (field_responsible) - Responsible - Group multiple values - Default
- Node Reference: Project (field_project) - Project- Group multiple values - Title (link)
- Taxonomy: Terms for TaskState - State - Without links
- Date: Due on (field_due_on) - Due on - Do not group multiple values - Short - sortable yes - Ascending
- Filters
- Node: Type - is one of - Task
- Taxonomy: Terms for TaskState - is one of - New / Working
- Exposes Filters
- Node Reference: Project (field_project) - Project - optional - Force single - Lock operator
- User Reference: Zuständige Person (field_responsible) - Responsible - optional - Force single - Lock operator
Die TaskArchivOverview unterscheidet sich nur in folgenden Bereichen:
- Texte wurden mit archive erweitert, bzw. auf etwas angepasst
- Block wurde entfernt
- Filters
- Node: Type - is one of - Task
- Taxonomy: Terms for TaskState - is one of - Finished / Suspended
Menü und Blocks
Menü
Damit das Menü noch eine Struktur erhält, haben wir unter Administer
> Site building > Menü die Archive unter die Liste der aktuellen
Einträge. Dazu wurde das Parent-Item der Archiv-Menü-Punkte verändert.
Blocks
Damit die Blocks am richtigen
Ort erscheinen mussten nun noch einige Einstellungen unter Administer
> Site building > Blocks.
TaskOverview:
- Region: content
- Custom visibility settings: Users cannot control whether or not they see this block.
- Show block on specific pages: Show on only the listed pages - home
Navigation und User Login:
NewsOverview:
- Region: right sidebar
- Custom visibility settings: Users cannot control whether or not they see this block.
- Show block on specific pages: Show on every page except the listed pages.
Zugriffskontrolle
Roles
Werden gemäss Spezifikation (
DevTeam09) erstellt und die Permissions vergeben.
- siteadmin (gibt es schon, muss nicht mehr festgelegt werden)
- authenticated user
- project member
- project manager
- news administrator
- all companies
- pro Firma eine Rolle
- Fiktives Unternehmen
- Avireal employee
- Migros employee
- Siemens VDO employee
Taxonomy Access
Zuweisung
der Rollen zu den Taxonomiebegriffen vornehmen über Administer >
User management > Access control > Access und Role based
priviliges.
Content
Zuletzt füllen wir noch einigen Content ab und testen ob das mit den Zugriffsrechten stimmt.
Nach einigen letzten Korrekturen schliessen wir den Prototypen ab.
Projektende (31. Mai 2008 und 1. Juni 2008)
Wir
verfolständigen die Dokumentation auf diesen Seiten und erstellen
unsere Präsentation. Nach nochmaligem Test des Prototypes und
Festlegung was wir zeigen wollen beenden wir das Projekt Drupal.
Unser kurzes Fazit ist auf der Seite DevTeam09 ganz unten angemerkt.