Beiträge: 1.712
Themen: 177
Registriert seit: 08.02.2018
MyBB-Version: 1.8.37
Gegeben ist in nachstehender Auszug aus der function pluginname_install()
PHP-Code: $settings = array( array( 'name' => 'Funktion 1', "title" => $db->escape_string($lang->setting_button), "description" => $db->escape_string($lang->setting_button_desc), 'optionscode' => 'yesno', 'value' => '1', 'disporder' => '13', 'gid' => intval($gid), ),
array( 'name' => 'Funktion A', 'title' => 'Funktion A', 'description' => 'Wird nur angezeigt wenn Funktion 1 = ON', 'optionscode' => 'text', 'value' => '<div align="right">Mustertext grün</div>', 'disporder' => '14', 'gid' => intval($gid) ),
array( 'name' => 'Funktion B', 'title' => 'Funktion B', 'description' => 'Wird nur angezeigt wenn Funktion 1 = ON', 'optionscode' => 'text', 'value' => '<div align="right">Mustertext rot</div>', 'disporder' => '15', 'gid' => intval($gid) ), ); foreach ($settings as $settingData) { $db->insert_query('settings', $settingData);
Welche "hooks" und "functions" muss ich wie definieren damit im ACP "Funktion A" und "Funktion B" nur angezeigt wird, wenn "Funktion 1 == JA"
Hätte mir jemand freundlicherweise eine Anleitung oder einen Link wo man die Umsetzung hierzu erlernen kann?
Danke vorab für jegliche Tipps und Hinweise.
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an! ...ich bitte jedoch nicht darum helfen zu dürfen!
Tools ◀ [ Unixzeit ⇔ Realzeit] ♦ [ BOM-Finder] ♦ [ SQL-Prefix-Changer] ♦ [ USV-Rechner] ♦ [ PlugIns]
Beiträge: 837
Themen: 8
Registriert seit: 08.02.2016
MyBB-Version: 1.8.38
Dies läuft über JavaScript (peeker.js) und ist fest definiert für bestimmte Optionspunkte. Siehe Quelltext ./admin/index.php
Als kleinen Hack kann man eigene Punkte selbst ins eigene PHP hinen-tüddeln.
Aber für eigene und PlugIn-Optionen ist das schlicht nicht gedacht.
Einzige Möglichkeit wäre, den entsprechenden HTML-Code (JS und eigene Peeker-Variablen) in $settings['title'] oder ['description'] zu schmuggeln.
Das Einschmuggeln funktioniert prinzipiell, weil HTML an dieser Stelle tatsächlich geparst wird.
[ETS]
Beiträge: 1.401
Themen: 25
Registriert seit: 11.10.2013
MyBB-Version: 1.8.*
16.01.2024, 15:39
(Dieser Beitrag wurde zuletzt bearbeitet: 16.01.2024, 15:47 von SvePu.)
Sowas könnte man über "admin_settings_print_peekers" realisieren.
Sowas habe ich u.a. im Plugin "MyBB-Darkmode-Switch" mal eingebaut:
=> https://github.com/SvePu/MyBB-Darkmode-S...#L279-L283
Beiträge: 837
Themen: 8
Registriert seit: 08.02.2016
MyBB-Version: 1.8.38
@Sven, danke - das kannte ich noch nicht.
Diese Möglichkeit mittels Hook ist die Lösung und macht genau das, was ich oben für manuell beschrieben habe.
[ETS]
Beiträge: 1.401
Themen: 25
Registriert seit: 11.10.2013
MyBB-Version: 1.8.*
Gerne @ExiTuS
Den Hook gibt es (glaub ich) auch noch nicht all zu lange (relativ gesehen) .... vorher musste man das äußerst kompliziert "einschummeln".
Beiträge: 1.712
Themen: 177
Registriert seit: 08.02.2018
MyBB-Version: 1.8.37
(16.01.2024, 15:39)SvePu schrieb: Sowas könnte man über "admin_settings_print_peekers" realisieren. Besten Dank für den Tipp und den Link. Es funktioniert damit perfekt = so wie es gewünscht war.
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an! ...ich bitte jedoch nicht darum helfen zu dürfen!
Tools ◀ [ Unixzeit ⇔ Realzeit] ♦ [ BOM-Finder] ♦ [ SQL-Prefix-Changer] ♦ [ USV-Rechner] ♦ [ PlugIns]
Beiträge: 1.712
Themen: 177
Registriert seit: 08.02.2018
MyBB-Version: 1.8.37
Es funktioniert:
PHP-Code: $plugins->add_hook('admin_settings_print_peekers', 'pluginname_settings_peekers'); function pluginname_settings_peekers(&$peekers) { $peekers[] .= 'new Peeker($(".setting_group"), $("#row_setting_group_service, /1/, true)'; }
Mit vorstehendem Code kann ich durch das Array mit: 'name' => 'group', => und 'optionscode' => 'yesno', das Array 'name' => 'group_service' bei JA einblenden und bei Nein ausgeblenden.
Wie aber bringe ich nachstehende Ein-/Ausblendfunktion zustande?
Array-3 mit: 'name' => 'group_theme', => und 'optionscode' => 'select\n0=Blau\n1=Rot\2=Grün\n3=Lila\n4=Schwarz',
soll das Array-4 mit 'name' => 'group_zensus',- nur angezeigt wird wenn im Array-3 Schwarz (=n4) ausgewählt wurde,
- nicht angezeigt wird, weil im Array-3 Schwarz (=n4) nicht ausgewählt wurde,
Mit meinem Versuch:
PHP-Code: function pluginname_settings_peekers(&$peekers) { $peekers[] .= ' var groupPageSelect = $("#setting_ [color=#00369b]group_theme[/color] "); new Peeker( groupPageSelect, $("#row_setting_ [color=#00369b]group_zensus[/color] "), function() { return groupPageSelect.val() == "4"; }, true); '; }
habe ich keinen Erfolg:
Hat mir hier jemand einen umsetzbaren Tipp zu meinem Anliegen bzw. mir mitteilen wo mein Fehler ist?
Danke vorab.
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an! ...ich bitte jedoch nicht darum helfen zu dürfen!
Tools ◀ [ Unixzeit ⇔ Realzeit] ♦ [ BOM-Finder] ♦ [ SQL-Prefix-Changer] ♦ [ USV-Rechner] ♦ [ PlugIns]
Beiträge: 1.401
Themen: 25
Registriert seit: 11.10.2013
MyBB-Version: 1.8.*
Probiere mal bitte:
PHP-Code: $plugins->add_hook('admin_settings_print_peekers', 'pluginname_settings_peekers'); function pluginname_settings_peekers(&$peekers) { $peekers[] .= 'new Peeker($(".setting_group_theme"), $("#row_setting_group_zensus"), /(4)/, true)'; }
oder
PHP-Code: $plugins->add_hook('admin_settings_print_peekers', 'pluginname_settings_peekers'); function pluginname_settings_peekers(&$peekers) { $peekers[] .= 'new Peeker($(".setting_group_theme"), $("#row_setting_group_zensus"), /(0|1|2|3)/, false)'; }
Beiträge: 25.762
Themen: 269
Registriert seit: 20.09.2005
Gerti, ich empfehle dir die peeker.js anzuschauen: https://crossreference.mybb.de/nav.html?...ource.html
Code: /**
* Peeker controls the visibility of an element based on the value of an input
*
* Examples:
* new Peeker($('#myController'), $('#myDomain'), 1, false);
* new Peeker($('.myControllerNode'), $('#myDomain, #myDomain2'), 1, true);
* new Peeker($('#myController'), $('#nestedPeeker'), /works/, false);
* new Peeker($('#nestedPeeker'), $('#nestedPeekerChild'), /\d+/, false);
*/
Code: /**
* Constructor
*
* @param string ID of the controlling select menu
* @param string ID of the thing to show/hide
* @param regexp If this regexp matches value of the select menu, then the 'thing' will be shown
* @param boolean Should be set to true for radio/checkboxes
*/
Für eine Auswahlliste muss der 4. Parameter also false sein. Und eine function ist kein RegExp und kann nicht funktionieren.
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Beiträge: 1.712
Themen: 177
Registriert seit: 08.02.2018
MyBB-Version: 1.8.37
(18.01.2024, 17:13)SvePu schrieb: Probiere mal bitte:
PHP-Code: $peekers[] .= 'new Peeker($(".setting_group_theme"), $("#row_setting_group_zensus"), /(4)/, true)';
Danke Dir, die vorstehende Lösung von Dir funktioniert wie gewünscht.
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an! ...ich bitte jedoch nicht darum helfen zu dürfen!
Tools ◀ [ Unixzeit ⇔ Realzeit] ♦ [ BOM-Finder] ♦ [ SQL-Prefix-Changer] ♦ [ USV-Rechner] ♦ [ PlugIns]
|