pageflow 0.5.0 → 0.6.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 (197) hide show
  1. checksums.yaml +8 -8
  2. data/Rakefile +2 -1
  3. data/admins/pageflow/accounts.rb +20 -4
  4. data/admins/pageflow/entry.rb +4 -5
  5. data/app/assets/javascripts/pageflow/audio_player.js +16 -7
  6. data/app/assets/javascripts/pageflow/base.js +5 -0
  7. data/app/assets/javascripts/pageflow/built_in_widget_types.js +11 -0
  8. data/app/assets/javascripts/pageflow/cookies.js +43 -0
  9. data/app/assets/javascripts/pageflow/editor/base.js +2 -10
  10. data/app/assets/javascripts/pageflow/editor/collections/widgets_collection.js +16 -0
  11. data/app/assets/javascripts/pageflow/editor/controllers/sidebar_controller.js +3 -2
  12. data/app/assets/javascripts/pageflow/editor/edit_widget.jst.ejs +2 -0
  13. data/app/assets/javascripts/pageflow/editor/initializers/setup_widget_types.js +3 -0
  14. data/app/assets/javascripts/pageflow/editor/models/configuration.js +18 -9
  15. data/app/assets/javascripts/pageflow/editor/models/edit_lock_container.js +1 -0
  16. data/app/assets/javascripts/pageflow/editor/models/entry.js +13 -3
  17. data/app/assets/javascripts/pageflow/editor/models/entry_configuration.js +4 -0
  18. data/app/assets/javascripts/pageflow/editor/models/entry_configuration_file_selection_handler.js +11 -0
  19. data/app/assets/javascripts/pageflow/editor/models/image_file.js +4 -0
  20. data/app/assets/javascripts/pageflow/editor/models/mixins/widget_subject.js +37 -0
  21. data/app/assets/javascripts/pageflow/editor/models/page.js +1 -1
  22. data/app/assets/javascripts/pageflow/editor/models/page_configuration_file_selection_handler.js +1 -25
  23. data/app/assets/javascripts/pageflow/editor/models/theming.js +3 -0
  24. data/app/assets/javascripts/pageflow/editor/models/video_file.js +7 -0
  25. data/app/assets/javascripts/pageflow/editor/models/widget.js +19 -0
  26. data/app/assets/javascripts/pageflow/editor/routers/sidebar_router.js +1 -0
  27. data/app/assets/javascripts/pageflow/editor/templates/background_positioning.jst.ejs +18 -0
  28. data/app/assets/javascripts/pageflow/editor/templates/background_positioning_preview.jst.ejs +2 -0
  29. data/app/assets/javascripts/pageflow/editor/templates/background_positioning_sliders.jst.ejs +6 -0
  30. data/app/assets/javascripts/pageflow/editor/templates/edit_meta_data.jst.ejs +1 -1
  31. data/app/assets/javascripts/pageflow/editor/templates/edit_widget.jst.ejs +2 -0
  32. data/app/assets/javascripts/pageflow/editor/templates/edit_widgets.jst.ejs +2 -0
  33. data/app/assets/javascripts/pageflow/editor/templates/entry_preview.jst.ejs +1 -3
  34. data/app/assets/javascripts/pageflow/editor/views/background_positioning_preview_view.js +39 -0
  35. data/app/assets/javascripts/pageflow/editor/views/background_positioning_sliders_view.js +94 -0
  36. data/app/assets/javascripts/pageflow/editor/views/background_positioning_view.js +67 -0
  37. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/audio.js +1 -1
  38. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/audio_loop.js +1 -1
  39. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/background_image.js +1 -1
  40. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/background_video.js +4 -3
  41. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/internal_links.js +1 -1
  42. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/video.js +9 -2
  43. data/app/assets/javascripts/pageflow/editor/views/edit_meta_data_view.js +18 -2
  44. data/app/assets/javascripts/pageflow/editor/views/edit_widget_view.js +29 -0
  45. data/app/assets/javascripts/pageflow/editor/views/edit_widgets_view.js +20 -0
  46. data/app/assets/javascripts/pageflow/editor/views/embedded/background_image_embedded_view.js +8 -3
  47. data/app/assets/javascripts/pageflow/editor/views/entry_preview_view.js +53 -9
  48. data/app/assets/javascripts/pageflow/editor/views/page_item_view.js +1 -1
  49. data/app/assets/javascripts/pageflow/editor/views/page_preview_view.js +11 -3
  50. data/app/assets/javascripts/pageflow/events.js +1 -0
  51. data/app/assets/javascripts/pageflow/features/hashchange_support.js +8 -0
  52. data/app/assets/javascripts/pageflow/history.js +14 -2
  53. data/app/assets/javascripts/pageflow/page_types/audio.js +18 -6
  54. data/app/assets/javascripts/pageflow/page_types/audio_loop.js +19 -7
  55. data/app/assets/javascripts/pageflow/page_types/background_video.js +41 -33
  56. data/app/assets/javascripts/pageflow/page_types/mixins/video_helpers.js +7 -16
  57. data/app/assets/javascripts/pageflow/ready.js +12 -25
  58. data/app/assets/javascripts/pageflow/slideshow.js +5 -5
  59. data/app/assets/javascripts/pageflow/slideshow/hide_text_on_swipe.js +1 -1
  60. data/app/assets/javascripts/pageflow/slideshow/page_widget.js +11 -1
  61. data/app/assets/javascripts/pageflow/slideshow/scroll_indicator_widget.js +19 -2
  62. data/app/assets/javascripts/pageflow/slideshow/scroller_widget.js +31 -6
  63. data/app/assets/javascripts/pageflow/slideshow/swipe_gesture.js +6 -5
  64. data/app/assets/javascripts/pageflow/ui.js +16 -0
  65. data/app/assets/javascripts/pageflow/{editor → ui}/object.js +0 -0
  66. data/app/assets/javascripts/pageflow/{editor → ui}/renderer.js +0 -0
  67. data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/check_box.jst.ejs +0 -0
  68. data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/file_input.jst.ejs +0 -0
  69. data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/page_reference.jst.ejs +0 -0
  70. data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/select_input.jst.ejs +0 -0
  71. data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/slider_input.jst.ejs +0 -0
  72. data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/text_area_input.jst.ejs +0 -0
  73. data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/text_input.jst.ejs +0 -0
  74. data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/url_input.jst.ejs +0 -0
  75. data/app/assets/javascripts/pageflow/{editor → ui}/templates/tabs_view.jst.ejs +0 -0
  76. data/app/assets/javascripts/pageflow/{editor → ui}/views/collection_view.js +0 -0
  77. data/app/assets/javascripts/pageflow/{editor → ui}/views/configuration_editor_tab_view.js +8 -1
  78. data/app/assets/javascripts/pageflow/{editor → ui}/views/configuration_editor_view.js +3 -1
  79. data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/check_box_input_view.js +1 -1
  80. data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/file_input_view.js +10 -8
  81. data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/page_reference_input_view.js +1 -1
  82. data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/proxy_url_input_view.js +0 -0
  83. data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/select_input_view.js +41 -1
  84. data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/slider_input_view.js +1 -1
  85. data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/text_area_input_view.js +1 -1
  86. data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/text_input_view.js +8 -2
  87. data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/url_input_view.js +9 -3
  88. data/app/assets/javascripts/pageflow/{editor/views → ui/views/mixins}/input_view.js +5 -1
  89. data/app/assets/javascripts/pageflow/{editor → ui}/views/mixins/subview_container.js +0 -0
  90. data/app/assets/javascripts/pageflow/{editor → ui}/views/sortable_collection_view.js +0 -0
  91. data/app/assets/javascripts/pageflow/{editor → ui}/views/tabs_view.js +11 -2
  92. data/app/assets/javascripts/pageflow/video_player/lazy.js +4 -1
  93. data/app/assets/javascripts/pageflow/visited.js +56 -0
  94. data/app/assets/javascripts/pageflow/widget_types.js +27 -0
  95. data/app/assets/javascripts/pageflow/widgets/events.js +33 -0
  96. data/app/assets/javascripts/pageflow/widgets/navigation.js +42 -33
  97. data/app/assets/javascripts/pageflow/widgets/navigation_mobile.js +60 -38
  98. data/app/assets/javascripts/pageflow/widgets/overview.js +3 -3
  99. data/app/assets/javascripts/pageflow/widgets/page_navigation_list.js +34 -4
  100. data/app/assets/javascripts/pageflow/widgets/share_menu.js +60 -0
  101. data/app/assets/stylesheets/pageflow/admin.css.scss +1 -0
  102. data/app/assets/stylesheets/pageflow/admin/tabs_view.css.scss +50 -0
  103. data/app/assets/stylesheets/pageflow/application_with_simulated_media_queries.css.scss +2 -0
  104. data/app/assets/stylesheets/pageflow/base.css.scss +2 -1
  105. data/app/assets/stylesheets/pageflow/editor/{image_positioning.css.scss → background_positioning.css.scss} +66 -65
  106. data/app/assets/stylesheets/pageflow/editor/base.css.scss +7 -5
  107. data/app/assets/stylesheets/pageflow/editor/file_thumbnails.css.scss +7 -9
  108. data/app/assets/stylesheets/pageflow/editor/select_button.css.scss +4 -4
  109. data/app/assets/stylesheets/pageflow/editor/widgets.css.scss +4 -0
  110. data/app/assets/stylesheets/pageflow/entries.css.scss +5 -0
  111. data/app/assets/stylesheets/pageflow/mixins/breakpoints.css.scss +75 -10
  112. data/app/assets/stylesheets/pageflow/multimedia_alert.css.scss +31 -30
  113. data/app/assets/stylesheets/pageflow/navigation_bar.css.scss +4 -0
  114. data/app/assets/stylesheets/pageflow/navigation_mobile.css.scss +57 -58
  115. data/app/assets/stylesheets/pageflow/player_controls.css.scss +2 -2
  116. data/app/assets/stylesheets/pageflow/slideshow.css.scss +4 -1
  117. data/app/assets/stylesheets/pageflow/subshare.css.scss +28 -0
  118. data/app/assets/stylesheets/pageflow/ui.css.scss +7 -0
  119. data/app/assets/stylesheets/pageflow/{editor → ui}/forms.css.scss +1 -0
  120. data/app/assets/stylesheets/pageflow/{editor → ui}/tabs_view.css.scss +1 -0
  121. data/app/controllers/pageflow/editor/widgets_controller.rb +39 -0
  122. data/app/controllers/pageflow/entries_controller.rb +10 -1
  123. data/app/helpers/pageflow/entries_helper.rb +7 -0
  124. data/app/helpers/pageflow/page_types_helper.rb +7 -7
  125. data/app/helpers/pageflow/pages_helper.rb +36 -5
  126. data/app/helpers/pageflow/social_share_helper.rb +54 -0
  127. data/app/helpers/pageflow/widgets_helper.rb +43 -0
  128. data/app/models/pageflow/draft_entry.rb +4 -1
  129. data/app/models/pageflow/entry.rb +1 -0
  130. data/app/models/pageflow/published_entry.rb +6 -3
  131. data/app/models/pageflow/revision.rb +5 -0
  132. data/app/models/pageflow/theming.rb +3 -0
  133. data/app/models/pageflow/widget.rb +74 -0
  134. data/app/views/admin/accounts/_form.html.erb +10 -0
  135. data/app/views/components/pageflow/admin/entries_tab.rb +22 -0
  136. data/app/views/components/pageflow/admin/members_tab.rb +35 -0
  137. data/app/views/components/pageflow/admin/revisions_tab.rb +51 -0
  138. data/app/views/components/pageflow/admin/tabs_view.rb +78 -0
  139. data/app/views/components/pageflow/admin/users_tab.rb +22 -0
  140. data/app/views/layouts/pageflow/application.html.erb +5 -5
  141. data/app/views/pageflow/editor/entries/_entry.json.jbuilder +7 -4
  142. data/app/views/pageflow/editor/files/_file.json.jbuilder +2 -2
  143. data/app/views/pageflow/editor/widgets/_widget.json.jbuilder +2 -0
  144. data/app/views/pageflow/editor/widgets/index.json.jbuilder +1 -0
  145. data/app/views/pageflow/entries/_entry.html.erb +6 -2
  146. data/app/views/pageflow/entries/_mobile_navigation.html.erb +56 -0
  147. data/app/views/pageflow/entries/_navigation.html.erb +3 -53
  148. data/app/views/pageflow/entries/edit.html.erb +2 -0
  149. data/app/views/pageflow/entries/navigation/_bar_top.html.erb +7 -3
  150. data/app/views/pageflow/entries/navigation/_page.html.erb +2 -2
  151. data/app/views/pageflow/entries/partials.html.erb +1 -1
  152. data/app/views/pageflow/entries/show.html.erb +12 -4
  153. data/app/views/pageflow/files/show.html.erb +5 -0
  154. data/app/views/pageflow/pages/templates/_audio_loop.html.erb +1 -1
  155. data/app/views/pageflow/pages/templates/_background_video.html.erb +2 -2
  156. data/app/views/pageflow/pages/templates/_video.html.erb +4 -3
  157. data/app/views/pageflow/{entries/_social_meta_tags.html.erb → social_share/_entry_meta_tags.html.erb} +2 -2
  158. data/app/views/pageflow/social_share/_image_tags.html.erb +3 -0
  159. data/app/views/pageflow/social_share/_page_meta_tags.html.erb +9 -0
  160. data/config/initializers/admin_resource_tabs.rb +7 -0
  161. data/config/initializers/paperclip.rb +1 -1
  162. data/config/initializers/view_components.rb +9 -1
  163. data/config/initializers/widget_types.rb +4 -0
  164. data/config/locales/activerecord.de.yml +5 -1
  165. data/config/locales/admin/tabs.de.yml +8 -0
  166. data/config/locales/editor.de.yml +5 -4
  167. data/config/locales/pageflow/editor/background_positioning.de.yml +13 -0
  168. data/config/locales/pageflow/ui.de.yml +6 -0
  169. data/config/locales/pageflow/widgets.de.yml +14 -0
  170. data/config/routes.rb +6 -0
  171. data/config/spring.rb +2 -1
  172. data/db/migrate/20141027102310_create_widgets.rb +11 -0
  173. data/db/migrate/20141028125408_add_emphasize_chapter_beginning_to_revisions.rb +5 -0
  174. data/db/migrate/20141119164526_add_emphasize_new_pages_to_revisions.rb +5 -0
  175. data/db/migrate/20141119174032_add_sharing_image_to_revisions.rb +7 -0
  176. data/lib/pageflow/ability_mixin.rb +2 -0
  177. data/lib/pageflow/admin/tabs.rb +18 -0
  178. data/lib/pageflow/built_in_widget_type.rb +27 -0
  179. data/lib/pageflow/configuration.rb +17 -0
  180. data/lib/pageflow/engine.rb +2 -0
  181. data/lib/pageflow/version.rb +1 -1
  182. data/lib/pageflow/widget_type.rb +52 -0
  183. data/lib/pageflow/widget_types.rb +50 -0
  184. data/spec/factories/audio_files.rb +1 -1
  185. data/spec/factories/chapters.rb +1 -1
  186. data/spec/factories/entries.rb +2 -2
  187. data/spec/factories/image_files.rb +1 -1
  188. data/spec/factories/video_files.rb +1 -1
  189. data/spec/factories/widgets.rb +6 -0
  190. data/vendor/assets/javascripts/audio5.min.js +3 -0
  191. metadata +104 -44
  192. data/app/assets/javascripts/pageflow/editor/templates/image_positioning.jst.ejs +0 -26
  193. data/app/assets/javascripts/pageflow/editor/views/image_positioning_view.js +0 -153
  194. data/app/views/admin/accounts/_entries_panel.html.arb +0 -15
  195. data/app/views/admin/accounts/_users_panel.html.arb +0 -15
  196. data/app/views/admin/entries/_members.html.arb +0 -29
  197. data/app/views/admin/entries/_revisions.html.arb +0 -45
