Dołącz do zespołu ekspertów! Backend lub Frontend Developer?

Sprawdź najnowsze oferty pracy naszego partnera - 8lines.io!

Opcja on/off w pluginie

PHP/MYSQL  Założony przez  MEXXIO.

Chciałem dodać do dwóch ostatnich pluginów o których pisałem, coś jak jest w Fit on Page. Jeśli plugin ma zaznaczone off to nie pokazuje opcji natomiast jeśli on to je pokazuje. Próbowałem się doszukać tej opcji ale bez skutku.
najpierw podczas instalacji pluginu dodajesz sobie taka opcje do bazy

    $settinggroups = array(
        
"name"             => "reputationlevels"
        
"title"                 => $db->escape_string($lang->reputationlevels_setting),
        
"description"        => $db->escape_string($lang->reputationlevels_setting_desc),
        
"disporder"         => $max_disporder 1,
        
"isdefault"            => "0",
    );
    
$gid $db->insert_query("settinggroups"$settinggroups);
    
    
$disporder 0;
    
$gid $db->insert_id();
    
    
$setting = array(
        
"sid"                    => "NULL",
        
"name"                => "reputationlevels_onoff",
        
"title"                => $db->escape_string($lang->reputationlevels_setting_onoff),
        
"description"        => $db->escape_string($lang->reputationlevels_setting_onoff_desc),
        
"optionscode"    => "onoff",
        
"value"                => "1",
        
"disporder"        => $disporder++,
        
"gid"                    => $gid,
    );
    
$db->insert_query("settings"$setting);

rebuild_settings(); 

