Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var Dialog = new Class({
- include: Options,
- Options: {
- title: '',
- text: '',
- fields: {},
- triggers: [],
- },
- initialize: function(options) {
- this.setOptions(options);
- },
- show: function() {
- var lightbox = new Lightbox({showCloseButton: false});
- var $content = $E('div');
- lightbox.setTitle(this.options.title);
- this._initText($content);
- this._initFields($content);
- this._initTriggers(lightbox);
- lightbox.show($content);
- },
- _initText: function($parent) {
- if(this.options.text) {
- $E('div').text(this.options.text).insertTo($parent);
- }
- },
- _initFields: function($parent) {
- this._$fields = {};
- for(var name in this.options.fields) {
- var content = this.options.fields[name];
- if(isString(content)) {
- var $label = $E('label').text(name + ':');
- var $input = $E('input', {type: 'text', value: content});
- $input.insertTo($label);
- $label.insertTo($parent);
- $input.getValue = function() {
- return this.get('value');
- };
- this._$fields[name] = $input;
- }
- }
- },
- _initTriggers: function(lightbox) {
- var scope = this;
- var i = 2;
- this.options.triggers.each(function(name) {
- var trigger = new Button(name);
- var triggerHandlerName = 'on' + name;
- if(triggerHandlerName in scope.options) {
- var triggerHandler = scope.options[triggerHandlerName];
- var handler = function() {
- var fields = scope._getFields();
- triggerHandler(fields);
- lightbox.hide();
- };
- trigger.on('click', handler);
- }
- else {
- trigger.on('click', function() {
- lightbox.hide();
- });
- }
- var $par = lightbox.find('.rui-lightbox-navigation')[0];
- trigger.element.setStyle('left', i + 'em');
- trigger.insertTo($par);
- i += 3;
- });
- },
- _getFields: function() {
- var ret = {};
- for(var name in this._$fields) {
- var $field = this._$fields[name];
- ret[name.toLowerCase()] = $field.getValue();
- }
- return ret;
- }
- });
Add Comment
Please, Sign In to add comment