refinerycms-core 2.0.10 → 2.1.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 (181) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/refinery/admin.js.erb +126 -234
  3. data/app/assets/javascripts/refinery/ajaxy_pagination.js.coffee +1 -1
  4. data/app/assets/javascripts/refinery/boot_wym.js.erb +4 -8
  5. data/app/assets/javascripts/refinery/core.js +1 -1
  6. data/app/assets/javascripts/refinery/interface.js.coffee.erb +3 -16
  7. data/app/assets/javascripts/refinery/modal_dialogs.js.erb +0 -3
  8. data/app/assets/javascripts/refinery/nestedsortables.js +312 -312
  9. data/app/assets/javascripts/refinery/refinery.js.erb +14 -15
  10. data/app/assets/javascripts/refinery/site_bar.js +3 -9
  11. data/app/assets/javascripts/refinery/sortable_list.js +145 -0
  12. data/app/assets/javascripts/refinery/sortable_menu.js.coffee +3 -4
  13. data/app/assets/javascripts/refinery/submit_continue.js.coffee.erb +1 -2
  14. data/app/assets/javascripts/refinery/tree.js +3 -3
  15. data/app/assets/javascripts/refinery/wymeditor.js +6 -6
  16. data/{public → app/assets/javascripts}/wymeditor/GPL-license.txt +0 -0
  17. data/{public → app/assets/javascripts}/wymeditor/MIT-license.txt +0 -0
  18. data/{public → app/assets/javascripts}/wymeditor/README +0 -0
  19. data/app/assets/javascripts/wymeditor/browsers/mozilla.js.erb +10 -11
  20. data/app/assets/javascripts/wymeditor/browsers/webkit.js.erb +17 -18
  21. data/app/assets/javascripts/wymeditor/classes.js.erb +3 -5
  22. data/app/assets/javascripts/wymeditor/functions.js.erb +5 -1
  23. data/app/assets/javascripts/wymeditor/prototypes.js.erb +0 -3
  24. data/app/assets/javascripts/wymeditor/setup.js.erb +5 -5
  25. data/app/assets/javascripts/wymeditor/skins/refinery/skin.js +1 -4
  26. data/app/assets/javascripts/wymeditor/validators.js.erb +3 -2
  27. data/app/assets/stylesheets/{formatting.css.scss → refinery/formatting.css.scss} +0 -0
  28. data/app/assets/stylesheets/refinery/layout.css.scss +41 -11
  29. data/app/assets/stylesheets/{theme.css.scss → refinery/theme.css.scss} +0 -0
  30. data/app/controllers/refinery/sitemap_controller.rb +1 -5
  31. data/app/helpers/refinery/admin_helper.rb +6 -0
  32. data/app/helpers/refinery/image_helper.rb +2 -1
  33. data/app/helpers/refinery/menu_helper.rb +0 -49
  34. data/app/helpers/refinery/meta_helper.rb +7 -3
  35. data/app/helpers/refinery/site_bar_helper.rb +3 -15
  36. data/app/models/refinery/core/base_model.rb +2 -0
  37. data/{lib → app/presenters}/refinery/base_presenter.rb +1 -2
  38. data/app/views/layouts/application.html.erb +8 -7
  39. data/app/views/refinery/_content_page.html.erb +1 -1
  40. data/app/views/refinery/_google_analytics.html.erb +12 -5
  41. data/app/views/refinery/_head.html.erb +11 -15
  42. data/app/views/refinery/_header.html.erb +1 -4
  43. data/app/views/refinery/_javascripts.html.erb +14 -8
  44. data/app/views/refinery/_site_bar.html.erb +4 -4
  45. data/app/views/refinery/admin/_form_advanced_options_menu.html.erb +12 -0
  46. data/app/views/refinery/admin/_javascripts.html.erb +13 -1
  47. data/app/views/refinery/admin/_locale_picker.html.erb +11 -0
  48. data/app/views/refinery/admin/_make_sortable.html.erb +8 -5
  49. data/app/views/refinery/admin/_search.html.erb +1 -7
  50. data/app/views/refinery/admin/_search_header.html.erb +1 -0
  51. data/app/views/refinery/admin/_wysiwyg.html.erb +16 -0
  52. data/config/initializers/will_paginate_monkeypatch.rb +1 -1
  53. data/config/locales/bg.yml +5 -1
  54. data/config/locales/cs.yml +5 -1
  55. data/config/locales/da.yml +5 -1
  56. data/config/locales/de.yml +7 -3
  57. data/config/locales/el.yml +5 -1
  58. data/config/locales/en.yml +7 -1
  59. data/config/locales/es.yml +5 -1
  60. data/config/locales/fi.yml +5 -1
  61. data/config/locales/fr.yml +5 -1
  62. data/config/locales/hu.yml +82 -0
  63. data/config/locales/it.yml +38 -34
  64. data/config/locales/ja.yml +5 -1
  65. data/config/locales/ko.yml +5 -1
  66. data/config/locales/lt.yml +5 -1
  67. data/config/locales/lv.yml +5 -1
  68. data/config/locales/nb.yml +5 -1
  69. data/config/locales/nl.yml +36 -29
  70. data/config/locales/pl.yml +8 -1
  71. data/config/locales/pt-BR.yml +7 -3
  72. data/config/locales/pt.yml +82 -0
  73. data/config/locales/rs.yml +5 -1
  74. data/config/locales/ru.yml +5 -1
  75. data/config/locales/sk.yml +10 -3
  76. data/config/locales/sl.yml +5 -1
  77. data/config/locales/sv.yml +5 -1
  78. data/config/locales/tr.yml +82 -0
  79. data/config/locales/uk.yml +77 -0
  80. data/config/locales/vi.yml +5 -1
  81. data/config/locales/zh-CN.yml +5 -1
  82. data/config/locales/zh-TW.yml +5 -1
  83. data/config/routes.rb +3 -3
  84. data/lib/generators/refinery/cms/cms_generator.rb +29 -0
  85. data/lib/generators/refinery/cms/templates/.gitignore +1 -0
  86. data/lib/generators/refinery/cms/templates/app/views/sitemap/index.xml.builder +13 -13
  87. data/lib/generators/refinery/core/templates/config/initializers/refinery/core.rb.erb +8 -12
  88. data/lib/generators/refinery/dummy/templates/rails/database.yml +3 -3
  89. data/lib/generators/refinery/engine/engine_generator.rb +8 -12
  90. data/lib/generators/refinery/engine/templates/Gemfile +5 -39
  91. data/lib/generators/refinery/engine/templates/app/controllers/refinery/namespace/admin/plural_name_controller.rb.erb +4 -4
  92. data/lib/generators/refinery/engine/templates/app/models/refinery/namespace/singular_name.rb.erb +2 -3
  93. data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_actions.html.erb +1 -1
  94. data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_form.html.erb +31 -33
  95. data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_records.html.erb +1 -3
  96. data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_singular_name.html.erb +2 -2
  97. data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/index.html.erb +1 -1
  98. data/lib/generators/refinery/engine/templates/config/locales/cs.yml +28 -0
  99. data/lib/generators/refinery/engine/templates/config/locales/it.yml +28 -0
  100. data/lib/generators/refinery/engine/templates/config/locales/nl.yml +6 -6
  101. data/lib/generators/refinery/engine/templates/config/locales/tr.yml +28 -0
  102. data/lib/generators/refinery/engine/templates/config/routes.rb.erb +2 -2
  103. data/lib/generators/refinery/engine/templates/db/seeds.rb.erb +1 -1
  104. data/lib/generators/refinery/engine/templates/lib/generators/refinery/extension_plural_name_generator.rb.erb +1 -1
  105. data/lib/generators/refinery/engine/templates/lib/refinery/plural_name/engine.rb.erb +1 -1
  106. data/lib/generators/refinery/engine/templates/spec/{requests → features}/refinery/namespace/admin/plural_name_spec.rb.erb +1 -1
  107. data/lib/generators/refinery/engine/templates/spec/spec_helper.rb +25 -49
  108. data/lib/generators/refinery/form/form_generator.rb +1 -13
  109. data/lib/generators/refinery/form/templates/app/models/refinery/namespace/singular_name.rb.erb +0 -4
  110. data/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/plural_name/_records.html.erb +2 -2
  111. data/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/plural_name/spam.html.erb +7 -6
  112. data/lib/generators/refinery/form/templates/config/locales/nl.yml +29 -29
  113. data/lib/generators/refinery/form/templates/config/locales/tr.yml +78 -0
  114. data/lib/generators/refinery/form/templates/config/routes.rb.erb +1 -1
  115. data/lib/generators/refinery/form/templates/db/migrate/1_create_plural_name.rb.erb +2 -6
  116. data/lib/generators/refinery/form/templates/db/seeds.rb.erb +1 -1
  117. data/lib/generators/refinery/form/templates/lib/refinery/plural_name/engine.rb.erb +1 -1
  118. data/lib/generators/refinery/form/templates/refinerycms-plural_name.gemspec +2 -5
  119. data/lib/refinery.rb +191 -0
  120. data/lib/refinery/admin/base_controller.rb +27 -16
  121. data/lib/refinery/application_controller.rb +15 -47
  122. data/lib/refinery/cli.rb +48 -27
  123. data/lib/refinery/core.rb +7 -183
  124. data/lib/refinery/core/configuration.rb +17 -9
  125. data/lib/refinery/core/engine.rb +11 -47
  126. data/lib/refinery/crud.rb +81 -66
  127. data/lib/refinery/engine.rb +52 -55
  128. data/lib/refinery/ext/action_view/helpers/form_builder.rb +2 -0
  129. data/lib/refinery/extension_generation.rb +208 -110
  130. data/lib/refinery/menu.rb +16 -7
  131. data/lib/refinery/menu_item.rb +56 -54
  132. data/lib/refinery/plugin.rb +11 -3
  133. data/lib/refinery/plugins.rb +14 -1
  134. data/lib/refinery/version.rb +3 -3
  135. data/refinerycms-core.gemspec +11 -10
  136. data/spec/controllers/refinery/admin/dummy_controller_spec.rb +57 -0
  137. data/spec/controllers/refinery/admin/refinery_core_controller_spec.rb +3 -4
  138. data/spec/controllers/refinery/sitemap_controller_spec.rb +1 -14
  139. data/spec/{requests → features}/refinery/admin/custom_assets_spec.rb +1 -1
  140. data/spec/{requests → features}/refinery/admin/dialogs_spec.rb +1 -1
  141. data/spec/features/refinery/admin/xhr_paging_spec.rb +55 -0
  142. data/spec/features/refinery/application_layout_spec.rb +19 -0
  143. data/spec/features/refinery/core_spec.rb +14 -0
  144. data/spec/{requests → features}/refinery/site_bar_spec.rb +1 -1
  145. data/spec/helpers/refinery/meta_helper_spec.rb +25 -0
  146. data/spec/lib/generators/refinery/cms/cms_generator_spec.rb +61 -0
  147. data/spec/lib/generators/refinery/engine/engine_generator_multiple_resources_spec.rb +28 -1
  148. data/spec/lib/generators/refinery/engine/engine_generator_sanity_check_spec.rb +7 -7
  149. data/spec/lib/generators/refinery/engine/engine_generator_spec.rb +69 -8
  150. data/spec/lib/generators/refinery/engine/engine_generator_with_i18n_spec.rb +0 -2
  151. data/spec/lib/generators/refinery/form/form_generator_spec.rb +9 -1
  152. data/spec/lib/refinery/application_controller_spec.rb +48 -63
  153. data/spec/lib/refinery/cli_spec.rb +136 -0
  154. data/spec/lib/refinery/core/configuration_spec.rb +17 -0
  155. data/spec/lib/refinery/core_spec.rb +19 -13
  156. data/spec/lib/refinery/crud_spec.rb +0 -4
  157. data/spec/lib/refinery/menu_spec.rb +16 -26
  158. data/spec/support/refinery.rb +6 -1
  159. data/{app → vendor}/assets/javascripts/jquery/GPL-LICENSE.txt +0 -0
  160. data/{app → vendor}/assets/javascripts/jquery/MIT-LICENSE.txt +0 -0
  161. data/vendor/assets/javascripts/jquery/jquery.browser.js +49 -0
  162. data/{app → vendor}/assets/javascripts/jquery/jquery.html5-placeholder-shim.js +0 -0
  163. data/{app → vendor}/assets/javascripts/jquery/jquery.jcarousel.js +0 -0
  164. data/{app → vendor}/assets/javascripts/jquery/jquery.textTruncate.js +0 -0
  165. data/{app → vendor}/assets/javascripts/jquery/jquery.timers.js +0 -0
  166. data/{app → vendor}/assets/javascripts/modernizr-min.js +0 -0
  167. metadata +231 -78
  168. data/app/assets/images/refinery/resolve_digital_footer_logo.png +0 -0
  169. data/app/assets/javascripts/dd_belatedpng.js +0 -13
  170. data/app/assets/javascripts/jquery/jquery.corner.js +0 -345
  171. data/app/assets/stylesheets/application.css.scss +0 -55
  172. data/app/assets/stylesheets/home.css.scss +0 -3
  173. data/app/views/refinery/_ie6check.html.erb +0 -63
  174. data/app/views/refinery/_menu.html.erb +0 -20
  175. data/app/views/refinery/_menu_branch.html.erb +0 -19
  176. data/lib/generators/refinery/engine/templates/Guardfile +0 -27
  177. data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_locale_picker.html.erb +0 -11
  178. data/lib/refinery/catch_all_routes.rb +0 -3
  179. data/lib/tasks/yard.rake +0 -30
  180. data/spec/requests/refinery/admin/controller_restriction_spec.rb +0 -27
  181. data/spec/requests/refinery/search_spec.rb +0 -71
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bd37a1ff4da0edba4be374e2f7a6335cedac5b7c
4
- data.tar.gz: 1e4385da5be0262833618ef3afe30d7c162e6e1d
3
+ metadata.gz: 38344324c8aabdca646f3ffb65e2b68aef94581e
4
+ data.tar.gz: 93f69f5eced0eb86702cd809e7e2497f03d68d07
5
5
  SHA512:
6
- metadata.gz: 60551883a9eb104fd685f613c910a0c06b55ce409114ed925b407ccaadfe379e3e26107d0345119e9cf6df742178fb4ec75278cc5eb3d7cca49f688167074032
7
- data.tar.gz: f67a2c714f8b58a46bd473eb079289814cc7a8aa99840cadf3677f95d69693baf3dd11515bc5ad1f08c773944679641f0c3de38b455084558a768781fd15e1e3
6
+ metadata.gz: f19ca709e8d5fdb4e6f7d6c1d6d463d2358691ff52493a46095b46e6d06d1139444fd93d1995cb519e1fcff07d03555d4b3ee8c9b0f1185c0ae525b2dd63bb97
7
+ data.tar.gz: 5d30e2fffece107a55468342a0285206ebeac02cb21819dc6e77ebd4b0088b522095ac1371372e1f9eda3ddb17f56ae8f2e587499affee97b6b90813020b6c10
@@ -35,7 +35,7 @@ $.fn.paginateTo = function(stateUrl) {
35
35
  $(this).attr('href', $(this).attr('href').replace(/\?\_\=[^&]+&/, '?'));
36
36
  })
37
37
  },
38
- failure: function(data) {
38
+ error: function(data) {
39
39
  window.location = popstate_location;
40
40
  }
41
41
  });
