active_scaffold 3.0.5 → 3.0.11
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.
- data/.document +5 -0
- data/Gemfile +11 -2
- data/Gemfile.lock +20 -0
- data/Rakefile +33 -4
- data/active_scaffold.gemspec +378 -17
- data/frontends/default/images/config.png +0 -0
- data/frontends/default/images/gears.png +0 -0
- data/frontends/default/javascripts/jquery/active_scaffold.js +34 -33
- data/frontends/default/javascripts/jquery/jquery.editinplace.js +21 -4
- data/frontends/default/javascripts/prototype/active_scaffold.js +43 -38
- data/frontends/default/stylesheets/stylesheet.css +110 -35
- data/frontends/default/views/_action_group.html.erb +20 -0
- data/frontends/default/views/_base_form.html.erb +7 -3
- data/frontends/default/views/_create_form.html.erb +5 -3
- data/frontends/default/views/_create_form_on_list.html.erb +2 -1
- data/frontends/default/views/_field_search.html.erb +2 -2
- data/frontends/default/views/_form.html.erb +2 -2
- data/frontends/default/views/_form_messages.html.erb +1 -1
- data/frontends/default/views/_horizontal_subform.html.erb +1 -1
- data/frontends/default/views/_list_actions.html.erb +6 -14
- data/frontends/default/views/_list_header.html.erb +4 -6
- data/frontends/default/views/_list_with_header.html.erb +2 -2
- data/frontends/default/views/_messages.html.erb +2 -2
- data/frontends/default/views/_search.html.erb +2 -2
- data/frontends/default/views/_show.html.erb +1 -1
- data/frontends/default/views/_update_form.html.erb +2 -1
- data/frontends/default/views/_vertical_subform.html.erb +1 -1
- data/frontends/default/views/action_confirmation.html.erb +13 -0
- data/frontends/default/views/add_existing.js.rjs +1 -1
- data/frontends/default/views/destroy.js.rjs +21 -3
- data/frontends/default/views/on_action_update.js.rjs +1 -1
- data/frontends/default/views/on_create.js.rjs +30 -13
- data/frontends/default/views/on_update.js.rjs +19 -6
- data/init.rb +6 -0
- data/lib/active_scaffold/actions/core.rb +32 -12
- data/lib/active_scaffold/actions/create.rb +4 -11
- data/lib/active_scaffold/actions/delete.rb +16 -13
- data/lib/active_scaffold/actions/list.rb +58 -2
- data/lib/active_scaffold/actions/mark.rb +1 -1
- data/lib/active_scaffold/actions/nested.rb +24 -15
- data/lib/active_scaffold/actions/show.rb +10 -3
- data/lib/active_scaffold/actions/update.rb +10 -3
- data/lib/{active_record_permissions.rb → active_scaffold/active_record_permissions.rb} +0 -0
- data/lib/active_scaffold/bridges/ancestry/lib/ancestry_bridge.rb +9 -8
- data/lib/active_scaffold/bridges/bridge.rb +1 -1
- data/lib/active_scaffold/bridges/calendar_date_select/lib/as_cds_bridge.rb +8 -4
- data/lib/active_scaffold/bridges/carrierwave/bridge.rb +1 -1
- data/lib/active_scaffold/bridges/paperclip/bridge.rb +1 -1
- data/lib/active_scaffold/bridges/paperclip/lib/list_ui.rb +1 -1
- data/lib/active_scaffold/config/base.rb +8 -0
- data/lib/active_scaffold/config/core.rb +2 -15
- data/lib/active_scaffold/config/create.rb +8 -0
- data/lib/active_scaffold/config/delete.rb +10 -1
- data/lib/active_scaffold/config/field_search.rb +1 -0
- data/lib/active_scaffold/config/form.rb +2 -1
- data/lib/active_scaffold/config/nested.rb +3 -2
- data/lib/active_scaffold/config/search.rb +1 -0
- data/lib/active_scaffold/config/show.rb +1 -0
- data/lib/active_scaffold/config/update.rb +8 -0
- data/lib/active_scaffold/constraints.rb +9 -4
- data/lib/active_scaffold/data_structures/action_columns.rb +1 -1
- data/lib/active_scaffold/data_structures/action_link.rb +10 -1
- data/lib/active_scaffold/data_structures/action_links.rb +62 -22
- data/lib/active_scaffold/data_structures/column.rb +17 -13
- data/lib/active_scaffold/data_structures/nested_info.rb +21 -6
- data/lib/active_scaffold/finder.rb +2 -1
- data/lib/active_scaffold/helpers/association_helpers.rb +2 -2
- data/lib/active_scaffold/helpers/controller_helpers.rb +57 -10
- data/lib/active_scaffold/helpers/form_column_helpers.rb +12 -8
- data/lib/active_scaffold/helpers/id_helpers.rb +5 -9
- data/lib/active_scaffold/helpers/list_column_helpers.rb +26 -28
- data/lib/active_scaffold/helpers/search_column_helpers.rb +8 -3
- data/lib/active_scaffold/helpers/view_helpers.rb +60 -19
- data/lib/active_scaffold/locale/de.rb +13 -6
- data/lib/active_scaffold/locale/en.rb +2 -1
- data/lib/active_scaffold/locale/es.yml +3 -0
- data/lib/active_scaffold/locale/fr.rb +5 -2
- data/lib/active_scaffold/locale/ru.yml +77 -20
- data/lib/active_scaffold/marked_model.rb +5 -5
- data/lib/{paginator.rb → active_scaffold/paginator.rb} +0 -0
- data/lib/{responds_to_parent.rb → active_scaffold/responds_to_parent.rb} +0 -0
- data/lib/active_scaffold/version.rb +9 -0
- data/lib/active_scaffold.rb +60 -84
- data/lib/active_scaffold_assets.rb +45 -0
- data/lib/active_scaffold_env.rb +14 -0
- data/lib/active_scaffold_vho.rb +2 -0
- data/lib/extensions/active_association_reflection.rb +13 -0
- data/lib/extensions/paginator_extensions.rb +1 -1
- data/lib/extensions/routing_mapper.rb +1 -1
- data/lib/generators/active_scaffold_setup/active_scaffold_setup_generator.rb +12 -4
- metadata +85 -68
- data/lib/dhtml_confirm.rb +0 -54
|
@@ -455,6 +455,7 @@ $.extend(InlineEditor.prototype, {
|
|
|
455
455
|
return;
|
|
456
456
|
|
|
457
457
|
var editor = this.dom.find(':input');
|
|
458
|
+
|
|
458
459
|
var enteredText = editor.val();
|
|
459
460
|
enteredText = this.triggerDelegateCall('willCloseEditInPlace', enteredText);
|
|
460
461
|
|
|
@@ -468,8 +469,16 @@ $.extend(InlineEditor.prototype, {
|
|
|
468
469
|
handleSaveEditor: function(anEvent) {
|
|
469
470
|
if (false === this.triggerDelegateCall('shouldCloseEditInPlace', true, anEvent))
|
|
470
471
|
return;
|
|
471
|
-
|
|
472
|
-
|
|
472
|
+
|
|
473
|
+
var editor = this.dom.find(':input:not(:button)');
|
|
474
|
+
var enteredText = '';
|
|
475
|
+
if (editor.length > 1) {
|
|
476
|
+
enteredText = jQuery.map(editor.not('input:checkbox:not(:checked)'), function(item, index) {
|
|
477
|
+
return $(item).val();
|
|
478
|
+
});
|
|
479
|
+
} else {
|
|
480
|
+
enteredText = editor.val();
|
|
481
|
+
}
|
|
473
482
|
enteredText = this.triggerDelegateCall('willCloseEditInPlace', enteredText);
|
|
474
483
|
|
|
475
484
|
if (this.isDisabledDefaultSelectChoice()
|
|
@@ -545,8 +554,16 @@ $.extend(InlineEditor.prototype, {
|
|
|
545
554
|
},
|
|
546
555
|
|
|
547
556
|
handleSubmitToServer: function(enteredText) {
|
|
548
|
-
var data =
|
|
549
|
-
|
|
557
|
+
var data = '';
|
|
558
|
+
if (typeof(enteredText) === 'string') {
|
|
559
|
+
data += this.settings.update_value + '=' + encodeURIComponent(enteredText) + '&';
|
|
560
|
+
} else {
|
|
561
|
+
for(var i = 0;i < enteredText.length; i++) {
|
|
562
|
+
data += this.settings.update_value + '[]=' + encodeURIComponent(enteredText[i]) + '&';
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
data += this.settings.element_id + '=' + this.dom.attr("id")
|
|
550
567
|
+ ((this.settings.params) ? '&' + this.settings.params : '')
|
|
551
568
|
+ '&' + this.settings.original_html + '=' + encodeURIComponent(this.originalValue) /* DEPRECATED in 2.2.0 */
|
|
552
569
|
+ '&' + this.settings.original_value + '=' + encodeURIComponent(this.originalValue);
|
|
@@ -45,7 +45,7 @@ document.observe("dom:loaded", function() {
|
|
|
45
45
|
document.on('submit', 'form.as_form.as_remote_upload', function(event) {
|
|
46
46
|
var as_form = event.findElement('form');
|
|
47
47
|
if (as_form && as_form.readAttribute('data-loading') == 'true') {
|
|
48
|
-
setTimeout("ActiveScaffold.disable_form('" + as_form.id + "')", 10);
|
|
48
|
+
setTimeout("ActiveScaffold.disable_form('" + as_form.readAttribute('id') + "')", 10);
|
|
49
49
|
}
|
|
50
50
|
return true;
|
|
51
51
|
});
|
|
@@ -177,10 +177,17 @@ document.observe("dom:loaded", function() {
|
|
|
177
177
|
if (record_id) options.url = options.url.sub('__id__', record_id);
|
|
178
178
|
|
|
179
179
|
if (csrf_param) options['params'] = csrf_param.readAttribute('content') + '=' + csrf_token.readAttribute('content');
|
|
180
|
+
|
|
181
|
+
if (span.up('div.active-scaffold').readAttribute('data-eid')) {
|
|
182
|
+
if (options['params'].length > 0) {
|
|
183
|
+
options['params'] += ";";
|
|
184
|
+
}
|
|
185
|
+
options['params'] += ("eid=" + span.up('div.active-scaffold').readAttribute('data-eid'));
|
|
186
|
+
}
|
|
180
187
|
|
|
181
188
|
if (mode === 'clone') {
|
|
182
189
|
options.nodeIdSuffix = record_id;
|
|
183
|
-
options.inplacePatternSelector = '#' + column_heading.id + ' .as_inplace_pattern';
|
|
190
|
+
options.inplacePatternSelector = '#' + column_heading.readAttribute('id') + ' .as_inplace_pattern';
|
|
184
191
|
options['onFormCustomization'] = new Function('element', 'form', 'element.clonePatternField();');
|
|
185
192
|
}
|
|
186
193
|
|
|
@@ -251,14 +258,14 @@ document.observe("dom:loaded", function() {
|
|
|
251
258
|
});
|
|
252
259
|
document.on('change', 'select.as_search_range_option', function(event) {
|
|
253
260
|
var element = event.findElement();
|
|
254
|
-
Element[element.value == 'BETWEEN' ? 'show' : 'hide'](element.id.sub('_opt', '_between'));
|
|
261
|
+
Element[element.value == 'BETWEEN' ? 'show' : 'hide'](element.readAttribute('id').sub('_opt', '_between'));
|
|
255
262
|
return true;
|
|
256
263
|
});
|
|
257
264
|
document.on('change', 'select.as_search_date_time_option', function(event) {
|
|
258
265
|
var element = event.findElement();
|
|
259
|
-
Element[!(element.value == 'PAST' || element.value == 'FUTURE' || element.value == 'RANGE') ? 'show' : 'hide'](element.id.sub('_opt', '_numeric'));
|
|
260
|
-
Element[(element.value == 'PAST' || element.value == 'FUTURE') ? 'show' : 'hide'](element.id.sub('_opt', '_trend'));
|
|
261
|
-
Element[element.value == 'RANGE' ? 'show' : 'hide'](element.id.sub('_opt', '_range'));
|
|
266
|
+
Element[!(element.value == 'PAST' || element.value == 'FUTURE' || element.value == 'RANGE') ? 'show' : 'hide'](element.readAttribute('id').sub('_opt', '_numeric'));
|
|
267
|
+
Element[(element.value == 'PAST' || element.value == 'FUTURE') ? 'show' : 'hide'](element.readAttribute('id').sub('_opt', '_trend'));
|
|
268
|
+
Element[element.value == 'RANGE' ? 'show' : 'hide'](element.readAttribute('id').sub('_opt', '_range'));
|
|
262
269
|
return true;
|
|
263
270
|
});
|
|
264
271
|
document.on('change', 'select.as_update_date_operator', function(event) {
|
|
@@ -268,6 +275,11 @@ document.observe("dom:loaded", function() {
|
|
|
268
275
|
Element[element.value == 'REPLACE' ? 'hide' : 'show'](element.next('span'));
|
|
269
276
|
return true;
|
|
270
277
|
});
|
|
278
|
+
document.on("click", "a[data-popup]", function(event, element) {
|
|
279
|
+
if (event.stopped) return;
|
|
280
|
+
window.open($(element).href);
|
|
281
|
+
event.stop();
|
|
282
|
+
});
|
|
271
283
|
});
|
|
272
284
|
|
|
273
285
|
|
|
@@ -352,7 +364,7 @@ var ActiveScaffold = {
|
|
|
352
364
|
replace: function(element, html) {
|
|
353
365
|
element = $(element)
|
|
354
366
|
Element.replace(element, html);
|
|
355
|
-
element = $(element.id);
|
|
367
|
+
element = $(element.readAttribute('id'));
|
|
356
368
|
return element;
|
|
357
369
|
},
|
|
358
370
|
|
|
@@ -380,14 +392,14 @@ var ActiveScaffold = {
|
|
|
380
392
|
|
|
381
393
|
disable_form: function(as_form) {
|
|
382
394
|
as_form = $(as_form)
|
|
383
|
-
var loading_indicator = $(as_form.id.sub('-form', '-loading-indicator'));
|
|
395
|
+
var loading_indicator = $(as_form.readAttribute('id').sub('-form', '-loading-indicator'));
|
|
384
396
|
if (loading_indicator) loading_indicator.style.visibility = 'visible';
|
|
385
397
|
as_form.disable();
|
|
386
398
|
},
|
|
387
399
|
|
|
388
400
|
enable_form: function(as_form) {
|
|
389
401
|
as_form = $(as_form)
|
|
390
|
-
var loading_indicator = $(as_form.id.sub('-form', '-loading-indicator'));
|
|
402
|
+
var loading_indicator = $(as_form.readAttribute('id').sub('-form', '-loading-indicator'));
|
|
391
403
|
if (loading_indicator) loading_indicator.style.visibility = 'hidden';
|
|
392
404
|
as_form.enable();
|
|
393
405
|
},
|
|
@@ -396,8 +408,9 @@ var ActiveScaffold = {
|
|
|
396
408
|
Form.focusFirstElement(form_element);
|
|
397
409
|
},
|
|
398
410
|
|
|
399
|
-
create_record_row: function(
|
|
400
|
-
tbody = $(tbody);
|
|
411
|
+
create_record_row: function(active_scaffold_id, html, options) {
|
|
412
|
+
tbody = $(active_scaffold_id).down('tbody.records');
|
|
413
|
+
|
|
401
414
|
var new_row = null;
|
|
402
415
|
|
|
403
416
|
if (options.insert_at == 'top') {
|
|
@@ -432,6 +445,7 @@ var ActiveScaffold = {
|
|
|
432
445
|
}
|
|
433
446
|
}
|
|
434
447
|
row.remove();
|
|
448
|
+
tbody = $(tbody);
|
|
435
449
|
this.stripe(tbody);
|
|
436
450
|
this.decrement_record_count(tbody.up('div.active-scaffold'));
|
|
437
451
|
this.reload_if_empty(tbody, page_reload_url);
|
|
@@ -485,7 +499,7 @@ var ActiveScaffold = {
|
|
|
485
499
|
options['callback'] = new Function('form', 'return Form.serialize(form) + ' + "'&" + options['params'] + "';");
|
|
486
500
|
}
|
|
487
501
|
span.removeClassName('hover');
|
|
488
|
-
span.inplace_edit = new ActiveScaffold.InPlaceEditor(span.id, options.url, options)
|
|
502
|
+
span.inplace_edit = new ActiveScaffold.InPlaceEditor(span.readAttribute('id'), options.url, options)
|
|
489
503
|
span.inplace_edit.enterEditMode();
|
|
490
504
|
},
|
|
491
505
|
|
|
@@ -499,6 +513,7 @@ var ActiveScaffold = {
|
|
|
499
513
|
var element = event.element();
|
|
500
514
|
toggable.toggle();
|
|
501
515
|
element.innerHTML = (toggable.style.display == 'none') ? options.show_label : options.hide_label;
|
|
516
|
+
return false;
|
|
502
517
|
});
|
|
503
518
|
},
|
|
504
519
|
|
|
@@ -509,8 +524,9 @@ var ActiveScaffold = {
|
|
|
509
524
|
element.insert(content);
|
|
510
525
|
}
|
|
511
526
|
} else {
|
|
512
|
-
|
|
513
|
-
|
|
527
|
+
var current = $$('#' + element.readAttribute('id') + ' tr.association-record');
|
|
528
|
+
if (current[0]) {
|
|
529
|
+
this.replace(current[0], content);
|
|
514
530
|
} else {
|
|
515
531
|
element.insert({top: content});
|
|
516
532
|
}
|
|
@@ -643,7 +659,11 @@ ActiveScaffold.ActionLink = {
|
|
|
643
659
|
get: function(element) {
|
|
644
660
|
var element = $(element);
|
|
645
661
|
if (typeof(element.retrieve('action_link')) === 'undefined' && !element.hasClassName('as_adapter')) {
|
|
646
|
-
var parent = element.up();
|
|
662
|
+
var parent = element.up('.actions');
|
|
663
|
+
if (typeof(parent) === 'undefined') {
|
|
664
|
+
// maybe an column action_link
|
|
665
|
+
parent = element.up();
|
|
666
|
+
}
|
|
647
667
|
if (parent && parent.nodeName.toUpperCase() == 'TD') {
|
|
648
668
|
// record action
|
|
649
669
|
parent = parent.up('tr.record')
|
|
@@ -662,25 +682,11 @@ ActiveScaffold.ActionLink.Abstract = Class.create({
|
|
|
662
682
|
initialize: function(a, target, loading_indicator) {
|
|
663
683
|
this.tag = $(a);
|
|
664
684
|
this.url = this.tag.href;
|
|
665
|
-
this.method = 'get';
|
|
666
|
-
|
|
667
|
-
if(this.url.match('_method=delete')){
|
|
668
|
-
this.method = 'delete';
|
|
669
|
-
// action delete is special case cause in ajax world it will be destroy
|
|
670
|
-
} else if(this.url.match('/delete')){
|
|
671
|
-
this.url = this.url.replace('/delete', '');
|
|
672
|
-
this.tag.href = this.url;
|
|
673
|
-
this.method = 'delete';
|
|
674
|
-
} else if(this.url.match('_method=post')){
|
|
675
|
-
this.method = 'post';
|
|
676
|
-
} else if(this.url.match('_method=put')){
|
|
677
|
-
this.method = 'put';
|
|
678
|
-
}
|
|
679
|
-
if (this.method != 'get') this.tag.writeAttribute('data-method', this.method);
|
|
685
|
+
this.method = this.tag.readAttribute('data-method') || 'get';
|
|
680
686
|
this.target = target;
|
|
681
687
|
this.loading_indicator = loading_indicator;
|
|
682
688
|
this.hide_target = false;
|
|
683
|
-
this.position = this.tag.
|
|
689
|
+
this.position = this.tag.readAttribute('data-position');
|
|
684
690
|
|
|
685
691
|
this.tag.store('action_link', this);
|
|
686
692
|
},
|
|
@@ -723,7 +729,11 @@ ActiveScaffold.ActionLink.Abstract = Class.create({
|
|
|
723
729
|
},
|
|
724
730
|
|
|
725
731
|
scaffold_id: function() {
|
|
726
|
-
return this.tag.up('div.active-scaffold').id;
|
|
732
|
+
return this.tag.up('div.active-scaffold').readAttribute('id');
|
|
733
|
+
},
|
|
734
|
+
|
|
735
|
+
scaffold: function() {
|
|
736
|
+
return this.tag.up('div.active-scaffold');
|
|
727
737
|
},
|
|
728
738
|
|
|
729
739
|
update_flash_messages: function(messages) {
|
|
@@ -744,13 +754,8 @@ ActiveScaffold.ActionLink.Abstract = Class.create({
|
|
|
744
754
|
ActiveScaffold.Actions.Record = Class.create(ActiveScaffold.Actions.Abstract, {
|
|
745
755
|
instantiate_link: function(link) {
|
|
746
756
|
var l = new ActiveScaffold.ActionLink.Record(link, this.target, this.loading_indicator);
|
|
747
|
-
if (!this.target.readAttribute('data-refresh').blank()) l.refresh_url = this.target.readAttribute('data-refresh');
|
|
757
|
+
if (this.target.hasAttribute('data-refresh') && !this.target.readAttribute('data-refresh').blank()) l.refresh_url = this.target.readAttribute('data-refresh');
|
|
748
758
|
|
|
749
|
-
if (link.hasClassName('delete')) {
|
|
750
|
-
l.url = l.url.replace(/\/delete(\?.*)?$/, '$1');
|
|
751
|
-
l.url = l.url.replace(/\/delete\/(.*)/, '/destroy/$1');
|
|
752
|
-
l.tag.href = l.url;
|
|
753
|
-
}
|
|
754
759
|
if (l.position) {
|
|
755
760
|
l.url = l.url.append_params({adapter: '_list_inline_adapter'});
|
|
756
761
|
l.tag.href = l.url;
|
|
@@ -35,7 +35,7 @@ text-decoration: none;
|
|
|
35
35
|
color: #999;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
.active-scaffold a:hover, .active-scaffold
|
|
38
|
+
.active-scaffold a:hover, .active-scaffold div.hover {
|
|
39
39
|
background-color: #ff8;
|
|
40
40
|
}
|
|
41
41
|
|
|
@@ -86,7 +86,8 @@ color: #fff;
|
|
|
86
86
|
padding: 2px 5px 4px 5px;
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
.active-scaffold-header div.actions a
|
|
89
|
+
.active-scaffold-header div.actions a,
|
|
90
|
+
.active-scaffold-header div.actions {
|
|
90
91
|
float: right;
|
|
91
92
|
font: bold 14px arial;
|
|
92
93
|
letter-spacing: -1px;
|
|
@@ -98,7 +99,25 @@ background-position: 1px 50%;
|
|
|
98
99
|
background-repeat: no-repeat;
|
|
99
100
|
}
|
|
100
101
|
|
|
101
|
-
.
|
|
102
|
+
.active-scaffold-header div.actions div.action_group {
|
|
103
|
+
display: inline;
|
|
104
|
+
float: right;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.active-scaffold-header div.actions div.action_group li a,
|
|
108
|
+
.active-scaffold-header div.actions div.action_group li div {
|
|
109
|
+
float: none;
|
|
110
|
+
margin: 0;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.active-scaffold-header div.actions .action_group ul {
|
|
114
|
+
line-height: 130%;
|
|
115
|
+
top: 14px;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.view .active-scaffold-header div.actions a,
|
|
119
|
+
.view .active-scaffold-header div.actions div,
|
|
120
|
+
.view .active-scaffold-header div.actions div.action_group {
|
|
102
121
|
float: left;
|
|
103
122
|
}
|
|
104
123
|
|
|
@@ -118,12 +137,23 @@ opacity: 0.5;
|
|
|
118
137
|
|
|
119
138
|
.active-scaffold-header div.actions a.new,
|
|
120
139
|
.active-scaffold-header div.actions a.new_existing,
|
|
121
|
-
.active-scaffold-header div.actions a.show_search
|
|
122
|
-
|
|
140
|
+
.active-scaffold-header div.actions a.show_search,
|
|
141
|
+
.active-scaffold-header div.actions a.show_config_list,
|
|
142
|
+
.active-scaffold-header div.actions div.action_group div {
|
|
143
|
+
margin:0;
|
|
144
|
+
padding: 1px 5px 1px 20px;
|
|
123
145
|
background-position: 1px 50%;
|
|
124
146
|
background-repeat: no-repeat;
|
|
125
147
|
}
|
|
126
148
|
|
|
149
|
+
.active-scaffold-header div.actions div.action_group div {
|
|
150
|
+
background-image: url(../../../images/active_scaffold/default/gears.png); /* default icon for actions or override with css */
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.active-scaffold-header div.actions a.show_config_list {
|
|
154
|
+
background-image: url(../../../images/active_scaffold/default/config.png);
|
|
155
|
+
}
|
|
156
|
+
|
|
127
157
|
.active-scaffold-header div.actions a.new,
|
|
128
158
|
.active-scaffold-header div.actions a.new_existing {
|
|
129
159
|
background-image: url(../../../images/active_scaffold/default/add.gif);
|
|
@@ -166,7 +196,7 @@ background-color: #555;
|
|
|
166
196
|
|
|
167
197
|
.active-scaffold th a, .active-scaffold th a:visited {
|
|
168
198
|
color: #fff;
|
|
169
|
-
padding: 2px
|
|
199
|
+
padding: 2px 2px 2px 5px;
|
|
170
200
|
}
|
|
171
201
|
|
|
172
202
|
.active-scaffold th p {
|
|
@@ -183,6 +213,10 @@ color: #ff8;
|
|
|
183
213
|
background-color: #333;
|
|
184
214
|
}
|
|
185
215
|
|
|
216
|
+
.active-scaffold th.sorted a {
|
|
217
|
+
padding-right: 18px;
|
|
218
|
+
}
|
|
219
|
+
|
|
186
220
|
.active-scaffold th.asc a,
|
|
187
221
|
.active-scaffold th.asc a:hover {
|
|
188
222
|
background: #333 url(../../../images/active_scaffold/default/arrow_up.gif) right 50% no-repeat;
|
|
@@ -198,6 +232,10 @@ background: #333 url(../../../images/active_scaffold/default/arrow_down.gif) rig
|
|
|
198
232
|
background: #333 url(../../../images/active_scaffold/default/indicator-small.gif) right 50% no-repeat;
|
|
199
233
|
}
|
|
200
234
|
|
|
235
|
+
.active-scaffold th .mark_heading {
|
|
236
|
+
margin-left: 5px;
|
|
237
|
+
}
|
|
238
|
+
|
|
201
239
|
/* Table :: Record Rows
|
|
202
240
|
============================= */
|
|
203
241
|
|
|
@@ -265,7 +303,7 @@ padding: 0 2px;
|
|
|
265
303
|
}
|
|
266
304
|
|
|
267
305
|
.active-scaffold tr.record td.actions a,
|
|
268
|
-
.active-scaffold tr.record td.actions
|
|
306
|
+
.active-scaffold tr.record td.actions div {
|
|
269
307
|
font: bold 11px verdana, sans-serif;
|
|
270
308
|
letter-spacing: -1px;
|
|
271
309
|
padding: 2px;
|
|
@@ -274,42 +312,79 @@ line-height: 16px;
|
|
|
274
312
|
white-space: nowrap;
|
|
275
313
|
}
|
|
276
314
|
|
|
277
|
-
.active-scaffold tr.record td.actions
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
315
|
+
.active-scaffold tr.record td.actions a.disabled {
|
|
316
|
+
color: #666;
|
|
317
|
+
opacity: 0.5;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
.active-scaffold .actions .action_group div:hover {
|
|
321
|
+
background-color: #ff8;
|
|
281
322
|
}
|
|
282
323
|
|
|
283
|
-
.active-scaffold
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
324
|
+
.active-scaffold .actions .action_group {
|
|
325
|
+
position: relative;
|
|
326
|
+
text-align: left;
|
|
327
|
+
color: #0066CC;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
.active-scaffold .actions .action_group ul {
|
|
331
|
+
border: 2px solid #005CB8;
|
|
332
|
+
list-style-type: none;
|
|
333
|
+
margin: 0;
|
|
334
|
+
padding: 0;
|
|
335
|
+
position: absolute;
|
|
336
|
+
line-height: 200%;
|
|
337
|
+
display: none;
|
|
338
|
+
width: 150px;
|
|
339
|
+
right: 0px;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
.active-scaffold .actions .action_group ul ul {
|
|
290
343
|
display: none;
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
border-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
position:relative;
|
|
303
|
-
width:160px;
|
|
344
|
+
position: absolute;
|
|
345
|
+
top: 0;
|
|
346
|
+
right: 150px;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
.active-scaffold .actions .action_group ul li {
|
|
350
|
+
background: none repeat scroll 0 0 #EEE;
|
|
351
|
+
border-top: 1px dashed #222;
|
|
352
|
+
display: block;
|
|
353
|
+
position: relative;
|
|
354
|
+
width: auto;
|
|
304
355
|
z-index: 2;
|
|
305
356
|
}
|
|
306
357
|
|
|
307
|
-
.active-scaffold
|
|
308
|
-
|
|
358
|
+
.active-scaffold .actions .action_group ul li div {
|
|
359
|
+
margin: 0;
|
|
360
|
+
padding: 5px 5px 5px 25px;
|
|
361
|
+
background-position: 5px 50%;
|
|
362
|
+
background-repeat: no-repeat;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
.active-scaffold .actions .action_group ul li a {
|
|
366
|
+
display: block;
|
|
367
|
+
color: #333;
|
|
368
|
+
margin: 0;
|
|
369
|
+
padding: 5px 5px 5px 25px;
|
|
370
|
+
background-position: 5px 50%;
|
|
371
|
+
background-repeat: no-repeat;
|
|
309
372
|
}
|
|
310
373
|
|
|
374
|
+
.active-scaffold .actions .action_group ul li.top {
|
|
375
|
+
border-top: 0px solid #005CB8;
|
|
376
|
+
}
|
|
311
377
|
|
|
378
|
+
.active-scaffold .actions .action_group:hover ul ul,
|
|
379
|
+
.active-scaffold .actions .action_group:hover ul ul ul {
|
|
380
|
+
display: none;
|
|
381
|
+
}
|
|
312
382
|
|
|
383
|
+
.active-scaffold .actions .action_group:hover ul,
|
|
384
|
+
.active-scaffold .actions .action_group ul li:hover > ul,
|
|
385
|
+
.active-scaffold .actions .action_group ul ul li:hover ul {
|
|
386
|
+
display: block;
|
|
387
|
+
}
|
|
313
388
|
|
|
314
389
|
/* Table :: Inline Adapter
|
|
315
390
|
============================= */
|
|
@@ -365,9 +440,9 @@ top: 0px;
|
|
|
365
440
|
right: 0px;
|
|
366
441
|
}
|
|
367
442
|
|
|
368
|
-
.active-scaffold .active-scaffold .active-scaffold-header div.actions a
|
|
443
|
+
.active-scaffold .active-scaffold .active-scaffold-header div.actions a,
|
|
444
|
+
.active-scaffold .active-scaffold .active-scaffold-header div.actions div {
|
|
369
445
|
font: bold 11px verdana, sans-serif;
|
|
370
|
-
padding: 0 2px 1px 17px;
|
|
371
446
|
}
|
|
372
447
|
|
|
373
448
|
.blue-theme .active-scaffold .active-scaffold-header div.actions a,
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<% record ||= nil
|
|
2
|
+
start_level_0_tag ||= ''
|
|
3
|
+
end_level_0_tag ||= ''%>
|
|
4
|
+
<% action_links.traverse(controller, traverse_options) do |parent, link, options| -%>
|
|
5
|
+
<% if (options[:node] == :finished_traversing) -%>
|
|
6
|
+
<%= "</ul>#{(options[:level] == 0 ? "</div>#{end_level_0_tag}": '</li>')}".html_safe %>
|
|
7
|
+
<% elsif (options[:node] == :start_traversing) -%>
|
|
8
|
+
<% if options[:level] == 0 %>
|
|
9
|
+
<%= "#{start_level_0_tag}<div class=\"action_group\"> #{content_tag(:div, as_(parent.name), :class => (parent.name.to_s).downcase)}<ul>".html_safe %>
|
|
10
|
+
<% else %>
|
|
11
|
+
<%= "<li #{"class=\"top\"" if options[:first_action]}>#{content_tag(:div, as_(parent.name), :class => (parent.name.to_s).downcase)}<ul>".html_safe %>
|
|
12
|
+
<% end %>
|
|
13
|
+
<% else -%>
|
|
14
|
+
<% if options[:level] == 0 %>
|
|
15
|
+
<%= "#{start_level_0_tag}#{h(render_group_action_link(link, url_options, options, record))}#{end_level_0_tag}".html_safe %>
|
|
16
|
+
<% else %>
|
|
17
|
+
<%= content_tag('li', render_group_action_link(link, url_options, options, record), options[:first_action] ? {:class => 'top'}: {}) %>
|
|
18
|
+
<% end %>
|
|
19
|
+
<% end -%>
|
|
20
|
+
<% end -%>
|
|
@@ -9,12 +9,16 @@ options = {:onsubmit => onsubmit,
|
|
|
9
9
|
:class => "as_form #{form_action.to_s}",
|
|
10
10
|
:method => method,
|
|
11
11
|
'data-loading' => true}
|
|
12
|
+
cancel_options = {:class => 'as_cancel', 'data-refresh' => false}
|
|
13
|
+
|
|
14
|
+
cancel_options[:remote] = true if xhr #cancel link does nt have to care about multipart forms
|
|
12
15
|
if xhr && as_action_config.multipart? # file_uploads
|
|
13
16
|
form_remote_upload_tag url_options.merge({:iframe => true}), options
|
|
14
17
|
else
|
|
15
18
|
options[:remote] = true if xhr && !as_action_config.multipart?
|
|
16
19
|
form_tag url_options, options
|
|
17
|
-
end
|
|
20
|
+
end
|
|
21
|
+
-%>
|
|
18
22
|
|
|
19
23
|
<h4><%= headline -%></h4>
|
|
20
24
|
|
|
@@ -22,7 +26,7 @@ end -%>
|
|
|
22
26
|
<% if request.xhr? -%>
|
|
23
27
|
<% records = @error_records || Array(@record)
|
|
24
28
|
records.each do |record| %>
|
|
25
|
-
<%=
|
|
29
|
+
<%= active_scaffold_error_messages_for record, :object_name => "#{record.class.model_name.human.downcase}#{record.new_record? ? '' : ": #{record.to_label}"}" %>
|
|
26
30
|
<% end %>
|
|
27
31
|
<% else -%>
|
|
28
32
|
<%= render :partial => 'form_messages' %>
|
|
@@ -33,7 +37,7 @@ end -%>
|
|
|
33
37
|
|
|
34
38
|
<p class="form-footer">
|
|
35
39
|
<%= submit_tag as_(form_action), :class => "submit" %>
|
|
36
|
-
<%= link_to(as_(:cancel), main_path_to_return,
|
|
40
|
+
<%= link_to(as_(:cancel), main_path_to_return, cancel_options) if cancel_link %>
|
|
37
41
|
<%= loading_indicator_tag(:action => form_action, :id => params[:id]) %>
|
|
38
42
|
</p>
|
|
39
43
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
<% form_action ||= :create
|
|
2
|
+
cancel_link = true if cancel_link.nil? %>
|
|
1
3
|
<%= render :partial => "base_form", :locals => {:xhr => xhr ||= nil,
|
|
2
|
-
:form_action => form_action
|
|
4
|
+
:form_action => form_action,
|
|
3
5
|
:method => method ||= :post,
|
|
4
|
-
:cancel_link => cancel_link
|
|
5
|
-
:headline => headline ||= active_scaffold_config.
|
|
6
|
+
:cancel_link => cancel_link,
|
|
7
|
+
:headline => headline ||= active_scaffold_config.send(form_action).label(active_scaffold_config.sti_create_links ? @record.class.model_name.human(:count => 1) : nil)} %>
|
|
6
8
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
<% cancel_link = false if cancel_link.nil? %>
|
|
1
2
|
<%= render :partial => "base_form", :locals => {:xhr => xhr ||= nil,
|
|
2
3
|
:form_action => form_action ||= :create,
|
|
3
4
|
:method => method ||= :post,
|
|
4
|
-
:cancel_link => cancel_link
|
|
5
|
+
:cancel_link => cancel_link,
|
|
5
6
|
:headline => headline ||= active_scaffold_config.create.label(active_scaffold_config.sti_create_links ? @record.class.model_name.human(:count => 1) : nil)} %>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<% url_options = params_for(:action => :index, :escape => false, :search => nil) -%>
|
|
2
2
|
<%=
|
|
3
|
-
options = {:id =>
|
|
3
|
+
options = {:id => element_form_id(:action => 'search'),
|
|
4
4
|
:class => "as_form search",
|
|
5
5
|
:remote => true,
|
|
6
6
|
:method => :get,
|
|
@@ -29,4 +29,4 @@ form_tag url_options, options %>
|
|
|
29
29
|
<%= loading_indicator_tag(:action => :search) %>
|
|
30
30
|
</p>
|
|
31
31
|
</form>
|
|
32
|
-
<%= javascript_tag("ActiveScaffold.focus_first_element_of_form('#{
|
|
32
|
+
<%= javascript_tag("ActiveScaffold.focus_first_element_of_form('#{element_form_id(:action => 'search')}');") %>
|
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
<% elsif column.readonly_association?
|
|
13
13
|
next %>
|
|
14
14
|
<% elsif renders_as == :subform and !override_form_field?(column) -%>
|
|
15
|
-
<li class="sub-form <%= active_scaffold_config_for(column.association.klass).subform.layout %>-sub-form <%= column.css_class unless column.css_class.nil? %>" id="<%= sub_form_id(:association => column.name) %>">
|
|
15
|
+
<li class="sub-form <%= active_scaffold_config_for(column.association.klass).subform.layout %>-sub-form <%= column.css_class unless column.css_class.nil? || column.css_class.is_a?(Proc) %>" id="<%= sub_form_id(:association => column.name) %>">
|
|
16
16
|
<%= render :partial => form_partial_for_column(column, renders_as), :locals => { :column => column } -%>
|
|
17
17
|
</li>
|
|
18
18
|
<% else -%>
|
|
19
|
-
<li class="form-element <%= 'required' if column.required? %> <%= column.css_class unless column.css_class.nil? %>">
|
|
19
|
+
<li class="form-element <%= 'required' if column.required? %> <%= column.css_class unless column.css_class.nil? || column.css_class.is_a?(Proc) %>">
|
|
20
20
|
<%= render :partial => form_partial_for_column(column, renders_as), :locals => { :column => column } -%>
|
|
21
21
|
</li>
|
|
22
22
|
<% end -%>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<%= render :partial => 'messages' %>
|
|
2
2
|
|
|
3
3
|
<% unless @record.nil? %>
|
|
4
|
-
<%=
|
|
4
|
+
<%= active_scaffold_error_messages_for :record, :object_name => @record.class.model_name.human.downcase %>
|
|
5
5
|
<% end %>
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<% if @record.errors.count -%>
|
|
9
9
|
<tr class="association-record-errors">
|
|
10
10
|
<td colspan="<%= active_scaffold_config_for(@record.class).subform.columns.length + 1 %>" id="<%= element_messages_id :action => @record.class.name.underscore, :id => "#{parent_record.id}-#{index}" %>">
|
|
11
|
-
<%=
|
|
11
|
+
<%= active_scaffold_error_messages_for :record, :object_name => @record.class.model_name.human.downcase %>
|
|
12
12
|
</td>
|
|
13
13
|
</tr>
|
|
14
14
|
<% end %>
|
|
@@ -1,22 +1,14 @@
|
|
|
1
|
-
<% action_links ||= active_scaffold_config.action_links.member %>
|
|
2
1
|
<td class="actions"><table cellpadding="0" cellspacing="0">
|
|
3
2
|
<tr>
|
|
4
3
|
<td class="indicator-container">
|
|
5
4
|
<%= loading_indicator_tag(:action => :record, :id => record.id) %>
|
|
6
5
|
</td>
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
<% elsif (options[:node] == :start_traversing) -%>
|
|
14
|
-
<%= "<#{tag} #{"class=\"action_list\"" if tag == 'td'}> #{content_tag('span', parent.name)}<ul>".html_safe %>
|
|
15
|
-
<% level += 1 %>
|
|
16
|
-
<% else -%>
|
|
17
|
-
<%= content_tag(tag, options[:authorized] ? render_action_link(link, url_options, record) : action_link_html(link, nil, {:class => "disabled #{link.action}#{link.html_options[:class].blank? ? '' : (' ' + link.html_options[:class])}"})) %>
|
|
18
|
-
<% end -%>
|
|
19
|
-
<% end -%>
|
|
6
|
+
<%= render :partial => 'action_group', :locals => {:action_links => action_links || active_scaffold_config.action_links.member,
|
|
7
|
+
:url_options => url_options,
|
|
8
|
+
:record => record,
|
|
9
|
+
:traverse_options => {:for => record},
|
|
10
|
+
:start_level_0_tag => '<td>',
|
|
11
|
+
:end_level_0_tag => '</td>'} %>
|
|
20
12
|
</tr>
|
|
21
13
|
</table>
|
|
22
14
|
</td>
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
<% action_links = active_scaffold_config.action_links.collection
|
|
1
|
+
<% action_links = active_scaffold_config.action_links.collection
|
|
2
2
|
unless action_links.empty? -%>
|
|
3
3
|
<div class="actions">
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
<%= render_action_link(link, new_params) -%>
|
|
8
|
-
<% end -%>
|
|
4
|
+
<%= render :partial => 'action_group', :locals => {:action_links => action_links,
|
|
5
|
+
:url_options => params_for,
|
|
6
|
+
:traverse_options => nested? ? {:reverse => true} : {}} %>
|
|
9
7
|
<%= loading_indicator_tag(:action => :table) %>
|
|
10
8
|
</div>
|
|
11
9
|
<% end %>
|