Seite 1 von 1

welche datei erzeugt das ucp menue

Verfasst: 22.02.2008 22:16
von panama
hallo,

ich suche die datei in der das obere ucp menue erzeugt wird

(Einstieg | Profil | Einstellungen | Private Nachrichten | Benutzergruppen | Freunde und ignorierte Mitglieder)

ich möchte das ein von mir geschriebenes modul nur eine bestimmte
benutzergruppe zu sehen bekommt.

kann mir jemand einen tipp geben wo ich suchen muss ?

danke

gruss panama

Verfasst: 23.02.2008 15:31
von issjut
hi panama,

also was die Anzeige des ganzen in den templates angeht so würde ich sagen in der ucp_header.html (dein_forum/styles/prosilver/)

Code: Alles auswählen

<div id="tabs">
	<ul>
		<!-- BEGIN t_block1 -->
		<li <!-- IF t_block1.S_SELECTED -->class="activetab"<!-- ENDIF -->><a href="{t_block1.U_TITLE}"><span>{t_block1.L_TITLE}</span></a></li>
		<!-- END t_block1 -->
	</ul>
</div>
naja und der php code sicherlich in der ucp.php (dein_forum/)

Hoffe das meintest Du!

Verfasst: 23.02.2008 15:35
von nickvergessen
issjut hat geschrieben:naja und der php code sicherlich in der ucp.php (dein_forum/)
nein,
includes/functions_module.php

Code: Alles auswählen

	/**
	* Build navigation structure
	*/

Verfasst: 23.02.2008 15:39
von issjut
ja hab ich auch gerade gesehen und wollte eben editieren... ;)

Verfasst: 27.02.2008 18:48
von panama
danke habs gefunden.

hat jemand eine idee, wie man eine neue kategorie nur
einer bestimmten benutzergruppe zeigen kann ?

panama

Verfasst: 27.02.2008 18:53
von issjut
Jap :-D

Schau dir mal DIESES Thema hier an

Re: welche datei erzeugt das ucp menue

Verfasst: 12.07.2010 17:27
von Pflücker
Der oben genannte Verweis hatte mir zu demselben Problem gelinde gesagt überhaupt nichts gebracht. Die jeweils angesprochenen Anforderungen sind vollkommen verschieden.

Da ich weder hier in phpbb.de noch in .com geschweige denn im Entwickler-Wiki etwas zu dem Thema gefunden habe, hab ich mich mal durch die Dateien gefuchst und viel zeit in denselben und der Tabelle verbracht.
Im folgenden nun der Weg den ich genommen habe, um im UCP bestimmte Bereiche nur für bestimmte Benutzergruppen zugänglich zu machen, damit falls zukünftig noch jemand vor diesem Problem steht, ein wenig schneller zu des Rätsels Lösung kommt ;)

Ich muss aber warnen, das ist ein wenig Handarbeit, vor allem bei der Datenbank weswegen ich dringendst empfehle die folgenden Schritte zuerst auf einem lokalen (XAMPP-) Clone auszuprobieren, bevor es böse Überraschungen gibt und eure Datenbank hinüber ist!

Voraussetzung:
Das UCP-Modul ist fertig entwickelt und bereits im UCP integriert.
phpmyAdmin- bzw SSH-Zugriff besteht.

Schritt 1 - Einrichten einer neuen Rolle
In der Tabelle 'phpbb_acl_roles' wird ein neuer Eintrag erstellt. Wichtigste Spalte ist hierbei die "role_id", diese ist fortlaufend (und eindeutig), also solltet ihr euch nach dem letzten Eintrag orientieren und eure id um eines erhöhen.

Code: Alles auswählen

role_id = eindeutige ID, letzten Eintrag beachten!
role_name = Name der später im ACP als Überschrift verwendet wird
role_description = Beschreibung
role_type =  'a_' -> Admin; 'u_' -> User; 'f_' -> Forum; 'm_' -> Mod; (UCP zB also 'u_')
role_order = Ordnungsnummer des jeweiligen role_type, einfach letzten Eintrag des selben role_type anschauen
role_name und role_description können entweder direkt eingetragen werden oder durch eine Sprachvariable ersetzt werden.
role_order wird benötigt, damit phpbb das Menü sortieren kann.

Die nun erstellte Rolle kann im ACP bereits Gruppen zugewiesen werden. (Gruppeneinstellungen und dann das Auswahlfeld Rollen)
Schritt 2 - Einrichten der Auth-Option
In der Tabelle 'phpbb_acl_options' wird ein neuer Eintrag erstellt, der den String enthält der in dem info-File des UCP Mods eingefügt werden muss, am Ende zeige ich euch ein Beispiel.
Wichtig ist hier wieder, dass die auth_option_id eindeutig ist, also heißt es, sich wieder den letzten Eintrag in der Datenbank anzuschauen und eins hinzuzählen ;)