@@ -20,21 +20,25 @@
20
20
  </li>
21
21
  <li class="navigation_menu share" tabindex="2">
22
22
  <div class="navigation_menu_box navigation_share_box">
23
- <%= link_to "http://www.facebook.com/sharer/sharer.php?s=100&p%5Burl%5D=#{ERB::Util.url_encode(pretty_entry_url(entry))}&p%5Btitle%5D=#{ERB::Util.url_encode(entry.title)}", :target => "_blank", :tabindex => "2", :class => "share facebook" do %>
23
+ <%= link_to "http://www.facebook.com/sharer/sharer.php?s=100&p%5Burl%5D=#{ERB::Util.url_encode(pretty_entry_url(entry))}&p%5Btitle%5D=#{ERB::Util.url_encode(entry.title)}", :target => "_blank", :tabindex => "2", :class => "share facebook", :data => { :"share-page" => "http://www.facebook.com/sharer/sharer.php?s=100&p%5Burl%5D=#{ERB::Util.url_encode(pretty_entry_url(entry))}%3Fpage%3DpermaId" } do %>
24
24
  <span class="hint">über facebook teilen</span>
25
25
  <span class="share_facebook button"></span>
26
26
  <p>facebook</p>
27
27
  <% end %>
28
- <%= link_to "http://twitter.com/home?status=#{ERB::Util.url_encode(pretty_entry_url(entry))}", :target => "_blank", :tabindex => "2", :class => "share twitter" do %>
28
+ <%= link_to "http://twitter.com/home?status=#{ERB::Util.url_encode(pretty_entry_url(entry))}", :target => "_blank", :tabindex => "2", :class => "share twitter", :data => { :"share-page" => "http://twitter.com/home?status=#{ERB::Util.url_encode(pretty_entry_url(entry))}%3Fpage%3DpermaId" } do %>
29
29
  <span class="hint">über twitter teilen</span>
