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
@@ -0,0 +1,26 @@
1
+ (function($) {
2
+ $.widget('pageflow.fullscreenButton', {
3
+ _create: function() {
4
+ pageflow.fullscreen.on('change', this.update, this);
5
+ this.update();
6
+
7
+ this.element.click(function() {
8
+ pageflow.fullscreen.toggle();
9
+ });
10
+
11
+ if (!pageflow.fullscreen.isSupported()) {
12
+ this.element.css('visibility', 'hidden');
13
+ }
14
+ },
15
+
16
+ _destroy: function() {
17
+ pageflow.fullscreen.off('change', this.update);
18
+ },
19
+
20
+ update: function() {
21
+ this.element
22
+ .toggleClass('active', !!pageflow.fullscreen.isActive())
23
+ .updateTitle();
24
+ }
25
+ });
26
+ }(jQuery));
@@ -3,18 +3,26 @@
3
3
  _create: function() {
4
4
  var widget = this;
5
5
 
6
+ function show() {
7
+ widget.element.show();
8
+ toggleContent(false);
9
+ }
10
+
11
+ function hide() {
12
+ widget.element.hide();
13
+ toggleContent(true);
14
+ }
15
+
6
16
  function toggleContent(state) {
7
17
  $('.page .content').toggleClass('initially_hidden', !state);
8
18
  $('.slideshow .scroll_indicator').toggleClass('initially_hidden', !state);
9
19
  }
10
20
 
11
21
  pageflow.manualStart.required().then(function(start) {
12
- widget.element.show();
13
- toggleContent(false);
22
+ show();
14
23
 
15
- widget.element.find('.close').on('click', function() {
16
- widget.element.hide();
17
- toggleContent(true);
24
+ widget.element.find('.close').one('click', function() {
25
+ hide();
18
26
 
19
27
  pageflow.events.trigger('button:close_multimedia_alert');
20
28
  start();
@@ -22,6 +30,14 @@
22
30
  return false;
23
31
  });
24
32
  });
33
+
34
+ pageflow.events.on('request:multimedia_alert', function() {
35
+ show();
36
+
37
+ widget.element.find('.close').one('click', function() {
38
+ hide();
39
+ });
40
+ }, this);
25
41
  }
26
42
  });
27
43
  }(jQuery));
@@ -0,0 +1,42 @@
1
+ (function($) {
2
+ $.widget('pageflow.muteButton', {
3
+ _create: function() {
4
+ var element = this.element;
5
+ var volumeBeforeMute = 1;
6
+
7
+ element.on('click', toggleMute);
8
+
9
+ pageflow.settings.on('change:volume', this.update, this);
10
+ this.update();
11
+
12
+ function toggleMute() {
13
+ if (pageflow.settings.get('volume') > 0) {
14
+ volumeBeforeMute = pageflow.settings.get('volume');
15
+ pageflow.settings.set('volume', 0);
16
+ }
17
+ else {
18
+ pageflow.settings.set('volume', volumeBeforeMute);
19
+ }
20
+ }
21
+ },
22
+
23
+ _destroy: function() {
24
+ pageflow.settings.off('change:volume', this.update);
25
+ },
26
+
27
+ update: function() {
28
+ var volume = pageflow.settings.get('volume');
29
+
30
+ if (volume === 0) {
31
+ this.element
32
+ .attr('title', this.element.attr('data-muted-title'))
33
+ .addClass('muted');
34
+ }
35
+ else {
36
+ this.element
37
+ .attr('title', this.element.attr('data-not-muted-title'))
38
+ .removeClass('muted');
39
+ }
40
+ }
41
+ });
42
+ }(jQuery));
@@ -15,68 +15,13 @@
15
15
  $('.navigation_bar_bottom', element)
16
16
  .append($('.navigation_bar_top > li', element).slice(hasHomeButton ? 4 : 3));
17
17
 
18
- /* Volume */
19
18
 
