FAQs
View entire FAQ in full Up to Table of ContentsNo section
Wie prüft man in Zope Page Templates Benutzerrechte und Rollen?
Wie prüft man in Zope Page Templates Benutzer Rechte und Rechte Rollen?
auf Recht prüfen
<tal:check tal:condition="python: checkPermission('Add Portal Member', here)">
er darf das
</tal:check>
auf Rechte Rolle prüfen
<tal:check tal:condition="python: has_role('Member', here)">
er darf das
</tal:check>
Wie kann man die Benutzer-Registrierung im Plone deaktivieren?
Im Portal-Root unter Security folgende Änderungen vornehmen.
Für Add portal Members den Haken bei Acquire entfernen, und das Recht nur an Manager vergeben.
Bei Annonymous muss der Haken entfernt werden!
Wie kann man die Icons in der Navigation deaktivieren?
Wie kann man die Icons in Plone 2 und Plone 3 deaktivieren?
Plone 3.x.x
Ab Plone 3 kann man die Icons in Plone zwar generell abschalten, dies gilt dann aber auch für das Folderlisting.Um per CSS die Icons zu deaktivieren muss ab Plone 3.x.x etwas anders vorgegangen werden.
.navTreeItem img{
display: none;
}
Plone 2.x.x
#portlet-navigation-tree .visualIconPadding{
padding-left: 4px;
margin-left: 1px;
margin-bottom: 1px;
min-height: 1.6em;
height: auto;
line-height: 1.6em;
}
.navTreeItem a, .navTreeItem a:hover, .navTreeItem div {
background-image: none
!important;
color:#001d33;
border: 1px !important;
&dtml-borderStyle; #b3d1d1;
}
.navTreeItem a:hover{
background-color:#266ba0 !important;
color:#e1ebf3 !important;
border: 1px !important;
&dtml-borderStyle; #266ba0;
}
.navTreeCurrentItem {
background-color:#6a9fc8 !important;
color:#001d33;
border: 1px !important;
&dtml-borderStyle; #6a9fc8;
}
Wie kann man die Accessrules temporär abschalten?
Wie kann man die Accessrules temporär abschalten, wenn man sich ausgesperrt hat?
Um die Accessrules zudeaktivieren, kann man an die URL folgende Anweisung anhängen: _SUPPRESS_ACCESSRULE
Wie kann ich Zope im ZMI auf utf-8 umstellen?
in zope-root > Properties eine Stringproperty mit dem Namen "management_page_charset" hinzu fügen und value auf "utf-8" setzen.
Wie kann man Ordner per Script von der Navigation ausschließen?
Wie setzt man per Script, das Flag zum ausschließen des Ordners von der Navigation?
Für den Ordner "test" im Plone-Root geht das wie folgt:
In der Install Methode (Install.py) eines Produktes einfach folgenden Wert setzen.
Wie kann man Objekte in einem Folder ermitteln?
here.getFolderContents(contentFilter, batch=True)Funktioniert wie eine manuelle Suchabfrage über den portal_catalog.
Ist aber etwas leichter zu händeln. ;-)
Wie kann ich die Gruppen des Members ermitteln?
Um in einer Condition bestimmte Gruppen zu erfassen, kann man wie folgt die Gruppen des aktuellen Members ermitteln.
member.getGroups()
In einer Condition könnte eine Prüfung z.B. so aussehen.
python: 'Administrators' not in member.getGroups()
Wie kann ich Referenzen von und zu einem Ojekt ermitteln?
die Referenzen lassen sich wie folgt ermitteln:
alle Objekten zu denen eine Referenz besteht bekommt man mit:
self.getRefs([RELATIONSHIP])
Backreferences bekommt mann mit:
self.getBRefs([RELATIONSHIP])
alle relations bekommt man mit:
getRelationships()
weitere Infos findet man hier:
http://docs.neuroinf.de/api/at-api/public/Archetypes.Referenceable.Referenceable-class.html
Plone - Portal Root ermitteln
Wie bekomme ich eine Referenz auf das Portal Root Objekt in Plone?
Portal Root ermitteln
Portal root ist in Plone code als portal Objekt verfügbar.
In quick installer scripten install(self), ist self eine Referenz auf das Portal Root.
In unit tests, kann man mit self.portal auf das Portal root zugreifen.
Falls man keine direkte portal variable hat, kann man sich diese wie folgt holen:
from Products.CMFCore.utils import getToolByName
portal_url = getToolByName(context, "portal_url")
portal = portal_url.getPortalObject()
oder ab Plone 3 ist die offizielle Variante so:
from zope.component import getMultiAdapter
pstate = getMultiAdapter((self.context, self.request), name='plone_portal_state')
portal = pstate.portal()
Diese scheint aber langsamer zu sein als die alte Variante mit getToolByName, so das ich die folgende Variante nur empfehlen kann:
from zope.app.component.hooks import getSite
portal = getSite()
Diese hat weiterhin den Vorteil das sie ohne jeden context auskommt.
Wie kann man in Archetypes schematas ein vocabulary per methode füllen?
Im schema definieren wir das vocabulary wie folgt:
vocabulary = 'getWerteliste'
und in der Klasse unseres Content Types definieren wir die entsprechende Methode:
def getWerteliste(self):
""" ermittelt die Werteliste für das vocabulary
"""
werteListe = ['Wert 1', 'Wert 2']
return werteListe
Wie füge ich mit python einen Index im portal_catalog an?
Hin und wieder möchte man einen neuen Index zum portal_catalog hinzu fügen. Um z.B. alle Anfangsbuchstaben eines Dokumententyps für eine Suche zu benutzen.
Index per Python anlegen
Einen Index kann man wie folgt anlegen.pcat = getToolByName(self, 'portal_catalog')Hier wird ein neuen Index mit dem Namen keywordFirstLetter vom Typ FieldIndex angelegt. Diesem Index wird gleichzeitig die Methode getKeywordFirstLetter zugewiesen. Diese Methode ist in unserem Dokumententyp definiert und gibt basierend auf den Titel des Objektes, den kleingeschriebenen Anfangsbuchstaben zurück.
if 'keywordFirstLetter' not in pcat.indexes():
pcat.manage_addIndex('keywordFirstLetter','FieldIndex',extra={'indexed_attrs':'getKeywordFirstLetter'})
Damit der Index gleich aufgebaut wird, reindizieren wir ihn nach dem anlegen gleich neu.
pcat.manage_reindexIndex(['keywordFirstLetter'])
Wie kann ich den Inhalte Tab (folder_contents) bei meinem Dokumenten Typ deaktivieren?
Um den Inhalte Tab (folder_contents) für einen Dokumenten Typ zu deaktivieren, reicht es folgende definition in der Klasse des Dokumententyps zu machen.
class MyDocType (ATFolder):
"""
"""
displayContentsTab = 0
Wie komme ich in eine Instanz wenn das Password nicht funktioniert?
Wie kann ich einen neuen Admin Nutzer für eine Zope Instanz anlegen, wenn ich mich aus dem Zope ausgesperrt habe.
In aktuellen Zope Versionen kann man wie folge einen Admin-Nutzer anlegen.
bin/zopectl adduser user1 password1
oder im Fall von Builout:
bin/instance adduser user1 password1#
In älteren Zope Versionen muss man mit zpasswd.py das password neu setzen. Hierzu wechseln wir in das $INSTANCEHOME der Zope Instanz. und führen zpasswd.py wie folgt aus.
python2.4 [pfad zu zope]/bin/zpasswd.py access
Username: tempuser
Password:
Verify password:
Please choose a format from:
SHA - SHA-1 hashed password (default)
CRYPT - UNIX-style crypt password
CLEARTEXT - no protection
Encoding: SHA
Domain restrictions:
hierdurch wird eine Datei im $INSTANCEHOME der Zope Instanz angelegt. Mit diesem Nutzer können Sie sich dann anmelden und das Passwort für den Admin neu setzen oder einen weiteren Admin anlegen.