Buttons in posting.tpl nur für Moderatoren - Wie?

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Reiner
Mitglied
Beiträge: 69
Registriert: 17.04.2003 17:34

Beitrag von Reiner »

CatZe hat geschrieben:schau Dir mal im Code an, wie der "delete" Button in dem viewpost.php realisiert wurde.. so muesste es auch mit deinem funktionieren
Da habe ich schon geschaut, aber das wird etwas komlipzierter realisiert. Da spielt auch die posting.php noch mit und nicht nur die posting_body.tpl.
NIKONPOINT, das Nikon Forum....
Benutzeravatar
CatZe
Mitglied
Beiträge: 514
Registriert: 30.11.2004 11:46
Kontaktdaten:

Beitrag von CatZe »

naja, die posting.php ist der php Part, die posting_body.tpl der html Part
GreetZ
Cat
Reiner
Mitglied
Beiträge: 69
Registriert: 17.04.2003 17:34

Beitrag von Reiner »

CatZe hat geschrieben:naja, die posting.php ist der php Part, die posting_body.tpl der html Part
Klar, nur kenne ich mich da dann nicht mehr aus. Simple Abfragen und Umbauten sind ja kein Ding, aber sobald es daran geht, Variablen zu definieren und zu übergeben, werde ich vermutlich mehr kaputt machen als es mir lieb ist :wink:

Es war halt meine Hoffung, daß das in der Art gehen müsste, wie Du sie schon angedeutet hast.

Vielleicht hat ja noch jemand eine Idee? :)
NIKONPOINT, das Nikon Forum....
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Nur durch Bearbeitung des Templates wird diese Änderung nicht funktionieren fürchte ich. phpBB 2 ist nicht in der Lage in Templates PHP Code auszuführen, dieser muss in den Steuerdateien stehen, in diesem Fall also posting.php. Eine Änderung hier ist aber nicht so schwierig. Du müsstest nicht einmal zwingend neue Variablen anlegen sofern du die Sprache auch "hardcoded" ertragen kannst. Dann muss nämlich nur die Abfrage in die posting.php und du baust einen

Code: Alles auswählen

<!-- BEGIN switch_user_is_admin_or_mod --> xxx <!-- END switch_user_is_admin_or_mod -->
um den HTML Code des Buttons herum, dieser wird dann von der Abfrage ein oder ausgeschaltet.

in der Datei ist eine Zeile

Code: Alles auswählen

$template->pparse('body');
Davor müsstest du die PHP Abfrage platzieren:

Code: Alles auswählen

if($userdata['user_level'] == ADMIN || $is_auth['auth_mod'])
{
$template->assign_block_vars('switch_user_is_admin_or_mod',array());
}
Dann wird im Falle eines Admins oder Mods eben dieser Block im Template gezeigt. Jetzt muss in diesem Block nur noch der passende HTML Code stehen, der die Buttons darstellt und der Scriptcode der sie zum Leben erweckt. Das kannst du dir aber bei den schon vorhandenen Buttons abschauen.
Ach so: Wichtig ist, dass die Switch Blöcke im Template in eigenen Zeilen stehen und nicht wie oben dargestellt mit anderem Zeugs in der gleichen Zeile. Das ein END Block die letzte Anweisung in einem Template ist ist ebenfalls zu vermeiden, mindestens ein Leerzeichen sollte noch kommen...
Wichtig: Alle Dateien vor der Änderung sichern! Ich habe das nicht getestet und übernehme keine Garantie!
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Reiner
Mitglied
Beiträge: 69
Registriert: 17.04.2003 17:34

Beitrag von Reiner »

@gn#36

Ich habe die beiden Änderungen mal eingebaut....

Die Abfrage in der posting.php funktioniert (Das habe ich mit einem print_r Statement überprüft). Ich musst eallerdings das Keyword 'Admin' durch eine '1' ersetzen. In der Variable 'user_level' steht für den Admin eine '1'.

Allerdings funktioniert der Schalter im tpl nicht. Der Button wird nie angezeigt (Ausser ich baue den Schalter aus. D.h. prinzipiell ist der Code für den Button wohl richtig).
Der Code im Template sieht so aus:

Code: Alles auswählen

<!-- BEGIN switch_user_is_admin_or_mod -->
          <input type="button" class="button" name="imageupload"  value="Archiv" onClick="window.open('{U_GALLERY2}?g2_itemId=726', 'Archiv');" onMouseOver="helpline('h')" />
