pages_core 3.4.3 → 3.5.1

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 (215) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +81 -15
  3. data/Rakefile +1 -1
  4. data/app/assets/javascripts/pages/admin.es6.jsx +19 -0
  5. data/app/assets/javascripts/pages/admin/components.es6.jsx +1 -0
  6. data/app/assets/javascripts/pages/admin/components/page_tree.es6.jsx +330 -0
  7. data/app/assets/javascripts/pages/admin/components/page_tree_actions.es6.jsx +8 -0
  8. data/app/assets/javascripts/pages/admin/components/page_tree_node.es6.jsx +374 -0
  9. data/app/assets/javascripts/pages/admin/components/page_tree_store.es6.jsx +161 -0
  10. data/app/assets/javascripts/pages/admin/features/content_tabs.es6.jsx +63 -0
  11. data/app/assets/javascripts/pages/admin/features/edit_page.es6.jsx +141 -0
  12. data/app/assets/javascripts/pages/admin/features/editable_image.es6.jsx +145 -0
  13. data/app/assets/javascripts/pages/admin/features/modal.es6.jsx +90 -0
  14. data/app/assets/javascripts/pages/admin/features/page_images.es6.jsx +338 -0
  15. data/app/assets/javascripts/pages/admin/features/rich_text.es6.jsx +124 -0
  16. data/app/assets/javascripts/pages/admin/features/tag_editor.es6.jsx +160 -0
  17. data/app/assets/javascripts/pages/admin/lib/ajax_extensions.es6.jsx +21 -0
  18. data/app/assets/javascripts/pages/admin/lib/center_on_screen.es6.jsx +22 -0
  19. data/app/assets/javascripts/pages/admin/lib/tree.es6.jsx +294 -0
  20. data/app/assets/javascripts/pages/login_form.es6.jsx +21 -0
  21. data/app/assets/stylesheets/pages/admin.scss +148 -0
  22. data/app/assets/stylesheets/pages/admin/components/buttons.scss +5 -0
  23. data/app/assets/stylesheets/pages/admin/{editable_image.css.erb → components/editable_image.scss} +7 -8
  24. data/app/assets/stylesheets/pages/admin/components/forms.scss +71 -0
  25. data/app/assets/stylesheets/pages/admin/components/header.scss +169 -0
  26. data/app/assets/stylesheets/pages/admin/{images.css.scss.erb → components/images.scss} +6 -11
  27. data/app/assets/stylesheets/pages/admin/components/layout.scss +44 -0
  28. data/app/assets/stylesheets/pages/admin/components/links.scss +43 -0
  29. data/app/assets/stylesheets/pages/admin/components/list_table.scss +58 -0
  30. data/app/assets/stylesheets/pages/admin/{login.css.scss.erb → components/login.scss} +1 -1
  31. data/app/assets/stylesheets/pages/admin/{modal.css.erb → components/modal.scss} +3 -2
  32. data/app/assets/stylesheets/pages/admin/components/page_tree.scss +173 -0
  33. data/app/assets/stylesheets/pages/admin/{pagination.css.scss → components/pagination.scss} +13 -4
  34. data/app/assets/stylesheets/pages/admin/components/sidebar.scss +25 -0
  35. data/app/assets/stylesheets/pages/admin/{tag_editor.css.scss.erb → components/tag_editor.scss} +6 -0
  36. data/app/assets/stylesheets/pages/admin/components/textarea.scss +76 -0
  37. data/app/assets/stylesheets/pages/admin/controllers/pages.scss +196 -0
  38. data/app/assets/stylesheets/pages/admin/controllers/{users.css.erb → users.scss} +0 -0
  39. data/app/assets/stylesheets/pages/admin/mixins/breakpoints.scss +21 -0
  40. data/app/assets/stylesheets/pages/admin/mixins/clearfix.scss +7 -0
  41. data/app/assets/stylesheets/pages/admin/mixins/gradients.scss +7 -0
  42. data/app/assets/stylesheets/pages/admin/{print.css.erb → print.scss} +0 -0
  43. data/app/assets/stylesheets/pages/admin/vars.scss +8 -0
  44. data/app/controllers/admin/invites_controller.rb +10 -6
  45. data/app/controllers/admin/page_files_controller.rb +6 -8
  46. data/app/controllers/admin/page_images_controller.rb +14 -19
  47. data/app/controllers/admin/pages_controller.rb +44 -97
  48. data/app/controllers/admin/password_resets_controller.rb +7 -2
  49. data/app/controllers/concerns/pages_core/add_comments_controller.rb +67 -0
  50. data/app/controllers/concerns/pages_core/admin/news_page_controller.rb +58 -0
  51. data/app/controllers/concerns/pages_core/authentication.rb +1 -1
  52. data/app/controllers/concerns/pages_core/exception_handler.rb +44 -21
  53. data/app/controllers/concerns/pages_core/policies_helper.rb +10 -6
  54. data/app/controllers/concerns/pages_core/preview_pages_controller.rb +43 -0
  55. data/app/controllers/concerns/pages_core/process_titler.rb +2 -2
  56. data/app/controllers/concerns/pages_core/rss_controller.rb +25 -0
  57. data/app/controllers/concerns/pages_core/search_pages_controller.rb +40 -0
  58. data/app/controllers/errors_controller.rb +14 -2
  59. data/app/controllers/pages_core/admin_controller.rb +7 -5
  60. data/app/controllers/pages_core/frontend/page_files_controller.rb +5 -7
  61. data/app/controllers/pages_core/frontend/pages_controller.rb +41 -219
  62. data/app/controllers/pages_core/frontend_controller.rb +8 -2
  63. data/app/controllers/pages_core/sitemaps_controller.rb +5 -4
  64. data/app/formatters/pages_core/html_formatter.rb +33 -23
  65. data/app/helpers/admin/menu_helper.rb +12 -9
  66. data/app/helpers/admin/pages_helper.rb +40 -28
  67. data/app/helpers/pages_core/admin/admin_helper.rb +58 -56
  68. data/app/helpers/pages_core/admin/labelled_field_helper.rb +6 -7
  69. data/app/helpers/pages_core/admin/tag_editor_helper.rb +11 -9
  70. data/app/helpers/pages_core/application_helper.rb +13 -26
  71. data/app/helpers/pages_core/form_builder.rb +71 -134
  72. data/app/helpers/pages_core/head_tags_helper.rb +26 -168
  73. data/app/helpers/pages_core/images_helper.rb +3 -3
  74. data/app/helpers/pages_core/meta_tags_helper.rb +96 -0
  75. data/app/helpers/pages_core/open_graph_tags_helper.rb +51 -0
  76. data/app/helpers/pages_core/page_path_helper.rb +40 -0
  77. data/app/mailers/admin_mailer.rb +14 -14
  78. data/app/models/autopublisher.rb +2 -2
  79. data/app/models/category.rb +8 -8
  80. data/app/models/concerns/pages_core/has_roles.rb +2 -2
  81. data/app/models/concerns/pages_core/humanizable_param.rb +5 -5
  82. data/app/models/concerns/pages_core/page_model/autopublishable.rb +25 -0
  83. data/app/models/concerns/pages_core/page_model/commentable.rb +29 -0
  84. data/app/models/concerns/pages_core/page_model/images.rb +50 -0
  85. data/app/models/concerns/pages_core/page_model/localizable.rb +29 -0
  86. data/app/models/concerns/pages_core/page_model/pathable.rb +115 -0
  87. data/app/models/concerns/pages_core/page_model/redirectable.rb +36 -0
  88. data/app/models/concerns/pages_core/page_model/searchable.rb +41 -0
  89. data/app/models/concerns/pages_core/page_model/sortable.rb +54 -0
  90. data/app/models/concerns/pages_core/page_model/status.rb +50 -0
  91. data/app/models/concerns/pages_core/page_model/templateable.rb +82 -0
  92. data/app/models/concerns/pages_core/page_model/tree.rb +108 -0
  93. data/app/models/page.rb +30 -212
  94. data/app/models/page_builder.rb +4 -6
  95. data/app/models/page_category.rb +7 -0
  96. data/app/models/page_comment.rb +1 -1
  97. data/app/models/page_file.rb +4 -6
  98. data/app/models/page_image.rb +6 -7
  99. data/app/models/page_path.rb +46 -0
  100. data/app/models/password_reset_token.rb +5 -5
  101. data/app/models/role.rb +1 -1
  102. data/app/models/tag.rb +14 -16
  103. data/app/models/tagging.rb +2 -1
  104. data/app/models/user.rb +6 -7
  105. data/app/policies/page_policy.rb +8 -4
  106. data/app/policies/user_policy.rb +1 -1
  107. data/app/serializers/page_tree_serializer.rb +15 -0
  108. data/app/views/admin/invites/new.html.erb +2 -1
  109. data/app/views/admin/invites/show.html.erb +3 -4
  110. data/app/views/admin/pages/_edit_comments.html.erb +22 -6
  111. data/app/views/admin/pages/_edit_content.html.erb +4 -2
  112. data/app/views/admin/pages/_edit_images.html.erb +86 -75
  113. data/app/views/admin/pages/_edit_metadata.html.erb +22 -0
  114. data/app/views/admin/pages/_edit_options.html.erb +23 -15
  115. data/app/views/admin/pages/_pagelisting.html.erb +6 -6
  116. data/app/views/admin/pages/edit.html.erb +11 -6
  117. data/app/views/admin/pages/index.html.erb +12 -53
  118. data/app/views/admin/pages/new.html.erb +3 -3
  119. data/app/views/admin/pages/news.html.erb +1 -1
  120. data/app/views/admin_mailer/invite.text.erb +1 -1
  121. data/app/views/admin_mailer/password_reset.text.erb +1 -1
  122. data/app/views/errors/422.html.erb +7 -0
  123. data/app/views/errors/500_critical.html.erb +1 -1
  124. data/app/views/layouts/admin.html.erb +36 -32
  125. data/app/views/layouts/admin/_header.html.erb +2 -2
  126. data/config/locales/en.yml +38 -1
  127. data/config/routes.rb +40 -23
  128. data/db/migrate/20111219033112_create_pages_tables.rb +25 -29
  129. data/db/migrate/20121010055412_drop_removed_tables.rb +3 -3
  130. data/db/migrate/20130823133208_update_page_redirect_to.rb +0 -13
  131. data/db/migrate/20140203183900_create_roles.rb +5 -2
  132. data/db/migrate/20140920231700_convert_images_to_dis.rb +4 -2
  133. data/db/migrate/20150401131300_localize_images.rb +7 -8
  134. data/db/migrate/20151002174800_create_page_paths.rb +10 -0
  135. data/db/migrate/20151021103400_drop_binaries_table.rb +7 -0
  136. data/db/migrate/20151204151000_remove_page_content_order.rb +5 -0
  137. data/db/migrate/20160330220900_rename_pages_categories.rb +6 -0
  138. data/db/migrate/20160405202700_change_localization_limit.rb +9 -0
  139. data/lib/pages_core.rb +22 -27
  140. data/lib/pages_core/admin_menu_item.rb +16 -3
  141. data/lib/pages_core/archive_finder.rb +40 -13
  142. data/lib/pages_core/cache_sweeper.rb +72 -45
  143. data/lib/pages_core/configuration.rb +2 -2
  144. data/lib/pages_core/configuration/base.rb +4 -8
  145. data/lib/pages_core/configuration/pages.rb +6 -3
  146. data/lib/pages_core/engine.rb +23 -1
  147. data/lib/pages_core/extensions.rb +2 -2
  148. data/lib/pages_core/file_embedder.rb +40 -0
  149. data/lib/pages_core/page_path_constraint.rb +23 -0
  150. data/lib/pages_core/pages_plugin.rb +11 -0
  151. data/lib/pages_core/paginates.rb +3 -3
  152. data/lib/pages_core/plugin.rb +14 -8
  153. data/lib/pages_core/templates.rb +6 -6
  154. data/lib/pages_core/templates/block_configuration.rb +1 -1
  155. data/lib/pages_core/templates/configuration.rb +23 -24
  156. data/lib/pages_core/templates/configuration_handler.rb +1 -1
  157. data/lib/pages_core/templates/configuration_proxy.rb +7 -11
  158. data/lib/pages_core/templates/template_configuration.rb +55 -61
  159. data/lib/pages_core/version.rb +1 -1
  160. data/lib/rails/generators/pages_core/install/install_generator.rb +22 -48
  161. data/lib/rails/generators/pages_core/install/templates/page_templates_initializer.rb +1 -1
  162. data/lib/rails/generators/pages_core/install/templates/pages_initializer.rb +6 -3
  163. data/lib/rails/generators/pages_core/rspec/rspec_generator.rb +4 -1
  164. data/lib/rails/generators/pages_core/rspec/templates/factories.rb +1 -1
  165. data/lib/tasks/pages.rake +4 -4
  166. data/lib/tasks/pages/page_paths.rake +12 -0
  167. data/template.rb +2 -2
  168. data/vendor/assets/javascripts/reflux.min.js +1 -0
  169. metadata +173 -85
  170. data/app/assets/images/pages/admin/description-bg.gif +0 -0
  171. data/app/assets/images/pages/admin/drag-handle.gif +0 -0
  172. data/app/assets/images/pages/admin/flash-error-bg.gif +0 -0
  173. data/app/assets/images/pages/admin/formelement-bg.gif +0 -0
  174. data/app/assets/images/pages/admin/header-tab-current-bg.gif +0 -0
  175. data/app/assets/images/pages/admin/list-table-td-bg.gif +0 -0
  176. data/app/assets/images/pages/admin/sidebar-bg.gif +0 -0
  177. data/app/assets/images/pages/admin/textarea_controls.gif +0 -0
  178. data/app/assets/javascripts/pages/admin.js.coffee +0 -54
  179. data/app/assets/javascripts/pages/admin/controllers/base.js.coffee +0 -4
  180. data/app/assets/javascripts/pages/admin/controllers/pages_controller.js.coffee +0 -139
  181. data/app/assets/javascripts/pages/admin/controllers/users_controller.js.coffee +0 -9
  182. data/app/assets/javascripts/pages/admin/features/content_tabs.js.coffee +0 -47
  183. data/app/assets/javascripts/pages/admin/features/editable_image.js.coffee.erb +0 -122
  184. data/app/assets/javascripts/pages/admin/features/modal.js.coffee +0 -66
  185. data/app/assets/javascripts/pages/admin/features/page_images.js +0 -329
  186. data/app/assets/javascripts/pages/admin/features/rich_text.js.coffee +0 -40
  187. data/app/assets/javascripts/pages/admin/features/tag_editor.js +0 -159
  188. data/app/assets/javascripts/pages/admin/lib/ajax_extensions.js.coffee +0 -17
  189. data/app/assets/javascripts/pages/admin/lib/center_on_screen.js.coffee +0 -21
  190. data/app/assets/javascripts/pages/admin/lib/jrichtextarea.js +0 -57
  191. data/app/assets/javascripts/pages/login_form.js.coffee +0 -17
  192. data/app/assets/stylesheets/pages/admin.css.erb +0 -404
  193. data/app/assets/stylesheets/pages/admin/buttons.css.erb +0 -5
  194. data/app/assets/stylesheets/pages/admin/controllers/artists.css.erb +0 -94
  195. data/app/assets/stylesheets/pages/admin/controllers/files.css.erb +0 -58
  196. data/app/assets/stylesheets/pages/admin/controllers/pages.css.scss.erb +0 -178
  197. data/app/assets/stylesheets/pages/admin/forms.css.scss.erb +0 -73
  198. data/app/assets/stylesheets/pages/admin/header.css.erb +0 -129
  199. data/app/assets/stylesheets/pages/admin/links.css.erb +0 -34
  200. data/app/assets/stylesheets/pages/admin/list_table.css.erb +0 -56
  201. data/app/assets/stylesheets/pages/admin/sidebar.css.erb +0 -39
  202. data/app/assets/stylesheets/pages/admin/sortable_images.css.erb +0 -18
  203. data/app/assets/stylesheets/pages/admin/textarea.css.erb +0 -55
  204. data/app/models/concerns/pages_core/page_tree.rb +0 -85
  205. data/app/models/concerns/pages_core/searchable_page.rb +0 -33
  206. data/app/models/concerns/pages_core/templateable.rb +0 -85
  207. data/app/models/localization.rb +0 -27
  208. data/db/migrate/20140515130100_remove_sphinx_deltas.rb +0 -15
  209. data/lib/pages_core/localizable.rb +0 -49
  210. data/lib/pages_core/localizable/active_record_extension.rb +0 -41
  211. data/lib/pages_core/localizable/class_methods.rb +0 -51
  212. data/lib/pages_core/localizable/configuration.rb +0 -50
  213. data/lib/pages_core/localizable/instance_methods.rb +0 -130
  214. data/lib/pages_core/localizable/localizer.rb +0 -72
  215. data/lib/pages_core/localizable/scope_extension.rb +0 -22
