pageflow 0.6.0 → 0.7.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 (210) hide show
  1. checksums.yaml +8 -8
  2. data/admins/pageflow/entry.rb +8 -8
  3. data/admins/pageflow/revisions.rb +1 -1
  4. data/admins/pageflow/user.rb +24 -20
  5. data/app/assets/images/pageflow/scroll_down_indicator.png +0 -0
  6. data/app/assets/images/pageflow/scroll_down_indicator_invert.png +0 -0
  7. data/app/assets/images/pageflow/touch_indicator.png +0 -0
  8. data/app/assets/images/pageflow/touch_indicator_invert.png +0 -0
  9. data/app/assets/javascripts/pageflow/audio_player.js +8 -1
  10. data/app/assets/javascripts/pageflow/audio_player/media_events.js +27 -0
  11. data/app/assets/javascripts/pageflow/base.js +2 -1
  12. data/app/assets/javascripts/pageflow/editor/api.js +15 -0
  13. data/app/assets/javascripts/pageflow/editor/base.js +17 -1
  14. data/app/assets/javascripts/pageflow/editor/controllers/sidebar_controller.js +9 -1
  15. data/app/assets/javascripts/pageflow/editor/initializers/setup_help_entries.js +5 -0
  16. data/app/assets/javascripts/pageflow/editor/models/edit_lock_container.js +30 -9
  17. data/app/assets/javascripts/pageflow/editor/models/entry.js +8 -0
  18. data/app/assets/javascripts/pageflow/editor/models/file_stage.js +1 -1
  19. data/app/assets/javascripts/pageflow/editor/models/mixins/transient_references.js +1 -1
  20. data/app/assets/javascripts/pageflow/editor/templates/back_button_decorator.jst.ejs +1 -1
  21. data/app/assets/javascripts/pageflow/editor/templates/background_positioning.jst.ejs +5 -5
  22. data/app/assets/javascripts/pageflow/editor/templates/blank_entry.jst.ejs +6 -6
  23. data/app/assets/javascripts/pageflow/editor/templates/chapter_item.jst.ejs +2 -2
  24. data/app/assets/javascripts/pageflow/editor/templates/confirm_encoding.jst.ejs +7 -6
  25. data/app/assets/javascripts/pageflow/editor/templates/confirmable_file_item.jst.ejs +1 -1
  26. data/app/assets/javascripts/pageflow/editor/templates/edit_chapter.jst.ejs +4 -4
  27. data/app/assets/javascripts/pageflow/editor/templates/edit_entry.jst.ejs +7 -7
  28. data/app/assets/javascripts/pageflow/editor/templates/edit_meta_data.jst.ejs +3 -3
  29. data/app/assets/javascripts/pageflow/editor/templates/edit_page.jst.ejs +4 -4
  30. data/app/assets/javascripts/pageflow/editor/templates/embedded/page_link.jst.ejs +1 -1
  31. data/app/assets/javascripts/pageflow/editor/templates/file_item.jst.ejs +8 -8
  32. data/app/assets/javascripts/pageflow/editor/templates/files.jst.ejs +1 -1
  33. data/app/assets/javascripts/pageflow/editor/templates/files_blank_slate.jst.ejs +1 -1
  34. data/app/assets/javascripts/pageflow/editor/templates/files_explorer.jst.ejs +3 -3
  35. data/app/assets/javascripts/pageflow/editor/templates/files_explorer_blank_slate.jst.ejs +1 -1
  36. data/app/assets/javascripts/pageflow/editor/templates/files_gallery_blank_slate.jst.ejs +1 -1
  37. data/app/assets/javascripts/pageflow/editor/templates/help.jst.ejs +9 -0
  38. data/app/assets/javascripts/pageflow/editor/templates/help_button.jst.ejs +1 -1
  39. data/app/assets/javascripts/pageflow/editor/templates/loading.jst.ejs +1 -1
  40. data/app/assets/javascripts/pageflow/editor/templates/locked.jst.ejs +4 -4
  41. data/app/assets/javascripts/pageflow/editor/templates/notifications.jst.ejs +6 -6
  42. data/app/assets/javascripts/pageflow/editor/templates/other_entries_blank_slate.jst.ejs +1 -1
  43. data/app/assets/javascripts/pageflow/editor/templates/page_item.jst.ejs +1 -1
  44. data/app/assets/javascripts/pageflow/editor/templates/publish_entry.jst.ejs +13 -13
  45. data/app/assets/javascripts/pageflow/editor/templates/select_button.jst.ejs +1 -1
  46. data/app/assets/javascripts/pageflow/editor/views/background_positioning_view.js +1 -1
  47. data/app/assets/javascripts/pageflow/editor/views/chapter_item_view.js +2 -2
  48. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/audio_loop.js +0 -3
  49. data/app/assets/javascripts/pageflow/editor/views/edit_chapter_view.js +1 -1
  50. data/app/assets/javascripts/pageflow/editor/views/edit_meta_data_view.js +7 -0
  51. data/app/assets/javascripts/pageflow/editor/views/edit_page_view.js +11 -2
  52. data/app/assets/javascripts/pageflow/editor/views/editor_view.js +4 -4
  53. data/app/assets/javascripts/pageflow/editor/views/entry_preview_view.js +4 -1
  54. data/app/assets/javascripts/pageflow/editor/views/entry_publication_quota_decorator_view.js +1 -1
  55. data/app/assets/javascripts/pageflow/editor/views/files_explorer_view.js +1 -1
  56. data/app/assets/javascripts/pageflow/editor/views/files_view.js +4 -4
  57. data/app/assets/javascripts/pageflow/editor/views/help_view.js +37 -24
  58. data/app/assets/javascripts/pageflow/editor/views/locked_view.js +4 -2
  59. data/app/assets/javascripts/pageflow/editor/views/page_item_view.js +1 -1
  60. data/app/assets/javascripts/pageflow/editor/views/page_preview_view.js +7 -0
  61. data/app/assets/javascripts/pageflow/editor/views/publish_entry_view.js +8 -1
  62. data/app/assets/javascripts/pageflow/links.js +42 -0
  63. data/app/assets/javascripts/pageflow/page_types/audio.js +3 -1
  64. data/app/assets/javascripts/pageflow/page_types/video.js +1 -0
  65. data/app/assets/javascripts/pageflow/ready.js +1 -20
  66. data/app/assets/javascripts/pageflow/ui.js +2 -2
  67. data/app/assets/javascripts/pageflow/ui/templates/inputs/file_input.jst.ejs +3 -3
  68. data/app/assets/javascripts/pageflow/ui/templates/inputs/page_reference.jst.ejs +1 -1
  69. data/app/assets/javascripts/pageflow/ui/templates/inputs/text_area_input.jst.ejs +7 -7
  70. data/app/assets/javascripts/pageflow/ui/views/collection_view.js +10 -1
  71. data/app/assets/javascripts/pageflow/ui/views/configuration_editor_view.js +1 -1
  72. data/app/assets/javascripts/pageflow/ui/views/inputs/check_box_input_view.js +5 -1
  73. data/app/assets/javascripts/pageflow/ui/views/inputs/extended_select_input_view.js +106 -0
  74. data/app/assets/javascripts/pageflow/ui/views/inputs/file_input_view.js +1 -1
  75. data/app/assets/javascripts/pageflow/ui/views/inputs/proxy_url_input_view.js +2 -2
  76. data/app/assets/javascripts/pageflow/ui/views/inputs/select_input_view.js +50 -14
  77. data/app/assets/javascripts/pageflow/ui/views/inputs/text_area_input_view.js +1 -1
  78. data/app/assets/javascripts/pageflow/ui/views/inputs/text_input_view.js +1 -1
  79. data/app/assets/javascripts/pageflow/ui/views/inputs/url_input_view.js +4 -4
  80. data/app/assets/javascripts/pageflow/ui/views/mixins/input_view.js +1 -1
  81. data/app/assets/javascripts/pageflow/video_player.js +5 -0
  82. data/app/assets/javascripts/pageflow/video_player/media_events.js +27 -0
  83. data/app/assets/stylesheets/pageflow/editor/base.css.scss +4 -0
  84. data/app/assets/stylesheets/pageflow/editor/help.css.scss +91 -45
  85. data/app/assets/stylesheets/pageflow/entries.css.scss +18 -5
  86. data/app/assets/stylesheets/pageflow/jquery_ui.css.scss +3 -2
  87. data/app/assets/stylesheets/pageflow/page.css.scss +23 -21
  88. data/app/assets/stylesheets/pageflow/subshare.css.scss +1 -1
  89. data/app/assets/stylesheets/pageflow/text_variants.css.scss +11 -2
  90. data/app/assets/stylesheets/pageflow/themes/default.css.scss +1 -41
  91. data/app/assets/stylesheets/pageflow/themes/default/base.css.scss +21 -0
  92. data/app/assets/stylesheets/pageflow/themes/default/overview.css.scss +16 -1
  93. data/app/assets/stylesheets/pageflow/themes/default/page.css.scss +5 -0
  94. data/app/assets/stylesheets/pageflow/themes/default/variables.css.scss +20 -0
  95. data/app/assets/stylesheets/pageflow/ui.css.scss +2 -0
  96. data/app/assets/stylesheets/pageflow/ui/input/extended_select_input.css.scss +105 -0
  97. data/app/controllers/concerns/pageflow/edit_locking.rb +2 -2
  98. data/app/controllers/concerns/pageflow/quota_verification.rb +1 -1
  99. data/app/controllers/pageflow/application_controller.rb +6 -2
  100. data/app/controllers/pageflow/editor/entries_controller.rb +5 -0
  101. data/app/controllers/pageflow/entries_controller.rb +3 -1
  102. data/app/controllers/pageflow/revisions_controller.rb +2 -0
  103. data/app/helpers/pageflow/admin/locales_helper.rb +11 -0
  104. data/app/helpers/pageflow/admin/users_helper.rb +1 -1
  105. data/app/helpers/pageflow/entries_helper.rb +8 -2
  106. data/app/helpers/pageflow/file_thumbnails_helper.rb +1 -1
  107. data/app/helpers/pageflow/files_helper.rb +13 -0
  108. data/app/helpers/pageflow/help_entries_helper.rb +19 -0
  109. data/app/helpers/pageflow/render_json_helper.rb +11 -0
  110. data/app/mailers/pageflow/user_mailer.rb +4 -1
  111. data/app/models/pageflow/draft_entry.rb +1 -0
  112. data/app/models/pageflow/positioned_file.rb +45 -0
  113. data/app/models/pageflow/published_entry.rb +12 -1
  114. data/app/models/pageflow/revision.rb +4 -0
  115. data/app/models/pageflow/theming.rb +1 -1
  116. data/app/models/pageflow/thumbnail_file_resolver.rb +20 -12
  117. data/app/views/admin/entries/_attributes_table.html.arb +3 -3
  118. data/app/views/admin/entries/_links.html.arb +3 -3
  119. data/app/views/admin/revisions/_form.html.erb +1 -1
  120. data/app/views/admin/users/_form.html.erb +8 -2
  121. data/app/views/admin/users/delete_me.html.erb +3 -3
  122. data/app/views/admin/users/me.html.erb +11 -3
  123. data/app/views/components/pageflow/admin/entries_tab.rb +1 -1
  124. data/app/views/components/pageflow/admin/grouped_folder_list.rb +7 -7
  125. data/app/views/components/pageflow/admin/members_tab.rb +4 -4
  126. data/app/views/components/pageflow/admin/revisions_tab.rb +8 -8
  127. data/app/views/components/pageflow/admin/users_tab.rb +1 -1
  128. data/app/views/layouts/pageflow/application.html.erb +2 -2
  129. data/app/views/pageflow/config/_editor_seeds.json.jbuilder +1 -1
  130. data/app/views/pageflow/devise/mailer/reset_password_instructions.html.erb +6 -4
  131. data/app/views/pageflow/editor/entries/_entry.json.jbuilder +1 -1
  132. data/app/views/pageflow/editor/entries/_help_entries_seed.html.erb +6 -0
  133. data/app/views/pageflow/editor/entries/seed.json.erb +14 -0
  134. data/app/views/pageflow/editor/entry_publications/_published_message.html.erb +1 -0
  135. data/app/views/pageflow/editor/entry_publications/check.json.jbuilder +3 -0
  136. data/app/views/pageflow/entries/_entry.html.erb +3 -3
  137. data/app/views/pageflow/entries/_ie8_hint.html.erb +2 -13
  138. data/app/views/pageflow/entries/_mobile_navigation.html.erb +6 -6
  139. data/app/views/pageflow/entries/_multimedia_alert.html.erb +5 -9
  140. data/app/views/pageflow/entries/_non_js_hint.html.erb +1 -1
  141. data/app/views/pageflow/entries/_skip_links.html.erb +3 -3
  142. data/app/views/pageflow/entries/edit.html.erb +5 -23
  143. data/app/views/pageflow/entries/navigation/_bar_bottom.html.erb +5 -5
  144. data/app/views/pageflow/entries/navigation/_bar_top.html.erb +15 -15
  145. data/app/views/pageflow/entries/navigation/_home_button.html.erb +2 -2
  146. data/app/views/pageflow/entries/overview/_chapter.html.erb +1 -1
  147. data/app/views/pageflow/entries/overview/_entry.html.erb +6 -4
  148. data/app/views/pageflow/entries/show.html.erb +2 -2
  149. data/app/views/pageflow/help_entries/_menu.html.erb +5 -0
  150. data/app/views/pageflow/help_entries/_menu_item.html.erb +7 -0
  151. data/app/views/pageflow/help_entries/_section.html.erb +3 -0
  152. data/app/views/pageflow/page_types/_page_type.json.jbuilder +1 -1
  153. data/app/views/pageflow/pages/_page.html.erb +1 -1
  154. data/app/views/pageflow/pages/_video_tag.html.erb +1 -1
  155. data/app/views/pageflow/pages/templates/_audio.html.erb +1 -1
  156. data/app/views/pageflow/pages/templates/_background_video.html.erb +1 -1
  157. data/app/views/pageflow/pages/templates/_video.html.erb +1 -1
  158. data/app/views/pageflow/social_share/_entry_meta_tags.html.erb +3 -0
  159. data/app/views/pageflow/social_share/_image_tags.html.erb +4 -0
  160. data/app/views/pageflow/social_share/_page_meta_tags.html.erb +3 -0
  161. data/app/views/pageflow/user_mailer/invitation.html.erb +4 -6
  162. data/app/views/pageflow/user_mailer/invitation.text.erb +5 -6
  163. data/config/initializers/help_entries.rb +17 -0
  164. data/config/locales/de.yml +1866 -2
  165. data/config/locales/en.yml +1800 -1
  166. data/config/routes.rb +2 -0
  167. data/db/migrate/20141128150305_add_locale_to_users.rb +5 -0
  168. data/db/migrate/20141208161030_add_locale_to_revisions.rb +5 -0
  169. data/lib/active_admin/patches/views/pages/base.rb +8 -0
  170. data/lib/generators/pageflow/{active_admin_menu/active_admin_menu_generator.rb → active_admin_initializer/active_admin_initializer_generator.rb} +3 -1
  171. data/lib/generators/pageflow/install/install_generator.rb +1 -1
  172. data/lib/pageflow.rb +6 -0
  173. data/lib/pageflow/built_in_page_type.rb +8 -0
  174. data/lib/pageflow/configuration.rb +29 -0
  175. data/lib/pageflow/engine.rb +8 -5
  176. data/lib/pageflow/help_entries.rb +55 -0
  177. data/lib/pageflow/help_entry.rb +19 -0
  178. data/lib/pageflow/page_type.rb +23 -33
  179. data/lib/pageflow/plugin.rb +13 -0
  180. data/lib/pageflow/user_mixin.rb +4 -0
  181. data/lib/pageflow/version.rb +1 -1
  182. data/vendor/assets/javascripts/jquery.ui.all.js +4 -0
  183. metadata +52 -39
  184. data/app/assets/javascripts/pageflow/editor/templates/help.jst.ejs.erb +0 -160
  185. data/config/locales/activeadmin.de.yml +0 -114
  186. data/config/locales/activerecord.de.yml +0 -182
  187. data/config/locales/admin/accounts.yml +0 -5
  188. data/config/locales/admin/entries.yml +0 -42
  189. data/config/locales/admin/folders.de.yml +0 -7
  190. data/config/locales/admin/revisions.yml +0 -4
  191. data/config/locales/admin/tabs.de.yml +0 -8
  192. data/config/locales/admin/themings.yml +0 -7
  193. data/config/locales/admin/users.yml +0 -26
  194. data/config/locales/admin/users/delete_me.de.yml +0 -7
  195. data/config/locales/admin/users/me.de.yml +0 -9
  196. data/config/locales/devise.de.yml +0 -72
  197. data/config/locales/devise.en.yml +0 -59
  198. data/config/locales/edit_locks.de.yml +0 -16
  199. data/config/locales/editor.de.yml +0 -64
  200. data/config/locales/editor/blank_entry.yml +0 -9
  201. data/config/locales/editor/quotas.de.yml +0 -4
  202. data/config/locales/formtastic.de.yml +0 -10
  203. data/config/locales/pageflow/audio.de.yml +0 -4
  204. data/config/locales/pageflow/editor/background_positioning.de.yml +0 -13
  205. data/config/locales/pageflow/editor/errors.de.yml +0 -6
  206. data/config/locales/pageflow/ui.de.yml +0 -6
  207. data/config/locales/pageflow/user_mailer.yml +0 -5
  208. data/config/locales/pageflow/widgets.de.yml +0 -14
  209. data/config/locales/quotas.de.yml +0 -3
  210. data/config/locales/rails.de.yml +0 -199
