pageflow 16.0.0 → 16.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +86 -33
- data/README.md +6 -6
- data/Rakefile +1 -1
- data/admins/pageflow/entry.rb +0 -1
- data/admins/pageflow/sites.rb +3 -0
- data/app/assets/images/pageflow/admin/icons/published_with_noindex.svg +4 -0
- data/app/assets/javascripts/pageflow/dist/ui.js +299 -72
- data/app/assets/stylesheets/pageflow/admin/active_admin_patches.scss +1 -1
- data/app/assets/stylesheets/pageflow/admin/entries.scss +4 -0
- data/app/assets/stylesheets/pageflow/admin/permalink_input.scss +10 -0
- data/app/assets/stylesheets/pageflow/admin/publication_state_indicator.scss +4 -0
- data/app/assets/stylesheets/pageflow/editor/base.scss +0 -1
- data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +61 -7
- data/app/assets/stylesheets/pageflow/editor/file_meta_data.scss +12 -1
- data/app/assets/stylesheets/pageflow/editor/file_thumbnails.scss +4 -0
- data/app/assets/stylesheets/pageflow/editor/help.scss +3 -3
- data/app/assets/stylesheets/pageflow/editor/info_box.scss +7 -0
- data/app/assets/stylesheets/pageflow/editor/inputs/file_input.scss +0 -5
- data/app/assets/stylesheets/pageflow/ui/forms.scss +4 -4
- data/app/assets/stylesheets/pageflow/{editor/wysihtml5.scss → ui/input/text_area_input.scss} +13 -1
- data/app/assets/stylesheets/pageflow/ui.scss +1 -0
- data/app/controllers/pageflow/chapters_controller.rb +2 -2
- data/app/controllers/pageflow/editor/entry_publications_controller.rb +5 -1
- data/app/controllers/pageflow/editor/file_import_controller.rb +1 -1
- data/app/controllers/pageflow/editor/files_controller.rb +1 -1
- data/app/controllers/pageflow/entries_controller.rb +12 -2
- data/app/controllers/pageflow/feeds_controller.rb +18 -0
- data/app/controllers/pageflow/pages_controller.rb +2 -2
- data/app/controllers/pageflow/sitemaps_controller.rb +15 -0
- data/app/controllers/pageflow/storylines_controller.rb +2 -2
- data/app/helpers/pageflow/entries_helper.rb +4 -1
- data/app/helpers/pageflow/feeds_helper.rb +66 -0
- data/app/helpers/pageflow/meta_tags_helper.rb +2 -1
- data/app/helpers/pageflow/page_types_helper.rb +10 -10
- data/app/helpers/pageflow/revision_file_helper.rb +3 -3
- data/app/helpers/pageflow/social_share_helper.rb +2 -2
- data/app/inputs/pageflow_permalink_input.rb +15 -3
- data/app/models/concerns/pageflow/entry_publication_states.rb +9 -0
- data/app/models/concerns/pageflow/reusable_file.rb +3 -3
- data/app/models/concerns/pageflow/uploadable_file.rb +5 -0
- data/app/models/pageflow/account.rb +8 -0
- data/app/models/pageflow/audio_file_url_templates.rb +2 -1
- data/app/models/pageflow/draft_entry.rb +1 -1
- data/app/models/pageflow/entries_feed.rb +32 -0
- data/app/models/pageflow/entry.rb +7 -5
- data/app/models/pageflow/entry_at_revision.rb +2 -0
- data/app/models/pageflow/image_file.rb +34 -8
- data/app/models/pageflow/image_file_url_templates.rb +7 -1
- data/app/models/pageflow/membership.rb +3 -2
- data/app/models/pageflow/other_file.rb +5 -0
- data/app/models/pageflow/other_file_url_templates.rb +16 -0
- data/app/models/pageflow/published_entry.rb +6 -0
- data/app/models/pageflow/revision.rb +6 -0
- data/app/models/pageflow/site.rb +8 -0
- data/app/models/pageflow/sitemaps.rb +14 -0
- data/app/models/pageflow/used_file.rb +10 -2
- data/app/models/pageflow/video_file_url_templates.rb +3 -1
- data/app/models/pageflow/widget.rb +9 -1
- data/app/views/admin/entries/_permalink_inputs.html.erb +1 -2
- data/app/views/admin/sites/_attributes_table.html.arb +3 -0
- data/app/views/admin/sites/_fields.html.erb +6 -0
- data/app/views/components/pageflow/admin/extensible_attributes_table.rb +2 -2
- data/app/views/components/pageflow/admin/revisions_tab.rb +8 -0
- data/app/views/components/pageflow/admin/sites_tab.rb +3 -0
- data/app/views/pageflow/editor/config/_seeds.json.jbuilder +2 -0
- data/app/views/pageflow/editor/entries/_entry.json.jbuilder +1 -0
- data/app/views/pageflow/editor/entry_publications/check.json.jbuilder +1 -0
- data/app/views/pageflow/feeds/index.atom.builder +20 -0
- data/app/views/pageflow/image_files/_image_file.json.jbuilder +1 -0
- data/app/views/pageflow/meta_tags/_entry.html.erb +1 -0
- data/app/views/pageflow/sitemaps/index.xml.builder +9 -0
- data/config/initializers/features.rb +3 -0
- data/config/initializers/paperclip.rb +8 -0
- data/config/locales/de.yml +77 -6
- data/config/locales/en.yml +79 -4
- data/config/routes.rb +3 -0
- data/config/spring.rb +1 -1
- data/db/migrate/20230120092923_create_other_files.rb +23 -0
- data/db/migrate/20230323115745_add_feeds_enabled_to_sites.rb +5 -0
- data/db/migrate/20230323154323_add_sitemap_enabled_to_sites.rb +5 -0
- data/db/migrate/20230331103823_add_title_to_sites.rb +5 -0
- data/db/migrate/20230405103612_add_custom_feed_url_to_sites.rb +5 -0
- data/db/migrate/20231024062501_add_output_presences_to_image_files.rb +5 -0
- data/db/migrate/20231128124523_add_noindex_to_revisions.rb +5 -0
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +710 -259
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +34 -5
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-client.js +1 -1
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-server.js +1 -1
- data/entry_types/paged/app/controllers/pageflow_paged/editor/entries_controller.rb +0 -2
- data/entry_types/paged/app/controllers/pageflow_paged/entries_controller.rb +2 -1
- data/entry_types/paged/app/views/pageflow_paged/entries/show.html.erb +1 -0
- data/entry_types/paged/config/initializers/features.rb +0 -1
- data/entry_types/paged/lib/pageflow_paged/engine.rb +13 -1
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/chapters_controller.rb +2 -2
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/content_elements_controller.rb +3 -4
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/sections_controller.rb +13 -6
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/entries_controller.rb +11 -3
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/cache_helper.rb +11 -0
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/entry_json_seed_helper.rb +42 -0
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/seed_html_helper.rb +8 -5
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/packs_helper.rb +17 -12
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/react_server_side_rendering_helper.rb +9 -1
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb +1 -1
- data/entry_types/scrolled/app/models/pageflow_scrolled/chapter.rb +23 -0
- data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_head.html.erb +1 -1
- data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_seed.json.jbuilder +1 -5
- data/entry_types/scrolled/app/views/pageflow_scrolled/editor/sections/_section_with_content_elements.json.jbuilder +10 -0
- data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +44 -41
- data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_consent_vendors.json.jbuilder +16 -0
- data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry.json.jbuilder +7 -0
- data/entry_types/scrolled/config/initializers/features.rb +5 -0
- data/entry_types/scrolled/config/locales/consent_widget.de.yml +4 -0
- data/entry_types/scrolled/config/locales/consent_widget.en.yml +4 -0
- data/entry_types/scrolled/config/locales/de.yml +225 -8
- data/entry_types/scrolled/config/locales/en.yml +239 -2
- data/entry_types/scrolled/config/routes.rb +4 -0
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/install_generator.rb +69 -44
- data/entry_types/scrolled/lib/pageflow_scrolled/additional_packs.rb +2 -1
- data/entry_types/scrolled/lib/pageflow_scrolled/additional_seed_data.rb +1 -1
- data/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb +96 -0
- data/entry_types/scrolled/lib/pageflow_scrolled/content_element_consent_vendors.rb +38 -0
- data/entry_types/scrolled/lib/pageflow_scrolled/engine.rb +13 -1
- data/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +30 -0
- data/entry_types/scrolled/lib/pageflow_scrolled/react_widget_type.rb +6 -1
- data/entry_types/scrolled/lib/pageflow_scrolled/web_app_manifest.rb +1 -1
- data/entry_types/scrolled/lib/tasks/pageflow_scrolled/dummy.rake +1 -1
- data/entry_types/scrolled/lib/tasks/pageflow_scrolled/storybook.rake +1 -2
- data/entry_types/scrolled/package/config/webpack.js +26 -0
- data/entry_types/scrolled/package/contentElements-editor.js +330 -32
- data/entry_types/scrolled/package/contentElements-frontend.css +1 -1
- data/entry_types/scrolled/package/contentElements-frontend.js +920 -145
- data/entry_types/scrolled/package/editor.js +819 -239
- data/entry_types/scrolled/package/frontend/{EditableInlineText.module-14c7b097.js → EditableInlineText.module-6ee0e024.js} +1975 -1792
- data/entry_types/scrolled/package/frontend/PhonePlatformContext-b28d991a.js +32 -0
- data/entry_types/scrolled/package/frontend/ToggleFullscreenCornerButton-8242f213.js +107 -0
- data/entry_types/scrolled/package/frontend/Viewer-32cd1ac1.js +154 -0
- data/entry_types/scrolled/package/frontend/{Viewer-b6becc57.js → Viewer-6e4d14ed.js} +32 -161
- data/entry_types/scrolled/package/frontend/arrowRight-e42e6011.js +77 -0
- data/entry_types/scrolled/package/frontend/{components-b3160dd7.js → components-24363f97.js} +188 -47
- data/entry_types/scrolled/package/frontend/{PhonePlatformContext-f6093cc6.js → i18n-71c39823.js} +191 -111
- data/entry_types/scrolled/package/frontend/index-fc4b13e6.js +118 -0
- data/entry_types/scrolled/package/frontend/index.css +1 -1
- data/entry_types/scrolled/package/frontend/index.js +252 -76
- data/entry_types/scrolled/package/frontend/useContentElementEditorState-245f1986.js +52 -0
- data/entry_types/scrolled/package/package.json +6 -4
- data/entry_types/scrolled/package/testHelpers.js +11 -2
- data/entry_types/scrolled/package/values/colors.module.css +15 -0
- data/entry_types/scrolled/package/widgets/consentBar.css +1 -0
- data/entry_types/scrolled/package/widgets/consentBar.js +426 -0
- data/entry_types/scrolled/package/widgets/defaultNavigation.css +2 -2
- data/entry_types/scrolled/package/widgets/defaultNavigation.js +39 -4
- data/entry_types/scrolled/package/widgets/iconInlineFileRights.css +1 -0
- data/entry_types/scrolled/package/widgets/iconInlineFileRights.js +49 -0
- data/entry_types/scrolled/package/widgets/textInlineFileRights.css +1 -0
- data/entry_types/scrolled/package/widgets/textInlineFileRights.js +37 -0
- data/lib/generators/pageflow/resque/resque_generator.rb +1 -1
- data/lib/generators/pageflow/resque/templates/resque.rake +1 -1
- data/lib/generators/pageflow/resque/templates/resque.rb +1 -1
- data/lib/generators/pageflow/routes/routes_generator.rb +1 -1
- data/lib/pageflow/ability_mixin.rb +5 -5
- data/lib/pageflow/active_admin_can_can_fix.rb +2 -2
- data/lib/pageflow/built_in_file_type.rb +7 -0
- data/lib/pageflow/configuration.rb +29 -1
- data/lib/pageflow/engine.rb +18 -40
- data/lib/pageflow/entry_export_import/revision_serialization.rb +1 -1
- data/lib/pageflow/file_type.rb +2 -2
- data/lib/pageflow/global_config_api.rb +2 -2
- data/lib/pageflow/nested_revision_component.rb +23 -5
- data/lib/pageflow/page_type.rb +1 -1
- data/lib/pageflow/paperclip_processors/webp.rb +63 -0
- data/lib/pageflow/rails_version.rb +19 -0
- data/lib/pageflow/seeds.rb +10 -7
- data/lib/pageflow/user_mixin.rb +1 -1
- data/lib/pageflow/version.rb +1 -1
- data/lib/pageflow/widget_types.rb +4 -0
- data/package/config/jest/index.js +3 -1
- data/package/config/webpack5.js +14 -0
- data/package/editor.js +410 -181
- data/package/frontend.js +34 -4
- data/package/testHelpers.js +1 -1
- data/package/ui.js +297 -71
- data/spec/factories/entries.rb +34 -3
- data/spec/factories/sites.rb +3 -0
- data/vendor/assets/javascripts/iscroll.js +4 -7
- metadata +118 -80
- data/app/helpers/pageflow/admin/permalinks_helper.rb +0 -15
- data/entry_types/scrolled/package/frontend/arrowRight-78a7cee4.js +0 -42
@@ -143,7 +143,7 @@ function ChapterLink(props) {
|
|
143
143
|
}, item);
|
144
144
|
}
|
145
145
|
|
146
|
-
var styles$3 = {"legalInfoTooltip":"LegalInfoMenu-module_legalInfoTooltip__Qmf8u","scroller":"LegalInfoMenu-module_scroller__3NPW_","links":"LegalInfoMenu-module_links__1kpsd","legalInfoLink":"LegalInfoMenu-module_legalInfoLink__gkXaF"};
|
146
|
+
var styles$3 = {"legalInfoTooltip":"LegalInfoMenu-module_legalInfoTooltip__Qmf8u","scroller":"LegalInfoMenu-module_scroller__3NPW_","links":"LegalInfoMenu-module_links__1kpsd","separator":"LegalInfoMenu-module_separator__3mmjA","section":"LegalInfoMenu-module_section__1bLWD","legalInfoLink":"LegalInfoMenu-module_legalInfoLink__gkXaF","rights":"LegalInfoMenu-module_rights__-XGYO"};
|
147
147
|
|
148
148
|
function LegalInfoLink(props) {
|
149
149
|
return /*#__PURE__*/React.createElement("div", null, props.label && props.url && /*#__PURE__*/React.createElement("a", {
|
@@ -170,11 +170,14 @@ function LegalInfoMenu(props) {
|
|
170
170
|
}, /*#__PURE__*/React.createElement("div", {
|
171
171
|
className: styles$3.scroller
|
172
172
|
}, credits && /*#__PURE__*/React.createElement("p", {
|
173
|
+
className: styles$3.section,
|
173
174
|
dangerouslySetInnerHTML: {
|
174
175
|
__html: credits
|
175
176
|
}
|
176
|
-
}), fileRights
|
177
|
-
className: styles$3.
|
177
|
+
}), fileRights.length > 0 && /*#__PURE__*/React.createElement("div", {
|
178
|
+
className: styles$3.section
|
179
|
+
}, /*#__PURE__*/React.createElement("strong", null, t('pageflow_scrolled.public.media')), " ", renderFileRights(fileRights))), /*#__PURE__*/React.createElement("div", {
|
180
|
+
className: classNames(styles$3.links, _defineProperty({}, styles$3.separator, credits || fileRights.length > 0))
|
178
181
|
}, /*#__PURE__*/React.createElement(LegalInfoLink, legalInfo.imprint), /*#__PURE__*/React.createElement(LegalInfoLink, legalInfo.copyright), /*#__PURE__*/React.createElement(LegalInfoLink, legalInfo.privacy)), /*#__PURE__*/React.createElement(Widget, {
|
179
182
|
role: "creditsBoxFooter"
|
180
183
|
}));
|
@@ -191,6 +194,37 @@ function LegalInfoMenu(props) {
|
|
191
194
|
})));
|
192
195
|
}
|
193
196
|
|
197
|
+
function renderFileRights(items) {
|
198
|
+
return /*#__PURE__*/React.createElement("ul", {
|
199
|
+
className: styles$3.rights
|
200
|
+
}, items.map(function (item, index) {
|
201
|
+
return /*#__PURE__*/React.createElement("li", {
|
202
|
+
key: index
|
203
|
+
}, index > 0 && /*#__PURE__*/React.createElement(React.Fragment, null, "\xA0| "), renderFileRightsText(item));
|
204
|
+
}));
|
205
|
+
}
|
206
|
+
|
207
|
+
function renderFileRightsText(item) {
|
208
|
+
if (item.urls.length > 1) {
|
209
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, item.text, " (", item.urls.flatMap(function (url, index) {
|
210
|
+
return [index > 0 && ', ', /*#__PURE__*/React.createElement("a", {
|
211
|
+
href: url,
|
212
|
+
target: "_blank",
|
213
|
+
rel: "noopener noreferrer",
|
214
|
+
key: index
|
215
|
+
}, index + 1)];
|
216
|
+
}), ")");
|
217
|
+
} else if (item.urls.length === 1) {
|
218
|
+
return /*#__PURE__*/React.createElement("a", {
|
219
|
+
href: item.urls[0],
|
220
|
+
target: "_blank",
|
221
|
+
rel: "noopener noreferrer"
|
222
|
+
}, item.text);
|
223
|
+
} else {
|
224
|
+
return item.text;
|
225
|
+
}
|
226
|
+
}
|
227
|
+
|
194
228
|
var styles$4 = {"sharingTooltip":"SharingMenu-module_sharingTooltip__2Tyev","shareLinkContainer":"SharingMenu-module_shareLinkContainer__3-3W6","shareLink":"SharingMenu-module_shareLink__3PdRE"};
|
195
229
|
|
196
230
|
function SharingMenu(_ref) {
|
@@ -521,6 +555,7 @@ function DefaultNavigation(_ref) {
|
|
521
555
|
var shareProviders = useShareProviders({
|
522
556
|
isPhonePlatform: isPhonePlatform
|
523
557
|
});
|
558
|
+
var theme = useTheme();
|
524
559
|
useScrollPosition(function (_ref2) {
|
525
560
|
var prevPos = _ref2.prevPos,
|
526
561
|
currPos = _ref2.currPos;
|
@@ -596,7 +631,7 @@ function DefaultNavigation(_ref) {
|
|
596
631
|
mobileNavHidden: mobileNavHidden
|
597
632
|
}), /*#__PURE__*/React.createElement(SkipLinks, null), /*#__PURE__*/React.createElement(Logo, null), renderNav(), /*#__PURE__*/React.createElement("div", {
|
598
633
|
className: classNames(styles.contextIcons)
|
599
|
-
}, !configuration.hideToggleMuteButton && /*#__PURE__*/React.createElement(ToggleMuteButton, null), /*#__PURE__*/React.createElement(LegalInfoMenu, {
|
634
|
+
}, !configuration.hideToggleMuteButton && /*#__PURE__*/React.createElement(ToggleMuteButton, null), !theme.options.hideLegalInfoButton && /*#__PURE__*/React.createElement(LegalInfoMenu, {
|
600
635
|
tooltipOffset: hideSharingButton ? -40 : 0
|
601
636
|
}), !hideSharingButton && /*#__PURE__*/React.createElement(SharingMenu, {
|
602
637
|
shareProviders: shareProviders
|
@@ -0,0 +1 @@
|
|
1
|
+
.IconInlineFileRights-module_standAlone__15788{color:#fff;position:absolute;right:0;bottom:0;left:0;display:flex;justify-content:flex-end;pointer-events:none}.IconInlineFileRights-module_standAlone__15788>*{pointer-events:auto}.IconInlineFileRights-module_button__o5ZmR{border:0;padding:0;background-color:transparent;width:44px;height:40px;margin:0;display:flex;align-items:center;justify-content:center;color:currentColor;cursor:pointer;position:relative}.IconInlineFileRights-module_button__o5ZmR,.IconInlineFileRights-module_tooltip__2e1u8{transition:opacity .2s,visibility .2s}.IconInlineFileRights-module_transparent__2dVaA .IconInlineFileRights-module_button__o5ZmR{opacity:.6}.IconInlineFileRights-module_wrapper__2kQK_:active .IconInlineFileRights-module_button__o5ZmR,.IconInlineFileRights-module_wrapper__2kQK_:focus .IconInlineFileRights-module_button__o5ZmR,.IconInlineFileRights-module_wrapper__2kQK_:hover .IconInlineFileRights-module_button__o5ZmR{opacity:1}.IconInlineFileRights-module_button__o5ZmR svg{width:23px;height:23px}.IconInlineFileRights-module_standAlone__15788 .IconInlineFileRights-module_button__o5ZmR svg{filter:drop-shadow(0 1px 4px #000)}.IconInlineFileRights-module_tooltip__2e1u8{font-size:13.5555px;font-family:sans-serif;line-height:1.4;position:absolute;bottom:38px;right:5px;background-color:rgba(17,17,17,.9);border-radius:3px;color:#fff;padding:8px;visibility:hidden;opacity:0;text-align:right;margin-left:10px;box-sizing:border-box;max-width:95%;z-index:1}.IconInlineFileRights-module_tooltip__2e1u8:after{content:"";display:block;border:5px solid transparent;border-top-color:rgba(17,17,17,.9);position:absolute;right:11px;top:100%}.IconInlineFileRights-module_tooltip__2e1u8 a{color:#fff;-webkit-text-decoration-color:hsla(0,0%,100%,.3);text-decoration-color:hsla(0,0%,100%,.3)}.IconInlineFileRights-module_tooltip__2e1u8 span{color:hsla(0,0%,100%,.7)}.IconInlineFileRights-module_wrapper__2kQK_:focus-within .IconInlineFileRights-module_tooltip__2e1u8,.IconInlineFileRights-module_wrapper__2kQK_:hover .IconInlineFileRights-module_tooltip__2e1u8{visibility:visible;opacity:1}.IconInlineFileRights-module_scroller__1hT8t{overflow:auto;overflow-y:hidden;scrollbar-width:thin}.IconInlineFileRights-module_scroller__1hT8t::-webkit-scrollbar{height:12px}.IconInlineFileRights-module_scroller__1hT8t::-webkit-scrollbar-thumb{background-color:hsla(0,0%,100%,.9);border-radius:20px;border:3px solid rgba(17,17,17,.9)}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
import { ThemeIcon, frontend } from 'pageflow-scrolled/frontend';
|
2
|
+
import React from 'react';
|
3
|
+
import classNames from 'classnames';
|
4
|
+
|
5
|
+
function _defineProperty(obj, key, value) {
|
6
|
+
if (key in obj) {
|
7
|
+
Object.defineProperty(obj, key, {
|
8
|
+
value: value,
|
9
|
+
enumerable: true,
|
10
|
+
configurable: true,
|
11
|
+
writable: true
|
12
|
+
});
|
13
|
+
} else {
|
14
|
+
obj[key] = value;
|
15
|
+
}
|
16
|
+
|
17
|
+
return obj;
|
18
|
+
}
|
19
|
+
|
20
|
+
var styles = {"standAlone":"IconInlineFileRights-module_standAlone__15788","button":"IconInlineFileRights-module_button__o5ZmR","tooltip":"IconInlineFileRights-module_tooltip__2e1u8","transparent":"IconInlineFileRights-module_transparent__2dVaA","wrapper":"IconInlineFileRights-module_wrapper__2kQK_","scroller":"IconInlineFileRights-module_scroller__1hT8t"};
|
21
|
+
|
22
|
+
function IconInlineFileRights(_ref) {
|
23
|
+
var _classNames;
|
24
|
+
|
25
|
+
var context = _ref.context,
|
26
|
+
playerControlsStandAlone = _ref.playerControlsStandAlone,
|
27
|
+
playerControlsTransparent = _ref.playerControlsTransparent,
|
28
|
+
children = _ref.children;
|
29
|
+
|
30
|
+
if (context === 'afterElement') {
|
31
|
+
return null;
|
32
|
+
}
|
33
|
+
|
34
|
+
return /*#__PURE__*/React.createElement("div", {
|
35
|
+
className: classNames(styles.wrapper, (_classNames = {}, _defineProperty(_classNames, styles.transparent, context !== 'playerControls' || playerControlsTransparent), _defineProperty(_classNames, styles.standAlone, context !== 'playerControls'), _classNames))
|
36
|
+
}, /*#__PURE__*/React.createElement("button", {
|
37
|
+
className: styles.button
|
38
|
+
}, /*#__PURE__*/React.createElement(ThemeIcon, {
|
39
|
+
name: "copyright"
|
40
|
+
})), /*#__PURE__*/React.createElement("div", {
|
41
|
+
className: styles.tooltip
|
42
|
+
}, /*#__PURE__*/React.createElement("div", {
|
43
|
+
className: styles.scroller
|
44
|
+
}, children)));
|
45
|
+
}
|
46
|
+
|
47
|
+
frontend.widgetTypes.register('iconInlineFileRights', {
|
48
|
+
component: IconInlineFileRights
|
49
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
.TextInlineFileRights-module_text__1tT0W{font-size:14px;position:relative;z-index:1;color:var(--content-text-color)}.TextInlineFileRights-module_text__1tT0W li{text-align:right;padding-top:.2em}.TextInlineFileRights-module_forSection__22xHD{position:absolute;bottom:0;right:0}.TextInlineFileRights-module_forSection__22xHD li{padding:0 .4em .2em 0}.TextInlineFileRights-module_text__1tT0W a{color:inherit;-webkit-text-decoration-color:color-mix(in srgb,currentColor,transparent);text-decoration-color:color-mix(in srgb,currentColor,transparent)}.TextInlineFileRights-module_text__1tT0W span{opacity:.7}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
import { frontend } from 'pageflow-scrolled/frontend';
|
2
|
+
import React from 'react';
|
3
|
+
import classNames from 'classnames';
|
4
|
+
|
5
|
+
function _defineProperty(obj, key, value) {
|
6
|
+
if (key in obj) {
|
7
|
+
Object.defineProperty(obj, key, {
|
8
|
+
value: value,
|
9
|
+
enumerable: true,
|
10
|
+
configurable: true,
|
11
|
+
writable: true
|
12
|
+
});
|
13
|
+
} else {
|
14
|
+
obj[key] = value;
|
15
|
+
}
|
16
|
+
|
17
|
+
return obj;
|
18
|
+
}
|
19
|
+
|
20
|
+
var styles = {"text":"TextInlineFileRights-module_text__1tT0W","forSection":"TextInlineFileRights-module_forSection__22xHD"};
|
21
|
+
|
22
|
+
function TextInlineFileRights(_ref) {
|
23
|
+
var context = _ref.context,
|
24
|
+
children = _ref.children;
|
25
|
+
|
26
|
+
if (context === 'insideElement' || context === 'playerControls') {
|
27
|
+
return null;
|
28
|
+
}
|
29
|
+
|
30
|
+
return /*#__PURE__*/React.createElement("div", {
|
31
|
+
className: classNames(styles.text, _defineProperty({}, styles.forSection, context === 'section'))
|
32
|
+
}, /*#__PURE__*/React.createElement("div", null, children));
|
33
|
+
}
|
34
|
+
|
35
|
+
frontend.widgetTypes.register('textInlineFileRights', {
|
36
|
+
component: TextInlineFileRights
|
37
|
+
});
|
@@ -12,7 +12,7 @@ module Pageflow
|
|
12
12
|
template 'resque_enqueue_after_commit_patch.rb', 'config/initializers/resque_enqueue_after_commit_patch.rb'
|
13
13
|
template 'resque.rake', 'lib/tasks/resque.rake'
|
14
14
|
|
15
|
-
inject_into_file 'config/application.rb', after:
|
15
|
+
inject_into_file 'config/application.rb', after: /config.load_defaults .*\n/ do
|
16
16
|
<<-RUBY
|
17
17
|
config.active_job.queue_adapter = :resque
|
18
18
|
RUBY
|
@@ -18,7 +18,7 @@ module Pageflow
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def require_resque_server
|
21
|
-
prepend_to_file 'config/routes.rb', "require 'resque/server'\nrequire '
|
21
|
+
prepend_to_file 'config/routes.rb', "require 'resque/server'\nrequire 'resque/scheduler/server'\n\n"
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -31,7 +31,7 @@ module Pageflow
|
|
31
31
|
AccountPolicy.new(user, account).see_badge_belonging_to?
|
32
32
|
end
|
33
33
|
|
34
|
-
can :create, Membership do |membership|
|
34
|
+
can :create, Membership, Membership.all do |membership|
|
35
35
|
membership.entity.nil? ||
|
36
36
|
membership.user.nil? ||
|
37
37
|
(!(membership.user.entries.include?(membership.entity) ||
|
@@ -120,7 +120,7 @@ module Pageflow
|
|
120
120
|
AccountPolicy.new(user, account).update_site_on_entry_of?
|
121
121
|
end
|
122
122
|
|
123
|
-
can :create, Entry do |entry|
|
123
|
+
can :create, Entry, Entry.all do |entry|
|
124
124
|
EntryPolicy.new(user, entry).create?
|
125
125
|
end
|
126
126
|
|
@@ -204,7 +204,7 @@ module Pageflow
|
|
204
204
|
FilePolicy.new(user, record).use?
|
205
205
|
end
|
206
206
|
|
207
|
-
can [:create, :update, :destroy], Folder do |folder|
|
207
|
+
can [:create, :update, :destroy], Folder, Folder.all do |folder|
|
208
208
|
FolderPolicy.new(user, folder).manage?
|
209
209
|
end
|
210
210
|
|
@@ -234,7 +234,7 @@ module Pageflow
|
|
234
234
|
SitePolicy.new(user, site).update?
|
235
235
|
end
|
236
236
|
|
237
|
-
can :create, EntryTemplate do |entry_template|
|
237
|
+
can :create, EntryTemplate, EntryTemplate.all do |entry_template|
|
238
238
|
EntryTemplatePolicy.new(user, entry_template).create?
|
239
239
|
end
|
240
240
|
|
@@ -242,7 +242,7 @@ module Pageflow
|
|
242
242
|
EntryTemplatePolicy.new(user, entry_template).update?
|
243
243
|
end
|
244
244
|
|
245
|
-
can :create, ::User do |managed_user|
|
245
|
+
can :create, ::User, ::User.all do |managed_user|
|
246
246
|
UserPolicy.new(user, managed_user).create?
|
247
247
|
end
|
248
248
|
|
@@ -17,13 +17,13 @@ module Pageflow
|
|
17
17
|
# :create, User -> :create_any, :users
|
18
18
|
module ActiveAdminCanCanFix
|
19
19
|
def can?(action, subject)
|
20
|
-
if [:read, :create].include?(action) &&
|
20
|
+
if [:read, :new, :create].include?(action) &&
|
21
21
|
[Entry, Account, User].include?(subject)
|
22
22
|
collection_name = subject.name.demodulize.underscore.pluralize.to_sym
|
23
23
|
|
24
24
|
if action == :read
|
25
25
|
super(:index, collection_name)
|
26
|
-
|
26
|
+
else
|
27
27
|
super(:create_any, collection_name)
|
28
28
|
end
|
29
29
|
else
|
@@ -41,5 +41,12 @@ module Pageflow
|
|
41
41
|
collection_name: 'text_track_files',
|
42
42
|
url_templates: TextTrackFileUrlTemplates.new)
|
43
43
|
end
|
44
|
+
|
45
|
+
def self.other
|
46
|
+
FileType.new(model: 'Pageflow::OtherFile',
|
47
|
+
collection_name: 'other_files',
|
48
|
+
url_templates: OtherFileUrlTemplates.new,
|
49
|
+
top_level_type: true)
|
50
|
+
end
|
44
51
|
end
|
45
52
|
end
|
@@ -195,6 +195,19 @@ module Pageflow
|
|
195
195
|
# @since 12.4
|
196
196
|
attr_accessor :public_entry_redirect
|
197
197
|
|
198
|
+
# Cache-Control header to set for published entries that have been
|
199
|
+
# published without a password. For password protected entries,
|
200
|
+
# cache control is always set to private to prevent caching
|
201
|
+
# authenticated responses in public caches like CDNs and serving
|
202
|
+
# them to unauthenticated users.
|
203
|
+
#
|
204
|
+
# Can be wrapped in a `features.register` block to use different
|
205
|
+
# caching strategies for different entries or accounts.
|
206
|
+
#
|
207
|
+
# @since 16.1
|
208
|
+
# @return [String]
|
209
|
+
attr_accessor :public_entry_cache_control_header
|
210
|
+
|
198
211
|
# Either a lambda or an object with a `call` method taking a
|
199
212
|
# {Site} as paramater and returing a hash of options used to
|
200
213
|
# construct the url of a published entry.
|
@@ -232,6 +245,12 @@ module Pageflow
|
|
232
245
|
# boolean. Defaults to false.
|
233
246
|
attr_accessor :confirm_encoding_jobs
|
234
247
|
|
248
|
+
# Controls default value of "published until" date field in editor
|
249
|
+
# publish entry view.
|
250
|
+
#
|
251
|
+
# @since 16.1
|
252
|
+
attr_accessor :default_published_until_duration_in_months
|
253
|
+
|
235
254
|
# Used by Pageflow extensions to provide new tabs to be displayed
|
236
255
|
# in the admin.
|
237
256
|
#
|
@@ -330,9 +349,12 @@ module Pageflow
|
|
330
349
|
# @since 0.11
|
331
350
|
attr_accessor :authorize_user_deletion
|
332
351
|
|
352
|
+
# Array of values that the `license` attribute on files can take.
|
353
|
+
attr_accessor :available_file_licenses
|
354
|
+
|
333
355
|
# Array of values that the `kind` attribute on text tracks can
|
334
356
|
# take. Defaults to `[:captions, :subtitles, :descriptions]`.
|
335
|
-
|
357
|
+
attr_accessor :available_text_track_kinds
|
336
358
|
|
337
359
|
# Allow one user to be member of multiple accounts. Defaults to
|
338
360
|
# true.
|
@@ -412,6 +434,7 @@ module Pageflow
|
|
412
434
|
@transform_theme_customization_files = ->(files, _entry) { files }
|
413
435
|
|
414
436
|
@confirm_encoding_jobs = false
|
437
|
+
@default_published_until_duration_in_months = 12
|
415
438
|
|
416
439
|
@admin_resource_tabs = Pageflow::Admin::Tabs.new
|
417
440
|
@admin_form_inputs = Pageflow::Admin::FormInputs.new
|
@@ -431,6 +454,10 @@ module Pageflow
|
|
431
454
|
|
432
455
|
@authorize_user_deletion = lambda { |_user| true }
|
433
456
|
|
457
|
+
@available_file_licenses = [
|
458
|
+
:cc_by_4, :cc_by_sa_4, :cc_by_nc_4, :cc_by_nc_sa_4, :cc_by_nd_4, :cc_by_nc_nd_4
|
459
|
+
]
|
460
|
+
|
434
461
|
@available_text_track_kinds = [:captions, :subtitles, :descriptions]
|
435
462
|
|
436
463
|
@allow_multiaccount_users = true
|
@@ -541,6 +568,7 @@ module Pageflow
|
|
541
568
|
delegate :page_types, to: :config
|
542
569
|
delegate :themes, to: :config
|
543
570
|
delegate :widget_types, to: :config
|
571
|
+
delegate :public_entry_cache_control_header=, to: :config
|
544
572
|
|
545
573
|
delegate :for_entry_type, to: :config
|
546
574
|
end
|
data/lib/pageflow/engine.rb
CHANGED
@@ -31,6 +31,8 @@ require 'pageflow_paged'
|
|
31
31
|
require 'pageflow_scrolled'
|
32
32
|
require 'symmetric-encryption'
|
33
33
|
|
34
|
+
require 'pageflow/rails_version'
|
35
|
+
|
34
36
|
if Gem::Specification.find_all_by_name('pageflow-react', '>= 0.0').any?
|
35
37
|
fail('The pageflow-react gem has been merged into the pageflow gem. ' \
|
36
38
|
'See the pageflow changelog for update instructions.')
|
@@ -41,45 +43,21 @@ module Pageflow
|
|
41
43
|
class Engine < ::Rails::Engine
|
42
44
|
isolate_namespace Pageflow
|
43
45
|
|
44
|
-
config.
|
45
|
-
config.
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
#
|
60
|
-
# - Using `require` in `lib/pageflow.rb` disables code
|
61
|
-
# reloading.
|
62
|
-
#
|
63
|
-
# - Using `require_dependency` in `lib/pageflow.rb` does not
|
64
|
-
# activate code reloading either since it requires the
|
65
|
-
# autoload path to be set up correctly, which only happens
|
66
|
-
# during initialization.
|
67
|
-
super
|
68
|
-
|
69
|
-
lib_path = config.root.join('lib')
|
70
|
-
matcher = %r{\A#{Regexp.escape(lib_path.to_s)}/(.*)\.rb\Z}
|
71
|
-
|
72
|
-
already_required_files = [
|
73
|
-
'pageflow/engine',
|
74
|
-
'pageflow/global_config_api',
|
75
|
-
'pageflow/news_item_api',
|
76
|
-
'pageflow/version'
|
77
|
-
]
|
78
|
-
|
79
|
-
Dir.glob("#{lib_path}/pageflow/**/*.rb").sort.each do |file|
|
80
|
-
logical_path = file.sub(matcher, '\1')
|
81
|
-
require_dependency(logical_path) unless already_required_files.include?(logical_path)
|
82
|
-
end
|
46
|
+
config.autoload_paths << root.join('app/views/components')
|
47
|
+
config.eager_load_paths << root.join('app/views/components')
|
48
|
+
|
49
|
+
lib = root.join('lib')
|
50
|
+
|
51
|
+
config.autoload_paths << lib
|
52
|
+
config.eager_load_paths << lib
|
53
|
+
|
54
|
+
initializer 'pageflow.autoloading' do
|
55
|
+
Rails.autoloaders.main.ignore(
|
56
|
+
lib.join('generators'),
|
57
|
+
lib.join('tasks'),
|
58
|
+
lib.join('pageflow/paperclip_processors'),
|
59
|
+
lib.join('pageflow/version.rb')
|
60
|
+
)
|
83
61
|
end
|
84
62
|
|
85
63
|
config.i18n.load_path += Dir[config.root.join('config', 'locales', '**', '*.yml').to_s]
|
@@ -106,7 +84,7 @@ module Pageflow
|
|
106
84
|
end
|
107
85
|
|
108
86
|
initializer 'pageflow.factories', after: 'factory_bot.set_factory_paths' do
|
109
|
-
if
|
87
|
+
if defined?(FactoryBot)
|
110
88
|
FactoryBot.definition_file_paths.unshift(Engine.root.join('spec', 'factories'))
|
111
89
|
end
|
112
90
|
end
|
data/lib/pageflow/file_type.rb
CHANGED
@@ -123,11 +123,11 @@ module Pageflow
|
|
123
123
|
@css_background_image_class_prefix || model.model_name.singular
|
124
124
|
end
|
125
125
|
|
126
|
-
def css_background_image_urls_for(file, options)
|
126
|
+
def css_background_image_urls_for(file, **options)
|
127
127
|
if call_arity(css_background_image_urls) == 1
|
128
128
|
css_background_image_urls.call(file)
|
129
129
|
else
|
130
|
-
css_background_image_urls.call(file, options)
|
130
|
+
css_background_image_urls.call(file, **options)
|
131
131
|
end
|
132
132
|
end
|
133
133
|
|
@@ -87,8 +87,6 @@ module Pageflow
|
|
87
87
|
# coniguration is now complete.
|
88
88
|
def finalize!
|
89
89
|
@finalized = true
|
90
|
-
configure!
|
91
|
-
@config.lint!
|
92
90
|
end
|
93
91
|
|
94
92
|
# @api private
|
@@ -103,6 +101,8 @@ module Pageflow
|
|
103
101
|
@after_global_configure_blocks.each do |block|
|
104
102
|
block.call(@config)
|
105
103
|
end
|
104
|
+
|
105
|
+
@config.lint!
|
106
106
|
end
|
107
107
|
|
108
108
|
private
|
@@ -14,10 +14,10 @@ module Pageflow
|
|
14
14
|
end
|
15
15
|
|
16
16
|
# @api private
|
17
|
-
def copy_nested_revision_component_to(record)
|
17
|
+
def copy_nested_revision_component_to(record, reset_perma_ids: false)
|
18
18
|
nested_revision_component_collection_names.each do |collection_name|
|
19
19
|
send(collection_name).each do |nested|
|
20
|
-
nested.copy_to(record.send(collection_name))
|
20
|
+
nested.copy_to(record.send(collection_name), reset_perma_ids: reset_perma_ids)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
@@ -38,12 +38,30 @@ module Pageflow
|
|
38
38
|
extend ActiveSupport::Concern
|
39
39
|
include Container
|
40
40
|
|
41
|
+
def duplicate
|
42
|
+
copy_with(reset_perma_ids: true) do |record|
|
43
|
+
yield record if block_given?
|
44
|
+
record.save!
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
41
48
|
# @api private
|
42
|
-
def copy_to(collection)
|
49
|
+
def copy_to(collection, reset_perma_ids: false)
|
50
|
+
copy_with(reset_perma_ids: reset_perma_ids) do |record|
|
51
|
+
collection << record
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def copy_with(reset_perma_ids:)
|
43
58
|
record = dup
|
44
|
-
|
59
|
+
record.perma_id = nil if reset_perma_ids && record.respond_to?(:perma_id=)
|
60
|
+
|
61
|
+
yield record
|
62
|
+
copy_nested_revision_component_to(record, reset_perma_ids: reset_perma_ids)
|
45
63
|
|
46
|
-
|
64
|
+
record
|
47
65
|
end
|
48
66
|
end
|
49
67
|
end
|
data/lib/pageflow/page_type.rb
CHANGED
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'vips'
|
2
|
+
|
3
|
+
module Pageflow
|
4
|
+
module PaperclipProcessors
|
5
|
+
# @api private
|
6
|
+
class Webp < Paperclip::Processor
|
7
|
+
ANIMATED_FORMATS = %w[.gif].freeze
|
8
|
+
|
9
|
+
def initialize(file, options = {}, attachment = nil)
|
10
|
+
super
|
11
|
+
|
12
|
+
geometry = options[:geometry].to_s
|
13
|
+
@should_crop = geometry[-1, 1] == '#'
|
14
|
+
|
15
|
+
@target_geometry = Paperclip::Geometry.parse(geometry)
|
16
|
+
@whiny = options.fetch(:whiny, true)
|
17
|
+
|
18
|
+
@current_format = File.extname(file.path)
|
19
|
+
@basename = File.basename(@file.path, @current_format)
|
20
|
+
end
|
21
|
+
|
22
|
+
def make
|
23
|
+
source = @file
|
24
|
+
filename = [@basename, '.webp'].join
|
25
|
+
destination = Paperclip::TempfileFactory.new.generate(filename)
|
26
|
+
|
27
|
+
begin
|
28
|
+
thumbnail = Vips::Image.thumbnail(
|
29
|
+
ANIMATED_FORMATS.include?(@current_format) ? "#{source.path}[n=-1]" : source.path,
|
30
|
+
width,
|
31
|
+
size: @should_crop ? :both : :down,
|
32
|
+
height: height,
|
33
|
+
crop: crop
|
34
|
+
)
|
35
|
+
thumbnail.webpsave(destination.path)
|
36
|
+
rescue Vips::Error => e
|
37
|
+
if @whiny
|
38
|
+
message = "There was an error processing the thumbnail for #{@basename}:\n" + e.message
|
39
|
+
raise Paperclip::Error, message
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
destination
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def crop
|
49
|
+
return unless @should_crop
|
50
|
+
|
51
|
+
@options[:crop] || :centre
|
52
|
+
end
|
53
|
+
|
54
|
+
def width
|
55
|
+
@target_geometry.width
|
56
|
+
end
|
57
|
+
|
58
|
+
def height
|
59
|
+
@target_geometry.height
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Pageflow
|
2
|
+
module RailsVersion
|
3
|
+
extend self
|
4
|
+
|
5
|
+
def detect
|
6
|
+
from_env || '~> 6.1.0'
|
7
|
+
end
|
8
|
+
|
9
|
+
def experimental?
|
10
|
+
detect != '~> 6.1.0'
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def from_env
|
16
|
+
ENV['PAGEFLOW_RAILS_VERSION'] if ENV['PAGEFLOW_RAILS_VERSION'] != ''
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|