imagine_cms 4.1.4 → 4.2.0

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.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/README.rdoc +2 -1
  3. data/app/assets/images/interface/form_loading.gif +0 -0
  4. data/app/assets/images/management/btn-top-delete.png +0 -0
  5. data/app/assets/images/management/btn-top-edit.png +0 -0
  6. data/app/assets/images/management/btn-top-exterminate.png +0 -0
  7. data/app/assets/images/management/btn-top-new.png +0 -0
  8. data/app/assets/images/management/btn-top-preview.png +0 -0
  9. data/app/assets/images/management/btn-top-properties.png +0 -0
  10. data/app/assets/javascripts/codemirror/modes-custom/imagine_cms.js +87 -0
  11. data/app/assets/javascripts/imagine_cms/core.js +510 -0
  12. data/app/assets/javascripts/imagine_cms/legacy/misc.js +537 -0
  13. data/app/assets/javascripts/imagine_cms/legacy/rollovers.js +193 -0
  14. data/app/assets/javascripts/imagine_cms/legacy/slideshow.js +116 -0
  15. data/app/assets/javascripts/imagine_cms/legacy/textfieldhints.js +55 -0
  16. data/app/assets/javascripts/imagine_cms.js +14 -1
  17. data/app/assets/javascripts/imagine_cms_compat.js +26 -0
  18. data/app/assets/javascripts/jquery-ui.js +16608 -0
  19. data/app/assets/javascripts/tag-it.js +591 -0
  20. data/app/assets/stylesheets/imagine_cms.css.scss +26 -10
  21. data/app/assets/stylesheets/imagine_controls.css.scss +8 -0
  22. data/app/assets/stylesheets/jquery-ui.css +1225 -0
  23. data/app/assets/stylesheets/jquery-ui.structure.css +833 -0
  24. data/app/assets/stylesheets/jquery-ui.theme.css +410 -0
  25. data/app/assets/stylesheets/jquery.tagit.css +69 -0
  26. data/app/assets/stylesheets/management.css.scss +7 -0
  27. data/app/assets/stylesheets/tagit.ui-imagine.css +100 -0
  28. data/app/controllers/cms/content_controller.rb +28 -45
  29. data/app/controllers/management/cms_controller.rb +116 -94
  30. data/app/helpers/cms_application_helper.rb +76 -39
  31. data/app/models/cms_page.rb +32 -14
  32. data/app/models/cms_page_object.rb +1 -1
  33. data/app/models/cms_page_tag.rb +2 -2
  34. data/app/models/cms_template.rb +1 -1
  35. data/app/models/user.rb +6 -6
  36. data/app/models/user_group.rb +1 -1
  37. data/app/views/cms/content/_photo_gallery.html.erb +12 -12
  38. data/app/views/cms/content/_search.html.erb +2 -2
  39. data/app/views/cms/content/_search_result.html.erb +16 -10
  40. data/app/views/layouts/management.html.erb +18 -17
  41. data/app/views/management/cms/_edit_page.html.erb +47 -33
  42. data/app/views/management/cms/_gallery_index.html.erb +4 -4
  43. data/app/views/management/cms/_image.html.erb +3 -3
  44. data/app/views/management/cms/_image_details.html.erb +9 -8
  45. data/app/views/management/cms/_list_page.html.erb +2 -2
  46. data/app/views/management/cms/_list_page_select.html.erb +1 -1
  47. data/app/views/management/cms/_page_list.html.erb +69 -48
  48. data/app/views/management/cms/_page_list_source_folder.html.erb +2 -2
  49. data/app/views/management/cms/_template_options.html.erb +4 -4
  50. data/app/views/management/cms/_template_reference.html.erb +13 -15
  51. data/app/views/management/cms/edit_page_content.html.erb +3 -3
  52. data/app/views/management/cms/edit_snippet.html.erb +19 -41
  53. data/app/views/management/cms/edit_template.html.erb +15 -38
  54. data/app/views/management/cms/pages.html.erb +17 -29
  55. data/app/views/management/cms/snippets.html.erb +2 -2
  56. data/app/views/management/cms/templates.html.erb +2 -2
  57. data/app/views/management/cms/toolbar_edit.html.erb +2 -0
  58. data/app/views/management/cms/toolbar_preview.html.erb +2 -2
  59. data/config/initializers/config_file.rb +1 -1
  60. data/imagine_cms.gemspec +7 -4
  61. data/lib/extensions/action_controller_extensions.rb +50 -19
  62. data/lib/imagine_cms/engine.rb +12 -8
  63. data/lib/imagine_cms/version.rb +1 -1
  64. data/lib/prototype_legacy_helper/lib/prototype_legacy_helper.rb +2 -2
  65. data/lib/tasks/imagine_cms_tasks.rake +8 -0
  66. metadata +69 -91
  67. data/app/assets/images/management/btn_archive.gif +0 -0
  68. data/app/assets/images/management/btn_delete.gif +0 -0
  69. data/app/assets/images/management/btn_duplicate.gif +0 -0
  70. data/app/assets/images/management/btn_edit.gif +0 -0
  71. data/app/assets/images/management/btn_new_page.gif +0 -0
  72. data/app/assets/images/management/btn_preview.gif +0 -0
  73. data/app/assets/images/management/btn_properties.gif +0 -0
  74. data/app/assets/images/management/btn_restore.gif +0 -0
  75. data/app/assets/images/management/btn_top_delete.gif +0 -0
  76. data/app/assets/images/management/btn_top_duplicate.gif +0 -0
  77. data/app/assets/images/management/btn_top_edit.gif +0 -0
  78. data/app/assets/images/management/btn_top_new.gif +0 -0
  79. data/app/assets/images/management/btn_top_preview.gif +0 -0
  80. data/app/assets/images/management/btn_top_properties.gif +0 -0
  81. data/app/assets/javascripts/codepress/codepress.html +0 -36
  82. data/app/assets/javascripts/codepress/codepress.js +0 -130
  83. data/app/assets/javascripts/codepress/engines/gecko.js +0 -240
  84. data/app/assets/javascripts/codepress/engines/khtml.js +0 -0
  85. data/app/assets/javascripts/codepress/engines/msie.js +0 -263
  86. data/app/assets/javascripts/codepress/engines/older.js +0 -0
  87. data/app/assets/javascripts/codepress/engines/opera.js +0 -259
  88. data/app/assets/javascripts/codepress/languages/css.js +0 -23
  89. data/app/assets/javascripts/codepress/languages/generic.js +0 -25
  90. data/app/assets/javascripts/codepress/languages/html.js +0 -63
  91. data/app/assets/javascripts/codepress/languages/java.js +0 -24
  92. data/app/assets/javascripts/codepress/languages/javascript.js +0 -30
  93. data/app/assets/javascripts/codepress/languages/perl.js +0 -27
  94. data/app/assets/javascripts/codepress/languages/php.js +0 -60
  95. data/app/assets/javascripts/codepress/languages/ruby.js +0 -26
  96. data/app/assets/javascripts/codepress/languages/sql.js +0 -30
  97. data/app/assets/javascripts/codepress/languages/text.js +0 -9
  98. data/app/assets/javascripts/imagine.js +0 -1393
  99. data/app/assets/stylesheets/codepress/codepress.css +0 -7
  100. data/app/assets/stylesheets/codepress/languages/css.css +0 -10
  101. data/app/assets/stylesheets/codepress/languages/generic.css +0 -9
  102. data/app/assets/stylesheets/codepress/languages/html.css +0 -18
  103. data/app/assets/stylesheets/codepress/languages/java.css +0 -7
  104. data/app/assets/stylesheets/codepress/languages/javascript.css +0 -8
  105. data/app/assets/stylesheets/codepress/languages/perl.css +0 -11
  106. data/app/assets/stylesheets/codepress/languages/php.css +0 -12
  107. data/app/assets/stylesheets/codepress/languages/ruby.css +0 -10
  108. data/app/assets/stylesheets/codepress/languages/sql.css +0 -10
  109. data/app/assets/stylesheets/codepress/languages/text.css +0 -5