@@ -88,6 +88,11 @@ $page-color: $main-color;
88
88
  max-width: 221px;
89
89
  width: 13%;
90
90
  left: 8%;
91
+
92
+ @include mobile {
93
+ padding-top: 1%;
94
+ height: 35px;
95
+ }
91
96
  }
92
97
 
93
98
  &.invert .content_and_background .scroller > div:after {
@@ -0,0 +1,20 @@
1
+ $theme-name: "default";
2
+
3
+ $main-color: #e84d2c;
4
+ $main-color-dark: #b14a08;
5
+
6
+ $focus-color: #c1c1c1;
7
+
8
+ $anchor-color: #e84d2c;
9
+
10
+ $basic-background-color: #353535;
11
+ $basic-background-color-transparent: rgba(53, 53, 53, 0.9);
12
+ $header-background-color: gray;
13
+
14
+ $addInfobox-text-color: #fff; /* for the description text inside the info box */
15
+ $addInfobox-controls-text-color: #ccc; /* for control text like durations */
16
+ $addInfobox-background-color: #191919;
17
+ $addInfobox-border-color: #505050;
18
+
19
+ $standard-font: SourceSansPro;
20
+ $standard-font-size: 16px;
@@ -5,3 +5,5 @@
5
5
  @import "./ui/forms";
6
6
  @import "./ui/tabs_view";
7
7
  }
