From 74f97ce5a99d4d16d67ef5db058faaac1d150a0b Mon Sep 17 00:00:00 2001 From: Qiang Xue Date: Thu, 2 May 2013 16:40:57 -0400 Subject: [PATCH] refactored yii module. --- framework/assets/yii.js | 63 +++++++++++++++++++++++++++++--------- framework/assets/yii.validation.js | 2 +- 2 files changed, 50 insertions(+), 15 deletions(-) diff --git a/framework/assets/yii.js b/framework/assets/yii.js index 3a23763..1e847c4 100644 --- a/framework/assets/yii.js +++ b/framework/assets/yii.js @@ -7,24 +7,59 @@ * @author Qiang Xue * @since 2.0 */ + +/** + * yii is the root module for all Yii JavaScript modules. + * It implements a mechanism of organizing JavaScript code in modules through the function "yii.initModule()". + * + * Each module should be named as "x.y.z", where "x" stands for the root module (for the Yii core code, this is "yii"). + * + * A module may be structured as follows: + * + * ~~~ + * yii.sample = (function($) { + * var pub = { + * // whether this module is currently active. If false, init() will not be called for this module + * // it will also not be called for all its child modules. If this property is undefined, it means true. + * isActive: true, + * init: function() { + * // ... module initialization code go here ... + * }, + * + * // ... other public functions and properties go here ... + * }; + * + * // ... private functions and properties go here ... + * + * return pub; + * }); + * ~~~ + * + * Using this structure, you can define public and private functions/properties for a module. + * Private functions/properties are only visible within the module, while public functions/properties + * may be accessed outside of the module. For example, you can access "yii.sample.init()". + * + * You must call "yii.initModule()" once for the root module of all your modules. + */ yii = (function ($) { var pub = { - version: '2.0' + version: '2.0', + initModule: function (module) { + if (module.isActive === undefined || module.isActive) { + if ($.isFunction(module.init)) { + module.init(); + } + $.each(module, function () { + if ($.isPlainObject(this)) { + pub.initModule(this); + } + }); + } + } }; return pub; })(jQuery); -jQuery(document).ready(function ($) { - // call the init() method of every module - var init = function (module) { - if ($.isFunction(module.init) && (module.trigger == undefined || $(module.trigger).length)) { - module.init(); - } - $.each(module, function () { - if ($.isPlainObject(this)) { - init(this); - } - }); - }; - init(yii); +jQuery(document).ready(function () { + yii.initModule(yii); }); diff --git a/framework/assets/yii.validation.js b/framework/assets/yii.validation.js index 118ad00..5ca8e4e 100644 --- a/framework/assets/yii.validation.js +++ b/framework/assets/yii.validation.js @@ -1,7 +1,7 @@ /** * Yii validation module. * - * This is the JavaScript widget used by the yii\widgets\ActiveForm widget. + * This JavaScript module provides the validation methods for the built-in validaotrs. * * @link http://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC