gluttonberg-core 2.6.4 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
+ }