pageflow 12.0.4 → 12.1.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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +158 -374
- data/README.md +24 -3
- data/Rakefile +2 -2
- data/admins/pageflow/accounts.rb +30 -4
- data/admins/pageflow/entry.rb +59 -9
- data/admins/pageflow/membership.rb +57 -6
- data/admins/pageflow/user.rb +25 -4
- data/app/assets/images/pageflow/themes/default/preview.png +0 -0
- data/app/assets/images/pageflow/themes/default/preview_thumbnail.png +0 -0
- data/app/assets/javascripts/pageflow/admin/entries.js +5 -3
- data/app/assets/javascripts/pageflow/admin/users.js +33 -0
- data/app/assets/javascripts/pageflow/admin.js +4 -1
- data/app/assets/javascripts/pageflow/audio_context.js +28 -0
- data/app/assets/javascripts/pageflow/audio_player/get_media_element_method.js +5 -0
- data/app/assets/javascripts/pageflow/audio_player.js +2 -0
- data/app/assets/javascripts/pageflow/base.js +4 -22
- data/app/assets/javascripts/pageflow/dist/react.js +323 -242
- data/app/assets/javascripts/pageflow/editor/api/widget_type.js +23 -0
- data/app/assets/javascripts/pageflow/editor/api/widget_types.js +53 -0
- data/app/assets/javascripts/pageflow/editor/api.js +9 -1
- data/app/assets/javascripts/pageflow/editor/base.js +0 -1
- data/app/assets/javascripts/pageflow/editor/collections/pages_collection.js +1 -0
- data/app/assets/javascripts/pageflow/editor/collections/subset_collection.js +21 -1
- data/app/assets/javascripts/pageflow/editor/collections/themes_collection.js +13 -0
- data/app/assets/javascripts/pageflow/editor/collections/widgets_collection.js +23 -8
- data/app/assets/javascripts/pageflow/editor/controllers/sidebar_controller.js +7 -1
- data/app/assets/javascripts/pageflow/editor/initializers/setup_collections.js +10 -3
- data/app/assets/javascripts/pageflow/editor/initializers/setup_widget_types.js +5 -1
- data/app/assets/javascripts/pageflow/editor/initializers/stylesheet_reloading.js +8 -3
- data/app/assets/javascripts/pageflow/editor/models/edit_lock_container.js +1 -1
- data/app/assets/javascripts/pageflow/editor/models/entry.js +7 -4
- data/app/assets/javascripts/pageflow/editor/models/entry_configuration.js +1 -1
- data/app/assets/javascripts/pageflow/editor/models/file_stage.js +1 -0
- data/app/assets/javascripts/pageflow/editor/models/page.js +3 -1
- data/app/assets/javascripts/pageflow/editor/models/preview_entry_data.js +2 -2
- data/app/assets/javascripts/pageflow/editor/models/theme.js +25 -0
- data/app/assets/javascripts/pageflow/editor/models/theming.js +1 -19
- data/app/assets/javascripts/pageflow/editor/models/widget.js +22 -1
- data/app/assets/javascripts/pageflow/editor/models/widget_configuration.js +5 -0
- data/app/assets/javascripts/pageflow/editor/routers/sidebar_router.js +1 -0
- data/app/assets/javascripts/pageflow/editor/templates/change_theme_dialog.jst.ejs +23 -0
- data/app/assets/javascripts/pageflow/editor/templates/edit_widget.jst.ejs +1 -2
- data/app/assets/javascripts/pageflow/editor/templates/inputs/reference.jst.ejs +2 -2
- data/app/assets/javascripts/pageflow/editor/templates/static_thumbnail.jst.ejs +1 -0
- data/app/assets/javascripts/pageflow/editor/templates/theme_item.jst.ejs +5 -0
- data/app/assets/javascripts/pageflow/editor/templates/widget_item.jst.ejs +3 -0
- data/app/assets/javascripts/pageflow/editor/utils/stylesheet.js +23 -0
- data/app/assets/javascripts/pageflow/editor/views/change_theme_dialog_view.js +76 -0
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/groups/options.js +4 -2
- data/app/assets/javascripts/pageflow/editor/views/edit_meta_data_view.js +17 -4
- data/app/assets/javascripts/pageflow/editor/views/edit_widget_view.js +11 -21
- data/app/assets/javascripts/pageflow/editor/views/edit_widgets_view.js +1 -3
- data/app/assets/javascripts/pageflow/editor/views/file_meta_data_item_value_view.js +10 -1
- data/app/assets/javascripts/pageflow/editor/views/inputs/reference_input_view.js +36 -4
- data/app/assets/javascripts/pageflow/editor/views/inputs/theme_input_view.js +26 -0
- data/app/assets/javascripts/pageflow/editor/views/model_thumbnail_view.js +28 -14
- data/app/assets/javascripts/pageflow/editor/views/static_thumbnail_view.js +20 -0
- data/app/assets/javascripts/pageflow/editor/views/theme_item_view.js +41 -0
- data/app/assets/javascripts/pageflow/editor/views/widget_item_view.js +49 -0
- data/app/assets/javascripts/pageflow/history.js +7 -1
- data/app/assets/javascripts/pageflow/media_player/volume_fading/interval.js +65 -0
- data/app/assets/javascripts/pageflow/media_player/volume_fading/noop.js +5 -0
- data/app/assets/javascripts/pageflow/media_player/volume_fading/web_audio.js +109 -0
- data/app/assets/javascripts/pageflow/media_player/volume_fading.js +14 -65
- data/app/assets/javascripts/pageflow/slideshow/dom_order_scroll_navigator.js +5 -2
- data/app/assets/javascripts/pageflow/slideshow.js +19 -8
- data/app/assets/javascripts/pageflow/ui/views/configuration_editor_view.js +4 -0
- data/app/assets/javascripts/pageflow/ui/views/inputs/text_area_input_view.js +10 -5
- data/app/assets/javascripts/pageflow/ui/views/inputs/text_input_view.js +4 -48
- data/app/assets/javascripts/pageflow/ui/views/mixins/input_with_placeholder_text.js +58 -0
- data/app/assets/javascripts/pageflow/vendor.js +16 -0
- data/app/assets/javascripts/pageflow/video_player/get_media_element_method.js +6 -0
- data/app/assets/javascripts/pageflow/video_player.js +2 -0
- data/app/assets/stylesheets/pageflow/admin/entries.scss +1 -1
- data/app/assets/stylesheets/pageflow/admin/quotas.scss +1 -1
- data/app/assets/stylesheets/pageflow/admin.scss +2 -0
- data/app/assets/stylesheets/pageflow/base.scss +0 -1
- data/app/assets/stylesheets/pageflow/editor/base.scss +2 -0
- data/app/assets/stylesheets/pageflow/editor/change_theme.scss +114 -0
- data/app/assets/stylesheets/pageflow/editor/static_thumbnails.scss +4 -0
- data/app/assets/stylesheets/pageflow/editor/widgets.scss +26 -2
- data/app/assets/stylesheets/pageflow/page.scss +1 -14
- data/app/assets/stylesheets/pageflow/themes/default/indicators.scss +12 -0
- data/app/assets/stylesheets/pageflow/themes/default/loading_spinner.scss +11 -0
- data/app/assets/stylesheets/pageflow/themes/default/logo/alignment.scss +27 -0
- data/app/assets/stylesheets/pageflow/themes/default/logo/variant/background_image.scss +20 -2
- data/app/assets/stylesheets/pageflow/themes/default/logo/variant/watermark.scss +4 -1
- data/app/assets/stylesheets/pageflow/themes/default/page/line_lengths.scss +113 -0
- data/app/assets/stylesheets/pageflow/themes/default/page.scss +1 -0
- data/app/controllers/pageflow/editor/widgets_controller.rb +15 -1
- data/app/controllers/pageflow/entries_controller.rb +1 -1
- data/app/helpers/pageflow/admin/entries_helper.rb +0 -9
- data/app/helpers/pageflow/admin/memberships_helper.rb +43 -123
- data/app/helpers/pageflow/admin/users_helper.rb +15 -0
- data/app/helpers/pageflow/entries_helper.rb +3 -1
- data/app/helpers/pageflow/entry_json_seed_helper.rb +9 -3
- data/app/helpers/pageflow/public_i18n_helper.rb +2 -2
- data/app/helpers/pageflow/quota_helper.rb +2 -2
- data/app/helpers/pageflow/social_share_helper.rb +3 -2
- data/app/helpers/pageflow/themes_helper.rb +11 -3
- data/app/helpers/pageflow/widgets_helper.rb +10 -2
- data/app/jobs/pageflow/prune_auto_snapshots_job.rb +9 -0
- data/app/mailers/pageflow/user_mailer.rb +11 -1
- data/app/models/concerns/pageflow/feature_target.rb +1 -1
- data/app/models/concerns/pageflow/hosted_file.rb +9 -0
- data/app/models/concerns/pageflow/output_source.rb +2 -1
- data/app/models/concerns/pageflow/serialization_blacklist.rb +19 -0
- data/app/models/concerns/pageflow/serialized_configuration.rb +17 -0
- data/app/models/concerns/pageflow/theme_referencer.rb +23 -0
- data/app/models/pageflow/account.rb +6 -1
- data/app/models/pageflow/account_member_query.rb +6 -12
- data/app/models/pageflow/account_role_query.rb +68 -0
- data/app/models/pageflow/application_query.rb +13 -0
- data/app/models/pageflow/application_record.rb +5 -0
- data/app/models/pageflow/audio_file.rb +1 -1
- data/app/models/pageflow/auto_snapshot_pruning.rb +26 -0
- data/app/models/pageflow/chapter.rb +4 -8
- data/app/models/pageflow/draft_entry.rb +2 -1
- data/app/models/pageflow/edit_lock.rb +11 -5
- data/app/models/pageflow/encoding_confirmation.rb +2 -1
- data/app/models/pageflow/entry.rb +13 -2
- data/app/models/pageflow/entry_publication.rb +2 -0
- data/app/models/pageflow/entry_role_query.rb +24 -9
- data/app/models/pageflow/entry_title_or_account_name_query.rb +33 -0
- data/app/models/pageflow/file_usage.rb +3 -7
- data/app/models/pageflow/folder.rb +1 -1
- data/app/models/pageflow/home_button.rb +1 -1
- data/app/models/pageflow/image_file.rb +22 -4
- data/app/models/pageflow/invitation_form.rb +10 -4
- data/app/models/pageflow/managed_user_query.rb +44 -0
- data/app/models/pageflow/membership.rb +1 -1
- data/app/models/pageflow/overview_button.rb +3 -4
- data/app/models/pageflow/page.rb +3 -7
- data/app/models/pageflow/potential_memberships.rb +112 -0
- data/app/models/pageflow/published_entry.rb +2 -1
- data/app/models/pageflow/revision.rb +13 -4
- data/app/models/pageflow/storyline.rb +3 -4
- data/app/models/pageflow/text_track_file.rb +1 -1
- data/app/models/pageflow/theming.rb +15 -10
- data/app/models/pageflow/url_template.rb +8 -2
- data/app/models/pageflow/user_name_query.rb +30 -0
- data/app/models/pageflow/video_file.rb +5 -1
- data/app/models/pageflow/widget.rb +3 -1
- data/app/models/pageflow/zencoder_attachment.rb +16 -5
- data/app/policies/pageflow/account_policy.rb +31 -61
- data/app/policies/pageflow/application_policy.rb +6 -0
- data/app/policies/pageflow/entry_policy.rb +11 -3
- data/app/policies/pageflow/membership_policy.rb +1 -2
- data/app/policies/pageflow/user_policy.rb +20 -1
- data/app/views/admin/accounts/_form.html.erb +4 -4
- data/app/views/admin/accounts/_theming_defaults_inline_help.html.erb +5 -0
- data/app/views/admin/memberships/_form.html.erb +9 -14
- data/app/views/admin/memberships/_role_hint.html.arb +1 -1
- data/app/views/admin/users/invitation.html.erb +18 -9
- data/app/views/admin/users/me.html.erb +2 -2
- data/app/views/admin/users/quota_state.html.erb +1 -0
- data/app/views/components/pageflow/admin/add_membership_button.rb +81 -0
- data/app/views/components/pageflow/admin/members_tab.rb +6 -4
- data/app/views/components/pageflow/admin/revisions_tab.rb +16 -4
- data/app/views/components/pageflow/admin/user_accounts_tab.rb +8 -2
- data/app/views/components/pageflow/admin/user_entries_tab.rb +6 -2
- data/app/views/components/pageflow/admin/users_tab.rb +9 -5
- data/app/views/layouts/pageflow/application.html.erb +2 -1
- data/app/views/pageflow/admin/users/_quota_exhausted.html.erb +1 -0
- data/app/views/pageflow/admin/users/_quota_state.html.erb +7 -0
- data/app/views/pageflow/config/_editor_seeds.json.jbuilder +2 -0
- data/app/views/pageflow/editor/entries/_entry.json.jbuilder +1 -0
- data/app/views/pageflow/editor/entries/seed.json.erb +3 -1
- data/app/views/pageflow/editor/image_files/_image_file.json.jbuilder +1 -1
- data/app/views/pageflow/editor/themings/_theming.json.jbuilder +0 -7
- data/app/views/pageflow/editor/widgets/_widget.json.jbuilder +1 -1
- data/app/views/pageflow/entries/_entry.html.erb +5 -5
- data/app/views/pageflow/entries/edit.html.erb +1 -1
- data/app/views/pageflow/entries/show.html.erb +1 -1
- data/app/views/pageflow/entry_json_seed/_entry.json.jbuilder +1 -0
- data/app/views/pageflow/themes/_theme.json.jbuilder +13 -0
- data/config/initializers/admin_resource_tabs.rb +19 -6
- data/config/initializers/features.rb +1 -0
- data/config/locales/de.yml +26 -3
- data/config/locales/en.yml +26 -3
- data/db/migrate/20170201074328_add_configuration_to_widgets.rb +5 -0
- data/db/migrate/20170222124848_update_video_file_output_presences.rb +1 -1
- data/db/migrate/20170315130000_add_theme_name_to_revisions.rb +12 -0
- data/db/migrate/20170912165050_reset_copied_snapshot_type.rb +24 -0
- data/lib/generators/pageflow/routes/routes_generator.rb +11 -1
- data/lib/generators/pageflow/seeds/seeds_generator.rb +5 -0
- data/lib/generators/pageflow/seeds/templates/seeds.rb +5 -3
- data/lib/generators/pageflow/theme/templates/preview.png +0 -0
- data/lib/generators/pageflow/theme/templates/preview_thumbnail.png +0 -0
- data/lib/generators/pageflow/theme/theme_generator.rb +3 -0
- data/lib/pageflow/ability_mixin.rb +27 -6
- data/lib/pageflow/active_admin_can_can_fix.rb +34 -0
- data/lib/pageflow/configuration/permissions.rb +27 -0
- data/lib/pageflow/configuration.rb +28 -0
- data/lib/pageflow/engine.rb +25 -19
- data/lib/pageflow/images/palette.png +0 -0
- data/lib/pageflow/seeds.rb +1 -1
- data/lib/pageflow/theme.rb +8 -0
- data/lib/pageflow/version.rb +1 -1
- data/lib/pageflow/widget_type.rb +13 -0
- data/lib/pageflow/zencoder_video_output_definition.rb +16 -16
- data/lib/tasks/pageflow_tasks.rake +14 -0
- data/spec/factories/entries.rb +4 -0
- data/spec/factories/revisions.rb +10 -0
- data/spec/factories/users.rb +6 -0
- data/spec/factories/video_files.rb +4 -0
- data/vendor/assets/javascripts/audio5.min.js +3 -0
- metadata +78 -15
- data/app/assets/javascripts/pageflow/editor/models/mixins/widget_subject.js +0 -37
- data/app/assets/javascripts/pageflow/editor/utils/reload_stylesheet.js +0 -9
- data/app/assets/stylesheets/pageflow/text_variants.scss +0 -24
- data/app/views/admin/accounts/_widgets_inline_help.html.erb +0 -5
- data/app/views/admin/memberships/_entity_account_input.html.erb +0 -5
- data/app/views/admin/memberships/_entity_entry_input.html.erb +0 -5
- data/app/views/admin/users/_quota_exhausted.html.erb +0 -1
- data/app/views/components/pageflow/admin/add_membership_button_if_needed.rb +0 -62
@@ -86,8 +86,12 @@ module Pageflow
|
|
86
86
|
query.has_at_least_role?(:publisher)
|
87
87
|
end
|
88
88
|
|
89
|
+
def create_any?
|
90
|
+
AccountPolicy::Scope.new(@user, Account).entry_creatable.any?
|
91
|
+
end
|
92
|
+
|
89
93
|
def create?
|
90
|
-
|
94
|
+
query.has_at_least_account_role?(:publisher)
|
91
95
|
end
|
92
96
|
|
93
97
|
def duplicate?
|
@@ -120,7 +124,9 @@ module Pageflow
|
|
120
124
|
end
|
121
125
|
|
122
126
|
def update_theming_on?
|
123
|
-
|
127
|
+
user.admin? ||
|
128
|
+
(!permissions_config.only_admins_may_update_theming &&
|
129
|
+
publish_on_account_of?)
|
124
130
|
end
|
125
131
|
|
126
132
|
def manage_account_of?
|
@@ -128,7 +134,9 @@ module Pageflow
|
|
128
134
|
end
|
129
135
|
|
130
136
|
def update_feature_configuration_on?
|
131
|
-
|
137
|
+
user.admin? ||
|
138
|
+
(!permissions_config.only_admins_may_update_features &&
|
139
|
+
manage_account_of?)
|
132
140
|
end
|
133
141
|
|
134
142
|
def destroy?
|
@@ -29,17 +29,28 @@ module Pageflow
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
+
attr_reader :user
|
33
|
+
|
32
34
|
def initialize(user, managed_user)
|
33
35
|
@user = user
|
34
36
|
@managed_user = managed_user
|
35
37
|
end
|
36
38
|
|
39
|
+
def create_any?
|
40
|
+
index?
|
41
|
+
end
|
42
|
+
|
37
43
|
def create?
|
38
44
|
index?
|
39
45
|
end
|
40
46
|
|
41
47
|
def index?
|
42
|
-
@user.
|
48
|
+
@user.admin? ||
|
49
|
+
@user.memberships.on_accounts.where(role: 'manager').any?
|
50
|
+
end
|
51
|
+
|
52
|
+
def add_account_to?
|
53
|
+
Pageflow.config.allow_multiaccount_users
|
43
54
|
end
|
44
55
|
|
45
56
|
def read?
|
@@ -62,6 +73,14 @@ module Pageflow
|
|
62
73
|
admin?
|
63
74
|
end
|
64
75
|
|
76
|
+
def see_admin_status?
|
77
|
+
if permissions_config.only_admins_may_see_admin_boolean
|
78
|
+
admin?
|
79
|
+
else
|
80
|
+
read?
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
65
84
|
def delete_own_user?
|
66
85
|
Pageflow.config.authorize_user_deletion.call(@managed_user) == true
|
67
86
|
end
|
@@ -12,7 +12,6 @@
|
|
12
12
|
|
13
13
|
<%= f.semantic_fields_for :default_theming do |theming| %>
|
14
14
|
<%= f.inputs do %>
|
15
|
-
<%= theming.input :theme_name, include_blank: false, collection: Pageflow.config.themes.names %>
|
16
15
|
<%= theming.input :cname, hint: t('pageflow.admin.themings.cname_hint') %>
|
17
16
|
<%= theming.input :additional_cnames, hint: t('pageflow.admin.themings.additional_cnames_hint') %>
|
18
17
|
<%= theming.input :home_url, hint: t('pageflow.admin.themings.home_url_hint') %>
|
@@ -31,7 +30,6 @@
|
|
31
30
|
<% end %>
|
32
31
|
|
33
32
|
<%= f.inputs do %>
|
34
|
-
<%= theming.input :home_button_enabled_by_default %>
|
35
33
|
<%= theming.input :imprint_link_label %>
|
36
34
|
<%= theming.input :imprint_link_url %>
|
37
35
|
<%= theming.input :copyright_link_label %>
|
@@ -43,7 +41,9 @@
|
|
43
41
|
<% end %>
|
44
42
|
|
45
43
|
<%= f.inputs do %>
|
46
|
-
<%= render('admin/accounts/
|
44
|
+
<%= render('admin/accounts/theming_defaults_inline_help') %>
|
45
|
+
<%= theming.input :theme_name, include_blank: false, collection: account_config.themes.names %>
|
46
|
+
<%= theming.input :home_button_enabled_by_default %>
|
47
47
|
<%= admin_widgets_fields(theming, account_config) %>
|
48
48
|
<% end %>
|
49
49
|
<% end %>
|
@@ -53,6 +53,6 @@
|
|
53
53
|
<% end %>
|
54
54
|
|
55
55
|
<script id="theme_options" type="application/json">
|
56
|
-
<%= themes_options_json_seed %>
|
56
|
+
<%= themes_options_json_seed(account_config) %>
|
57
57
|
</script>
|
58
58
|
<% end %>
|
@@ -1,22 +1,17 @@
|
|
1
1
|
<%= admin_form_for [:admin, parent, resource] do |f| %>
|
2
|
+
<% entity_type = resource.entity_type || params[:entity_type] %>
|
2
3
|
<%= f.inputs do %>
|
3
|
-
<%= f
|
4
|
-
|
5
|
-
|
6
|
-
input_html: { disabled: !f.object.new_record? || parent_type == :user }%>
|
7
|
-
<% if params[:entity_type].to_sym == :entry %>
|
8
|
-
<%= render partial: 'admin/memberships/entity_entry_input', locals: {f: f} %>
|
9
|
-
<% else %>
|
10
|
-
<%= render partial: 'admin/memberships/entity_account_input', locals: {f: f} %>
|
11
|
-
<% end %>
|
12
|
-
<%= f.hidden_field :entity_type, value: "Pageflow::#{params[:entity_type].capitalize}" %>
|
4
|
+
<%= membership_user_select(f, parent) %>
|
5
|
+
<%= membership_entity_select(f, parent, entity_type) %>
|
6
|
+
<%= f.hidden_field :entity_type, value: entity_type %>
|
13
7
|
<% end %>
|
14
8
|
<%= f.inputs do %>
|
15
|
-
<%= render partial: 'admin/memberships/role_hint'
|
9
|
+
<%= render partial: 'admin/memberships/role_hint',
|
10
|
+
locals: {entity_type: entity_type
|
11
|
+
.gsub('Pageflow::', '').downcase} %>
|
16
12
|
<%= f.input :role,
|
17
|
-
collection: membership_roles_collection(
|
18
|
-
|
19
|
-
include_blank: false %>
|
13
|
+
collection: membership_roles_collection(entity_type),
|
14
|
+
include_blank: false %>
|
20
15
|
<% end %>
|
21
16
|
<%= f.actions do %>
|
22
17
|
<%= f.action(:submit) %>
|
@@ -1,2 +1,2 @@
|
|
1
|
-
li(para(t("pageflow.admin.memberships.on_#{
|
1
|
+
li(para(t("pageflow.admin.memberships.on_#{entity_type}.role.hint_html")),
|
2
2
|
class: 'side_hint')
|
@@ -11,11 +11,24 @@
|
|
11
11
|
</ul>
|
12
12
|
<% end %>
|
13
13
|
|
14
|
-
<%= f.inputs
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
<%= f.inputs do %>
|
15
|
+
<%= m.input :entity_id,
|
16
|
+
as: :searchable_select,
|
17
|
+
ajax: {
|
18
|
+
resource: Pageflow::Account,
|
19
|
+
collection_name: :member_addable
|
20
|
+
},
|
21
|
+
include_blank: false,
|
22
|
+
label: Pageflow::Membership.human_attribute_name(:account) %>
|
23
|
+
|
24
|
+
<div id="quota_state_container">
|
25
|
+
<% if @invitation_form.initial_account %>
|
26
|
+
<%= users_quota_state(@invitation_form.initial_account) %>
|
27
|
+
<% end %>
|
28
|
+
</div>
|
29
|
+
<% end %>
|
18
30
|
|
31
|
+
<%= f.inputs "Details", id: 'invitation_form_details' do %>
|
19
32
|
<%= u.input :email, hint: I18n.t('pageflow.admin.users.email_invitation_hint') %>
|
20
33
|
<%= u.input :first_name %>
|
21
34
|
<%= u.input :last_name %>
|
@@ -23,11 +36,7 @@
|
|
23
36
|
as: :select,
|
24
37
|
include_blank: false,
|
25
38
|
collection: available_locales_collection %>
|
26
|
-
|
27
|
-
as: :select,
|
28
|
-
collection: @invitation_form.available_accounts,
|
29
|
-
include_blank: false,
|
30
|
-
label: Pageflow::Membership.human_attribute_name(:account) %>
|
39
|
+
|
31
40
|
<%= m.input :role,
|
32
41
|
collection: membership_roles_collection('Pageflow::Account'),
|
33
42
|
include_blank: false,
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%= admin_form_for
|
1
|
+
<%= admin_form_for @user, url: me_admin_users_path, html: {class: 'profile'} do |form| %>
|
2
2
|
<%= form.inputs :first_name, :last_name %>
|
3
3
|
|
4
4
|
<%= form.inputs do %>
|
@@ -9,7 +9,7 @@
|
|
9
9
|
<% end %>
|
10
10
|
|
11
11
|
<%= form.inputs do %>
|
12
|
-
<%= form.input :current_password, :
|
12
|
+
<%= form.input :current_password, hint: t('pageflow.admin.users.me.change_password_hint') %>
|
13
13
|
<%= form.input :password %>
|
14
14
|
<%= form.input :password_confirmation %>
|
15
15
|
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= users_quota_state(@account) %>
|
@@ -0,0 +1,81 @@
|
|
1
|
+
module Pageflow
|
2
|
+
module Admin
|
3
|
+
class AddMembershipButton < ViewComponent
|
4
|
+
builder_method :add_membership_button
|
5
|
+
|
6
|
+
def build(user, parent, entity_type)
|
7
|
+
if parent.is_a?(User)
|
8
|
+
button_label = I18n.t("pageflow.admin.#{entity_type}.add")
|
9
|
+
path = new_admin_user_membership_path(
|
10
|
+
parent, entity_type: to_class_name(entity_type)
|
11
|
+
)
|
12
|
+
data_tooltip = I18n.t("pageflow.admin.#{entity_type}."\
|
13
|
+
'none_addable_tooltip')
|
14
|
+
rel = "add_#{entity_type}_membership"
|
15
|
+
elsif parent.is_a?(Entry)
|
16
|
+
path = new_admin_entry_membership_path(
|
17
|
+
parent, entity_type: to_class_name(entity_type)
|
18
|
+
)
|
19
|
+
else
|
20
|
+
path = new_admin_account_membership_path(
|
21
|
+
parent, entity_type: to_class_name(entity_type)
|
22
|
+
)
|
23
|
+
end
|
24
|
+
|
25
|
+
unless parent.is_a?(User)
|
26
|
+
button_label = I18n.t('pageflow.admin.users.add')
|
27
|
+
data_tooltip = I18n.t('pageflow.admin.user.none_addable_tooltip')
|
28
|
+
rel = 'add_member'
|
29
|
+
end
|
30
|
+
|
31
|
+
if membership_possible_for(user, parent, entity_type)
|
32
|
+
para do
|
33
|
+
link_to(button_label, path, class: 'button', data: {rel: rel})
|
34
|
+
end
|
35
|
+
else
|
36
|
+
para(content_tag('a',
|
37
|
+
button_label,
|
38
|
+
class: 'button disabled',
|
39
|
+
data: {rel: rel}),
|
40
|
+
'data-tooltip' => data_tooltip)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def membership_possible_for(user, parent, entity_type)
|
47
|
+
if entity_type == 'entry'
|
48
|
+
entry_membership_possible_for_creator_and(user, parent)
|
49
|
+
else
|
50
|
+
account_membership_possible_for_creator_and(user, parent)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def entry_membership_possible_for_creator_and(user, parent)
|
55
|
+
case parent
|
56
|
+
when User
|
57
|
+
PotentialMemberships.creatable_by(user).entries_for_user(parent).any?
|
58
|
+
when Entry
|
59
|
+
PotentialMemberships.creatable_by(user).users_for_entry(parent).any?
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def account_membership_possible_for_creator_and(user, parent)
|
64
|
+
case parent
|
65
|
+
when User
|
66
|
+
PotentialMemberships.creatable_by(user).accounts_for_user(parent).any?
|
67
|
+
when Account
|
68
|
+
PotentialMemberships.creatable_by(user).users_for_account(parent).any?
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def to_class_name(entity_type)
|
73
|
+
if [:entry, 'entry'].include?(entity_type)
|
74
|
+
'Pageflow::Entry'
|
75
|
+
else
|
76
|
+
'Pageflow::Account'
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -22,9 +22,11 @@ module Pageflow
|
|
22
22
|
column do |membership|
|
23
23
|
if authorized?(:update, membership)
|
24
24
|
link_to(I18n.t('pageflow.admin.users.edit_role'),
|
25
|
-
edit_admin_entry_membership_path(
|
26
|
-
|
27
|
-
|
25
|
+
edit_admin_entry_membership_path(
|
26
|
+
entry,
|
27
|
+
membership,
|
28
|
+
entity_type: 'Pageflow::Entry'
|
29
|
+
),
|
28
30
|
data: {
|
29
31
|
rel: "edit_entry_membership_#{membership.role}"
|
30
32
|
})
|
@@ -45,7 +47,7 @@ module Pageflow
|
|
45
47
|
end
|
46
48
|
para text_node I18n.t('pageflow.admin.resource_tabs.account_editor_hint')
|
47
49
|
if authorized?(:add_member_to, entry)
|
48
|
-
|
50
|
+
add_membership_button(current_user, entry, 'entry')
|
49
51
|
end
|
50
52
|
end
|
51
53
|
end
|
@@ -39,16 +39,28 @@ module Pageflow
|
|
39
39
|
end
|
40
40
|
column do |revision|
|
41
41
|
text_node(link_to(t('pageflow.admin.entries.show'), pageflow.revision_path(revision), :class => 'show'))
|
42
|
-
|
42
|
+
if authorized?(:restore, entry)
|
43
|
+
text_node(link_to(t('pageflow.admin.entries.restore'),
|
44
|
+
restore_admin_revision_path(revision),
|
45
|
+
method: :post,
|
46
|
+
class: 'restore',
|
47
|
+
data: {
|
48
|
+
confirm: I18n.t(
|
49
|
+
'pageflow.admin.entries.confirm_restore'
|
50
|
+
)
|
51
|
+
}))
|
52
|
+
end
|
43
53
|
end
|
44
54
|
end
|
45
55
|
end
|
46
56
|
|
47
57
|
para(I18n.t('pageflow.admin.entries.published_revision_legend'), :class => 'legend published')
|
48
58
|
|
49
|
-
|
50
|
-
|
51
|
-
|
59
|
+
if authorized?(:snapshot, entry)
|
60
|
+
text_node(button_to(t('pageflow.admin.entries.snapshot'),
|
61
|
+
snapshot_admin_entry_path(entry),
|
62
|
+
method: :post))
|
63
|
+
end
|
52
64
|
end
|
53
65
|
end
|
54
66
|
end
|
@@ -21,7 +21,11 @@ module Pageflow
|
|
21
21
|
column do |membership|
|
22
22
|
if authorized?(:update, membership)
|
23
23
|
link_to(t('pageflow.admin.users.edit_role'),
|
24
|
-
edit_admin_user_membership_path(
|
24
|
+
edit_admin_user_membership_path(
|
25
|
+
user,
|
26
|
+
membership,
|
27
|
+
entity_type: 'Pageflow::Account'
|
28
|
+
),
|
25
29
|
data: {
|
26
30
|
rel: "edit_account_role_#{membership.role}"
|
27
31
|
})
|
@@ -39,7 +43,9 @@ module Pageflow
|
|
39
43
|
end
|
40
44
|
end
|
41
45
|
end
|
42
|
-
|
46
|
+
if authorized?(:add_account_to, :users)
|
47
|
+
add_membership_button(current_user, user, 'account')
|
48
|
+
end
|
43
49
|
end
|
44
50
|
end
|
45
51
|
end
|
@@ -25,7 +25,11 @@ module Pageflow
|
|
25
25
|
column do |membership|
|
26
26
|
if authorized?(:update, membership)
|
27
27
|
link_to(t('pageflow.admin.users.edit_role'),
|
28
|
-
edit_admin_user_membership_path(
|
28
|
+
edit_admin_user_membership_path(
|
29
|
+
user,
|
30
|
+
membership,
|
31
|
+
entity_type: 'Pageflow::Entry'
|
32
|
+
),
|
29
33
|
data: {
|
30
34
|
rel: "edit_entry_role_#{membership.role}"
|
31
35
|
})
|
@@ -43,7 +47,7 @@ module Pageflow
|
|
43
47
|
end
|
44
48
|
end
|
45
49
|
end
|
46
|
-
|
50
|
+
add_membership_button(current_user, user, 'entry')
|
47
51
|
end
|
48
52
|
end
|
49
53
|
end
|
@@ -18,9 +18,11 @@ module Pageflow
|
|
18
18
|
column do |membership|
|
19
19
|
if authorized?(:update, membership)
|
20
20
|
link_to(I18n.t('pageflow.admin.users.edit_role'),
|
21
|
-
edit_admin_account_membership_path(
|
22
|
-
|
23
|
-
|
21
|
+
edit_admin_account_membership_path(
|
22
|
+
account,
|
23
|
+
membership,
|
24
|
+
entity_type: 'Pageflow::Account'
|
25
|
+
),
|
24
26
|
data: {
|
25
27
|
rel: "edit_account_role_#{membership.role}"
|
26
28
|
})
|
@@ -29,7 +31,7 @@ module Pageflow
|
|
29
31
|
column do |membership|
|
30
32
|
if authorized?(:destroy, membership)
|
31
33
|
link_to(I18n.t('pageflow.admin.users.delete'),
|
32
|
-
admin_account_membership_path(
|
34
|
+
admin_account_membership_path(account, membership),
|
33
35
|
method: :delete,
|
34
36
|
data: {
|
35
37
|
confirm: I18n.t('active_admin.delete_confirmation'),
|
@@ -38,7 +40,9 @@ module Pageflow
|
|
38
40
|
end
|
39
41
|
end
|
40
42
|
end
|
41
|
-
|
43
|
+
if authorized?(:add_member_to, account)
|
44
|
+
add_membership_button(current_user, account, 'account')
|
45
|
+
end
|
42
46
|
end
|
43
47
|
end
|
44
48
|
end
|
@@ -7,7 +7,8 @@
|
|
7
7
|
window.PAGEFLOW_EDITOR = <%= @editor_scope ? 'true' : 'false' %>;
|
8
8
|
</script>
|
9
9
|
|
10
|
-
<%= javascript_include_tag
|
10
|
+
<%= javascript_include_tag 'pageflow/vendor', 'data-turbolinks-track' => true %>
|
11
|
+
<%= javascript_include_tag 'pageflow/application', 'data-turbolinks-track' => true %>
|
11
12
|
|
12
13
|
<%= csrf_meta_tags %>
|
13
14
|
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, minimum-scale=1, maximum-scale=1" />
|
@@ -0,0 +1 @@
|
|
1
|
+
<p>Replace by creating <code>app/views/pageflow/admin/users/_quota_exhausted.html.erb</code></p>
|
@@ -17,3 +17,5 @@ end
|
|
17
17
|
json.default_author_meta_tag Pageflow.config.default_author_meta_tag
|
18
18
|
json.default_publisher_meta_tag Pageflow.config.default_publisher_meta_tag
|
19
19
|
json.default_keywords_meta_tag Pageflow.config.default_keywords_meta_tag
|
20
|
+
json.themes(Pageflow.config.themes, :name, :preview_image_path)
|
21
|
+
json.edit_lock_polling_interval_in_seconds Pageflow.config.edit_lock_polling_interval
|
@@ -12,6 +12,7 @@ json.configuration do
|
|
12
12
|
:title, :locale, :summary, :credits, :author, :publisher, :keywords,
|
13
13
|
:manual_start, :emphasize_chapter_beginning, :emphasize_new_pages,
|
14
14
|
:share_url, :share_image_id, :share_image_x, :share_image_y)
|
15
|
+
json.theme_name entry.theme.name
|
15
16
|
json.home_url entry.home_button.url_value
|
16
17
|
json.home_button_enabled entry.home_button.enabled_value
|
17
18
|
json.overview_button_enabled entry.overview_button.enabled_value
|
@@ -6,6 +6,7 @@
|
|
6
6
|
"storylines": <%= @entry.storylines.to_json.html_safe %>,
|
7
7
|
"chapters": <%= @entry.chapters.to_json.html_safe %>,
|
8
8
|
"pages": <%= @entry.pages.to_json.html_safe %>,
|
9
|
+
"widgets": <%= widgets_json_seeds(@entry) %>,
|
9
10
|
|
10
11
|
"files": <%= files_json_seeds(@entry) %>,
|
11
12
|
|
@@ -13,6 +14,7 @@
|
|
13
14
|
"theming": <%= render_json_seed(@entry.theming) %>,
|
14
15
|
"widget_types": <%= widget_types_json_seeds(@entry_config) %>,
|
15
16
|
"page_types": <%= page_type_json_seeds(@entry_config) %>,
|
17
|
+
"themes": <%= theme_json_seeds(@entry_config) %>,
|
16
18
|
|
17
19
|
"common": <%= common_entry_seed(@entry).to_json.html_safe %>
|
18
|
-
}
|
20
|
+
}
|
@@ -1,8 +1 @@
|
|
1
1
|
json.pretty_url pretty_theming_url(theming)
|
2
|
-
json.home_button theming.theme.has_home_button?
|
3
|
-
json.overview_button theming.theme.has_overview_button?
|
4
|
-
json.page_change_by_scrolling theming.theme.page_change_by_scrolling?
|
5
|
-
json.hide_text_on_swipe theming.theme.hide_text_on_swipe?
|
6
|
-
json.emphasized_pages theming.theme.supports_emphasized_pages?
|
7
|
-
json.scroll_indicator_modes theming.theme.supports_scroll_indicator_modes?
|
8
|
-
json.change_to_parent_page_at_storyline_boundary theming.theme.change_to_parent_page_at_storyline_boundary?
|
@@ -1,2 +1,2 @@
|
|
1
1
|
json.id(widget.role)
|
2
|
-
json.(widget, :type_name)
|
2
|
+
json.(widget, :type_name, :role, :configuration)
|
@@ -1,18 +1,18 @@
|
|
1
1
|
<%= content_tag(:div,
|
2
|
-
:
|
3
|
-
:
|
4
|
-
:
|
2
|
+
id: 'outer_wrapper',
|
3
|
+
data: {theme: entry.theme.name},
|
4
|
+
class: entry_css_class(entry)) do %>
|
5
5
|
|
6
6
|
<%= render 'pageflow/entries/skip_links' %>
|
7
7
|
|
8
8
|
<h1 class="hidden"><%= entry.title %></h1>
|
9
9
|
|
10
|
-
<img src="<%= image_path("pageflow/themes/#{entry.
|
10
|
+
<img src="<%= image_path("pageflow/themes/#{entry.theme.directory_name}/logo_print.png") %>" class="print_image" alt="<%= t('pageflow.public.logo') %>">
|
11
11
|
<span class="print_only page_url"><%= request.original_url %></span>
|
12
12
|
|
13
13
|
<%= content_tag :div, :id => 'content', :class => 'entry', :data => {:role => 'slideshow'} do %>
|
14
14
|
<%= render entry.pages, entry: entry %>
|
15
|
-
<%= render 'pageflow/entries/indicators', :theme => entry.
|
15
|
+
<%= render 'pageflow/entries/indicators', :theme => entry.theme %>
|
16
16
|
<% end %>
|
17
17
|
|
18
18
|
<%= render 'pageflow/entries/header', :entry => entry %>
|
@@ -42,7 +42,7 @@
|
|
42
42
|
|
43
43
|
<% I18n.with_locale(@entry.locale) do %>
|
44
44
|
<%= page_type_templates(@entry) %>
|
45
|
-
<%= render('pageflow/editor/entries/indicators_seed', theme: @entry.
|
45
|
+
<%= render('pageflow/editor/entries/indicators_seed', theme: @entry.theme) %>
|
46
46
|
<% end %>
|
47
47
|
|
48
48
|
<%= render('pageflow/editor/entries/help_entries_seed', config: @entry_config) %>
|
@@ -9,7 +9,7 @@
|
|
9
9
|
<%= social_share_meta_tags_for(@entry.share_target) %>
|
10
10
|
<%= render_widget_head_fragments(@entry) %>
|
11
11
|
|
12
|
-
<%= tag :link, :rel => 'icon', :href => image_path("pageflow/themes/#{@entry.
|
12
|
+
<%= tag :link, :rel => 'icon', :href => image_path("pageflow/themes/#{@entry.theme.directory_name}/favicon.ico"), :type => 'image/ico' %>
|
13
13
|
<%= meta_tags_for_entry(@entry) %>
|
14
14
|
<% end %>
|
15
15
|
<% end %>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
json.(theme, :name)
|
2
|
+
|
3
|
+
json.preview_image_url(image_url(theme.preview_image_path))
|
4
|
+
json.preview_thumbnail_url(image_url(theme.preview_thumbnail_path))
|
5
|
+
json.stylesheet_path(stylesheet_path(theme.stylesheet_path))
|
6
|
+
|
7
|
+
json.home_button theme.has_home_button?
|
8
|
+
json.overview_button theme.has_overview_button?
|
9
|
+
json.page_change_by_scrolling theme.page_change_by_scrolling?
|
10
|
+
json.hide_text_on_swipe theme.hide_text_on_swipe?
|
11
|
+
json.emphasized_pages theme.supports_emphasized_pages?
|
12
|
+
json.scroll_indicator_modes theme.supports_scroll_indicator_modes?
|
13
|
+
json.change_to_parent_page_at_storyline_boundary theme.change_to_parent_page_at_storyline_boundary?
|
@@ -2,15 +2,28 @@ Pageflow.configure do |config|
|
|
2
2
|
config.admin_resource_tabs.register(:entry, name: :members, component: Pageflow::Admin::MembersTab)
|
3
3
|
config.admin_resource_tabs.register(:entry, name: :revisions, component: Pageflow::Admin::RevisionsTab)
|
4
4
|
|
5
|
-
config.admin_resource_tabs.register(:entry,
|
6
|
-
name: :features,
|
7
|
-
component: Pageflow::Admin::FeaturesTab,
|
8
|
-
required_account_role: :manager)
|
9
|
-
|
10
5
|
config.admin_resource_tabs.register(:user, name: :accounts, component: Pageflow::Admin::UserAccountsTab)
|
11
6
|
config.admin_resource_tabs.register(:user, name: :entries, component: Pageflow::Admin::UserEntriesTab)
|
12
7
|
|
13
8
|
config.admin_resource_tabs.register(:theming, name: :entries, component: Pageflow::Admin::EntriesTab)
|
14
9
|
config.admin_resource_tabs.register(:theming, name: :users, component: Pageflow::Admin::UsersTab)
|
15
|
-
|
10
|
+
end
|
11
|
+
|
12
|
+
Pageflow.after_configure do |config|
|
13
|
+
features_tab_permissions =
|
14
|
+
if config.permissions.only_admins_may_update_features
|
15
|
+
{admin_only: true}
|
16
|
+
else
|
17
|
+
{required_account_role: :manager}
|
18
|
+
end
|
19
|
+
|
20
|
+
config.admin_resource_tabs.register(:entry,
|
21
|
+
name: :features,
|
22
|
+
component: Pageflow::Admin::FeaturesTab,
|
23
|
+
**features_tab_permissions)
|
24
|
+
|
25
|
+
config.admin_resource_tabs.register(:theming,
|
26
|
+
name: :features,
|
27
|
+
component: Pageflow::Admin::FeaturesTab,
|
28
|
+
**features_tab_permissions)
|
16
29
|
end
|