[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/lib/form/yui/checkboxcontroller/ -> checkboxcontroller.js (source)

   1  // This file is part of Moodle - http://moodle.org/
   2  //
   3  // Moodle is free software: you can redistribute it and/or modify
   4  // it under the terms of the GNU General Public License as published by
   5  // the Free Software Foundation, either version 3 of the License, or
   6  // (at your option) any later version.
   7  //
   8  // Moodle is distributed in the hope that it will be useful,
   9  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  10  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11  // GNU General Public License for more details.
  12  //
  13  // You should have received a copy of the GNU General Public License
  14  // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
  15  
  16  
  17  /**
  18   * Group of date and time input element
  19   *
  20   * Contains class for a group of elements used to input a date and time.
  21   *
  22   * @package   core_form
  23   * @copyright 2012 Rajesh Taneja <rajesh@moodle.com>
  24   * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  25   */
  26  YUI.add('moodle-form-checkboxcontroller', function(Y) {
  27      var checkboxcontroller = function() {
  28          checkboxcontroller.superclass.constructor.apply(this, arguments);
  29      }
  30  
  31      Y.extend(checkboxcontroller, Y.Base, {
  32          _controllervaluenode : null,
  33          _checkboxclass : null,
  34  
  35          /*
  36           * Initialize script if all params passed.
  37           *
  38           * @param object params values passed while initalizing script
  39           */
  40          initializer : function(params) {
  41              if (params && params.checkboxcontroller &&
  42                  params.controllerbutton &&
  43                  params.checkboxclass) {
  44                 // Id of controller node which keeps value in html.
  45                 this._controllervaluenode = '#id_'+params.checkboxcontroller;
  46  
  47                 // Checkboxes class name by which checkboxes will be selected
  48                 this._checkboxclass = '.'+params.checkboxclass;
  49  
  50                 // Replace submit button with link.
  51                 this.replaceButton('#id_'+params.controllerbutton);
  52              }
  53          },
  54  
  55          /**
  56           * Replace controller button with link and add event.
  57           *
  58           * @param string controllerbutton id of the controller button which needs to be replaced
  59           */
  60          replaceButton : function(controllerbutton) {
  61              var controllerbutton = Y.one(controllerbutton);
  62              var linkname = controllerbutton.get('value');
  63              // Link node which will replace controller button
  64              var link = Y.Node.create('<a href="#">'+linkname+'</a>');
  65  
  66              // Attach onclick event to link
  67              link.on('click', this.onClick, this);
  68              // Hide controller button
  69              controllerbutton.hide();
  70              // Insert link node
  71              controllerbutton.get('parentNode').insert(link, controllerbutton.get('lastNode'));
  72          },
  73  
  74          /**
  75           * Onclick event will be handled.
  76           *
  77           * @param Event e
  78           */
  79          onClick : function(e) {
  80              e.preventDefault();
  81              this.switchGroupState();
  82          },
  83  
  84          /**
  85           * Toggles checkboxes status belong to a group
  86           */
  87          switchGroupState : function() {
  88              if (this._checkboxclass) {
  89                  // Value which should be set on checkboxes
  90                  var newvalue = '';
  91                  // Get controller node which keeps value
  92                  var controllervaluenode = Y.one(this._controllervaluenode);
  93                  // Get all checkboxes with
  94                  var checkboxes = Y.all(this._checkboxclass);
  95  
  96                  // Toggle checkboxes in group, depending on conroller value
  97                  if (controllervaluenode.get('value') == 1) {
  98                      controllervaluenode.set('value', '0');
  99                  } else {
 100                      controllervaluenode.set('value', '1');
 101                      newvalue = 'checked';
 102                  }
 103                  checkboxes.each(function(checkbox){
 104                      if (!checkbox.get('disabled')) {
 105                          checkbox.set('checked', newvalue);
 106                      }
 107                  });
 108              }
 109          }
 110      });
 111  
 112      M.form = M.form || {};
 113  
 114      M.form.checkboxcontroller = function(params) {
 115          return new checkboxcontroller(params);
 116      }
 117  }, '@VERSION@', {requires:['base', 'node']});


Generated: Thu Aug 11 10:00:09 2016 Cross-referenced by PHPXref 0.7.1