pageflow 0.8.2 → 0.9.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 (293) hide show
  1. checksums.yaml +8 -8
  2. data/CHANGELOG.md +810 -0
  3. data/README.md +179 -0
  4. data/admins/pageflow/accounts.rb +46 -3
  5. data/admins/pageflow/entry.rb +35 -7
  6. data/app/assets/javascripts/pageflow/audio.js +62 -0
  7. data/app/assets/javascripts/pageflow/audio/multi_player.js +127 -0
  8. data/app/assets/javascripts/pageflow/audio/player_pool.js +15 -0
  9. data/app/assets/javascripts/pageflow/audio_player.js +23 -1
  10. data/app/assets/javascripts/pageflow/audio_player/null.js +37 -0
  11. data/app/assets/javascripts/pageflow/audio_player/pause_in_background.js +34 -0
  12. data/app/assets/javascripts/pageflow/audio_player/rewind_method.js +17 -0
  13. data/app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js +41 -0
  14. data/app/assets/javascripts/pageflow/base.js +10 -0
  15. data/app/assets/javascripts/pageflow/browser.js +123 -0
  16. data/app/assets/javascripts/pageflow/{features → browser}/hashchange_support.js +1 -1
  17. data/app/assets/javascripts/pageflow/{features → browser}/high_bandwidth.js +1 -1
  18. data/app/assets/javascripts/pageflow/{features → browser}/ie_platform.js +1 -1
  19. data/app/assets/javascripts/pageflow/browser/ios_platform.js +6 -0
  20. data/app/assets/javascripts/pageflow/{features → browser}/mobile_platform.js +1 -1
  21. data/app/assets/javascripts/pageflow/{features → browser}/phone_platform.js +1 -1
  22. data/app/assets/javascripts/pageflow/browser/pushstate_support.js +3 -0
  23. data/app/assets/javascripts/pageflow/{features → browser}/touch_support.js +1 -1
  24. data/app/assets/javascripts/pageflow/browser/video.js +16 -0
  25. data/app/assets/javascripts/pageflow/browser/volume_control_support.js +3 -0
  26. data/app/assets/javascripts/pageflow/chapter_filter.js +56 -0
  27. data/app/assets/javascripts/pageflow/editor/api.js +29 -0
  28. data/app/assets/javascripts/pageflow/editor/api/page_type.js +42 -0
  29. data/app/assets/javascripts/pageflow/editor/api/page_types.js +47 -0
  30. data/app/assets/javascripts/pageflow/editor/base.js +7 -1
  31. data/app/assets/javascripts/pageflow/editor/collections/subset_collection.js +5 -1
  32. data/app/assets/javascripts/pageflow/editor/initializers/boot.js +10 -2
  33. data/app/assets/javascripts/pageflow/editor/initializers/setup_audio.js +8 -0
  34. data/app/assets/javascripts/pageflow/editor/initializers/setup_collections.js +7 -0
  35. data/app/assets/javascripts/pageflow/editor/initializers/setup_features.js +3 -0
  36. data/app/assets/javascripts/pageflow/editor/initializers/setup_hotkeys.js +20 -0
  37. data/app/assets/javascripts/pageflow/editor/initializers/setup_page_types.js +1 -6
  38. data/app/assets/javascripts/pageflow/editor/models/audio_file.js +8 -0
  39. data/app/assets/javascripts/pageflow/editor/models/chapter.js +23 -4
  40. data/app/assets/javascripts/pageflow/editor/models/chapter_configuration.js +7 -0
  41. data/app/assets/javascripts/pageflow/editor/models/configuration.js +5 -3
  42. data/app/assets/javascripts/pageflow/editor/models/entry.js +6 -4
  43. data/app/assets/javascripts/pageflow/editor/models/mixins/delayed_destroying.js +1 -1
  44. data/app/assets/javascripts/pageflow/editor/models/mixins/stage_provider.js +3 -2
  45. data/app/assets/javascripts/pageflow/editor/models/page.js +11 -4
  46. data/app/assets/javascripts/pageflow/editor/models/preview_entry_data.js +31 -0
  47. data/app/assets/javascripts/pageflow/editor/models/theming.js +8 -0
  48. data/app/assets/javascripts/pageflow/editor/models/uploaded_file.js +8 -0
  49. data/app/assets/javascripts/pageflow/editor/templates/drop_down_button.jst.ejs +6 -0
  50. data/app/assets/javascripts/pageflow/editor/templates/drop_down_button_item.jst.ejs +1 -0
  51. data/app/assets/javascripts/pageflow/editor/templates/files_explorer.jst.ejs +2 -2
  52. data/app/assets/javascripts/pageflow/editor/templates/inputs/reference.jst.ejs +7 -0
  53. data/app/assets/javascripts/pageflow/editor/templates/list.jst.ejs +5 -0
  54. data/app/assets/javascripts/pageflow/editor/templates/list_blank_slate.jst.ejs +1 -0
  55. data/app/assets/javascripts/pageflow/editor/templates/list_item.jst.ejs +11 -0
  56. data/app/assets/javascripts/pageflow/editor/templates/loading.jst.ejs +7 -1
  57. data/app/assets/javascripts/pageflow/editor/templates/other_entries_blank_slate.jst.ejs +1 -1
  58. data/app/assets/javascripts/pageflow/editor/templates/page_link_item.jst.ejs +7 -0
  59. data/app/assets/javascripts/pageflow/editor/templates/page_links.jst.ejs +6 -0
  60. data/app/assets/javascripts/pageflow/editor/templates/page_selection.jst.ejs +12 -0
  61. data/app/assets/javascripts/pageflow/editor/templates/publish_entry.jst.ejs +44 -8
  62. data/app/assets/javascripts/pageflow/editor/views/chapter_item_view.js +3 -1
  63. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/audio.js +1 -1
  64. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/groups/options.js +34 -2
  65. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/groups/page_transitions.js +6 -0
  66. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/video.js +6 -1
  67. data/app/assets/javascripts/pageflow/editor/views/disabled_atmo_indicator_view.js +27 -0
  68. data/app/assets/javascripts/pageflow/editor/views/drop_down_button_item_view.js +33 -0
  69. data/app/assets/javascripts/pageflow/editor/views/drop_down_button_view.js +80 -0
  70. data/app/assets/javascripts/pageflow/editor/views/edit_chapter_view.js +25 -5
  71. data/app/assets/javascripts/pageflow/editor/views/edit_entry_view.js +9 -1
  72. data/app/assets/javascripts/pageflow/editor/views/edit_page_view.js +7 -5
  73. data/app/assets/javascripts/pageflow/editor/views/edit_widget_view.js +1 -1
  74. data/app/assets/javascripts/pageflow/editor/views/embedded/background_image_embedded_view.js +4 -1
  75. data/app/assets/javascripts/pageflow/editor/views/embedded/lazy_video_embedded_view.js +41 -0
  76. data/app/assets/javascripts/pageflow/editor/views/entry_preview_view.js +6 -6
  77. data/app/assets/javascripts/pageflow/editor/views/inputs/page_link_input_view.js +9 -0
  78. data/app/assets/javascripts/pageflow/editor/views/inputs/reference_input_view.js +66 -0
  79. data/app/assets/javascripts/pageflow/editor/views/list_item_view.js +95 -0
  80. data/app/assets/javascripts/pageflow/editor/views/list_view.js +59 -0
  81. data/app/assets/javascripts/pageflow/editor/views/loading_view.js +5 -0
  82. data/app/assets/javascripts/pageflow/editor/views/model_thumbnail_view.js +37 -0
  83. data/app/assets/javascripts/pageflow/editor/views/navigatable_page_item_view.js +1 -0
  84. data/app/assets/javascripts/pageflow/editor/views/other_entries_collection_view.js +4 -4
  85. data/app/assets/javascripts/pageflow/editor/views/other_entry_item_view.js +2 -1
  86. data/app/assets/javascripts/pageflow/editor/views/page_item_view.js +2 -2
  87. data/app/assets/javascripts/pageflow/editor/views/page_link_item_view.js +51 -0
  88. data/app/assets/javascripts/pageflow/editor/views/page_links_view.js +45 -0
  89. data/app/assets/javascripts/pageflow/editor/views/page_preview_view.js +24 -16
  90. data/app/assets/javascripts/pageflow/editor/views/page_selection_view.js +46 -0
  91. data/app/assets/javascripts/pageflow/editor/views/page_thumbnail_view.js +2 -29
  92. data/app/assets/javascripts/pageflow/editor/views/publish_entry_view.js +95 -10
  93. data/app/assets/javascripts/pageflow/editor/views/scrolling_view.js +24 -0
  94. data/app/assets/javascripts/pageflow/entry_data.js +35 -0
  95. data/app/assets/javascripts/pageflow/features.js +68 -98
  96. data/app/assets/javascripts/pageflow/fullscreen.js +24 -0
  97. data/app/assets/javascripts/pageflow/highlighted_page.js +48 -0
  98. data/app/assets/javascripts/pageflow/history.js +50 -18
  99. data/app/assets/javascripts/pageflow/history/hash_adapter.js +36 -0
  100. data/app/assets/javascripts/pageflow/history/push_state_adapter.js +37 -0
  101. data/app/assets/javascripts/pageflow/history/simulated_adapter.js +44 -0
  102. data/app/assets/javascripts/pageflow/media_player.js +25 -0
  103. data/app/assets/javascripts/pageflow/media_player/async_play.js +54 -0
  104. data/app/assets/javascripts/pageflow/media_player/hooks.js +24 -0
  105. data/app/assets/javascripts/pageflow/media_player/load_waiting.js +11 -0
  106. data/app/assets/javascripts/pageflow/media_player/volume_binding.js +72 -0
  107. data/app/assets/javascripts/pageflow/media_player/volume_fading.js +62 -0
  108. data/app/assets/javascripts/pageflow/multimedia_alert.js +13 -0
  109. data/app/assets/javascripts/pageflow/object.js +14 -0
  110. data/app/assets/javascripts/pageflow/page_transitions.js +27 -0
  111. data/app/assets/javascripts/pageflow/page_type.js +6 -0
  112. data/app/assets/javascripts/pageflow/page_types/audio.js +17 -21
  113. data/app/assets/javascripts/pageflow/page_types/background_video.js +18 -17
  114. data/app/assets/javascripts/pageflow/page_types/mixins/common_page_css_classes.js +29 -4
  115. data/app/assets/javascripts/pageflow/page_types/video.js +73 -36
  116. data/app/assets/javascripts/pageflow/preload.js +9 -6
  117. data/app/assets/javascripts/pageflow/ready.js +18 -14
  118. data/app/assets/javascripts/pageflow/seed_entry_data.js +43 -0
  119. data/app/assets/javascripts/pageflow/settings.js +17 -4
  120. data/app/assets/javascripts/pageflow/slideshow.js +103 -23
  121. data/app/assets/javascripts/pageflow/slideshow/adjacent_pages.js +26 -0
  122. data/app/assets/javascripts/pageflow/slideshow/adjacent_preparer.js +44 -0
  123. data/app/assets/javascripts/pageflow/slideshow/atmo.js +105 -0
  124. data/app/assets/javascripts/pageflow/slideshow/dom_order_scroll_navigator.js +29 -0
  125. data/app/assets/javascripts/pageflow/slideshow/lazy_page_widget.js +49 -0
  126. data/app/assets/javascripts/pageflow/slideshow/page_widget.js +60 -26
  127. data/app/assets/javascripts/pageflow/slideshow/progressive_preload.js +16 -7
  128. data/app/assets/javascripts/pageflow/slideshow/scroll_indicator_widget.js +45 -7
  129. data/app/assets/javascripts/pageflow/slideshow/scroller_widget.js +42 -5
  130. data/app/assets/javascripts/pageflow/ui.js +1 -0
  131. data/app/assets/javascripts/pageflow/ui/object.js +4 -13
  132. data/app/assets/javascripts/pageflow/ui/utils/i18n_utils.js +23 -0
  133. data/app/assets/javascripts/pageflow/ui/views/collection_view.js +8 -4
  134. data/app/assets/javascripts/pageflow/ui/views/configuration_editor_tab_view.js +6 -5
  135. data/app/assets/javascripts/pageflow/ui/views/configuration_editor_view.js +2 -11
  136. data/app/assets/javascripts/pageflow/ui/views/inputs/select_input_view.js +6 -1
  137. data/app/assets/javascripts/pageflow/ui/views/inputs/text_input_view.js +4 -0
  138. data/app/assets/javascripts/pageflow/ui/views/mixins/input_view.js +149 -6
  139. data/app/assets/javascripts/pageflow/ui/views/mixins/subview_container.js +4 -0
  140. data/app/assets/javascripts/pageflow/video_player.js +5 -0
  141. data/app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js +1 -1
  142. data/app/assets/javascripts/pageflow/video_player/lazy.js +8 -4
  143. data/app/assets/javascripts/pageflow/video_player/media_events.js +1 -1
  144. data/app/assets/javascripts/pageflow/video_player/play_button_patch.js +1 -1
  145. data/app/assets/javascripts/pageflow/video_player/prebuffering.js +1 -1
  146. data/app/assets/javascripts/pageflow/widgets/fullscreen_button.js +26 -0
  147. data/app/assets/javascripts/pageflow/widgets/multimedia_alert.js +21 -5
  148. data/app/assets/javascripts/pageflow/widgets/mute_button.js +42 -0
  149. data/app/assets/javascripts/pageflow/widgets/navigation.js +5 -78
  150. data/app/assets/javascripts/pageflow/widgets/navigation_mobile.js +4 -0
  151. data/app/assets/javascripts/pageflow/widgets/page_navigation_list.js +28 -34
  152. data/app/assets/javascripts/pageflow/widgets/parent_page_button.js +27 -0
  153. data/app/assets/javascripts/pageflow/widgets/skip_page_button.js +22 -0
  154. data/app/assets/javascripts/pageflow/widgets/top_button.js +6 -7
  155. data/app/assets/javascripts/pageflow/widgets/volume_slider.js +62 -0
  156. data/app/assets/stylesheets/pageflow/admin/entries.css.scss +10 -0
  157. data/app/assets/stylesheets/pageflow/animations.css.scss +1 -0
  158. data/app/assets/stylesheets/pageflow/animations/loading.css.scss +8 -0
  159. data/app/assets/stylesheets/pageflow/animations/scroll.css.scss +18 -0
  160. data/app/assets/stylesheets/pageflow/base.css.scss +3 -1
  161. data/app/assets/stylesheets/pageflow/delayed_text_fade_in.css.scss +49 -0
  162. data/app/assets/stylesheets/pageflow/editor/base.css.scss +15 -2
  163. data/app/assets/stylesheets/pageflow/editor/disabled_atmo_indicator.css.scss +13 -0
  164. data/app/assets/stylesheets/pageflow/editor/drop_down_button.css.scss +54 -0
  165. data/app/assets/stylesheets/pageflow/editor/files_explorer.css.scss +6 -0
  166. data/app/assets/stylesheets/pageflow/editor/indicators.css.scss +5 -0
  167. data/app/assets/stylesheets/pageflow/editor/inputs.css.scss +1 -0
  168. data/app/assets/stylesheets/pageflow/editor/inputs/reference.css.scss +51 -0
  169. data/app/assets/stylesheets/pageflow/editor/list.css.scss +108 -0
  170. data/app/assets/stylesheets/pageflow/editor/loading.css.scss +31 -0
  171. data/app/assets/stylesheets/pageflow/editor/outline.css.scss +7 -5
  172. data/app/assets/stylesheets/pageflow/editor/page_links.css.scss +58 -0
  173. data/app/assets/stylesheets/pageflow/editor/page_selection.css.scss +39 -0
  174. data/app/assets/stylesheets/pageflow/editor/publish_entry.css.scss +38 -1
  175. data/app/assets/stylesheets/pageflow/entries.css.scss +17 -9
  176. data/app/assets/stylesheets/pageflow/navigation_bar.css.scss +4 -0
  177. data/app/assets/stylesheets/pageflow/page_transitions.css.scss +10 -0
  178. data/app/assets/stylesheets/pageflow/page_transitions/crossfade.css.scss +29 -0
  179. data/app/assets/stylesheets/pageflow/page_transitions/cut.css.scss +23 -0
  180. data/app/assets/stylesheets/pageflow/page_transitions/fade.css.scss +78 -0
  181. data/app/assets/stylesheets/pageflow/page_transitions/fade_to_black.css.scss +107 -0
  182. data/app/assets/stylesheets/pageflow/page_transitions/scroll.css.scss +20 -0
  183. data/app/assets/stylesheets/pageflow/page_transitions/scroll_in.css.scss +66 -0
  184. data/app/assets/stylesheets/pageflow/page_transitions/scroll_in_right.css.scss +68 -0
  185. data/app/assets/stylesheets/pageflow/page_transitions/scroll_left.css.scss +20 -0
  186. data/app/assets/stylesheets/pageflow/page_transitions/scroll_right.css.scss +20 -0
  187. data/app/assets/stylesheets/pageflow/page_types.css.scss +1 -3
  188. data/app/assets/stylesheets/pageflow/page_types/video.css.scss +0 -4
  189. data/app/assets/stylesheets/pageflow/slideshow.css.scss +0 -145
  190. data/app/assets/stylesheets/pageflow/text_variants.css.scss +0 -4
  191. data/app/assets/stylesheets/pageflow/themes/default/navigation.css.scss +0 -3
  192. data/app/controllers/concerns/pageflow/public_https_mode.rb +13 -0
  193. data/app/controllers/pageflow/application_controller.rb +0 -6
  194. data/app/controllers/pageflow/chapters_controller.rb +2 -1
  195. data/app/controllers/pageflow/editor/entries_controller.rb +2 -0
  196. data/app/controllers/pageflow/editor/entry_publications_controller.rb +3 -1
  197. data/app/controllers/pageflow/entries_controller.rb +16 -3
  198. data/app/controllers/pageflow/files_controller.rb +3 -1
  199. data/app/helpers/pageflow/admin/features_helper.rb +25 -0
  200. data/app/helpers/pageflow/background_image_helper.rb +40 -9
  201. data/app/helpers/pageflow/entries_helper.rb +10 -11
  202. data/app/helpers/pageflow/entry_json_seed_helper.rb +44 -0
  203. data/app/helpers/pageflow/help_entries_helper.rb +4 -4
  204. data/app/helpers/pageflow/page_types_helper.rb +4 -2
  205. data/app/helpers/pageflow/pages_helper.rb +20 -27
  206. data/app/helpers/pageflow/widgets_helper.rb +4 -4
  207. data/app/models/concerns/pageflow/feature_target.rb +37 -0
  208. data/app/models/pageflow/account.rb +2 -0
  209. data/app/models/pageflow/chapter.rb +6 -0
  210. data/app/models/pageflow/draft_entry.rb +2 -0
  211. data/app/models/pageflow/entry.rb +47 -9
  212. data/app/models/pageflow/entry_duplicate.rb +51 -0
  213. data/app/models/pageflow/image_file.rb +33 -13
  214. data/app/models/pageflow/page.rb +2 -2
  215. data/app/models/pageflow/published_entry.rb +7 -1
  216. data/app/views/admin/accounts/_form.html.erb +11 -1
  217. data/app/views/admin/features/_form.html.erb +16 -0
  218. data/app/views/components/pageflow/admin/features_tab.rb +10 -0
  219. data/app/views/components/pageflow/admin/revisions_tab.rb +4 -0
  220. data/app/views/layouts/pageflow/_meta_tags.html.erb +1 -1
  221. data/app/views/layouts/pageflow/application.html.erb +2 -2
  222. data/app/views/pageflow/editor/accounts/_account.json.jbuilder +1 -0
  223. data/app/views/pageflow/editor/entries/_entry.json.jbuilder +2 -1
  224. data/app/views/pageflow/editor/entries/_help_entries_seed.html.erb +2 -2
  225. data/app/views/pageflow/editor/entries/_indicators_seed.html.erb +3 -0
  226. data/app/views/pageflow/editor/entries/seed.json.erb +3 -2
  227. data/app/views/pageflow/editor/entry_publications/check.json.jbuilder +1 -0
  228. data/app/views/pageflow/editor/image_files/_image_file.json.jbuilder +1 -1
  229. data/app/views/pageflow/editor/themings/_theming.json.jbuilder +4 -0
  230. data/app/views/pageflow/editor/video_files/_video_file.json.jbuilder +1 -0
  231. data/app/views/pageflow/entries/_entry.html.erb +4 -3
  232. data/app/views/pageflow/entries/_indicators.html.erb +13 -0
  233. data/app/views/pageflow/entries/_mobile_navigation.html.erb +3 -15
  234. data/app/views/pageflow/entries/edit.html.erb +9 -1
  235. data/app/views/pageflow/entries/navigation/_bar_top.html.erb +3 -15
  236. data/app/views/pageflow/entries/share_menu/_facebook_link.html.erb +12 -0
  237. data/app/views/pageflow/entries/share_menu/_google_link.html.erb +12 -0
  238. data/app/views/pageflow/entries/share_menu/_twitter_link.html.erb +12 -0
  239. data/app/views/pageflow/entries/show.css.erb +12 -2
  240. data/app/views/pageflow/entries/show.html.erb +5 -1
  241. data/app/views/pageflow/page_types/_page_type.json.jbuilder +7 -1
  242. data/app/views/pageflow/pages/_page.html.erb +2 -2
  243. data/app/views/pageflow/pages/templates/_audio.html.erb +10 -0
  244. data/config/initializers/admin_resource_tabs.rb +1 -0
  245. data/config/initializers/features.rb +9 -0
  246. data/config/initializers/page_type_helpers.rb +1 -1
  247. data/config/initializers/paperclip.rb +1 -1
  248. data/config/initializers/zencoder.rb +1 -1
  249. data/config/locales/de.yml +132 -71
  250. data/config/locales/en.yml +118 -191
  251. data/db/migrate/20141211110226_add_configuration_to_chapters.rb +5 -0
  252. data/db/migrate/20150115175116_add_features_configuration_to_accounts.rb +5 -0
  253. data/db/migrate/20150115175207_add_features_configuration_to_entries.rb +5 -0
  254. data/db/migrate/20150603091823_add_password_attributes_to_revisions.rb +6 -0
  255. data/db/migrate/20151022080518_add_first_published_at_to_entries.rb +14 -0
  256. data/lib/generators/pageflow/initializer/templates/pageflow.rb +26 -17
  257. data/lib/generators/pageflow/theme/theme_generator.rb +2 -1
  258. data/lib/pageflow.rb +2 -46
  259. data/lib/pageflow/admin/form_input.rb +18 -0
  260. data/lib/pageflow/admin/form_inputs.rb +41 -0
  261. data/lib/pageflow/built_in_page_type.rb +0 -4
  262. data/lib/pageflow/configuration.rb +74 -18
  263. data/lib/pageflow/feature.rb +33 -0
  264. data/lib/pageflow/features.rb +68 -0
  265. data/lib/pageflow/global_config_api.rb +118 -0
  266. data/lib/pageflow/page_type_feature.rb +21 -0
  267. data/lib/pageflow/page_types.rb +29 -0
  268. data/lib/pageflow/theme.rb +20 -0
  269. data/lib/pageflow/themes.rb +26 -0
  270. data/lib/pageflow/version.rb +1 -1
  271. data/spec/factories/entries.rb +6 -0
  272. data/spec/factories/feature_targets.rb +4 -0
  273. data/spec/fixtures/image.gif +0 -0
  274. data/spec/fixtures/video.mp4 +0 -0
  275. data/vendor/assets/javascripts/audio5.min.js +12 -8
  276. data/vendor/assets/javascripts/iscroll.js +1 -1
  277. metadata +144 -24
  278. data/app/assets/images/pageflow/internal_links_pictogram.png +0 -0
  279. data/app/assets/images/pageflow/internal_links_pictogram_small.png +0 -0
  280. data/app/assets/images/pageflow/internal_links_sprite.png +0 -0
  281. data/app/assets/images/pageflow/ov-internal_links.png +0 -0
  282. data/app/assets/images/pageflow/themes/default/internal_links_sprite.png +0 -0
  283. data/app/assets/javascripts/pageflow/editor/templates/embedded/page_link.jst.ejs +0 -3
  284. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/internal_links.js +0 -24
  285. data/app/assets/javascripts/pageflow/editor/views/draggable_page_item_view.js +0 -31
  286. data/app/assets/javascripts/pageflow/editor/views/embedded/page_link_embedded_view.js +0 -176
  287. data/app/assets/javascripts/pageflow/features/video.js +0 -16
  288. data/app/assets/javascripts/pageflow/page_types/internal_links.js +0 -55
  289. data/app/assets/javascripts/pageflow/ui/templates/inputs/page_reference.jst.ejs +0 -6
  290. data/app/assets/javascripts/pageflow/ui/views/inputs/page_reference_input_view.js +0 -44
  291. data/app/assets/stylesheets/pageflow/editor/embedded.css.scss +0 -104
  292. data/app/assets/stylesheets/pageflow/page_types/internal_links.css.scss +0 -222
  293. data/app/views/pageflow/pages/templates/_internal_links.html.erb +0 -31
