Erstellen eines Pakets
Um ein Paket zu erstellen wie vs.policy, geben Sie folgendes im Terminal ein:
$ cd src/ $ ../bin/mrbob -O vs.policy bobtemplates:plone_addon
Es können auch Pakete mit verschachtelten Namensräumen erstellt werden, z.B.:
$ ../bin/mrbob -O vs.bootstrap.tinymce bobtemplates:plone_addon
Anschließend müssen Sie die folgenden Optionen beantworten:
- Package Type?
Optionen sind
- Basic
- Dexterity
- Theme
Der Standardwert ist Basic.
- Author's name
- Hier sollte Ihr Name angegeben werden
- Author's email
- Ihre E-Mail-Adresse
- Author's github username
- Ihr Account-Name bei github
- Package description
Einzeilige Beschreibung des Pakets.
Der Standardwert ist An add-on for Plone
- Plone version [4.3.6]
- Für welche Plone-Version wird das Paket entwickelt?
Dateistruktur
Basic
Die Basic-Vorlage liefert die folgende Dateistruktur:
vs.policy/ ├── bootstrap-buildout.py ├── buildout.cfg ├── CHANGES.rst ├── CONTRIBUTORS.rst ├── docs │ ├── index.rst │ ├── LICENSE.GPL │ └── LICENSE.rst ├── MANIFEST.in ├── README.rst ├── setup.py ├── src │ └── vs │ ├── __init__.py │ └── policy │ ├── browser │ │ ├── configure.zcml │ │ ├── __init__.py │ │ ├── overrides │ │ └── static │ ├── configure.zcml │ ├── __init__.py │ ├── interfaces.py │ ├── locales │ │ ├── update.sh │ │ └── vs.policy.pot │ ├── profiles │ │ ├── default │ │ │ ├── browserlayer.xml │ │ │ ├── metadata.xml │ │ │ └── vspolicy_default.txt │ │ └── uninstall │ │ ├── browserlayer.xml │ │ └── vspolicy_uninstall.txt │ ├── setuphandlers.py │ ├── testing.py │ └── tests │ ├── __init__.py │ ├── robot │ │ └── test_example.robot │ ├── test_robot.py │ └── test_setup.py └── travis.cfg
- buildout.cfg
- Das Paket enthält eine Buildout-Konfigurationsdatei, die z.B. zum Testen verwendet werden kann.
- src/vs/policy/tests/
Das Paket kommt mit einem Test-Setup und Beispieltests zur Installation des Pakets.
Es enthält außerdem in src/vs/policy/tests/robot/test_example.robot einen Robot-Test für das Anmelden an der Plone-Site.
Schließlich enthält das Paket mit travis.cfg auch eine Konfigurationsdatei, das das Testen des Pakets mit Travis erlaubt.
- src/vs/policy/profile
Das Paket enthält ein Generic Setup-Profil, das einen Browserlayer installiert.
Für Plone 5 wird daneben noch ein uninstall-Profil installiert.
- src/vs/policy/Locales
- Das Paket registriert ein Verzeichnis für die Übersetzungsdateien.
- src/vs/policy/browser/overrides
- Das Paket registriert einen Ordner, in dem Templates etc. mit z3c.jbot überschrieben werden können.
- src/vs/policy/setuphandlers.py
Diese Datei kann verwendet werden um Code hinzuzufügen, der beim Installieren eines Pakets ausgeführt werden soll.
Für Plone 5 gibt es innerhalb dieser Datei auch eine Methode, die beim Deinstallieren aufgerufen wird.
- setup.py
In install_requires werden zusätzlich die folgenden zwei Pakete angegeben:
- plone.app.theming
- plone.app.themingplugins
- src/vs/theme/configure.zcml
Hier wird der Ordner mit dem Theme konfiguriert:
<configure … xmlns:plone="http://namespaces.plone.org/plone" …> <plone:static directory="theme" type="theme" name="vs.theme" />
- src/vs/theme/profiles/default/metadata.xml
Hier wird als Abhängigkeit plone.app.theming angegeben:
<dependency>profile-plone.app.theming:default</dependency>
Dexterity
- setup.py
- In install_requires wird zusätzlich plone.app.dexterit angegeben
- src/vs/task/interfaces.py
Für den Dexterity-Artikeltyp wird ein Interface angegeben, in unserem Fall:
from vs.task import _ from zope import schema from zope.interface import Interface class ITask(Interface): title = schema.TextLine( title=_(u"Title"), required=True, ) description = schema.Text( title=_(u"Description"), required=False, )
- src/vs/task/profiles/default/metadata.xml
Hier wird als Abhängigkeit plone.app.dexterity angegeben:
<dependency>profile-plone.app.dexterity:default</dependency>