20
- var handlingVolume = false;
21
- var volumeBeforeMute = 1;
22
- var muteButton = $('.navigation_bg.navigation_mute', element);
23
-
24
- var changeVolume = function(event) {
25
- var volume = (event.pageX - $('.volume-slider', element).offset().left) / $(('.volume-slider')).width();
26
- if (volume > 1) { volume = 1; }
27
- if (volume < 0) { volume = 0; }
28
- setVolume(volume);
29
- };
30
-
31
- var setVolume = function(volume) {
32
- $('.volume-level', element).css({width: volume * 100 + "%"});
33
- pageflow.settings.set('volume', volume);
34
-
35
- if (volume === 0) {
36
- muteButton
37
- .attr('title', muteButton.attr('data-muted-title'))
38
- .addClass('muted');
39
- }
40
- else {
41
- muteButton
42
- .attr('title', muteButton.attr('data-not-muted-title'))
43
- .removeClass('muted');
44
- }
45
- };
46
-
47
- var toggleMute = function () {
48
- if (pageflow.settings.get('volume') > 0) {
49
- volumeBeforeMute = pageflow.settings.get('volume');
50
- setVolume(0);
51
- }
52
- else {
53
- setVolume(volumeBeforeMute);
54
- }
55
- };
56
-
57
- muteButton.on("click", function() {
58
- toggleMute();
59
- });
60
-
61
- $('.volume-level', element).css({
62
- width: pageflow.settings.get("volume") * 100 + "%"
63
- });
64
-
65
- $('.navigation_volume_box', element).on("mousedown", function(event) {
66
- handlingVolume = true;
67
- changeVolume(event);
68
- });
69
-
70
- $('.navigation_volume_box', element).on("mousemove", function(event) {
71
- if(handlingVolume) {
72
- changeVolume(event);
73
- }
74
- });
75
-
76
- setVolume(pageflow.settings.get('volume'));
19
+ $('.navigation_volume_box', element).volumeSlider({orientation: 'h'});
20
+ $('.navigation_mute', element).muteButton();
77
21
 
78
22
  /* hide volume button on mobile devices */
79
- if (pageflow.features.has('mobile platform')) {
23
+
24
+ if (pageflow.browser.has('mobile platform')) {
80
25
  $('li.mute', element).hide();
81
26
  $('.navigation_bar_bottom', element).css('height', '224px');
82
27
  $('.scroller', element).css('bottom', '224px');
@@ -307,22 +252,7 @@
307
252
  });
308
253
 
309
254
  /* fullscreen button */
310
- if ($.support.fullscreen) {
311
- var fs = $('.navigation_fullscreen', element),
312
- fullscreenCallback = function(isFullScreen) {
313
- fs
314
- .toggleClass('active', !!isFullScreen)
315
- .updateTitle();
316
- };
317
-
318
- fs.click(function() {
319
- fs.toggleClass('fs').updateTitle();
320
- $('#outer_wrapper').fullScreen({'callback': fullscreenCallback});
321
- });
322
- }
323
- else {
324
- $('.navigation_bar_bottom .fullscreen a', element).css('visibility', 'hidden');
325
- }
255
+ $('.navigation_bar_bottom .fullscreen a', element).fullscreenButton();
326
256
 