@@ -19,7 +19,7 @@ pageflow.Page = Backbone.Model.extend({
19
19
  this.configuration.parent = this.configuration.page = this;
20
20
 
21
21
  this.listenTo(this.configuration, 'change', function() {
22
- this.trigger('change:configuration');
22
+ this.trigger('change:configuration', this);
23
23
  });
24
24
 
25
25
  this.listenTo(this.configuration, 'change:title', function() {
@@ -50,13 +50,17 @@ pageflow.Page = Backbone.Model.extend({
50
50
  thumbnailFile: function() {
51
51
  var configuration = this.configuration;
52
52
 
53
- return _.reduce(this.pageType().thumbnail_candidates, function(result, candidate) {
53
+ return _.reduce(this.pageType().thumbnailCandidates(), function(result, candidate) {
54
54
  return result || configuration.getReference(candidate.attribute, candidate.file_collection);
55
55
  }, null);
56
56
  },
57
57
 
58
+ pageLinks: function() {
59
+ return this.pageType().pageLinks(this.configuration);
60
+ },
61
+
58
62
  pageType: function() {
59
- return pageflow.Page.typesByName[this.get('template')];
63
+ return pageflow.editor.pageTypes.findByName(this.get('template'));
60
64
  },
61
65
 
62
66
  toJSON: function() {
@@ -70,6 +74,9 @@ pageflow.Page = Backbone.Model.extend({
70
74
  }
71
75
  });
72
76
 
73
- pageflow.Page.transitions = ['fade', 'scroll'];
74
77
  pageflow.Page.linkedPagesLayouts = ['default', 'hero_top_left', 'hero_top_right'];
75
78
  pageflow.Page.textPositions = ['left', 'right'];
79
+
80
+ pageflow.Page.scrollIndicatorModes = ['all', 'only_back', 'only_next', 'non'];
81
+ pageflow.Page.scrollIndicatorOrientations = ['vertical', 'horizontal'];
82
+ pageflow.Page.delayedTextFadeIn = ['no_fade', 'short', 'medium', 'long'];
@@ -0,0 +1,31 @@
1
+ pageflow.PreviewEntryData = pageflow.EntryData.extend({
2
+ initialize: function(options) {
3
+ this.chapters = options.chapters;
4
+ this.pages = options.pages;
5
+ this.theming = options.theming;
6
+ },
7
+
8
+ getThemingOption: function(name) {
9
+ return this.theming.get(name);
10
+ },
11
+
12
+ getChapterConfiguration: function(id) {
13
+ var chapter = this.chapters.get(id);
14
+ return chapter ? chapter.configuration.attributes : {};
15
+ },
16
+
17
+ getChapterPagePermaIds: function(id) {
18
+ var chapter = this.chapters.get(id);
19
+ return chapter ? chapter.pages.pluck('perma_id') : [];
20
+ },
21
+
22
+ getChapterIdByPagePermaId: function(permaId) {
23
+ var page = this.pages.getByPermaId(permaId);
24
+ return page && page.get('chapter_id');
25
+ },
26
+
27
+ getPageConfiguration: function(permaId) {
28
+ var page = this.pages.getByPermaId(permaId);
29
+ return page ? page.configuration.attributes : {};
30
+ }
31
+ });
@@ -7,5 +7,13 @@ pageflow.Theming = Backbone.Model.extend({
7
7
 
8
8
  hasHomeButton: function() {
9
9
  return this.get('home_button');
10
+ },
11
+
12
+ supportsEmphasizedPages: function() {
13
+ return this.get('emphasized_pages');
14
+ },
15
+
16
+ supportsScrollIndicatorModes: function() {
17
+ return this.get('scroll_indicator_modes');
10
18
  }
11
19
  });
@@ -9,6 +9,14 @@ pageflow.UploadedFile = Backbone.Model.extend({
9
9
  return this.collection && this.collection.fileType;
10
10
  },
11
11
 
12
+ title: function() {
13
+ return this.get('file_name');
14
+ },
15
+
16
+ thumbnailFile: function() {
17
+ return this;
18
+ },
19
+
12
20
  isUploading: function() {
13
21
  return this.get('state') === 'uploading';
14
22
  },
@@ -0,0 +1,6 @@
1
+ <button></button>
2
+
3
+ <div class="drop_down_button_menu">
4
+ <ul class="drop_down_button_items" role="menu">
5
+ </ul>
6
+ </div>
@@ -2,8 +2,8 @@
2
2
  <h2><%= I18n.t('pageflow.editor.templates.files_explorer.reuse_files') %></h2>
3
3
 
4
4
  <div class="panels">
5
- <div class="entries_panel">
6
- </div>
5
+ <ul class="entries_panel">
6
+ </ul>
7
7
 
8
8
  <div class="files_panel">
9
9
  </div>
@@ -0,0 +1,7 @@
1
+ <label>
2
+ <span class="name"></span>
3
+ <span class="inline_help"></span>
4
+ </label>
5
+ <div class="title"></div>
6
+ <a href="" class="unset" title="<%= I18n.t('pageflow.editor.templates.inputs.reference.reset') %>"></a>
7
+ <a href="" class="choose" title="<%= I18n.t('pageflow.editor.templates.inputs.reference.edit') %>"></a>
@@ -0,0 +1,5 @@
1
+ <label>
2
+ <span class="list_label"></span>
3
+ </label>
4
+
5
+ <ul class="list_items"></ul>
@@ -0,0 +1 @@
1
+ <%= I18n.t('pageflow.editor.templates.list_blank_slate.text') %>
@@ -0,0 +1,11 @@
1
+ <span class="list_item_thumbnail"></span>
2
+ <span class="list_item_missing_thumbnail"></span>
3
+ <span class="list_item_type_pictogram type_pictogram"></span>
4
+
5
+ <div class="list_item_title"></div>
6
+ <div class="list_item_description"></div>
7
+
8
+ <div class="list_item_buttons">
9
+ <a class="list_item_edit_button" title="<%= I18n.t('pageflow.editor.templates.list_item.edit') %>"></a>
10
+ <a class="list_item_remove_button" title="<%= I18n.t('pageflow.editor.templates.list_item.remove') %>"></a>
11
+ </div>
@@ -1 +1,7 @@
1
- <li class="loading"><%= I18n.t('pageflow.editor.templates.loading.loading') %></li>
1
+ <div class="spinner">
2
+ <div class="rect1"></div>
3
+ <div class="rect2"></div>
4
+ <div class="rect3"></div>
5
+ <div class="rect4"></div>
6
+ <div class="rect5"></div>
7
+ </div>
@@ -1 +1 @@
1
- <li class="blank_slate"><%= I18n.t('pageflow.editor.templates.other_entries_blank_slate.none_available') %><li>
1
+ <%= I18n.t('pageflow.editor.templates.other_entries_blank_slate.none_available') %>
@@ -0,0 +1,7 @@
1
+ <div>
2
+ <span class="missing_page_thumbnail"></span>
3
+ <span class="page_thumbnail"></span>
4
+ <div class="title"></div>
5
+ <div class="label"></div>
6
+ <a class="edit" title="<%= I18n.t('pageflow.editor.templates.page_link_item.edit') %>"></a>
7
+ <div>
@@ -0,0 +1,6 @@
1
+ <label>
2
+ <span class="name"><%= I18n.t('pageflow.editor.templates.page_links.label') %></span>
3
+ </label>
4
+ <ul class="links outline"></ul>
5
+
6
+ <a href="" class="add_link"><%= I18n.t('pageflow.editor.templates.page_links.add') %></a>
@@ -0,0 +1,12 @@
1
+ <div class="box">
2
+ <h2><%= I18n.t('pageflow.editor.templates.page_selection.title') %></h2>
3
+
4
+ <div class="wrapper editor">
5
+ <ul class="chapters">
6
+ </ul>
7
+ </div>
8
+
9
+ <div class="footer">
10
+ <a href="" class="close"><%= I18n.t('pageflow.editor.templates.page_selection.cancel') %></a>
11
+ </div>
12
+ </div>
@@ -23,16 +23,52 @@
23
23
  <div class="radio_input">
24
24
  <input id="publish_entry_until" type="radio" name="mode" value="publish_until">
25
25
  <label for="publish_entry_until"><%= I18n.t('pageflow.editor.templates.publish_entry.until_including') %></label>
26
+ </div>
27
+
28
+ <div class="publish_until_fields disabled">
29
+ <label>
30
+ <%= I18n.t('pageflow.editor.templates.publish_entry.date') %>
31
+ <input type="text" name="publish_until">
32
+ </label>
33
+
34
+ <label>
35
+ <%= I18n.t('pageflow.editor.templates.publish_entry.time') %>
36
+ <input type="text" name="publish_until_time" value="00:00">
37
+ </label>
38
+ </div>
39
+
40
+ <div class="check_box_input">
41
+ <input id="publish_password_protected" type="checkbox" name="password_protected" value="1">
42
+ <label for="publish_password_protected">
43
+ <span class="name">
44
+ <%= I18n.t('pageflow.editor.templates.publish_entry.password_protected') %>
45
+ </span>
46
+ <span class="inline_help">
47
+ <%= I18n.t('pageflow.editor.templates.publish_entry.password_help') %>
48
+ </span>
49
+ </label>
50
+ </div>
51
+
52
+ <div class="password_fields disabled">
53
+ <label>
54
+ <%= I18n.t('pageflow.editor.templates.publish_entry.user_name') %>
55
+ <input type="text" name="user_name" disabled>
56
+ </label>
26
57
 
27
- <div class="publish_until_fields disabled">
28
- <label><%= I18n.t('pageflow.editor.templates.publish_entry.date') %>
29
- <input type="text" name="publish_until">
30
- </label>
58
+ <label>
59
+ <%= I18n.t('pageflow.editor.templates.publish_entry.password') %>
60
+ <input type="text" name="password">
61
+ </label>
31
62
 
32
- <label><%= I18n.t('pageflow.editor.templates.publish_entry.time') %>
33
- <input type="text" name="publish_until_time" value="00:00">
34
- </label>
35
- </div>
63
+ <p class="already_published_with_password">
64
+ <%= I18n.t('pageflow.editor.templates.publish_entry.already_published_with_password_help') %>
65
+ </p>
66
+ <p class="previously_published_with_password">
67
+ <%= I18n.t('pageflow.editor.templates.publish_entry.previously_published_with_password_help') %>
68
+ </p>
69
+ <p class="already_published_without_password">
70
+ <%= I18n.t('pageflow.editor.templates.publish_entry.already_published_without_password_help') %>
71
+ </p>
36
72
  </div>
37
73
 
38
74
  <button class="save" disabled><%= I18n.t('pageflow.editor.templates.publish_entry.publish') %></a>
@@ -13,7 +13,9 @@ pageflow.ChapterItemView = Backbone.Marionette.ItemView.extend({
13
13
  },
14
14
 
15
15
  onRender: function() {
16
- this.subview(new pageflow.SortableCollectionView({
16
+ var collectionView = this.options.sortable ? pageflow.SortableCollectionView : pageflow.CollectionView;
17
+
18
+ this.subview(new collectionView({
17
19
  el: this.ui.pages,
18
20
  collection: this.model.pages,
19
21
  itemViewConstructor: this.options.pageItemView || pageflow.NavigatablePageItemView,
@@ -18,7 +18,7 @@ pageflow.ConfigurationEditorView.register('audio', {
18
18
 
19
19
  this.tab('options', function() {
20
20
  this.input('autoplay', pageflow.CheckBoxInputView);
21
- this.group('options');
21
+ this.group('options', {canPauseAtmo: true});
22
22
  });
23
23
  }
24
24
  });
@@ -1,5 +1,37 @@
1
- pageflow.ConfigurationEditorTabView.groups.define('options', function() {
1
+ pageflow.ConfigurationEditorTabView.groups.define('options', function(options) {
2
2
  this.input('display_in_navigation', pageflow.CheckBoxInputView);
3
- this.input('transition', pageflow.SelectInputView, {values: pageflow.Page.transitions});
3
+
4
+ if (pageflow.theming.supportsEmphasizedPages()) {
5
+ this.input('emphasize_in_navigation', pageflow.CheckBoxInputView);
6
+ }
7
+
8
+ this.group('page_transitions');
9
+
10
+ if (pageflow.features.isEnabled('delayed_text_fade_in')) {
11
+ this.input('delayed_text_fade_in', pageflow.SelectInputView, {values: pageflow.Page.delayedTextFadeIn});
12
+ }
13
+
4
14
  this.input('description', pageflow.TextAreaInputView, {size: 'short'});
15
+
16
+ if (pageflow.features.isEnabled('atmo')) {
17
+ this.input('atmo_audio_file_id', pageflow.FileInputView, {
18
+ collection: pageflow.audioFiles
19
+ });
20
+
21
+ if (options.canPauseAtmo) {
22
+ this.input('atmo_during_playback', pageflow.SelectInputView, {
23
+ values: pageflow.Atmo.duringPlaybackModes
24
+ });
25
+ }
26
+ }
27
+
28
+ if (pageflow.theming.supportsScrollIndicatorModes()) {
29
+ this.input('scroll_indicator_mode', pageflow.SelectInputView, {
30
+ values: pageflow.Page.scrollIndicatorModes
31
+ });
32
+
33
+ this.input('scroll_indicator_orientation', pageflow.SelectInputView, {
34
+ values: pageflow.Page.scrollIndicatorOrientations
35
+ });
36
+ }
5
37
  });
@@ -0,0 +1,6 @@
1
+ pageflow.ConfigurationEditorTabView.groups.define('page_transitions', function() {
2
+ this.input('transition', pageflow.SelectInputView, {
3
+ translationKeyPrefix: 'pageflow.page_transitions',
4
+ values: pageflow.pageTransitions.names()
5
+ });
6
+ });
@@ -28,7 +28,12 @@ pageflow.ConfigurationEditorView.register('video', {
28
28
 
29
29
  this.tab('options', function() {
30
30
  this.input('autoplay', pageflow.CheckBoxInputView);
31
- this.group('options');
31
+
32
+ if (pageflow.features.isEnabled('auto_change_page')) {
33
+ this.input('auto_change_page_on_ended', pageflow.CheckBoxInputView);
34
+ }
35
+
36
+ this.group('options', {canPauseAtmo: true});
32
37
  });
33
38
  }
34
39
  });
@@ -0,0 +1,27 @@
1
+ pageflow.DisabledAtmoIndicatorView = Backbone.Marionette.View.extend({
2
+ className: 'disabled_atmo_indicator',
3
+
4
+ events: {
5
+ 'click': function() {
6
+ pageflow.atmo.enable();
7
+ }
8
+ },
9
+
10
+ initialize: function() {
11
+ this.listenTo(pageflow.events, 'atmo:disabled', function() {
12
+ this.$el.show();
13
+ });
14
+
15
+ this.listenTo(pageflow.events, 'atmo:enabled', function() {
16
+ this.$el.hide();
17
+ });
18
+
19
+ this.$el.toggle(pageflow.atmo.disabled);
20
+ },
21
+
22
+ render: function() {
23
+ this.$el.attr('title', I18n.t('pageflow.editor.atmo.disabled'));
24
+
25
+ return this;
26
+ }
27
+ });
@@ -0,0 +1,33 @@
1
+ /** @api private */
2
+ pageflow.DropDownButtonItemView = Backbone.Marionette.ItemView.extend({
3
+ template: 'pageflow/editor/templates/drop_down_button_item',
4
+ tagName: 'li',
5
+ className: 'drop_down_button_item',
6
+
7
+ ui: {
8
+ link: '> a'
9
+ },
10
+
11
+ events: {
12
+ 'click > a': function() {
13
+ if (!this.model.get('disabled')) {
14
+ this.model.selected();
15
+ }
16
+
17
+ return false;
18
+ }
19
+ },
20
+
21
+ modelEvents: {
22
+ change: 'update'
23
+ },
24
+
25
+ onRender: function() {
26
+ this.update();
27
+ },
28
+
29
+ update: function() {
30
+ this.ui.link.text(this.model.get('label'));
31
+ this.$el.toggleClass('is_disabled', !!this.model.get('disabled'));
32
+ }
33
+ });
@@ -0,0 +1,80 @@
1
+ /**
2
+ * A button that displays a drop down menu on hover.
3
+ *
4
+ * @option label [String]
5
+ * @options items [Backbone.Collection] The `label` attribute is used
6
+ * as text for the item. Items can be disabled by setting the
7
+ * `disabled` property to `true`. On click a `selected` method is
8
+ * called on the item model.
9
+ */
10
+ pageflow.DropDownButtonView = Backbone.Marionette.ItemView.extend({
11
+ template: 'pageflow/editor/templates/drop_down_button',
12
+ className: 'drop_down_button',
13
+
14
+ ui: {
15
+ button: '> button',
16
+ menu: '.drop_down_button_menu',
17
+ items: '.drop_down_button_items'
18
+ },
19
+
20
+ events: {
21
+ 'mouseenter': function() {
22
+ this.positionMenu();
23
+ this.showMenu();
24
+ },
25
+
26
+ 'mouseleave': function() {
27
+ this.hideMenu();
28
+ }
29
+ },
30
+
31
+ onRender: function() {
32
+ var view = this;
33
+
34
+ this.ui.button.text(this.options.label);
35
+
36
+ this.subview(new pageflow.CollectionView({
37
+ el: this.ui.items,
38
+ collection: this.options.items,
39
+ itemViewConstructor: pageflow.DropDownButtonItemView
40
+ }));
41
+
42
+ this.ui.menu.on({
43
+ 'mouseenter': function() {
44
+ view.showMenu();
45
+ },
46
+
47
+ 'mouseleave': function() {
48
+ view.hideMenu();
49
+ }
50
+ });
51
+
52
+ this.ui.menu.appendTo('#editor_menu_container');
53
+ },
54
+
55
+ onClose: function() {
56
+ this.ui.menu.remove();
57
+ },
58
+
59
+ positionMenu: function() {
60
+ var offset = this.$el.offset();
61
+
62
+ this.ui.menu.css({
63
+ top: offset.top + this.$el.height(),
64
+ left: offset.left
65
+ });
66
+ },
67
+
68
+ showMenu: function() {
69
+ clearTimeout(this.hideMenuTimeout);
70
+ this.ui.menu.addClass('is_visible');
71
+ },
72
+
73
+ hideMenu: function() {
74
+ this.hideMenuTimeout = setTimeout(_.bind(function() {
75
+ if (!this.isClosed) {
76
+ this.ui.menu.removeClass('is_visible');
77
+ }
78
+ }, this), 500);
79
+ }
80
+ });