caboose-cms 0.7.59 → 0.7.60

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b8330146252102d4ebee9f4792970c1a4d6a075b
4
- data.tar.gz: 9f98219c9420295379b13db368a13b00de80176f
3
+ metadata.gz: 5ad4bf6009e7d52ac46a3190b3c4889d0e89c076
4
+ data.tar.gz: cf31d15f32e0ead99aff9cff064c3d29bf80bceb
5
5
  SHA512:
6
- metadata.gz: 0df8ce931fc68c685cd53416d6a5ac223afec93285b2ff5237e91abb879ec3b05acd71f256ef65ba1b986b8d6b0f463c535fb43acec6eadc80c50bcc74da552e
7
- data.tar.gz: 6098e6a6d7d4102a2af8d3b8810434d855ab06fc5edb26ffce65fd689ea8e1886469d28cd5451ff35f6855d069e1de382df48db0b0753dcd652925ca3415d341
6
+ metadata.gz: d75db978103fa75b118f2aafe0e110745efd5a98dfeea8c494d51a751b47f76c83ebe2c5ae029437df9bc5f8cb88b3e1201669c02d75ac6cd04b7409840d975c
7
+ data.tar.gz: 193149455efe7ea7982c3a19f25e03c3e3a8e9c94570a3cb11a6f60c5c4a341ce81209578353d5182aaaf2f2b0ef86125959b3046f59ec3d5e793c98133350d8
@@ -38,7 +38,7 @@ Attribute.prototype = {
38
38
  s3: false,
39
39
 
40
40
  save: function(after) {
41
- if (this.before_update) this.before_update();
41
+ //if (this.before_update) this.before_update();
42
42
  var this2 = this;
43
43
  $.ajax({
44
44
  url: this.update_url,
@@ -53,7 +53,7 @@ Attribute.prototype = {
53
53
  this2.value_clean = this2.value;
54
54
  }
55
55
  if (after) after(resp);
56
- if (this2.after_update) this2.after_update(this2);
56
+ //if (this2.after_update) this2.after_update(this2);
57
57
  },
58
58
  error: function() {
59
59
  if (after) after(false);
@@ -74,18 +74,17 @@ BoundCheckbox = BoundControl.extend({
74
74
  },
75
75
 
76
76
  save: function() {
77
-
77
+ var that = this;
78
78
  this.attribute.value = $('#'+this.el).prop('checked') ? 1 : 0;
79
-
80
- var this2 = this;
81
- this.model.save(this.attribute, function(resp) {
82
- $('#'+this2.el+'_check a').removeClass('loading');
83
- if (resp.error) this2.error(resp.error);
79
+
80
+ this.binder.save(this.attribute, function(resp) {
81
+ $('#'+that.el+'_check a').removeClass('loading');
82
+ if (resp.error) that.error(resp.error);
84
83
  else
85
84
  {
86
- if (this2.binder.success)
87
- this2.binder.success(this2);
88
- this2.view();
85
+ if (that.binder.success)
86
+ that.binder.success(that);
87
+ that.view();
89
88
  }
90
89
  });
91
90
  },
@@ -127,6 +127,7 @@ BoundCheckboxMultiple = BoundControl.extend({
127
127
  var data = {};
128
128
  data[this.attribute.name] = [value,(checked ? 1 : 0)];
129
129
 
130
+
130
131
  $.ajax({
131
132
  url: this.attribute.update_url,
132
133
  type: 'put',
@@ -139,9 +140,9 @@ BoundCheckboxMultiple = BoundControl.extend({
139
140
  that.attribute[thing] = resp.attributes[that.attribute.name][thing];
140
141
  that.attribute.value_clean = that.attribute.value;
141
142
 
142
- that.binder.active_control = that;
143
- if (that.binder.success)
144
- that.binder.success(that);
143
+ b.active_control = that;
144
+ if (this2.binder.success)
145
+ this2.binder.success(that);
145
146
  }
146
147
  else if (resp.error)
147
148
  that.error(resp.error);
@@ -88,7 +88,8 @@ BoundCode = BoundControl.extend({
88
88
  //this.hide_controls();
89
89
  //this.show_loader();
90
90
  //var this2 = this;
91
- //this.model.save(this.attribute, function(resp) {
91
+ //
92
+ //this.binder.save(this.attribute, function(resp) {
92
93
  // if (resp.error)
93
94
  // {
94
95
  // this2.hide_loader();
@@ -87,9 +87,9 @@ BoundColor = BoundControl.extend({
87
87
  return;
88
88
 
89
89
  //this.show_loader();
90
- var this2 = this;
90
+ var this2 = this;
91
91
 
92
- this.model.save(this.attribute, function(resp) {
92
+ this.binder.save(this.attribute, function(resp) {
93
93
  this2.save_attempts = 0;
94
94
  if (resp.error)
95
95
  {
@@ -1,17 +1,17 @@
1
1
 
2
2
  BoundControl = Class.extend({
3
3
 
4
- el: false, // The DOM element to which the object is bound
5
- model: false, // The model to which the control is bound
6
- attribute: false, // The attribute of the model
7
- binder: false, // The model binder
8
-
9
- init: function(params) {}, // Constructor
10
- view: function() {}, // Sets the control in a view state
11
- edit: function() {}, // Sets the control in an edit state
12
- save: function() {}, // Sends the value in the control to the model to be saved
4
+ el: false, // The DOM element to which the object is bound
5
+ model: false, // The model to which the control is bound
6
+ attribute: false, // The attribute of the model
7
+ binder: false, // The model binder
8
+
9
+ init: function(params) {}, // Constructor
10
+ view: function() {}, // Sets the control in a view state
11
+ edit: function() {}, // Sets the control in an edit state
12
+ save: function() {}, // Sends the value in the control to the model to be saved
13
13
  cancel: function() {}, // Cancels the edit
14
- error: function(str) {}, // Shows an error
14
+ error: function(str) {}, // Shows an error
15
15
 
16
16
  show_loader: function() {
17
17
  var w = $('#'+this.el).outerWidth();
@@ -77,7 +77,7 @@ BoundDate = BoundControl.extend({
77
77
  this.show_loader();
78
78
  var this2 = this;
79
79
 
80
- this.model.save(this.attribute, function(resp) {
80
+ this.binder.save(this.attribute, function(resp) {
81
81
  this2.save_attempts = 0;
82
82
  if (resp.error)
83
83
  {
@@ -73,7 +73,7 @@ BoundDateTime = BoundControl.extend({
73
73
  this.show_loader();
74
74
  var this2 = this;
75
75
 
76
- this.model.save(this.attribute, function(resp) {
76
+ this.binder.save(this.attribute, function(resp) {
77
77
  this2.save_attempts = 0;
78
78
  if (resp.error)
79
79
  {
@@ -73,8 +73,8 @@ BoundRichText = BoundControl.extend({
73
73
  if (this.attribute.value == this.attribute.value_clean)
74
74
  return;
75
75
 
76
- var this2 = this;
77
- this.model.save(this.attribute, function(resp) {
76
+ var this2 = this;
77
+ this.binder.save(this.attribute, function(resp) {
78
78
  if (resp.error)
79
79
  {
80
80
  alert(resp.error);
@@ -9,9 +9,11 @@ BoundSelect = BoundControl.extend({
9
9
  message: false,
10
10
  placeholder: false,
11
11
 
12
- init: function(params) {
12
+ init: function(params) {
13
+ //console.log('control.model.id = ' + this.model.id);
13
14
  for (var thing in params)
14
15
  this[thing] = params[thing];
16
+ //console.log('control.model.id = ' + this.model.id);
15
17
 
16
18
  this.el = this.el ? this.el : this.model.name.toLowerCase() + '_' + this.model.id + '_' + this.attribute.name;
17
19
  this.message = this.el + '_message';
@@ -92,7 +94,7 @@ BoundSelect = BoundControl.extend({
92
94
  if (typeof this2.attribute.quick_add_url == 'string')
93
95
  caboose_modal_url(this2.attribute.quick_add_url);
94
96
  else
95
- caboose_modal_url(this2.attribute.quick_add_url(this2.model));
97
+ caboose_modal_url(this2.attribute.quick_add_url(this2.model()));
96
98
  }
97
99
  else
98
100
  {
@@ -181,7 +183,7 @@ BoundSelect = BoundControl.extend({
181
183
  this.attribute.text = '-- Empty --';
182
184
 
183
185
  var this2 = this;
184
- this.model.save(this.attribute, function(resp) {
186
+ this.binder.save(this.attribute, function(resp) {
185
187
  $(this2.attribute.options).each(function(i,opt) {
186
188
  if (opt.value == this2.attribute.value)
187
189
  this2.attribute.text = opt.text;
@@ -64,10 +64,10 @@ BoundText = BoundControl.extend({
64
64
  if (this.attribute.value == this.attribute.value_clean)
65
65
  return;
66
66
 
67
- this.show_loader();
68
- var this2 = this;
67
+ this.show_loader();
68
+ var this2 = this;
69
69
 
70
- this.model.save(this.attribute, function(resp) {
70
+ this.binder.save(this.attribute, function(resp) {
71
71
  this2.save_attempts = 0;
72
72
  if (resp.error)
73
73
  {
@@ -111,6 +111,13 @@ BoundText = BoundControl.extend({
111
111
  $('#'+this.el+'_message').slideDown();
112
112
  var this2 = this;
113
113
  setTimeout(function() { $('#'+this2.el+'_message').slideUp(function() { $(this).empty(); }); }, 3000);
114
+ },
115
+
116
+ set_value: function(v) {
117
+ var that = this;
118
+ $('#'+this.el).val(v);
119
+ this.attribute.value = v;
120
+ this.attribute.value_clean = v;
114
121
  }
115
122
 
116
123
  });
@@ -77,28 +77,29 @@ BoundTextarea = BoundControl.extend({
77
77
  },
78
78
 
79
79
  save: function() {
80
-
80
+ var that = this;
81
+
81
82
  this.attribute.value = $('#'+this.el).val();
82
83
  if (this.attribute.value == this.attribute.value_clean)
83
84
  return;
84
-
85
+
85
86
  this.hide_controls();
86
87
  this.show_loader();
87
- var this2 = this;
88
- this.model.save(this.attribute, function(resp) {
88
+
89
+ this.binder.save(this.attribute, function(resp) {
89
90
  if (resp.error)
90
91
  {
91
- this2.hide_loader();
92
- this2.error(resp.error);
92
+ that.hide_loader();
93
+ that.error(resp.error);
93
94
  }
94
95
  else
95
96
  {
96
- this2.show_check(500);
97
- $('#'+this2.el).val(this2.attribute.value);
98
- $('#'+this2.el).removeClass('mb_dirty');
97
+ that.show_check(500);
98
+ $('#'+that.el).val(that.attribute.value);
99
+ $('#'+that.el).removeClass('mb_dirty');
99
100
 
100
- if (this2.binder.success)
101
- this2.binder.success(this2);
101
+ if (that.binder.success)
102
+ that.binder.success(that);
102
103
  }
103
104
  });
104
105
  },
@@ -144,7 +144,8 @@ BoundTime = BoundControl.extend({
144
144
  save: function() {
145
145
  this.attribute.value = $('#'+this.el).val();
146
146
  var this2 = this;
147
- this.model.save(this.attribute, function(resp) {
147
+
148
+ this.binder.save(this.attribute, function(resp) {
148
149
  $(this2.attribute.options).each(function(i,opt) {
149
150
  if (opt.value == this2.attribute.value)
150
151
  this2.attribute.text = opt.text;
@@ -20,11 +20,12 @@ Model.prototype = {
20
20
  options_url: false,
21
21
  options: false,
22
22
 
23
- save: function(attrib, after) {
24
- if (!attrib.update_url)
25
- attrib.update_url = this.update_url;
26
- attrib.save(after);
27
- },
23
+ // Moved to model binder
24
+ //save: function(attrib, after) {
25
+ // if (!attrib.update_url)
26
+ // attrib.update_url = this.update_url;
27
+ // attrib.save(after);
28
+ //},
28
29
 
29
30
  populate_options: function(after, i) {
30
31
  if (i == null || i == undefined)
@@ -33,5 +34,10 @@ Model.prototype = {
33
34
  after();
34
35
  var this2 = this;
35
36
  this.attributes[i].populate_options(function() { this2.populate_options(after, i+1); });
37
+ },
38
+
39
+ name_and_id: function() {
40
+ return this.model_name.toLowerCase() + '_' + this.model_id;
36
41
  }
42
+
37
43
  };
@@ -2,11 +2,22 @@
2
2
  var all_model_binders = [];
3
3
  var ModelBinder = function(params) {
4
4
  this.init(params);
5
- all_model_binders[all_model_binders.length] = this;
5
+ ModelBinder.add_to_all_model_binders(this);
6
6
  };
7
7
 
8
- ModelBinder.tinymce_init = function() {
9
- alert('ModelBinder.tinymce_init');
8
+ ModelBinder.add_to_all_model_binders = function(mb) {
9
+ var exists = false;
10
+ for (var i=0; i<all_model_binders.length; i++) {
11
+ var m = all_model_binders[i].model;
12
+ if (m.name == mb.model.name && parseInt(m.id) == parseInt(mb.model.id))
13
+ {
14
+ all_model_binders[i] = mb;
15
+ exists = true;
16
+ break;
17
+ }
18
+ }
19
+ if (!exists)
20
+ all_model_binders[all_model_binders.length] = mb;
10
21
  };
11
22
 
12
23
  ModelBinder.remove_from_all_model_binders = function(model_name, id) {
@@ -18,6 +29,10 @@ ModelBinder.remove_from_all_model_binders = function(model_name, id) {
18
29
  all_model_binders = arr;
19
30
  };
20
31
 
32
+ ModelBinder.tinymce_init = function() {
33
+ alert('ModelBinder.tinymce_init');
34
+ };
35
+
21
36
  ModelBinder.tinymce_control = function(id) {
22
37
  var control = false;
23
38
  $.each(all_model_binders, function(i, mb) {
@@ -34,27 +49,47 @@ ModelBinder.tinymce_current_control = function() {
34
49
  return ModelBinder.tinymce_control(id);
35
50
  };
36
51
 
37
- ModelBinder.find_control = function(model_name, model_id, attribute_name) {
38
- var control = false;
39
- $.each(all_model_binders, function(i, mb) {
52
+ ModelBinder.find_control = function(model_name, model_id, attribute_name) {
53
+ for (var i=0; i<all_model_binders.length; i++) {
54
+ var mb = all_model_binders[i];
40
55
  if (mb.model.name == model_name && mb.model.id == model_id) {
41
- $.each(mb.controls, function(i, c) {
42
- if (c.attribute.name == attribute_name) { control = c; return false; }
43
- });
44
- }
45
- if (control) return false;
46
- });
47
- return control;
56
+ for (var j=0; j<mb.controls.length; j++) {
57
+ var c = mb.controls[j];
58
+ if (c.attribute.name == attribute_name) {
59
+ return c;
60
+ }
61
+ }
62
+ }
63
+ }
64
+ return false;
48
65
  };
49
66
 
50
- ModelBinder.repopulate_options_for_control = function(model_name, model_id, attribute_name) {
51
- var control = ModelBinder.find_control(model_name, model_id, attribute_name);
52
- if (control)
53
- {
54
- control.attribute.options = false;
55
- control.init({});
56
- }
57
- };
67
+ //ModelBinder.print_all_model_binders = function() {
68
+ // console.log("-----------------------------------------------------------------");
69
+ // console.log("All model binders");
70
+ // for (var i=0; i<all_model_binders.length; i++) {
71
+ // var mb = all_model_binders[i];
72
+ // console.log(mb.model.name + ' | ' + mb.model.id);
73
+ // }
74
+ // console.log("-----------------------------------------------------------------");
75
+ //};
76
+
77
+ //ModelBinder.print_all_controls = function() {
78
+ //
79
+ // count = 0;
80
+ // for (var i=0; i<all_model_binders.length; i++) { count += all_model_binders[i].controls.length; }
81
+ //
82
+ // console.log("-----------------------------------------------------------------");
83
+ // console.log("All controls (" + count + ")");
84
+ // for (var i=0; i<all_model_binders.length; i++) {
85
+ // var mb = all_model_binders[i];
86
+ // for (var j=0; j<mb.controls.length; j++) {
87
+ // var c = mb.controls[j];
88
+ // console.log(mb.model.name + ' | ' + mb.model.id + ' | ' + c.attribute.name); //c.model.name + ' | ' + c.model.id + ' | ' + c.attribute.name + ' | ' + c.attribute.options_url);
89
+ // }
90
+ // }
91
+ // console.log("-----------------------------------------------------------------");
92
+ //};
58
93
 
59
94
  //==============================================================================
60
95
 
@@ -90,14 +125,16 @@ ModelBinder.wait_for_options = function(url, after) {
90
125
 
91
126
  ModelBinder.prototype = {
92
127
  model: false,
93
- controls: [],
128
+ controls: false,
94
129
  on_load: false,
95
130
  success: false,
96
131
  authenticity_token: false,
97
- options: {},
132
+ options: false,
98
133
 
99
134
  init: function(params) {
100
- var that = this;
135
+ var that = this;
136
+ that.controls = [];
137
+ that.options = {};
101
138
  that.model = new Model({
102
139
  name: params['name'],
103
140
  id: params['id'],
@@ -111,17 +148,19 @@ ModelBinder.prototype = {
111
148
 
112
149
  $.each(params['attributes'], function(i, attrib) {
113
150
  that.model.attributes[that.model.attributes.length] = new Attribute(attrib);
114
- });
151
+ });
115
152
  $.each(that.model.attributes, function(i, attrib) {
116
153
  var opts = {
117
- model: that.model,
118
154
  attribute: attrib,
155
+ model: that.model,
119
156
  binder: that
120
157
  };
158
+ //console.log(that.model.name + ' | ' + that.model.id + ' | ' + attrib.name);
121
159
  var control = false;
122
160
 
123
161
  if (attrib.type == 'text') control = new BoundText(opts);
124
162
  else if (attrib.type == 'color') control = new BoundColor(opts);
163
+ else if (attrib.type == 'date') control = new BoundDate(opts);
125
164
  else if (attrib.type == 'datetime') control = new BoundDateTime(opts);
126
165
  else if (attrib.type == 'date-time') control = new BoundDateTime(opts);
127
166
  else if (attrib.type == 'date_time') control = new BoundDateTime(opts);
@@ -137,13 +176,15 @@ ModelBinder.prototype = {
137
176
  {
138
177
  control_class = "";
139
178
  $.each(attrib.type.split('-'), function(j, word) { control_class += word.charAt(0).toUpperCase() + word.toLowerCase().slice(1); });
140
- control = eval("new Bound" + control_class + "(opts)");
141
- }
142
- that.controls.push(control);
143
- });
179
+ control = eval("new Bound" + control_class + "(opts)");
180
+ //console.log("ModelBinder Error: unsupported attribute type \"" + attrib.type + "\"");
181
+ }
182
+ if (control)
183
+ that.controls.push(control);
184
+ });
144
185
 
145
186
  if (that.on_load)
146
- that.on_load();
187
+ that.on_load();
147
188
  },
148
189
 
149
190
  reinit: function(control_id)
@@ -174,5 +215,26 @@ ModelBinder.prototype = {
174
215
  $(this.controls).each(function(i, control) {
175
216
  control.cancel();
176
217
  });
218
+ },
219
+
220
+ save: function(attrib, after) {
221
+ if (!attrib.update_url)
222
+ attrib.update_url = this.model.update_url;
223
+ if (attrib.before_update) attrib.before_update(this);
224
+ attrib.save(after);
225
+ if (attrib.after_update) attrib.after_update(this);
226
+ },
227
+
228
+ repopulate_options_for_control: function(attribute_name)
229
+ {
230
+ for (var i=0; i<this.controls.length; i++)
231
+ {
232
+ var c = this.controls[i];
233
+ if (c.attribute.name == attribute_name)
234
+ {
235
+ c.attribute.options = false;
236
+ c.init({});
237
+ }
238
+ }
177
239
  }
178
240
  };
@@ -1,3 +1,3 @@
1
1
  module Caboose
2
- VERSION = '0.7.59'
2
+ VERSION = '0.7.60'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caboose-cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.59
4
+ version: 0.7.60
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Barry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-07 00:00:00.000000000 Z
11
+ date: 2016-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg