Role-Manager und Organizer

bessere Rechteverwaltung mit dem Role Manager

Der WordPress Role-Manager von Owen Winkler ist in meinen Augen eines der besten Plugins die man im Netz finden kann. Bei Multi-User Weblogs, oder um WordPress als Redaktionssystem für viele Benutzer einzurichten ist es unverzichtbar.
Nicht nur dass man erst mit dem Role-Manager wirklich detailliert festlegen kann, was ein Benutzer darf und was nicht: Man kann neue “Berechtigungen” erstellen, und auch andere Plugins können sich in die Hooks des Role-Managers “einklinken”. Das gibt dem Admin die Möglichkeit genau festzulegen welcher Benutzer die Funktionen eines Plugins auch nutzen darf und wer eben nicht.

andere Plugins mit Berechtigungen: Organizer

backend-screenshot of imthi's organizer Verzeichnisansicht

Ein Paradebeispiel ist zum Beispiel der Organizer von Imthi Rafiq. Der in meinen Augen beste Upload-Manager für WordPress gibt einem eine ganze Reihe von Möglichkeiten Dateien zu verwalten, hochzuladen, zu kopieren, umzubenennen, Verzeichnisse zu durchstöbern, etc.
Als Besonderheit, lassen sich die einzelnen Funktionen eben auch im Role-Manager den verschiedenen Profilen zuweisen bzw. verbieten. Vielseitig lassen sich auch die Einstellungen einzelner Benutzer vorgeben: so kann der Admin zum Beispiel die maximale Dateigröße für Uplaods für jeden Nutzer individuell festlegen. Wer sein Wordpress-Upload-Verzeichnis zB. auf “/” statt auf “/bilder/uploads” festlegt, gibt den Benutzern einen (wenn auch in Grenzen) brauchbaren Ersatz für einen echten FTP-Benutzer zur Hand. Die Einstellung “/” für Uploads bewirkt, dass ein Benutzer des Organizers auf alle Verzeichnisse zugreifen kann. Also Vorsicht mit dieser Einstellung, das ist wirklich nur sinnvoll, wenn die Benutzer wissen was sie tun (man könnte theoretisch Themes löschen, die Datenbank-Zugangsdaten auslesen).
Genau da kommt aber wieder der Role-Manager ins Spiel, der gewisse Aufgaben verbieten kann. Alternativ lässt sich im Organizer auch für jeden Benutzer sein “eigenes Unterverzeichnis” vergeben. Das verhindert zum einen dass Benutzer in anderen Verzeichnissen Schaden anrichten können. Desweiteren ist das super praktisch um Ordnung zu wahren. Man stelle sich vor 20 Benutzer könnten auf die Daten anderer Nutzer zugreifen, bearbeiten, etc. Überdies erstellt das Plugin die Benutzer-Unterordner selbst, automatisch also. Man braucht sich um nichts zu kümmern und kann sogar festlegen wie groß Verzeichnisse (individeuell für jeden Benutzer) maximal werden dürfen.

In meinen Augen viel sinniger als das WordPress default-Verhalten, welches entweder alle Uploads in ein einziges Verzeichnis packt beziehungsweise sie höchstens nach Monaten und Jahren sortiert in Unterverzeichnissen ablegt. Auf Multi-User-Weblogs nimmt das nämlich gar keine Rücksicht. Alle Uploads aller Nutzer landen in dieser Ordnerstruktur, was schnell zum Chaos führen dürfte wenn es viele Uplaods gibt.

Übersetzungen

Für beide Plugins habe ich Übersetzungen angefertigt, die auch in den .zip-Dateien enthalten sind.
Da WordPress, eine detaillierte Rechteverwaltung von Haus aus nicht vorsieht, gibt es für die einzelnen Berechtigungen auch keine Übersetzten Begriffe. Man sieht also auf der Role-Manager Seite so Begriffe wie: “Manage Posts”. Im Grunde sind diese ja auch verständlich, aber auch Owen Winkler kommentiert die Art wie er die Berechtigungen angezeigt mit “this is crap”… Leider greifen hier die Übersetzungsdateien (die .mo-Dateien) nicht, denn die Bezeichnungen macht jedes Plugin wie auch Wordpress selbst. Da sie aus der Datenbank kommen und viele Funktionen im Backend auf diese Bezeichnungen zugreifen, kann man sie nicht einfach umbenennen.

Um einem Admin trotzdem verständliche oder übersetzte Bezeichnungen auch für die Capabilities, (so heißen die Berechtigungen intern bzw. auf engl.) anzuzeigen, hier meine “quick and dirty” Lösung.

Für jede Capability packt man die gewünschte Bezeichnung in eine Textdatei. Je nach installierten Plugins und verfügbaren Capabilities muss man die Textdatei erweitern. In meinem Fall sieht sie zB. so aus.
switch_themes,Design wechseln
edit_themes,Design bearbeiten
activate_plugins,Plugin aktivieren
edit_plugins,Plugin bearbeiten
edit_users,Benutzer bearbeiten
edit_files,Dateien bearbeiten
manage_options,Einstellungen ändern
moderate_comments,Kommentare moderieren
manage_categories,Kategorien verwalten
manage_links,Links verwalten
upload_files,Dateien hochladen
import,Daten importieren
unfiltered_html,ungefiltertes HTML
edit_posts,Beiträge bearbeiten
edit_others_posts,fremde Beiträge bearbeiten
edit_published_posts,veröffentlichte Beiträge bearbeiten
publish_posts,Beiträge veröffentlichen
edit_pages,statische Seiten bearbeiten
read,Beiträge lesen
Organizer,Dateibrowser
Organizer Copy,Dateien kopieren
Organizer Delete,Dateien löschen
Organizer Directory,Verzeichnisse verwalten
Organizer Option,Dateimanager Benutzeroptionen
Organizer Rename,Dateien umbenennen
Organizer Resize,Bilder vergrößern/verkleinern
Organizer Upload,Hochladen mit dem Dateibrowser

Diese Textdatei habe ich dann als cap_names.txt unter /wp-admin/ abgelegt. Die Übersetzungen kann man natürlich auch noch etwas ausführlicher und treffender ausformulieren.

Nun muss man dem Role-Manager nur noch sagen wo er die Beschreibungen findet. Man sucht in der role-manager.php in Zeile 614 die Funktion get_cap_name():
//this is crap
function get_cap_name($cap) {
return ucwords(str_replace('_', ' ', $cap));
}

und ersetzt sie einfach mit:
// this is crap too - but at least it works for me
function get_cap_name($cap) {
$cap_names = file('cap_names.txt');
foreach ($cap_names as $value) {
$parts = explode(",", $value, 2);
$capname = $parts[0];
$capnicename = $parts[1];
if ($capname == $cap) { return htmlentities($capnicename); }
}
 }

Zuletzt noch das Stylesheet des Role-Managers (in Zeile 50) anpassen:
form.cap_form, label.cap-label, form.userlevel_form {
display: block;
/*float: left;
width: 15em;
height: 2.5em;*/
margin-bottom: auto;
}

role-manager übersetzte Rechte

Damit wird die Seite zwar länger, aber man hat Platz, detailliert zu sagen wofür eine bestimmte Berechtigung da ist - und das immerhin in der Sprache, die der Admin versteht…

Fertig!

Umständlich, außerhalb jeder WordPress-Logik, und hartkodierte Bezeichnungen sind sicher reichlich döööörtieeee, aber schnell gemacht und effektiv. ;)

Schlagworte: , , , ,