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
@@ -2,46 +2,23 @@
2
2
 
3
3
  <h2>Edit Template</h2>
4
4
 
5
- <%= form_tag({}, { :onsubmit => "temp_content.toggleEditor();" }) do %>
6
- <table width="100%" height="100%">
7
- <col width="100" />
8
- <tr>
9
- <td>Name:</td>
10
- <td><%= text_field :temp, :name %></td>
11
- </tr>
12
- <tr>
13
- <td valign="top"><div style="margin-top: 2px">Content:</div></td>
14
- <td>
15
- <%= text_area :temp, :content, :class => 'codepress html autocomplete-off', :style => 'width: 100%; height: 600px;' %>
16
- </td>
17
- </tr>
18
- <tr>
19
- <td></td>
20
- <td>
21
- <%= submit_tag 'Save Template', :class => 'form_button' %>
22
- <button onclick="$('preview_frame').scrollIntoView(); temp_content.toggleEditor(); $('preview_content').value = $('temp_content_cp').value; $('preview_form').submit(); temp_content.toggleEditor(); return false;" class="form_button">Preview</button>
23
- <%= link_to 'Cancel', :action => 'templates' %>
24
- </td>
25
- </tr>
26
- </table>
27
- <br/>
28
-
29
- <%= render :partial => 'template_reference' %>
30
- <br/>
31
-
32
- <table width="100%">
33
- <col width="100" />
34
- <tr>
35
- <td valign="top"><div style="margin-top: 2px">Preview:</div></td>
36
- <td>
37
- <iframe id="preview_frame" name="preview_frame" style="width: 100%; height: 600px; border: 1px solid gray;"></iframe>
38
- <%= submit_tag 'Save Template', :class => 'form_button' %>
39
- </td>
40
- </tr>
41
- </table>
5
+ <%= form_tag do %>
6
+ <%= text_field :temp, :name, :placeholder => 'Template Name', :size => '50' %>
7
+ <div class="codemirror-html-container">
8
+ <%= text_area :temp, :content, :class => 'codemirror-html autocomplete-off' %>
9
+ </div>
10
+ <%= submit_tag 'Save Template', :class => 'form_button' %>
11
+ <button onclick="jQuery('#preview_frame').show(); jQuery('#preview_frame')[0].scrollIntoView(); jQuery('#preview_content').val(jQuery('#temp_content').val()); jQuery('#preview_form').submit(); return false;" class="form_button">Preview</button>
12
+ <%= link_to 'Cancel', :action => 'templates' %>
13
+ <br/>
14
+
15
+ <br/>
16
+ <%= render :partial => 'template_reference' %>
17
+ <br/>
18
+
19
+ <iframe id="preview_frame" name="preview_frame"></iframe>
42
20
  <% end %>
43
21
 
44
-
45
22
  <%= form_tag({ :controller => '/cms/content', :action => 'preview_template' }, :id => 'preview_form', :target => 'preview_frame') do %>
46
23
  <%= text_area_tag 'temp[content]', '', :id => 'preview_content', :style => 'display: none;' %>
47
24
  <%= hidden_field_tag 'mode', 'preview' %>
@@ -20,18 +20,12 @@ EOF
20
20
 
21
21
  <%= flash_message %>
22
22
 