30
30
  <span class="share_twitter button"></span>
31
31
  <p>twitter</p>
32
32
  <% end %>
33
- <%= link_to "https://plus.google.com/share?url=#{ERB::Util.url_encode(pretty_entry_url(entry))}", :target => "_blank", :tabindex => "2", :class => "share google" do %>
33
+ <%= link_to "https://plus.google.com/share?url=#{ERB::Util.url_encode(pretty_entry_url(entry))}", :target => "_blank", :tabindex => "2", :class => "share google", :data => { :"share-page" => "https://plus.google.com/share?url=#{ERB::Util.url_encode(pretty_entry_url(entry))}%3Fpage%3DpermaId" } do %>
34
34
  <span class="hint">über Google+ teilen</span>
35
35
  <span class="share_google button"></span>
36
36
  <p>google</p>
37
37
  <% end %>
38
+ <div class="sub_share">
39
+ <a tabindex="2" target="_blank"><%= I18n.t('pageflow.widgets.share_menu.entry') %></a>
40
+ <a tabindex="2" target="_blank"><%= I18n.t('pageflow.widgets.share_menu.current_page') %></a>
41
+ </div>
38
42
  </div>
39
43
  <a title="Angebot weiterempfehlen">
40
44
  <span class="hint">teilen</span>
