Button Sichtbarkeit ändern

Hallo Zusammen,

ich würde gerne für eine bestimmte Rolle die ich angelegt habe, einige Buttons (z.B Create a new Group)unsichtbar machen. Ist das möglich? Ich weis, dass man mit dem folgendem Code den Zugriff auf die Seite verhindern kann.  

groups/add/{$self_guid}' => array('rule' => 'deny')

Jedoch kann das für den Nutzer frustrierend sein ein Button zu sehen, das nicht tut was es 'verspricht'...

  • Es könnte mit dem Roles-Plugin möglich sein (ich kann nur "könnte" sagen, weil ich mich mit dem Plugin eigentlich noch gar nicht beschäftigt habe - noch nicht mal ausprobiert). Im Manual, das beim Roles-Plugin dabei ist, gibt es einen Abschnitt über Menu-Items, deren Sichtbarkeit für verschiedene Rollen definiert werden kann. Die Buttons sollten eigenlich auch alle Menu-Items sein. Neben 'site' (Hauptseitenmenu) und 'page' (Sidebar) gibt es beispielsweise auch das 'title'-Menu, in welches die Knöpfe in der Titelleiste von Seiten (z.B. "Add Group") hinein-registriert werden.

    Ich denke, Du mußt da ein wenig experimentieren und Dich durch den Code wühlen. Einerseits ist es wohl notwendig, den Code der Plugins bzgl. der Registrierung der Buttons zu durchsuchen, die Du nicht für alle sichtbar machen willst, damit Du weisst, welche Parameter genau bei der Registrierung der Buttons verwendet werden. Mit diesen Parametern sollte dann hoffentlich bei der Definition der Rollen die Sichtbarkeit beeinflußt werden können. Dafür mußt Du mal genau lesen, was da im Manual des Roles-Plugins steht. Vielleicht ist es auch hilfreich, den Code des Roles-Plugins (oder vielleicht der anderen Roles-Plugins wie dem Moderators for Roles-Plugin) mal ein wenig zu durchforsten, ob da so etwas irgendwo schon implementiert ist. Dann könntest Du anhand dieses Beispiels nachvollziehen, wie es bei anderen Menueinträgen/Knöpfen funktionieren sollte.

    Vom Roles-Plugin gibt es wohl auf https://github.com/arckinteractive auch eine neuere Version, die hier auf der Community-Seite noch nicht verfügbar ist. Was genau neu oder verändert ist, kann ich nicht sagen. Aber vielleicht ist es nicht schlecht, die Roles-Plugins in den Versionen von Github mal zu testen.

  • In der manual Datei für Rollen befindet sich noch folgender Code

    'permissions' => array(
    'actions' => array(
    'groups/save' => array('rule' => 'deny')
    ),
    ),

    Dies soll wohl verhindern ,dass man  Gruppen gründen kann. Bei mir tut sich jedoch nichts... Ich habs eins zu eins aus dem manual übernommen, aber es tut sich nichts.

  • Die neue Version habe ich auch gefunden :) gut ich spiel dann mal ein wenig damit rum. Wo kann man denn nachsehen wie diese einzelnen Buttons heißen ? Ich brauche eigentlich nur die Buttons mit denen man neue Gruppen, Blogs, Pages und Events erstellen kann...

  • "Menu permissions"? Wie gesagt, kann ich nicht viel dazu sagen. Ich hab nur kurz ins Manual geschaut. Beispielsweise:

    Menu items can be dynamically removed from or appended to any Elgg menu. To disable the
    “Members” main menu item for the default role, the configuration would look like this:
    DEFAULT_ROLE => array(
    'title' => 'roles:role:DEFAULT_ROLE',
    'extends' => array(),
    'permissions' => array(
    'menus' => array(
    'site::members' => array('rule' => 'deny')
    ),
    )
    )

  • Meine halbe Antwort wurde verschluckt...

    Die Buttons werden über elgg_register_title_button() registriert (siehe http://reference.elgg.org). Es ist ein wenig schwierig, da die Menuparameter herauszufinden, da sie nicht angegeben werden müssen. Wenn sie nicht angegeben sind, erschließt sie Elgg aus dem Kontext. Du kannst aber den Handler herausfinden, indem Du beispielsweise im Sprachfile des entsprechenden Plugins nach dem Text des Buttons suchst, da Handler = raw language string. Für den Gruppe hinzufügen-Button wäre der Handler bzw Name dann "groups:add".

    Funktioniert

    'menus' => array(
    'title::groups:add' => array('rule' => 'deny')

    als Permission-Regel?

     

  • ich versuchs mal... das was du da mit Handler und so beschreibst scheint mir auf anhieb kompliziert zu sein :) 

  • es hat sich i.wie nichts getan... das ding ist es hatte sich bei 

    'permissions' => array(
    'actions' => array(
    'groups/save' => array('rule' => 'deny')
    ),
    ),

    auch nichts getan, obwohl ich das aus dem manual hab... 

  • Hast Du das Problem in der Zwischenzeit gelöst?

    Wenn nicht, dann schau Dir mal den Code des roles_group_admins-Plugins an. In der start.php dieses Plugins gibt es in der Funktion roles_group_admins_config() die Definition der DEFAULT_ROLE (ich schätze mal dies sind die Mitglieder, die NICHT Gruppenadmins sein sollen). Bei der Definition gibt es diese Codezeilen:

    menus' => array(
                        'title::add' => array(
                            'rule' => 'deny',
                            'context' => array('groups')
                        ),

    Damit denke ich wird der Button ausgeblendet. Wenn es mit dem Gruppen-Button funktioniert, kannst Du es ja entspechend auch für die anderen Buttons implementieren.

  • Ne ich habe das Problem leider immernoch. Das ist super. Ich werde es gleich ausprobieren :)

  • Also für Gruppen hat es funktioniert. Bei den anderen Buttons hat sich nichts getan... aber ich schau mir das morgen ausgeschlafen nochmal an :D Vielen Dank dir für deine Hilfe.

German Support Group

German Support Group

The German support group within the Elgg community.