[ Index ] |
PHP Cross Reference of moodle-2.8 |
[Summary view] [Print] [Text view]
1 YUI.add('moodle-tool_capability-search', function (Y, NAME) { 2 3 /** 4 * This file contains the capability overview search functionality. 5 * 6 * @module moodle-tool_capability-search 7 */ 8 9 /** 10 * Constructs a new capability search manager. 11 * 12 * @namespace M.tool_capability 13 * @class Search 14 * @constructor 15 * @extends Base 16 */ 17 var SEARCH = function() { 18 SEARCH.superclass.constructor.apply(this, arguments); 19 }; 20 SEARCH.prototype = { 21 /** 22 * The search form. 23 * @property form 24 * @type Node 25 * @protected 26 */ 27 form : null, 28 /** 29 * The capability select node. 30 * @property select 31 * @type Node 32 * @protected 33 */ 34 select: null, 35 /** 36 * An associative array of search option. Populated from the select node above during initialisation. 37 * @property selectoptions 38 * @type Object 39 * @protected 40 */ 41 selectoptions : {}, 42 /** 43 * The search input field. 44 * @property input 45 * @type Node 46 * @protected 47 */ 48 input: null, 49 /** 50 * The submit button for the form. 51 * @property button 52 * @type Node 53 * @protected 54 */ 55 button: null, 56 /** 57 * The last search node if there is one. 58 * If there is a last search node then the last search term will be persisted between requests. 59 * @property lastsearch 60 * @type Node 61 * @protected 62 */ 63 lastsearch : null, 64 /** 65 * Constructs the search manager. 66 * @method initializer 67 */ 68 initializer : function() { 69 this.form = Y.one('#capability-overview-form'); 70 this.select = this.form.one('select[data-search=capability]'); 71 this.select.setStyle('minWidth', this.select.get('offsetWidth')); 72 this.select.get('options').each(function(option) { 73 var capability = option.get('value'); 74 this.selectoptions[capability] = option; 75 }, this); 76 this.button = this.form.all('input[type=submit]'); 77 this.lastsearch = this.form.one('input[name=search]'); 78 79 var div = Y.Node.create('<div id="capabilitysearchui"></div>'), 80 label = Y.Node.create('<label for="capabilitysearch">'+this.get('strsearch')+'</label>'); 81 this.input = Y.Node.create('<input type="text" id="capabilitysearch" />'); 82 83 div.append(label).append(this.input); 84 85 this.select.insert(div, 'before'); 86 this.select.one('option').setStyle('display', 'none'); 87 88 this.input.on('keyup', this.typed, this); 89 this.select.on('change', this.validate, this); 90 91 if (this.lastsearch) { 92 this.input.set('value', this.lastsearch.get('value')); 93 this.typed(); 94 if (this.select.one('option[selected]')) { 95 this.select.set('scrollTop', this.select.one('option[selected]').get('getX')); 96 } 97 } 98 99 this.validate(); 100 }, 101 /** 102 * Disables the submit button if there are no capabilities selected. 103 * @method validate 104 */ 105 validate : function() { 106 this.button.set('disabled', (this.select.get('value') === '')); 107 }, 108 /** 109 * Called when ever the user types into the search field. 110 * This method hides any capabilities that don't match the search term. 111 * @method typed 112 */ 113 typed : function() { 114 var search = this.input.get('value'), 115 matching = 0, 116 last = null, 117 capability; 118 if (this.lastsearch) { 119 this.lastsearch.set('value', search); 120 } 121 this.select.all('option').remove(); 122 for (capability in this.selectoptions) { 123 if (capability.indexOf(search) >= 0) { 124 matching++; 125 last = this.selectoptions[capability]; 126 this.select.append(this.selectoptions[capability]); 127 } 128 } 129 if (matching === 0) { 130 this.input.addClass("error"); 131 } else { 132 this.input.removeClass("error"); 133 if (matching === 1) { 134 last.set('selected', true); 135 } 136 } 137 this.validate(); 138 } 139 }; 140 Y.extend(SEARCH, Y.Base, SEARCH.prototype, { 141 NAME : 'tool_capability-search', 142 ATTRS : { 143 strsearch : {} 144 } 145 }); 146 147 M.tool_capability = M.tool_capability || {}; 148 149 /** 150 * Initialises capability search functionality. 151 * @static 152 * @method M.tool_capability.init_capability_search 153 * @param {Object} options 154 */ 155 M.tool_capability.init_capability_search = function(options) { 156 new SEARCH(options); 157 }; 158 159 160 }, '@VERSION@', {"requires": ["base", "node"]});
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:29:05 2014 | Cross-referenced by PHPXref 0.7.1 |