@@ -1,10 +1,10 @@
1
- <li class="<%= page.template %>">
1
+ <li class="<%= page_navigation_css_class(page) %>">
2
2
  <%= link_to "##{page.perma_id}", :data => {:link => page.id} do %>
3
3
  <%= image_tag(page.thumbnail_url(image_style), :width => image_width) %>
4
4
  <% end %>
5
5
  <div class="navigation_site_detail">
6
6
  <%= page.title %>
7
7
 
8
- <%= image_tag("pageflow/#{page.template}_pictogram.png", :style => "background-image: url('#{page.thumbnail_url(:navigation_thumbnail_large)}')") %>
8
+ <%= image_tag("pageflow/#{page.template}_pictogram.png", :style => "background-image: url('#{asset_path(page.thumbnail_url(:navigation_thumbnail_large))}')") %>
9
9
  </div>
10
10
  </li>
@@ -1,3 +1,3 @@
1
1
  <%= render 'pageflow/entries/header', :entry => @entry %>
2
- <%= render 'pageflow/entries/navigation', :entry => @entry %>
3
2
  <%= render 'pageflow/entries/overview', :entry => @entry %>
3
+ <%= render_widgets(@entry, only: :editor) %>
@@ -1,10 +1,16 @@
1
1
  <% @page_title = @entry.title %>