<!-- END switch_user_is_admin_or_mod -->
edit:
Hat niemand eine Idee, warum dieser switch nicht funktionieren könnte?
NIKONPOINT, das Nikon Forum....
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Die Konstante ADMIN sollte eigentlich als 1 in der constants.php definiert sein und sollte daher ebenfalls verwendbar sein (ich halte das für besser, da man genau sehen kann was abgefragt wird wenn man in den Code schaut. Eine 1 ist da sicher nichtssagender).

Bei mir funktioniert der Code genau so wie ich ihn gepostet habe einwandfrei, inklusive Switch. (auch mit genau dem Switch den du gepostet hast)
Stelle also sicher dass du die codeabfrage VOR dem pparse platziert hast und dass im Template die BEGIN und END Anweisungen eine komplett eigene Zeile bekommen mit keinem sonstigen Inhalt (Leerzeichen ausgenommen). Wenn das nicht klappt weiß ich nicht was falsch sein könnte.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Reiner
Mitglied
Beiträge: 69
Registriert: 17.04.2003 17:34

Beitrag von Reiner »

Ahh.. o.k. ... Das mit der Admin-Konstanten wusste ich nicht (Wieder was gelernt :wink: )

Zum Problem... Ich verzweifel langsam.... Das ist doch eigentlich derart einfach, daß man doch jedes Problem sehen sollte :roll:
Ich habe jetzt schon den Namen des switch geändert und per copy&paste überall neu eingefügt, um irgendwelche dummen Fehler zu vermeiden.
Die Begin und END Zeile im template liegen definitiv alleine in ihren Zeilen.
Der Button funktioniert wenn ich meinen Switch entferne.
Andere Switches funktionieren in dem template.

So sieht das letzte Ende meiner posting.php aus (Die Variable wird also vor dem parse definiert):

Code: Alles auswählen

//
// Topic review
//
if( $mode == 'reply' && $is_auth['auth_read'] )
{
	require($phpbb_root_path . 'includes/topic_review.'.$phpEx);
	topic_review($topic_id, true);

	$template->assign_block_vars('switch_inline_mode', array());
	$template->assign_var_from_handle('TOPIC_REVIEW_BOX', 'reviewbody');
}


if ($userdata['user_level'] == 1 || $is_auth['auth_mod'])
{

$template->assign_block_vars('switch_show_archiv_button', array());

}

$template->pparse('body');

include($phpbb_root_path . 'includes/page_tail.'.$phpEx);

?>
Und so sieht der switch mit etwas mehr Umgebung in meinem posting_body.tpl aus:

Code: Alles auswählen

<td colspan="9" nowrap="nowrap" align="right">
				
            <span class="genmed">

            <!-- BEGIN switch_show_archiv_button --> 
          <input type="button" class="button" name="imageupload"  value="MOD-Archiv" onClick="window.open('{U_GALLERY2}?g2_itemId=726', 'MOD-Archiv');" onMouseOver="helpline('h')" />
            <!-- END switch_show_archiv_button --> 

                
        <input type="button" class="button" name="imageupload" value="NP Bilderserver" onClick="window.open('{U_GALLERY2}', 'Bildupload');" onMouseOver="helpline('h')" />
        <input type="button" class="button" name="g2image" value="Bild einbinden" onClick="g2ic_open('post', 'message');" onMouseOver="helpline('g')" />

				</span>
			</td>
NIKONPOINT, das Nikon Forum....
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Tja, sieht eigentlich richtig aus. Das einzige was ich mir vorstellen könnte wäre dass sich dieser Block im Template in einem anderen Block befindet. Dann müsste der Aufruf etwas anders aussehen:

Code: Alles auswählen

$template->assign_block_vars('anderer_block.innerer_block',array());
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Reiner
Mitglied
Beiträge: 69
Registriert: 17.04.2003 17:34

Beitrag von Reiner »

Hallo,

wollte das gestern schon schreiben, aber da hing das Board hier irgendwie....

Ich habe das Problem gefunden!
Ichhatte den Code per Copy&paste aus dem Forum hier in meine posting_body.tpl kopiert.
Anscheinend haben sich da auch irgendwelche Zeichen mitkopiert, die in meinem Editor nicht sichtbar waren.
Habe dann mal sämtliche "Leerzeichen" und Zeilenumbrüche zwischen den drei Zeilen entfernt und im Editor neu eingefügt. Seither klappt es :!:

Danke für die Hilfe, jetzt habe ich genau das, was ich wollte :)
NIKONPOINT, das Nikon Forum....
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“