MyBB Community Forums

Full Version: generate_yes_no_radio in acp module [solved]
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi,

i'm working on a module for the acp and would like to add the same feature as in ACP->Configuration->Settings->Board Online / Offline, where "Board Closed Reason" is hidden/shown in dependance of the radiobuttons above.

Is there a way?

My code so far:
if($mybb->input['action'] == "add_division")
{
    $page->add_breadcrumb_item($lang->add_division);
    $page->output_header($lang->add_division);
    $page->output_nav_tabs($sub_tabs, 'add_division');

    $form = new Form("index.php?module=vnexs&action=add_division", "post");
    if($errors)
    {
            $page->output_inline_error($errors);
    }
    $form_container = new FormContainer($lang->add_division);
    $form_container->output_row($lang->add_division_name." <em>*</em>", $lang->add_division_name_description, $form->generate_text_box('name', $mybb->input['name'], array('id' => 'name')), 'name');

    $form_container->output_row(
            $lang->add_division_population_dependend, 
            $lang->add_division_population_dependend_description, 
            $form->generate_yes_no_radio(
                    'population_dependend', 
                    $mybb->input['population_dependend']));
    
    $form_container->output_row(
            $lang->add_division_min_population, 
            $lang->add_division_min_population_description, 
            $form->generate_text_box('min_population', $mybb->input['min_population']), 
            '', '',  array('id' => 'min_population'));

    $form_container->end();
    $buttons[] = $form->generate_submit_button($lang->save);
    $form->output_submit_wrapper($buttons);
    $form->end();

    $page->output_footer();
}

function print_setting_peekers()
{
    echo '<script type="text/javascript" src="./jscripts/peeker.js"></script>
        <script type="text/javascript">
            Event.observe(window, "load", function() {
                loadPeekers();			
            });
            function loadPeekers()
            {
                new Peeker($$(".setting_population_dependend"), $("min_population"), /1/, true);
            }
        </script>';
}

I got it Smile

The generalized solution:
if($mybb->input['action'] == "myaction")
{
    $page->add_breadcrumb_item($lang->myaction);
    $page->output_header($lang->myaction);
    $page->output_nav_tabs($sub_tabs, 'myaction');

    $form = new Form("index.php?module=vnexs&amp;action=myaction", "post");
    if($errors)
    {
            $page->output_inline_error($errors);
    }
    $form_container = new FormContainer($lang->myaction);
    $form_container->output_row($lang->myaction_name." <em>*</em>", $lang->myaction_name_description, $form->generate_text_box('name', $mybb->input['name'], array('id' => 'name')), 'name');

    $form_container->output_row(
            $lang->myaction_setting_1, 
            $lang->myaction_setting_1_description, 
            $form->generate_yes_no_radio('setting_1', $mybb->input['setting_1'], '', array('class' => 'setting_1', 'id' => 'setting_1_yes'), array('class' => 'setting_1', 'id' => 'setting_1_no'))
    );
    
    $form_container->output_row(
            $lang->setting_2 
            $lang->setting_2_description, 
            $form->generate_text_box('setting_2', $mybb->input['setting_2']), '', '',  array('id' => 'row_setting_2')
    );

    $form_container->end();
    $buttons[] = $form->generate_submit_button($lang->save);
    $form->output_submit_wrapper($buttons);
    $form->end();

    print_setting_peekers();

    $page->output_footer();
}

function print_setting_peekers()
{
    echo '<script type="text/javascript" src="./jscripts/peeker.js"></script>
        <script type="text/javascript">
            Event.observe(window, "load", function() {
                loadPeekers();			
            });
            function loadPeekers()
            {
                new Peeker($$(".setting_1"), $("row_setting_2"), /1/, true);
            }
        </script>';
}