2
2
 
3
3
  <% content_for(:head) do %>
4
- <%= entry_theme_stylesheet_link_tag(@entry) %>
5
- <%= entry_stylesheet_link_tag(@entry) %>
6
- <%= render 'pageflow/entries/social_meta_tags', :entry => @entry %>
7
- <%= tag :link, :rel => 'icon', :href => image_path("#{@entry.theming.theme.directory_name}/favicon.ico"), :type => 'image/ico' %>
4
+ <%= cache [@entry, :head] do %>
5
+ <%= stylesheet_link_tag('pageflow/application', media: 'all', 'data-turbolinks-track' => true) %>
6
+ <%= entry_theme_stylesheet_link_tag(@entry) %>
7
+ <%= entry_stylesheet_link_tag(@entry) %>
8
+
9
+ <%= social_share_meta_tags_for(@entry.share_target) %>
10
+ <%= render_widget_head_fragments(@entry) %>
11
+
12
+ <%= tag :link, :rel => 'icon', :href => image_path("pageflow/themes/#{@entry.theming.theme.directory_name}/favicon.ico"), :type => 'image/ico' %>
13
+ <% end %>
8
14
  <% end %>
9
15
 
10
16
  <%= cache @entry do %>
@@ -16,7 +22,9 @@
16
22
 
17
23
  <script>
18
24
  pageflow.manualStart.enabled = <%= @entry.manual_start ? 'true' : 'false' %>;
25
+ pageflow.visited.enabled = <%= @entry.emphasize_new_pages ? 'true' : 'false' %>;
19
26
  pageflow.pages = <%= @entry.pages.to_json(:only => [:id, :perma_id, :configuration]).html_safe %>;
27
+ pageflow.entryId = <%= @entry.id %>;
20
28
  </script>
21
29
 
22
30
  <%= render 'pageflow/entries/analytics', :entry => @entry %>
@@ -1 +1,6 @@
1
+ <% content_for(:head) do %>
2
+ <%= tag(:meta, name: :robots, content: 'noindex,nofollow') %>
3
+ <%= stylesheet_link_tag('pageflow/application', media: 'all', 'data-turbolinks-track' => true) %>
4
+ <% end %>
5
+
1
6
  <%= render(@file) %>
@@ -12,7 +12,7 @@
12
12
  <span class="title"><%= configuration['title'] %></span>
13
13
  <span class="subtitle"><%= configuration['subtitle'] %></span>
14
14
  </h2>
15
- <%= background_image_tag(configuration['background_image_id'], {"class" => "print_image"}) %>
15
+ <%= background_image_tag(configuration['background_image_id'], {:class => "print_image"}) %>
16
16
  </div>
17
17
 
18
18
  <div class="content">
@@ -1,7 +1,7 @@
1
1
  <div class="blackLayer"></div>
2
2
  <div class="content_and_background backgroundVideo">
3
3
  <div class="backgroundArea">
4
- <%= poster_image_div(configuration['video_file_id'], configuration['poster_image_id']) %>
4
+ <%= mobile_poster_image_div(configuration) %>
5
5
  <span class="hint">Video Loop</span>
6
6
  <%= lookup_video_tag(configuration['video_file_id'],
7
7
  configuration['poster_image_id'], :class => 'background', :loop => true, :unique_id => page.id, :preload => page.is_first) %>
@@ -16,7 +16,7 @@
16
16
  <span class="title"><%= configuration['title'] %></span>
17
17
  <span class="subtitle"><%= configuration['subtitle'] %></span>
18
18
  </h2>
19
- <%= poster_image_tag(configuration['video_file_id'], configuration['poster_image_id'], {"class" => "print_image"}) %>
19
+ <%= poster_image_tag(configuration['video_file_id'], configuration['poster_image_id'], {:class => "print_image"}) %>
20
20
  </div>
21
21
  <div class="contentText">
22
22
  <p><%= raw configuration['text'] %></p>
@@ -1,4 +1,3 @@
1
-
2
1
  <div class="blackLayer"></div>
3
2
  <div class="content_and_background videoPage">
4
3
  <div class="page_header">
@@ -7,11 +6,13 @@
7
6
  <span class="title"><%= configuration['title'] %></span>
8
7
  <span class="subtitle"><%= configuration['subtitle'] %></span>
9
8
  </h2>
10
- <%= poster_image_tag(configuration['video_file_id'], configuration['poster_image_id'], {"class" => "print_image"}) %>
9
+ <%= poster_image_tag(configuration['video_file_id'], configuration['poster_image_id'], {:class => "print_image"}) %>
11
10
  </div>
12
11
  <div class="backgroundArea">
13
12
  <div class="videoWrapper">
14
- <%= lookup_video_tag(configuration['video_file_id'], configuration['poster_image_id'], :unique_id => page.id, :preload => page.is_first) %>
13
+ <%= lookup_video_tag(configuration['video_file_id'], configuration['poster_image_id'],
14
+ :mobile_poster_image_id => configuration['mobile_poster_image_id'],
15
+ :unique_id => page.id, :preload => page.is_first) %>
15
16
  </div>
16
17
  <%= shadow_div :opacity => configuration['gradient_opacity'] %>
17
18
  </div>
