Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Block formslib: Difference between revisions

From MoodleDocs
No edit summary
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
(This is currently a proposal and isn't available for use).
{{obsolete}}
(This is currently a proposal and isn't available for use see [http://tracker.moodle.org/browse/MDL-9641 MDL-9641]).


= Overview =
= Overview =
Line 10: Line 11:
In this file a class needs to be created which follows the naming scheme: block_BLOCKNAME_config_global_form and extends block_config_global_form
In this file a class needs to be created which follows the naming scheme: block_BLOCKNAME_config_global_form and extends block_config_global_form


In your form configuration class you need to implement the block_configuration() method, adding the elements you need with $this->add_config_element(). Using this method means the form elements will be processed when the block configuration is saved.
In your form configuration class you need to implement the block_configuration() method. Elements added will automatically saved in $CFG.


<pre>
<pre>
Line 20: Line 21:


         // add a html editor text field named block_BLOCKNAME_text
         // add a html editor text field named block_BLOCKNAME_text
         $this->add_config_element('htmleditor', 'block_BLOCKNAME_text', get_string('text','BLOCKNAME'));
         $mform->addElement('htmleditor', 'block_BLOCKNAME_text', get_string('text','BLOCKNAME'));


         // This will set the value of the textfield to 'mydefaultstring' or,
         // This will set the default value of the textfield to 'mydefaultstring'. (If $CFG->textfield
        // if $CFG->block_BLOCKNAME_text already exists, it
         // exsts, it will be set to that when the form is loaded)
         // will set the field to the value of that
         $mform->setDefault('mydefaultstring');
         $this->set_config_default('block_BLOCKNAME_text', 'mydefaultstring');


         $mform->setType('block_BLOCKNAME_text', PARAM_RAW);
         $mform->setType('block_BLOCKNAME_text', PARAM_RAW);




      $this->add_config_element('text', 'block_BLOCKNAME_num', get_string('block_BLOCKNAME_num', 'BLOCKNAME'));
        $mform->addElement('text', 'block_BLOCKNAME_num', get_string('block_BLOCKNAME_num', 'BLOCKNAME'));


         $this->set_config_default('block_online_users_timetosee', '5');
         $mform->setDefault('block_online_users_timetosee', '5');


         // Add client side validation which forces the field as numeric
         // Add client side validation which forces the field as numeric
Line 50: Line 50:
In this file a class needs to be created which follows the naming scheme: block_BLOCKNAME_config_instance_form and extends block_config_instance_form.
In this file a class needs to be created which follows the naming scheme: block_BLOCKNAME_config_instance_form and extends block_config_instance_form.


In your form configuration class you need to implement the instance_configuration() method, adding the elements you need with $this->add_config_element(). Using this method means the form elements will be processed when the block configuration is saved.
In your form configuration class you need to implement the instance_configuration() method. Elements added will automatically saved in $block->config


<pre>
<pre>
Line 61: Line 61:


         // add a text field named title
         // add a text field named title
         $this->add_config_element('text','title',get_string('configtitle', 'BLOCKNAME'));
         $mform->addElement('text','title',get_string('configtitle', 'BLOCKNAME'));


         // this will set the form field to 'my title'
         // this will set the form field to 'my title'
         // or if a title string is already stored in the block instance
         // (if a title string is already stored in the block instance
         // configuration, it will set it to that
         // configuration, it will automatically be set it to that)
         $this->set_config_default('title', 'my title string');
         $mform->setDefault('title', 'my title string');


         $mform->setType('title', PARAM_NOTAGS);
         $mform->setType('title', PARAM_NOTAGS);
Line 74: Line 74:
}
}
</pre>
</pre>
= Custom formslib-style functions =
== add_config_element ==
This does the same as addElement, except that is also adds the element to the list  of form elements which need to be saved by the block configuration. Thus it must be used if you wish to save the elememnt value in the block configuration!
== set_config_default ==
<pre>
set_config_default($name, $default = NULL)
</pre>
This will try and set the the element named to its stored value ($CFG->$name, in the case of global configuration, $block->config->$name in the case of instance configuration).
If there is no stored value, the it will set the default to $default (if it exists)
== overriden get_data ==
The block get_data methods will only export form values which were added to the form with add_config_element(), to ensure we only store configuration items we wish to.

Latest revision as of 12:25, 10 November 2013

Warning: This page is no longer in use. The information contained on the page should NOT be seen as relevant or reliable.

(This is currently a proposal and isn't available for use see [https://tracker.moodle.org/browse/MDL-9641 MDL-9641]).

Overview

The block formslib functions are designed to allow developers easily create forms for their blocks. Please read lib/formslib.php for full details about using formslib.

Creating a Global Configuration form

In order to create a global confuration form using formslib, you must create a file /blocks/BLOCKNAME/config_global_form.php

In this file a class needs to be created which follows the naming scheme: block_BLOCKNAME_config_global_form and extends block_config_global_form

In your form configuration class you need to implement the block_configuration() method. Elements added will automatically saved in $CFG.

require_once $CFG->dirroot .'/blocks/block_config_global_form.php';

class block_BLOCKNAME_config_global_form extends block_config_global_form {

    function block_configuration(&$mform){

        // add a html editor text field named block_BLOCKNAME_text
        $mform->addElement('htmleditor', 'block_BLOCKNAME_text', get_string('text','BLOCKNAME'));

        // This will set the default value of the textfield to 'mydefaultstring'. (If $CFG->textfield 
        // exsts, it will be set to that when the form is loaded)
        $mform->setDefault('mydefaultstring');

        $mform->setType('block_BLOCKNAME_text', PARAM_RAW);


        $mform->addElement('text', 'block_BLOCKNAME_num', get_string('block_BLOCKNAME_num', 'BLOCKNAME'));

        $mform->setDefault('block_online_users_timetosee', '5');

        // Add client side validation which forces the field as numeric
        $mform->addRule('block_BLOCKNAME_num', null, 'numeric', null, 'client');

        $mform->setType('block_BLOCKNAME_num', PARAM_INT);

    }

}

Creating a Instance Configuration form

In order to create a global confuration form using formslib, you must create a file /blocks/BLOCKNAME/config_instance_form.php

In this file a class needs to be created which follows the naming scheme: block_BLOCKNAME_config_instance_form and extends block_config_instance_form.

In your form configuration class you need to implement the instance_configuration() method. Elements added will automatically saved in $block->config

<?php
require_once $CFG->dirroot .'/blocks/block_config_instance_form.php';

class block_BLOCKNAME_config_instance_form extends block_config_instance_form {

    function instance_configuration(&$mform){

        // add a text field named title
        $mform->addElement('text','title',get_string('configtitle', 'BLOCKNAME'));

        // this will set the form field to 'my title'
        // (if a title string is already stored in the block instance
        // configuration, it will automatically be set it to that)
        $mform->setDefault('title', 'my title string');

        $mform->setType('title', PARAM_NOTAGS);
        
    }

}