23
- <div id="columnBrowserToolbar" style="background-color: #d0d0d0; padding: 4px; margin-bottom: 5px; ">
24
- <a id="new_link" href="#"><img src="/assets/management/btn_top_new.gif" style="margin-right: 2px;" /></a>
25
- <a id="edit_content_link" href="#" target="_blank"><img src="/assets/management/btn_top_edit.gif" style="margin-right: 2px;" /></a>
26
- <form id="edit_content_form" action="#" onsubmit="this.action = $('edit_content_link').href;" target="_blank" style="display: none">
27
- <button>dummy</button>
28
- </form>
29
- <a id="edit_link" href="#"><img src="/assets/management/btn_top_properties.gif" style="margin-right: 2px;" /></a>
30
- <a id="view_link" href="#" target="_blank"><img src="/assets/management/btn_top_preview.gif" style="margin-right: 2px;" /></a>
31
- <a id="delete_link" href="#" onclick="if (confirm('Are you sure you want to delete the selected page?')) { $('delete_form').submit(); } return false;"><img src="/assets/management/btn_top_delete.gif" style="margin: 0" /></a>
32
- <%= form_tag('', :id => "delete_form", :style => "display: none") do %>
33
- <button>dummy</button>
34
- <% end %>
23
+ <div id="columnBrowserToolbar" style="background-color: #ddd; padding: 5px 4px 0; margin: 0 0 5px;">
24
+ <%= link_to image_tag('management/btn-top-new.png', style: 'margin-right: 2px;'), '#', id: 'new_link' %>
25
+ <%= link_to image_tag('management/btn-top-edit.png', style: 'margin-right: 2px;'), '#', id: 'edit_content_link', target: '_blank' %>
26
+ <%= link_to image_tag('management/btn-top-properties.png', style: 'margin-right: 2px;'), '#', id: 'edit_link' %>
27
+ <%= link_to image_tag('management/btn-top-preview.png', style: 'margin-right: 2px;'), '#', id: 'view_link', target: '_blank' %>
28
+ <%= link_to image_tag('management/btn-top-delete.png', style: 'margin: 0;'), '#', id: 'delete_link', target: '_blank', method: :post, data: { confirm: 'Are you sure you want to delete the selected page?' } %>
35
29
  <div class="clearer"></div>
36
30
  </div>
37
31
 
@@ -39,8 +33,8 @@ EOF
39
33
  <div id="columnBrowser" style="width: <%= cbColWidthFull * (@page_levels.size) %>px;">
40
34
  <%- @page_levels.each_with_index do |name, i| -%>
41
35
  <%-
42
- if !name.blank?
43
- @path << '/' if !@path.blank?
36
+ if name.present?
37
+ @path << '/' if @path.present?
44
38
  @path << name
45
39
  end
46
40
  @parent = @page
@@ -51,23 +45,17 @@ EOF
51
45
  break_flag = false
52
46
 
53
47
  if !@page
54
- if @parent && @parent.children.first
55
- @page = @parent.children.first
56
- elsif @parent
57
- @page = @parent
58
- else
59
- @page = CmsPage.find(:first)
60
- end
48
+ @page = @parent.children.first || @parent || CmsPage.first
61
49
  break_flag = true
62
50
  end
63
51
  -%>
64
52
  <div id="columnBrowserLevel<%= i %>" style="width: <%= cbColWidth %>px; height: <%= cbColHeight %>px; overflow: auto; float: left; border-width: <%= cbBorderWidth %>px <%= cbBorderWidth %>px <%= cbBorderWidth %>px <%= i == 0 ? "#{cbBorderWidth}px" : '0' %>; border-style: solid; border-color: gray;">
65
53
  <%- if i == 0 -%>
66
- <%= render :partial => 'list_page', :locals => { :list_page => CmsPage.find(1) } %>
54
+ <%= render partial: 'list_page', locals: { list_page: CmsPage.first } %>
67
55
  <%- else -%>
68
- <%= render :partial => 'list_pages' %>
56
+ <%= render partial: 'list_pages' %>
69
57
  <%- end -%>
70
- <%= javascript_tag "$('cb_item_#{@parent.id}').className = 'cb_item cb_item_selected';" if @parent %>
58
+ <%= javascript_tag "jQuery('#cb_item_#{@parent.id}').addClass('cb_item_selected');" if @parent %>
71
59
  </div>
72
60
  <%- break if break_flag -%>
73
61
  <%- end -%>
@@ -80,10 +68,10 @@ EOF
80
68
  cbNumColumns = <%= @page_levels.size - 1 %>;
81
69
  $('columnBrowserLevel' + cbNumColumns).scrollIntoView();
82
70
  $('view_link').href = '<%= list_page.path.blank? ? '' : '/' + list_page.path %>/version/<%= list_page.published_version > 0 ? list_page.published_version : list_page.version %>';
