Dokumentation
Hier finden Sie Dokumentation zu verschiedene Themen.
Eine External Method in Plone anlegen
Eine External Method ist in Plone genau so ansprechbar wie ein Script (Python), bietet aber die volle Power von Python. Sie besteht aus 2 Teilen, einem Python-Skript im Dateisystem und einem Wrapper-Objekt in der Datenbank. Nachfolgend wird erleutert wie man beides in einem eigenen Package verwendet.
URL-Parameter in Zope
Oft steht man vor der Aufgabe, Parameter aus einem URL zu extrahieren oder hinzuzufügen. In Zope existieren dafür die Methoden url_query und make_query, welche im Modul ZTUtils definiert sind.
Plone: Auslesen aller Felder eines Dexterity Objektes.
Manchmal möchte man in einer Plone View über alle Felder eines Dexterity Objektes Interieren. Dazu ist es nötig, eine Liste aller Felder zu haben. Diese kurze Anleitung zeigt, wie man diese Felder bekommt.
Plone: popup für login deaktivieren
In Plone werden kleine Dialoge oft als kleines inline popup angezeigt. Das ist auch ganz praktisch, da hierfür nicht eine komplette Seite geladen werden muss. Aber beim Login möchte man hier oft lieber darauf verzichten.
Plone: Configlet für plone_control_panel registrieren via GenericSetup
Konfigurationsmöglichkeiten in Plone werden meist als Configlet's im plone_control_panel verfügbar gemacht. Dieser Artikel zeigt wie ein Configlet via GenericSetup registriert werden kann.
Plone: unicode Umwandlungen
Unicode Probleme sind ein sehr unbeliebetes Thema, hier ein paar Tipps zum Umgang mit diesen.
VCS (Versionskontrolle)
Infos zu Versionskontrollsystemen wie Mercurial, Baazar, Git oder SVN...
Plone: GenericSetup: ImportStep in richtiger Reihenfolge ausführen
Man hat bei GenericSetup keinen Einfluss darauf, in welcher Reihenfolge ImportSteps abgearbeitet werden, z.B. kann es sein, dass ein ImportStep vor der Initialisierung des TypesTool's ausgeführt wird. Dies kann man jedoch durch die depends-Anweisung von GenericSetup lösen.
python-profiler für python2.4 unter Debian Squeeze
Da man für manche Pakete wie z.B. Plone 3 noch python2.4 benötigt, sei hier kurz erklärt wie man python-profile, welches zum testen benötigt wird installiert.
AmbiguityError: name '__ac_name' in DocTests
Dieser Fehler tritt z.B. auf, wenn man versucht sich mit browser.getControl(name='__ac_name').value = portal_owner in einem BrowserTest anzumelden und es das Login-Formular 2 mal auf der Seite gibt.
Plone: Viewlet mittels Unittesting testen
Um ein Viewlet in einem Unittest zu testen, muss das Viewlet während des Testvorganges selbst erstellt werden. Diese kurze Anleitung zeigt, wie dies zu bewerkstelligen ist.
Mercurial [auth]: Automatisch bei verschiedenen Repository-Servern Authentifizieren
Damit man beim arbeiten mit verschiedenen Mersurial Repositories nicht permanent seien Zugangsdaten eingeben muss, kann man die gängigen Server in seiner .hgrc konfigurieren.
Plone: Initiale Objekte erzeugen mit constructContent
Die Methode container.invokeFactory() berücksichtigt die Regeln in portal_types, ob ein Objekt in diesem Kontext angelegt werden darf oder nicht. Mit portal_types.constructContent() kann diese Prüfung umgehen.
could not load package ZODB: No module named proxy
Wenn dieser Fehler beim starten des ZEOServers auftritt, liegt es meistens daran, dass man in seinem Pythonpath zope-packages ungewollt (z.B. über Abhängigkeiten) installiert hat.
Plone: local utilities erzeugen & verwenden
Local utilities können Daten persistent halten und können daher auch als zentraler Ort für z.B. Status Flags verwendet werden.
Plone: Archetypes: Auswählen eines Standardartikels deaktivieren
Wenn man einen Ordnerartigen (Folderish) ContentType erzeugt, so kann der Nutzer enthaltene Objekte als Standardartikel setzen. Da dies nicht immer gewünscht ist, kann man dieses Verhalten, durch überschreiben der Methode canSetDefaultPage in seinem Model regeln.
Dokumentation
Hier finden Sie Dokumentation zu verschiedene Themen.
Pyramid: CSRF-Protection mit Deform
Pyramid bietet mit session.get_csrf_token() eine Methode an, die einen Token für die aktuelle Session erzeugt. Diese kann in einem verstecktem Formularfeld mit übergeben werden, um es später daraufhin zu überprüfen und so eine CSRF-Protection zu realisieren.
Solved: IPMI interface unsuable due to vanished gateway MAC
A newer Supermicro IPMI BMCs that is temporarily without a network connection to the gateway, e.g. due to a shut/noshut of a CISCO interface port on the network path, looses its ARP information (namely the MAC of the gateway) and does not even try to recover from this state. This is due to the default "LAN interface" setting of "failover" and is cured by setting to "dedicate". This finding holds only for dedicated IPMI-Cards. Cards that share with the OS Interfaces have similiar problems that are discussed elsewhere [1].
Hinzufügen und löschen von Referenzen
Events beim hinzufügen und entfernen von Referenzen.
Plone: Portlets in Diazo Regel filtern
Mit Diazo nur bestimmte Portlets ins Theme übernehmen. Hierfür kann man die erweiterten Möglichkeiten von Bedingungen in XPath und CSS3 nutzen.
ZODB: aktuelle Connection ermitteln und synchronisieren
In manchen Fällen, hat man langlaufende Prozesse, die Änderungen der ZODB mitbekommen sollen. Dies geschieht normaler Weise beim Begin einer Transaction.
Plone: advanced Detail-View für Archetypes ContentType
Archetypes erlaubt es einen kompletten ContentType in einem Schema zu definieren. Hieraus werden Edit-Form und Base-View erzeugt. Nachfolgend wird eine Zope Browser View für einen ContentType erzeugt, die analog zu den Tabs in der Edit-Form die Feldinhalte nach Schemata-Tabs darstellt.
Plone: Makros in Zope Page Templates
Um Doppelungen von Template-Code zu vermeiden, verwendet man in den Templates von Plone oft Makros. Nachfolgend wird erläuter wie man einen Code-Schnipsel als Makro definiert und Ihn mehrfach verwendet.
Diazo: per xPath ein voran stehendes Element auswählen
Um z.B. das Element <h5 class="hiddenStructure">Sektionen</h5> ins Theme zu übertragen, welches sich genau vor dem Element <ul id="portal-globalnav"> befindet, kann folgende Diazo-Anweisung verwendet werden.
Plone: ComponentLookupError while using cmf.ManagePortal in zcml
In Plone 4.1 sometimes you get the following Error: zope.configuration.config.ConfigurationExecutionError: <class 'zope.component.interfaces.ComponentLookupError'>: (<InterfaceClass zope.security.interfaces.IPermission>, 'cmf.ManagePortal')
Mercurial VCS: Einführung
Die wichtigsten Grundlagen für die Verwendung von Mercurial als dezentrales VCS.
Dropbox unter Debian installieren
Mit Dropbox kann man sehr bequem Daten auf einer Online-Festplatte ablegen und diese auch anderen zugänglich machen. Bilder und Musik, können zudem über einen Webzugang direkt genossen werden. Die von Dropbox angebotenen Ubuntu-Pakete laufen unter Debian aber nicht, ohne Probleme mit den Abhängigkeiten zu verursachen. Es ist aber leicht möglich sich selbst ein Debian Paket zu erstellen.
Openoffice: ganzseitige Hintergrundgrafik verwenden
In Openoffice ist es etwas umständlich ein Bild als ganzseitigen Hintergrund zu verwenden. Hier ein paar Tipps wie es trotzdem zu bewerkstelligen ist.
Plone: Portal Root Object ermitteln
Das Root-Objekt von Plone wird recht häufig benötigt, kann man hierüber doch einfach auf viele Tools und Inhalte zugreifen. Dieser Artikel beschreibt wie man in unterschiedlichen Situationen an das Plone-Root-Objekt kommt.
Debian Infiniband HOWTO
The infiniband technology is featured by open source components and drivers. Unfortunately the well known OFED a software stack from the OpenFabrics Alliance focuses on RPM based distributions. This howto shows a way to create a working infiniband setup with IP-over-Infiniband and iSCSI-over-Infiniband.
z3c.form groups (Felder Gruppieren)
Mit Hilfe von z3c.form groups können Sie Formularfelder zu logischen Einheiten zusammen fassen und als fieldset darstellen.
Roundcube per FastCGI mit Nginx unter Debian
Erichtung des Webmailers Roundcube, zusammen mit dem Webserver Nginx und FastCGI auf einem Debian System.
Plone mit authentifiziertem WGet auslesen
Hier wird erklärt wie man Plone mit wget auslesen kann. Wesentlich ist hierbei die Authentifizierung welche über cookies laufen kann.
Plone 3 Themes
Eine kleine Übersicht über die funktionierenden Plone 3 Themes. Stand: 31.01.2010.
Howto install SCST over Infiniband with SRP on Debian Sqeeze
Here you may learn about SCST over infinband, its installation and configuration. How to compile the modules for scst, and the SRP-Target ib_srpt. How to configure SCST with scstadmin. How to configure the initiator side with ib_srp and multipathing.
Zope2 + CMF mit buildout installieren
Eine kurze Anleitung wie man Zope2, CMF per buildout installieren kann.
Optimierung der Konfiguration von Nginx für Zope / Plone
Sinnvolle Timeouts, Aktivierung der Komprimierung (ZIP), maximale Dateigröße für Uploads...
Inhalte in Plone anlegen oder manipulieren mit einem Python-Skript
Um schnell mal Inhalte in Plone anzulegen oder zu manipulieren, kann man sich eines Script (Python) im Zope Management Interface (ZMI) bedienen.
APT-Pinning
Debian bietet mit APT-Pinning die Möglichkeit verschiedene Paketquellen aus z.B. Testing & Unstable mit unterschiedlichen Prioritäten zu versehen.
Filezilla als FTP-Client für Zope verwenden
Ein FTP-Nutzer darf sich an einem Zope-Server nur einmal zur gleichen Zeit anmelden. Filezilla baut standardmäßig aber mehrere Verbindungen auf um die Dateien zu übertragen, dies führt dann zu einem Fehler beim Übertragen des Warteschlangeninhalts. Nachfolgend wird beschrieben, wie man Filezilla so konfiguriert, dass es mit Zope zusammen arbeitet.
Plone: Rechte eines Benutzers auf ein Objekt prüfen
Das MembershipTool von Plone stellt die Funktion checkPermission zur Verfügung die auch im globalen Namensraum verfügbar ist. Mit dieser kann man prüfen ob ein User eine Permission auf ein Objekt hat oder nicht.
Thunderbird: Kopfzeilen beim ausdrucken von E-Mails verringern
Beim drucken von E-Mails werden oft alle Kopfzeilen mit ausgedruckt, was in einigen Zeilen über dem eigentlichen Inhalt resultiert. Dies läßt sich aber recht leicht umstellen so, dass nur noch die wichtigen Informationen wie Betreff, Absender, Datum und Empfänger mit gedruckt werden.
z3c.form Tutorial
Flexible Formulare erzeugen mit Hilfe des Paketes z3c.form.
Einleitung zu z3c.form
Ein kurzer Überblick über z3c.form und Hinweise zu Informationsquellen.
Felder sortieren mit archetypes.schemaextender
Ein kurze Anleitung, wie man mit dem archetypes.schemaextender Felder innerhalb eines schematas sortieren kann.
Plone Standard HTML Snippets
Für das Theming mit Deliverance/XDV macht es Sinn Web-Designern ohne Plone-Erfahrung die wichtigsten HTML-Snippets zur Verfügung zu stellen. Denn nur so kann ein optimaler Workflow erreicht werden.
Ein mit PloneFormGen erstelltes Formular in TinyMCE & co verlinken
In Editoren wie dem TinyMCE, können oft nicht-Standard Inhalte nicht beim hinzufügen von Links usw. ausgewählt werden.
Plone: per GenericSetup (GS) Abhängigkeiten (dependencies) definieren
Durch dependencies können, benötigte Packages bei der Installation über den portal_quickinstaller gleich automatisch mit installiert werden.
Zope/Plone: globlal utilities erzeugen
Mit Zope Global Utilities kann man Methoden, die man an verschiedenen Stellen im Portal benötigt zur zentral Verfügung stellen.
Kollektionen und Bildverhalten in Plone mittels ATContentTypes Tool konfigurieren
Im ATContentTypes Tool von Plone, können sowohl die Einstellungen für Kolletionen als auch die Einstellungen für die Skalierung von Bildern vorgenommen werden. Nachfolgend zeige ich wie man die Einstellungen per Generic Setup bestimmen kann.
Plone: aktuellen Benutzer ermitteln
Den angemeldeten Benutzer ermitteln und Informationen und Einstellungen des Benutzers auslesen und ändern.
Suchen von Inhalten im portal_catalog von Plone
Ein paar Beispiele wie man im portal_catalog Dinge suchen kann...
Plone Referenzen exportieren/importieren
Da beim umbenennen/verschieben vom Plone Root die Referenzen verloren gehen, sollte man diese vorher exportieren und danach wieder herstellen.
Ausbreitung der radioaktiven Wolken aus Japan
NOAA HYSPLIT Modellrechnungen für die Bewegung der radioaktiven Wolken ausgehend vom Fukushima AKW in Japan
Zope Schema Fields
Darstellung der Zuordnungen von Zope Schema Fields und Widgets
Autovervollständigung in der Standard Python-Shell
Autovervollständigung und persistente History in der Standard Python-Shell aktivieren.
Das Plone 4 Benutzerhandbuch
Das Plone 4 Benutzerhandbuch enthält eine Dokumentation des Content-Management-Systems Plone in der Version 4. Es richtet sich an Benutzer, die als Autoren und Redakteure mit Plone arbeiten sowie an Administratoren, die eine Plone-Website konfigurieren und administrieren.
Plone: Nutzer automatisch anmelden
Nach einem Signup, kann es sinnvoll sein den Nutzer mit seinen gerade eingegebenen Daten sofort anzumelden.
Python Package bauen und auf PyPi veröffentlichen
Ein eigenes Python Package erzeugen und es auf PyPi veröffentlichen ist eigentlich recht einfach.
Bazaar als VCS verwenden
Bazaar ist ein dezentrales Versions Verwaltungs System (VCS) und ist daher sehr flexibel einsetzbar.
Erste Schritte in Bazaar
Eine kleine Einführung in die Verwendung von Bazaar
Plone: Archetypes Schemata und Fields
In Plone sind die einzelnen Archetypes Felder in einzelne Schemata unterteilt. Man kann sich leicht eigene im Schema definieren und ihnen Felder zuweisen. Auch ist es möglich vorhandene Standardfelder in andere Schemata zu verschieben.
Zope Events selbst auslösen
Zope Events ermöglichen es auf bestimmte Aktionen zu reagieren. Hin und wieder möchte man selbst ein Event für ein Objekt auslösen...
Exim - Spamfiltereinstellungen Testen
Spambehandlung von Exim mit einer selbst erzeugten Spam E-Mail testen.
"Dynamic MMap ran out of room bei APT," Meldung beheben.
bei apt-get update kommt es manchmal zu einer Fehlermeldung. Diese lässt sich durch eine Änderung in der Konfiguration von APT beheben.
Tipps und Tricks zum E-Mail System (Exim / Dovecot)
Zope: ZODB Demo Storage einrichten
Mit einem ZODB Demo Storage kann eine Temporäre ZODB geschaffen werden. Dies ist z.B. für Test und Demo Systeme nützlich, in denen man die Daten nach einer gewissen Zeit verwerfen möchte.
Manager werden im zope debug Modus
Im Zope Debug Modus, ist man Standardmäßig kein Manager, was hin und wieder aber benötigt wird.
Python Packages releasen mit zest.releaser
Releasemanagement mit zest.releaser ist sehr einfach und komfortabel. Unterstützt werden eine Reihe von VC-Systemen wie z.B. SVN, Mercurial und Bazaar. Auf einfache Art und Weise ist es so möglich seine Packages im PyPi (Python Package Index) zu veröffentlichen.
Dokumentation
Dokumentationen, How-Tos, Hilfen
docs
Dokumentation zu vielen Themen rund um Open Source Software, Linux, Exim, Zope & Plone, Bacula, Nagios uvm...
CDB Datenbank-Dateien mit python-cdb
Anlegen und verwenden von CDB-Datenbank-Dateien mit python-cdb.
DataGridField
Methoden eines DataGridFields, Schema-Beispiel, ...
Debian unter KVM mit virt-install installieren
Remote-Installation eines Debian Lenny mit virt-install und virt-manager von einem iso-image.
Doppelte Log Einträge im Python logging Modul
Bei einem log Befehl wird der Text mehrfach dargestellt.
Eigene ContentTypes für LinguaPlone aufbereiten
Mit LinguaPlone lassen sich beliebige Inhalte in mehrere Sprechen übersetzen. Die Unterstützung ist per Default auch für die eigenen CT's aktiviert. Jedoch gibt es ein paar Stellen, auf die man besonders achten muss.
howto change and export colors of directory listings in debian
Colored directory listong in the console are very helpful to get a overview of different file types. But the standard coloring scheme does not work very well with e.g. a yelloish console background. Here you find a solution how to change the colors of the different filetypes easily and also how to export these colors to other servers.
.htaccess
Apache Zugriffssteuerung mittels .htaccess-Dateien
ID-Manipulation in Plone
Wie kann ich bei gesetztem _at_rename_after_creation Einfluss auf den ID String nehmen?
Nginx für URLRewriting & Loadbalancing vor Zope
Der schlanke Webserver Nginx dient uns zum Umschreiben der URL's auf die Zope Struktur und für eine einfache Lastverteilung auf die Zopeclients im Backend.
Zope: ZEO-Client/Server mit Buildout einrichten
Ein Plone3 Buildout erstellen und als ZEO-Client/Server konfigurieren.
Zope: Bei einem ConflictError/POSKeyError das betroffende Objekt ermitteln
Wenn ein ZPublisher.Conflict ConflictError oder POSKeyError auftritt, können wir wie folgt mittels des debug Modus, das betreffende Objekt anhand der angegebenen oid ermitteln.
Zope Eventhandler in Plone für Archetypes Objekte verwenden
Zope 3 Events sind eine feine Sache, aber welche der vielen zur Verfügung stehenden Eventhandler, benutzt man am besten um auf Änderungen an Archetypes Objekten zu reagieren?
Zope: GenericSetup und skin layer
Skin layer in Plone mit Hilfe von GenericSetup für alle Skins einfügen.
Zope: Plone context (portal) in einem local utility ermitteln
Wenn man in einem local utility auf Plone Komponenten wie z.B. den portal_catalog zugreifen möchte braucht man einen Bezug (context) zum Portal.
Zope: Plone Ordner als ZODB/ZEO Mount Point
Einen ATFolder innerhalb von Plone als ZODB Mount Point anlegen...
Dokumentation - Übersicht
Dokumentation zu vielen Themen rund um Open Source Software, Linux, Exim, Zope & Plone, Bacula, Nagios uvm...
Linux
Tipps und Tricks zum Betriebssystem Linux
Zope / Plone
Tipps und Tricks zu Zope/Plone...
Python
Tipps und Tricks zur Programmiersprache Python
Kundendokumentation
Dokumentation für unsere Kunden
[Errno 13] Permission denied: '/root/.python-eggs'
Wenn man als root eine Instanz startet, kommt durch manche Pakete eine fehlermeldung: Can't extract file(s) to egg cache The following error occurred while trying to extract file(s) to the Python egg cache: [Errno 13] Permission denied: '/root/.python-eggs' The Python egg cache directory is currently set to: /root/.python-eggs
Plone: Freigabe-Reiter nur für Manager, Reviewer und Owner
Im CMS Plone wird der Freigabe-Reiter jedem Nutzer angezeigt, der das Recht zum bearbeiten des Objektes hat. In manchen Fällen möchte man aber für bestimmte Nutzergruppen, diese Funktion ausblenden, um das UI übersichtlicher zu gestalten.
Plone: Darstellung nur für Manager & Reviewer änderbar
Im CMS Plone ist die Darstellung z.B. eines Ordners oder einer Kollektion, für jeden änderbar, der das Objekt bearbeiten darf. Dies ist in manchen Fällen aber nicht erwünscht und kann wie Folgt geändert werden.
Ausbreitung der radioaktiven Wolken von Japan, Hinweise
Hier finden sie wichtige Hinweise zu dieser Seite und der Interpretation der dargestellten Diagramme.
Plone configlet mit RichText-Feld
In Plone configlets wird Standardmäßig formlib zur Formularerzeugung verwendet. Dieser Artikel beschreibt die Verwendung von einem RichTextWidget (WYSIWYGWidget) in einem configlet.
Lokalisierung
Wie nutze ich die Zope-Bordmittel um bspw. ein Datum zu lokalisieren
Zope - BrowserViews
Die mit Zope3 eingeführten und mittels Five auch in Zope2 verfügbaren BrowserViews finden sich heute in vielen Zope Anwendungen wieder. Im folgenden wird der grundlegende Aufbau und die Registrierung Beispielhaft erläutert. Weiterhin wird das Überschreiben von __init__- und __call__-Methoden erklärt.
Plone acquireLocalRoles deaktivieren/aktivieren
In Plone ist es möglich die Vererbung von lokalen Rollen, mittels acquireLocalRoles für jede Ebene zu deaktivieren oder sie zu aktivieren.
Zope2: Marker-Interface für die Verwendung im ZMI aktivieren
Interfaces werden in Zope oft zum markieren von Objekten verwendet, um bestimmte Funktionen zu aktivieren. Damit ein solches Marker-Interface auch im ZMI unter manage_interfaces erscheint muss es irgendeine Art bekannt gemacht werden.
Bedingte ZCML-Anweisungen (zcml:condition)
Mittels zcml:condition kann die Ausführung von zcml-Anweisung in Zope gesteuert werden.
Javascript Dateien in Plone per Genericsetup registrieren
In Plone werden Javascript Dateien einer speziellen Registry 'portal_javascripts' registriert...
E-Mail-Kontenverwaltung
Wie kann ich bestehende E-Mail-Konten ändern, löschen oder neue Konten anlegen?
collective.prettyphoto für Plone
prettyPhoto ist eine auf jQuery basierende Lightbox. Unterstützt werden neben Bildern auch Videos (YouTube und Vimeo als Link, Quicktime), Flash und iFrames.
Zope: Annotations zum speichern von Daten an Objekten
Annotations sind ein gutes Mittel um Komplexe Datenstrukturen an Objekten zu speichern, von denen das Objekt selbst keine Kenntnis haben muss.
Dynamisches Anpassen eines Widgets in z3c.form
Widgets haben statische Attribute, wie z.B. den Title. Es ist möglich, diese Attribute über Adapter zu dynamisch verändern.
Plone: Alternative zur Proxy Role in Script-Python
In Zope3-Views gibt es keine Proxy Role die man dafür verwenden kann die Permissen zu übergehen. Wenn man jetzt aber z.B. ein Objekt möchte, dann benötigt man an dieser Stelle eventuell ein paar Tricks.
PIL.Image IOError: decoder jpeg not available
Bei einem Buildout kommt manchmal die obige Fehlermeldung. Sie deutet darauf hin, dass beim Compilieren von PIL die libjpeg nicht verfügbar war.
Python: erster Tag des Vormonats
Ein kleines Beispiel, wie man mit Python den ersten Tag des vorherigen Monats berechnen kann.
Einrichtung und Verwendung der E-Mail-Dienste
Verwendung des Webmailers, Einrichtung von E-Mail-Programmen wie Mozilla Thunderbird und Outlock Express und Verwaltung von E-Mail-Konten.
Zope / Plone: logrotate + cronjob in buildout konfigurieren
Um die Logdateien eines Plone Buildouts rotieren zu lassen, kann man wie unter Linux üblich logrotate verwenden. Dies lässt sich auch bequem über buildout konfigurieren.
rdiff-backup Kurzanleitung
Sichern und wiederherstellen von Daten mittels rdiff-backup...
Archetypes Schema Felder sortieren
Die Felder eines Archetypes schemas per moveField sortieren
Nginx: url's mit oder ohne www erzwingen
Mit dem schlanken Webserver Nginx kann man wie folgt, einen "permantent redirect" aller URL's mit "www" auf URL's ohne "www" oder umgekehrt erzeugen.
Buildout Macros
Ab der Version 1.4 von zc.buildout, ist es möglich Macros von Sektionen zu verwenden. Hiermit können auf einfache Weise Sektionen geklont und nur die nötigen Werte angepasst werden.
CA-Chain im Webserver Nginx einbauen
Bei einigen Zertifikaten ist es notwendig eine CA-Chain zusammen mit dem Zertifikat anzugeben. Beim Apache Webserver geschieht dies über den Parameter SSLCACertificateFile, den es für den Nginx aber so nicht gibt.
Optionale Abhängigkeiten in Python Packages
Über die "install_requires" in der "setup.py" können Abhängigkeiten zu anderen Python-Packages definiert werden, diese werden dann automatisch mit installiert. Wenn Packages aber nur optional verwendet werden sollen, definiert man sie als "extras_require" und überlässt es dem Anwender diese mit zu installieren.
PloneformGen: sender aus replyto auslesen und verwenden
Per default wird bei PloneFormGen die Absenderadresse bei Antwort-an in die E-Mail geschrieben und für Von (Mail-from) die E-Mail-adresse des Portals. Dieses Verhalten lässt sich recht leicht, über eine Expression in den Overrides von dem Mail-Tool anpassen.
Plone: globale Variablen und Methoden
In Plone sind viele globale Variablen verfügbar. Hier sind einige davon aufgelistet.
Plone BrowserLayer
Da per zcml gegistrierte BrowserViews und Viewlets beim Start von Zope ausgeführt werden, sind diese Elemente sofort aktiv, auch wenn in einer Plone Site das entsprechende Produkt noch nicht installiert wurde. Mit Hilfe von BrowserLayern läßt sich dies steuern.
Plone - Icons in der Navigation deaktivieren
Möchte man die Icons in der Navigation ausblenden gibt es seit Plone 3 dafür 2 Wege, einmal über einen Parameter in den Einstellungen zum Aussehen des Portals und den Weg über CSS. Der Weg über CSS Angaben ist flexibler und wird hier für Plone 2.5, Plone 3 und Plone 4 erläutert.
Datetime, Zeitzonen und Sommer/Winterzeit
Die Berechnung von Zeitzonen ist etwas trickreich, vor allem wenn man Sommer und Winterzeit auch berücksichtigt.
Plone: Eventhandler spezifisch registrieren
Um z.B. nicht auf jedes IObjectEditedEvent event zu reagieren, sondern nur für eine bestimmte Art von Objekten, kann ein Event-Subscriber an 2 Interfaces gebunden werden.
Plone: Zope3 Viewlets
Seit Plone3 finden Zope3-Viewlets immer häufiger Verwendung in Plone. Im folgenden wird gezeigt, wie ein eigenes Viewlet erstellt und dieses an die gewünschte Stelle in Plone eingebaut werden kann.
Plone: Pfadabhängige Katalogabfragen
Wenn man nur Elemente innerhalb eines bestimmten Pfades von Plone finden möchte, so kann man diesen bei der Query mit angeben.
Plone: Batching von großen Listen
Wenn man große Ergebnismengen bei Suchen hat oder viele Objekte in einer Ordnerauflistung, so ist es sinnvoll diese nicht alle auf einer Seite anzuzeigen. Mit ein paar Handgriffen kann man die Inhalte in Batches unterteilen und auf mehreren Seiten anzeigen lassen.
Ein Objekt über seine UID finden
Wie kann ich in Plone ein Objekt über seine UID finden und auf dieses zugreifen?
Plone: Profile, Passwort und Dashbaord nur für Manager Editierbar
Standard Plone-Nutzern das bearbeiten des Profiles, Passwortes und des Dashboards verbieten.
Plone Content Type Registry: Mapping für FTP/WebDav & co einstellen
Wenn man per FTP oder WebDAV Dateien in Plone kopiert, so findet ein automatisches Mapping statt. Das Mapping entscheidet wie die Datei in Plone dargestellt wird. Dies kann z.B. als Datei (ATFile), Bild (ATImage) oder aber als Seite (ATDocument) geschehen.
PloneFormGen: Bestätigung an Formularabsender schicken
PloneFormGen schickt normaler Weise, nur eine E-Mail an den Empfänger des Formulares. Nachfolgend wird erläutert, wie man zusätzlich eine Bestätigungsmail an den Absender schicken kann.
Javascript-/CSS-Dateien per GenericSetup in Plone registrieren
Javascript und CSS-Dateien werden in Plone per GenericSetup, in so genannten ResourceRegistries registriert. Nachfolgend wird erläutert, wie man diese registriert und welche Möglichkeiten es gibt, Einfluss auf die Position in den Registries zu nehmen und wie man die Parameter (Merging allowed, Caching allowed, Inline rendering usw) einsetzen kann.
Plone: Archetypes DisplayList
In Archetypes werden häufig Objekte vom Typ DisplayList verwendet, um Daten für Auswahllisten bereitzustellen. Nachfolgend finden Sie ein paar Tipps zur Verwendung dieser Objekte.
Plone: eigenes tmp-Verzeichnis in einem Plone Buildout
Mit der Umgebungsvariable TMPDIR, kann für Zope ein eigenes tmp-Verzeichnis definiert werden. Dies ist immer dann praktisch, wenn man die einzelnen Buildouts sauber voneinander trennen möchte. Per default nutzen alle Buildouts das zentrale tmp-Verzeichniss unter "/tmp". Unteranderem können hierbei Speicherplatzprobleme durch temporäre Dateien auftreten, wenn das tmp-Verzeichnis zu klein sein sollte.
Plone: Edit-Rahmen deaktivieren
Hin und wieder möchte man den Edit-Rahmen, der unter anderem das Bearbeiten und Hinzufügen von Inhalten ermöglicht, deaktivieren um ein völlig eigenes Layout hierfür zu gestallten.
Plone: portal_squid aus GenericSetup Registry löschen
Portal.CacheSetup setzt sich bei der Installation recht fest in Plone. Nach der Deinstallation, befinden sich manchmal in portal_setup immer noch Reste. Diese führen dann beim installieren/deinstallieren von anderen Erweiterungen zu Fehlern. Nachfolgend wird das manuelle Löschen des Registereintrages gezeigt.
Plone: (Rechte-) Rollen Management
Ermitteln und setzen von lokalen Rollen in Plone.
Plone: prüfen ob ein Archetypes Object temporär ist
Archetypes Objekte werden in Plone meist über die portal_factory angelegt und sind vor dem ersten speichern temporär. In manchen Fällen möchte man diesen Zustand berücksichtigen, daher sei im folgenden erläutert wie man den Zustand auslesen kann.
Alternative zu test() in Zope Page Templates (ZPT)
In älteren Zope Page Templates wird of eine Methode test() verwendet, mit der ein bedingter (if/else) Wert ins Template eingefügt werden kann. Diese steht aber bei neueren Views nicht mher zur Verfügung.
Plone: IndexError beim reindex vom portal_catalog durch Transforms
Wenn der Fehler "IndexError: list index out of range" beim reindizieren des portal_catalog kommt, kann es unter anderem an fehlerhaften Konfigurationen in PortalTransforms liegen.
Spezialisierung von Zope Events
Zope Events sind eine flexible Möglichkeit, auf bestimmte Ereignisse innerhalb von Zope zu reagieren. Diese werden umfangreich in Zope und Plone eingesetzt. Durch eine Spezialisierung vorhandener Zope Events, kann man Events auslösen, die die gleiche Wirkung haben wie die generellen Events, diese aber zusätzlich behandeln.