@@ -1,9 +1,9 @@
1
1
  <%= tag :link, :rel => "canonical", :href => pretty_entry_url(entry) %>
2
2
 
3
- <%= tag :meta, :property => "og:image:url", :content => entry.thumbnail_url(:medium).gsub('https://', 'http://') %>
3
+ <%= social_share_entry_image_tags(entry) %>
4
4
 
5
5
  <%= tag :meta, :property => "og:title", :content => "#{entry.title} - #{entry.theming.cname_domain}" %>
6
6
  <%= tag :meta, :property => "og:description", :name => "description", :content => entry_summary(entry) %>
7
7
  <%= tag :meta, :property => "og:url", :content => pretty_entry_url(entry) %>
8
8
  <%= tag :meta, :property => "og:site_name", :content => entry.theming.cname_domain %>
9
- <%= tag :meta, :property => "og:type", :content => "article" %>
9
+ <%= tag :meta, :property => "og:type", :content => "website" %>
@@ -0,0 +1,3 @@
1
+ <% image_urls.each do |image_url| %>
2
+ <%= tag :meta, :property => "og:image", :content => social_share_normalize_protocol(image_url) %>
3
+ <% end %>
@@ -0,0 +1,9 @@
1
+ <%= tag :link, :rel => "canonical", :href => social_share_page_url(page) %>
2
+
3
+ <%= tag :meta, :property => "og:image", :content => social_share_normalize_protocol(page.thumbnail_url(:medium)) %>
4
+
5
+ <%= tag :meta, :property => "og:title", :content => social_share_page_title(page) %>
6
+ <%= tag :meta, :property => "og:description", :name => "description", :content => social_share_page_description(page) %>
7
+ <%= tag :meta, :property => "og:url", :content => social_share_page_url(page) %>
8
+ <%= tag :meta, :property => "og:site_name", :content => entry.theming.cname_domain %>
9
+ <%= tag :meta, :property => "og:type", :content => "website" %>
@@ -0,0 +1,7 @@
1
+ Pageflow.configure do |config|
2
+ config.admin_resource_tabs.register(:entry, name: :members, component: Pageflow::Admin::MembersTab)
3
+ config.admin_resource_tabs.register(:entry, name: :revisions, component: Pageflow::Admin::RevisionsTab)
4
+
5
+ config.admin_resource_tabs.register(:theming, name: :entries, component: Pageflow::Admin::EntriesTab)
6
+ config.admin_resource_tabs.register(:theming, name: :users, component: Pageflow::Admin::UsersTab)
7
+ end
@@ -107,7 +107,7 @@ Paperclip.interpolates(:class_basename) do |attachment, style|
107
107
  end
108
108
 
109
109
  Paperclip.interpolates(:pageflow_placeholder) do |attachment, style|
110
- ActionController::Base.helpers.asset_path("pageflow/placeholder_#{style}.jpg")
110
+ "pageflow/placeholder_#{style}.jpg"
111
111
  end
112
112
 
113
113
  Paperclip.interpolates(:pageflow_attachments_version) do |attachment, style|
@@ -1,3 +1,11 @@
1
1
  # View components cannot be discovered via the auto loader since they
2
2
  # are never referenced by class name.
3
- Dir[Pageflow::Engine.root.join('app/views/components/**/*.rb')].each { |f| require(f) }
3
+ Rails.application.config.to_prepare do
4
+ Dir[Pageflow::Engine.root.join('app/views/components/**/*.rb')].each do |f|
5
+ relative_path = f.gsub(Pageflow::Engine.root.join('app/views/components/').to_s, '')
6
+ class_name = relative_path.gsub(/.rb$/, '').classify
7
+
8
+ # trigger autoloading
9
+ class_name.constantize
10
+ end
11
+ end
@@ -0,0 +1,4 @@
1
+ Pageflow.configure do |config|
2
+ config.widget_types.register(Pageflow::BuiltInWidgetType.navigation, default: true)
3
+ config.widget_types.register(Pageflow::BuiltInWidgetType.mobile_navigation, default: true)
4
+ end
@@ -97,6 +97,9 @@ de:
97
97
  manual_start: "Multimedia Hinweis vor dem Start anzeigen"
98
98
  home_url: "Home-Button URL"
99
99
  home_button_enabled: "Home-Button anzeigen"
100
+ emphasize_chapter_beginning: "Kapitelanfang hervorheben"
101
+ emphasize_new_pages: "Neue Seiten hervorheben"
102
+ share_image_id: "Social Sharing Bild"
100
103
  "pageflow/folder":
101
104
  account: "Konto"
102
105
  name: "Name"
@@ -122,7 +125,7 @@ de:
122
125
  description: "Beschreibung für Übersicht"
123
126
  additional_title: "Titel für Infobox"
124
127
  additional_description: "Beschreibung für Infobox"
125
- gradient_opacity: "Intensität des Farbverlaufs"
128
+ gradient_opacity: "Intensität der Abblendung"
126
129
  invert: "Farben invertieren"
127
130
  transition: "Übergangseffekt"
128
131
  display_in_navigation: "In Navigationsleiste anzeigen"
@@ -134,6 +137,7 @@ de:
134
137
  video_file_id: "Video"
