Guest User

Untitled

a guest
Jun 18th, 2018
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.47 KB | None | 0 0
  1. var Dialog = new Class({
  2. include: Options,
  3.  
  4. Options: {
  5. title: '',
  6. text: '',
  7. fields: {},
  8. triggers: [],
  9. },
  10. initialize: function(options) {
  11. this.setOptions(options);
  12. },
  13. show: function() {
  14. var lightbox = new Lightbox({showCloseButton: false});
  15. var $content = $E('div');
  16.  
  17. lightbox.setTitle(this.options.title);
  18.  
  19. this._initText($content);
  20. this._initFields($content);
  21. this._initTriggers(lightbox);
  22.  
  23. lightbox.show($content);
  24. },
  25. _initText: function($parent) {
  26. if(this.options.text) {
  27. $E('div').text(this.options.text).insertTo($parent);
  28. }
  29. },
  30. _initFields: function($parent) {
  31. this._$fields = {};
  32.  
  33. for(var name in this.options.fields) {
  34. var content = this.options.fields[name];
  35.  
  36. if(isString(content)) {
  37. var $label = $E('label').text(name + ':');
  38. var $input = $E('input', {type: 'text', value: content});
  39.  
  40. $input.insertTo($label);
  41. $label.insertTo($parent);
  42.  
  43. $input.getValue = function() {
  44. return this.get('value');
  45. };
  46.  
  47. this._$fields[name] = $input;
  48. }
  49. }
  50. },
  51. _initTriggers: function(lightbox) {
  52. var scope = this;
  53. var i = 2;
  54.  
  55. this.options.triggers.each(function(name) {
  56. var trigger = new Button(name);
  57. var triggerHandlerName = 'on' + name;
  58.  
  59. if(triggerHandlerName in scope.options) {
  60. var triggerHandler = scope.options[triggerHandlerName];
  61.  
  62. var handler = function() {
  63. var fields = scope._getFields();
  64.  
  65. triggerHandler(fields);
  66. lightbox.hide();
  67. };
  68.  
  69. trigger.on('click', handler);
  70. }
  71. else {
  72. trigger.on('click', function() {
  73. lightbox.hide();
  74. });
  75. }
  76.  
  77. var $par = lightbox.find('.rui-lightbox-navigation')[0];
  78.  
  79. trigger.element.setStyle('left', i + 'em');
  80. trigger.insertTo($par);
  81.  
  82. i += 3;
  83. });
  84. },
  85. _getFields: function() {
  86. var ret = {};
  87.  
  88. for(var name in this._$fields) {
  89. var $field = this._$fields[name];
  90.  
  91. ret[name.toLowerCase()] = $field.getValue();
  92. }
  93.  
  94. return ret;
  95. }
  96. });
Add Comment
Please, Sign In to add comment