gluttonberg-core 2.6.4 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (613) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +29 -3
  3. data/Rakefile +32 -15
  4. data/app/assets/images/chosen-sprite-2x.png +0 -0
  5. data/app/assets/images/chosen-sprite.png +0 -0
  6. data/app/assets/images/{library/gb_sort_by_asc.png → gb_sort_by_asc.png} +0 -0
  7. data/app/assets/images/{library/gb_sort_by_desc.png → gb_sort_by_desc.png} +0 -0
  8. data/app/assets/javascripts/chosen-jquery-min.js +2 -0
  9. data/app/assets/javascripts/gb_360player.js +676 -0
  10. data/app/assets/javascripts/gb_application.js +708 -463
  11. data/app/assets/javascripts/gb_html5.js +9 -0
  12. data/app/assets/javascripts/gb_jeditable.js +356 -356
  13. data/app/assets/javascripts/gb_jquery-nestable.js +490 -0
  14. data/app/assets/javascripts/gb_utils.js +1808 -0
  15. data/app/assets/javascripts/gluttonberg.js +26 -0
  16. data/app/assets/javascripts/jcrop/css/gb_jquery-Jcrop.css +163 -31
  17. data/app/assets/javascripts/jcrop/js/jquery-Jcrop-min.js +19 -243
  18. data/app/assets/javascripts/jquery-1-10-1.js +6 -0
  19. data/app/assets/javascripts/jquery-ui-1-10-3.custom-min.js +6 -0
  20. data/app/assets/javascripts/jquery-validate.js +652 -718
  21. data/app/assets/javascripts/rails.js +372 -106
  22. data/app/assets/javascripts/redactormin.js +7348 -0
  23. data/app/assets/stylesheets/chosen.css +430 -0
  24. data/app/assets/stylesheets/gb_360player.css +2 -10
  25. data/app/assets/stylesheets/gb_admin-override.sass +466 -22
  26. data/app/assets/stylesheets/gb_bootstrap.css +7 -1
  27. data/app/assets/stylesheets/gluttonberg.css +17 -0
  28. data/app/assets/stylesheets/redactor.css +864 -0
  29. data/app/assets/stylesheets/user-styles.sass +0 -3
  30. data/app/controllers/gluttonberg/admin/asset_library/assets_ajax_controller.rb +65 -0
  31. data/app/controllers/gluttonberg/admin/asset_library/assets_bulk_controller.rb +47 -0
  32. data/app/controllers/gluttonberg/admin/asset_library/assets_controller.rb +43 -266
  33. data/app/controllers/gluttonberg/admin/asset_library/base_controller.rb +29 -0
  34. data/app/controllers/gluttonberg/admin/asset_library/collections_controller.rb +11 -37
  35. data/app/controllers/gluttonberg/admin/base_controller.rb +117 -178
  36. data/app/controllers/gluttonberg/admin/content/auto_save_controller.rb +63 -0
  37. data/app/controllers/gluttonberg/admin/content/flag_controller.rb +6 -6
  38. data/app/controllers/gluttonberg/admin/content/galleries_controller.rb +29 -37
  39. data/app/controllers/gluttonberg/admin/content/page_localizations_controller.rb +82 -49
  40. data/app/controllers/gluttonberg/admin/content/pages_controller.rb +59 -32
  41. data/app/controllers/gluttonberg/admin/main_controller.rb +77 -7
  42. data/app/controllers/gluttonberg/admin/membership/base_controller.rb +2 -1
  43. data/app/controllers/gluttonberg/admin/membership/groups_controller.rb +27 -33
  44. data/app/controllers/gluttonberg/admin/membership/main_controller.rb +3 -2
  45. data/app/controllers/gluttonberg/admin/membership/members_controller.rb +37 -42
  46. data/app/controllers/gluttonberg/admin/password_resets_controller.rb +16 -28
  47. data/app/controllers/gluttonberg/admin/settings/configurations_controller.rb +101 -0
  48. data/app/controllers/gluttonberg/admin/settings/embeds_controller.rb +79 -0
  49. data/app/controllers/gluttonberg/admin/settings/locales_controller.rb +22 -28
  50. data/app/controllers/gluttonberg/admin/settings/stylesheets_controller.rb +31 -36
  51. data/app/controllers/gluttonberg/admin/settings/users_controller.rb +45 -40
  52. data/app/controllers/gluttonberg/base_controller.rb +95 -0
  53. data/app/controllers/gluttonberg/public/base_controller.rb +104 -157
  54. data/app/controllers/gluttonberg/public/flag_controller.rb +2 -7
  55. data/app/controllers/gluttonberg/public/gallery_controller.rb +1 -0
  56. data/app/controllers/gluttonberg/public/member_password_resets_controller.rb +5 -17
  57. data/app/controllers/gluttonberg/public/members_controller.rb +5 -15
  58. data/app/controllers/gluttonberg/public/pages_controller.rb +25 -14
  59. data/app/controllers/gluttonberg/public/public_assets_controller.rb +4 -2
  60. data/app/helpers/gluttonberg/admin.rb +86 -368
  61. data/app/helpers/gluttonberg/admin/assets.rb +84 -0
  62. data/app/helpers/gluttonberg/admin/form.rb +159 -0
  63. data/app/helpers/gluttonberg/admin/messages.rb +32 -0
  64. data/app/helpers/gluttonberg/admin/versioning.rb +196 -0
  65. data/app/helpers/gluttonberg/application_helper.rb +34 -7
  66. data/app/helpers/gluttonberg/asset_library.rb +29 -254
  67. data/app/helpers/gluttonberg/content_helpers.rb +17 -69
  68. data/app/helpers/gluttonberg/deprecated.rb +24 -0
  69. data/app/helpers/gluttonberg/public.rb +51 -244
  70. data/app/helpers/gluttonberg/public/assets.rb +31 -0
  71. data/app/helpers/gluttonberg/public/cms_stylesheets.rb +35 -0
  72. data/app/helpers/gluttonberg/public/html_truncate.rb +74 -0
  73. data/app/helpers/gluttonberg/public/meta_tags.rb +27 -0
  74. data/app/helpers/gluttonberg/public/nav_tree.rb +99 -0
  75. data/app/helpers/gluttonberg/public/page_info.rb +168 -0
  76. data/app/mailer/gluttonberg/base_notifier.rb +25 -0
  77. data/app/mailer/member_notifier.rb +8 -20
  78. data/app/mailer/notifier.rb +14 -39
  79. data/app/models/ability.rb +48 -34
  80. data/app/models/flag.rb +7 -7
  81. data/app/models/gluttonberg/asset.rb +115 -166
  82. data/app/models/gluttonberg/asset_bulk_import.rb +70 -0
  83. data/app/models/gluttonberg/asset_category.rb +75 -29
  84. data/app/models/gluttonberg/asset_collection.rb +65 -12
  85. data/app/models/gluttonberg/asset_mime_type.rb +5 -0
  86. data/app/models/gluttonberg/asset_thumbnail.rb +6 -1
  87. data/app/models/gluttonberg/asset_type.rb +49 -38
  88. data/app/models/gluttonberg/audio_asset_attribute.rb +7 -3
  89. data/app/models/gluttonberg/authorization.rb +10 -0
  90. data/app/models/gluttonberg/auto_save.rb +32 -0
  91. data/app/models/gluttonberg/collapsed_page.rb +13 -0
  92. data/app/models/gluttonberg/embed.rb +13 -0
  93. data/app/models/gluttonberg/feed.rb +14 -5
  94. data/app/models/gluttonberg/gallery.rb +35 -9
  95. data/app/models/gluttonberg/gallery_image.rb +9 -2
  96. data/app/models/gluttonberg/group.rb +18 -2
  97. data/app/models/gluttonberg/html_content.rb +5 -1
  98. data/app/models/gluttonberg/image_content.rb +5 -1
  99. data/app/models/gluttonberg/locale.rb +28 -9
  100. data/app/models/gluttonberg/member.rb +48 -197
  101. data/app/models/gluttonberg/page.rb +78 -288
  102. data/app/models/gluttonberg/page_localization.rb +63 -66
  103. data/app/models/gluttonberg/plain_text_content.rb +6 -0
  104. data/app/models/gluttonberg/repeater.rb +30 -0
  105. data/app/models/gluttonberg/search.rb +96 -72
  106. data/app/models/gluttonberg/select_content.rb +12 -0
  107. data/app/models/gluttonberg/setting.rb +79 -29
  108. data/app/models/gluttonberg/sitemap.rb +1 -0
  109. data/app/models/gluttonberg/stylesheet.rb +12 -6
  110. data/app/models/gluttonberg/textarea_content.rb +14 -0
  111. data/app/models/gluttonberg/version.rb +9 -0
  112. data/app/models/user.rb +137 -13
  113. data/app/observers/gluttonberg/locale_observer.rb +33 -22
  114. data/app/observers/gluttonberg/page_localization_observer.rb +22 -12
  115. data/app/observers/gluttonberg/page_observer.rb +50 -35
  116. data/app/views/{gluttonberg/public/exceptions → exceptions}/access_denied.html.haml +0 -0
  117. data/app/views/{gluttonberg/public/exceptions → exceptions}/not_found.html.haml +0 -0
  118. data/app/views/gluttonberg/admin/asset_library/assets/_browser_root.html.haml +17 -12
  119. data/app/views/gluttonberg/admin/asset_library/assets/_form.html.haml +5 -7
  120. data/app/views/gluttonberg/admin/asset_library/assets/browser.html.haml +5 -5
  121. data/app/views/gluttonberg/admin/asset_library/assets/show.html.haml +13 -7
  122. data/app/views/gluttonberg/admin/asset_library/assets/show.json.rabl +3 -0
  123. data/app/views/gluttonberg/admin/asset_library/{assets → assets_ajax}/browser_collection.json.haml +0 -0
  124. data/app/views/gluttonberg/admin/asset_library/{assets → assets_bulk}/add_assets_in_bulk.html.haml +6 -20
  125. data/app/views/gluttonberg/admin/asset_library/{assets → assets_bulk}/create_assets_in_bulk.html.haml +0 -0
  126. data/app/views/gluttonberg/admin/asset_library/collections/_form.html.haml +8 -5
  127. data/app/views/gluttonberg/admin/asset_library/shared/_asset_browser.html.haml +34 -0
  128. data/app/views/gluttonberg/admin/asset_library/shared/_asset_panels.html.haml +15 -11
  129. data/app/views/gluttonberg/admin/content/editors/_html_content.html.haml +2 -2
  130. data/app/views/gluttonberg/admin/content/editors/_select_content.html.haml +7 -0
  131. data/app/views/gluttonberg/admin/content/editors/_textarea_content.html.haml +6 -0
  132. data/app/views/gluttonberg/admin/content/flag/index.html.haml +48 -39
  133. data/app/views/gluttonberg/admin/content/galleries/_form.html.haml +46 -9
  134. data/app/views/gluttonberg/admin/content/galleries/_image_repeater.html.haml +30 -0
  135. data/app/views/gluttonberg/admin/content/galleries/edit.html.haml +1 -12
  136. data/app/views/gluttonberg/admin/content/galleries/index.html.haml +18 -9
  137. data/app/views/gluttonberg/admin/content/galleries/new.html.haml +1 -1
  138. data/app/views/gluttonberg/admin/content/main/_sidebar.html.haml +28 -16
  139. data/app/views/gluttonberg/admin/content/page_localizations/_form.html.haml +11 -20
  140. data/app/views/gluttonberg/admin/content/page_localizations/edit.html.haml +7 -0
  141. data/app/views/gluttonberg/admin/content/pages/_form.html.haml +11 -4
  142. data/app/views/gluttonberg/admin/content/pages/_page_settings.html.haml +4 -7
  143. data/app/views/gluttonberg/admin/content/pages/_row.html.haml +38 -30
  144. data/app/views/gluttonberg/admin/content/pages/index.html.haml +23 -15
  145. data/app/views/gluttonberg/admin/content/pages/pages_list_for_tinymce.html.haml +14 -3
  146. data/app/views/gluttonberg/admin/content/pages/show.html.haml +1 -1
  147. data/app/views/gluttonberg/admin/main/index.html.haml +13 -12
  148. data/app/views/gluttonberg/admin/main/waiting_for_approval.html.haml +33 -0
  149. data/app/views/gluttonberg/admin/membership/groups/index.html.haml +5 -5
  150. data/app/views/gluttonberg/admin/membership/members/_form.html.haml +3 -1
  151. data/app/views/gluttonberg/admin/membership/members/edit.html.haml +1 -0
  152. data/app/views/gluttonberg/admin/membership/members/index.html.haml +1 -1
  153. data/app/views/gluttonberg/admin/password_resets/edit.html.haml +36 -16
  154. data/app/views/gluttonberg/admin/password_resets/new.html.haml +19 -11
  155. data/app/views/gluttonberg/admin/settings/configurations/_form.html.haml +28 -0
  156. data/app/views/gluttonberg/admin/settings/configurations/_settings_table.html.haml +42 -0
  157. data/app/views/gluttonberg/admin/settings/{generic_settings → configurations}/_value_tag.html.haml +0 -0
  158. data/app/views/gluttonberg/admin/settings/configurations/edit.html.haml +4 -0
  159. data/app/views/gluttonberg/admin/settings/configurations/index.html.haml +31 -0
  160. data/app/views/gluttonberg/admin/settings/{generic_settings → configurations}/new.html.haml +2 -2
  161. data/app/views/gluttonberg/admin/settings/embeds/_form.html.haml +19 -0
  162. data/app/views/gluttonberg/admin/settings/embeds/edit.html.haml +12 -0
  163. data/app/views/gluttonberg/admin/settings/embeds/index.html.haml +36 -0
  164. data/app/views/gluttonberg/admin/settings/embeds/list_for_redactor.html.haml +29 -0
  165. data/app/views/gluttonberg/admin/settings/embeds/new.html.haml +12 -0
  166. data/app/views/gluttonberg/admin/settings/locales/edit.html.haml +9 -1
  167. data/app/views/gluttonberg/admin/settings/locales/index.html.haml +2 -1
  168. data/app/views/gluttonberg/admin/settings/locales/new.html.haml +10 -1
  169. data/app/views/gluttonberg/admin/settings/main/_sidebar.html.haml +9 -7
  170. data/app/views/gluttonberg/admin/settings/stylesheets/_form.html.haml +11 -9
  171. data/app/views/gluttonberg/admin/settings/stylesheets/edit.html.haml +11 -2
  172. data/app/views/gluttonberg/admin/settings/stylesheets/index.html.haml +45 -36
  173. data/app/views/gluttonberg/admin/settings/stylesheets/new.html.haml +11 -2
  174. data/app/views/gluttonberg/admin/settings/users/_form.html.haml +29 -18
  175. data/app/views/gluttonberg/admin/settings/users/index.html.haml +1 -1
  176. data/app/views/gluttonberg/admin/shared/_asset_panel.html.haml +19 -4
  177. data/app/views/gluttonberg/admin/shared/_auto_save_version.html.haml +12 -0
  178. data/app/views/gluttonberg/admin/shared/_datetime_field.html.haml +19 -0
  179. data/app/views/gluttonberg/admin/shared/_previous_version_warning.html.haml +5 -0
  180. data/app/views/gluttonberg/admin/shared/_version_alerts.html.haml +34 -0
  181. data/app/views/gluttonberg/admin/shared/_version_dashboard_notifications.html.haml +11 -0
  182. data/app/views/gluttonberg/admin/shared/_version_listing.html.haml +23 -0
  183. data/app/views/gluttonberg/admin/shared/delete.html.haml +21 -48
  184. data/app/views/gluttonberg/admin/shared/generic.html.haml +20 -19
  185. data/app/views/gluttonberg/admin/user_sessions/new.html.haml +14 -9
  186. data/app/views/gluttonberg/public/member_password_resets/edit.html.haml +2 -0
  187. data/app/views/gluttonberg/public/member_password_resets/new.html.haml +3 -0
  188. data/app/views/gluttonberg/public/members/_form.html.haml +3 -0
  189. data/app/views/gluttonberg/public/members/edit.html.haml +7 -9
  190. data/app/views/gluttonberg/public/members/show.html.haml +1 -3
  191. data/app/views/gluttonberg/public/pages/restrict_site_access.html.haml +3 -4
  192. data/app/views/gluttonberg/public/shared/_gallery_images_lis.html.haml +9 -0
  193. data/app/views/layouts/_flash_messages.html.haml +5 -3
  194. data/app/views/layouts/bare.html.haml +8 -17
  195. data/app/views/layouts/gluttonberg.html.haml +37 -44
  196. data/app/views/notifier/version_declined.html.haml +21 -0
  197. data/config/locales/en_au.yml +1 -1
  198. data/config/locales/en_gb.yml +2 -1
  199. data/config/routes.rb +70 -85
  200. data/db/migrate/20130801050257_create_repeater.rb +14 -0
  201. data/lib/audio_job.rb +11 -9
  202. data/lib/engine.rb +115 -72
  203. data/lib/generators/gluttonberg/resource/resource_generator.rb +51 -41
  204. data/lib/generators/gluttonberg/resource/templates/admin_controller.rb +16 -11
  205. data/lib/generators/gluttonberg/resource/templates/backend_view_edit.html.haml +7 -2
  206. data/lib/generators/gluttonberg/resource/templates/backend_view_form.html.haml +3 -14
  207. data/lib/generators/gluttonberg/resource/templates/backend_view_import.html.haml +10 -7
  208. data/lib/generators/gluttonberg/resource/templates/backend_view_index.html.haml +6 -5
  209. data/lib/generators/gluttonberg/resource/templates/backend_view_show.html.haml +2 -2
  210. data/lib/generators/gluttonberg/resource/templates/migration.rb +12 -1
  211. data/lib/generators/gluttonberg/resource/templates/model.rb +18 -1
  212. data/lib/generators/gluttonberg/resource/templates/public_view_index.html.haml +27 -10
  213. data/lib/generators/gluttonberg/resource/templates/public_view_show.html.haml +10 -4
  214. data/lib/gluttonberg.rb +68 -37
  215. data/lib/gluttonberg/can_flag.rb +64 -76
  216. data/lib/gluttonberg/components.rb +47 -24
  217. data/lib/gluttonberg/content.rb +15 -0
  218. data/lib/gluttonberg/content/block.rb +99 -85
  219. data/lib/gluttonberg/content/block_localization.rb +11 -8
  220. data/lib/gluttonberg/content/clean_html.rb +12 -15
  221. data/lib/gluttonberg/content/default_template_file.rb +44 -0
  222. data/lib/gluttonberg/content/despamilator/filter/naughty_words.rb +4 -2
  223. data/lib/gluttonberg/content/home_page_info.rb +39 -0
  224. data/lib/gluttonberg/content/import_export_csv.rb +243 -130
  225. data/lib/gluttonberg/content/localization.rb +137 -148
  226. data/lib/gluttonberg/content/page_children.rb +36 -0
  227. data/lib/gluttonberg/content/page_components.rb +23 -0
  228. data/lib/gluttonberg/content/page_description_info.rb +55 -0
  229. data/lib/gluttonberg/content/page_duplicate.rb +68 -0
  230. data/lib/gluttonberg/content/page_finder.rb +63 -0
  231. data/lib/gluttonberg/content/page_localization_slug.rb +89 -0
  232. data/lib/gluttonberg/content/page_repairer.rb +117 -0
  233. data/lib/gluttonberg/content/publishable.rb +77 -71
  234. data/lib/gluttonberg/content/slug_management.rb +74 -26
  235. data/lib/gluttonberg/content/validations.rb +58 -0
  236. data/lib/gluttonberg/content/versioning.rb +40 -22
  237. data/lib/gluttonberg/drag_tree.rb +0 -1
  238. data/lib/gluttonberg/drag_tree/action_controller.rb +49 -37
  239. data/lib/gluttonberg/drag_tree/action_view.rb +0 -6
  240. data/lib/gluttonberg/drag_tree/active_record.rb +49 -49
  241. data/lib/gluttonberg/extensions.rb +1 -0
  242. data/lib/gluttonberg/extensions/string.rb +20 -0
  243. data/lib/gluttonberg/gb_file.rb +30 -0
  244. data/lib/gluttonberg/helpers/form_builder.rb +91 -38
  245. data/lib/gluttonberg/library.rb +9 -90
  246. data/lib/gluttonberg/library/attachment_mixin.rb +88 -98
  247. data/lib/gluttonberg/library/config/image_sizes.rb +22 -19
  248. data/lib/gluttonberg/library/default_asset_types.rb +104 -0
  249. data/lib/gluttonberg/library/processor/audio.rb +32 -16
  250. data/lib/gluttonberg/library/processor/image.rb +78 -69
  251. data/lib/gluttonberg/library/quick_magick/image.rb +72 -319
  252. data/lib/gluttonberg/library/quick_magick/image/draw.rb +133 -0
  253. data/lib/gluttonberg/library/quick_magick/image/operators_and_settings.rb +78 -0
  254. data/lib/gluttonberg/library/quick_magick/image/serialization.rb +79 -0
  255. data/lib/gluttonberg/library/quick_magick/image_list.rb +0 -1
  256. data/lib/gluttonberg/library/storage/filesystem.rb +45 -46
  257. data/lib/gluttonberg/library/storage/s3.rb +123 -119
  258. data/lib/gluttonberg/membership.rb +9 -0
  259. data/lib/gluttonberg/membership/export.rb +82 -0
  260. data/lib/gluttonberg/membership/import.rb +179 -0
  261. data/lib/gluttonberg/middleware/honeypot.rb +1 -2
  262. data/lib/gluttonberg/middleware/locales.rb +69 -18
  263. data/lib/gluttonberg/middleware/rewriter.rb +57 -16
  264. data/lib/gluttonberg/mixin_manager.rb +19 -0
  265. data/lib/gluttonberg/page_description.rb +82 -112
  266. data/lib/gluttonberg/random_string_generator.rb +31 -0
  267. data/lib/gluttonberg/record_history.rb +5 -7
  268. data/lib/gluttonberg/tasks/asset.rake +19 -8
  269. data/lib/gluttonberg/tasks/gluttonberg.rake +167 -13
  270. data/lib/gluttonberg/templates.rb +1 -3
  271. data/lib/gluttonberg/version.rb +1 -1
  272. data/lib/photo_job.rb +16 -0
  273. data/spec/controllers/auto_save_controller_spec.rb +57 -0
  274. data/spec/controllers/record_history_spec.rb +75 -0
  275. data/spec/dummy/README.rdoc +261 -0
  276. data/spec/dummy/Rakefile +7 -0
  277. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  278. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  279. data/spec/dummy/app/controllers/admin/staff_profiles_controller.rb +56 -0
  280. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  281. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  282. data/spec/dummy/app/models/staff_profile.rb +20 -0
  283. data/spec/dummy/app/models/vendor_mixin.rb +14 -0
  284. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  285. data/spec/dummy/config.ru +4 -0
  286. data/spec/dummy/config/application.rb +18 -0
  287. data/spec/dummy/config/boot.rb +10 -0
  288. data/spec/dummy/config/database.yml +8 -0
  289. data/spec/dummy/config/environment.rb +5 -0
  290. data/spec/dummy/config/environments/development.rb +37 -0
  291. data/spec/dummy/config/environments/production.rb +67 -0
  292. data/spec/dummy/config/environments/test.rb +37 -0
  293. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  294. data/spec/dummy/config/initializers/gluttonberg_advance_settings.rb +73 -0
  295. data/spec/dummy/config/initializers/gluttonberg_basic_settings.rb +65 -0
  296. data/spec/dummy/config/initializers/gluttonberg_menu_settings.rb +1 -0
  297. data/spec/dummy/config/initializers/inflections.rb +15 -0
  298. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  299. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  300. data/spec/dummy/config/initializers/session_store.rb +8 -0
  301. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  302. data/spec/dummy/config/locales/en.yml +5 -0
  303. data/{lib/generators/gluttonberg/installer/templates → spec/dummy/config}/page_descriptions.rb +103 -65
  304. data/spec/dummy/config/routes.rb +10 -0
  305. data/spec/dummy/db/20130625060411_create_staff_profile.rb +35 -0
  306. data/spec/dummy/db/schema.rb +474 -0
  307. data/spec/dummy/public/404.html +26 -0
  308. data/spec/dummy/public/422.html +26 -0
  309. data/spec/dummy/public/500.html +25 -0
  310. data/spec/dummy/public/favicon.ico +0 -0
  311. data/spec/dummy/script/rails +6 -0
  312. data/spec/dummy/tmp/cache/041/891/setting_library_number_of_recent_assets +0 -0
  313. data/spec/dummy/tmp/cache/08E/741/setting_comment_number_of_emails_allowed +0 -0
  314. data/spec/dummy/tmp/cache/580/D10/setting_title +0 -0
  315. data/spec/dummy/tmp/cache/62E/160/setting_fb_icon +0 -0
  316. data/spec/dummy/tmp/cache/6D6/FB0/setting_keywords +0 -0
  317. data/spec/dummy/tmp/cache/6D8/B60/setting_s3_key_id +0 -0
  318. data/spec/dummy/tmp/cache/6E1/A40/setting_s3_bucket +0 -0
  319. data/spec/dummy/tmp/cache/779/DF0/setting_from_email +0 -0
  320. data/spec/dummy/tmp/cache/7C5/450/setting_title_site1 +0 -0
  321. data/spec/dummy/tmp/cache/7C6/460/setting_title_site2 +0 -0
  322. data/spec/dummy/tmp/cache/802/000/setting_description +0 -0
  323. data/spec/dummy/tmp/cache/836/DD0/setting_backend_logo +0 -0
  324. data/spec/dummy/tmp/cache/862/FA0/setting_audio_assets +1 -0
  325. data/spec/dummy/tmp/cache/867/4E0/setting_video_assets +0 -0
  326. data/spec/dummy/tmp/cache/867/710/setting_enable_WYSIWYG +0 -0
  327. data/spec/dummy/tmp/cache/873/9E0/setting_fb_icon_site1 +0 -0
  328. data/spec/dummy/tmp/cache/874/9F0/setting_fb_icon_site2 +0 -0
  329. data/spec/dummy/tmp/cache/87D/A10/setting_s3_access_key +0 -0
  330. data/spec/dummy/tmp/cache/8AC/280/setting_s3_server_url +0 -0
  331. data/spec/dummy/tmp/cache/91B/730/setting_keywords_site1 +0 -0
  332. data/spec/dummy/tmp/cache/91C/740/setting_keywords_site2 +0 -0
  333. data/spec/dummy/tmp/cache/933/980/setting_auto_save_time +0 -0
  334. data/spec/dummy/tmp/cache/9BE/290/setting_from_email_site1 +0 -0
  335. data/spec/dummy/tmp/cache/9BF/2A0/setting_from_email_site2 +0 -0
  336. data/spec/dummy/tmp/cache/A02/5E0/setting_google_analytics +0 -0
  337. data/spec/dummy/tmp/cache/A47/800/setting_description_site1 +0 -0
  338. data/spec/dummy/tmp/cache/A48/810/setting_description_site2 +0 -0
  339. data/spec/dummy/tmp/cache/A69/B60/setting_comment_blacklist +0 -0
  340. data/spec/dummy/tmp/cache/B5C/D40/setting_number_of_revisions +0 -0
  341. data/spec/dummy/tmp/cache/BB3/350/setting_restrict_site_access +0 -0
  342. data/spec/dummy/tmp/cache/BB7/620/setting_comment_notification +0 -0
  343. data/spec/dummy/tmp/cache/BFB/140/setting_comment_email_as_spam +0 -0
  344. data/spec/dummy/tmp/cache/C47/DE0/setting_google_analytics_site1 +0 -0
  345. data/spec/dummy/tmp/cache/C48/DF0/setting_google_analytics_site2 +0 -0
  346. data/spec/dummy/tmp/cache/D3E/E20/setting_number_of_per_page_items +0 -0
  347. data/spec/dummy/tmp/cache/DF8/DB0/setting_restrict_site_access_site1 +0 -0
  348. data/spec/dummy/tmp/cache/DF9/DC0/setting_restrict_site_access_site2 +0 -0
  349. data/spec/dummy/tmp/cache/DFC/200/setting_comment_notification_site1 +0 -0
  350. data/spec/dummy/tmp/cache/DFD/210/setting_comment_notification_site2 +0 -0
  351. data/spec/dummy/tmp/cache/FD9/200/setting_comment_number_of_urls_allowed +0 -0
  352. data/spec/fixtures/assets/assets_import.zip +0 -0
  353. data/spec/fixtures/assets/audio.mp3 +0 -0
  354. data/spec/fixtures/assets/c3-add-interactive.mov +0 -0
  355. data/spec/fixtures/assets/gb_banner.jpg +0 -0
  356. data/spec/fixtures/assets/gb_logo.png +0 -0
  357. data/spec/fixtures/assets/high_res_photo.jpg +0 -0
  358. data/spec/fixtures/assets/untitled +0 -0
  359. data/spec/fixtures/members.csv +5 -0
  360. data/spec/fixtures/staff_profiles.csv +4 -0
  361. data/spec/helpers/public/assets_spec.rb +73 -0
  362. data/spec/helpers/public/content_helpers_spec.rb +71 -0
  363. data/spec/helpers/public/html_truncate_spec.rb +37 -0
  364. data/spec/helpers/public/meta_tags_spec.rb +29 -0
  365. data/spec/helpers/public/page_info_spec.rb +233 -0
  366. data/spec/helpers/public_spec.rb +114 -0
  367. data/spec/lib/content/import_export_csv_spec.rb +177 -0
  368. data/spec/lib/content/localization_spec.rb +107 -0
  369. data/spec/lib/content/page_finder_spec.rb +71 -0
  370. data/spec/lib/content/page_repairer_spec.rb +151 -0
  371. data/spec/lib/content/publishable_spec.rb +54 -0
  372. data/spec/lib/content/validations_spec.rb +88 -0
  373. data/spec/lib/drag_tree/action_controller_spec.rb +137 -0
  374. data/spec/lib/drag_tree/active_record_spec.rb +86 -0
  375. data/spec/lib/library/s3_rspec.rb +78 -0
  376. data/spec/lib/membership/export_spec.rb +89 -0
  377. data/spec/lib/membership/import_spec.rb +68 -0
  378. data/spec/lib/middleware/locales_spec.rb +192 -0
  379. data/spec/lib/middleware/rewriter_spec.rb +186 -0
  380. data/spec/lib/page_description_spec.rb +68 -0
  381. data/spec/mailers/member_notifier_spec.rb +140 -0
  382. data/spec/mailers/notifier_spec.rb +86 -0
  383. data/spec/models/asset_bulk_import_spec.rb +43 -0
  384. data/spec/models/asset_category_spec.rb +77 -0
  385. data/spec/models/asset_collection_spec.rb +72 -0
  386. data/spec/models/asset_spec.rb +278 -0
  387. data/spec/models/asset_type_spec.rb +109 -0
  388. data/spec/models/member_spec.rb +128 -0
  389. data/spec/models/page_localization_spec.rb +81 -0
  390. data/spec/models/page_spec.rb +221 -0
  391. data/spec/models/setting_spec.rb +49 -0
  392. data/spec/models/user_spec.rb +385 -0
  393. data/spec/observers/locale_observer_spec.rb +79 -0
  394. data/spec/observers/page_localization_observer_spec.rb +87 -0
  395. data/spec/observers/page_observer_spec.rb +130 -0
  396. data/spec/spec_helper.rb +90 -0
  397. metadata +508 -331
  398. data/app/assets/images/gb_360-button-pause-light.gif +0 -0
  399. data/app/assets/images/gb_360-button-pause-light.png +0 -0
  400. data/app/assets/images/gb_360-button-pause.gif +0 -0
  401. data/app/assets/images/gb_360-button-pause.png +0 -0
  402. data/app/assets/images/gb_360-button-play-light.gif +0 -0
  403. data/app/assets/images/gb_360-button-play-light.png +0 -0
  404. data/app/assets/images/gb_360-button-play.gif +0 -0
  405. data/app/assets/images/gb_360-button-play.png +0 -0
  406. data/app/assets/images/gb_360-button-vis-pause-light.gif +0 -0
  407. data/app/assets/images/gb_360-button-vis-pause-light.png +0 -0
  408. data/app/assets/images/gb_360-button-vis-pause.gif +0 -0
  409. data/app/assets/images/gb_360-button-vis-pause.png +0 -0
  410. data/app/assets/images/gb_360-button-vis-play-light.gif +0 -0
  411. data/app/assets/images/gb_360-button-vis-play-light.png +0 -0
  412. data/app/assets/images/gb_360-button-vis-play.gif +0 -0
  413. data/app/assets/images/gb_360-button-vis-play.png +0 -0
  414. data/app/assets/images/gb_button_bkg_grey.gif +0 -0
  415. data/app/assets/images/gb_icon_content_2.png +0 -0
  416. data/app/assets/images/gb_icon_dash.png +0 -0
  417. data/app/assets/images/gb_icon_library_2.png +0 -0
  418. data/app/assets/images/gb_page_content_fillin.gif +0 -0
  419. data/app/assets/images/gb_spinner_for_dialouge.gif +0 -0
  420. data/app/assets/images/gb_sub_nav_back_bkg.gif +0 -0
  421. data/app/assets/images/gb_subnav_bkg.gif +0 -0
  422. data/app/assets/images/gb_table_head_bkg.gif +0 -0
  423. data/app/assets/images/gb_wrapper_bkg.png +0 -0
  424. data/app/assets/images/gb_wysiwyg.png +0 -0
  425. data/app/assets/images/help/gb_help.jpg +0 -0
  426. data/app/assets/images/icons/gb_collapsed.png +0 -0
  427. data/app/assets/images/icons/gb_expanded.png +0 -0
  428. data/app/assets/images/library/gb_back.gif +0 -0
  429. data/app/assets/images/library/gb_dialog_overlay.png +0 -0
  430. data/app/assets/images/library/gb_inactive_tab.jpg +0 -0
  431. data/app/assets/images/library/gb_search_icon.gif +0 -0
  432. data/app/assets/images/library/gb_wysiwyg_pic.png +0 -0
  433. data/app/assets/javascripts/gb_ajaxfileupload.js +0 -205
  434. data/app/assets/javascripts/gb_berniecode-animator.js +0 -674
  435. data/app/assets/javascripts/gb_bootstrap-datepicker.js +0 -501
  436. data/app/assets/javascripts/gb_expander.js +0 -81
  437. data/app/assets/javascripts/gb_jquery-dragTree.js +0 -525
  438. data/app/assets/javascripts/gb_jquery-tagarea.js +0 -404
  439. data/app/assets/javascripts/gb_login.js +0 -33
  440. data/app/assets/javascripts/gb_tags.js +0 -177
  441. data/app/assets/javascripts/jquery-1-7-1.js +0 -9267
  442. data/app/assets/javascripts/jquery-dimensions-min.js +0 -12
  443. data/app/assets/javascripts/jquery-ui-1-8-23-custom-min.js +0 -85
  444. data/app/assets/javascripts/tiny_mce/jquery.tinymce.js +0 -1
  445. data/app/assets/javascripts/tiny_mce/langs/en.js +0 -223
  446. data/app/assets/javascripts/tiny_mce/plugins/advhr/css/advhr.css +0 -5
  447. data/app/assets/javascripts/tiny_mce/plugins/advhr/editor_plugin.js +0 -1
  448. data/app/assets/javascripts/tiny_mce/plugins/advhr/js/rule.js +0 -43
  449. data/app/assets/javascripts/tiny_mce/plugins/advhr/langs/en_dlg.js +0 -7
  450. data/app/assets/javascripts/tiny_mce/plugins/advhr/rule.htm +0 -58
  451. data/app/assets/javascripts/tiny_mce/plugins/advlink/css/advlink.css +0 -8
  452. data/app/assets/javascripts/tiny_mce/plugins/advlink/editor_plugin.js +0 -61
  453. data/app/assets/javascripts/tiny_mce/plugins/advlink/js/advlink.js +0 -564
  454. data/app/assets/javascripts/tiny_mce/plugins/advlink/langs/en_dlg.js +0 -54
  455. data/app/assets/javascripts/tiny_mce/plugins/advlink/link.htm +0 -355
  456. data/app/assets/javascripts/tiny_mce/plugins/advlist/editor_plugin.js +0 -1
  457. data/app/assets/javascripts/tiny_mce/plugins/autolink/editor_plugin.js +0 -1
  458. data/app/assets/javascripts/tiny_mce/plugins/fullscreen/editor_plugin.js +0 -1
  459. data/app/assets/javascripts/tiny_mce/plugins/fullscreen/fullscreen.htm +0 -109
  460. data/app/assets/javascripts/tiny_mce/plugins/gb_assets/editor_plugin.js +0 -47
  461. data/app/assets/javascripts/tiny_mce/plugins/gb_assets/editor_plugin_src.js +0 -43
  462. data/app/assets/javascripts/tiny_mce/plugins/gb_assets/emotions.htm +0 -41
  463. data/app/assets/javascripts/tiny_mce/plugins/gb_assets/js/emotions.js +0 -22
  464. data/app/assets/javascripts/tiny_mce/plugins/gb_assets/langs/en_dlg.js +0 -20
  465. data/app/assets/javascripts/tiny_mce/plugins/inlinepopups/editor_plugin.js +0 -1
  466. data/app/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif +0 -0
  467. data/app/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif +0 -0
  468. data/app/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif +0 -0
  469. data/app/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif +0 -0
  470. data/app/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif +0 -0
  471. data/app/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif +0 -0
  472. data/app/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif +0 -0
  473. data/app/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css +0 -90
  474. data/app/assets/javascripts/tiny_mce/plugins/inlinepopups/template.htm +0 -387
  475. data/app/assets/javascripts/tiny_mce/plugins/insertdatetime/editor_plugin.js +0 -1
  476. data/app/assets/javascripts/tiny_mce/plugins/lists/editor_plugin.js +0 -1
  477. data/app/assets/javascripts/tiny_mce/plugins/paste/editor_plugin.js +0 -1
  478. data/app/assets/javascripts/tiny_mce/plugins/paste/js/pastetext.js +0 -36
  479. data/app/assets/javascripts/tiny_mce/plugins/paste/js/pasteword.js +0 -51
  480. data/app/assets/javascripts/tiny_mce/plugins/paste/langs/en_dlg.js +0 -5
  481. data/app/assets/javascripts/tiny_mce/plugins/paste/pastetext.htm +0 -27
  482. data/app/assets/javascripts/tiny_mce/plugins/paste/pasteword.htm +0 -21
  483. data/app/assets/javascripts/tiny_mce/plugins/preview/editor_plugin.js +0 -1
  484. data/app/assets/javascripts/tiny_mce/plugins/preview/jscripts/embed.js +0 -73
  485. data/app/assets/javascripts/tiny_mce/plugins/preview/preview.html +0 -18
  486. data/app/assets/javascripts/tiny_mce/plugins/style/css/props.css +0 -13
  487. data/app/assets/javascripts/tiny_mce/plugins/style/editor_plugin.js +0 -1
  488. data/app/assets/javascripts/tiny_mce/plugins/style/js/props.js +0 -635
  489. data/app/assets/javascripts/tiny_mce/plugins/style/langs/en_dlg.js +0 -70
  490. data/app/assets/javascripts/tiny_mce/plugins/style/props.htm +0 -838
  491. data/app/assets/javascripts/tiny_mce/plugins/table/cell.htm +0 -180
  492. data/app/assets/javascripts/tiny_mce/plugins/table/css/cell.css +0 -17
  493. data/app/assets/javascripts/tiny_mce/plugins/table/css/row.css +0 -25
  494. data/app/assets/javascripts/tiny_mce/plugins/table/css/table.css +0 -13
  495. data/app/assets/javascripts/tiny_mce/plugins/table/editor_plugin.js +0 -1
  496. data/app/assets/javascripts/tiny_mce/plugins/table/js/cell.js +0 -319
  497. data/app/assets/javascripts/tiny_mce/plugins/table/js/merge_cells.js +0 -27
  498. data/app/assets/javascripts/tiny_mce/plugins/table/js/row.js +0 -237
  499. data/app/assets/javascripts/tiny_mce/plugins/table/js/table.js +0 -450
  500. data/app/assets/javascripts/tiny_mce/plugins/table/langs/en_dlg.js +0 -75
  501. data/app/assets/javascripts/tiny_mce/plugins/table/merge_cells.htm +0 -32
  502. data/app/assets/javascripts/tiny_mce/plugins/table/row.htm +0 -158
  503. data/app/assets/javascripts/tiny_mce/plugins/table/table.htm +0 -188
  504. data/app/assets/javascripts/tiny_mce/plugins/wordcount/editor_plugin.js +0 -1
  505. data/app/assets/javascripts/tiny_mce/themes/advanced/anchor.htm +0 -26
  506. data/app/assets/javascripts/tiny_mce/themes/advanced/editor_template.js +0 -1
  507. data/app/assets/javascripts/tiny_mce/themes/advanced/editor_template_src.js +0 -1358
  508. data/app/assets/javascripts/tiny_mce/themes/advanced/img/icons.gif +0 -0
  509. data/app/assets/javascripts/tiny_mce/themes/advanced/img/trans.gif +0 -0
  510. data/app/assets/javascripts/tiny_mce/themes/advanced/js/anchor.js +0 -42
  511. data/app/assets/javascripts/tiny_mce/themes/advanced/js/link.js +0 -153
  512. data/app/assets/javascripts/tiny_mce/themes/advanced/js/source_editor.js +0 -56
  513. data/app/assets/javascripts/tiny_mce/themes/advanced/langs/en.js +0 -68
  514. data/app/assets/javascripts/tiny_mce/themes/advanced/langs/en_dlg.js +0 -54
  515. data/app/assets/javascripts/tiny_mce/themes/advanced/skins/default/content.css +0 -47
  516. data/app/assets/javascripts/tiny_mce/themes/advanced/skins/default/dialog.css +0 -117
  517. data/app/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/buttons.png +0 -0
  518. data/app/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/items.gif +0 -0
  519. data/app/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif +0 -0
  520. data/app/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif +0 -0
  521. data/app/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/progress.gif +0 -0
  522. data/app/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif +0 -0
  523. data/app/assets/javascripts/tiny_mce/themes/advanced/skins/default/ui.css +0 -227
  524. data/app/assets/javascripts/tiny_mce/themes/advanced/source_editor.htm +0 -25
  525. data/app/assets/javascripts/tiny_mce/tiny_mce.js +0 -1
  526. data/app/assets/javascripts/tiny_mce/tiny_mce_popup.js +0 -5
  527. data/app/assets/javascripts/tiny_mce/utils/editable_selects.js +0 -70
  528. data/app/assets/javascripts/tiny_mce/utils/form_utils.js +0 -210
  529. data/app/assets/javascripts/tiny_mce/utils/mctabs.js +0 -162
  530. data/app/assets/javascripts/tiny_mce/utils/validate.js +0 -252
  531. data/app/controllers/gluttonberg/admin/content/articles_controller.rb +0 -139
  532. data/app/controllers/gluttonberg/admin/content/blogs_controller.rb +0 -101
  533. data/app/controllers/gluttonberg/admin/content/comments_controller.rb +0 -130
  534. data/app/controllers/gluttonberg/admin/content/main_controller.rb +0 -13
  535. data/app/controllers/gluttonberg/admin/help_controller.rb +0 -15
  536. data/app/controllers/gluttonberg/admin/settings/generic_settings_controller.rb +0 -90
  537. data/app/controllers/gluttonberg/admin/settings/main_controller.rb +0 -11
  538. data/app/controllers/gluttonberg/public/articles_controller.rb +0 -79
  539. data/app/controllers/gluttonberg/public/blogs_controller.rb +0 -44
  540. data/app/controllers/gluttonberg/public/comments_controller.rb +0 -46
  541. data/app/models/gluttonberg/article.rb +0 -73
  542. data/app/models/gluttonberg/article_localization.rb +0 -21
  543. data/app/models/gluttonberg/blog.rb +0 -19
  544. data/app/models/gluttonberg/comment.rb +0 -142
  545. data/app/models/gluttonberg/comment_subscription.rb +0 -28
  546. data/app/models/gluttonberg/help.rb +0 -48
  547. data/app/views/gluttonberg/admin/content/articles/_form.html.haml +0 -115
  548. data/app/views/gluttonberg/admin/content/articles/edit.html.haml +0 -11
  549. data/app/views/gluttonberg/admin/content/articles/index.html.haml +0 -71
  550. data/app/views/gluttonberg/admin/content/articles/new.html.haml +0 -11
  551. data/app/views/gluttonberg/admin/content/blogs/_form.html.haml +0 -56
  552. data/app/views/gluttonberg/admin/content/blogs/edit.html.haml +0 -3
  553. data/app/views/gluttonberg/admin/content/blogs/index.html.haml +0 -35
  554. data/app/views/gluttonberg/admin/content/blogs/new.html.haml +0 -10
  555. data/app/views/gluttonberg/admin/content/comments/index.html.haml +0 -66
  556. data/app/views/gluttonberg/admin/content/galleries/_images_list.html.haml +0 -21
  557. data/app/views/gluttonberg/admin/content/galleries/add_image.html.haml +0 -1
  558. data/app/views/gluttonberg/admin/content/main/index.html.haml +0 -20
  559. data/app/views/gluttonberg/admin/content/pages/edit_home.html.haml +0 -11
  560. data/app/views/gluttonberg/admin/exceptions/internal_server_error.html.haml +0 -11
  561. data/app/views/gluttonberg/admin/exceptions/not_acceptable.html.haml +0 -9
  562. data/app/views/gluttonberg/admin/membership/main/index.html.haml +0 -11
  563. data/app/views/gluttonberg/admin/settings/generic_settings/_form.html.haml +0 -26
  564. data/app/views/gluttonberg/admin/settings/generic_settings/edit.html.haml +0 -4
  565. data/app/views/gluttonberg/admin/settings/generic_settings/index.html.haml +0 -58
  566. data/app/views/gluttonberg/admin/settings/main/index.html.haml +0 -18
  567. data/app/views/gluttonberg/public/articles/index.rss.builder +0 -21
  568. data/app/views/gluttonberg/public/blogs/show.rss.builder +0 -21
  569. data/app/views/gluttonberg/public/exceptions/internal_server_error.html.haml +0 -11
  570. data/app/views/gluttonberg/public/exceptions/not_acceptable.html.haml +0 -9
  571. data/app/views/help/gluttonberg/admin/AssetLibrary/assets/add_assets_in_bulk.html.haml +0 -41
  572. data/app/views/help/gluttonberg/admin/AssetLibrary/assets/edit.html.haml +0 -61
  573. data/app/views/help/gluttonberg/admin/AssetLibrary/assets/index.html.haml +0 -16
  574. data/app/views/help/gluttonberg/admin/AssetLibrary/assets/new.html.haml +0 -57
  575. data/app/views/help/gluttonberg/admin/AssetLibrary/collections/edit.html.haml +0 -15
  576. data/app/views/help/gluttonberg/admin/AssetLibrary/collections/index.html.haml +0 -41
  577. data/app/views/help/gluttonberg/admin/AssetLibrary/collections/new.html.haml +0 -15
  578. data/app/views/help/gluttonberg/admin/AssetLibrary/main/index.html.haml +0 -34
  579. data/app/views/help/gluttonberg/admin/content/page_localizations/edit.html.haml +0 -89
  580. data/app/views/help/gluttonberg/admin/content/pages/_page_description_help.html.haml +0 -14
  581. data/app/views/help/gluttonberg/admin/content/pages/edit.html.haml +0 -62
  582. data/app/views/help/gluttonberg/admin/content/pages/index.html.haml +0 -111
  583. data/app/views/help/gluttonberg/admin/content/pages/new.html.haml +0 -61
  584. data/app/views/help/gluttonberg/admin/settings/dialects/edit.html.haml +0 -47
  585. data/app/views/help/gluttonberg/admin/settings/dialects/index.html.haml +0 -50
  586. data/app/views/help/gluttonberg/admin/settings/dialects/new.html.haml +0 -47
  587. data/app/views/help/gluttonberg/admin/settings/generic_settings/index.html.haml +0 -74
  588. data/app/views/help/gluttonberg/admin/settings/locales/edit.html.haml +0 -71
  589. data/app/views/help/gluttonberg/admin/settings/locales/index.html.haml +0 -57
  590. data/app/views/help/gluttonberg/admin/settings/locales/new.html.haml +0 -71
  591. data/app/views/help/gluttonberg/admin/settings/users/edit.html.haml +0 -63
  592. data/app/views/help/gluttonberg/admin/settings/users/index.html.haml +0 -60
  593. data/app/views/help/gluttonberg/admin/settings/users/new.html.haml +0 -69
  594. data/app/views/notifier/comment_notification.html.haml +0 -17
  595. data/app/views/notifier/comment_notification_for_admin.html.haml +0 -19
  596. data/db/migrate/20121106025800_add_artist_and_link_to_assets.rb +0 -6
  597. data/lib/acts_as_versioned.rb +0 -496
  598. data/lib/generators/gluttonberg/blog/blog_generator.rb +0 -46
  599. data/lib/generators/gluttonberg/blog/templates/articles_index.html.haml +0 -18
  600. data/lib/generators/gluttonberg/blog/templates/articles_show.html.haml +0 -63
  601. data/lib/generators/gluttonberg/blog/templates/articles_tag.html.haml +0 -24
  602. data/lib/generators/gluttonberg/blog/templates/blog_migration.rb +0 -90
  603. data/lib/generators/gluttonberg/blog/templates/blogs_index.html.haml +0 -15
  604. data/lib/generators/gluttonberg/blog/templates/blogs_show.html.haml +0 -25
  605. data/lib/generators/gluttonberg/installer/USAGE +0 -1
  606. data/lib/generators/gluttonberg/installer/installer_generator.rb +0 -106
  607. data/lib/generators/gluttonberg/installer/templates/delayed_job_script +0 -5
  608. data/lib/generators/gluttonberg/installer/templates/gluttonberg_migration.rb +0 -368
  609. data/lib/generators/gluttonberg/installer/templates/public.html.haml +0 -24
  610. data/lib/generators/gluttonberg/installer/templates/sitemap.rb +0 -70
  611. data/lib/gluttonberg/authorizable.rb +0 -51
  612. data/lib/gluttonberg/helpers.rb +0 -20
  613. data/lib/rails/railties/tasks.rake +0 -3
