Gruppe abonnieren ohne in die Gruppe beizutreten...

Hallo. ist es möglich eine gruppe zu abonnieren ohne der gruppe beizutreten?

bei mir auf der seite gibt es 2 rollen (student/ lehrkraft). lehrkräfte sollen gruppen gründen und gruppen beitreten können. studenten hingegen sollen weder gruppen erstellen noch ihnen beitreten können. (bis hierhin dank @iionly soweit erledigt)sollen aber über die neuigkeiten der gruppe informiert werden. der grund warum ich nicht möchte, dass die studenten in die gruppe eintreten ist, dass sie dann dort ebenfalls inhalte erstellen,an diskussionen teilnehmen, dateien hochladen usw.könnten. Jedoch soll die gruppe für studenten nur eine informationsquelle darstellen....wen die gruppe öffentlich ist und die studenten der gruppe nicht beitreten können (join button unsichtbar) dann können sie zwar alles sehen aber nichts ändern. was fehlt ist die benachrichtigung über neuikgeiten... wie kann man das integrieren???

alternativ könnte ich mir vorstellen, dass man den studenten das beitreten erlaubt, aber dann i.wie das erstellen von inhalten etc. verbieten...  dazu müsste man wissen wie diese links (es sind keine buttons) in der gruppe, die jeweils zu einer funktion führen, versteckt werden können... weisst das jmd? 

  • Ich denke nicht, dass das geht. Das gesamte Management der Zugriffslevel für Gruppen beruht ja vor allem erst einmal darauf, ob ein User auch Mitglied der Gruppe ist oder nicht.

    Bietet das Roles-Plugin eine Möglichkeit zu prüfen, ob der angemeldete Benutzer einer bestimmte Rolle hat, also

    wenn (elgg_get_logged_in_user() == "hat Rolle XY") dann {

        zeige link

    }

    Wenn eine solche Funktion verfügbar ist, wäre zwar eine Modifikation des Codes der Plugins notwendig, die diese Links erzeugen. Aber dies ist wahrscheinlich immer noch viel einfacher als zu versuchen, das Zugriffsmanagement von Elgg selbst zu modifizieren.

  • Das ist doch genau das was du meinst oder?

    In rare cases, when you do explicitly need to know what role a user has, you can get it by calling
    the


    function roles_get_role($user = null)


    which will return the corresponding role object for the “$user” parameter. If $user is not passed,
    it will return the role object for the currently logged-in user. Note that this function is guaranteed
    to return an ElggRole object – if the user does not have a specific role, one of the default role
    objects will be returned.

     

    Ich müsste dann 'nur'  die Stelle finden, wo diese Links erzeugt werden und dann folgendes hinzufügen oder ?

    if (roles_get_role($user = null) != 'student'){...}

    damit würden die links nur für Nichtstudenten erzeugt werden?

    Hast du eine Idee wo diese Links (für das Group Plugin) erzeugt werden? 

  • roles_get_role() gibt wohl ein ElggRole-Objekt zurück und nicht direkt den Namen der Rolle. Daher kannst Du nicht direkt prüfen, ob dies gleich einem bestimmten Rollennamen ist.

    Es sollte allerdings so gehen:

    if ((roles_has_role(elgg_get_logged_in_user_entity(), 'teacher') || elgg_is_admin_logged_in()) {

           -----Links anzeigen----
    }

    Hat der angemeldete User die Berechtigung ("Lehrer" oder Admin), dann zeige den Link, sonst nicht.

    Die Links werden in View-Files bei den entsprechenden Plugins erzeugt. Beispielsweise beim Blog-Plugin in mod/blog/views/default/blog/group_module.php. Bei den anderen Plugins sind die Views glaube ich gleich benannt. Du mußt den Code ein wenig modifieren, damit die if-Abfrage bzgl der Rolle gut integriert werden kann, aber es sollte nicht zu schwer sein.

  • Ich hab die für mich wichtigste stelle gefunden und die if-abfrage eingebaut. es hat funktioniert:) Vielen Dank.

  • Ich habe bei allen Plugins (Bookmark, Task, Event, ...) die group_module.php datei umgeändert.

    Undzwar immer dort wo die Variable  $new_link gesetzt wurde habe ich die Bedingung eingebaut... (s.u. für Event)

    if (roles_has_role(elgg_get_logged_in_user_entity(), 'teacher') || elgg_is_admin_logged_in()){


    $new_link = elgg_view('output/url', array(
    'href' => "/events/event/new/" . $group->getGUID(),
    'text' => elgg_echo('event_manager:menu:new_event'),
    ));

    }

    Das Event plugin gehört zwar nicht zum elgg core aber das Bookmark plugin schon oder? Ich habe eine Beschreibung gefunden wo beschrieben wurde wie ich die Farbe des Headers ändern könnte, ohne was im Core zu ändern http://community.elgg.org/discussion/view/850778/change-the-color-from-header-and-topbar (gillie)... vllt. könntest du mir anhand dieses beisspiels  erläutern wie ich das für mein fall machen kann..

     

  • ich glaube ich habe es hinbekommen :) habe einfach die ordner views > default > (bookmark, task, event,...) angelegt und darin jeweils die veränderte group_module.php hineinkopiert... die orginal group_module.php datei habe ich auf den alten zustand zurückgesetzt...

    ist so ok oder? 

  • Hört sich für mich genau richtig an.

German Support Group

German Support Group

The German support group within the Elgg community.