@@ -77,7 +77,6 @@ init_modal_dialogs = function(){
77
77
  + 'app_dialog=true&dialog=true';
78
78
 
79
79
  iframe = $("<iframe id='dialog_iframe' frameborder='0' marginheight='0' marginwidth='0' border='0'></iframe>");
80
- if(!$.browser.msie) { iframe.corner('8px'); }
81
80
  iframe.dialog({
82
81
  title: $anchor.data('dialog-title')
83
82
  , modal: true
@@ -99,7 +98,7 @@ refinery_dialog_success = function(e) {
99
98
  close_dialog();
100
99
 
101
100
  $.ajax({
102
- url: window.location.pathname,
101
+ url: window.location.pathname + window.location.search,
103
102
  cache: false,
104
103
  success: function(data) {
105
104
  $('.pagination_container').html(data);
@@ -131,20 +130,12 @@ trigger_reordering = function(e, enable) {
131
130
  };
132
131
 
133
132
  trigger_reordering_content_section = function(e, enable) {
134
- $menu = $("#page-tabs");
133
+ $menu = $("#page-tabs").sortable();
135
134
  e.preventDefault();
136
135
  $('#reorder_page_part, #reorder_page_part_done').toggle();
137
- $('#site_bar, #menu, .field:not(:has(#page-tabs)), .page_part, #more_options_field, .form-actions')
136
+ $('#site_bar, #menu, .field:not(:has(#page-tabs)), .page_part:visible, #more_options_field, .form-actions')
138
137
  .fadeTo(500, enable ? 0.35 : 1);
139
138
 
140
- if(enable) {
141
- $menu.addClass('reordering').find('.tab a').click(function(ev){
142
- ev.preventDefault();
143
- });
144
- } else {
145
- $menu.removeClass('reordering').find('.tab a').unbind('click');
146
- }
147
-
148
139
  $menu.sortable(enable ? 'enable' : 'disable').sortable({
149
140
  items: 'li',
150
141
  stop: function(event, ui) {
@@ -214,9 +205,6 @@ init_tooltips = function(args){
214
205
  $('.tooltip').remove();
215
206
  tooltip = $("<div class='tooltip'><div><span></span></div></div>").appendTo('#tooltip_container');
216
207
  tooltip.find("span").html($(this).attr('tooltip'));
217
- if(!$.browser.msie) {
218
- tooltip.corner('6px').find('span').corner('6px');
219
- }
220
208
 
221
209
  tooltip_nib_extension = $.browser.msie ? '.gif' : '.png';
222
210
  nib = $("<img src='<%= asset_path 'refinery/tooltip-nib' %>" + tooltip_nib_extension + "' class='tooltip-nib'/>").appendTo('#tooltip_container');
@@ -299,32 +287,40 @@ init_tooltips = function(args){
299
287
  };
300
288
 
301
289
  var link_tester = {
302
- initialised: false
303
- , init: function(test_url, test_email) {
304
-
305
- if (!this.initialised) {
306
- this.test_url = test_url;
307
- this.test_email = test_email;
308
- this.initialised = true;
309
- }
310
- },
290
+ email_re : new RegExp(/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i),
291
+ url_re : new RegExp(/^(https?|ftp):\/\/(-\.)?([^\s/?\.#-]+\.?)+(\/[^\s]*)?$/i),
292
+ page_re : new RegExp('^(https?:\/\/' + document.location.host + '|\/[a-z0-9]+)'),
311
293
 
312
294
  email: function(value, callback) {
313
295
  if (value != "") {
314
- $.getJSON(link_tester.test_email, {email: value}, function(data){
315
- callback(data.result == 'success');
316
- });
296
+ callback(link_tester.email_re.test(value));
317
297
  }
318
298
  },
319
299
 
320
300
  url: function(value, callback) {
321
301
  if (value != "") {
322
- $.getJSON(link_tester.test_url, {'url': value}, function(data){
323
- callback(data.result == 'success');
324
- });
302
+ if (link_tester.page_re.test(value)) {
303
+ link_tester.page(value, callback);
304
+ } else {
305
+ callback(link_tester.url_re.test(value));
306
+ }
325
307
  }
326
308
  },
327
309
 
310
+ page: function(value, callback) {
311
+ var valid = false;
312
+ $.ajax({
313
+ url: value,
314
+ timeout: 5000,
315
+ success: function() {
316
+ valid = true;
317
+ },
318
+ complete: function () {
319
+ callback(valid);
320
+ }
321
+ });
322
+ },
323
+
328
324
  validate_textbox: function(validation_method, textbox_id, callback) {
329
325
  var icon = '';
330
326
  var loader_img = $("<img id='" + textbox_id.replace('#','') + "_test_loader' src='<%= asset_path 'refinery/ajax-loader.gif' %>' alt='Testing...' style='display: none;'/>");
@@ -332,14 +328,13 @@ var link_tester = {
332
328
 
333
329
  loader_img.insertAfter($(textbox_id));
334
330
  result_span.insertAfter(loader_img);
335
-
336
331
  $(textbox_id).bind('paste blur',function(){
337
332
  $(textbox_id).stop(true); // Clear the current queue; if we weren't checking yet, cancel it.
338
333
  $(textbox_id + '_test_loader').hide();
339
334
  $(textbox_id + '_test_result').hide();
340
335
  $(textbox_id + '_test_result').removeClass('success_icon').removeClass('failure_icon');
341
336
 
342
- if (this.value != "" && this.value[0] != "/") {
337
+ if (this.value != "") {
343
338
  // Wait 300ms before checking.
344
339
  $(textbox_id).delay(300).queue(function () {
345
340
  $(textbox_id + '_test_loader').show();
@@ -526,9 +521,7 @@ var page_options = {
526
521
 
527
522
  if (!this.initialised) {
528
523
  // set the page tabs up, but ensure that all tabs are shown so that when wymeditor loads it has a proper height.
529
- page_options.tabs = $('#page-tabs');
530
- page_options.tabs.tabs({tabTemplate: '<li><a href="#{href}">#{label}</a></li>'});
531
- page_options.tabs.find(' > ul li a').corner('top 5px');
524
+ page_options.tabs = $('#page-tabs').tabs();
532
525
 
533
526
  part_shown = $('#page-tabs .page_part.field').not('.ui-tabs-hide');
534
527
  $('#page-tabs .page_part.field').removeClass('ui-tabs-hide');
@@ -541,7 +534,6 @@ var page_options = {
541
534
  $(document).ready($.proxy(function(){
542
535
  // hide the tabs that are supposed to be hidden.
543
536
  $('#page-tabs .page_part.field').not(this).addClass('ui-tabs-hide');
544
- $('#page-tabs > ul li a').corner('top 5px');
545
537
  }, part_shown));
546
538
 
547
539
  if(this.enable_parts){
@@ -585,7 +577,7 @@ var page_options = {
585
577
  if(part_title.length > 0){
586
578
  var tab_title = part_title.toLowerCase().replace(" ", "_");
587
579
 
588
- if ($('#part_' + tab_title).size() === 0) {
580
+ if ($('#page_part_' + tab_title).size() === 0) {
589
581
  $.get(page_options.new_part_url, {
590
582
  title: part_title
591
583
  , part_index: $('#new_page_part_index').val()
@@ -594,24 +586,21 @@ var page_options = {
594
586
  $('#submit_continue_button').remove();
595
587
  // Add a new tab for the new content section.
596
588
  $('#page_part_editors').append(data);
597
- page_options.tabs.tabs('add', '#page_part_new_' + $('#new_page_part_index').val(), part_title);
598
- page_options.tabs.tabs('select', $('#new_page_part_index').val());
599
589
 
600
- // hook into wymeditor to instruct it to select this new tab again once it has loaded.
601
- WYMeditor.onload_functions.push(function() {
602
- page_options.tabs.tabs('select', $('#new_page_part_index').val());
603
- });
590
+ page_options.tabs.find("ul").append("<li><a href='#page_part_new_"+$('#new_page_part_index').val()+"'>"+part_title+"</a></li>");
591
+ page_options.tabs.tabs("refresh");
592
+
593
+ // this is here because of https://github.com/refinery/refinerycms/issues/2060
594
+ $("#page-tabs #page_parts li").last().attr("data-index", $('#new_page_part_index').val());
595
+
596
+ page_options.tabs.tabs("option", "active", -1);
604
597
 
605
- // turn the new textarea into a wymeditor.
606
- $('#page_part_new_' + $('#new_page_part_index').val()).appendTo('#page_part_editors')
607
598
  WYMeditor.init();
608
599
 
609
600
  // Wipe the title and increment the index counter by one.
610
601
  $('#new_page_part_index').val(parseInt($('#new_page_part_index').val(), 10) + 1);
611
602
  $('#new_page_part_title').val('');
612
603
 
613
- page_options.tabs.find('> ul li a').corner('top 5px');
614
-
615
604
  $('#new_page_part_dialog').dialog('close');
616
605
  }, 'html'
617
606
  );
@@ -632,15 +621,25 @@ var page_options = {
632
621
  $('#delete_page_part').click(function(e){
633
622
  e.preventDefault();
634
623
 
635
- if(confirm("This will remove the content section '" + $('#page_parts .ui-tabs-selected a').text() + "' immediately even if you don't save this page, are you sure?")) {
636
- var tabId = page_options.tabs.tabs('option', 'selected');
637
- $.ajax({
638
- url: page_options.del_part_url + '/' + $('#page_parts_attributes_' + tabId + '_id').val(),
639
- type: 'DELETE'
640
- });
641
- page_options.tabs.tabs('remove', tabId);
642
- $('#page_parts_attributes_' + tabId + '_id').remove();
624
+ var tabName = page_options.tabs.find(".ui-tabs-active a").text();
625
+
626
+ if(confirm("This will remove the content section '" + tabName + "' immediately even if you don't save this page, are you sure?")) {
627
+ var tabId = page_options.tabs.find('.ui-tabs-active a').attr('id').match(/\d+/)[0] - 1;
628
+
629
+ if($('#page_parts_attributes_' + tabId + '_id').length > 0) {
630
+ $.ajax({
631
+ url: page_options.del_part_url + '/' + $('#page_parts_attributes_' + tabId + '_id').val(),
632
+ type: 'DELETE'
633
+ });
634
+ }
635
+
636
+ page_options.tabs.find(".ui-tabs-active").remove();
637
+ page_options.tabs.find("#page_part_" + tabName.toLowerCase()).remove();
638
+ page_options.tabs.find("#page_part_new_" + tabId).remove();
639
+ $("[id^=page_parts_attributes_" + tabId + "_]").remove();
643
640
  $('#submit_continue_button').remove();
641
+
642
+ page_options.tabs.tabs('refresh');
644
643
  }
645
644
 
646
645
  });
@@ -655,72 +654,85 @@ var page_options = {
655
654
 
656
655
  };
657
656
 
658
- var image_dialog = {
659
- initialised: false
660
- , callback: null
661
-
662
- , init: function(callback){
663
-
664
- if (!this.initialised) {
665
- this.callback = callback;
666
- this.init_tabs();
667
- this.init_select();
668
- this.init_actions();
669
- this.initialised = true;
670
- }
671
- return this;
672
- }
673
-
674
- , init_tabs: function(){
657
+ // TODO: Need to rewrite WYM to accept multiple images. As it stands, only
658
+ // the callback is useful when inserting multiple -- helpful for
659
+ // the page-images and portfolio engines.
660
+
661
+ // ImageDialog
662
+ //
663
+ // The dialog that opens when choosing to 'Add image' in WYM.
664
+ //
665
+ // Options:
666
+ // callback (null):
667
+ // a function to execute upon chosing 'submit'. Passed either an
668
+ // an array or a single image, depending on whether `multiple` is
669
+ // true.
670
+ // multiple (false):
671
+ // if true, enables selection of multiple images. Does not allow
672
+ // insertion into WYM without manual callback manipulation.
673
+ function ImageDialog(options) {
674
+ self = this;
675
+ this.defaults = {callback: null, multiple: false};
676
+ this.settings = $.extend({}, this.defaults, options);
677
+
678
+ this.create = function() {
679
+
680
+ this.callback = this.settings.callback;
681
+ this.init_tabs();
682
+ this.init_select();
683
+ this.init_actions();
684
+ };
685
+
686
+ this.init_tabs = function() {
675
687
  var radios = $('#dialog_menu_left input:radio');
676
688
  var selected = radios.parent().filter(".selected_radio").find('input:radio').first() || radios.first();
677
-
678
- radios.click(function(){
679
- link_dialog.switch_area($(this));
689
+ radios.click(function() {
690
+ self.switch_area($(this));
680
691
  });
681
692
 
682
693
  selected.attr('checked', 'true');
683
- link_dialog.switch_area(selected);
684
- }
694
+ self.switch_area(selected);
695
+ };
685
696
 
686
- , switch_area: function(radio){
697
+ this.switch_area = function(radio) {
687
698
  $('#dialog_menu_left .selected_radio').removeClass('selected_radio');
688
- $(radio).parent().addClass('selected_radio');
699
+ radio.parent().addClass('selected_radio');
689
700
  $('#dialog_main .dialog_area').hide();
690
- $('#' + radio.value + '_area').show();
691
- }
701
+ $('#' + radio.val() + '_area').show();
702
+ };
692
703
 
693
- , init_select: function(){
694
- $('#existing_image_area_content ul li img').click(function(){
695
- image_dialog.set_image(this);
704
+ this.init_select = function() {
705
+ $('#existing_image_area_content ul li img').click(function() {
706
+ self.toggle_image($(this));
696
707
  });
697
- //Select any currently selected, just uploaded...
708
+
709
+ // Select any currently selected, just uploaded...
698
710
  if ((selected_img = $('#existing_image_area_content ul li.selected img')).length > 0) {
699
- image_dialog.set_image(selected_img.first());
711
+ self.toggle_image(selected_img.first());
700
712
  }
701
- }
713
+ };
702
714
 
703
- , set_image: function(img){
704
- if ($(img).length > 0) {
705
- $('#existing_image_area_content ul li.selected').removeClass('selected');
715
+ this.toggle_image = function(img) {
716
+ if (img.length > 0) {
717
+ if (!self.settings.multiple) $('#existing_image_area_content ul li.selected').removeClass('selected');
706
718
 
707
- $(img).parent().addClass('selected');
708
- var imageId = $(img).attr('data-id');
719
+ img.parent().toggleClass('selected');
720
+ var imageId = img.attr('data-id');
709
721
  var geometry = $('#existing_image_size_area li.selected a').attr('data-geometry');
710
722
  var size = $('#existing_image_size_area li.selected a').attr('data-size');
711
723
  var resize = $("#wants_to_resize_image").is(':checked');
712
724
 
713
- image_url = resize ? $(img).attr('data-' + size) : $(img).attr('data-original');
725
+ image_url = resize ? img.attr('data-' + size) : img.attr('data-original');
714
726
 
715
727
  if (parent) {
716
728
  if ((wym_src = parent.document.getElementById('wym_src')) != null) {
717
729
  wym_src.value = image_url;
718
730
  }
719
731
  if ((wym_title = parent.document.getElementById('wym_title')) != null) {
720
- wym_title.value = $(img).attr('title');
732
+ wym_title.value = img.attr('title');
721
733
  }
722
734
  if ((wym_alt = parent.document.getElementById('wym_alt')) != null) {
723
- wym_alt.value = $(img).attr('alt');
735
+ wym_alt.value = img.attr('alt');
724
736
  }
725
737
  if ((wym_size = parent.document.getElementById('wym_size')) != null
726
738
  && typeof(geometry) != 'undefined') {
@@ -728,35 +740,37 @@ var image_dialog = {
728
740
  }
729
741
  }
730
742
  }
731
- }
743
+ };
732
744
 
733
- , submit_image_choice: function(e) {
745
+ this.submit_image_choice = function(e) {
734
746
  e.preventDefault();
735
- if((img_selected = $('#existing_image_area_content ul li.selected img').get(0)) && $.isFunction(this.callback))
747
+ selected_images = $('#existing_image_area_content ul li.selected img');
748
+ selected_images = self.settings.multiple ? selected_images.get() : selected_images.get(0);
749
+
750
+ if(selected_images && $.isFunction(self.callback))
736
751
  {
737
- this.callback(img_selected);
752
+ self.callback(selected_images);
738
753
  }
739
754
 
740
755
  close_dialog(e);
741
- }
756
+ };
742
757
 
743
- , init_actions: function(){
744
- var _this = this;
758
+ this.init_actions = function() {
745
759
  // get submit buttons not inside a wymeditor iframe
746
760
  $('#existing_image_area .form-actions-dialog #submit_button')
747
761
  .not('.wym_iframe_body #existing_image_area .form-actions-dialog #submit_button')
748
- .click($.proxy(_this.submit_image_choice, _this));
762
+ .click($.proxy(self.submit_image_choice, self));
749
763
 
750
764
  // get cancel buttons not inside a wymeditor iframe
751
765
  $('.form-actions-dialog #cancel_button')
752
766
  .not('.wym_iframe_body .form-actions-dialog #cancel_button')
753
- .click($.proxy(close_dialog, _this));
767
+ .click($.proxy(close_dialog, self));
754
768
 
755
769
  $('#existing_image_size_area ul li a').click(function(e) {
756
770
  $('#existing_image_size_area ul li').removeClass('selected');
757
771
  $(this).parent().addClass('selected');
758
772
  $('#existing_image_size_area #wants_to_resize_image').attr('checked', 'checked');
759
- image_dialog.set_image($('#existing_image_area_content ul li.selected img'));
773
+ self.toggle_image($('#existing_image_area_content ul li.selected img'));
760
774
  e.preventDefault();
761
775
  });
762
776
 
@@ -765,7 +779,7 @@ var image_dialog = {
765
779
  $('#existing_image_size_area ul li:first a').click();
766
780
  } else {
767
781
  $('#existing_image_size_area ul li').removeClass('selected');
768
- image_dialog.set_image($('#existing_image_area_content ul li.selected img'));
782
+ self.toggle_image($('#existing_image_area_content ul li.selected img'));
769
783
  }
770
784
  });
771
785
 
@@ -775,130 +789,8 @@ var image_dialog = {
775
789
  $(this.document.getElementById('wym_dialog_submit')).click();
776
790
  }, parent));
777
791
  image_area.find('.form-actions a.close_dialog').click(close_dialog);
778
- }
779
- };
780
-
781
- var list_reorder = {
782
- initialised: false
783
- , init: function() {
784
-
785
- if (!this.initialised) {
786
- $('#reorder_action').click(list_reorder.enable_reordering);
787
- $('#reorder_action_done').click(list_reorder.disable_reordering);
788
- if(list_reorder.tree === false) {
789
- list_reorder.sortable_list.find('li').addClass('no-nest');
790
- }
791
- list_reorder.sortable_list.nestedSortable({
792
- listType: 'ul',
793
- disableNesting: 'no-nest',
794
- forcePlaceholderSize: true,
795
- handle: list_reorder.tree ? 'div' : null,
796
- items: 'li',
797
- opacity: .6,
798
- placeholder: 'placeholder',
799
- tabSize: 25,
800
- tolerance: 'pointer',
801
- toleranceElement: list_reorder.tree ? '> div' : null,
802
- disabled: true,
803
- start: function () {
804
- },
805
- change: function () {
806
- if (list_reorder.tree) {
807
- list_reorder.reset_branch_classes(this);
808
- }
809
- },
810
- stop: function () {
811
- if (list_reorder.tree) {
812
- list_reorder.reset_branch_classes(this);
813
- list_reorder.reset_icon_classes(this);
814
- } else {
815
- list_reorder.reset_on_off_classes(this);
816
- }
817
- }
818
- });
819
- if (list_reorder.tree) {
820
- list_reorder.reset_branch_classes(list_reorder.sortable_list);
821
- } else {
822
- list_reorder.reset_on_off_classes(list_reorder.sortable_list);
823
- }
824
- this.initialised = true;
825
- }
826
- }
827
- , reset_on_off_classes: function(ul) {
828
- $("> li", ul).each(function(i, li) {
829
- $(li).removeClass('on off on-hover').addClass(i % 2 === 0 ? 'on' : 'off');
830
- });
831
- }
832
-
833
- , reset_branch_classes: function (ul) {
834
- $("li.ui-sortable-helper", this).removeClass("record").removeClass("branch_start").removeClass("branch_end");
835
- $("li", ul).removeClass("branch_start").removeClass("branch_end");
836
-
837
- $("> li:first", ul).addClass("branch_start");
838
- $("> li:last", ul).addClass("branch_end");
839
-
840
- var nested_ul = $("ul", ul);
841
- $("> li:last", nested_ul).addClass("branch_end");
842
- }
843
-
844
- , reset_icon_classes: function(ul) {
845
- $('li', ul).each(function() {
846
- var $li = $(this);
847
- var $icon = $li.find('.icon:first');
848
-
849
- if ($li.find('ul li').size() > 0) {
850
- $icon.addClass('toggle expanded');
851
- }
852
- else if ($icon.hasClass('expanded')){
853
- $icon.removeClass('toggle expanded');
854
- }
855
- });
856
- }
857
-
858
- ,enable_reordering: function(e) {
859
- if(e) { e.preventDefault(); }
860
-
861
- $('#sortable_list, .sortable_list').addClass("reordering");
862
- $('#sortable_list .actions, .sortable_list .actions, #site_bar, header > *:not(script)').fadeTo(500, 0.3);
863
- $('#actions *:not("#reorder_action_done, #reorder_action")').not($('#reorder_action_done').parents('li, ul, div')).fadeTo(500, 0.55);
864
-
865
- list_reorder.sortable_list.nestedSortable("enable");
866
-
867
- $('#reorder_action').hide();
868
- $('#reorder_action_done').show();
869
- }
870
-
871
- , disable_reordering: function(e) {
872
- if(e) { e.preventDefault(); }
873
-
874
- if($('#reorder_action_done').hasClass('loading')) { return false; }
875
- $('#reorder_action_done').addClass('loading');
876
-
877
- list_reorder.sortable_list.nestedSortable("disable");
878
-
879
- $('#sortable_list, .sortable_list').removeClass("reordering");
880
-
881
- if (list_reorder.update_url !== null) {
882
- var serialized = list_reorder.sortable_list.serializelist();
883
-
884
- $.post(list_reorder.update_url, serialized, function(data) {
885
- list_reorder.restore_controls(e);
886
- });
887
- } else {
888
- list_reorder.restore_controls(e);
889
- }
890
- }
891
-
892
- , restore_controls: function(e) {
893
- $(list_reorder.sortable_list).removeClass('reordering');
894
-
895
- $('#sortable_list .actions, .sortable_list .actions, #site_bar, header > *:not(script)').fadeTo(250, 1);
896
- $('#actions *:not("#reorder_action_done, #reorder_action")').not($('#reorder_action_done').parents('li, ul, div')).fadeTo(250, 1, function() {
897
- $('#reorder_action_done').hide().removeClass('loading');
898
- $('#reorder_action').show();
899
- });
900
- }
901
- };
792
+ };
793
+ }
902
794
 
903
795
  var image_picker = {
904
796
  initialised: false
@@ -944,10 +836,10 @@ var image_picker = {
944
836
  }
945
837
 
946
838
  , toggle_image: function(e) {
947
- $(this.container).find(this.options.image_toggler).html(
948
- ($(this.container).find(options.image_toggler).html() == 'Show' ? 'Hide' : 'Show')
839
+ $(this.container).find(this.picker.options.image_toggler).html(
840
+ ($(this.container).find(this.picker.options.image_toggler).html() == 'Show' ? 'Hide' : 'Show')
949
841
  );
950
- $(this.container).find(this.options.image_container).toggle();
842
+ $(this.container).find(this.picker.options.image_container).toggle();
951
843
  e.preventDefault();
952
844
  }
953
845