327
257
  $('.button, .navigation_mute, .scroll_indicator', element).on({
328
258
  'touchstart mousedown': function() {
@@ -353,9 +283,6 @@
353
283
  });
354
284
 
355
285
  $('body').on({
356
- 'mouseup': function() {
357
- handlingVolume = false;
358
- },
359
286
  'pageactivate': function(e) {
360
287
  toggleIndicators();
361
288
  }
@@ -29,6 +29,10 @@
29
29
  $(element).removeClass('sharing');
30
30
  });
31
31
 
32
+ $('.imprint_mobile a', element).on('click touchstart', function(event) {
33
+ event.stopPropagation();
34
+ });
35
+
32
36
  $('.wrapper', element).each(function() {
33
37
  var sharingMobile = $(this).parents('.sharing_mobile');
34
38
 
@@ -6,32 +6,36 @@
6
6
  var scroller = options.scroller;
7
7
  var links = element.find('a[href]');
8
8
 
9
+ var chapterFilter = pageflow.ChapterFilter.create();
10
+ var highlightedPage = pageflow.HighlightedPage.create();
11
+
9
12
  pageflow.ready.then(function() {
10
13
  highlightUnvisitedPages(pageflow.visited.getUnvisitedPages());
11
- highlightActivePage(getPageId(pageflow.slides.currentPage()));
14
+ update(getPagePermaId(pageflow.slides.currentPage()));
12
15
  });
13
16
 
14
17
  pageflow.slides.on('pageactivate', function(e) {
15
18
  setPageVisited(e.target.getAttribute('id'));
16
- highlightActivePage(getPageId(e.target));
19
+ update(getPagePermaId(e.target));
17
20
  });
18
21
 
19
- function getPageId(section) {
20
- return $(section).attr('id') || ($(section).attr('data-perma-id') || '').toString();
22
+ function getPagePermaId(section) {
23
+ return parseInt($(section).attr('id') || $(section).attr('data-perma-id'), 10);
21
24
  }
22
25
 
23
- function highlightActivePage(id) {
24
- var displayPageId = _.find(pageIdsUpUntil(id).reverse(), function(id) {
25
- return links.filter('[href="#' + id + '"]').length;
26
- });
26
+ function update(currentPagePermaId) {
27
+ var highlightedPagePermaId = highlightedPage.getPagePermaId(currentPagePermaId);
27
28
 
28
- highlightPage(displayPageId);
29
+ element.toggleClass('inside_sub_chapter', highlightedPagePermaId !== currentPagePermaId);
30
+
31
+ highlightPage(highlightedPagePermaId);
32
+ filterChapters(currentPagePermaId);
29
33
  }
30
34
 
31
- function highlightPage(id) {
35
+ function highlightPage(permaId) {
32
36
  links.each(function() {
33
37
  var link = $(this);
34
- var active = '#' + id === link.attr('href');
38
+ var active = '#' + permaId === link.attr('href');
35
39
 
36
40
  link.toggleClass('active', active);
37
41
  link.attr('tabindex', active ? '-1' : '3');
@@ -57,29 +61,6 @@
57
61
  });
58
62
  }
59
63
 
60
- function pageIdsUpUntil(id) {
61
- var found = false;
62
-
63
- return _.filter(pageIds(), function(other) {
64
- var result = !found;
65
- found = found || (id === other);
66
- return result;
67
- });
68
- }
69
-
70
- function pageIds() {
71
- if (_.isArray(pageflow.pages)) {
72
- return _.map(pageflow.pages, function(page) {
73
- return page.perma_id.toString();
74
- });
75
- }
76
- else {
77
- return pageflow.pages.map(function(page) {
78
- return page.get('perma_id').toString();
79
- });
80
- }
81
- }
82
-
83
64
  function highlightUnvisitedPages(ids) {
84
65
  links.each(function() {
85
66
  var link = $(this);
@@ -92,6 +73,19 @@
92
73
  function setPageVisited(id) {
93
74
  element.find('[href="#' + id + '"]').removeClass('unvisited');
94
75
  }
76
+
77
+ function filterChapters(currentPagePermaId) {
78
+ links.each(function() {
79
+ var link = $(this);
80
+
81
+ link.toggleClass('filtered', !chapterFilter.chapterVisibleFromPage(
82
+ currentPagePermaId,
83
+ link.data('chapterId')
84
+ ));
85
+ });
86
+
87
+ scroller.refresh();
88
+ }
95
89
  }
96
90
  });
97
91
  }(jQuery));
@@ -0,0 +1,27 @@
1
+ (function($) {
2
+ $.widget('pageflow.parentPageButton', {
3
+ _create: function() {
4
+ var element = this.element;
5
+
6
+ element.click(function(event) {
7
+ pageflow.slides.goToParentPage();
8
+ event.preventDefault();
9
+ });
10
+
11
+ pageflow.slides.on('pageactivate', function(e, ui) {
12
+ update();
13
+ });
14
+
15
+ update();
16
+
17
+ function update() {
18
+ var pagePermaId = parseInt(pageflow.slides.currentPage().attr('id'), 10);
19
+ var chapterId = pageflow.entryData.getChapterIdByPagePermaId(pagePermaId);
20
+ var chapterConfiguration = pageflow.entryData.getChapterConfiguration(chapterId);
21
+
22
+ element.toggle(pageflow.slides.parentPageExists() &&
23
+ chapterConfiguration.display_parent_page_button);
24
+ }
25
+ }
26
+ });
27
+ }(jQuery));
@@ -0,0 +1,22 @@
1
+ (function($) {
2
+ $.widget('pageflow.skipPageButton', {
3
+ _create: function() {
4
+ this.element.on('click', function() {
5
+ pageflow.slides.next();
6
+ });
7
+
8
+ pageflow.events.on('page:change page:update', this.update, this);
9
+ this.update();
10
+ },
11
+
12
+ _destroy: function() {
13
+ pageflow.events.off(null, this.update);
14
+ },
15
+
16
+ update: function() {
17
+ if (pageflow.slides) {
18
+ this.element.toggleClass('enabled', !!pageflow.slides.nextPageExists());
19
+ }
20
+ }
21
+ });
22
+ }(jQuery));
@@ -4,22 +4,21 @@
4
4
  var element = this.element;
5
5
 
6
6
  element.click(function(event) {
7
- pageflow.slides.goToById(element.data('link'));
7
+ pageflow.slides.goToLandingPage();
8
8
  event.preventDefault();
9
9
  });
10
10
 
11
11
  pageflow.slides.on('pageactivate', function(e, ui) {
12
- toggle($(e.target));
12
+ toggle();
13
13
  });
14
14
 
15
15
  toggle(pageflow.slides.currentPage());
16
16
 
17
- function toggle(currentPage) {
18
- var currentPageId = currentPage.data('id');
19
- var onFirstPage = (currentPageId === element.data('link'));
17
+ function toggle() {
18
+ var onLandingPage = pageflow.slides.isOnLandingPage();
20
19
 
21
- element.toggleClass('deactivated', onFirstPage);
22
- element.attr('tabindex', onFirstPage ? '-1' : '2');
20
+ element.toggleClass('deactivated', onLandingPage);
21
+ element.attr('tabindex', onLandingPage ? '-1' : '2');
23
22
  }
24
23
  }
25
24
  });
@@ -0,0 +1,62 @@
1
+ (function($) {
2
+ $.widget('pageflow.volumeSlider', {
3
+ _create: function() {
4
+ var element = this.element;
5
+ var orientation = this.options.orientation;
6
+ var slider = $('.volume-slider', element);
7
+ var handlingVolume = false;
8
+
9
+ element.on('mousedown', function(event) {
10
+ var parent = $('body');
11
+
12
+ parent.on('mousemove.volumeSlider', changeVolume);
13
+ element.addClass('lock_showing');
14
+
15
+ parent.on('mouseup.volumeSlider', function() {
16
+ parent.off('mousemove.volumeSlider mouseup.volumeSlider');
17
+ element.removeClass('lock_showing');
18
+ });
19
+
20
+ changeVolume(event);
21
+
22
+ function changeVolume(event) {
23
+ var volume;
24
+
25
+ if (orientation === 'v') {
26
+ volume = 1 - (event.pageY - slider.offset().top) / slider.height();
27
+ }
28
+ else {
29
+ volume = (event.pageX - slider.offset().left) / slider.width();
30
+ }
31
+
32
+ pageflow.settings.set('volume', Math.min(1, Math.max(0, volume)));
33
+ }
34
+ });
35
+
36
+ pageflow.settings.on('change:volume', this.update, this);
37
+ this.update();
38
+ },
39
+
40
+ _destroy: function() {
41
+ pageflow.settings.off('change:volume', this.update);
42
+ },
43
+
44
+ update: function() {
45
+ var volume = pageflow.settings.get('volume');
46
+
47
+ if (this.options.orientation === 'v') {
48
+ $('.volume-level', this.element).css({height: volume * 100 + '%'});
49
+ $('.volume-handle', this.element).css({bottom: volume * 100 + '%', top: 'initial'});
50
+ }
51
+ else {
52
+ $('.volume-level', this.element).css({width: volume * 100 + '%'});
53
+ $('.volume-handle', this.element).css({left: volume * 100 + '%'});
54
+ }
55
+
56
+ this.element.toggleClass('volume-high', volume > 2 / 3);
57
+ this.element.toggleClass('volume-medium', volume >= 1 / 3 && volume <= 2 / 3 );
58
+ this.element.toggleClass('volume-low', volume < 1 / 3 && volume > 0);
59
+ this.element.toggleClass('volume-mute', volume === 0);
60
+ }
61
+ });
62
+ }(jQuery));