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.
Opcja on/off w pluginie
najpierw podczas instalacji pluginu dodajesz sobie taka opcje do bazy
potem w swojej funkcji zwykłym warunkiem sprawdzasz opcje off = 0 on = 1
http://docs.mybb.com/Plugin_Settings.html
$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:
no i właśnie nie wiem czy pierwsza część któą podałeś jest dobrze i gdzie usadowić drugą.
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:opcje są normalnie w acp?
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ą.
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ś:
chcę dodać zaraz po:
aby po wybraniu opcji Włącz pokazało resztę:
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);
$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"
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");
wystarczy zedytowac
$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
Zmienic masz niektore dane na te z Twojego plginu, nazwy funkcji ...
Wysłane z mojego LG-P700 przy użyciu Tapatalka
Użytkownicy przeglądający ten wątek:
2 gości