135
138
  audio_file_id: "Audio"
136
139
  poster_image_id: "Posterbild"
140
+ mobile_poster_image_id: "Posterbild (mobil)"
137
141
  linked_page_ids: "Seiten verknüpfen"
138
142
  linked_pages_layout: "Hervorgehobenes Element"
139
143
  hide_title: "Titel ausblenden"
@@ -0,0 +1,8 @@
1
+ de:
2
+ pageflow:
3
+ admin:
4
+ resource_tabs:
5
+ members: "Mitglieder"
6
+ revisions: "Revisionen"
7
+ entries: "Beiträge"
8
+ users: "Benutzer"
@@ -7,9 +7,7 @@ de:
7
7
  options: "Optionen"
8
8
  links: "Verweise"
9
9
  widgets: "Erscheinungsbild"
10
- screens:
11
- ratio16to9: "16:9"
12
- ratio4to3: "4:3"
10
+ social: "Social"
13
11
  files:
14
12
  tabs:
15
13
  image_files: "Bilder"
@@ -48,8 +46,9 @@ de:
48
46
  gradient_opacity: "Wählen Sie die Intensität des Farbverlaufs so, dass ein ausreichender Kontrast zwischen Text und Hintegrund gewährleistet ist."
49
47
  description: "Dieser Text wird auf der Übersichtseite angezeigt, wenn Sie den Mauszeiger über dem Vorschaubild einer Seite platzieren."
50
48
  additional_title: "Die Infobox wird über den Steuerelementen zum Starten und Stoppen der Wiedegabe angezeigt."
51
- text: "Empfohlene Textlänge: 220 Zeichen"
49
+ text: "Dieser ist der Textbereich der Seite."
52
50
  thumbnail_image_id: "Dieses Bild wird in der Navigationsleiste und anderen Verweisen auf die Seite gezeigt."
51
+ mobile_poster_image_id: "Dieses Bild wird in der Mobilvariante der Seite als Posterbild gezeigt."
53
52
  "pageflow/entry":
54
53
  title: "Vom Browser angezeigter Titel der Seite."
55
54
  summary: "Zusammenfassung die an Soziale Netzwerke weitergeben wird."
@@ -57,6 +56,8 @@ de:
57
56
  manual_start: "Besucher muss den Start des Beitrags durch einen Klick bestätigen."
58
57
  home_button_enabled: "Link zu einer Übersichtsseite anzeigen."
59
58
  home_button_enabled_disabled: "Diese Funktion steht in diesem Theme nicht zur Verfügung."
59
+ emphasize_chapter_beginning: "Die erste Seite eines jeden Kapitels wird hervorgehoben."
60
+ emphasize_new_pages: "Seit dem letzten Besuch neu hinzugefügte Seiten werden besonders gekennzeichnet."
60
61
  home_url: "URL der Übersichtseite. Leer lassen, um Standard zu übernehmen."
61
62
  home_url_disabled: "Diese Funktion steht in diesem Theme nicht zur Verfügung."
62
63
  "pageflow/chapter":
@@ -0,0 +1,13 @@
1
+ de:
2
+ pageflow:
3
+ editor:
4
+ background_positioning:
5
+ title: "Bildauschnitt anpassen"
6
+ help: "Stellen Sie ein, welcher Teil des Bildes beim Zuschneiden sichtbar bleiben soll."
7
+ preview_title: "Vorschau"
8
+ previews:
9
+ banner: "Banner"
10
+ ratio16to9: "16:9 Landscape"
11
+ ratio4to3: "4:3 Landscape"
12
+ ratio16to9Portrait: "16:9 Portrait"
13
+ ratio4to3Portrait: "4:3 Portrait"
@@ -0,0 +1,6 @@
1
+ de:
2
+ pageflow:
3
+ ui:
4
+ select_input_view:
5
+ placeholder: "Standard (%{text})"
6
+ blank: "(Kein)"
@@ -0,0 +1,14 @@
1
+ de:
2
+ pageflow:
3
+ widgets:
4
+ none: '(Kein)'
5
+ roles:
6
+ navigation: "Navigationsleiste"
7
+ mobile_navigation: "Mobile Navigation"
8
+ analytics: "Zählpixel"
9
+ type_names:
10
+ default_navigation: "Navigationsleiste mit Thumbnails"
11
+ default_mobile_navigation: "Navigationsmenü mit Thumbnails"
12
+ share_menu:
13
+ entry: "Diesen Beitrag"
14
+ current_page: "Diese Seite"
@@ -38,6 +38,12 @@ Pageflow::Engine.routes.draw do
38
38
  post :check, :on => :collection
39
39
  end
40
40
  end
41
+
42
+ resources :subjects, path: '/subjects/:collection_name', only: [] do
43
+ resources :widgets, :only => [:index] do
44
+ patch :batch, :on => :collection
45
+ end
46
+ end
41
47
  end
42
48
 
43
49
  root :to => redirect('/admin')