83
- $('new_link').onclick = function () { editProperties('<%=raw url_for(:action => 'edit_page', :mode => 'ajax_new', :parent_id => list_page, :authenticity_token => form_authenticity_token.to_s) %>', 'Create New Page under /<%= list_page.path %>'); return false; };
84
- $('edit_link').onclick = function () { editProperties('<%=raw url_for :action => 'edit_page', :id => list_page, :mode => 'ajax_edit', :authenticity_token => form_authenticity_token.to_s %>', 'Page Properties: <%= list_page.name %>'); return false; };
85
- $('edit_content_link').href = '<%=raw url_for :action => 'edit_page_content', :id => list_page, :authenticity_token => form_authenticity_token.to_s %>';
86
- $('delete_form').action = '<%=raw url_for :action => 'delete_page', :id => list_page.id %>';
71
+ $('new_link').onclick = function () { editProperties('<%=raw url_for(action: 'edit_page', mode: 'ajax_new', parent_id: list_page, authenticity_token: form_authenticity_token.to_s) %>', 'Create New Page under /<%= list_page.path %>'); return false; };
72
+ $('edit_link').onclick = function () { editProperties('<%=raw url_for action: 'edit_page', id: list_page, mode: 'ajax_edit', authenticity_token: form_authenticity_token.to_s %>', 'Page Properties: <%= list_page.name %>'); return false; };
73
+ $('edit_content_link').href = '<%=raw url_for action: 'edit_page_content', id: list_page, authenticity_token: form_authenticity_token.to_s %>';
74
+ $('delete_link').href = '<%=raw url_for action: 'delete_page', id: list_page.id %>';
87
75
  </script>
88
76
 
89
- <%= render :partial => '/imagine_cms/dialogs' %>
77
+ <%= render '/imagine_cms/dialogs' %>
@@ -1,6 +1,6 @@
1
1
  <h2>CMS &raquo; Snippets</h2>
2
2
 
3
- <p><%= button_to 'Create New Snippet', { :action => 'edit_snippet' }, :method => :get %></p>
3
+ <p><%= button_to 'Create New Snippet', { action: 'edit_snippet' }, method: :get %></p>
4
4
 
5
5
  <%= flash_message %>
6
6
 
@@ -8,5 +8,5 @@
8
8
  <tr>
9
9
  <th>Name</th>
10
10
  </tr>
11
- <%= render :partial => 'snippet', :collection => @snippets %>
11
+ <%= render partial: 'snippet', collection: @snippets %>
12
12
  </table>
@@ -1,6 +1,6 @@
1
1
  <h2>CMS &raquo; Templates</h2>
2
2
 
3
- <p><%= button_to 'Create New Template', { :action => 'edit_template' }, :method => :get %></p>
3
+ <p><%= button_to 'Create New Template', { action: 'edit_template' }, method: :get %></p>
4
4
 
5
5
  <%= flash_message %>
6
6
 
@@ -8,5 +8,5 @@
8
8
  <tr>
9
9
  <th>Name</th>
10
10
  </tr>
11
- <%= render :partial => 'temp', :collection => @temps %>
11
+ <%= render partial: 'temp', collection: @temps %>
12
12
  </table>
@@ -56,6 +56,8 @@
56
56
  <option value="h2">Section Heading (H2)</option>
57
57
  <option value="h3">Sub-Heading (H3)</option>
58
58
  <option value="h4">Sub-Heading (H4)</option>
59
+ <option value="h5">Sub-Heading (H5)</option>
60
+ <option value="h6">Sub-Heading (H6)</option>
59
61
  <option value="blockquote">Block Quote</option>
60
62
  </select>
61
63
  </td>
@@ -70,7 +70,7 @@
70
70
  :complete => "$('set_page_version_loading').hide();" + (@pg ? "$('pg_published_version_container').style.borderColor = ($('pg_published_version').value == '0' || $('pg_published_version').value == '#{@pg.versions.last.version}') ? '#EBEBEB' : 'red';" : '')) do -%>
71
71
  <div id="pg_published_version_container" style="border-color: <%= @pg && (@pg.published_version == 0 || @pg.published_version == @pg.versions.last.version) ? '#EBEBEB' : 'red' %>; border-style: solid; border-width: 2px;">
72
72
  <select name="pg[published_version]" id="pg_published_version" style="font-size: 8pt; width: 210px;" onchange="this.form.onsubmit();">