8
+
9
+ @import "./ui/input/extended_select_input";
@@ -0,0 +1,105 @@
1
+ .extended_select_input {
2
+ .ui-selectmenu-button span.ui-selectmenu-text {
3
+ font-family: Helvetica, Sans-Serif;
4
+ font-size: 13px;
5
+ }
6
+ }
7
+
8
+ .extended_select_input_menu {
9
+ border: solid 1px #aaa;
10
+
11
+ ul {
12
+ width: 600px;
13
+ border: none;
14
+ border-radius: 0;
15
+ }
16
+
17
+ .ui-state-default,
18
+ .ui-widget-content
19
+ .ui-state-default,
20
+ .ui-widget-header
21
+ .ui-state-default {
22
+ background: white;
23
+ border: 1px solid rgb(187, 187, 187);
24
+ }
25
+
26
+ .ui-state-hover,
27
+ .ui-widget-content .ui-state-hover,
28
+ .ui-widget-header .ui-state-hover,
29
+ .ui-state-focus,
30
+ .ui-widget-content .ui-state-focus,
31
+ .ui-widget-header .ui-state-focus {
32
+ background: white;
33
+ margin: 0;
34
+ background: rgb(248, 248, 248);
35
+ }
36
+
37
+ .type_pictogram {
38
+ position: absolute;
39
+ width: 25px;
40
+ height: 25px;
41
+ top: 0;
42
+ bottom: 0;
43
+ margin: auto 0;
44
+ }
45
+
46
+ .text-container {
47
+ position: absolute;
48
+ top: 50%;
49
+ @include transform(translate(0,-50%));
50
+ width: 66%;
51
+ margin-left: 20%;
52
+ overflow: hidden;
53
+ }
54
+
55
+ p {
56
+ margin: 0;
57
+ }
58
+
59
+ a {
60
+ @include help-circled-icon;
61
+
62
+ text-decoration: none;
63
+ float: right;
64
+ opacity: 0.2;
65
+ position: absolute;
66
+ bottom: 3px;
67
+ right: 7px;
68
+
69
+ &:hover {
70
+ opacity: 1;
71
+ }
72
+ }
73
+
74
+ .ui-menu-item {
75
+ float: left;
76
+ width: 33.33%;
77
+ outline: 0;
78
+ box-sizing: border-box;
79
+ min-height: 90px;
80
+ padding: 10px 2%;
81
+ border: 1px solid rgb(242, 242, 242);
82
+ }
83
+
84
+ .ui-selectmenu-optgroup {
85
+ float: left;
86
+ width: 100%;
87
+ margin: 0 !important;
88
+ border: 0;
89
+ background-color: rgb(211,211,211);
90
+ }
91
+
92
+ .ui-widget {
93
+ font-family: Helvetica, Sans-Serif;
94
+ font-size: 13px;
95
+
96
+ .item-description {
97
+ font-size: 11px;
98
+ color: gray;
99
+ }
100
+ }
101
+
102
+ .ui-state-focus {
103
+ background: #D2E5FA;
104
+ }
105
+ }
@@ -5,7 +5,7 @@ module Pageflow
5
5
  included do
