populate-me 0.6.1 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +104 -0
- data/example/config.ru +1 -1
- data/lib/populate_me/admin/__assets__/js/main.js +207 -155
- data/lib/populate_me/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dbda9949e894e8d1c77c8ad65e0bfdd2bf037873
|
4
|
+
data.tar.gz: e7fcb6b304893759a53af5ae065a6674bf2b07bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e784e1176489b34f3f19331bef9d1800aca5d086eb0f481ea5002e45dfba8d36787b97b8b07c8d7ba2bd3c19f0719b06eb09d810531ce87f92d49d750f913ae5
|
7
|
+
data.tar.gz: 6a19f005cb13878124042a563eb621f596cf83d1a3fa063a62e99a5b75366a4a05665033ed8168a1f54fd521db8a8500b92f064e98915d656a3391d28e7f5e27
|
data/README.md
CHANGED
@@ -21,6 +21,7 @@ Table of contents
|
|
21
21
|
- [Single Documents](#single-documents)
|
22
22
|
- [Mongo documents](#mongo-documents)
|
23
23
|
- [Admin](#admin)
|
24
|
+
- [Customize Admin](#customize-admin)
|
24
25
|
- [API](#api)
|
25
26
|
|
26
27
|
Documents
|
@@ -403,6 +404,109 @@ probably for [single documents](#single-documents) because they are not part of
|
|
403
404
|
a list. The ID would then be litterally `unique`, or whatever ID you declared
|
404
405
|
instead.
|
405
406
|
|
407
|
+
### Customize Admin
|
408
|
+
|
409
|
+
You can customize the admin with a few settings.
|
410
|
+
The main ones are for adding CSS and javascript.
|
411
|
+
There are 2 settings for this: `:custom_css_url` and `:custom_js_url`.
|
412
|
+
|
413
|
+
```ruby
|
414
|
+
# lib/admin.rb
|
415
|
+
require "populate_me/admin"
|
416
|
+
|
417
|
+
class Admin < PopulateMe::Admin
|
418
|
+
|
419
|
+
set :custom_css_url, '/css/admin.css'
|
420
|
+
set :custom_js_url, '/js/admin.js'
|
421
|
+
|
422
|
+
set :root, ::File.expand_path('../..', __FILE__)
|
423
|
+
|
424
|
+
set :menu, [
|
425
|
+
['Settings', '/admin/form/settings/unique'],
|
426
|
+
['Articles', '/admin/list/article'],
|
427
|
+
['Staff', [
|
428
|
+
['Designers', '/admin/list/staff-member?filter[job]=Designer'],
|
429
|
+
['Developers', '/admin/list/staff-member?filter[job]=Developer'],
|
430
|
+
]]
|
431
|
+
]
|
432
|
+
|
433
|
+
end
|
434
|
+
```
|
435
|
+
|
436
|
+
Inside the javascript file, you can use many functions and variables that
|
437
|
+
are under the `PopulateMe` namespace. See source code to know more about it.
|
438
|
+
Some are callbacks like `PopulateMe.custom_init_column` which allows you to
|
439
|
+
bind events when a column was created.
|
440
|
+
|
441
|
+
```javascript
|
442
|
+
# /js/admin.js
|
443
|
+
|
444
|
+
$(function() {
|
445
|
+
|
446
|
+
$('body').bind('change', 'select.special', function(event) {
|
447
|
+
alert('Changed!');
|
448
|
+
});
|
449
|
+
|
450
|
+
PopulateMe.custom_init_column = function(column) {
|
451
|
+
$('select.special', column).css({color: 'orange'});
|
452
|
+
}
|
453
|
+
|
454
|
+
});
|
455
|
+
```
|
456
|
+
|
457
|
+
The other thing you might want to do is adding mustache templates.
|
458
|
+
You can do this with the setting `:custom_templates_view`.
|
459
|
+
|
460
|
+
```ruby
|
461
|
+
# lib/admin.rb
|
462
|
+
require "populate_me/admin"
|
463
|
+
|
464
|
+
class Admin < PopulateMe::Admin
|
465
|
+
|
466
|
+
set :custom_templates_view, :custom_templates
|
467
|
+
|
468
|
+
# ...
|
469
|
+
|
470
|
+
end
|
471
|
+
```
|
472
|
+
|
473
|
+
Let's say we want to be able to set the size of the preview for attachments,
|
474
|
+
as opposed to the default value of 150. We would put this in the view:
|
475
|
+
|
476
|
+
```eruby
|
477
|
+
<script id="template-attachment-field-custom" type="x-tmpl-mustache">
|
478
|
+
{{#url}}
|
479
|
+
<img src='{{url}}{{cache_buster}}' alt='Preview' width='{{attachment_preview_width}}' />
|
480
|
+
<button class='attachment-deleter'>x</button>
|
481
|
+
<br />
|
482
|
+
{{/url}}
|
483
|
+
<input type='file' name='{{input_name}}' {{#max_size}}data-max-size='{{max_size}}'{{/max_size}} {{{build_input_atrributes}}} />
|
484
|
+
</script>
|
485
|
+
```
|
486
|
+
|
487
|
+
This is the default template except we've replace `150` with the mustache
|
488
|
+
variable `attachment_preview_width`. Everything that you set on the schema
|
489
|
+
is available in the template, so you can set both the custom template name
|
490
|
+
and the width variable in the hash passed to `field` when doing your schema.
|
491
|
+
The template name is the ID of the script tag.
|
492
|
+
|
493
|
+
```ruby
|
494
|
+
# /lib/blog_post.rb
|
495
|
+
require 'populate_me/document'
|
496
|
+
|
497
|
+
class BlogPost < PopulateMe::Document
|
498
|
+
|
499
|
+
field :title
|
500
|
+
field :image, type: :attachment, custom_template: 'template-attachment-field-custom', attachment_preview_width: 200, variations: [
|
501
|
+
PopulateMe::Variation.new_image_magick_job(:thumb, :gif, "-resize '300x'")
|
502
|
+
]
|
503
|
+
|
504
|
+
# ...
|
505
|
+
|
506
|
+
end
|
507
|
+
```
|
508
|
+
|
509
|
+
|
406
510
|
API
|
407
511
|
---
|
408
512
|
|
data/example/config.ru
CHANGED
@@ -30,7 +30,7 @@ PopulateMe::Document.set :default_attachment_class, PopulateMe::Attachment
|
|
30
30
|
|
31
31
|
class BlogPost < PopulateMe::Document
|
32
32
|
field :title, required: true
|
33
|
-
field :thumbnail, type: :attachment, max_size:
|
33
|
+
field :thumbnail, type: :attachment, max_size: 600*1024, variations: [
|
34
34
|
PopulateMe::Variation.new_image_magick_job(:populate_me_thumb, :jpg, "-resize '400x225^' -gravity center -extent 400x225")
|
35
35
|
]
|
36
36
|
field :content, type: :text
|
@@ -1,81 +1,216 @@
|
|
1
|
-
|
1
|
+
// Namespace
|
2
|
+
var PopulateMe = {};
|
3
|
+
|
4
|
+
// Returns a Mustache template from either
|
5
|
+
// the dom element itself, or the id of the dom element.
|
6
|
+
PopulateMe.init_template = function(obj_or_id) {
|
2
7
|
var obj = (typeof obj_or_id == 'object') ? obj_or_id : $(obj_or_id);
|
3
8
|
var template = obj.html();
|
4
9
|
Mustache.parse(template);
|
5
10
|
return template;
|
6
11
|
};
|
7
12
|
|
8
|
-
|
13
|
+
// Output a legible version of the size in bytes.
|
14
|
+
// 1024 => "1KB"
|
15
|
+
// 2097152 => "2MB"
|
16
|
+
PopulateMe.display_file_size = function(size) {
|
17
|
+
var unit = 'B';
|
18
|
+
if (size>1024) {
|
19
|
+
size = size / 1024;
|
20
|
+
unit = 'KB';
|
21
|
+
}
|
22
|
+
if (size>1024) {
|
23
|
+
size = size / 1024;
|
24
|
+
unit = 'MB';
|
25
|
+
}
|
26
|
+
if (size>1024) {
|
27
|
+
size = size / 1024;
|
28
|
+
unit = 'GB';
|
29
|
+
}
|
30
|
+
return size+unit;
|
31
|
+
};
|
32
|
+
|
33
|
+
// Template helpers
|
34
|
+
PopulateMe.template_helpers = {
|
35
|
+
custom_partial_or_default: function() {
|
36
|
+
return function(text,render) {
|
37
|
+
return render('{{>'+(this.custom_template||text)+'}}');
|
38
|
+
}
|
39
|
+
},
|
40
|
+
adapted_field: function() {
|
41
|
+
return function(text,render) {
|
42
|
+
var tmpl;
|
43
|
+
if (this.custom_template) {
|
44
|
+
tmpl = this.custom_template;
|
45
|
+
} else {
|
46
|
+
tmpl = 'template_'+this.type+'_field';
|
47
|
+
if (!(tmpl in PopulateMe.templates)) tmpl = 'template_string_field';
|
48
|
+
}
|
49
|
+
return render('{{>'+tmpl+'}}');
|
50
|
+
}
|
51
|
+
},
|
52
|
+
build_input_attributes: function() {
|
53
|
+
var out = "";
|
54
|
+
$.each(this.input_attributes, function(k,v) {
|
55
|
+
if (v!==false) {
|
56
|
+
out = out+' '+k;
|
57
|
+
if (v!==true) out = out+'=\''+Mustache.escape(v)+'\'';
|
58
|
+
}
|
59
|
+
});
|
60
|
+
return out;
|
61
|
+
},
|
62
|
+
cache_buster: function() {
|
63
|
+
// Simple version which assumes the url has no query yet or hash
|
64
|
+
var buster = Math.random()*10000000000000000;
|
65
|
+
return '?cache_buster='+buster;
|
66
|
+
}
|
67
|
+
};
|
9
68
|
|
10
|
-
|
11
|
-
|
69
|
+
// Template render with helpers
|
70
|
+
PopulateMe.mustache_render = function(data) {
|
71
|
+
var data_and_helpers = $.extend(data,PopulateMe.template_helpers);
|
72
|
+
return Mustache.render(PopulateMe.templates[data.template],data_and_helpers,PopulateMe.templates);
|
73
|
+
};
|
12
74
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
75
|
+
// Make Sortable from element or css selector
|
76
|
+
PopulateMe.make_sortable = function(selector,context) {
|
77
|
+
var obj = (typeof selector == 'string') ? $(selector,context) : selector;
|
78
|
+
return obj.sortable({
|
79
|
+
forcePlaceholderSize: true,
|
80
|
+
handle: '.handle'
|
18
81
|
});
|
82
|
+
};
|
19
83
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
84
|
+
// Scroll to an element, possibly in a specific column.
|
85
|
+
PopulateMe.scroll_to = function(el, column) {
|
86
|
+
if (!column) {
|
87
|
+
column = el.closest('.column');
|
88
|
+
}
|
89
|
+
column.animate({scrollTop: el.position().top});
|
90
|
+
};
|
91
|
+
|
92
|
+
// Mark errors for report after form validation.
|
93
|
+
// It adds the .invalid class to invalid fields,
|
94
|
+
// and adds the report after the label of the field.
|
95
|
+
PopulateMe.mark_errors = function(context,report) {
|
96
|
+
$.each(report,function(k,v) {
|
97
|
+
var field = context.find('> [data-field-name='+k+']:first');
|
98
|
+
if (field.is('fieldset')) {
|
99
|
+
$.each(v, function(index,subreport) {
|
100
|
+
var subcontext = field.find('> .nested-documents > li:nth('+index+')');
|
101
|
+
PopulateMe.mark_errors(subcontext, subreport);
|
102
|
+
});
|
103
|
+
} else {
|
104
|
+
field.addClass('invalid');
|
105
|
+
var errors = "<span class='errors'>, "+v.join(', ')+"</span>";
|
106
|
+
field.find('> label').append(errors);
|
107
|
+
}
|
108
|
+
});
|
109
|
+
};
|
110
|
+
|
111
|
+
// JS Validations
|
112
|
+
// This adds validations that could happen before sending
|
113
|
+
// anything to the server and that cannot be done with
|
114
|
+
// browser form validations like "required".
|
115
|
+
// For example we can check the file size so that files are not sent
|
116
|
+
// to the server at all if they are too big.
|
117
|
+
// Returns a boolean.
|
118
|
+
PopulateMe.jsValidationsPassed = function(context) {
|
119
|
+
if (window.File && window.FileReader && window.FileList && window.Blob) {
|
120
|
+
try {
|
121
|
+
var max_size_fields = $('input[type=file][data-max-size]', context);
|
122
|
+
max_size_fields.each(function() {
|
123
|
+
var field = $(this);
|
124
|
+
var max_size = parseInt(field.data('max-size'));
|
125
|
+
if (field[0].files[0]) {
|
126
|
+
var fsize = field[0].files[0].size;
|
127
|
+
var fname = field[0].files[0].name;
|
128
|
+
if (fsize>max_size) {
|
129
|
+
alert('File too big: '+fname+' should be less than '+PopulateMe.display_file_size(max_size)+'.');
|
130
|
+
throw "Validation error";
|
131
|
+
}
|
45
132
|
}
|
46
133
|
});
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
134
|
+
} catch(e) {
|
135
|
+
if (e==='Validation error') {
|
136
|
+
return false;
|
137
|
+
} else {
|
138
|
+
throw(e);
|
139
|
+
}
|
53
140
|
}
|
54
|
-
}
|
141
|
+
}
|
142
|
+
return true;
|
143
|
+
};
|
55
144
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
145
|
+
// Init column
|
146
|
+
// Bind events and init things that need to happen when
|
147
|
+
// a new column is added to the finder.
|
148
|
+
// The callback `custom_init_column` is also called at the end
|
149
|
+
// in case you have things to put in your custom javascript.
|
150
|
+
PopulateMe.init_column = function(c) {
|
61
151
|
|
62
|
-
//
|
63
|
-
|
64
|
-
var
|
65
|
-
|
66
|
-
|
67
|
-
|
152
|
+
// Sort list item
|
153
|
+
PopulateMe.make_sortable('.documents',c).bind('sortupdate', function(e, ui) {
|
154
|
+
var list = $(ui.item).closest('.documents');
|
155
|
+
var ids = list.children().map(function() {
|
156
|
+
return $(this).data().id;
|
157
|
+
}).get();
|
158
|
+
$.ajax({
|
159
|
+
url: list.data().sortUrl,
|
160
|
+
type: 'put',
|
161
|
+
data: {
|
162
|
+
action: 'sort',
|
163
|
+
field: list.data().sortField,
|
164
|
+
ids: ids
|
165
|
+
}
|
68
166
|
});
|
69
|
-
|
167
|
+
/*
|
168
|
+
ui.item contains the current dragged element.
|
169
|
+
ui.item.index() contains the new index of the dragged element
|
170
|
+
ui.oldindex contains the old index of the dragged element
|
171
|
+
ui.startparent contains the element that the dragged item comes from
|
172
|
+
ui.endparent contains the element that the dragged item was added to
|
173
|
+
*/
|
174
|
+
});
|
70
175
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
176
|
+
// Sort nested documents
|
177
|
+
PopulateMe.make_sortable('.nested-documents',c);
|
178
|
+
|
179
|
+
// Init textareas
|
180
|
+
$('textarea',c).trigger('input');
|
181
|
+
|
182
|
+
// Init multiple select with asmSelect
|
183
|
+
$('select[multiple]').asmSelect({ sortable: true, removeLabel: '×' });
|
184
|
+
|
185
|
+
// Possible callback from custom javascript file.
|
186
|
+
// If you need to do something on init_column,
|
187
|
+
// create this callback.
|
188
|
+
if (PopulateMe.custom_init_column) {
|
189
|
+
PopulateMe.custom_init_column(c);
|
190
|
+
}
|
191
|
+
|
192
|
+
}; // End - Init column
|
193
|
+
|
194
|
+
|
195
|
+
|
196
|
+
// Dom ready
|
197
|
+
$(function() {
|
198
|
+
|
199
|
+
// Dom elements.
|
200
|
+
PopulateMe.finder = $('#finder');
|
201
|
+
|
202
|
+
// Init templates
|
203
|
+
PopulateMe.templates = {};
|
204
|
+
$('[type=x-tmpl-mustache]').each(function() {
|
205
|
+
var $this = $(this);
|
206
|
+
PopulateMe.templates[$this.attr('id').replace(/-/g,'_')] = PopulateMe.init_template($this);
|
207
|
+
});
|
77
208
|
|
78
209
|
// Reactive text area
|
210
|
+
// It switches between online or longer depending on the amount
|
211
|
+
// of text.
|
212
|
+
// Long term, for this reason, it might be used for both
|
213
|
+
// :string and :text fields.
|
79
214
|
$('body').on('input propertychange', 'textarea', function() {
|
80
215
|
if (this.value.length>50 || this.value.match(/\n/)) {
|
81
216
|
$(this).removeClass('oneline');
|
@@ -84,56 +219,11 @@ $(function() {
|
|
84
219
|
}
|
85
220
|
});
|
86
221
|
|
87
|
-
// Errors
|
88
|
-
var mark_errors = function(context,report) {
|
89
|
-
$.each(report,function(k,v) {
|
90
|
-
var field = context.find('> [data-field-name='+k+']:first');
|
91
|
-
if (field.is('fieldset')) {
|
92
|
-
$.each(v, function(index,subreport) {
|
93
|
-
var subcontext = field.find('> .nested-documents > li:nth('+index+')');
|
94
|
-
mark_errors(subcontext, subreport);
|
95
|
-
});
|
96
|
-
} else {
|
97
|
-
field.addClass('invalid');
|
98
|
-
var errors = "<span class='errors'>, "+v.join(', ')+"</span>";
|
99
|
-
field.find('> label').append(errors);
|
100
|
-
}
|
101
|
-
});
|
102
|
-
};
|
103
|
-
|
104
|
-
// JS Validations
|
105
|
-
var jsValidationsPassed = function(context) {
|
106
|
-
if (window.File && window.FileReader && window.FileList && window.Blob) {
|
107
|
-
try {
|
108
|
-
var max_size_fields = $('input[type=file][data-max-size]', context);
|
109
|
-
max_size_fields.each(function() {
|
110
|
-
var field = $(this);
|
111
|
-
var max_size = parseInt(field.data('max-size'));
|
112
|
-
if (field[0].files[0]) {
|
113
|
-
var fsize = field[0].files[0].size;
|
114
|
-
var fname = field[0].files[0].name;
|
115
|
-
if (fsize>max_size) {
|
116
|
-
alert('File too big: '+fname+' should be less than '+max_size/1000+'KB.');
|
117
|
-
throw "Validation error";
|
118
|
-
}
|
119
|
-
}
|
120
|
-
});
|
121
|
-
} catch(e) {
|
122
|
-
if (e==='Validation error') {
|
123
|
-
return false;
|
124
|
-
} else {
|
125
|
-
throw(e);
|
126
|
-
}
|
127
|
-
}
|
128
|
-
}
|
129
|
-
return true;
|
130
|
-
};
|
131
|
-
|
132
222
|
// Ajax form
|
133
223
|
$('body').on('submit','form.admin-post, form.admin-put', function(e) {
|
134
224
|
e.preventDefault();
|
135
225
|
var self = $(this);
|
136
|
-
if (jsValidationsPassed(self)) {
|
226
|
+
if (PopulateMe.jsValidationsPassed(self)) {
|
137
227
|
|
138
228
|
var submit_button = $('input[type=submit]',self);
|
139
229
|
submit_button.hide();
|
@@ -145,16 +235,16 @@ $(function() {
|
|
145
235
|
contentType: false,
|
146
236
|
success: function(res) {
|
147
237
|
if (res.success==true) {
|
148
|
-
var reloader = finder.find('> li:nth-last-child(3) .selected')
|
238
|
+
var reloader = PopulateMe.finder.find('> li:nth-last-child(3) .selected')
|
149
239
|
if (reloader.size()>0) {
|
150
240
|
reloader.trigger('click.columnav',[function(cb_object) {
|
151
241
|
var target = $('[data-id='+res.data.id+']', cb_object.column);
|
152
242
|
if (target.size()>0) {
|
153
|
-
scroll_to(target, cb_object.column);
|
243
|
+
PopulateMe.scroll_to(target, cb_object.column);
|
154
244
|
}
|
155
245
|
}]);
|
156
246
|
} else {
|
157
|
-
finder.trigger('pop.columnav');
|
247
|
+
PopulateMe.finder.trigger('pop.columnav');
|
158
248
|
}
|
159
249
|
}
|
160
250
|
},
|
@@ -163,8 +253,8 @@ $(function() {
|
|
163
253
|
if (res.success==false) {
|
164
254
|
$('.invalid',self).removeClass('invalid');
|
165
255
|
$('.errors',self).remove();
|
166
|
-
mark_errors(self,res.data);
|
167
|
-
scroll_to(self.find('.invalid:first'));
|
256
|
+
PopulateMe.mark_errors(self,res.data);
|
257
|
+
PopulateMe.scroll_to(self.find('.invalid:first'));
|
168
258
|
submit_button.show();
|
169
259
|
}
|
170
260
|
}
|
@@ -178,9 +268,9 @@ $(function() {
|
|
178
268
|
e.preventDefault();
|
179
269
|
var self = $(this);
|
180
270
|
$.get(this.href, function(data) {
|
181
|
-
var content = $(mustache_render(data));
|
182
|
-
make_sortable(self.closest('fieldset').find('> ol').append(content).sortable('destroy'));
|
183
|
-
scroll_to(content);
|
271
|
+
var content = $(PopulateMe.mustache_render(data));
|
272
|
+
PopulateMe.make_sortable(self.closest('fieldset').find('> ol').append(content).sortable('destroy'));
|
273
|
+
PopulateMe.scroll_to(content);
|
184
274
|
});
|
185
275
|
});
|
186
276
|
|
@@ -229,58 +319,20 @@ $(function() {
|
|
229
319
|
}
|
230
320
|
});
|
231
321
|
|
232
|
-
// Init column
|
233
|
-
var init_column = function(c) {
|
234
|
-
|
235
|
-
// Sort list item
|
236
|
-
make_sortable('.documents',c).bind('sortupdate', function(e, ui) {
|
237
|
-
var list = $(ui.item).closest('.documents');
|
238
|
-
var ids = list.children().map(function() {
|
239
|
-
return $(this).data().id;
|
240
|
-
}).get();
|
241
|
-
$.ajax({
|
242
|
-
url: list.data().sortUrl,
|
243
|
-
type: 'put',
|
244
|
-
data: {
|
245
|
-
action: 'sort',
|
246
|
-
field: list.data().sortField,
|
247
|
-
ids: ids
|
248
|
-
}
|
249
|
-
});
|
250
|
-
/*
|
251
|
-
ui.item contains the current dragged element.
|
252
|
-
ui.item.index() contains the new index of the dragged element
|
253
|
-
ui.oldindex contains the old index of the dragged element
|
254
|
-
ui.startparent contains the element that the dragged item comes from
|
255
|
-
ui.endparent contains the element that the dragged item was added to
|
256
|
-
*/
|
257
|
-
});
|
258
|
-
|
259
|
-
// Sort nested documents
|
260
|
-
make_sortable('.nested-documents',c);
|
261
|
-
|
262
|
-
// Init textareas
|
263
|
-
$('textarea',c).trigger('input');
|
264
|
-
|
265
|
-
// Init multiple select with asmSelect
|
266
|
-
$('select[multiple]').asmSelect({ sortable: true, removeLabel: '×' });
|
267
|
-
|
268
|
-
}; // End - Init column
|
269
|
-
|
270
322
|
// Init finder
|
271
|
-
finder.columnav({
|
323
|
+
PopulateMe.finder.columnav({
|
272
324
|
on_push: function(data) {
|
273
|
-
init_column(data.column);
|
325
|
+
PopulateMe.init_column(data.column);
|
274
326
|
},
|
275
327
|
process_data: function(data) {
|
276
328
|
if (typeof data == 'object') {
|
277
|
-
return mustache_render(data);
|
329
|
+
return PopulateMe.mustache_render(data);
|
278
330
|
} else {
|
279
331
|
return data;
|
280
332
|
}
|
281
333
|
}
|
282
334
|
});
|
283
|
-
finder.trigger('getandpush.columnav',[window.admin_path+window.index_path]);
|
335
|
+
PopulateMe.finder.trigger('getandpush.columnav',[window.admin_path+window.index_path]);
|
284
336
|
|
285
337
|
}); // End - DomReady
|
286
338
|
|
data/lib/populate_me/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: populate-me
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mickael Riga
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: web-utils
|