Webboard

Pełna wersja: Opcja on/off w pluginie
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
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

Kod PHP:
    $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

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



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

Kod PHP:
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:

Kod PHP:
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ś:
Kod PHP:
if($mybb->settings['phpcolors'] == 1){ 

chcę dodać zaraz po:
Kod PHP:
$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ę:
Kod PHP:
$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");

Kod PHP:
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.