Menüpunkte bei Einstellungen aus- und einblenden lassen? - Druckversion +- MyBB.de Forum (https://www.mybb.de/forum) +-- Forum: Anpassungen (https://www.mybb.de/forum/forum-47.html) +--- Forum: Plugin-Diskussionen (https://www.mybb.de/forum/forum-38.html) +--- Thema: Menüpunkte bei Einstellungen aus- und einblenden lassen? (/thread-21020.html) |
Menüpunkte bei Einstellungen aus- und einblenden lassen? - querschlaeger - 07.12.2008 Hallo, beim Entwickeln von Plugin haben manche von ihnen auch Einstellungen. Das ganze funktioniert sehr gut. Nur eine Frage habe ich: Wie kann man bestimmte Einstellungen abhängig von einer anderen Einstellung ein- bzw. ausblenden lassen? Wer genau wissen möchte, was ich meine: Unter Konfiguration > Einstellungen > Beitragserstellung lautet eine Einstellung "Zeit zwischen Beiträgen". Abhängig von der Wahl erscheint eine weitere Einstellung darunter. Wie kann ich sowas in eigenen Plugins realisieren? gruß querschlaeger RE: Menüpunkte bei Einstellungen aus- und einblenden lassen? - StefanT - 07.12.2008 Ich habe mich damit noch nicht beschäftigt, bin aber sehr skeptisch. Ich glaube nicht, dass man das mit einer Einstellung bewirken kann. RE: Menüpunkte bei Einstellungen aus- und einblenden lassen? - kastun - 07.12.2008 Aber ich hab mich damit mal beschäftigt Eins vorweg, das in ein Plugin zu kriegen ist mir bisher nicht gelungen Dazu musst du in admin/modules/config/settings.php einen neuen Peeker anlegen, und zwar in der Funktion loadPeekers() ganz am Ende. PHP-Code: new Peeker($$(".setting_[setting_name_1]"), $("row_setting_[setting_name_2]"), /1/, true); setting_name_1: Name der Einstellung, von deren Einstellung die Anzeige der anderen Einstellungen abhängen soll. setting_name_2: Abhängige Einstellungsnamen Der folgende Parameter enthält den Wert, bei dem [setting_name_2] angezeigt wird. Damit kann man nicht nur auf true/false reagieren, sondern z.B. auch auf Radio Buttons (da dann einfach den Schlüssel eintragen). Da ich es noch nicht in Plugins zum Laufen gekriegt habe, hab ich mich auch nicht näher damit beschäftigt, ist also vll. nicht alles wichtige dazu gesagt. EDIT: Hab die "Beschreibung" dazu gefunden, vll hilft die noch RE: Menüpunkte bei Einstellungen aus- und einblenden lassen? - Zwoetzen - 08.12.2008 Ich habe mir mal vorgenommen, das ganze rauszufinden, wie das geht, und habe bereits ein (halbwegs) akzeptable Lösung gefunden. Ich werde das ganze noch etwas aufpolieren und anschließend inklusive Erklärungen zur Verfügung stellen (Also im Klartext: Es funktioniert bereits, ist aber bisher ein miserabler Weg xD) Okay, habe nun eine relativ hübsche Methode gefunden, das ganze umzusetzen. Der beste Weg, es zu zeigen, ist wohl ein Plugin test_settings.php (Größe: 3 KB / Downloads: 6) (Einfach in den Plugin-Ordner kopieren, aktivieren, und in den Einstellungen gucken und hoffen, dass es bei euch auch funktioniert, wie bei mir xD) Die Funktionen settings_test_info(), settings_test_activate() und settings_test_deactivate() brauch ich wohl nicht erklären, sind halt wie in jedem Plugin mit eigenen Einstellungen. Interessanter sind die anderen beiden Funktionen: test_settings_change(): Diese Funktion klinkt sich bei den Einstellungen ein (Hook: admin_config_settings_change), definiert vorerst aber nur eine Variable, die uns sagt, dass wir noch unseren Peeker (= Der Mechanismus, dass Einstellungen "verschwinden") hinzufügen müssen. PHP-Code: $test_settings_peeker = ($mybb->input['gid'] == $gid) && ($mybb->request_method != "post"); Warum wird der Peeker nicht direkt ausgegeben? Zu dem Zeitpunkt, wenn unsere Funktion aufgerufen wird, wurde noch nichtmal der HTML-Header ausgegeben, sodass unsere Ausgabe vor allem stehen würde, was ziemlich schlechter Stil wäre. Deshalb müssen wir die Ausgabe noch etwas "verzögern". test_settings_footer() Diese Funktion kümmert sich nun um die Ausgabe des zusätzlichen Javascripts, der für das "Verschwinden" der Einstellungen sorgt. Sie klinkt sich dabei im Footer ein (Hook: admin_page_output_footer), da dort eben ein großteil der Seite bereits steht (inklusive unserer Einstellungen), und das der passendste Platz für unser kleines Script ist. Es sollte klar sein, dass die IF-Abfrage nur erfolgreich ist, wenn vorher (in der test_settings_change()) die abgefragte Variable auf true gesetzt wurde Den in der Ausgabe stehenden Javascript-Code habe ich größtenteils aus der /admin/modules/config/settings.php übernommen. Die wichtigste Zeile dabei ist: PHP-Code: new Peeker($$(".setting_ts_independend"), $("row_setting_ts_dependend"), /1/, true); Diese Zeile funktioniert nur, wenn die unabhöngige (bestimmende) Einstellung entweder On/Off oder Yes/No ist, sonst nicht! (Bei anderen bestimmenden Einstellungen müssen die letzten beiden Werte angepasst werden, aber das hab ich jetzt nicht weiter untersucht. Ein Blick in die /admin/.../settings.php ganz unten könnte da event. hilfreich sein.) So, ich hoffe, die Erklärungen waren hilfreich, sodass ihr nun die gewünschten Einstellungen verstecken könnt. Falls nicht, einfach fragen, wo es hakt ^^ MfG Zwoetzen RE: Menüpunkte bei Einstellungen aus- und einblenden lassen? - querschlaeger - 16.12.2008 DANKE DANKE DANKE!!! Ihr seit echt super! @Zwoeten: Ich habe dein Plugin als Vorlage verwendet und gleich eines meiner Plugins damit ausgestattet: Individueller Profilhintergrund Ich musste war etwas frickeln, um herauszufinden, wie die Ein- bzw. Ausblendung im true/false-Fall funktioniert, aber ich habe das Prinzip verstanden und werde in Zukunft bei Plugin-Updates und Neuerscheinungen immer mal wieder dieses Feature nutzen! Nochmals DANKE gruß querschlaeger |