@@ -1 +1,2 @@
1
- Spring.application_root = File.join(__FILE__, '../../spec/dummy')
1
+ require File.expand_path('../spec/support/pageflow/rails_version', File.dirname(__FILE__))
2
+ Spring.application_root = File.join(__FILE__, "../../spec/dummy/rails-#{Pageflow::RailsVersion.detect}")
@@ -0,0 +1,11 @@
1
+ class CreateWidgets < ActiveRecord::Migration
2
+ def change
3
+ create_table :pageflow_widgets do |t|
4
+ t.belongs_to :subject, polymorphic: true
5
+ t.string :type_name
6
+ t.string :role
7
+
8
+ t.timestamps
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ class AddEmphasizeChapterBeginningToRevisions < ActiveRecord::Migration
2
+ def change
3
+ add_column :pageflow_revisions, :emphasize_chapter_beginning, :boolean, default: false, null: false
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddEmphasizeNewPagesToRevisions < ActiveRecord::Migration
2
+ def change
3
+ add_column :pageflow_revisions, :emphasize_new_pages, :boolean, default: false, null: false
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ class AddSharingImageToRevisions < ActiveRecord::Migration
2
+ def change
3
+ add_column :pageflow_revisions, :share_image_id, :integer
4
+ add_column :pageflow_revisions, :share_image_x, :integer
5
+ add_column :pageflow_revisions, :share_image_y, :integer
6
+ end
7
+ end
@@ -34,6 +34,7 @@ module Pageflow
34
34
  can :destroy, Account do |account|
35
35
  account.users.empty? && account.entries.empty?
36
36
  end
37
+ can :manage, Theming
37
38
 
38
39
  can :manage, ::User
39
40
 
@@ -51,6 +52,7 @@ module Pageflow
51
52
 
52
53
  can :manage, Resque
53
54
  elsif user.account_manager?
55
+ can :manage, Theming, :account_id => user.account_id
54
56
  can :manage, Folder, :account_id => user.account.id
55
57
  can :manage, Entry, :account_id => user.account.id
56
58
  can :manage, ::User, :account_id => user.account.id
@@ -0,0 +1,18 @@
1
+ module Pageflow
2
+ module Admin
3
+ class Tabs
4
+ def initialize
5
+ @tabs = {}
6
+ end
7
+
8
+ def register(resource_name, view_component)
9
+ @tabs[resource_name] ||= []
10
+ @tabs[resource_name] << view_component
11
+ end
12
+
13
+ def find_by_resource(name)
14
+ @tabs.fetch(name, [])
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,27 @@
1
+ module Pageflow
2
+ class BuiltInWidgetType < WidgetType
3
+ attr_reader :name, :roles, :partial_path
4
+
5
+ def initialize(name, roles, partial_path)
6
+ @name = name
7
+ @roles = roles
8
+ @partial_path = partial_path
9
+ end
10
+
11
+ def translation_key
12
+ "pageflow.widgets.type_names.#{name}"
13
+ end
14
+
15
+ def render(template, entry)
16
+ template.render(partial_path, entry: entry)
17
+ end
18
+
19
+ def self.navigation
20
+ new('default_navigation', ['navigation'], 'pageflow/entries/navigation')
21
+ end
22
+
23
+ def self.mobile_navigation
24
+ new('default_mobile_navigation', ['mobile_navigation'], 'pageflow/entries/mobile_navigation')
25
+ end
26
+ end
27
+ end
@@ -64,6 +64,10 @@ module Pageflow
64
64
  # @return [FileTypes]
65
65
  attr_reader :file_types
66
66
 
67
+ # Used to register new types of widgets to be displayed in entries.
68
+ # @return [WidgetTypes]
69
+ attr_reader :widget_types
70
+
67
71
  # Paperclip style definitions of thumbnails used by Pageflow.
68
72
  # @return Hash
69
73
  attr_accessor :thumbnail_styles
@@ -135,6 +139,16 @@ module Pageflow
135
139
  # explicitly confirmed in the editor. Defaults to false.
136
140
  attr_accessor :confirm_encoding_jobs
137
141
 
142
+ # Used by Pageflow extensions to provide new tabs to be displayed
143
+ # in the admin.
144
+ #
145
+ # @example
146
+ #
147
+ # config.admin_resource_tabs.register(:entry, Admin::CustomTab)
148
+ #
149
+ # @return [Admin::TabsRegistry]
150
+ attr_reader :admin_resource_tabs
151
+
138
152
  def initialize
139
153
  @paperclip_filesystem_default_options = {}
140
154
  @paperclip_s3_default_options = {}
@@ -147,6 +161,7 @@ module Pageflow
147
161
  @quotas = Quotas.new
148
162
  @themes = Themes.new
149
163
  @file_types = FileTypes.new(page_types)
164
+ @widget_types = WidgetTypes.new
150
165
 
151
166
  @thumbnail_styles = {}
152
167
  @css_rendered_thumbnail_styles = Pageflow::PagesHelper::CSS_RENDERED_THUMBNAIL_STYLES
@@ -156,6 +171,8 @@ module Pageflow
156
171
  @public_entry_url_options = Pageflow::ThemingsHelper::DEFAULT_PUBLIC_ENTRY_OPTIONS
157
172
 
158
173
  @confirm_encoding_jobs = false
174
+
175
+ @admin_resource_tabs = Pageflow::Admin::Tabs.new
159
176
  end
160
177
 
161
178
  # Make a page type available for use in the system.