@@ -0,0 +1,193 @@
1
+ /* deprecated image rollover code */
2
+
3
+ var defaultXMenuOffset = 0;
4
+ var defaultYMenuOffset = 0;
5
+ var defaultXOffset = 0;
6
+ var defaultYOffset = 0;
7
+ var showRolloverEffect = Effect.Appear;
8
+ var showRolloverEffectOptions = { duration: 0.2 };
9
+ var showRolloverMenuEffect = Effect.BlindDown;
10
+ var showRolloverMenuEffectOptions = { duration: 0.2 };
11
+ var hideRolloverDelay = 120;
12
+ var hideRolloverEffect = Effect.Fade;
13
+ var hideRolloverEffectOptions = { duration: 0.3 };
14
+ var hideRolloverMenuEffect = Effect.BlindUp;
15
+ var hideRolloverMenuEffectOptions = { duration: 0.2 };
16
+
17
+ var currentEffect = [];
18
+
19
+ var hideRolloverTimeouts = [];
20
+ var hoveredButtons = [];
21
+
22
+
23
+ /********************************
24
+ * rollover/menu functions *
25
+ ********************************/
26
+
27
+ function showRollover(target, xMenuOffset, yMenuOffset, xOffset, yOffset) {
28
+ try {
29
+ if (hideRolloverTimeouts[target]) {
30
+ clearTimeout(hideRolloverTimeouts[target]);
31
+ hideRolloverTimeouts[target] = null;
32
+ return;
33
+ }
34
+
35
+ if (hoveredButtons[target]) {
36
+ return;
37
+ }
38
+
39
+ var el = $(target + '_hover');
40
+ var sourceObj = $(target + '_std');
41
+
42
+ var coords = getElementPosition(sourceObj);
43
+ if (typeof(xMenuOffset) == 'undefined') xMenuOffset = defaultXMenuOffset;
44
+ if (typeof(yMenuOffset) == 'undefined') yMenuOffset = defaultYMenuOffset;
45
+ if (typeof(xOffset) == 'undefined') xOffset = defaultXOffset;
46
+ if (typeof(yOffset) == 'undefined') yOffset = defaultYOffset;
47
+
48
+ el.style.position = 'absolute';
49
+ el.style.left = coords[0] + xOffset + 'px';
50
+ el.style.top = coords[1] + yOffset + 'px';
51
+ el.style.margin = '0';
52
+ el.style.zIndex = '100';
53
+
54
+ if (currentEffect[el.id]) currentEffect[el.id].cancel();
55
+ currentEffect[el.id] = showRolloverEffect(el.id, showRolloverEffectOptions);
56
+
57
+ if (el = $(target + '_menu')) {
58
+ el.style.display = 'none';
59
+ el.style.position = 'absolute';
60
+ el.style.left = (coords[0] + xMenuOffset) + 'px';
61
+ el.style.top = (coords[1] + yMenuOffset) + 'px';
62
+ el.style.margin = '0';
63
+ el.style.zIndex = '100';
64
+
65
+ for (var i = 0; i < el.childNodes.length; i++) {
66
+ if (el.childNodes[i].tagName == 'DIV') {
67
+ el.style.width = el.childNodes[i].style.width;
68
+ el.style.height = el.childNodes[i].style.height;
69
+ break;
70
+ }
71
+ }
72
+ if (currentEffect[el.id]) currentEffect[el.id].cancel();
73
+ currentEffect[el.id] = showRolloverMenuEffect(el.id, showRolloverMenuEffectOptions);
74
+ }
75
+
76
+ hoveredButtons[target] = true;
77
+ } catch (e) { }
78
+ }
79
+
80
+ function hideRollover(target) {
81
+ try {
82
+ hideRolloverTimeouts[target] = setTimeout('hideRolloverComplete("' + target + '");', hideRolloverDelay);
83
+ } catch (e) {}
84
+ }
85
+
86
+ function hideRolloverComplete(target) {
87
+ try {
88
+ hideRolloverTimeouts[target] = null;
89
+
90
+ if (el = $(target + '_hover')) {
91
+ if (currentEffect[el.id]) currentEffect[el.id].cancel();
92
+ currentEffect[el.id] = hideRolloverEffect(el.id, hideRolloverEffectOptions);
93
+ }
94
+
95
+ if (el = $(target + '_menu')) {
96
+ if (currentEffect[el.id]) currentEffect[el.id].cancel();
97
+ currentEffect[el.id] = hideRolloverMenuEffect(el.id, hideRolloverMenuEffectOptions);
98
+ }
99
+
100
+ hoveredButtons[target] = false;
101
+ } catch (e) {}
102
+ }
103
+
104
+
105
+ var hideSimpleRolloverTimeouts = [];
106
+ function showSimpleRollover(target, xOffset, yOffset) {
107
+ try {
108
+ // if we were planning to hide this element in the future, no need for that now
109
+ if (hideSimpleRolloverTimeouts[target]) {
110
+ clearTimeout(hideSimpleRolloverTimeouts[target]);
111
+ hideSimpleRolloverTimeouts[target] = null;
112
+ return;
113
+ }
114
+
115
+ // if other elements are waiting to be hidden, get it over with now
116
+ $H(hideSimpleRolloverTimeouts)._each(function (pair) {
117
+ clearTimeout(pair[1]);
118
+ hideSimpleRolloverComplete(pair[0]);
119
+ });
120
+ } catch (e) {}
121
+
122
+ try {
123
+ var el = document.getElementById(target + '_std');
124
+ el.oldsrc = el.src;
125
+ el.src = el.src.replace(/(_hover)?.gif$/, '_hover.gif');
126
+ if (!(is.ie && is.mac)) showSimpleRolloverMenu(target, xOffset, yOffset);
127
+ } catch (e) {}
128
+ }
129
+
130
+ function showSimpleRolloverMenu(target, xOffset, yOffset, useRelative) {
131
+ try {
132
+ if (hideSimpleRolloverTimeouts[target]) {
133
+ clearTimeout(hideSimpleRolloverTimeouts[target]);
134
+ hideSimpleRolloverTimeouts[target] = null;
135
+ return;
136
+ }
137
+
138
+ var el = document.getElementById(target + '_std');
139
+ if (el) {
140
+ var coords = getElementPosition(el);
141
+
142
+ if (typeof(xOffset) == 'undefined') xOffset = 0;
143
+ if (typeof(yOffset) == 'undefined') yOffset = 30;
144
+ if (typeof(useRelative) == 'undefined') useRelative = false;
145
+
146
+ if (el = document.getElementById(target + '_menu')) {
147
+ el.style.zIndex = 100;
148
+ el.style.position = 'absolute';
149
+ if (useRelative) {
150
+ el.style.left = xOffset + 'px';
151
+ el.style.top = yOffset + 'px';
152
+ } else {
153
+ el.style.left = (coords[0] + xOffset) + 'px';
154
+ el.style.top = (coords[1] + yOffset) + 'px';
155
+ }
156
+ el.style.display = '';
157
+ }
158
+ }
159
+ } catch (e) {}
160
+ }
161
+
162
+ function hideSimpleRollover(target) {
163
+ try {
164
+ hideSimpleRolloverTimeouts[target] = setTimeout('hideSimpleRolloverComplete("' + target + '")', 200);
165
+ } catch (e) {}
166
+ }
167
+
168
+ function hideSimpleRolloverComplete(target) {
169
+ try {
170
+ var el = document.getElementById(target + '_std');
171
+ if (el.oldsrc) el.src = el.oldsrc;
172
+ hideSimpleRolloverMenuComplete(target);
173
+ } catch (e) {}
174
+ }
175
+
176
+ function hideSimpleRolloverMenu(target) {
177
+ try {
178
+ hideSimpleRolloverTimeouts[target] = setTimeout('hideSimpleRolloverMenuComplete("' + target + '")', 200);
179
+ } catch (e) {}
180
+ }
181
+
182
+ function hideSimpleRolloverMenuComplete(target) {
183
+ try {
184
+ hideSimpleRolloverTimeouts[target] = null;
185
+
186
+ var el = document.getElementById(target + '_std');
187
+ var coords = getElementPosition(el);
188
+
189
+ if (el = document.getElementById(target + '_menu')) {
190
+ el.style.display = 'none';
191
+ }
192
+ } catch (e) {}
193
+ }
@@ -0,0 +1,116 @@
1
+ /********************************
2
+ * custom effects *
3
+ ********************************/
4
+
5
+ Effect.BlindRight = function(element) {
6
+ element = $(element);
7
+ var oldWidth = Element.getStyle(element, 'width');
8
+ var elementDimensions = Element.getDimensions(element);
9
+ return new Effect.Scale(element, 100,
10
+ Object.extend({
11
+ scaleContent: false,
12
+ scaleY: false,
13
+ scaleFrom: 0,
14
+ scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
15
+ restoreAfterFinish: true,
16
+ afterSetup: function(effect) { with(Element) {
17
+ makeClipping(effect.element);
18
+ setStyle(effect.element, {width: '0px'});
19
+ show(effect.element);
20
+ }}
21
+ }, arguments[1] || {})
22
+ );
23
+ }
24
+
25
+ Effect.SlideAppear = function(element) {
26
+ element = $(element);
27
+ new Effect.Appear(element, arguments[2] || arguments[1] || {});
28
+ new Effect.BlindRight(element, arguments[1] || {});
29
+ }
30
+
31
+ /********************************
32
+ * slideshow functions *
33
+ ********************************/
34
+
35
+ var currentSlideIndex = 0;
36
+ var maxSlideIndex = -1;
37
+
38
+ function getNumSlides() {
39
+ if (maxSlideIndex > -1) return maxSlideIndex;
40
+ maxSlideIndex = 0;
41
+
42
+ while ($('img_slideshow' + maxSlideIndex)) maxSlideIndex++;
43
+ return maxSlideIndex;
44
+ }
45
+
46
+ function nextSlide(delay, transition) {
47
+ if (typeof(transition) == 'undefined') transition = 'SlideAppear';
48
+ changeSlide(delay, transition, 1);
49
+ }
50
+
51
+ function prevSlide(delay, transition) {
52
+ if (typeof(transition) == 'undefined') transition = 'SlideAppear';
53
+ changeSlide(delay, transition, -1);
54
+ }
55
+
56
+ // controls elements named img_slideshowX
57
+ // uses a global named currentSlideIndex to keep track of its state
58
+ // uses a global named maxSlideIndex to cache the discovered maximum slide index
59
+ function changeSlide(delay, transition, increment) {
60
+ try {
61
+ if (typeof(delay) == 'undefined') delay = -1;
62
+ if (typeof(transition) == 'undefined') transition = 'SlideAppear';
63
+
64
+ // this element is used for positioning
65
+ origimg = $('img_slideshow');
66
+
67
+ nextSlideIndex = currentSlideIndex + increment;
68
+ if (!$('img_slideshow' + nextSlideIndex)) {
69
+ if (increment > 0) {
70
+ nextSlideIndex = 0;
71
+ } else {
72
+ nextSlideIndex = getNumSlides() - 1;
73
+ }
74
+ }
75
+
76
+ if ((curimg = $('img_slideshow' + currentSlideIndex)) &&
77
+ (nextimg = $('img_slideshow' + nextSlideIndex))) {
78
+ // push old images back
79
+ for (var i = 0; i < getNumSlides(); i++) {
80
+ $('img_slideshow' + i).style.zIndex = ((increment > 0) ? i : (getNumSlides() - i));
81
+ }
82
+ nextimg.style.zIndex = '90';
83
+ nextimg.style.margin = '0';
84
+
85
+ // really shouldn't have to do this, but I just can't figure it out...
86
+ curimg.style.zIndex = '89';
87
+
88
+ // drag the new image over the main image
89
+ var coords = getElementPosition(origimg);
90
+ nextimg.style.position = 'absolute';
91
+ nextimg.style.left = coords[0] + 'px';
92
+ nextimg.style.top = coords[1] + 'px';
93
+
94
+ eval('Effect.' + transition + '(nextimg.id, { duration: 1.8 });');
95
+ setTimeout('$("' + curimg.id + '").style.display = "none"', 1900);
96
+ if (delay > 0) setTimeout('changeSlide(' + delay + ', "' + transition + '", ' + increment + ');', delay);
97
+
98
+ currentSlideIndex = nextSlideIndex;
99
+ }
100
+ } catch (e) {}
101
+ }
102
+
103
+ // positions slide navigation elements (named btn_slidenext and btn_slideprev)
104
+ // relative to img_slideshow (x and y are the relative offsets)
105
+ function positionSlideNav(x, y) {
106
+ try {
107
+ img = $('img_slideshow');
108
+ nav = $('div_slidenav');
109
+
110
+ // move the buttons to their proper places
111
+ nav.style.zIndex = '95';
112
+ nav.style.position = 'relative';
113
+ nav.style.left = x + 'px';
114
+ nav.style.top = y + 'px';
115
+ } catch (e) {}
116
+ }
@@ -0,0 +1,55 @@
1
+ /* deprecated text field hints (use html placeholder attribute instead) */
2
+
3
+ /********************************
4
+ * text field hints *
5
+ ********************************/
6
+
7
+ var textFieldHints = new Array();
8
+ function setupTextFieldHints() {
9
+ textFieldHints.each(function (a) {
10
+ $A(document.getElementsByName(a.name)).each(function (el) {
11
+ var clearHint = function () {
12
+ el.value = '';
13
+ el.style.color = el.style.origColor ? el.style.origColor : 'black';
14
+ el.onfocus = el.oldOnFocus;
15
+ el.oldOnBlur = el.onblur;
16
+ el.onblur = function () {
17
+ if (typeof(el.oldOnBlur) == 'function') el.oldOnBlur();
18
+ setHint();
19
+ }
20
+ };
21
+ var setHint = function () {
22
+ if (!el.value || el.value == a.hint) {
23
+ el.value = a.hint;
24
+ el.style.origColor = el.style.color;
25
+ el.style.color = 'gray';
26
+ if (typeof(el.oldOnBlur) != 'undefined') el.onblur = el.oldOnBlur;
27
+ el.oldOnFocus = el.onfocus;
28
+ el.onfocus = function () {
29
+ if (typeof(el.oldOnFocus) == 'function') el.oldOnFocus();
30
+ clearHint();
31
+ }
32
+ }
33
+ }
34
+ setHint();
35
+ })
36
+ });
37
+ }
38
+ addLoadEvent(setupTextFieldHints);
39
+
40
+ function teardownTextFieldHints() {
41
+ textFieldHints.each(function (a) {
42
+ var el = document.getElementsByName(a.name)[0];
43
+ if (el.value == a.hint) {
44
+ el.value = '';
45
+ el.style.color = el.origColor ? el.origColor : 'black';
46
+ el.onfocus = null;
47
+ }
48
+ });
49
+ }
50
+
51
+ function addTextFieldHint(name, hint) {
52
+ if (textFieldHints.select(function (a) { return a.name == name }).length == 0) {
53
+ textFieldHints.push({ name: name, hint: hint });
54
+ }
55
+ }
@@ -4,6 +4,19 @@
4
4
  //= require dragdrop