Code: Alles auswählen

auth_option_id = Eindeutige ID, letzten Eintrag beachten
auth_otion = String welcher später in der UCP-Info-Datei bei "'auth' =>" eingetragen werden muss. Dabei beginnt der String mit der jeweiligen oben verwendeten role_type.
is_global = 1
is_local = 0
founder_only = 0
Ein Beispiel für die auth_option wäre beispielsweise "u_tolles_modul", ein anderer "u_testing_module". Wichtig ist, dass der bereits weiter oben bei role_typ angegebene Präfix (hier 'u_') derselbe ist.
Die oben eingegebene auth_option setzen wir nun wie folgt in der ucp-info-Datei des eigenen Moduls (root/includes/ucp/info/*.php) ein:

Code: Alles auswählen

'modes'		=> array(
				'user'		=> array('title' => 'UCP_TEST', 'auth' => 'acl_u_tolles_modul', 'cat' => array('')),
			),
Hier habe ich das oben aufgezeigte Beispiel "u_tolles-modul" eingesetzt. Wie man sieht wird diesem in der UCP-Info-Datei noch ein 'acl_' vorangesetzt! Bloß nicht vergessen ;) Dies taucht auch in der Datenbank nicht wieder auf!

Schritt 3: Verknüpfen
Nun verknüpfen wir noch die Rolle mit der Auth-Option.
Dazu wird in der Tabelle 'phpbb_acl_roles_data' ein neuer Eintrag erstellt:

Code: Alles auswählen

role_id = role_id der aus Schritt 1 angelegten Rolle
auth_option-id = auth_option_id der aus Schritt 2 angelegten Auth-Option
auth_setting = 1
Schritt 4: Gruppe mit den entsprechenden Rechten ausstatten
Nun, um der Gruppe die entsprechenden Rechte zu geben, um das UCp-Modul im menü aufrufen/sehen zu können, weist man der entsprechenden Gruppe noch die oben erstellte Rolle zu.
Dies kann man wie bereits erwähnt entweder direkt im ACP machen ('Benutzer und Gruppen' -> 'Gruppenrechte' ->Gruppe auswählen -> Nun bei Benutzer-Berechtigung die oben erstellte Rolle auswählen) oder auch per Datenbank/SQL-Befehl.
Da ich letzteres bevorzuge um diese nur in einem Schwung bearbeiten zu müssen hier auch nochmal der entsprechende Schritt:

Neuen Eintrag unter 'phpbb_acl_groups' erstellen mit folgenden Werten:

Code: Alles auswählen

group_id = ID der Gruppe
forum_id = foren-ID oder 0 = Global (?)
[auth_option_id = ID zu auth_option ]
auth_role_id = ID der Rolle
auth_setting = 0
wenn man wie oben vollzogen die Rollen-Variante benutzt, muss man auth_option_id nicht ausfüllen (deswegen habe ich es auch mal in Klammern gesetzt), sondern lässt es frei. Andernfalls muss wohl auth_setting dann 1 sein, das, muss ich gestehen, habe ich jetzt nicht ausprobiert, müsste aber von der Logic her so sein ;)

So, ich hoffe ich habe nichts vergessen oder falsch wiedergegeben (Menschen machen nunmal Fehler), sollte dem so sein schreibt mir eine PN oder berichtigt mich direkt hier ;)
Eine Gewähr für's funktionieren übernehme ich nicht (bei mir tut es das aber, keine Sorge ;) ) und denkt daran nicht an eurer im Einsatz befindlichen Datenbank das auszuprobieren, sondern erst einen Clone zu benutzen.

Tipp: Schreibt euch gleich die SQL-Befehle raus (wird beim Absenden bei phpmyadmin in einem Fenster angezeigt), dann gehts schneller und vermutlich fehlerfreier ;)

Re: welche datei erzeugt das ucp menue

Verfasst: 12.07.2010 17:58
von wolfman24
Wow, da hast du dir aber Mühe gemacht, für ein knapp 2 1/2 Jahre altes Thema :D

Re: welche datei erzeugt das ucp menue

Verfasst: 12.07.2010 18:28
von Pflücker
Würdest du dir auch, wenn du über eine Stunde lang nach Informationen suchst und das einzige viel versprechende Thema das hier ist ;P