pageflow 0.9.2 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of pageflow might be problematic. Click here for more details.

Files changed (263) hide show
  1. checksums.yaml +5 -13
  2. data/CHANGELOG.md +193 -11
  3. data/README.md +9 -1
  4. data/Rakefile +5 -0
  5. data/admins/pageflow/accounts.rb +2 -1
  6. data/admins/pageflow/entry.rb +21 -1
  7. data/admins/pageflow/revisions.rb +1 -1
  8. data/app/assets/fonts/pageflow/entypo-license.txt +358 -0
  9. data/app/assets/fonts/pageflow/fontawesome-license.txt +1 -0
  10. data/app/assets/fonts/pageflow/sourcesanspro-bold-webfont.eot +0 -0
  11. data/app/assets/fonts/pageflow/sourcesanspro-bold-webfont.svg +1236 -194
  12. data/app/assets/fonts/pageflow/sourcesanspro-bold-webfont.ttf +0 -0
  13. data/app/assets/fonts/pageflow/sourcesanspro-bold-webfont.woff +0 -0
  14. data/app/assets/fonts/pageflow/sourcesanspro-license.txt +93 -0
  15. data/app/assets/fonts/pageflow/sourcesanspro-light-webfont.eot +0 -0
  16. data/app/assets/fonts/pageflow/sourcesanspro-light-webfont.svg +1153 -839
  17. data/app/assets/fonts/pageflow/sourcesanspro-light-webfont.ttf +0 -0
  18. data/app/assets/fonts/pageflow/sourcesanspro-light-webfont.woff +0 -0
  19. data/app/assets/fonts/pageflow/sourcesanspro-regular-webfont.eot +0 -0
  20. data/app/assets/fonts/pageflow/sourcesanspro-regular-webfont.svg +1252 -199
  21. data/app/assets/fonts/pageflow/sourcesanspro-regular-webfont.ttf +0 -0
  22. data/app/assets/fonts/pageflow/sourcesanspro-regular-webfont.woff +0 -0
  23. data/app/assets/javascripts/pageflow/base.js +2 -0
  24. data/app/assets/javascripts/pageflow/browser/agent.js +25 -0
  25. data/app/assets/javascripts/pageflow/browser/css_animations.js +18 -0
  26. data/app/assets/javascripts/pageflow/browser/mobile_platform.js +1 -4
  27. data/app/assets/javascripts/pageflow/browser/video.js +8 -1
  28. data/app/assets/javascripts/pageflow/chapter_filter.js +6 -16
  29. data/app/assets/javascripts/pageflow/editor/api.js +6 -2
  30. data/app/assets/javascripts/pageflow/editor/api/page_type.js +12 -0
  31. data/app/assets/javascripts/pageflow/editor/base.js +4 -0
  32. data/app/assets/javascripts/pageflow/editor/collections/chapter_pages_collection.js +4 -1
  33. data/app/assets/javascripts/pageflow/editor/collections/chapters_collection.js +1 -5
  34. data/app/assets/javascripts/pageflow/editor/collections/mixins/add_and_return_model.js +11 -0
  35. data/app/assets/javascripts/pageflow/editor/collections/mixins/ordered_collection.js +6 -4
  36. data/app/assets/javascripts/pageflow/editor/collections/ordered_page_links_collection.js +9 -0
  37. data/app/assets/javascripts/pageflow/editor/collections/page_links_collection.js +78 -0
  38. data/app/assets/javascripts/pageflow/editor/collections/pages_collection.js +9 -3
  39. data/app/assets/javascripts/pageflow/editor/collections/storyline_chapters_collection.js +35 -0
  40. data/app/assets/javascripts/pageflow/editor/collections/storylines_collection.js +33 -0
  41. data/app/assets/javascripts/pageflow/editor/controllers/sidebar_controller.js +19 -2
  42. data/app/assets/javascripts/pageflow/editor/initializers/edit_lock.js +1 -1
  43. data/app/assets/javascripts/pageflow/editor/initializers/setup_collections.js +11 -0
  44. data/app/assets/javascripts/pageflow/editor/initializers/setup_common_seed.js +3 -0
  45. data/app/assets/javascripts/pageflow/editor/initializers/stylesheet_reloading.js +11 -0
  46. data/app/assets/javascripts/pageflow/editor/models/chapter.js +14 -7
  47. data/app/assets/javascripts/pageflow/editor/models/chapter_scaffold.js +13 -0
  48. data/app/assets/javascripts/pageflow/editor/models/edit_lock_container.js +4 -4
  49. data/app/assets/javascripts/pageflow/editor/models/entry.js +33 -4
  50. data/app/assets/javascripts/pageflow/editor/models/mixins/persited_promise.js +18 -0
  51. data/app/assets/javascripts/pageflow/editor/models/page.js +4 -0
  52. data/app/assets/javascripts/pageflow/editor/models/page_link.js +37 -0
  53. data/app/assets/javascripts/pageflow/editor/models/page_link_file_selection_handler.js +14 -0
  54. data/app/assets/javascripts/pageflow/editor/models/preview_entry_data.js +15 -0
  55. data/app/assets/javascripts/pageflow/editor/models/scaffold.js +26 -0
  56. data/app/assets/javascripts/pageflow/editor/models/storyline.js +99 -0
  57. data/app/assets/javascripts/pageflow/editor/models/storyline_configuration.js +15 -0
  58. data/app/assets/javascripts/pageflow/editor/models/storyline_ordering.js +117 -0
  59. data/app/assets/javascripts/pageflow/editor/models/storyline_scaffold.js +23 -0
  60. data/app/assets/javascripts/pageflow/editor/models/storyline_transitive_child_pages.js +33 -0
  61. data/app/assets/javascripts/pageflow/editor/routers/sidebar_router.js +3 -0
  62. data/app/assets/javascripts/pageflow/editor/templates/edit_entry.jst.ejs +1 -6
  63. data/app/assets/javascripts/pageflow/editor/templates/edit_page_link.jst.ejs +3 -0
  64. data/app/assets/javascripts/pageflow/editor/templates/edit_storyline.jst.ejs +12 -0
  65. data/app/assets/javascripts/pageflow/editor/templates/page_link_item.jst.ejs +1 -0
  66. data/app/assets/javascripts/pageflow/editor/templates/page_selection.jst.ejs +2 -2
  67. data/app/assets/javascripts/pageflow/editor/templates/storyline_outline.jst.ejs +4 -0
  68. data/app/assets/javascripts/pageflow/editor/templates/storyline_picker.jst.ejs +7 -0
  69. data/app/assets/javascripts/pageflow/editor/utils/reload_stylesheet.js +9 -0
  70. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/groups/options.js +2 -2
  71. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/groups/page_link.js +10 -0
  72. data/app/assets/javascripts/pageflow/editor/views/edit_chapter_view.js +0 -4
  73. data/app/assets/javascripts/pageflow/editor/views/edit_entry_view.js +9 -15
  74. data/app/assets/javascripts/pageflow/editor/views/edit_meta_data_view.js +14 -6
  75. data/app/assets/javascripts/pageflow/editor/views/edit_page_link_view.js +47 -0
  76. data/app/assets/javascripts/pageflow/editor/views/edit_storyline_view.js +97 -0
  77. data/app/assets/javascripts/pageflow/editor/views/editor_view.js +6 -3
  78. data/app/assets/javascripts/pageflow/editor/views/entry_preview_view.js +13 -7
  79. data/app/assets/javascripts/pageflow/editor/views/file_item_view.js +1 -1
  80. data/app/assets/javascripts/pageflow/editor/views/inputs/page_link_input_view.js +3 -1
  81. data/app/assets/javascripts/pageflow/editor/views/locked_view.js +3 -3
  82. data/app/assets/javascripts/pageflow/editor/views/mixins/loadable.js +1 -1
  83. data/app/assets/javascripts/pageflow/editor/views/page_item_view.js +2 -0
  84. data/app/assets/javascripts/pageflow/editor/views/page_link_configuration_editor_view.js +7 -0
  85. data/app/assets/javascripts/pageflow/editor/views/page_link_item_view.js +8 -1
  86. data/app/assets/javascripts/pageflow/editor/views/page_preview_view.js +1 -1
  87. data/app/assets/javascripts/pageflow/editor/views/page_selection_view.js +13 -12
  88. data/app/assets/javascripts/pageflow/editor/views/storyline_outline_view.js +33 -0
  89. data/app/assets/javascripts/pageflow/editor/views/storyline_picker_view.js +114 -0
  90. data/app/assets/javascripts/pageflow/entry_data.js +38 -4
  91. data/app/assets/javascripts/pageflow/highlighted_page.js +5 -5
  92. data/app/assets/javascripts/pageflow/history.js +1 -1
  93. data/app/assets/javascripts/pageflow/native_scrolling.js +14 -0
  94. data/app/assets/javascripts/pageflow/page_transitions.js +3 -1
  95. data/app/assets/javascripts/pageflow/page_type.js +2 -0
  96. data/app/assets/javascripts/pageflow/ready.js +4 -1
  97. data/app/assets/javascripts/pageflow/seed_entry_data.js +28 -1
  98. data/app/assets/javascripts/pageflow/slideshow.js +11 -8
  99. data/app/assets/javascripts/pageflow/slideshow/dom_order_scroll_navigator.js +93 -8
  100. data/app/assets/javascripts/pageflow/slideshow/hidden_text_indicator_widget.js +5 -3
  101. data/app/assets/javascripts/pageflow/slideshow/lazy_page_widget.js +4 -0
  102. data/app/assets/javascripts/pageflow/slideshow/page_widget.js +15 -6
  103. data/app/assets/javascripts/pageflow/ui/templates/tooltip.jst.ejs +2 -0
  104. data/app/assets/javascripts/pageflow/ui/views/inputs/text_area_input_view.js +17 -4
  105. data/app/assets/javascripts/pageflow/ui/views/mixins/tooltip_container.js +42 -0
  106. data/app/assets/javascripts/pageflow/ui/views/tooltip_view.js +49 -0
  107. data/app/assets/javascripts/pageflow/video_player.js +2 -2
  108. data/app/assets/javascripts/pageflow/video_player/{filter_for_silk.js → filter_sources.js} +2 -2
  109. data/app/assets/javascripts/pageflow/widgets/navigation.js +17 -14
  110. data/app/assets/javascripts/pageflow/widgets/navigation_mobile.js +7 -2
  111. data/app/assets/javascripts/pageflow/widgets/overview.js +9 -6
  112. data/app/assets/javascripts/pageflow/widgets/page_navigation_list.js +51 -13
  113. data/app/assets/javascripts/pageflow/widgets/page_navigation_list_animation.js +48 -0
  114. data/app/assets/javascripts/pageflow/widgets/parent_page_button.js +9 -2
  115. data/app/assets/stylesheets/pageflow/admin.css.scss +2 -15
  116. data/app/assets/stylesheets/pageflow/admin/features.scss +5 -0
  117. data/app/assets/stylesheets/pageflow/admin/forms.scss +18 -0
  118. data/app/assets/stylesheets/pageflow/animations.css.scss +1 -0
  119. data/app/assets/stylesheets/pageflow/animations/navigation_bar.scss +89 -0
  120. data/app/assets/stylesheets/pageflow/delayed_text_fade_in.css.scss +1 -1
  121. data/app/assets/stylesheets/pageflow/editor/base.css.scss +5 -0
  122. data/app/assets/stylesheets/pageflow/editor/menu.css.scss +1 -0
  123. data/app/assets/stylesheets/pageflow/editor/outline.css.scss +5 -0
  124. data/app/assets/stylesheets/pageflow/editor/page_links.css.scss +9 -1
  125. data/app/assets/stylesheets/pageflow/editor/page_selection.css.scss +7 -1
  126. data/app/assets/stylesheets/pageflow/editor/storyline_picker.css.scss +32 -0
  127. data/app/assets/stylesheets/pageflow/extendables.scss +26 -0
  128. data/app/assets/stylesheets/pageflow/mixins/pageflow.css.scss +25 -0
  129. data/app/assets/stylesheets/pageflow/navigation_bar.css.scss +64 -4
  130. data/app/assets/stylesheets/pageflow/navigation_mobile.css.scss +56 -0
  131. data/app/assets/stylesheets/pageflow/page_transitions.css.scss +4 -1
  132. data/app/assets/stylesheets/pageflow/page_transitions/scroll_over_from_left.scss +12 -0
  133. data/app/assets/stylesheets/pageflow/page_transitions/scroll_over_from_right.scss +12 -0
  134. data/app/assets/stylesheets/pageflow/page_types/video.css.scss +5 -1
  135. data/app/assets/stylesheets/pageflow/themes/default/page.css.scss +180 -42
  136. data/app/assets/stylesheets/pageflow/ui.css.scss +1 -0
  137. data/app/assets/stylesheets/pageflow/ui/forms.css.scss +11 -2
  138. data/app/assets/stylesheets/pageflow/ui/input/extended_select_input.css.scss +1 -0
  139. data/app/assets/stylesheets/pageflow/ui/tabs_view.css.scss +0 -3
  140. data/app/assets/stylesheets/pageflow/ui/tooltip.scss +57 -0
  141. data/app/controllers/concerns/pageflow/entry_password_protection.rb +13 -0
  142. data/app/controllers/pageflow/chapters_controller.rb +24 -9
  143. data/app/controllers/pageflow/edit_locks_controller.rb +2 -2
  144. data/app/controllers/pageflow/editor/files_controller.rb +0 -2
  145. data/app/controllers/pageflow/editor/widgets_controller.rb +1 -1
  146. data/app/controllers/pageflow/entries_controller.rb +5 -9
  147. data/app/controllers/pageflow/files_controller.rb +3 -0
  148. data/app/controllers/pageflow/storylines_controller.rb +69 -0
  149. data/app/helpers/pageflow/admin/features_helper.rb +17 -6
  150. data/app/helpers/pageflow/admin/widgets_helper.rb +18 -0
  151. data/app/helpers/pageflow/audio_files_helper.rb +2 -2
  152. data/app/helpers/pageflow/common_entry_seed_helper.rb +52 -0
  153. data/app/helpers/pageflow/entries_helper.rb +7 -1
  154. data/app/helpers/pageflow/entry_json_seed_helper.rb +27 -10
  155. data/app/helpers/pageflow/meta_tags_helper.rb +11 -0
  156. data/app/helpers/pageflow/page_types_helper.rb +9 -5
  157. data/app/helpers/pageflow/pages_helper.rb +9 -96
  158. data/app/helpers/pageflow/public_i18n_helper.rb +13 -0
  159. data/app/helpers/pageflow/social_share_helper.rb +1 -1
  160. data/app/helpers/pageflow/video_files_helper.rb +133 -0
  161. data/app/helpers/pageflow/widgets_helper.rb +3 -9
  162. data/app/models/concerns/pageflow/feature_target.rb +21 -3
  163. data/app/models/concerns/pageflow/hosted_file.rb +4 -0
  164. data/app/models/pageflow/account.rb +2 -2
  165. data/app/models/pageflow/chapter.rb +4 -4
  166. data/app/models/pageflow/chapter_scaffold.rb +33 -0
  167. data/app/models/pageflow/cname_theming_request_scope.rb +7 -1
  168. data/app/models/pageflow/draft_entry.rb +13 -2
  169. data/app/models/pageflow/edit_lock.rb +2 -2
  170. data/app/models/pageflow/entry.rb +3 -2
  171. data/app/models/pageflow/image_file.rb +6 -0
  172. data/app/models/pageflow/published_entry.rb +13 -2
  173. data/app/models/pageflow/revision.rb +17 -4
  174. data/app/models/pageflow/storyline.rb +23 -0
  175. data/app/models/pageflow/storyline_scaffold.rb +27 -0
  176. data/app/models/pageflow/theming.rb +4 -0
  177. data/app/models/pageflow/widget.rb +16 -12
  178. data/app/views/admin/accounts/_form.html.erb +8 -12
  179. data/app/views/admin/accounts/_widgets_inline_help.html.erb +5 -0
  180. data/app/views/layouts/pageflow/application.html.erb +4 -1
  181. data/app/views/pageflow/admin/widgets/_fields.html.erb +9 -0
  182. data/app/views/pageflow/config/_editor_seeds.json.jbuilder +1 -1
  183. data/app/views/pageflow/editor/entries/_entry.json.jbuilder +2 -2
  184. data/app/views/pageflow/editor/entries/_other_entry.json.jbuilder +1 -0
  185. data/app/views/pageflow/editor/entries/index.json.jbuilder +1 -1
  186. data/app/views/pageflow/editor/entries/seed.json.erb +4 -1
  187. data/app/views/pageflow/editor/files/_file.json.jbuilder +4 -0
  188. data/app/views/pageflow/editor/themings/_theming.json.jbuilder +1 -0
  189. data/app/views/pageflow/entries/_entry.html.erb +2 -2
  190. data/app/views/pageflow/entries/_ie8_hint.html.erb +2 -2
  191. data/app/views/pageflow/entries/_indicators.html.erb +3 -3
  192. data/app/views/pageflow/entries/_mobile_navigation.html.erb +6 -5
  193. data/app/views/pageflow/entries/_multimedia_alert.html.erb +6 -6
  194. data/app/views/pageflow/entries/_non_js_hint.html.erb +1 -1
  195. data/app/views/pageflow/entries/_skip_links.html.erb +3 -3
  196. data/app/views/pageflow/entries/edit.html.erb +4 -2
  197. data/app/views/pageflow/entries/navigation/_bar_bottom.html.erb +6 -5
  198. data/app/views/pageflow/entries/navigation/_bar_top.html.erb +13 -13
  199. data/app/views/pageflow/entries/navigation/_home_button.html.erb +2 -2
  200. data/app/views/pageflow/entries/navigation/_page.html.erb +1 -1
  201. data/app/views/pageflow/entries/overview/_chapter.html.erb +1 -1
  202. data/app/views/pageflow/entries/overview/_entry.html.erb +7 -6
  203. data/app/views/pageflow/entries/share_menu/_facebook_link.html.erb +1 -1
  204. data/app/views/pageflow/entries/share_menu/_google_link.html.erb +1 -1
  205. data/app/views/pageflow/entries/share_menu/_twitter_link.html.erb +1 -1
  206. data/app/views/pageflow/entries/show.html.erb +4 -1
  207. data/app/views/pageflow/file_types/_thumbnails.css.erb +2 -0
  208. data/app/views/pageflow/meta_tags/_entry.html.erb +4 -0
  209. data/app/views/pageflow/pages/_page.html.erb +2 -2
  210. data/app/views/pageflow/pages/templates/_audio.html.erb +2 -2
  211. data/app/views/pageflow/pages/templates/_audio_loop.html.erb +1 -1
  212. data/app/views/pageflow/pages/templates/_background_video.html.erb +8 -3
  213. data/app/views/pageflow/pages/templates/_video.html.erb +9 -4
  214. data/app/views/pageflow/public_i18n/_javascript_tag.html.erb +5 -0
  215. data/app/views/pageflow/social_share/_entry_meta_tags.html.erb +1 -1
  216. data/app/views/pageflow/video_files/_script_tag.html.erb +3 -0
  217. data/app/views/pageflow/video_files/_video_file.html.erb +4 -1
  218. data/app/views/pageflow/video_files/_video_tag.html.erb +7 -0
  219. data/config/initializers/admin_resource_tabs.rb +1 -0
  220. data/config/initializers/features.rb +3 -1
  221. data/config/initializers/paperclip.rb +5 -0
  222. data/config/locales/de.yml +205 -601
  223. data/config/locales/en.yml +198 -405
  224. data/config/routes.rb +10 -2
  225. data/db/migrate/20150826125417_create_pageflow_storylines.rb +12 -0
  226. data/db/migrate/20150826125744_add_storyline_id_to_chapters.rb +6 -0
  227. data/db/migrate/20150826125745_insert_main_storylines.rb +28 -0
  228. data/db/migrate/20150830105831_remove_revision_id_from_chapters.rb +5 -0
  229. data/db/migrate/20150830110006_remove_entry_id_from_chapters.rb +5 -0
  230. data/db/migrate/20160201130118_add_additional_cnames_to_themings.rb +5 -0
  231. data/db/migrate/20160216130336_add_meta_fields_to_revision.rb +7 -0
  232. data/lib/generators/pageflow/initializer/templates/pageflow.rb +7 -0
  233. data/lib/pageflow/ability_mixin.rb +7 -1
  234. data/lib/pageflow/configuration.rb +27 -2
  235. data/lib/pageflow/engine.rb +4 -1
  236. data/lib/pageflow/features.rb +24 -0
  237. data/lib/pageflow/global_config_api.rb +1 -0
  238. data/lib/pageflow/seeds.rb +4 -2
  239. data/lib/pageflow/theme.rb +4 -0
  240. data/lib/pageflow/version.rb +1 -1
  241. data/spec/factories/chapters.rb +6 -3
  242. data/spec/factories/storylines.rb +13 -0
  243. metadata +1021 -928
  244. data/app/assets/fonts/pageflow/FranklinGothic-Demi-webfont.eot +0 -0
  245. data/app/assets/fonts/pageflow/FranklinGothic-Demi-webfont.svg +0 -768
  246. data/app/assets/fonts/pageflow/FranklinGothic-Demi-webfont.ttf +0 -0
  247. data/app/assets/fonts/pageflow/FranklinGothic-Demi-webfont.woff +0 -0
  248. data/app/assets/fonts/pageflow/FranklinGothic-Hvy-webfont.eot +0 -0
  249. data/app/assets/fonts/pageflow/FranklinGothic-Hvy-webfont.svg +0 -968
  250. data/app/assets/fonts/pageflow/FranklinGothic-Hvy-webfont.ttf +0 -0
  251. data/app/assets/fonts/pageflow/FranklinGothic-Hvy-webfont.woff +0 -0
  252. data/app/assets/fonts/pageflow/thesansboldplain.eot +0 -0
  253. data/app/assets/fonts/pageflow/thesansboldplain.svg +0 -228
  254. data/app/assets/fonts/pageflow/thesansboldplain.ttf +0 -0
  255. data/app/assets/fonts/pageflow/thesansboldplain.woff +0 -0
  256. data/app/assets/fonts/pageflow/thesanssemiboldplain.eot +0 -0
  257. data/app/assets/fonts/pageflow/thesanssemiboldplain.svg +0 -228
  258. data/app/assets/fonts/pageflow/thesanssemiboldplain.ttf +0 -0
  259. data/app/assets/fonts/pageflow/thesanssemiboldplain.woff +0 -0
  260. data/app/assets/javascripts/pageflow/browser/hashchange_support.js +0 -8
  261. data/app/assets/javascripts/pageflow/widgets/button.js +0 -22
  262. data/app/views/layouts/pageflow/_meta_tags.html.erb +0 -5
  263. data/app/views/pageflow/pages/_video_tag.html.erb +0 -13