5
5
  //= require controls
6
6
  //= require jquery_no_conflict
7
+ //= require jquery-ui
7
8
  //= require builder
8
9
  //= require cropper
9
- //= require imagine
10
+ //
11
+ //= require codemirror
12
+ //= require codemirror/modes/xml
13
+ //= require codemirror/modes/javascript
14
+ //= require codemirror/modes/css
15
+ //= require codemirror/modes/ruby
16
+ //= require codemirror/modes/htmlmixed
17
+ // require codemirror/modes/htmlembedded
18
+ //= require codemirror/modes-custom/imagine_cms
19
+ //
20
+ //= require tag-it
21
+ //
22
+ //= require imagine_cms/core
@@ -0,0 +1,26 @@
1
+ //= require prototype
2
+ //= require prototype_ujs
3
+ //= require effects
4
+ //= require dragdrop
5
+ //= require controls
6
+ //= require jquery_no_conflict
7
+ //= require jquery-ui
8
+ //= require builder
9
+ //= require cropper
10
+ //
11
+ //= require codemirror
12
+ //= require codemirror/modes/xml
13
+ //= require codemirror/modes/javascript
14
+ //= require codemirror/modes/css
15
+ //= require codemirror/modes/ruby
16
+ //= require codemirror/modes/htmlmixed
17
+ // require codemirror/modes/htmlembedded
18
+ //= require codemirror/modes-custom/imagine_cms
19
+ //
20
+ //= require tag-it
21
+ //
22
+ //= require imagine_cms/core
23
+ //= require imagine_cms/legacy/rollovers
24
+ //= require imagine_cms/legacy/slideshow
25
+ //= require imagine_cms/legacy/misc
26
+ //= require imagine_cms/legacy/textfieldhints