@@ -1,54 +0,0 @@
1
- # Gem assets
2
- #= require jquery
3
- #= require jquery_ujs
4
- #= require jquery.ui.all
5
- #= require jquery.cookie
6
- #= require jquery.Jcrop
7
- #= require underscore
8
-
9
- # Vendored assets
10
- #= require jquery.dimscreen
11
- #= require jquery.fieldselection
12
-
13
- #= require_self
14
- #= require pages/login_form
15
- #= require pages/admin/controllers/base
16
- #= require pages/admin/controllers/pages_controller
17
- #= require pages/admin/controllers/users_controller
18
- #= require pages/admin/features/content_tabs
19
- #= require pages/admin/features/editable_image
20
- #= require pages/admin/features/modal
21
- #= require pages/admin/features/page_images
22
- #= require pages/admin/features/rich_text
23
- #= require pages/admin/features/tag_editor
24
- #= require pages/admin/lib/ajax_extensions
25
- #= require pages/admin/lib/center_on_screen
26
- #= require pages/admin/lib/jrichtextarea
27
-
28
- window.Admin =
29
- Controllers: {}
30
-
31
- locale: ->
32
- $('body').data('locale')
33
-
34
- controllerName: ->
35
- $('body').data('controller').replace(/^Admin::/, '')
36
-
37
- actionName: ->
38
- $('body').data('action')
39
-
40
- getController: ->
41
- if @Controllers.hasOwnProperty(@controllerName())
42
- new @Controllers[@controllerName()]()
43
-
44
- init: ->
45
- if controller = @getController()
46
- controller.dispatch @actionName()
47
-
48
-
49
- $ ->
50
- # Detect the sidebar and add the appropriate class to the document element.
51
- if $("#sidebar").length > 0
52
- $(document.body).addClass "with_sidebar"
53
-
54
- Admin.init()
@@ -1,4 +0,0 @@
1
- class Admin.Controllers.Base
2
- dispatch: (action) ->
3
- if @[action]
4
- @[action]()
@@ -1,139 +0,0 @@
1
- class Admin.Controllers.PagesController extends Admin.Controllers.Base
2
-
3
- index: ->
4
- $("#reorder_link").click ->
5
- link = this
6
- list = $(".pagelist").get(0)
7
- if $(list).hasClass("reorder")
8
- $(link).html "Reorder pages"
9
- $(list).removeClass "reorder"
10
- else
11
- $(link).html "Done reordering"
12
- $(list).addClass "reorder"
13
-
14
- $("ul.reorderable").each ->
15
- list = this
16
- $(list).sortable
17
- axis: "y"
18
- cursor: "move"
19
- distance: 10
20
- handle: ".drag_handle"
21
- update: (event, ui) ->
22
- new_order = []
23
- parent_page_id = $(list).attr("parent_page_id")
24
- $(list).children("li").each ->
25
- new_order.push $(this).attr("page_id")
26
-
27
- reorder_url = "/admin/" + Admin.locale() + "/pages/reorder_pages"
28
- $.get reorder_url,
29
- ids: new_order
30
- , (data) ->
31
- $(list).effect "highlight", {}, 1500
32
-
33
- # Hover actions on .page .actions
34
- $(".page").hover (->
35
- $(this).addClass "hover"
36
- $(this).children(".actions").css "visibility", "visible"
37
- ), ->
38
- $(this).removeClass "hover"
39
- $(this).children(".actions").css "visibility", "hidden"
40
-
41
- $(".page .actions").css "visibility", "hidden"
42
-
43
- # Toggling of the new category input
44
- $("toggle-category").click ->
45
- $("#new-category").toggle()
46
- $("#new-category-button").toggle()
47
-
48
- $("#new-category").hide()
49
-
50
- new: ->
51
- @edit()
52
-
53
- new_news: ->
54
- @edit()
55
-
56
- show: ->
57
- @edit()
58
-
59
- edit: ->
60
- $(".advanced_options").hide()
61
- $(".advanced_toggle").click ->
62
- $(".advanced_options").slideToggle()
63
-
64
- checkStatus = ->
65
- pageStatus = $("#page-form-sidebar #page_status").val()
66
- if pageStatus == "2"
67
- $("#page-form-sidebar .published_date").fadeIn()
68
- else
69
- $("#page-form-sidebar .published_date").hide()
70
-
71
- $("#page-form-sidebar #page_status").change checkStatus
72
- checkStatus()
73
- $(".autopublish_notice").hide()
74
-
75
- checkDate = ->
76
- year = $("#page-form-sidebar select[name=\"page[published_at(1i)]\"]").val()
77
- month = $("#page-form-sidebar select[name=\"page[published_at(2i)]\"]").val()
78
- day = $("#page-form-sidebar select[name=\"page[published_at(3i)]\"]").val()
79
- hour = $("#page-form-sidebar select[name=\"page[published_at(4i)]\"]").val()
80
- minute = $("#page-form-sidebar select[name=\"page[published_at(5i)]\"]").val()
81
- publishDate = new Date(year, (month - 1), day, hour, minute)
82
- now = new Date()
83
- if publishDate > now
84
- $(".autopublish_notice").fadeIn()
85
- else
86
- $(".autopublish_notice").fadeOut()
87
-
88
- $(".published_date").find("select").change checkDate
89
- checkDate()
90
-
91
- replicateFormElement = ->
92
- newValue = this
93
- $("#page-form").find("[name=\"" + newValue.name + "\"]").each ->
94
- if newValue.type is "checkbox"
95
- $(this).prop "checked", $(newValue).prop("checked")
96
- else
97
- $(this).val $(newValue).val()
98
-
99
- $("#page-form-sidebar").find("input,textarea,select").change replicateFormElement
100
- $("#new-image").hide()
101
-
102
- $(".upload-images-button").click ->
103
- Modal.show "<div class=\"uploadImages\">" + $("#new-image").html() + "</div>"
104
-
105
- $(".upload-file-button").click ->
106
- Modal.show "<div class=\"uploadImages\">" + $("#new-file").html() + "</div>"
107
-
108
- # Reordering files
109
- $(".filelist").each ->
110
- list = this
111
- $(list).sortable
112
- axis: "y"
113
- cursor: "move"
114
- distance: 10
115
- handle: ".drag_handle"
116
- placeholder: "placeholder"
117
- update: (event, ui) ->
118
- $.post $(list).data('url'),
119
- ids: ($(item).data('file-id') for item in $(list).find('li').get())
120
- , (response) ->
121
- $(list).effect "highlight", {}, 500
122
-
123
- # Previewing
124
- $("#previewButton").click ->
125
- button = this
126
- form = $(button).closest("form").get(0)
127
- previewUrl = $(this).data('url')
128
-
129
- # Rewrite the form and submit
130
- form.oldAction = form.action
131
- form.target = "_blank"
132
- form.action = previewUrl
133
- $(form).submit()
134
-
135
- # Undo rewrite
136
- form.action = form.oldAction
137
- form.target = ""
138
-
139
- $("#new-file").hide()
@@ -1,9 +0,0 @@
1
- class Admin.Controllers.UsersController extends Admin.Controllers.Base
2
-
3
- # New action
4
- new: ->
5
- controller = this
6
-
7
- # Edit action
8
- edit: ->
9
- controller = this
@@ -1,47 +0,0 @@
1
- ContentTabs =
2
- tabs: []
3
- ids: []
4
-
5
- show: (tab_id) ->
6
- tabs = ContentTabs.tabs
7
- tab = tabs[tab_id]
8
- if tab
9
- $.each ContentTabs.ids, (i) ->
10
- $(tabs[this]).hide() if tabs[this]
11
- $("#content-tab-link-" + this).removeClass "current"
12
- $(tab).show()
13
- $("#content-tab-link-" + tab_id).addClass "current"
14
-
15
- showFromURL: (url) ->
16
- tab_expression = /#(.*)$/
17
- if url.toString().match(tab_expression)
18
- tab_id = url.toString().match(tab_expression)[1]
19
- ContentTabs.show tab_id if ContentTabs.tabs[tab_id]
20
-
21
- enable: (tab_ids) ->
22
- tabs = ContentTabs.tabs
23
- ContentTabs.ids = tab_ids
24
- $.each tab_ids, (i) ->
25
- tab_id = this
26
- $("#content-tab-" + this).each (i) ->
27
- @tab_id = tab_id
28
- tabs[tab_id] = this
29
-
30
- ContentTabs.show tab_ids[0]
31
- ContentTabs.showFromURL document.location
32
-
33
- init: ->
34
- if $("#content-tabs").length > 0
35
- tabNames = $("#content-tabs li").map(->
36
- $(this).data "tab-name"
37
- ).get()
38
- ContentTabs.enable tabNames
39
- $("#content-tabs a").each ->
40
- $(this).click ->
41
- ContentTabs.showFromURL @href
42
- false
43
-
44
- window.showContentTab = ContentTabs.show
45
-
46
- $ ->
47
- ContentTabs.init()
@@ -1,122 +0,0 @@
1
- EditableImage = (link, options) ->
2
-
3
- # Default options
4
- settings = $.extend(
5
- resourceURL: link.href
6
- width: 800
7
- , options)
8
-
9
- @editableImage =
10
- settings: settings
11
- link: link
12
- linkedImage: $(link).children("img")[0]
13
- resourceURL: settings.resourceURL
14
- editorDialog: false
15
- imageData: false
16
- previewURL: false
17
- cropStartX: false
18
- cropStartY: false
19
- cropWidth: false
20
- cropHeight: false
21
-
22
- getScale: ->
23
- @settings.width / @imageData.real_width
24
-
25
- openEditor: ->
26
- # Dim the screen and create the loading dialog
27
- $.dimScreen 200, 0.90
28
-
29
- $("body").append("<div id=\"modalLoadingNotice\"><img src=\"<%= image_path('pages/admin/loading-modal.gif') %>\" /> Loading image editor&hellip;</div>")
30
- $("#modalLoadingNotice").centerOnScreen().hide().fadeIn 200
31
-
32
- # Create the container
33
- $("#editableImageEditor").remove()
34
- $("body").append "<div id=\"editableImageEditor\" class=\"modalWindow\"></div>"
35
-
36
- # Load data
37
- binding = this
38
- unless @imageData
39
- $.getJSON @resourceURL + ".js", (json) ->
40
- binding.imageData = json
41
- binding.populateEditor()
42
-
43
- else
44
- @populateEditor()
45
-
46
- populateEditor: ->
47
- $("#editableImageEditor")
48
- .empty()
49
- .append("<img id=\"editableImageEditorImage\" />")
50
- .append("<div id=\"editableImageEditorControls\" class=\"controls\" />")
51
- .hide()
52
-
53
- $("#editableImageEditorControls")
54
- .append("<input type=\"button\" id=\"editableImageEditorSubmit\" value=\"Save\" />")
55
- .append "<input type=\"button\" id=\"editableImageEditorClose\" value=\"Cancel\" />"
56
-
57
- @previewURL = $(link).data('preview-url')
58
- binding = this
59
-
60
- $("#editableImageEditorImage").each ->
61
- @src = binding.previewURL
62
-
63
- $("#editableImageEditorSubmit").click ->
64
- binding.submit()
65
-
66
- $("#editableImageEditorClose").click ->
67
- binding.closeEditor()
68
-
69
- onCrop = (coords) ->
70
- binding.cropStartX = coords.x
71
- binding.cropStartY = coords.y
72
- binding.cropWidth = coords.w
73
- binding.cropHeight = coords.h
74
-
75
- $("#editableImageEditorImage").load ->
76
- $("#modalLoadingNotice").fadeOut 100
77
- $("#editableImageEditor").show().centerOnScreen()
78
- jCropOptions =
79
- onChange: onCrop
80
- onSelect: onCrop
81
-
82
- imageData = binding.imageData
83
- crop_start_x = Math.round(imageData.crop_start_x * binding.getScale())
84
- crop_start_y = Math.round(imageData.crop_start_y * binding.getScale())
85
-
86
- if imageData.crop_width && imageData.crop_height
87
- crop_end_x = crop_start_x + Math.round(imageData.crop_width * binding.getScale())
88
- crop_end_y = crop_start_y + Math.round(imageData.crop_height * binding.getScale())
89
- else
90
- crop_end_x = Math.round(imageData.real_width * binding.getScale())
91
- crop_end_y = Math.round(imageData.real_height * binding.getScale())
92
-
93
- jCropOptions["setSelect"] = [crop_start_x, crop_start_y, crop_end_x, crop_end_y]
94
-
95
- $("#editableImageEditorImage").Jcrop jCropOptions
96
-
97
-
98
- closeEditor: ->
99
- $("#modalLoadingNotice").remove()
100
- $("#editableImageEditor").remove()
101
- @imageData = false
102
- $.dimScreenStop()
103
-
104
- submit: ->
105
- put_options =
106
- "image[crop_start_x]": Math.floor(@cropStartX / @getScale())
107
- "image[crop_start_y]": Math.floor(@cropStartY / @getScale())
108
- "image[crop_width]": Math.floor(@cropWidth / @getScale())
109
- "image[crop_height]": Math.floor(@cropHeight / @getScale())
110
- binding = this
111
- $.put @resourceURL + ".json", put_options, (json) ->
112
- binding.closeEditor()
113
-
114
-
115
-
116
- # Apply onClick behaviour
117
- link.editableImage = @editableImage
118
- $(link).click ->
119
- @editableImage.openEditor()
120
- false
121
-
122
- $ -> $("a.editableImage").each -> new EditableImage(this)
@@ -1,66 +0,0 @@
1
- window.Modal =
2
- container: false
3
-
4
- makeContainer: ->
5
- modal = this
6
- unless @container
7
- $(document.body).append "<div id=\"modal_container\"/>"
8
- @container = $("#modal_container").get(0)
9
- $(@container).hide()
10
- $(window).scroll ->
11
- modal.position()
12
- $(window).resize ->
13
- modal.position()
14
-
15
- clear: ->
16
- $(@container).fadeOut 150, ->
17
- $(this).html()
18
- $("#modalOverlay").fadeOut 50
19
-
20
- draw: (options) ->
21
- modal = this
22
- @makeContainer()
23
- $(@container).show()
24
- $(@container).html "<div class=\"container\">" + options.text + "</div>"
25
- @position()
26
- $(document.body).append "<div id=\"modalOverlay\"/>"
27
- $("#modalOverlay").show().click(->
28
- Modal.clear()
29
- ).css(
30
- position: "absolute"
31
- top: 0
32
- left: 0
33
- width: $(document).width() + "px"
34
- height: $(document).height() + "px"
35
- "z-index": 19
36
- "background-color": "#000000"
37
- opacity: 0
38
- ).animate
39
- opacity: 0.6
40
- , 100
41
- $(@container).find(".clear-modal").click ->
42
- Modal.clear()
43
-
44
- position: ->
45
- width = $(@container).width()
46
- height = $(@container).height()
47
- scrollTop = $(window).scrollTop()
48
- viewportWidth = (if window.innerWidth then window.innerWidth else $(window).width())
49
- viewportHeight = (if window.innerHeight then window.innerHeight else $(window).height())
50
- left = Math.round(viewportWidth / 2) - (width / 2)
51
- top = (Math.round(viewportHeight / 2) - (height / 2)) + scrollTop
52
- top = 5 if top < 5
53
- left = 5 if left < 5
54
- $("#modalOverlay").css
55
- top: 0
56
- left: 0
57
- width: $(document).width() + "px"
58
- height: $(document).height() + "px"
59
-
60
- $(@container).css("left", left).css "top", top
61
-
62
- alert: (string) ->
63
- @draw text: string
64
-
65
- show: (string) ->
66
- @draw text: string