potem w swojej funkcji zwykłym warunkiem sprawdzasz opcje off = 0 on = 1

    if($mybb->settings['reputationlevels_onoff'] == '1')
    {    
// jest na jeden wiec tu kod wlasciwy



http://docs.mybb.com/Plugin_Settings.html
No mam coś takiego:

function phpcolors_activate()
{
    require 
MYBB_ROOT."inc/adminfunctions_templates.php";
    global 
$db;
    
$result $db->simple_select('settinggroups''MAX(disporder) AS max_disporder');
    
$max_disporder $db->fetch_field($result'max_disporder');
    
$disporter 1;

    
$insertarray = array(
        
'gid' => 'NULL',
        
'name' => 'phpcolors',
        
'title' => 'PHP Highlight',
        
'description' => 'Ten plugin pomoże zmienić kolory składni PHP.',
        
'disporder' => $max_disporder 1,
        
'isdefault' => 'no'
    
);
    
$db->insert_query("settinggroups"$insertarray);
    
$group['gid'] = $db->insert_id();


    
$settings = array(
                    
'name'            => 'phpcolors',
                    
'title'            => 'PHP Highlight',
                    
'description'    => 'Chcesz włączyć?',
                    
'optionscode'    => 'yesno',
                    
'value'            => 'yes',
                    
'disporder'        => $disporter++,
                    
'gid'            => $group['gid'],
    );

    
$db->insert_query('settings'$settings);

    
$settings1 = array(
                    
'name'            => 'highlight.string',
                    
'title'           => 'Kolor string',
                    
'description'     => 'Tu podaj kolor HEX',
                    
'optionscode'     => 'text',
                    
'value'           => '#C0FF21',
                    
'disporder'       => $disporter++,
                    
'gid'             => $group['gid'],
    );

    
$db->insert_query('settings'$settings1);

    
$settings2 = array(
                    
'name'            => 'highlight.comment',
                    
'title'           => 'Kolor comment',
                    
'description'     => 'Tu podaj kolor HEX',
                    
'optionscode'     => 'text',
                    
'value'           => '#1E90FF',
                    
'disporder'       => $disporter++,
                    
'gid'             => $group['gid'],
    );

    
$db->insert_query('settings'$settings2);

    
$settings3 = array(
                    
'name'            => 'highlight.keyword',
                    
'title'           => 'Kolor keyword',
                    
'description'     => 'Tu podaj kolor HEX',
                    
'optionscode'     => 'text',
                    
'value'           => '#FFC0CB',
                    
'disporder'       => $disporter++,
                    
'gid'             => $group['gid'],
    );

    
$db->insert_query('settings'$settings3);

    
$settings4 = array(
                    
'name'            => 'highlight.default',
                    
'title'           => 'Kolor default',
                    
'description'     => 'Tu podaj kolor HEX',
                    
'optionscode'     => 'text',
                    
'value'           => '#cecece',
                    
'disporder'       => $disporter++,
                    
'gid'             => $group['gid'],
    );

    
$db->insert_query('settings'$settings4);
    
rebuild_settings();
}

function 
phpcolors_deactivate(){
    global 
$db;
    
$db->delete_query("settings""name='phpcolors'");
    
$db->delete_query("settings""name='highlight.string'");
    
$db->delete_query("settings""name='highlight.comment'");
    
$db->delete_query("settings""name='highlight.keyword'");
    
$db->delete_query("settings""name='highlight.default'");
    
$db->delete_query("settinggroups""name='phpcolors'");
    
rebuild_settings();
}

function 
phpcolors_start(){
    global 
$mybb;
    if(
intval($mybb->settings['phpcolors']) == 1){
        
ini_set('highlight.string'''.$mybb->settings['highlight.string'].'');
        
ini_set('highlight.comment'''.$mybb->settings['highlight.comment'].'');
        
ini_set('highlight.keyword'''.$mybb->settings['highlight.keyword'].'');
        
ini_set('highlight.default'''.$mybb->settings['highlight.default'].'');
    }


no i właśnie nie wiem czy pierwsza część któą podałeś jest dobrze i gdzie usadowić drugą.
(06.07.2014, 12:24)MEXXIO napisał(a): No mam coś takiego:

function phpcolors_activate()
{
    require 
MYBB_ROOT."inc/adminfunctions_templates.php";
    global 
$db;
    
$result $db->simple_select('settinggroups''MAX(disporder) AS max_disporder');
    
$max_disporder $db->fetch_field($result'max_disporder');
    
$disporter 1;

    
$insertarray = array(
        
'gid' => 'NULL',
        
'name' => 'phpcolors',
        
'title' => 'PHP Highlight',
        
'description' => 'Ten plugin pomoże zmienić kolory składni PHP.',
        
'disporder' => $max_disporder 1,
        
'isdefault' => 'no'
    
);
    
$db->insert_query("settinggroups"$insertarray);
    
$group['gid'] = $db->insert_id();


    
$settings = array(
                    
'name'            => 'phpcolors',
                    
'title'            => 'PHP Highlight',
                    
'description'    => 'Chcesz włączyć?',
                    
'optionscode'    => 'yesno',
                    
'value'            => 'yes',
                    
'disporder'        => $disporter++,
                    
'gid'            => $group['gid'],
    );

    
$db->insert_query('settings'$settings);

    
$settings1 = array(
                    
'name'            => 'highlight.string',
                    
'title'           => 'Kolor string',
                    
'description'     => 'Tu podaj kolor HEX',
                    
'optionscode'     => 'text',
                    
'value'           => '#C0FF21',
                    
'disporder'       => $disporter++,
                    
'gid'             => $group['gid'],
    );

    
$db->insert_query('settings'$settings1);

    
$settings2 = array(
                    
'name'            => 'highlight.comment',
                    
'title'           => 'Kolor comment',
                    
'description'     => 'Tu podaj kolor HEX',
                    
'optionscode'     => 'text',
                    
'value'           => '#1E90FF',
                    
'disporder'       => $disporter++,
                    
'gid'             => $group['gid'],
    );

    
$db->insert_query('settings'$settings2);

    
$settings3 = array(
                    
'name'            => 'highlight.keyword',
                    
'title'           => 'Kolor keyword',
                    
'description'     => 'Tu podaj kolor HEX',
                    
'optionscode'     => 'text',
                    
'value'           => '#FFC0CB',
                    
'disporder'       => $disporter++,
                    
'gid'             => $group['gid'],
    );

    
$db->insert_query('settings'$settings3);

    
$settings4 = array(
                    
'name'            => 'highlight.default',
                    
'title'           => 'Kolor default',
                    
'description'     => 'Tu podaj kolor HEX',
                    
'optionscode'     => 'text',
                    
'value'           => '#cecece',
                    
'disporder'       => $disporter++,
                    
'gid'             => $group['gid'],
    );

    
$db->insert_query('settings'$settings4);
    
rebuild_settings();
}

function 
phpcolors_deactivate(){
    global 
$db;
    
$db->delete_query("settings""name='phpcolors'");
    
$db->delete_query("settings""name='highlight.string'");
    
$db->delete_query("settings""name='highlight.comment'");
    
$db->delete_query("settings""name='highlight.keyword'");
    
$db->delete_query("settings""name='highlight.default'");
    
$db->delete_query("settinggroups""name='phpcolors'");
    
rebuild_settings();
}

function 
phpcolors_start(){
    global 
$mybb;
    if(
intval($mybb->settings['phpcolors']) == 1){
        
ini_set('highlight.string'''.$mybb->settings['highlight.string'].'');
        
ini_set('highlight.comment'''.$mybb->settings['highlight.comment'].'');
        
ini_set('highlight.keyword'''.$mybb->settings['highlight.keyword'].'');
        
ini_set('highlight.default'''.$mybb->settings['highlight.default'].'');
    }


no i właśnie nie wiem czy pierwsza część któą podałeś jest dobrze i gdzie usadowić drugą.
opcje są normalnie w acp?
intva to raczej funkcja typu (int), zrob tak

if($mybb->settings['phpcolors'] == 1){
No opcje normalnie są w ACP ale ten kod co podałeś:
if($mybb->settings['phpcolors'] == 1){ 

chcę dodać zaraz po:
$settings = array(
                    
'name'            => 'phpcolors',
                    
'title'            => 'PHP Highlight',
                    
'description'    => 'Chcesz włączyć?',
                    
'optionscode'    => 'yesno',
                    
'value'            => '0',
                    
'disporder'        => $disporter++,
                    
'gid'            => $group['gid'],
    );

    
$db->insert_query('settings'$settings); 
aby po wybraniu opcji Włącz pokazało resztę:
$settings1 = array(
                    
'name'            => 'highlight.string',
                    
'title'           => 'Kolor string',
                    
'description'     => 'Tu podaj kolor HEX',
                    
'optionscode'     => 'text',
                    
'value'           => '#C0FF21',
                    
'disporder'       => $disporter++,
                    
'gid'             => $group['gid'],
    );

    
$db->insert_query('settings'$settings1);

    
$settings2 = array(
                    
'name'            => 'highlight.comment',
                    
'title'           => 'Kolor comment',
                    
'description'     => 'Tu podaj kolor HEX',
                    
'optionscode'     => 'text',
                    
'value'           => '#1E90FF',
                    
'disporder'       => $disporter++,
                    
'gid'             => $group['gid'],
    );

    
$db->insert_query('settings'$settings2);

    
$settings3 = array(
                    
'name'            => 'highlight.keyword',
                    
'title'           => 'Kolor keyword',
                    
'description'     => 'Tu podaj kolor HEX',
                    
'optionscode'     => 'text',
                    
'value'           => '#FFC0CB',
                    
'disporder'       => $disporter++,
                    
'gid'             => $group['gid'],
    );

    
$db->insert_query('settings'$settings3);

    
$settings4 = array(
                    
'name'            => 'highlight.default',
                    
'title'           => 'Kolor default',
                    
'description'     => 'Tu podaj kolor HEX',
                    
'optionscode'     => 'text',
                    
'value'           => '#cecece',
                    
'disporder'       => $disporter++,
                    
'gid'             => $group['gid'],
    );

    
$db->insert_query('settings'$settings4);
    
rebuild_settings(); 
tak to nie zadziala
tu potrzebna bedzie zabawa z javascriptem
musisz znal esc jakiś plugin który tak ma i tam podejrzeć "Jak to jest zrobione"
Pisałem że takie coś ma Fit on Page lecz nie doszukałem się kodu od tego.
wszystko jest w kodzie

$plugins->add_hook("admin_config_settings_change","fitonpage_settings_page");
$plugins->add_hook("admin_page_output_footer","fitonpage_settings_peeker");

function fitonpage_settings_page()
{
    global 
$db$mybb$g33k_settings_peeker;
    
    
$codename basename(__FILE__".php");
    
$prefix 'g33k_'.$codename.'_';
    
    
$query $db->simple_select("settinggroups""gid""name='{$prefix}settings'", array('limit' => 1));
    
$group $db->fetch_array($query);
    
$g33k_settings_peeker = ($mybb->input["gid"] == $group["gid"]) && ($mybb->request_method != "post");
}

function 
fitonpage_settings_peeker()
{
    global 
$g33k_settings_peeker;
    
    
$codename basename(__FILE__".php");
    
$prefix 'g33k_'.$codename.'_';
    
    if(
$g33k_settings_peeker)
        echo 
'<script type="text/javascript">
    Event.observe(window,"load",function(){
        load'
.$prefix.'Peekers();
    });
    function load'
.$prefix.'Peekers(){
        new Peeker($$(".setting_'
.$prefix.'enabled"), $("row_setting_'.$prefix.'resize"), /1/, true);
        new Peeker($$(".setting_'
.$prefix.'enabled"), $("row_setting_'.$prefix.'fluid"), /1/, true);        
        new Peeker($$(".setting_'
.$prefix.'enabled"), $("row_setting_'.$prefix.'topbar_text_class"), /1/, true);        
        new Peeker($$(".setting_'
.$prefix.'enabled"), $("row_setting_'.$prefix.'topbar_bground"), /1/, true);        
        new Peeker($$(".setting_'
.$prefix.'enabled"), $("row_setting_'.$prefix.'topbar_icon"), /1/, true);        
    }
</script>'
;


wystarczy zedytowac
To trzeba cały kod zmienić aby dostosować do tego, a prawdę mówiąc PHP sprawia mi problemy bo za dobrze go nie znam.
Zasada ma zostac
Zmienic masz niektore dane na te z Twojego plginu, nazwy funkcji ...

Wysłane z mojego LG-P700 przy użyciu Tapatalka
No niestety ale modyfikowanie tego nie wycodzi mi, no trudno może potem spróbuje. Kolegę jeszcze zapytam, może pomoże zmienić jak trzeba.
Snake_ napisał 06.07.2014, 18:20:
[Obrazek: modnotice_thx.png]

Nie pisz zbędnych postów



Użytkownicy przeglądający ten wątek:

2 gości