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?
info@elgg.org
Security issues should be reported to security@elgg.org!
©2014 the Elgg Foundation
Elgg is a registered trademark of Thematic Networks.
Cover image by RaĆ¼l Utrera is used under Creative Commons license.
Icons by Flaticon and FontAwesome.
- iionly@iionly
iionly - 0 likes
- alpik@alpik
alpik - 0 likes
- iionly@iionly
iionly - 0 likes
- alpik@alpik
alpik - 0 likes
- alpik@alpik
alpik - 0 likes
- alpik@alpik
alpik - 0 likes
- iionly@iionly
iionly - 0 likes
You must log in to post replies.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:
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.