6
6
  rescue_from EditLock::NotHeldError, EditLock::HeldByOtherSessionError do |exception|
7
7
  respond_to do |format|
8
- format.html { redirect_to :back, :alert => t('edit_locks.required') }
8
+ format.html { redirect_to :back, :alert => t('pageflow.edit_locks.required') }
9
9
  format.json do
10
10
  render(:status => :conflict, :json => {
11
11
  :error_message => exception.message,
@@ -17,7 +17,7 @@ module Pageflow
17
17
 
18
18
  rescue_from EditLock::HeldByOtherUserError do |exception|
19
19
  respond_to do |format|
20
- format.html { redirect_to :back, :alert => t('edit_locks.required_but_held_by_other_user') }
20
+ format.html { redirect_to :back, :alert => t('pageflow.edit_locks.required_but_held_by_other_user') }
21
21
  format.json do
22
22
  render(:status => :conflict, :json => {
23
23
  :error_message => exception.message,
@@ -6,7 +6,7 @@ module Pageflow
6
6
  rescue_from Quota::ExhaustedError do |exception|
7
7
  respond_to do |format|
8
8
  format.html do
9
- redirect_to :back, :alert => t('quotas.exhausted')
9
+ redirect_to :back, :alert => t('pageflow.quotas.exhausted')
10
10
  end
11
11
  format.json do
12
12
  render(:status => :forbidden,
@@ -5,6 +5,10 @@ module Pageflow
5
5
  class ApplicationController < ActionController::Base
6
6
  layout 'pageflow/application'
7
7
 
8
+ before_filter do
9
+ I18n.locale = current_user.try(:locale) || I18n.default_locale
10
+ end
11
+
8
12
  # Prevent CSRF attacks by raising an exception.
9
13
  # For APIs, you may want to use :null_session instead.
10
14
  protect_from_forgery with: :exception
@@ -24,14 +28,14 @@ module Pageflow
24
28
 
25
29
  rescue_from CanCan::AccessDenied do |exception|
26
30
  respond_to do |format|
27
- format.html { redirect_to main_app.admin_root_path, :alert => t('unauthorized') }
31
+ format.html { redirect_to main_app.admin_root_path, :alert => t('pageflow.unauthorized') }
28
32
  format.any(:json, :css) { head :forbidden }
29
33
  end
30
34
  end
31
35
 
32
36
  rescue_from StateMachine::InvalidTransition do |exception|
33
37
  respond_to do |format|
34
- format.html { redirect_to main_app.admin_root_path, :alert => t('invalid_transition') }
38
+ format.html { redirect_to main_app.admin_root_path, :alert => t('pageflow.invalid_transition') }
35
39
  format.json { head :bad_request }
36
40
  end
37
41
  end
@@ -9,6 +9,11 @@ module Pageflow
9
9
  @entries = DraftEntry.accessible_by(current_ability, :use_files)
10
10
  respond_with(@entries)
11
11
  end
12
+
13
+ def seed
14
+ @entry = DraftEntry.find(params[:id])
15
+ authorize!(:edit, @entry.to_model)
16
+ end
12
17
  end
13
18
  end
14
19
  end
@@ -20,6 +20,7 @@ module Pageflow
20
20
  respond_to do |format|
21
21
  format.any(:html, :css) do
22
22
  @entry = PublishedEntry.find(params[:id], entry_request_scope)
23
+ I18n.locale = @entry.locale
23
24
 
24
25
  if params[:page].present?
25
26
  @entry.share_target = Page.find_by_perma_id(params[:page])
@@ -49,6 +50,7 @@ module Pageflow
49
50
  def partials
50
51
  authenticate_user!
51
52
  @entry = DraftEntry.find(params[:id])
53
+ I18n.locale = @entry.locale
52
54
  authorize!(:show, @entry.to_model)
53
55
 
54
56
  respond_to do |format|
@@ -75,7 +77,7 @@ module Pageflow
75
77
  def entry_params
76
78
  params.require(:entry).permit(:title, :summary, :credits, :manual_start, :home_url, :home_button_enabled,
77
79
  :emphasize_chapter_beginning, :emphasize_new_pages,
78
- :share_image_id, :share_image_x, :share_image_y)
80
+ :share_image_id, :share_image_x, :share_image_y, :locale)
79
81
  end
80
82
 
81
83
  def entry_request_scope
@@ -11,6 +11,8 @@ module Pageflow
11
11
  authorize!(:show, revision) unless request.format.css?
12
12
 
13
13
  @entry = PublishedEntry.new(revision.entry, revision)
14
+ I18n.locale = @entry.locale
15
+
14
16
  render :template => 'pageflow/entries/show'
15
17
  end
16
18
 
@@ -0,0 +1,11 @@
1
+ module Pageflow
2
+ module Admin
3
+ module LocalesHelper
4
+ def available_locales_collection
5
+ Pageflow.config.available_locales.map do |locale|
6
+ [I18n.t('language', locale: locale), locale.to_s]
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -2,7 +2,7 @@ module Pageflow
2
2
  module Admin
3
3
  module UsersHelper
4
4
  def collection_for_user_roles
5
- User.roles_accessible_by(current_ability).index_by { |role| t(role, :scope => 'admin.users.roles') }
5
+ User.roles_accessible_by(current_ability).index_by { |role| t(role, :scope => 'pageflow.admin.users.roles') }
6
6
  end
7
7
  end
8
8
  end
@@ -1,5 +1,7 @@
1
1
  module Pageflow
2
2
  module EntriesHelper
3
+ include RenderJsonHelper
4
+
3
5
  def pretty_entry_url(entry)
4
6
  pageflow.short_entry_url(entry.to_model, Pageflow.config.theming_url_options(entry.theming))
5
7
  end
@@ -13,7 +15,7 @@ module Pageflow
13
15
 
14
16
  if rights.any?
15
17
  content_tag :p, class: 'rights' do
16
- "Bildrechte: " + rights * ', '
18
+ I18n.t('pageflow.helpers.entries.image_rights') + ": " + rights * ', '
17
19
  end
18
20
  else
19
21
  ''
@@ -30,7 +32,7 @@ module Pageflow
30
32
  end
31
33
 
32
34
  if links.any?
33
- content_tag(:h2, 'Globale Links', :class => 'hidden') + safe_join(links, ''.html_safe)
35
+ content_tag(:h2, I18n.t('pageflow.helpers.entries.global_links'), :class => 'hidden') + safe_join(links, ''.html_safe)
34
36
  else
35
37
  ''
36
38
  end
@@ -71,5 +73,9 @@ module Pageflow
71
73
  return '' if entry.summary.blank?
72
74
  strip_tags(entry.summary.gsub(/<br ?\/?>/, ' ').squish)
73
75
  end
76
+
77
+ def entry_pages_json_seed(entry)
78
+ sanitize_json(entry.pages.to_json(only: [:id, :perma_id, :configuration])).html_safe
79
+ end
74
80
  end
75
81
  end
@@ -12,7 +12,7 @@ module Pageflow
12
12
 
13
13
  def file_thumbnail_css_class(file, style)
14
14
  return if file.blank?
15
- [file.class.model_name.singular, style, file.id] * '_'
15
+ [file.to_model.class.model_name.singular, style, file.to_model.id] * '_'
16
16
  end
17
17
  end
18
18
  end
@@ -24,5 +24,18 @@ module Pageflow
24
24
  "-"
25
25
  end
26
26
  end
27
+
28
+ def files_json_seeds(entry)
29
+ inner = Pageflow.config.file_types.map do |file_type, result|
30
+ json = render_json_partial(partial: 'pageflow/editor/files/file',
31
+ collection: entry.files(file_type.model),
32
+ locals: {file_type: file_type},
33
+ as: :file)
34
+
35
+ %'"#{file_type.collection_name}": #{json}'
36
+ end.join(',')
37
+
38
+ "{#{inner}}".html_safe
39
+ end
27
40
  end
28
41
  end
@@ -0,0 +1,19 @@
1
+ module Pageflow
2
+ # @api private
3
+ module HelpEntriesHelper
4
+ def help_entry_sections
5
+ render(partial: 'pageflow/help_entries/section',
6
+ collection: Pageflow.config.help_entries.flat,
7
+ as: :help_entry)
8
+ end
9
+
10
+ def help_entries_menu
11
+ render('pageflow/help_entries/menu', help_entries: Pageflow.config.help_entries)
12
+ end
13
+
14
+ def help_entry_li(help_entry, &block)
15
+ css_class = help_entry.children.present? ? 'expandable' : nil
16
+ content_tag(:li, class: css_class, &block)
17
+ end
18
+ end
19
+ end
@@ -21,6 +21,17 @@ module Pageflow
21
21
  end
22
22
  end
23
23
 
24
+ ESCAPED_CHARS = {
25
+ "\u2028" => '\u2028',
26
+ "\u2029" => '\u2029'
27
+ }
28
+
29
+ ESCAPED_CHARS_REGEX = /[\u2028\u2029]/u
30
+
31
+ def sanitize_json(json)
32
+ json.gsub(ESCAPED_CHARS_REGEX, ESCAPED_CHARS)
33
+ end
34
+
24
35
  def render_html_partial(*args)
25
36
  render_with_format(:html) do
26
37
  render(*args)
@@ -4,7 +4,10 @@ module Pageflow
4
4
 
5
5
  def invitation(options)
6
6
  @user = User.find(options['user_id'])
7
- mail(:to => @user.email, :subject => t('.subject'), :from => Pageflow.config.mailer_sender)
7
+ I18n.with_locale(@user.locale) do
8
+ headers('X-Language' => I18n.locale)
9
+ mail(:to => @user.email, :subject => t('.subject'), :from => Pageflow.config.mailer_sender)
10
+ end
8
11
  end
9
12
  end
10
13
  end
@@ -17,6 +17,7 @@ module Pageflow
17
17
  :share_image_id, :share_image_x, :share_image_y,
18
18
  :files,
19
19
  :image_files, :video_files, :audio_files,
20
+ :locale,
20
21
  :to => :draft)
21
22
 
22
23
  def initialize(entry, draft = nil)
@@ -0,0 +1,45 @@
1
+ module Pageflow
2
+ class PositionedFile
3
+ attr_reader :file, :position_x, :position_y
4
+
5
+ delegate :thumbnail_url, to: :file
6
+
7
+ def initialize(file, position_x = nil, position_y = nil)
8
+ @file = file
9
+ @position_x = position_x.presence || 50
10
+ @position_y = position_y.presence || 50
11
+ end
12
+
13
+ def ==(other)
14
+ super(other) ||
15
+ other == file ||
16
+ (other.is_a?(PositionedFile) && other.file == file)
17
+ end
18
+
19
+ def to_model
20
+ file
21
+ end
22
+
23
+ def self.wrap(file, position_x, position_y)
24
+ file ? new(file, position_x, position_y) : nil
25
+ end
26
+
27
+ def self.null
28
+ Null.new
29
+ end
30
+
31
+ class Null < PositionedFile
32
+ def initialize
33
+ super(nil)
34
+ end
35
+
36
+ def thumbnail_url(*args)
37
+ ImageFile.new.processed_attachment.url(*args)
38
+ end
39
+
40
+ def blank?
41
+ true
42
+ end
43
+ end
44
+ end
45
+ end