73
- <%- [ [ '[ None (offline) ]', -1 ], [ '[ Latest ]', 0 ] ].concat(@pg.versions.reverse.map { |pg| [ "#{pg.version} - #{date_to_str(pg.updated_on)} #{time_to_str(pg.updated_on)}#{" by #{pg.updated_by_username}" unless pg.updated_by_username.blank? }", pg.version ] }).each do |label, version| %>
73
+ <%- [ @pg.path == '' ? nil : [ '[ None (offline) ]', -1 ], [ '[ Latest ]', 0 ] ].compact.concat(@pg.versions.reverse.map { |pg| [ "#{pg.version} - #{date_to_str(pg.updated_on)} #{time_to_str(pg.updated_on)}#{" by #{pg.updated_by_username}" unless pg.updated_by_username.blank? }", pg.version ] }).each do |label, version| %>
74
74
  <option value="<%= version %>"<%= (@pg && @pg.published_version == version.to_i) ? ' selected="selected"' : '' %>><%= label %></option>
75
75
  <%- end -%>
76
76
  </select>
@@ -89,7 +89,7 @@
89
89
  <%- end -%>
90
90
  </td>
91
91
  <td width="20">
92
- <div id="set_page_version_loading" style="display: none"><img src="/assets/interface/form_loading.gif" /></div>
92
+ <div id="set_page_version_loading" style="display: none"><%= image_tag "interface/form_loading.gif" %></div>
93
93
  </td>
94
94
  <% end -%>
95
95
 
@@ -1,6 +1,6 @@
1
1
  config_file = File.join(Rails.root, 'config', 'imagine_cms.yml')
2
2
 
3
- if File.exists?(config_file)
3
+ if File.exist?(config_file)
4
4
  ImagineCmsConfig = YAML.load(File.read(config_file))
5
5
 
6
6
  if ImagineCmsConfig['amazon_s3'] && ImagineCmsConfig['amazon_s3']['enabled']
data/imagine_cms.gemspec CHANGED
@@ -31,16 +31,19 @@ Gem::Specification.new do |s|
31
31
  s.add_dependency "rails-observers", "~> 0.1"
32
32
  s.add_dependency "actionpack-action_caching", "~> 1.0"
33
33
  s.add_dependency "actionpack-page_caching", "~> 1.0"
34
- s.add_dependency "non-stupid-digest-assets", "~> 1.0"
35
- s.add_dependency "prototype-rails", "~> 4.0.0"
36
34
  s.add_dependency "aws-sdk", "~> 2.0.0"
37
- s.add_dependency "rmagick", [ ">= 1.15.0", "< 3.0" ]
38
- s.add_dependency "mini_magick", "~> 3.3"
39
35
  s.add_dependency "rubyzip", "~> 1.0"
40
36
  s.add_dependency "rinku", "~> 1.7"
41
37
  s.add_dependency "net-dns", "~> 0.7"
42
38
  s.add_dependency "acts_as_tree", "~> 1.1"
43
39
  s.add_dependency "safe_yaml"
40
+ s.add_dependency "codemirror-rails"
41
+
42
+ # on the way out, but still needed for now
43
+ # s.add_dependency "prototype-rails", "~> 4.2.0"
44
+ s.add_dependency "rmagick", [ ">= 1.15.0", "< 3.0" ]
45
+ s.add_dependency "mini_magick", "~> 3.3"
46
+ s.add_dependency "non-stupid-digest-assets", "~> 1.0"
44
47
 
45
48
  s.add_development_dependency "sqlite3"
46
49
  end
@@ -144,10 +144,6 @@ module ActionControllerExtensions
144
144
 
145
145
  options[:wrapper_div] = true
146
146
 
147
- # make options specified in snippets and templates accessible to
148
- # page list segments and rss feeds
149
- @page_objects["#{key}-template"] = options[:template] if @page_objects["#{key}-template"].blank?
150
-
151
147
  render_page_list_segment(name, pages, options, html_options)
152
148
  end
153
149
  when :snippet
@@ -169,6 +165,20 @@ module ActionControllerExtensions
169
165
  end
170
166
  end
171
167
 
168
+ # shortcuts
169
+ def text_editor(name, options = {}, html_options = {})
170
+ insert_object(name, :text, options, html_options)
171
+ end
172
+ alias :texteditor :text_editor
173
+ def page_list(name, options = {}, html_options = {})
174
+ insert_object(name, :page_list, options, html_options)
175
+ end
176
+ alias :pagelist :page_list
177
+ def snippet(name, options = {}, html_options = {})
178
+ insert_object(name, :snippet, options, html_options)
179
+ end
180
+
181
+
172
182
  def render_page_list_segment(name, pages, options = {}, html_options = {})
173
183
  extend ActionView::Helpers::TagHelper
174
184
  extend ActionView::Helpers::TextHelper
@@ -204,27 +214,48 @@ module ActionControllerExtensions
204
214
  :page_list_name => name) : nil))
205
215
 
206
216
  num_segments = (pages.size.to_f / limit).ceil
207
- if @page_objects["#{key}-use-pagination"].to_i == 1 && num_segments > 1
208
- content << '<table style="margin-top: 4px;" align="right" cellpadding="0" cellspacing="0" border="0"><tr valign="bottom">'
209
- content << '<td>Page:&nbsp;</td>'
217
+ Rails.logger.info "Number of page list segments: #{num_segments}"
218
+ if first_non_empty(options[:use_pagination], @page_objects["#{key}-use-pagination"], 0).to_i == 1 && num_segments > 1
219
+ content << '<div class="imagine_cms-paginator">'
220
+ content << 'Page:&nbsp;'
210
221
  num_segments.times do |seg|
211
222
  start = seg * limit
212
- content << "<td><a href=\"#\""
223
+ content << "<a id=\"#{key}-segment-#{seg}\" href=\"#\""
213
224
  if offset >= start && offset < (start + limit)
214
- content << " class=\"page_list_segment page_list_segment_selected\""
225
+ content << " class=\"imagine_cms-paginator-link imagine_cms-paginator-link-selected\""
215
226
  else
216
- content << " class=\"page_list_segment\""
217
- content << " onmouseover=\"this.className = 'page_list_segment page_list_segment_selected'\""
218
- content << " onmouseout=\"this.className = 'page_list_segment'\""
219
- content << " onclick=\"$('#{key}').style.cursor = 'wait'; $('#{key}').style.opacity = 0.5; "
220
- # FIXME: Prototype
221
- content << " new Ajax.Updater('#{key}', '#{url_for(:content_path => @pg.path.split('/').concat([ 'segment', start.to_s, name ]), :only_path => true)}', {asynchronous:true, evalScripts:true, method:'get'});"
222
- content << "; window.scrollBy(0, - 20 + document.getElementById('#{key}').getBoundingClientRect().top); return false;\""
227
+ content << " class=\"imagine_cms-paginator-link\""
223
228
  end
224
- content << ">#{seg+1}</a></td>"
229
+ content << ">#{seg+1}</a>"
230
+ end
231
+ content << '</div>'
232
+ content << <<-EOT
233
+ <script type="text/javascript">
234
+ jQuery('##{key}').css({ opacity: '1', cursor: 'default' });
235
+ jQuery('.imagine_cms-paginator-link').not('.imagine_cms-paginator-link-selected').mouseover(function () {
236
+ jQuery(this).addClass('imagine_cms-paginator-link-selected');
237
+ }).mouseout(function () {
238
+ jQuery(this).removeClass('imagine_cms-paginator-link-selected');
239
+ });
240
+
241
+ EOT
242
+ num_segments.times do |seg|
243
+ start = seg * limit
244
+ content << <<-EOT
245
+ jQuery('##{key}-segment-#{seg}').click(function () {
246
+ jQuery('##{key}').css({ cursor: 'wait', opacity: '0.5' });
247
+ jQuery('html,body').animate({ scrollTop: jQuery('##{key}').position().top }, 200);
248
+ jQuery.get('#{url_for(:content_path => @pg.path.split('/').concat([ 'segment', start.to_s, name ]), :only_path => true)}', function (data) {
249
+ jQuery('##{key}').html(data);
250
+ jQuery('##{key}').css({ cursor: 'default', opacity: '1' });
251
+ });
252
+ return false;
253
+ })
254
+ EOT
225
255
  end
226
- content << '</tr></table>'
227
- content << "<script type=\"text/javascript\">$('#{key}').style.opacity = 1; $('#{key}').style.cursor = 'default';</script>"
256
+ content << <<-EOT
257
+ </script>
258
+ EOT
228
259
  end
229
260
 
230
261
  if options[:wrapper_div]
@@ -7,7 +7,8 @@ module ImagineCms
7
7
  middleware.use ::ActionDispatch::Static, "#{root}/public"
8
8
 
9
9
  initializer "imagine_cms.assets.precompile" do |config|
10
- Rails.application.config.assets.precompile += %w( codepress/** dojo/** management.css imagine_controls.css reset.css )
10
+ Rails.application.config.assets.precompile += %w( dojo/** management.css imagine_controls.css reset.css )
11
+ Rails.application.config.assets.precompile += ["codemirror*", "codemirror/**/*"]
11
12
  # Rails.application.config.load_paths << File.dirname(__FILE__) + "/../app/helpers"
12
13
  end
13
14
 
@@ -36,16 +37,19 @@ module ImagineCms
36
37
  require 'rails-observers'
37
38
  require 'actionpack/action_caching'
38
39
  require 'actionpack/page_caching'
39
- require 'non-stupid-digest-assets'
40
- require 'prototype-rails'
41
40
  require 'aws-sdk'
42
- require 'RMagick'
43
- require 'mini_magick'
44
41
  require 'zip'
45
42
  require 'rails_rinku'
46
- require 'net/dns'
47
- require 'acts_as_tree'
48
43
  require 'safe_yaml'
44
+ require 'acts_as_tree'
45
+ require 'net/dns'
46
+ require 'codemirror-rails'
47
+
48
+ # on the way out, but still needed for now
49
+ require 'prototype-rails'
50
+ require 'RMagick'
51
+ require 'mini_magick'
52
+ require 'non-stupid-digest-assets'
49
53
 
50
54
  #
51
55
  # rails plugins
@@ -86,7 +90,7 @@ module ImagineCms
86
90
 
87
91
  helper_method :user_has_permission?
88
92
  helper_method :user_has_permissions?
89
- helper_method :insert_object
93
+ helper_method :insert_object, :text_editor, :texteditor, :page_list, :pagelist, :snippet
90
94
 
91
95
  # before_filter :create_settings_object, :set_default_session_values, :check_ssl_requirement, :expire_session_data
92
96
  before_filter :expire_session_data
@@ -1,3 +1,3 @@
1
1
  module ImagineCms
2
- VERSION = "4.1.4"
2
+ VERSION = "4.2.0"
3
3
  end
@@ -175,7 +175,7 @@ module PrototypeHelper
175
175
  # { :update => "posts", :url => { :action => "destroy", :id => post.id } },
176
176
  # :href => url_for(:action => "destroy", :id => post.id)
177
177
  def link_to_remote(name, options = {}, html_options = nil)
178
- link_to_function(name, remote_function(options), html_options || options.delete(:html))
178
+ link_to_function(name, remote_function(options), html_options || options.delete(:html)).gsub('&amp;amp;', '&amp;').html_safe
179
179
  end
180
180
 
181
181
  # Returns a form tag that will submit using XMLHttpRequest in the
@@ -219,7 +219,7 @@ module PrototypeHelper
219
219
  (options[:html][:onsubmit] ? options[:html][:onsubmit] + "; " : "") +
220
220
  "#{remote_function(options)}; return false;"
221
221
 
222
- form_tag(options[:html].delete(:action) || url_for(options[:url]), options[:html], &block)
222
+ form_tag(options[:html].delete(:action) || url_for(options[:url]), options[:html], &block).gsub('&amp;amp;', '&amp;').html_safe
223
223
  end
224
224
 
225
225
  # Creates a form that will submit using XMLHttpRequest in the background
@@ -20,4 +20,12 @@ namespace :imagine_cms do
20
20
 
21
21
  end
22
22
 
23
+ desc "Copy dojo editor files to public"
24
+ task :install_dojo => :environment do
25
+ sourcedir = File.expand_path('../../../app/assets/javascripts/dojo', __FILE__)
26
+ targetdir = File.expand_path(File.join(Rails.root, 'public', 'assets'))
27
+ FileUtils.mkdir_p targetdir
28
+ FileUtils.cp_r sourcedir, targetdir
29
+ end
30
+
23
31
  end