spud_core 0.9.3 → 0.9.4
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/javascripts/spud/admin/application.js +11 -34
- data/app/assets/javascripts/spud/admin/date_picker.js +56 -0
- data/app/assets/javascripts/spud/admin/editor.js +19 -6
- data/app/assets/libs/tiny_mce/plugins/tableDropdown/editor_plugin.js +140 -0
- data/app/assets/stylesheets/spud/admin/application.css +4 -0
- data/lib/spud_core/version.rb +1 -1
- metadata +5 -3
@@ -24,10 +24,12 @@ $(document).ready(function() {
|
|
24
24
|
};
|
25
25
|
}
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
27
|
+
spud.admin.editor.init();
|
28
|
+
|
29
|
+
// $('#user_table').dataTable({
|
30
|
+
// "bJQueryUI": true,
|
31
|
+
// "sPaginationType": "full_numbers"
|
32
|
+
// });
|
31
33
|
|
32
34
|
$("#modal_window .modal-footer .form-submit").bind('click', function() {
|
33
35
|
$("#modal_window .modal-body form").submit();
|
@@ -71,9 +73,7 @@ $(document).ready(function() {
|
|
71
73
|
|
72
74
|
$('#multisite_switcher select').change(function() {
|
73
75
|
$(this).parent().submit();
|
74
|
-
// alert('test');
|
75
76
|
});
|
76
|
-
initFormTabs();
|
77
77
|
|
78
78
|
} );
|
79
79
|
|
@@ -89,41 +89,18 @@ function add_fields(link, association, content) {
|
|
89
89
|
$(link).parent().before(content.replace(regexp, new_id));
|
90
90
|
}
|
91
91
|
|
92
|
-
|
93
|
-
var tabNames = [];
|
94
|
-
|
95
|
-
$('.formtabs .formtab').each(function(tabind) {
|
96
|
-
if(tabind === 0) {
|
97
|
-
$(this).addClass('active');
|
98
|
-
}
|
99
|
-
this.id = 'tab-' + tabind;
|
100
|
-
tabNames.push($('.tab_name',this).first().val());
|
101
|
-
});
|
102
|
-
var tabButtons = $('.formtabs .formtab_buttons').first();
|
103
|
-
for(var x=0;x<tabNames.length;x++)
|
104
|
-
{
|
105
|
-
var tabButton = $('<li><a href="#tab-' + x + '" data-toggle="tab">' + tabNames[x] + '</a></li>');
|
106
|
-
if(x == 0) {
|
107
|
-
tabButton.addClass('active');
|
108
|
-
}
|
109
|
-
tabButtons.append(tabButton);
|
110
|
-
}
|
111
|
-
|
112
|
-
// $('.formtabs').tabs();
|
113
|
-
}
|
92
|
+
|
114
93
|
|
115
94
|
|
116
95
|
function initTinyMCE(selector) {
|
117
|
-
console.warn('Deprecation Notice: `initTinyMCE()` is
|
96
|
+
console.warn('Deprecation Notice: `initTinyMCE()` is deprecated, please use `spud.admin.editor.init()` instead.');
|
118
97
|
spud.admin.editor.init();
|
119
98
|
}
|
120
99
|
|
121
100
|
function initDatePicker(selector){
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
'autoclose': true
|
126
|
-
});
|
101
|
+
console.warn('Deprecation Notice: `initDatePicker()` is deprecated, please use `spud.admin.date_picker.init()` instead.');
|
102
|
+
spud.admin.date_picker.init();
|
103
|
+
|
127
104
|
}
|
128
105
|
|
129
106
|
function displayModalDialogWithOptions(options){
|
@@ -0,0 +1,56 @@
|
|
1
|
+
spud.admin.date_picker = {};
|
2
|
+
|
3
|
+
(function() {
|
4
|
+
var picker = spud.admin.date_picker;
|
5
|
+
|
6
|
+
parsePickerDate = function(value) {
|
7
|
+
var date = new Date();
|
8
|
+
|
9
|
+
var currentDateTimeComponents = value.split(" ");
|
10
|
+
var dateComponents = currentDateTimeComponents[0].split("-");
|
11
|
+
if(dateComponents.length >= 3) {
|
12
|
+
date = new Date(parseInt(dateComponents[0],10),parseInt(dateComponents[1],10) - 1,parseInt(dateComponents[2],10));
|
13
|
+
}
|
14
|
+
return date;
|
15
|
+
}
|
16
|
+
|
17
|
+
picker.init = function(selector) {
|
18
|
+
selector = (typeof(selector) == 'undefined') ? '.spud_form_date_picker' : selector;
|
19
|
+
$(selector).each(function() {
|
20
|
+
var $this = $(this);
|
21
|
+
var baseName = $this.attr('name');
|
22
|
+
$this.attr('name',baseName.replace("[","_").replace("]",""));
|
23
|
+
$this.datepicker({
|
24
|
+
'format': 'yyyy-mm-dd',
|
25
|
+
'autoclose': true
|
26
|
+
});
|
27
|
+
$this.val($this.val().split(" ")[0]);
|
28
|
+
var date = parsePickerDate($this.val());
|
29
|
+
|
30
|
+
var yearField = $("<input type='hidden'/>");
|
31
|
+
yearField.attr('name',baseName.replace(']',"(1i)]"));
|
32
|
+
yearField.val(date.getFullYear());
|
33
|
+
var monthField = $("<input type='hidden'/>");
|
34
|
+
monthField.attr('name',baseName.replace(']',"(2i)]"));
|
35
|
+
monthField.val(date.getMonth() + 1);
|
36
|
+
var dayField = $("<input type='hidden'/>");
|
37
|
+
dayField.attr('name',baseName.replace(']',"(3i)]"));
|
38
|
+
dayField.val(date.getUTCDate());
|
39
|
+
yearField.insertAfter($this);
|
40
|
+
monthField.insertAfter($this);
|
41
|
+
dayField.insertAfter($this);
|
42
|
+
|
43
|
+
|
44
|
+
$this.bind('change', function(evt) {
|
45
|
+
var date = parsePickerDate($(this).val());
|
46
|
+
yearField.val(date.getFullYear());
|
47
|
+
monthField.val(date.getMonth() + 1);
|
48
|
+
dayField.val(date.getUTCDate());
|
49
|
+
|
50
|
+
});
|
51
|
+
|
52
|
+
|
53
|
+
});
|
54
|
+
|
55
|
+
};
|
56
|
+
})();
|
@@ -6,12 +6,12 @@ spud.admin.editor = {};
|
|
6
6
|
var editor = spud.admin.editor;
|
7
7
|
|
8
8
|
var registeredPlugins = [
|
9
|
-
'autolink','lists','layer','table','advhr','advimage','advlink','iespell','inlinepopups','media','paste'
|
9
|
+
'autolink','lists','layer','table','tableDropdown','advhr','advimage','advlink','iespell','inlinepopups','media','paste'
|
10
10
|
];
|
11
11
|
|
12
12
|
var registeredButtons = [
|
13
|
-
['bold','italic','underline','strikethrough','
|
14
|
-
[
|
13
|
+
['bold','italic','underline','strikethrough','|','justifyleft','justifycenter','justifyright','justifyfull','|','formatselect','cut','copy','paste','pastetext','|','bullist','numlist','outdent','indent','|','tableDropdown','|','link','unlink','anchor','image','code'],
|
14
|
+
[],
|
15
15
|
[],
|
16
16
|
[]
|
17
17
|
];
|
@@ -38,6 +38,9 @@ spud.admin.editor = {};
|
|
38
38
|
"q[cite],samp,select[disabled|multiple|name|size],small," +
|
39
39
|
"textarea[cols|rows|disabled|name|readonly],tt,var,big";
|
40
40
|
|
41
|
+
var validFormats = "p,h1,h2,h3,h4,h5,h6";
|
42
|
+
|
43
|
+
theme_advanced_blockformats :
|
41
44
|
editor.init = function(){
|
42
45
|
editor.initWithOptions({});
|
43
46
|
};
|
@@ -46,8 +49,8 @@ spud.admin.editor = {};
|
|
46
49
|
var selector = options.selector || 'textarea.tinymce';
|
47
50
|
var theme = options.theme || 'advanced';
|
48
51
|
var height = options.height || 400;
|
49
|
-
|
50
|
-
|
52
|
+
$(selector).each(function() {
|
53
|
+
$(this).tinymce({
|
51
54
|
theme: theme,
|
52
55
|
plugins: registeredPlugins.join(','),
|
53
56
|
theme_advanced_toolbar_location: "top",
|
@@ -56,10 +59,20 @@ spud.admin.editor = {};
|
|
56
59
|
theme_advanced_buttons3: registeredButtons[2].join(','),
|
57
60
|
theme_advanced_buttons4: registeredButtons[3].join(','),
|
58
61
|
theme_advanced_toolbar_align: 'left',
|
62
|
+
theme_advanced_blockformats: validFormats,
|
59
63
|
convert_urls: false,
|
60
64
|
valid_elements: validElements,
|
65
|
+
width: $(this).width(),
|
61
66
|
height: height
|
67
|
+
});
|
62
68
|
});
|
69
|
+
|
70
|
+
};
|
71
|
+
|
72
|
+
editor.unload = function(selectorOptional) {
|
73
|
+
var selector = selectorOptional || 'textarea.tinymce';
|
74
|
+
$(selector).each(function() {$(this).tinymce().execCommand('mceRemoveControl',false,this.id);});
|
75
|
+
|
63
76
|
};
|
64
77
|
|
65
78
|
editor.registerPlugin = function(pluginName){
|
@@ -80,7 +93,7 @@ spud.admin.editor = {};
|
|
80
93
|
};
|
81
94
|
|
82
95
|
editor.registerButton = function(buttonNameOrArray, rowNum){
|
83
|
-
rowNum = rowNum ||
|
96
|
+
rowNum = rowNum || 0;
|
84
97
|
if(typeof(buttonNameOrArray) == 'object'){
|
85
98
|
registeredButtons[rowNum].concat(buttonNameOrArray);
|
86
99
|
}
|
@@ -0,0 +1,140 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* Table Dropdown Plugin for TinyMCE
|
4
|
+
*
|
5
|
+
* Copyright 2011 Cory LaViska for A Beautiful Site, LLC. — www.abeautifulsite.net
|
6
|
+
*
|
7
|
+
* Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
|
8
|
+
*
|
9
|
+
*/
|
10
|
+
(function() {
|
11
|
+
|
12
|
+
tinymce.create('tinymce.plugins.TableDropdown', {
|
13
|
+
|
14
|
+
createControl: function(n, cm) {
|
15
|
+
|
16
|
+
switch( n ) {
|
17
|
+
|
18
|
+
case 'tableDropdown':
|
19
|
+
|
20
|
+
var c = cm.createSplitButton('tableDropdown', {
|
21
|
+
title : 'table.desc',
|
22
|
+
'class': 'mce_table',
|
23
|
+
onclick: function() {
|
24
|
+
tinymce.activeEditor.execCommand('mceInsertTable');
|
25
|
+
}
|
26
|
+
});
|
27
|
+
|
28
|
+
c.onRenderMenu.add(function(c, m) {
|
29
|
+
|
30
|
+
m.add({
|
31
|
+
title: 'table.desc',
|
32
|
+
icon: 'table',
|
33
|
+
cmd: 'mceInsertTable'
|
34
|
+
});
|
35
|
+
|
36
|
+
m.add({
|
37
|
+
title: 'table.del',
|
38
|
+
icon: 'delete_table',
|
39
|
+
cmd: 'mceTableDelete'
|
40
|
+
});
|
41
|
+
|
42
|
+
m.addSeparator();
|
43
|
+
|
44
|
+
m.add({
|
45
|
+
title: 'table.row_desc',
|
46
|
+
icon: 'row_props',
|
47
|
+
cmd: 'mceTableRowProps'
|
48
|
+
});
|
49
|
+
|
50
|
+
m.add({
|
51
|
+
title: 'table.cell_desc',
|
52
|
+
icon: 'cell_props',
|
53
|
+
cmd: 'mceTableCellProps'
|
54
|
+
});
|
55
|
+
|
56
|
+
m.addSeparator();
|
57
|
+
|
58
|
+
m.add({
|
59
|
+
title: 'table.row_before_desc',
|
60
|
+
icon: 'row_before',
|
61
|
+
cmd: 'mceTableInsertRowBefore'
|
62
|
+
});
|
63
|
+
|
64
|
+
m.add({
|
65
|
+
title: 'table.row_after_desc',
|
66
|
+
icon: 'row_after',
|
67
|
+
cmd: 'mceTableInsertRowAfter'
|
68
|
+
});
|
69
|
+
|
70
|
+
m.add({
|
71
|
+
title: 'table.delete_row_desc',
|
72
|
+
icon: 'delete_row',
|
73
|
+
cmd: 'mceTableDeleteRow'
|
74
|
+
});
|
75
|
+
|
76
|
+
m.addSeparator();
|
77
|
+
|
78
|
+
m.add({
|
79
|
+
title: 'table.col_before_desc',
|
80
|
+
icon: 'col_before',
|
81
|
+
cmd: 'mceTableInsertColBefore'
|
82
|
+
});
|
83
|
+
|
84
|
+
m.add({
|
85
|
+
title: 'table.col_after_desc',
|
86
|
+
icon: 'col_after',
|
87
|
+
cmd: 'mceTableInsertColAfter'
|
88
|
+
});
|
89
|
+
|
90
|
+
m.add({
|
91
|
+
title: 'table.delete_col_desc',
|
92
|
+
icon: 'delete_col',
|
93
|
+
cmd: 'mceTableDeleteCol'
|
94
|
+
});
|
95
|
+
|
96
|
+
m.addSeparator();
|
97
|
+
|
98
|
+
m.add({
|
99
|
+
title: 'table.merge_cells_desc',
|
100
|
+
icon: 'merge_cells',
|
101
|
+
cmd: 'mceTableMergeCells'
|
102
|
+
});
|
103
|
+
|
104
|
+
m.add({
|
105
|
+
title: 'table.split_cells_desc',
|
106
|
+
icon: 'split_cells',
|
107
|
+
cmd: 'mceTableSplitCells'
|
108
|
+
});
|
109
|
+
|
110
|
+
// Enable/disable menu items on node change
|
111
|
+
c.editor.onNodeChange.add( function(ed, cm, n, co) {
|
112
|
+
var items = items = ed.controlManager.controls[ed.id + '_tableDropdown'].menu.items,
|
113
|
+
p = ed.dom.getParent(ed.selection.getStart(), 'td,th,caption');
|
114
|
+
if( p && p.nodeName === 'CAPTION' ) p = 0;
|
115
|
+
tinymce.each(items, function(t) {
|
116
|
+
if( t.settings.icon === 'table' ) return;
|
117
|
+
t.setDisabled(!p);
|
118
|
+
});
|
119
|
+
});
|
120
|
+
|
121
|
+
// This really needs to be done with a callback, but there
|
122
|
+
// doesn't seem to be one that works in the wiki
|
123
|
+
setTimeout( function() {
|
124
|
+
c.editor.nodeChanged();
|
125
|
+
}, 50);
|
126
|
+
|
127
|
+
});
|
128
|
+
|
129
|
+
return c;
|
130
|
+
}
|
131
|
+
|
132
|
+
return null;
|
133
|
+
|
134
|
+
}
|
135
|
+
});
|
136
|
+
|
137
|
+
// Register plugin
|
138
|
+
tinymce.PluginManager.add('tableDropdown', tinymce.plugins.TableDropdown);
|
139
|
+
|
140
|
+
})();
|
data/lib/spud_core/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spud_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -286,6 +286,7 @@ files:
|
|
286
286
|
- app/assets/images/spud/admin/users_thumb.png
|
287
287
|
- app/assets/javascripts/spud/admin/application.js
|
288
288
|
- app/assets/javascripts/spud/admin/dashboard.js
|
289
|
+
- app/assets/javascripts/spud/admin/date_picker.js
|
289
290
|
- app/assets/javascripts/spud/admin/editor.js
|
290
291
|
- app/assets/javascripts/spud/admin/jquery.dataTables.min.js
|
291
292
|
- app/assets/javascripts/spud/admin/preinit.js
|
@@ -413,6 +414,7 @@ files:
|
|
413
414
|
- app/assets/libs/tiny_mce/plugins/table/merge_cells.htm
|
414
415
|
- app/assets/libs/tiny_mce/plugins/table/row.htm
|
415
416
|
- app/assets/libs/tiny_mce/plugins/table/table.htm
|
417
|
+
- app/assets/libs/tiny_mce/plugins/tableDropdown/editor_plugin.js
|
416
418
|
- app/assets/libs/tiny_mce/themes/advanced/about.htm
|
417
419
|
- app/assets/libs/tiny_mce/themes/advanced/anchor.htm
|
418
420
|
- app/assets/libs/tiny_mce/themes/advanced/charmap.htm
|
@@ -606,7 +608,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
606
608
|
version: '0'
|
607
609
|
segments:
|
608
610
|
- 0
|
609
|
-
hash: -
|
611
|
+
hash: -1527295184139763898
|
610
612
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
611
613
|
none: false
|
612
614
|
requirements:
|
@@ -615,7 +617,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
615
617
|
version: '0'
|
616
618
|
segments:
|
617
619
|
- 0
|
618
|
-
hash: -
|
620
|
+
hash: -1527295184139763898
|
619
621
|
requirements: []
|
620
622
|
rubyforge_project:
|
621
623
|
rubygems_version: 1.8.24
|