@@ -1,21 +1,33 @@
1
- $(document).ready(function() {
1
+ var editingInProgress = false;
2
+ var changedSinceLastAutoSave = false;
2
3
 
4
+ $(document).ready(function() {
3
5
  dragTreeManager.init();
6
+ initNestable();
4
7
  initClickEventsForAssetLinks($("body"));
5
8
  initSlugManagement();
6
9
  initBetterSlugManagement();
7
- init_setting_dropdown_ajax();
10
+ initSettingDropdownAjax();
8
11
  initPublishedDateTime();
9
12
  initBulkDeleteAsset();
13
+ initGluttonbergUI();
14
+ initFormValidation();
15
+ setUpAudio();
16
+ WarnNavigateAway.init();
17
+ AutoSave.init();
18
+ $(".chzn-select").chosen();
19
+ initPublishingButton();
20
+ initPreview();
21
+ shortcodeNameValidation();
22
+ });
10
23
 
11
- $("#wrapper p#contextualHelp a").click(Help.click);
12
-
24
+ /*
25
+ General UI fixes.
26
+ */
27
+ function initGluttonbergUI(){
13
28
  if ($('table').length > 0) {
14
29
  $('table').find('tr:last').css('background-image', 'none !important');
15
30
  }
16
-
17
- $("form.validation").validate();
18
-
19
31
  if( $('.page_flash').length > 0){
20
32
  if($(".model-error").length > 0){
21
33
  $('.page_flash').remove();
@@ -25,204 +37,56 @@ $(document).ready(function() {
25
37
  }
26
38
 
27
39
  $("ul.nav a.active").each(function(){
28
- $(this).parent("li").addClass('active')
29
- });
30
-
31
- setUpAudio();
32
-
33
- });
34
-
35
- function initBetterSlugManagement() {
36
- var str = $('#page_slug_holder .domain').html();
37
- var pt = $('#page_title');
38
- var pb = $('#page_slug .edit');
39
- var ps = $('#page_slug span');
40
- var hs = $('#page_hidden_slug');
41
- var regex = /[\!\*'"″′‟‛„‚”“”˝\(\);:.@&=+$,\/?%#\[\]]/gim;
42
- var doNotEdit = ps.attr('donotedit');
43
- var editPage = false;
44
- var slugLength = 0;
45
- var slug = "";
46
- var currentSlug = "";
47
-
48
- if (typeof doNotEdit == 'string') {
49
- doNotEdit = true;
50
- editPage = true;
51
- } else {
52
- doNotEdit = false;
53
- }
54
-
55
- $('#page_slug_holder .domain').html($.trim(str));
56
-
57
- pt.keyup(function(){
58
- if (!doNotEdit) {
59
- slug = pt.attr('value').toLowerCase().replace(/\s/gim, '_').replace(regex, '')
60
- ps.html(slug);
61
- hs.attr('value', slug);
62
- };
63
- })
64
-
65
- pb.click(function(){
66
- hs.show();
67
- ps.hide();
68
- pb.hide();
69
- hs.focus();
70
- doNotEdit = true;
71
- slugLength = hs.val().length;
72
- currentSlug = hs.val();
73
- })
74
-
75
- hs.focusout(function(){
76
- var len = hs.val().length;
77
- if (doNotEdit) {
78
- if (len == 0) {
79
- hs.hide();
80
- ps.show();
81
- pb.show();
82
- if (!editPage) {
83
- doNotEdit = false;
84
- slug = pt.attr('value').toLowerCase().replace(/\s/gim, '_').replace(regex, '')
85
- ps.html(slug);
86
- hs.attr('value', slug);
87
- } else {
88
- hs.attr('value', currentSlug);
89
- }
90
- } else if(slugLength == len) {
91
- hs.hide();
92
- ps.show();
93
- pb.show();
94
- if (!editPage) {
95
- doNotEdit = false;
96
- }
97
- } else {
98
- hs.hide();
99
- ps.show();
100
- pb.show();
101
- ps.html(hs.attr('value').toLowerCase().replace(/\s/gim, '_').replace(regex, ''));
102
- doNotEdit = true;
103
- };
104
- };
105
- })
106
-
107
- }
108
-
109
-
110
- function enable_jwysiwyg_on(selector) {
111
- $(document).ready(function() {
112
- $(selector).tinymce({
113
- // Location of TinyMCE script
114
- script_url: '/assets/tiny_mce/tiny_mce.js',
115
-
116
- // General options
117
- theme: "advanced",
118
- plugins: "autolink,lists,style,table,advhr,advlink,gb_assets,inlinepopups,insertdatetime,preview,paste,fullscreen,advlist,wordcount",
119
-
120
- // Theme options
121
- theme_advanced_buttons1: "gb_assets,newdocument,|,bold,italic,underline,|,justifyleft,justifyright,styleselect,formatselect,|,attribs,removeformat,cleanup,code",
122
- theme_advanced_buttons2: "pastetext,pasteword,|,bullist,numlist,|,blockquote,|,undo,redo,|,link,unlink,anchor,|,insertdate,inserttime|,advhr,",
123
- theme_advanced_buttons3: "tablecontrols,|,fullscreen,preview",
124
- theme_advanced_toolbar_location: "top",
125
- theme_advanced_toolbar_align: "left",
126
- theme_advanced_statusbar_location: "bottom",
127
- theme_advanced_resizing: true,
128
- plugin_insertdate_dateFormat: "%d/%m/%Y",
129
- plugin_insertdate_timeFormat: "%H:%M:%S",
130
- theme_advanced_resizing_use_cookie: false,
131
- width: get_wysiwyg_width(selector),
132
-
133
- // Example content CSS (should be your site CSS)
134
- content_css: "/stylesheets/user-styles.css"
135
-
136
- });
137
-
40
+ $(this).parent("li").addClass('active');
138
41
  });
139
42
  }
140
43
 
141
- function get_wysiwyg_width(selector){
142
- if($(selector).attr('width')){
143
- return $(selector).attr('width')
144
- } else {
145
- return null;
146
- }
147
- }
148
-
149
-
150
-
151
- // This method initialize slug related event on a title text box.
152
- function initSlugManagement() {
153
- try {
154
- var pt = $('#page_title');
155
- var ps = $('#page_slug');
156
-
157
- var regex = /[\!\*'"″′‟‛„‚”“”˝\(\);:.@&=+$,\/?%#\[\]]/gim;
158
-
159
- var pt_function = function() {
160
- if (ps.attr('donotmodify') != 'true') ps.attr('value', pt.attr('value').toLowerCase().replace(/\s/gim, '_').replace(regex, ''));
161
- };
162
-
163
- pt.bind("keyup", pt_function);
164
- pt.bind("blur", pt_function);
165
-
166
- ps.bind("blur", function() {
167
- ps.attr('value', ps.attr('value').toLowerCase().replace(/\s/gim, '_').replace(regex, ''));
168
- ps.attr('donotmodify', 'true');
169
- });
170
- } catch(e) {
171
- console.log(e)
172
- }
173
- }
174
-
175
- function enable_slug_management_on(src_class){
176
- $("."+src_class).attr('id','page_title')
44
+ function initFormValidation(){
45
+ $("form.validation").validate();
177
46
  }
178
47
 
179
48
 
180
49
 
181
- // if container element has class "add_to_photoseries" , it returns html of new image
50
+ // Initalize a tags for asset selector and remove button
51
+ // It also handles autosave mode of asset selector
182
52
  function initClickEventsForAssetLinks(element) {
183
53
  element.find(".thumbnails a.choose_button").click(function(e) {
184
54
  var p = $(this).parent().parent().parent(".asset_selector_wrapper");
185
-
186
55
  var link = $(this);
187
- AssetBrowser.showOverlay()
56
+ AssetBrowser.showOverlay();
188
57
  $.get(link.attr("href"), null, function(markup) {
189
58
  AssetBrowser.load(p, link, markup);
190
59
  });
191
60
  e.preventDefault();
192
61
  });
193
62
 
194
- }
195
-
196
- // Common utility functions shared between the different dialogs.
197
- var Dialog = {
198
- center: function() {
199
- var offset = $(document).scrollTop();
200
- for (var i = 0; i < arguments.length; i++) {
201
- arguments[i].css({
202
- top: offset + "px"
63
+ element.find(".thumbnails a.remove").click(function(e) {
64
+ var p = $(this).parent().parent().parent(".asset_selector_wrapper");
65
+ var link = $(this);
66
+ var parent = link.parents(".thumbnails");
67
+ parent.find('.choose_asset_hidden_field').val('');
68
+ parent.find('h5').html('');
69
+ parent.find('img').remove();
70
+ if(!blank(link.attr('data_url'))){
71
+ $.ajax({
72
+ url: link.attr('data_url'),
73
+ data: 'gluttonberg_setting[value]=',
74
+ type: "PUT",
75
+ success: function(data) {}
203
76
  });
204
- };
205
- },
206
- PADDING_ATTRS: ["padding-top", "padding-bottom"],
207
- resizeDisplay: function(object) {
208
- // Get the display and the offsets if we don't have them
209
- if (!object.display) object.display = object.frame.find(".display");
210
- if (!object.offsets) object.offsets = object.frame.find("> *:not(.display)");
211
- var offsetHeight = 0;
212
- object.offsets.each(function(i, node) {
213
- offsetHeight += $(node).outerHeight();
214
- });
215
- // Get the padding for the display
216
- if (!object.displayPadding) {
217
- object.displayPadding = 0
218
- for (var i = 0; i < this.PADDING_ATTRS.length; i++) {
219
- object.displayPadding += parseInt(object.display.css(this.PADDING_ATTRS[i]).match(/\d+/)[0]);
220
- };
77
+ }else{
78
+ changedSinceLastAutoSave = true;
221
79
  }
222
- object.display.height(object.frame.innerHeight() - (offsetHeight + object.displayPadding));
223
- }
224
- };
225
80
 
81
+ e.preventDefault();
82
+ });
83
+
84
+ }
85
+
86
+ /*
87
+ All functioanlity for asset selector
88
+ Listing, searching, ajax upload, auto save, inserting image in redactor, filters
89
+ */
226
90
  var AssetBrowser = {
227
91
  overlay: null,
228
92
  dialog: null,
@@ -230,6 +94,7 @@ var AssetBrowser = {
230
94
  Wysiwyg: null,
231
95
  logo_setting: false,
232
96
  filter: null,
97
+ filter_value: null,
233
98
  actualLink: null,
234
99
  link_parent: null,
235
100
  load: function(p, link, markup, Wysiwyg) {
@@ -242,6 +107,12 @@ var AssetBrowser = {
242
107
  }
243
108
  // its used for category filtering on assets and collections
244
109
  AssetBrowser.filter = $("#filter_" + $(link).attr("rel"));
110
+ if(!blank(link)){
111
+ AssetBrowser.filter_value = getParameterByName(link.attr('href'), "filter");
112
+ if(!blank(AssetBrowser.filter_value) && !blank(AssetBrowser.filter)){
113
+ AssetBrowser.filter_value = AssetBrowser.filter.val();
114
+ }
115
+ }
245
116
 
246
117
  if ($(link).is(".logo_setting")) {
247
118
  AssetBrowser.logo_setting = true;
@@ -265,19 +136,12 @@ var AssetBrowser = {
265
136
  AssetBrowser.target = null;
266
137
  AssetBrowser.nameDisplay = p.find("h5");
267
138
  }
268
- if(AssetBrowser.actualLink.hasClass("add_image_to_gallery")){
269
- AssetBrowser.target = null;
270
- }
271
139
 
272
140
  threeSixtyPlayer.init();
273
141
 
274
142
  // Grab the various nodes we need
275
143
  AssetBrowser.display = AssetBrowser.browser.find("#assetsDisplay");
276
144
  AssetBrowser.offsets = AssetBrowser.browser.find("> *:not(#assetsDisplay)");
277
- AssetBrowser.backControl = AssetBrowser.browser.find("#back a");
278
- AssetBrowser.backControl.css({
279
- display: "none"
280
- });
281
145
  // Calculate the offsets
282
146
  AssetBrowser.offsetHeight = 0;
283
147
  AssetBrowser.offsets.each(function(i, element) {
@@ -287,15 +151,21 @@ var AssetBrowser = {
287
151
  AssetBrowser.resizeDisplay();
288
152
  $(window).resize(AssetBrowser.resizeDisplay);
289
153
  // Cancel button
290
- AssetBrowser.browser.find("#cancel").click(AssetBrowser.close);
154
+ AssetBrowser.browser.find(".cancel").click(AssetBrowser.close);
291
155
  // Capture anchor clicks
292
156
  AssetBrowser.display.find("a").click(AssetBrowser.click);
157
+ // Capture size selector change
158
+ AssetBrowser.display.find("select.size_selector").change(AssetBrowser.sizeSelectHandler);
159
+
293
160
  $("#assetsDialog form#asset_search_form").submit(AssetBrowser.search_submit);
294
- AssetBrowser.backControl.click(AssetBrowser.back);
161
+ $("#assetsDialog #asset_date_filter").blur(AssetBrowser.date_filter);
162
+ $("#assetsDialog #asset_date_filter").change(AssetBrowser.date_filter);
163
+ $("#assetsDialog #asset_date_filter").bsdatepicker();
295
164
 
296
165
  AssetBrowser.browser.find("#ajax_new_asset_form").submit(function(e) {
297
- if($("#asset_file").val() != null && $("#asset_name").val() != null && $("#asset_file").val() != "" && $("#asset_name").val() != ""){
298
- ajaxFileUpload(link);
166
+ if($("#ajax_new_asset_form #ajax_asset_file").val() != null && $("#ajax_new_asset_form #asset_name").val() != null && $("#ajax_new_asset_form #ajax_asset_file").val() != "" && $("#ajax_new_asset_form #asset_name").val() != ""){
167
+ $("#ajax_new_asset_form").addClass('uploading');
168
+ ajaxFileUploadForAssetLibrary(link);
299
169
  }
300
170
  e.preventDefault();
301
171
  });
@@ -307,45 +177,12 @@ var AssetBrowser = {
307
177
 
308
178
  try{
309
179
  $().collapse({parent: "#accordion_for_collections"});
310
- }catch(e){
311
- console.log(e);
312
- }
313
-
314
-
315
-
316
-
317
- $("#assetsDialog").css({
318
- height: ($(window).height()*0.9) + "px",
319
- width: ($(window).width()*0.7) + "px",
320
- "margin-top": "-" + (($(window).height()*0.9)/2) + "px",
321
- "margin-left": "-" + (($(window).width()*0.7)/2) + "px"
322
- })
323
-
324
- $(".modal-body").css({
325
- "max-height": (($(window).height()*0.9) - 135) + "px",
326
- "height": (($(window).height()*0.9) - 135) + "px"
327
- })
180
+ }catch(e){}
328
181
 
329
182
  try {
330
- $("#assetsDialog form.validation").validate();
331
- } catch(e) {
332
- console.log(e)
333
- }
183
+ $("#assetsDialog form#ajax_new_asset_form").validate();
184
+ } catch(e) {}
334
185
 
335
- $(window).resize(function(e) {
336
- $("#assetsDialog").css({
337
- height: ($(window).height()*0.9) + "px",
338
- width: ($(window).width()*0.7) + "px",
339
- "margin-top": "-" + (($(window).height()*0.9)/2) + "px",
340
- "margin-left": "-" + (($(window).width()*0.7)/2) + "px"
341
- })
342
-
343
- $(".modal-body").css({
344
- "max-height": (($(window).height()*0.9) - 135) + "px",
345
- "height": (($(window).height()*0.9) - 135) + "px"
346
- })
347
-
348
- })
349
186
  },
350
187
  sameHeightForAllElementsOfSameRow: function(parent_element){
351
188
 
@@ -357,6 +194,10 @@ var AssetBrowser = {
357
194
  if($(element).height() > row_max_height){
358
195
  row_max_height = $(element).height();
359
196
  }
197
+ if(row_max_height < 210){
198
+ row_max_height = 210;
199
+ }
200
+
360
201
  $(element).attr('data-row' , row_num);
361
202
  if( (index+1) % ASSET_MAX_COLUMNS == 0 ){
362
203
  if(row_max_height > 0){
@@ -368,8 +209,17 @@ var AssetBrowser = {
368
209
  });
369
210
  },
370
211
  resizeDisplay: function() {
371
- // var newHeight = AssetBrowser.browser.innerHeight() - AssetBrowser.offsetHeight;
372
- // AssetBrowser.display.height(newHeight);
212
+ $("#assetsDialog").css({
213
+ height: ($(window).height()*0.9) + "px",
214
+ width: ($(window).width()*0.7) + "px",
215
+ "margin-top": "-" + (($(window).height()*0.9)/2) + "px",
216
+ "margin-left": "-" + (($(window).width()*0.7)/2) + "px"
217
+ });
218
+
219
+ $(".modal-body").css({
220
+ "max-height": (($(window).height()*0.9) - 135) + "px",
221
+ "height": (($(window).height()*0.9) - 135) + "px"
222
+ });
373
223
  },
374
224
  showOverlay: function() {
375
225
  AssetBrowser.overlay = $("#assetsDialogOverlay");
@@ -383,10 +233,10 @@ var AssetBrowser = {
383
233
  });
384
234
  }
385
235
  set_height = wrapper_height = $("body").height();
386
- window_height = $(window).height() + $(window).scrollTop()
387
- if (set_height < window_height) set_height = window_height;
388
- $("#assetsDialogOverlay").height(set_height)
389
-
236
+ window_height = $(window).height() + $(window).scrollTop();
237
+ if (set_height < window_height)
238
+ set_height = window_height;
239
+ $("#assetsDialogOverlay").height(set_height);
390
240
  },
391
241
  close: function() {
392
242
  AssetBrowser.overlay.css({
@@ -402,12 +252,6 @@ var AssetBrowser = {
402
252
 
403
253
  },
404
254
  handleJSON: function(json) {
405
- if (json.backURL) {
406
- AssetBrowser.backURL = json.backURL;
407
- AssetBrowser.backControl.css({
408
- display: "block"
409
- });
410
- }
411
255
  AssetBrowser.updateDisplay(json.markup);
412
256
  },
413
257
  updateDisplay: function(markup) {
@@ -415,14 +259,14 @@ var AssetBrowser = {
415
259
  AssetBrowser.display.find("a").click(AssetBrowser.click);
416
260
 
417
261
  try {
418
- $("form.validation").validate();
262
+ $("#assetsDialog form#ajax_new_asset_form").validate();
419
263
  } catch(ex) {}
420
264
  AssetBrowser.browser.find("#ajax_new_asset_form").submit(function(e) {
421
- if($("#asset_file").val() != null && $("#asset_name").val() != null && $("#asset_file").val() != "" && $("#asset_name").val() != ""){
265
+ if($("#ajax_new_asset_form #ajax_asset_file").val() != null && $("#ajax_new_asset_form #asset_name").val() != null && $("#ajax_new_asset_form #ajax_asset_file").val() != "" && $("#ajax_new_asset_form #asset_name").val() != ""){
422
266
  ajaxFileUpload(AssetBrowser.actualLink);
423
267
  }
424
268
  e.preventDefault();
425
- })
269
+ });
426
270
  },
427
271
  search_submit: function(e) {
428
272
  $("#progress_ajax_upload").ajaxStart(function() {
@@ -431,13 +275,52 @@ var AssetBrowser = {
431
275
  $(this).hide();
432
276
  });
433
277
  var url = $("#assetsDialog form#asset_search_form").attr("action");
434
- url += ".json?" + $("#assetsDialog form#asset_search_form").serialize()
278
+ url += ".json?" + $("#assetsDialog form#asset_search_form").serialize();
435
279
  $.getJSON(url, null, function(json){
436
280
  $("#search_tab_results").html(json.markup);
437
281
  $("#search_tab_results").find("a").click(AssetBrowser.click);
438
282
  });
439
283
  e.preventDefault();
440
284
  },
285
+ date_filter: function(e){
286
+ console.log($(this).val());
287
+ var dateTokens = $(this).val().split("/");
288
+ console.log(dateTokens)
289
+ if(dateTokens.length == 3){
290
+ var day = parseInt(dateTokens[0]);
291
+ var month = parseInt(dateTokens[1]);
292
+ var year = parseInt(dateTokens[2]);
293
+ if(day > 0 && day <= 31 && month > 0 && month <= 12 && year > 1971 && year <= 2050){
294
+ var date = new Date(year,month-1, day);
295
+ var formattedDate = year + "-" + month + "-" + day;
296
+ console.log(date);
297
+
298
+ var serverDateFormat = "";
299
+
300
+ $("#progress_ajax_upload").ajaxStart(function() {
301
+ $(this).show();
302
+ }).ajaxComplete(function() {
303
+ $(this).hide();
304
+ });
305
+ var url = "/admin/filter_assets_by_date.json?asset_date_filter=" + formattedDate;
306
+ $.getJSON(url, null, function(json){
307
+ $("#search_tab_results").html(json.markup);
308
+ $("#search_tab_results").find("a").click(AssetBrowser.click);
309
+ });
310
+ }
311
+
312
+ }
313
+
314
+
315
+ e.preventDefault();
316
+ },
317
+ sizeSelectHandler: function(){
318
+ var target = $(this);
319
+ var image_url = target.val();
320
+ var file_title = target.attr("data-title");
321
+ insertImageInWysiwyg(image_url,"image",file_title);
322
+ AssetBrowser.close();
323
+ },
441
324
  click: function() {
442
325
  var target = $(this);
443
326
  if (target.is(".assetLink")) {
@@ -446,13 +329,14 @@ var AssetBrowser = {
446
329
 
447
330
  // assets only
448
331
  if (AssetBrowser.target !== null) {
449
- AssetBrowser.target.attr("value", id);
332
+ AssetBrowser.actualLink.parents(".caption").find(".choose_asset_hidden_field").attr("value", id);
333
+ AssetBrowser.actualLink.parents(".caption").find(".choose_asset_hidden_field").trigger( "selected", [target.attr("data-title"), target.attr("data-credits")] );
450
334
  var image_src = target.attr("data-thumb");
451
335
 
452
336
  image_url = target.attr("data-jwysiwyg");
453
337
  file_type = target.attr("data-category");
454
338
  file_title = name;
455
- insert_image_in_wysiwyg(image_url,file_type,file_title);
339
+ insertImageInWysiwyg(image_url,file_type,file_title);
456
340
 
457
341
  AssetBrowser.nameDisplay.html(name);
458
342
 
@@ -462,6 +346,12 @@ var AssetBrowser = {
462
346
  } else {
463
347
  AssetBrowser.link_parent.prepend("<img src='" + image_src + "' />");
464
348
  }
349
+ }else if(file_type == "video"){
350
+ if (AssetBrowser.link_parent.find("img").length > 0) {
351
+ AssetBrowser.link_parent.find("img").attr('src', image_src);
352
+ } else {
353
+ AssetBrowser.link_parent.prepend("<img src='" + image_src + "' />");
354
+ }
465
355
  }else if(file_type == "audio"){
466
356
  if (AssetBrowser.link_parent.find("div.ui360 a").length > 0) {
467
357
  AssetBrowser.link_parent.find("div.ui360 a").attr('href', image_url);
@@ -472,27 +362,10 @@ var AssetBrowser = {
472
362
  AssetBrowser.nameDisplay.html('');
473
363
  }
474
364
  }
475
-
476
-
477
- auto_save_asset(AssetBrowser.logo_setting_url, id); //auto save if it is required
365
+ changedSinceLastAutoSave = true;
366
+ autoSaveAsset(AssetBrowser.logo_setting_url, id); //auto save if it is required
478
367
  } else {
479
- if (AssetBrowser.actualLink.hasClass("add_image_to_gallery")) {
480
368
 
481
- $.ajax({
482
- url: AssetBrowser.actualLink.attr("data_url"),
483
- data: 'asset_id=' + id,
484
- type: "GET",
485
- success: function(data) {
486
- $("#images_container").html(data);
487
- initEditGalleryList();
488
- dragTreeManager.init();
489
- AssetBrowser.close();
490
- },
491
- error: function(data) {
492
- AssetBrowser.close();
493
- }
494
- });
495
- }
496
369
  }
497
370
 
498
371
  AssetBrowser.close();
@@ -507,9 +380,10 @@ var AssetBrowser = {
507
380
 
508
381
  if(accordionContentInner.attr("content-loaded") == "false"){
509
382
  accordionContentInner.prepend("<img src='/assets/gb_spinner.gif' class='gb_spinner'/>");
510
- $.get("/admin/browser-collection/"+collectionID+".json?filter="+AssetBrowser.filter.val(), function(data){
383
+ $.get("/admin/browser-collection/"+collectionID+".json?filter="+AssetBrowser.filter_value, function(data){
511
384
  $(".gb_spinner").remove();
512
385
  accordionContentInner.prepend(data['markup']);
386
+ accordionContentInner.find("a").click(AssetBrowser.click);
513
387
  });
514
388
  accordionContentInner.attr("content-loaded",true);
515
389
  }
@@ -528,59 +402,45 @@ var AssetBrowser = {
528
402
  var url = target.attr("href") + ".json";
529
403
  // its collection url then add category filter for filtering assets
530
404
  if (target.hasClass("collection")) {
531
- url += "?filter=" + AssetBrowser.filter.val();
405
+ url += "?filter=" + AssetBrowser.filter_value;
532
406
  }
533
407
  $.getJSON(url, null, AssetBrowser.handleJSON);
534
408
  }
535
409
  return false;
536
- },
537
- back: function() {
538
- if (AssetBrowser.backURL) {
539
- var category = "";
540
- var show_content = ""
541
- // if filter exist then apply it on backurl
542
- if (AssetBrowser.filter !== null) {
543
- if (AssetBrowser.filter == undefined || AssetBrowser.filter.length == 0) {
544
- if (AssetBrowser.Wysiwyg != null) category = "&filter=image";
545
- } else category = "&filter=" + AssetBrowser.filter.val();
546
- }
547
- $.get(AssetBrowser.backURL + category + show_content, null, AssetBrowser.updateDisplay);
548
- AssetBrowser.backURL = null;
549
- AssetBrowser.backControl.css({
550
- display: "none"
551
- });
552
- }
553
- return false;
554
410
  }
555
411
 
556
412
  };
557
413
 
558
414
 
559
- function insert_image_in_wysiwyg(image_url,file_type,title) {
415
+ function insertImageInWysiwyg(image_url,file_type,title) {
560
416
  if (AssetBrowser.Wysiwyg != undefined && AssetBrowser.Wysiwyg !== null) {
561
417
  Wysiwyg = AssetBrowser.Wysiwyg;
562
- if(file_type == undefined)
418
+ if(file_type == undefined){
563
419
  file_type = "";
564
- if(title == undefined)
420
+ }
421
+ if(title == undefined){
565
422
  title = "";
566
- if(Wysiwyg.selection.getContent() != "" && Wysiwyg.selection.getContent() != null)
567
- title = Wysiwyg.selection.getContent();
423
+ }
424
+ Wysiwyg.selectionRestore();
425
+ if(!blank(Wysiwyg.getSelectionText())){
426
+ title = Wysiwyg.getSelectionText();
427
+ }
568
428
  description = "";
569
429
  style = "";
570
- if(file_type == "image")
430
+ if(file_type == "image" && !AssetBrowser.actualLink.hasClass("attach")){
571
431
  image = "<img src='" + image_url + "' title='" + title + "' alt='" + description + "'" + style + "/>";
572
- else
573
- image = " <a href='"+image_url+"' >"+title+"</a> ";
574
- Wysiwyg.execCommand('mceInsertContent', false, image);
575
-
432
+ }else{
433
+ image = "<a href='"+image_url+"' target='_blank' >"+title+"</a>";
434
+ }
435
+ Wysiwyg.insertHtml(image);
576
436
  }
437
+
577
438
  }
578
439
 
579
440
 
580
- function auto_save_asset(url, new_id) {
441
+ function autoSaveAsset(url, new_id) {
581
442
  // HACK FOR LOGO SETTINGS
582
443
  if (AssetBrowser.logo_setting != undefined && AssetBrowser.logo_setting != null && AssetBrowser.logo_setting == true) {
583
- //data_id = data_id;
584
444
  new_value = new_id;
585
445
 
586
446
  $.ajax({
@@ -592,102 +452,57 @@ function auto_save_asset(url, new_id) {
592
452
  }
593
453
  }
594
454
 
595
- // Help Browser
596
- // Displays the help in an overlayed box. Intended to be used for contextual
597
- // help initially.
598
- var Help = {
599
- load: function(url) {
600
- $.get(url, null, function(markup) {
601
- Help.show(markup)
602
- });
603
- },
604
- show: function(markup) {
605
- this.buildFrames();
606
- this.frame.html(markup)
607
- this.frame.find("a#closeHelp").click(this.close);
608
- var centerFunction = function() {
609
- Dialog.center(Help.frame, Help.overlay);
610
- Dialog.resizeDisplay(Help);
611
- };
612
- $(window).resize(centerFunction);
613
- $(document).scroll(centerFunction);
614
- centerFunction();
615
- },
616
- close: function() {
617
- Help.display = null;
618
- Help.offsets = null;
619
- Help.displayPadding = null;
620
- Help.frame.hide();
621
- Help.overlay.hide();
622
- return false;
623
- },
624
- click: function(e) {
625
- Help.load(this.href);
626
- return false;
627
- },
628
- buildFrames: function() {
629
- if (!this.overlay) {
630
- this.overlay = $('<div id="overlay">&nbsp</div>');
631
- $("body").append(this.overlay);
632
- this.frame = $('<div id="helpDialog">&nbsp</div>');
633
- $("body").append(this.frame);
634
- } else {
635
- this.overlay.show();
636
- this.frame.show();
637
- }
638
- }
639
- };
640
455
 
641
456
 
457
+ /* Setup settings page */
642
458
 
643
-
644
- function init_setting_dropdown_ajax() {
459
+ function initSettingDropdownAjax() {
645
460
  $(".setting_dropdown").change(function() {
646
461
  url = $(this).attr("rel");
647
462
  id = $(this).attr("data_id");
648
- new_value = $(this).val()
649
-
650
- $("#progress_" + id).show("fast")
463
+ new_value = $(this).val();
464
+ $("#progress_" + id).show("fast");
651
465
 
652
466
  $.ajax({
653
467
  url: url,
654
468
  data: 'gluttonberg_setting[value]=' + new_value,
655
469
  type: "PUT",
656
470
  success: function(data) {
657
- $("#progress_" + id).hide("fast")
471
+ $("#progress_" + id).hide("fast");
472
+ WarnNavigateAway.removeEventHandler();
658
473
  }
659
474
  });
660
475
 
661
476
  });
662
- init_home_page_setting_dropdown_ajax();
477
+ initHomePageSettingDropdownAjax();
663
478
  }
664
479
 
665
-
666
-
667
- function init_home_page_setting_dropdown_ajax() {
480
+ /* Home page dropdown setting is special case on settings page in backend, it is handled by
481
+ a seperate ajax call.
482
+ */
483
+ function initHomePageSettingDropdownAjax() {
668
484
  $(".home_page_setting_dropdown").change(function() {
669
485
  url = $(this).attr("rel");
670
- id = "home_page"
671
- new_value = $(this).val()
672
-
673
- $("#progress_" + id).show("fast")
674
-
486
+ id = "home_page";
487
+ new_value = $(this).val();
488
+ $("#progress_" + id).show("fast");
675
489
  $.ajax({
676
490
  url: url,
677
491
  data: 'home=' + new_value,
678
492
  type: "POST",
679
493
  success: function(data) {
680
- $("#progress_" + id).hide("fast")
494
+ $("#progress_" + id).hide("fast");
495
+ WarnNavigateAway.removeEventHandler();
681
496
  }
682
497
  });
683
498
 
684
- })
685
-
499
+ });
686
500
  }
687
501
 
688
502
 
503
+ /* Setup Ajax file upload */
689
504
 
690
- function ajaxFileUpload(link) {
505
+ function ajaxFileUploadForAssetLibrary(link) {
691
506
  //starting setting some animation when the ajax starts and completes
692
507
  $("#loading").ajaxStart(function() {
693
508
  $(this).show();
@@ -696,29 +511,27 @@ function ajaxFileUpload(link) {
696
511
  });
697
512
  link = $(link);
698
513
 
699
- $("#progress_ajax_upload").show();
700
-
701
- asset_name = $('input[name$="asset[name]"]').val();
514
+ asset_name = $('#ajax_new_asset_form input[name$="asset[name]"]').val();
702
515
  var formData = {
703
516
  "asset[name]": asset_name,
704
- "asset[asset_collection_ids]": $("#asset_asset_collection_ids").val(),
705
- "new_collection[new_collection_name]": $('input[name$="new_collection[new_collection_name]"]').val()
706
- }
517
+ "asset[asset_collection_ids]": $("#ajax_new_asset_form #asset_asset_collection_ids").val(),
518
+ "new_collection[new_collection_name]": $('#ajax_new_asset_form input[name$="new_collection[new_collection_name]"]').val()
519
+ };
707
520
 
708
521
  /*
709
- prepareing ajax file upload
710
- url: the url of script file handling the uploaded files
711
- fileElementId: the file type of input element id and it will be the index of $_FILES Array()
712
- dataType: it support json, xml
713
- secureuri:use secure protocol
714
- success: call back function when the ajax complete
715
- error: callback function when the ajax failed
716
-
717
- */
522
+ prepareing ajax file upload
523
+ url: the url of script file handling the uploaded files
524
+ fileElementId: the file type of input element id and it will be the index of $_FILES Array()
525
+ dataType: it support json, xml
526
+ secureuri:use secure protocol
527
+ success: call back function when the ajax complete
528
+ error: callback function when the ajax failed
529
+
530
+ */
718
531
  $.ajaxFileUpload({
719
532
  url: '/admin/add_asset_using_ajax',
720
533
  secureuri: false,
721
- fileElementId: 'asset_file',
534
+ fileElementId: 'ajax_asset_file',
722
535
  dataType: 'json',
723
536
  data: formData,
724
537
  success: function(data, status) {
@@ -731,44 +544,27 @@ function ajaxFileUpload(link) {
731
544
  }
732
545
 
733
546
 
734
- new_id = data["asset_id"]
735
- file_path = data["url"]
547
+ new_id = data["asset_id"];
548
+ file_path = data["url"];
736
549
  jwysiwyg_image = data["jwysiwyg_image"];
737
550
 
738
551
  try{
739
552
  AssetBrowser.target.attr("value", new_id);
740
553
  AssetBrowser.nameDisplay.html(asset_name);
741
554
  if (AssetBrowser.link_parent.find("img").length > 0) {
742
- AssetBrowser.link_parent.find("img").attr('src', file_path)
743
-
555
+ AssetBrowser.link_parent.find("img").attr('src', file_path);
744
556
  } else {
745
- AssetBrowser.link_parent.prepend("<img src='" + file_path + "' />")
557
+ AssetBrowser.link_parent.prepend("<img src='" + file_path + "' />");
746
558
  }
747
559
  }catch(e){}
748
560
  if(data["category"] == "image")
749
- insert_image_in_wysiwyg(jwysiwyg_image,data["category"],data["title"]);
561
+ insertImageInWysiwyg(jwysiwyg_image,data["category"],data["title"]);
750
562
  else
751
- insert_image_in_wysiwyg(file_path,data["category"],data["title"]);
563
+ insertImageInWysiwyg(file_path,data["category"],data["title"]);
752
564
 
753
565
  data_id = $(this).attr("data_id");
754
566
  url = AssetBrowser.logo_setting_url;
755
- auto_save_asset(url, new_id); // only if autosave is required
756
-
757
- if (AssetBrowser.actualLink.hasClass("add_image_to_gallery")) {
758
- $.ajax({
759
- url: AssetBrowser.actualLink.attr("data_url"),
760
- data: 'asset_id=' + new_id,
761
- type: "GET",
762
- success: function(data) {
763
- $("#images_container").html(data);
764
- initEditGalleryList();
765
- dragTreeManager.init();
766
- },
767
- error: function(data) {
768
- }
769
- });
770
- }
771
-
567
+ autoSaveAsset(url, new_id); // only if autosave is required
772
568
 
773
569
  AssetBrowser.close();
774
570
  },
@@ -776,13 +572,18 @@ function ajaxFileUpload(link) {
776
572
  console.log(data);
777
573
  console.log(e);
778
574
  }
779
- })
575
+ });
576
+
577
+ $(".ajax-upload-progress").show();
578
+ window.setTimeout(function(){
579
+ $("#ajax_asset_file").blur();
580
+ }, 10);
780
581
 
781
582
  return false;
782
583
 
783
584
  }
784
585
 
785
-
586
+ /* Setup jcrop - image cropping library for asset library */
786
587
 
787
588
  function initJcrop(image_type, w, h) {
788
589
  var ratio = w/(h*1.0);
@@ -801,50 +602,25 @@ function initJcrop(image_type, w, h) {
801
602
 
802
603
 
803
604
 
804
- function updateCoords(c) {
805
-
806
- };
807
-
808
-
809
-
810
-
811
-
605
+ /* Setup publish date and time fields */
812
606
 
813
607
  function initPublishedDateTime() {
814
-
815
-
816
608
  $(".publishing_state").change(function(){
817
- updatePublishedDateField()
818
- })
609
+ updatePublishedDateField();
610
+ });
819
611
 
820
612
  function updatePublishedDateField(){
821
613
  if($(".publishing_state").val()=="published"){
822
- $(".published_at").show()
614
+ $(".published_at").show();
823
615
  }else{
824
- $(".published_at").hide()
616
+ $(".published_at").hide();
825
617
  }
826
618
  }
827
- updatePublishedDateField()
619
+ updatePublishedDateField();
828
620
  }
829
621
 
830
622
 
831
-
832
- function initEditGalleryList() {
833
- $(".delete_gallery_item").click(delete_event_handler_for_gallery_list)
834
-
835
- }
836
-
837
- function delete_event_handler_for_gallery_list() {
838
- id = $(this).attr("rel")
839
- $("#progress_" + id).show("fast")
840
- $.ajax({
841
- url: $(this).attr("data-url"),
842
- type: "GET",
843
- success: function(data) {
844
- $("#node-" + id).remove();
845
- }
846
- });
847
- }
623
+ /* Setup Bulk actions for asset library */
848
624
 
849
625
  var selected_assets_ids = [];
850
626
  function initBulkDeleteAsset(){
@@ -854,7 +630,7 @@ function initBulkDeleteAsset(){
854
630
  selected_assets_ids.push($(this).attr("rel"));
855
631
  $(".delete_selected_assets").show();
856
632
  }else{
857
- selected_assets_ids.remove($(this).attr("rel"))
633
+ selected_assets_ids.remove($(this).attr("rel"));
858
634
  if(selected_assets_ids.length <= 0){
859
635
  $(".delete_selected_assets").hide();
860
636
  }
@@ -867,21 +643,20 @@ function initBulkDeleteAsset(){
867
643
  selected_assets_ids = [];
868
644
  if($(".select_all_assets").is(':checked')){
869
645
  $(".select_asset_checkbox").each(function(){
870
- selected_assets_ids.push($(this).attr("rel"));
646
+ selected_assets_ids.push($(this).attr("rel"));
871
647
  });
872
648
  $(".delete_selected_assets").show();
873
649
  }else{
874
650
  selected_assets_ids = [];
875
651
  $(".delete_selected_assets").hide();
876
652
  }
877
-
878
653
  });
879
654
 
880
655
  $(".delete_selected_assets").click(function(e){
881
656
  if(selected_assets_ids == null || selected_assets_ids.length <= 0){
882
- alert("Please select at least one asset.")
657
+ alert("Please select at least one asset.");
883
658
  }else{
884
- var answer = confirm("Are you sure to delete all selected assets?")
659
+ var answer = confirm("Are you sure to delete all selected assets?");
885
660
  if(answer){
886
661
  $("form#delete_selected_assets_form input").val(selected_assets_ids);
887
662
  $("form#delete_selected_assets_form").submit();
@@ -892,19 +667,7 @@ function initBulkDeleteAsset(){
892
667
  }
893
668
 
894
669
 
895
-
896
- Array.prototype.remove= function(){
897
- var what, a= arguments, L= a.length, ax;
898
- while(L && this.length){
899
- what= a[--L];
900
- while((ax= this.indexOf(what))!= -1){
901
- this.splice(ax, 1);
902
- }
903
- }
904
- return this;
905
- }
906
-
907
- // Audio
670
+ /* Setup Audio */
908
671
 
909
672
  function setUpAudio(){
910
673
  soundManager.setup({
@@ -914,10 +677,6 @@ function setUpAudio(){
914
677
  });
915
678
  }
916
679
 
917
- function setUp360(){
918
-
919
- }
920
-
921
680
  function stopAudio(){
922
681
  if(!blank(basicMP3Player) && basicMP3Player.lastSound !== null){
923
682
  basicMP3Player.stopSound(basicMP3Player.lastSound);
@@ -925,7 +684,7 @@ function stopAudio(){
925
684
  }
926
685
 
927
686
  function initCollectionAccordion(){
928
- $(".collapse").collapse({parent: "#accordion_for_collections"})
687
+ $(".collapse").collapse({parent: "#accordion_for_collections"});
929
688
  $(".accordion-heading a").click(function(e){
930
689
  var target = $(this);
931
690
  var accordionContent = $(target.attr('href'));
@@ -934,7 +693,7 @@ function initCollectionAccordion(){
934
693
 
935
694
  if(accordionContentInner.attr("content-loaded") == "false"){
936
695
  accordionContentInner.prepend("<img src='/assets/gb_spinner.gif' class='gb_spinner'/>");
937
- $.get("/admin/browser-collection/"+collectionID+".json", function(data){
696
+ $.get("/admin/browser-collection/"+collectionID+".json?open_link=true", function(data){
938
697
  $(".gb_spinner").remove();
939
698
  accordionContentInner.prepend(data['markup']);
940
699
  });
@@ -942,3 +701,489 @@ function initCollectionAccordion(){
942
701
  }
943
702
  });
944
703
  }
704
+
705
+
706
+
707
+ /* Redactor wysiwyg Setup and its plugins */
708
+ var linkCount = 0;
709
+ function enableRedactor(selector, _linkCount) {
710
+ $(document).ready(function() {
711
+ linkCount = _linkCount;
712
+ $(selector).redactor({
713
+ linkEmail: true,
714
+ linkAnchor: true,
715
+ minHeight: 200,
716
+ autoresize: false,
717
+ buttons: ['formatting', '|', 'bold',
718
+ 'italic', 'underline', '|', 'alignment', '|',
719
+ 'unorderedlist', 'orderedlist',
720
+ 'outdent', 'indent', '|', 'video',
721
+ 'table', '|', 'html', '|', 'fullscreen'
722
+ ],
723
+ plugins: ['asset_library_image', 'gluttonberg_embeds', 'gluttonberg_pages', 'fullscreen'],
724
+ keyupCallback : function(){
725
+ WarnNavigateAway.changeEventHandler();
726
+ AutoSave.changeEventHandler();
727
+ }
728
+ });
729
+
730
+ });
731
+ }
732
+
733
+
734
+
735
+ /* Setup Slug management */
736
+ function initBetterSlugManagement() {
737
+ var str = $('#page_slug_holder .domain').html();
738
+ var pt = $('#page_title');
739
+ var pb = $('#page_slug .edit');
740
+ var ps = $('#page_slug span');
741
+ var hs = $('#page_hidden_slug');
742
+ var regex = /[\!\*'"″′‟‛„‚”“”˝\(\);:.@&=+$,\/?%#\[\]]/gim;
743
+ var doNotEdit = ps.attr('donotedit');
744
+ var editPage = false;
745
+ var slugLength = 0;
746
+ var slug = "";
747
+ var currentSlug = "";
748
+
749
+ if (typeof doNotEdit == 'string') {
750
+ doNotEdit = true;
751
+ editPage = true;
752
+ } else {
753
+ doNotEdit = false;
754
+ }
755
+
756
+ if(pt.length > 0 && ps.length > 0 && hs.length > 0 ){
757
+
758
+ $('#page_slug_holder .domain').html($.trim(str));
759
+
760
+ pt.keyup(function(){
761
+ if (!doNotEdit) {
762
+ slug = pt.val().toLowerCase().replace(/\s/gim, '-').replace(regex, '');
763
+ ps.html(slug);
764
+ hs.val(slug);
765
+ }
766
+ });
767
+
768
+ pb.click(function(){
769
+ hs.show();
770
+ ps.hide();
771
+ pb.hide();
772
+ hs.focus();
773
+ doNotEdit = true;
774
+ slugLength = hs.val().length;
775
+ currentSlug = hs.val();
776
+ });
777
+
778
+ hs.focusout(function(){
779
+ var len = hs.val().length;
780
+ if (doNotEdit) {
781
+ if (len == 0) {
782
+ hs.hide();
783
+ ps.show();
784
+ pb.show();
785
+ if (!editPage) {
786
+ doNotEdit = false;
787
+ slug = pt.val().toLowerCase().replace(/\s/gim, '_').replace(regex, '');
788
+ ps.html(slug);
789
+ hs.val(slug);
790
+ } else {
791
+ hs.val(currentSlug);
792
+ }
793
+ } else {
794
+ hs.hide();
795
+ ps.show();
796
+ pb.show();
797
+ ps.html(hs.val().toLowerCase().replace(/\s/gim, '_').replace(regex, ''));
798
+ doNotEdit = true;
799
+ }
800
+ }
801
+ });
802
+ }
803
+
804
+ }
805
+
806
+
807
+ // This method initialize slug related event on a title text box.
808
+ function initSlugManagement() {
809
+ try {
810
+ var pt = $('#page_title');
811
+ var ps = $('#page_slug');
812
+ var donotmodify = (ps.attr('donotmodify') == 'true') || ps.val().length > 1;
813
+
814
+ if(pt.length > 0 && ps.length > 0 ){
815
+ var regex = /[\!\*'"″′‟‛„‚”“”˝\(\);:.@&=+$,\/?%#\[\]]/gim;
816
+ var pt_function = function() {
817
+ if (!donotmodify)
818
+ ps.val(pt.val().toLowerCase().replace(/\s/gim, '-').replace(regex, ''));
819
+ };
820
+
821
+ pt.bind("keyup", pt_function);
822
+ pt.bind("blur", pt_function);
823
+
824
+ ps.bind("blur", function() {
825
+ ps.val(ps.val().toLowerCase().replace(/\s/gim, '-').replace(regex, ''));
826
+ ps.attr('donotmodify', 'true');
827
+ });
828
+ }
829
+ } catch(e) {}
830
+ }
831
+
832
+ function enable_slug_management_on(src_class){
833
+ $("."+src_class).attr('id','page_title');
834
+ }
835
+ /*
836
+ Nestable is used for reordering pages.
837
+ */
838
+
839
+ function initNestable(){
840
+ window.nestableSerializedDataOnPageLoad = [];
841
+ $(".collapse_all").click(function(e){
842
+ $.get("/admin/pages/collapse_all", function( data ) {
843
+ });
844
+ $('.dd').nestable('collapseAll');
845
+ e.preventDefault();
846
+ });
847
+
848
+ $(".expand_all").click(function(e){
849
+ $.get("/admin/pages/expand_all", function( data ) {});
850
+ $('.dd').nestable('expandAll');
851
+ e.preventDefault();
852
+ });
853
+
854
+ $('.dd.dd-sortable').each(function(){
855
+ var $list = $(this);
856
+ var $saveButton = $($list.attr('data-saveButton'));
857
+ $saveButton.attr('disabled', 'disabled');
858
+ $listNestable = $list.nestable({
859
+ /* config options */
860
+ maxDepth: 10
861
+ }).on("change", function(){
862
+ if(doesListReallyChanged($list) ){
863
+ enableButton($saveButton);
864
+ }
865
+ });
866
+
867
+ $saveButton.click(function(e){
868
+ if(blank($saveButton.attr('disabled'))){
869
+ saveNestableData($list, $saveButton);
870
+ }
871
+ e.preventDefault();
872
+ });
873
+
874
+ updateCurrentState($list);
875
+
876
+ $(".nestable_dragtree button[data-action='collapse']").click(function(e){
877
+ var pageID = $(this).parents(".dd-item").attr('data-id');
878
+ $.get( "/admin/pages/"+pageID+"/collapse", function( data ) {
879
+
880
+ });
881
+ });
882
+
883
+ $(".nestable_dragtree button[data-action='expand']").click(function(e){
884
+ var pageID = $(this).parents(".dd-item").attr('data-id');
885
+ $.get( "/admin/pages/"+pageID+"/expand", function( data ) {
886
+
887
+ });
888
+ });
889
+ });
890
+
891
+ function saveNestableData(list, saveButton){
892
+ updateCurrentState(list);
893
+ var url = list.attr('data-url');
894
+ if (window.JSON) {
895
+ var data = window.JSON.stringify(list.nestable('serialize'));
896
+ $.ajax({
897
+ type: "POST",
898
+ url: url,
899
+ data: "nestable_serialized_data=" + data,
900
+ beforeSend: function(jqXHR, settings){
901
+ showOverlay();
902
+ },
903
+ success: function(html){
904
+ window.setTimeout(function(){
905
+ hideOverlay();
906
+ },500);
907
+ if(!blank(saveButton)){
908
+ disableButton(saveButton);
909
+ }
910
+ },
911
+ error: function(html){
912
+ $("#assetsDialogOverlay").html(html.responseText);
913
+ window.setTimeout(function(){
914
+ hideOverlay();
915
+ },10000);
916
+ }
917
+ });
918
+ } else {
919
+ console.log('JSON browser support required for this demo.');
920
+ }
921
+ }
922
+
923
+ function enableButton(saveButton){
924
+ WarnNavigateAway.changeEventHandler();
925
+ saveButton.removeAttr('disabled');
926
+ saveButton.addClass('btn-primary');
927
+ }
928
+
929
+ function disableButton(saveButton){
930
+ WarnNavigateAway.removeEventHandler();
931
+ saveButton.attr('disabled', 'disabled');
932
+ saveButton.removeClass('btn-primary');
933
+ }
934
+
935
+ function updateCurrentState(list){
936
+ window.nestableSerializedDataOnPageLoad[list.attr('data-id')] = list.nestable('serialize');
937
+ }
938
+
939
+ function doesListReallyChanged(list){
940
+ var change = JSON.stringify(window.nestableSerializedDataOnPageLoad[list.attr('data-id')]) != JSON.stringify(list.nestable('serialize'));
941
+ return change;
942
+ }
943
+ }
944
+
945
+ var WarnNavigateAway = {
946
+ init: function(){
947
+ $('input:not(:button,:submit),textarea,select').each(function(){
948
+ $(this).change(WarnNavigateAway.changeEventHandler);
949
+ $(this).keydown(WarnNavigateAway.changeEventHandler);
950
+ });
951
+
952
+ $('form').submit(WarnNavigateAway.removeEventHandler);
953
+ },
954
+
955
+ changeEventHandler : function(e){
956
+ if(!editingInProgress){
957
+ setNavigationAwayConfirm();
958
+ }
959
+ editingInProgress = true;
960
+ function setNavigationAwayConfirm(){
961
+ window.onbeforeunload = function() {
962
+ AutoSave.save_now();
963
+ return "Any changes to this page will not be saved.";
964
+ };
965
+ }
966
+ },
967
+ removeEventHandler : function(){
968
+ editingInProgress = false;
969
+ window.onbeforeunload = function() { };
970
+ }
971
+ };
972
+
973
+
974
+ function initGalleryImageRepeater(){
975
+ var containerselector = ".form_field_wrapper[data-field='gallery_images'] ul:first";
976
+ var rowSelector = "li.row-fluid.gallery_image_repeater_form";
977
+ $(".add_gallery_image").click(function(e){
978
+ HtmlFormRepeater.add(containerselector, rowSelector, this, function(newElement){
979
+ initClickEventsForAssetLinks(newElement);
980
+ newElement.find(".remove").click();
981
+ initHiddenFieldListner(newElement);
982
+ });
983
+ e.preventDefault();
984
+ });
985
+
986
+ HtmlFormRepeater.initRemoveButton(containerselector, rowSelector);
987
+ HtmlFormRepeater.initSorter(containerselector, rowSelector);
988
+
989
+ initHiddenFieldListner($("body"));
990
+ function initHiddenFieldListner(container){
991
+ container.find(".choose_asset_hidden_field").on('selected', function(event, title, credits){
992
+ var formRow = $(this).parents("li.gallery_image_repeater_form");
993
+ if(!blank(title) && blank(formRow.find(".caption-field").val())){
994
+ formRow.find(".caption-field").val(title);
995
+ }
996
+ if(!blank(credits) && blank(formRow.find(".credits-field").val())){
997
+ formRow.find(".credits-field").val(credits);
998
+ }
999
+ });
1000
+ }
1001
+ }
1002
+
1003
+ /* If user modifies something in forms Autosave sends an ajax call to server and save form json dump */
1004
+ var AutoSave = {
1005
+ init : function(class_name){
1006
+ $(".retreive_changes").click(AutoSave.retrieve);
1007
+ $(".cancel_changes").click(AutoSave.destroy);
1008
+ $('input:not(:button,:submit),textarea,select').each(function(){
1009
+ $(this).change(AutoSave.changeEventHandler);
1010
+ $(this).keydown(AutoSave.changeEventHandler);
1011
+ });
1012
+ },
1013
+ changeEventHandler: function(e){
1014
+ changedSinceLastAutoSave = true;
1015
+ },
1016
+ save_now: function(successCallback){
1017
+ var version = getParameterByName(window.location, 'version');
1018
+
1019
+ if(!blank(version) || changedSinceLastAutoSave){
1020
+ var form = AutoSave.formObj;
1021
+ if(form == undefined){
1022
+ form = $("form.auto_save");
1023
+ }
1024
+ if(form != null && form.length > 0 ){
1025
+ $.ajax({
1026
+ url: AutoSave.autosave_url+(blank(version) ? '' : '?version='+version),
1027
+ data: form.serialize(),
1028
+ type: "POST",
1029
+ success: function(data) {
1030
+
1031
+ },
1032
+ complete: function(){
1033
+ if(successCallback != undefined){
1034
+ successCallback();
1035
+ }
1036
+ }
1037
+ });
1038
+ }
1039
+ }else{
1040
+ if(successCallback != undefined){
1041
+ successCallback();
1042
+ }
1043
+ }
1044
+ },
1045
+ save : function(autosave_url, delay , form){
1046
+ AutoSave.autosave_url = autosave_url;
1047
+ AutoSave.delay = delay;
1048
+ AutoSave.formObj = form;
1049
+ setTimeout(function(){
1050
+ if(changedSinceLastAutoSave){
1051
+ if(form == undefined){
1052
+ form = $("form.auto_save");
1053
+ }
1054
+ if(form != null && form.length > 0 ){
1055
+ $.ajax({
1056
+ url: autosave_url,
1057
+ data: form.serialize(),
1058
+ type: "POST",
1059
+ success: function(data) {
1060
+ changedSinceLastAutoSave = false;
1061
+ },
1062
+ complete: function(){
1063
+ AutoSave.save(autosave_url,delay , form);
1064
+ }
1065
+ });
1066
+ }
1067
+ }else{
1068
+ AutoSave.save(autosave_url,delay , form);
1069
+ }
1070
+ },delay * 1000);
1071
+ },
1072
+ retrieve : function(e){
1073
+ var self = $(this);
1074
+ $.getJSON(self.attr("href"), function(data) {
1075
+ updateForm(data, self.attr("data-param-name"));
1076
+ });
1077
+
1078
+ function updateForm(data, prefix){
1079
+
1080
+ function getAssetDetails(val, element){
1081
+ $.getJSON("/admin/assets/"+val+".json", function(data){
1082
+ data = data["asset"];
1083
+ if (element.parents(".asset_selector_wrapper").find("img").length > 0) {
1084
+ element.parents(".asset_selector_wrapper").find("img").attr('src', data["small_thumb"]);
1085
+ } else {
1086
+ element.parents(".asset_selector_wrapper").prepend("<img src='" + data["small_thumb"] + "' />");
1087
+ }
1088
+ element.parents(".caption").find("h5").html(data["name"]);
1089
+ });
1090
+ }
1091
+
1092
+ for(index in data){
1093
+ var val = data[index];
1094
+ var name = prefix + "["+ index +"]";
1095
+ if((typeof val) == "object"){
1096
+ if(val instanceof Array){
1097
+ var element = $("[name='"+name+"']");
1098
+ if(element.length == 0){
1099
+ element = $("[name='"+name+"[]']");
1100
+ }
1101
+ if(element.length >= 1 && element.is("select")){
1102
+ element.find("option").prop("selected", false);
1103
+ for(option in val){
1104
+ element.find("option[value='"+val[option]+"']").prop("selected", true);
1105
+ }
1106
+ }
1107
+
1108
+ }else{
1109
+ updateForm(val, name);
1110
+ }
1111
+ }else{
1112
+ var element = $("[name='"+name+"']");
1113
+ if(element.length >= 1){
1114
+ if(element.hasClass("jwysiwyg")){
1115
+ element.redactor('set', val);
1116
+ }else if(element.attr("type") == "file"){
1117
+ // ignore
1118
+ }else if(element.attr("type") == "password"){
1119
+ // ignore
1120
+ }else if(element.attr("type") == "checkbox"){
1121
+ element.attr("checked", "checked");
1122
+ }else if(element.attr("type") == "radio"){
1123
+ // ignore
1124
+ }else if(element.is(".choose_asset_hidden_field")){
1125
+ element.val(val);
1126
+ if(!blank(val)){
1127
+ getAssetDetails(val, element);
1128
+
1129
+ }else{
1130
+ //delete
1131
+ }
1132
+
1133
+ }else{
1134
+ element.val(val);
1135
+ }
1136
+ }
1137
+ }
1138
+ }
1139
+ }//updateForm
1140
+
1141
+ e.preventDefault();
1142
+ },
1143
+ destroy: function(e){
1144
+ $.getJSON($(this).attr("href"), function(data) {
1145
+ $(".restore-auto-save").hide();
1146
+ });
1147
+ e.preventDefault();
1148
+ }
1149
+ };
1150
+
1151
+
1152
+ function initPublishingButton(){
1153
+ $(".publishing_btn").click(function(e){
1154
+ var id = $(this).attr('id');
1155
+ if(id == "draft_btn" || id == "unpublish_btn"){
1156
+ $("._publish_state").val("draft");
1157
+ } else if(id == "publish_btn" || id == "update_btn"){
1158
+ $("._publish_state").val("published");
1159
+ } else if(id == "approval_btn"){
1160
+ $("._publish_status").val("submitted_for_approval");
1161
+ } else if(id == "revision_btn"){
1162
+ $("._publish_status").val("revision");
1163
+ }
1164
+ });
1165
+ }
1166
+
1167
+ function initPreview(){
1168
+ $(".preview-page").click(function(e){
1169
+ var $this = $(this);
1170
+ var url = $this.attr('data-url');
1171
+ AutoSave.save_now(function(){
1172
+ window.open(url);
1173
+ });
1174
+ e.preventDefault();
1175
+ })
1176
+ }
1177
+
1178
+
1179
+ function shortcodeNameValidation() {
1180
+ var regex = /[\!\*'"″′‟‛„‚”“”˝\(\);:.@&=+$,\/?%#\[\]]/gim;
1181
+ var field = $("#gluttonberg_embed_shortcode");
1182
+
1183
+ field.bind("blur", function() {
1184
+ field.val(field.val().toLowerCase().replace(/\s/gim, '-').replace(regex, ''));
1185
+ });
1186
+ field.bind("keyup", function() {
1187
+ field.val(field.val().toLowerCase().replace(/\s/gim, '-').replace(regex, ''));
1188
+ });
1189
+ }