@@ -0,0 +1,97 @@
1
+ pageflow.EditStorylineView = Backbone.Marionette.Layout.extend({
2
+ template: 'templates/edit_storyline',
3
+ className: 'edit_storyline',
4
+
5
+ mixins: [pageflow.failureIndicatingView, pageflow.tooltipContainer],
6
+
7
+ regions: {
8
+ formContainer: '.form_container'
9
+ },
10
+
11
+ ui: {
12
+ destroyButton: 'a.destroy'
13
+ },
14
+
15
+ events: {
16
+ 'click a.back': 'goBack',
17
+ 'click a.destroy': 'destroy'
18
+ },
19
+
20
+ onRender: function() {
21
+ var configurationEditor = new pageflow.ConfigurationEditorView({
22
+ model: this.model.configuration,
23
+ attributeTranslationKeyPrefixes: ['pageflow.storyline_attributes']
24
+ });
25
+
26
+ this.configure(configurationEditor, this.model.transitiveChildPages());
27
+ this.formContainer.show(configurationEditor);
28
+
29
+ this.updateDestroyButton();
30
+ },
31
+
32
+ updateDestroyButton: function() {
33
+ var disabled = (this.model.chapters.length > 0);
34
+
35
+ this.ui.destroyButton.toggleClass('faded', disabled);
36
+
37
+ if (disabled) {
38
+ this.ui.destroyButton.attr('data-tooltip', 'pageflow.editor.views.edit_storyline_view.cannot_destroy');
39
+ }
40
+ else {
41
+ this.ui.destroyButton.removeAttr('data-tooltip');
42
+ }
43
+ },
44
+
45
+ configure: function(configurationEditor, storylineChildPages) {
46
+ configurationEditor.tab('general', function() {
47
+ this.input('title', pageflow.TextInputView);
48
+ this.input('main', pageflow.CheckBoxInputView, {
49
+ disabled: true,
50
+ visibleBinding: 'main'
51
+ });
52
+ this.input('page_transition', pageflow.SelectInputView, {
53
+ translationKeyPrefix: 'pageflow.page_transitions',
54
+ includeBlank: true,
55
+ blankTranslationKey: 'pageflow.editor.views.edit_storyline_view.default_parent_page_transition',
56
+ values: pageflow.pageTransitions.names()
57
+ });
58
+ this.input('main', pageflow.CheckBoxInputView, {
59
+ visibleBinding: 'main',
60
+ visible: function(isMain) {
61
+ return !isMain;
62
+ }
63
+ });
64
+ this.input('parent_page_perma_id', pageflow.PageLinkInputView, {
65
+ visibleBinding: 'main',
66
+ visible: function(isMain) {
67
+ return !isMain && pageflow.storylines.length > 1;
68
+ },
69
+ isAllowed: function(page) {
70
+ return !storylineChildPages.contain(page);
71
+ }
72
+ });
73
+ this.input('scroll_successor_id', pageflow.PageLinkInputView);
74
+
75
+ if (pageflow.features.isEnabled('chapter_hierachy')) {
76
+ this.input('navigation_bar_mode', pageflow.SelectInputView, {
77
+ values: pageflow.ChapterFilter.strategies
78
+ });
79
+ }
80
+ });
81
+ },
82
+
83
+ destroy: function() {
84
+ if (this.model.chapters.length) {
85
+ return;
86
+ }
87
+
88
+ if (confirm(I18n.t('pageflow.editor.views.edit_storyline_view.confirm_destroy'))) {
89
+ this.model.destroy();
90
+ this.goBack();
91
+ }
92
+ },
93
+
94
+ goBack: function() {
95
+ editor.navigate('/?storyline=' + this.model.id, {trigger: true});
96
+ }
97
+ });
@@ -2,9 +2,9 @@ pageflow.EditorView = Backbone.View.extend({
2
2
  events: {
3
3
  'click a': function(event) {
4
4
  // prevent default for all links
5
- if (!$(event.target).attr('target') &&
6
- !$(event.target).attr('download') &&
7
- !$(event.target).attr('href')) {
5
+ if (!$(event.currentTarget).attr('target') &&
6
+ !$(event.currentTarget).attr('download') &&
7
+ !$(event.currentTarget).attr('href')) {
8
8
  return false;
9
9
  }
10
10
  }
@@ -24,6 +24,9 @@ pageflow.EditorView = Backbone.View.extend({
24
24
  togglerTip_closed: I18n.t('pageflow.editor.views.editor_views.show_editor'),
25
25
  togglerTip_open: I18n.t('pageflow.editor.views.editor_views.hide_editor'),
26
26
  resizerTip: I18n.t('pageflow.editor.views.editor_views.resize_editor'),
27
+ enableCursorHotkey: false,
28
+ fxName: 'none',
29
+
27
30
  onresize: function() {
28
31
  pageflow.app.trigger('resize');
29
32
  }
@@ -3,13 +3,14 @@ pageflow.EntryPreviewView = Backbone.Marionette.ItemView.extend({
3
3
  className: 'container',
4
4
 
5
5
  ui: {
6
- header: '.header',
7
- entry: '.entry',
8
- overview: '.overview'
6
+ header: '> .header',
7
+ entry: '> .entry',
8
+ overview: '> .overview'
9
9
  },
10
10
 
11
11
  initialize: function() {
12
12
  this.widgets = $();
13
+ this.debouncedFetchWidgets = _.debounce(this.fetchWidgets, 200);
13
14
  },
14
15
 
15
16
  onRender: function() {
@@ -29,6 +30,7 @@ pageflow.EntryPreviewView = Backbone.Marionette.ItemView.extend({
29
30
  pageflow.entry.once('sync', this.update, this);
30
31
  });
31
32
 
33
+ this.listenTo(pageflow.storylines, 'sync', this.update);
32
34
  this.listenTo(pageflow.chapters, 'sync', this.update);
33
35
  this.listenTo(pageflow.pages, 'sync', this.update);
34
36
 
@@ -79,13 +81,19 @@ pageflow.EntryPreviewView = Backbone.Marionette.ItemView.extend({
79
81
  },
80
82
 
81
83
  update: function() {
84
+ this.debouncedFetchWidgets();
85
+
86
+ this.$el.toggleClass('emphasize_chapter_beginning', !!this.model.configuration.get('emphasize_chapter_beginning'));
87
+ },
88
+
89
+ fetchWidgets: function() {
82
90
  var view = this;
83
91
 
84
92
  $.ajax(this.model.url() + '/partials').success(function(response) {
85
93
  var partials = $('<div />').html(response);
86
94
 
87
- view.ui.header.replaceWith(partials.find('.header'));
88
- view.ui.overview.replaceWith(partials.find('.overview'));
95
+ view.ui.header.replaceWith(partials.find('> .header'));
96
+ view.ui.overview.replaceWith(partials.find('> .overview'));
89
97
  view.bindUIElements();
90
98
 
91
99
  view.updateWidgets(partials);
@@ -95,8 +103,6 @@ pageflow.EntryPreviewView = Backbone.Marionette.ItemView.extend({
95
103
  });
96
104
  view.ui.overview.overview();
97
105
  });
98
-
99
- this.$el.toggleClass('emphasize_chapter_beginning', !!this.model.configuration.get('emphasize_chapter_beginning'));
100
106
  },
101
107
 
102
108
  updateWidgets: function(partials) {
@@ -72,7 +72,7 @@ pageflow.FileItemView = Backbone.Marionette.ItemView.extend({
72
72
  this.ui.rights.val(this.model.get('rights'));
73
73
  this.ui.rights.attr('placeholder', pageflow.entry.get('default_file_rights'));
74
74
 
75
- this.ui.downloadLink.attr('href', this.model.get('url'));
75
+ this.ui.downloadLink.attr('href', this.model.get('original_url'));
76
76
  this.ui.downloads.toggle(this.model.isUploaded());
77
77
 
78
78
  this.ui.selectButton.toggle(!!this.options.selectionHandler);
@@ -1,6 +1,8 @@
1
1
  pageflow.PageLinkInputView = pageflow.ReferenceInputView.extend({
2
2
  choose: function() {
3
- return pageflow.editor.selectPage();
3
+ return pageflow.editor.selectPage({
4
+ isAllowed: this.options.isAllowed
5
+ });
4
6
  },
5
7
 
6
8
  getTarget: function(permaId) {
@@ -14,7 +14,7 @@ pageflow.LockedView = Backbone.Marionette.ItemView.extend({
14
14
  },
15
15
 
16
16
  modelEvents: {
17
- aquired: 'hide',
17
+ acquired: 'hide',
18
18
 
19
19
  locked: 'show',
20
20
 
@@ -22,7 +22,7 @@ pageflow.LockedView = Backbone.Marionette.ItemView.extend({
22
22
  },
23
23
 
24
24
  breakLock: function() {
25
- this.model.aquire({force: true});
25
+ this.model.acquire({force: true});
26
26
  },
27
27
 
28
28
  goBack: function() {
@@ -35,7 +35,7 @@ pageflow.LockedView = Backbone.Marionette.ItemView.extend({
35
35
  this.ui.message.html(I18n.t('pageflow.edit_locks.errors.' + key + '_html', {user_name: info.held_by}));
36
36
  this.ui.message.attr('data-error', key);
37
37
 
38
- this.ui.breakButton.text(I18n.t('pageflow.edit_locks.break_action.aquire'));
38
+ this.ui.breakButton.text(I18n.t('pageflow.edit_locks.break_action.acquire'));
39
39
 
40
40
  this.$el.removeClass('checking');
41
41
  this.$el.show();
@@ -1,6 +1,6 @@
1
1
  pageflow.loadable = {
2
2
  modelEvents: {
3
- sync: function() {
3
+ 'change:id': function() {
4
4
  this.$el.removeClass('creating');
5
5
  },
6
6
 
@@ -27,6 +27,8 @@ pageflow.PageItemView = Backbone.Marionette.ItemView.extend({
27
27
  this.$el.attr('data-perma-id', this.model.get('perma_id'));
28
28
 
29
29
  this.$el.toggleClass('active', this.model.get('active'));
30
+ this.$el.toggleClass('disabled',
31
+ !!(this.options.isDisabled && this.options.isDisabled(this.model)));
30
32
  this.$el.toggleClass('display_in_navigation', !!this.model.configuration.get('display_in_navigation'));
31
33
  this.$el
32
34
  .removeClass(pageflow.editor.pageTypes.pluck('name').join(' '))
@@ -0,0 +1,7 @@
1
+ pageflow.PageLinkConfigurationEditorView = pageflow.ConfigurationEditorView.extend({
2
+ configure: function() {
3
+ this.tab('general', function() {
4
+ this.group('page_link');
5
+ });
6
+ }
7
+ });
@@ -8,7 +8,8 @@ pageflow.PageLinkItemView = Backbone.Marionette.ItemView.extend({
8
8
  thumbnail: '.page_thumbnail',
9
9
  title: '.title',
10
10
  label: '.label',
11
- editButton: '.edit'
11
+ editButton: '.edit',
12
+ removeButton: '.remove'
12
13
  },
13
14
 
14
15
  events: {
@@ -23,6 +24,12 @@ pageflow.PageLinkItemView = Backbone.Marionette.ItemView.extend({
23
24
 
24
25
  'mouseleave': function() {
25
26
  this.model.resetHighlight(false);
27
+ },
28
+
29
+ 'click .remove': function() {
30
+ if (confirm(I18n.t('pageflow.internal_links.editor.views.edit_page_link_view.confirm_destroy'))) {
31
+ this.model.remove();
32
+ }
26
33
  }
27
34
  },
28
35
 
@@ -9,7 +9,7 @@ pageflow.PagePreviewView = Backbone.Marionette.View.extend({
9
9
 
10
10
  'change:position': 'updateChapterBeginningClass',
11
11
 
12
- 'sync': function() {
12
+ 'change:id': function() {
13
13
  this.$el.attr('data-id', this.model.id);
14
14
  this.$el.attr('data-perma-id', this.model.get('perma_id'));
15
15
  this.$el.attr('id', this.model.get('perma_id'));
@@ -5,7 +5,8 @@ pageflow.PageSelectionView = Backbone.Marionette.ItemView.extend({
5
5
  mixins: [pageflow.dialogView],
6
6
 
7
7
  ui: {
8
- chapters: 'ul.chapters',
8
+ storylines: '.storyline_picker',
9
+ chapters: '.chapters',
9
10
  },
10
11
 
11
12
  events: {
@@ -16,25 +17,25 @@ pageflow.PageSelectionView = Backbone.Marionette.ItemView.extend({
16
17
  },
17
18
 
18
19
  onRender: function() {
19
- var onSelect = this.onSelect;
20
-
21
- this.subview(new pageflow.CollectionView({
22
- el: this.ui.chapters,
23
- collection: this.model.chapters,
24
- itemViewConstructor: pageflow.ChapterItemView,
25
- itemViewOptions: {
26
- pageItemView: pageflow.PageItemView,
27
- sortable: false
20
+ var options = this.options;
21
+
22
+ this.subview(new pageflow.StorylinePickerView({
23
+ el: this.ui.storylines,
24
+ pageItemViewOptions: {
25
+ isDisabled: function(page) {
26
+ return options.isAllowed && !options.isAllowed(page);
27
+ }
28
28
  }
29
29
  }));
30
30
  }
31
31
  });
32
32
 
33
- pageflow.PageSelectionView.selectPage = function() {
33
+ pageflow.PageSelectionView.selectPage = function(options) {
34
34
  return $.Deferred(function(deferred) {
35
35
  var view = new pageflow.PageSelectionView({
36
36
  model: pageflow.entry,
37
- onSelect: deferred.resolve
37
+ onSelect: deferred.resolve,
38
+ isAllowed: options && options.isAllowed
38
39
  });
39
40
 
40
41
  view.on('close', function() {
@@ -0,0 +1,33 @@
1
+ pageflow.StorylineOutlineView = Backbone.Marionette.Layout.extend({
2
+ template: 'templates/storyline_outline',
3
+ className: 'storyline_outline',
4
+
5
+ ui: {
6
+ chapters: 'ul.storyline_outline_chapters'
7
+ },
8
+
9
+ events: {
10
+ 'click a.add_chapter': function() {
11
+ this.model.scaffoldChapter();
12
+ }
13
+ },
14
+
15
+ onRender: function() {
16
+ this.ui.chapters.toggleClass('outline navigatable', !!this.options.navigatable);
17
+
18
+ var collectionView = this.options.sortable ? pageflow.SortableCollectionView : pageflow.CollectionView;
19
+
20
+ new collectionView({
21
+ el: this.ui.chapters,
22
+ collection: this.model.chapters,
23
+ itemViewConstructor: this.options.navigatable ? pageflow.NavigatableChapterItemView : pageflow.ChapterItemView,
24
+ itemViewOptions: {
25
+ sortable: this.options.sortable,
26
+ pageItemView: this.options.navigatable ? pageflow.NavigatablePageItemView : pageflow.PageItemView,
27
+ pageItemViewOptions: _.extend({
28
+ displayInNavigationHint: this.options.displayInNavigationHint
29
+ }, this.options.pageItemViewOptions || {})
30
+ }
31
+ }).render();
32
+ }
33
+ });
@@ -0,0 +1,114 @@
1
+ pageflow.StorylinePickerView = Backbone.Marionette.Layout.extend({
2
+ template: 'templates/storyline_picker',
3
+ className: 'storyline_picker',
4
+
5
+ regions: {
6
+ selectRegion: '.storyline_picker_select_region',
7
+ mainRegion: '.storyline_picker_main_region'
8
+ },
9
+
10
+ ui: {
11
+ storylines: '.storyline_picker_storylines'
12
+ },
13
+
14
+ events: {
15
+ 'click .add_storyline': function() {
16
+ var storyline = pageflow.entry.scaffoldStoryline({
17
+ depth: 'page'
18
+ }).storyline;
19
+
20
+ this.listenToOnce(storyline, 'sync', function() {
21
+ this.updateSelect();
22
+ this.model.set('storyline_id', storyline.id);
23
+ });
24
+
25
+ return false;
26
+ },
27
+
28
+ 'click .edit_storyline': function() {
29
+ pageflow.editor.navigate('storylines/' + this.model.get('storyline_id'), {trigger: true});
30
+ return false;
31
+ }
32
+ },
33
+
34
+ initialize: function() {
35
+ this.model = new Backbone.Model({
36
+ storyline_id: this.defaultStorylineId()
37
+ });
38
+
39
+ this.listenTo(pageflow.storylines, 'add sort remove', this.updateSelect);
40
+ this.listenTo(this.model, 'change', this.load);
41
+ },
42
+
43
+ onRender: function() {
44
+ this.$el.toggleClass('editable', !!this.options.editable);
45
+ this.ui.storylines.toggle(!!pageflow.features.isEnabled('storylines'));
46
+
47
+ this.updateSelect();
48
+ this.load();
49
+ },
50
+
51
+ updateSelect: function() {
52
+ this.selectRegion.show(new pageflow.SelectInputView({
53
+ model: this.model,
54
+ label: I18n.t('pageflow.editor.views.storylines_picker_view.label'),
55
+ propertyName: 'storyline_id',
56
+ values: pageflow.storylines.pluck('id'),
57
+ texts: pageflow.storylines.map(function(storyline) {
58
+ return this.indentation(storyline) + storyline.displayTitle();
59
+ }, this),
60
+ groups: pageflow.storylines.reduce(function(result, storyline) {
61
+ if (storyline.isMain() || storyline.parentPage()) {
62
+ result.push(_.last(result));
63
+ }
64
+ else {
65
+ result.push(I18n.t('pageflow.editor.views.storylines_picker_view.without_parent_page'));
66
+ }
67
+ return result;
68
+ }, [])
69
+ }));
70
+ },
71
+
72
+ load: function() {
73
+ var storyline = pageflow.storylines.get(this.model.get('storyline_id'));
74
+
75
+ this.saveRememberedStorylineId(storyline.id);
76
+
77
+ this.mainRegion.show(new pageflow.StorylineOutlineView({
78
+ model: storyline,
79
+ navigatable: this.options.navigatable,
80
+ sortable: this.options.editable,
81
+ chapterItemView: this.options.chapterItemView,
82
+ pageItemView: this.options.pageItemView,
83
+ pageItemViewOptions: this.options.pageItemViewOptions,
84
+ displayInNavigationHint: this.options.displayInNavigationHint
85
+ }));
86
+ },
87
+
88
+ defaultStorylineId: function() {
89
+ var storyline =
90
+ pageflow.storylines.get(this.options.storylineId) ||
91
+ pageflow.storylines.get(this.rememberedStorylineId()) ||
92
+ pageflow.storylines.first();
93
+
94
+ return storyline.id;
95
+ },
96
+
97
+ rememberedStorylineId: function() {
98
+ if (this.options.rememberLastSelection) {
99
+ return pageflow.StorylinePickerView._rememberedStorylineId;
100
+ }
101
+ },
102
+
103
+ saveRememberedStorylineId: function(id) {
104
+ if (this.options.rememberLastSelection) {
105
+ pageflow.StorylinePickerView._rememberedStorylineId = id;
106
+ }
107
+ },
108
+
109
+ indentation: function(storyline) {
110
+ return _(storyline.get('level') || 0).times(function() {
111
+ return '\u00A0\u00A0\u00A0';
112
+ }).join('');
113
+ }
114
+ });