pageflow 15.2.0 → 15.5.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 +89 -83
- data/README.md +2 -3
- data/admins/pageflow/accounts.rb +1 -98
- data/admins/pageflow/entry.rb +21 -1
- data/admins/pageflow/entry_templates.rb +140 -0
- data/admins/pageflow/membership.rb +12 -0
- data/admins/pageflow/user.rb +5 -5
- data/app/assets/javascripts/pageflow/admin/accounts.js +1 -1
- data/app/assets/javascripts/pageflow/admin/entries.js +65 -0
- data/app/assets/javascripts/pageflow/admin/users.js +1 -1
- data/app/assets/javascripts/pageflow/asset_urls.js.erb +1 -0
- data/app/assets/javascripts/pageflow/base.js +0 -12
- data/app/assets/javascripts/pageflow/components.js +2 -6
- data/app/assets/javascripts/pageflow/dist/ui.js +178 -55
- data/app/assets/javascripts/pageflow/editor/vendor.js +1 -0
- data/app/assets/javascripts/pageflow/vendor.js +12 -10
- data/app/assets/stylesheets/pageflow/base.scss +0 -7
- data/app/assets/stylesheets/pageflow/editor/base.scss +5 -2
- data/app/assets/stylesheets/pageflow/editor/composables.scss +5 -1
- data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +1 -1
- data/app/assets/stylesheets/pageflow/editor/emulation_mode_button.scss +44 -55
- data/app/assets/stylesheets/pageflow/editor/help.scss +2 -2
- data/app/assets/stylesheets/pageflow/editor/select_button.scss +1 -1
- data/app/assets/stylesheets/pageflow/editor/sidebar_footer.scss +1 -1
- data/app/assets/stylesheets/pageflow/entries.scss +1 -1
- data/app/assets/stylesheets/pageflow/loading_spinner.scss +4 -1
- data/app/assets/stylesheets/pageflow/navigation_mobile.scss +4 -4
- data/app/assets/stylesheets/pageflow/themes/default/anchors.scss +1 -1
- data/app/assets/stylesheets/pageflow/themes/default/logo/variant/watermark.scss +1 -1
- data/app/assets/stylesheets/pageflow/themes/default/page.scss +7 -0
- data/app/assets/stylesheets/pageflow/themes/default/page/anchors.scss +1 -1
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/classic/control_bar.scss +1 -1
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/classic/info_box.scss +1 -1
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/shared/menu_bar.scss +2 -2
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/slim/control_bar.scss +2 -2
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/slim/info_box.scss +1 -1
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/slim/quality_menu.scss +2 -2
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/waveform/wave.scss +1 -1
- data/app/assets/stylesheets/pageflow/ui/forms.scss +9 -2
- data/app/assets/stylesheets/pageflow/ui/input/extended_select_input.scss +2 -2
- data/app/assets/stylesheets/pageflow/ui/tooltip.scss +17 -3
- data/app/helpers/pageflow/admin/entries_helper.rb +16 -0
- data/app/helpers/pageflow/structured_data_helper.rb +0 -2
- data/app/models/pageflow/account.rb +21 -1
- data/app/models/pageflow/account_role_query.rb +1 -1
- data/app/models/pageflow/chapter.rb +3 -9
- data/app/models/pageflow/entry.rb +9 -2
- data/app/models/pageflow/entry_duplicate.rb +1 -0
- data/app/models/pageflow/entry_template.rb +16 -2
- data/app/models/pageflow/managed_user_query.rb +1 -1
- data/app/models/pageflow/page.rb +1 -4
- data/app/models/pageflow/revision.rb +0 -4
- data/app/models/pageflow/storyline.rb +2 -9
- data/app/policies/pageflow/account_policy.rb +10 -0
- data/app/policies/pageflow/entry_template_policy.rb +5 -1
- data/app/policies/pageflow/folder_policy.rb +2 -2
- data/app/policies/pageflow/membership_policy.rb +2 -2
- data/app/policies/pageflow/theming_policy.rb +2 -2
- data/app/policies/pageflow/user_policy.rb +1 -1
- data/app/views/admin/accounts/_entry_template_details.html.arb +7 -5
- data/app/views/admin/accounts/_form.html.erb +3 -49
- data/app/views/admin/entries/_attributes_table.html.arb +5 -0
- data/app/views/admin/entries/_not_allowed_to_see_entry_types.json.jbuilder +2 -0
- data/app/views/admin/entries/entry_types.json.jbuilder +4 -0
- data/app/views/admin/entry_templates/_form.html.erb +58 -0
- data/app/views/admin/users/_not_allowed_to_see_user_quota.html.erb +3 -0
- data/app/views/components/pageflow/admin/entry_templates_tab.rb +48 -0
- data/app/views/pageflow/admin/initial_passwords/edit.html.erb +2 -1
- data/app/views/pageflow/admin/users/_quota_exhausted.html.erb +1 -1
- data/app/views/pageflow/themes/_theme.json.jbuilder +1 -1
- data/app/views/pageflow/video_files/_video_file.json.jbuilder +8 -1
- data/config/initializers/admin_resource_tabs.rb +5 -0
- data/config/initializers/help_entries.rb +1 -5
- data/config/initializers/revision_components.rb +5 -0
- data/config/locales/de.yml +88 -155
- data/config/locales/en.yml +79 -143
- data/db/migrate/20200515112500_add_constraints_to_entry_templates.rb +21 -0
- data/db/migrate/20200807135200_rename_pageflow_entry_template_entry_type_to_entry_type_name.rb +7 -0
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/components.js +7 -0
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +1528 -1349
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +9258 -0
- data/{app/assets/javascripts/pageflow → entry_types/paged/app/assets/javascripts/pageflow_paged}/dist/react-client.js +1 -1
- data/{app/assets/javascripts/pageflow → entry_types/paged/app/assets/javascripts/pageflow_paged}/dist/react-server.js +3 -3
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/frontend.js +6 -0
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/server_rendering.js +9 -0
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/vendor.js +9 -0
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/videojs.js +6 -0
- data/entry_types/paged/app/controllers/pageflow_paged/application_controller.rb +2 -2
- data/{app/helpers/pageflow → entry_types/paged/app/helpers/pageflow_paged}/page_background_asset_helper.rb +4 -3
- data/{app/helpers/pageflow → entry_types/paged/app/helpers/pageflow_paged}/react_server_side_rendering_helper.rb +23 -2
- data/entry_types/paged/app/views/layouts/pageflow_paged/_loading_spinner_inline_script.html.erb +1 -0
- data/entry_types/paged/app/views/layouts/pageflow_paged/application.html.erb +3 -3
- data/entry_types/paged/app/views/pageflow_paged/editor/entries/_head.html.erb +4 -2
- data/entry_types/paged/app/views/pageflow_paged/entries/_entry.html.erb +1 -1
- data/{app/views/pageflow → entry_types/paged/app/views/pageflow_paged}/page_background_asset/_element.html.erb +0 -0
- data/{app/views/pageflow → entry_types/paged/app/views/pageflow_paged}/react/_widget.html.erb +0 -0
- data/{app/views/pageflow → entry_types/paged/app/views/pageflow_paged}/react/page.html.erb +0 -0
- data/entry_types/paged/config/initializers/features.rb +1 -1
- data/entry_types/paged/config/initializers/help_entries.rb +17 -0
- data/entry_types/paged/config/locales/new/help.de.yml +162 -0
- data/entry_types/paged/config/locales/new/help.en.yml +153 -0
- data/entry_types/paged/lib/pageflow_paged/engine.rb +13 -0
- data/entry_types/paged/lib/pageflow_paged/plugin.rb +5 -1
- data/entry_types/paged/lib/pageflow_paged/react.rb +12 -0
- data/{lib/pageflow → entry_types/paged/lib/pageflow_paged}/react/page_type.rb +2 -2
- data/{lib/pageflow → entry_types/paged/lib/pageflow_paged}/react/widget_type.rb +2 -2
- data/entry_types/paged/lib/tasks/pageflow_paged_tasks.rake +7 -0
- data/entry_types/paged/vendor/assets/javascripts/development/pageflow_paged/vendor/react-server.js +20613 -0
- data/entry_types/paged/vendor/assets/javascripts/development/pageflow_paged/vendor/react.js +21495 -0
- data/{vendor/assets/javascripts → entry_types/paged/vendor/assets/javascripts/pageflow_paged/vendor}/dash.all.min.js +0 -0
- data/{vendor/assets/javascripts → entry_types/paged/vendor/assets/javascripts/pageflow_paged/vendor}/videojs-dash.js +0 -0
- data/{vendor/assets/javascripts → entry_types/paged/vendor/assets/javascripts/pageflow_paged/vendor}/videojs.js +0 -0
- data/entry_types/paged/vendor/assets/javascripts/production/pageflow_paged/vendor/react-server.js +24 -0
- data/entry_types/paged/vendor/assets/javascripts/production/pageflow_paged/vendor/react.js +24 -0
- data/entry_types/scrolled/app/assets/javascripts/pageflow_scrolled/legacy.js +0 -0
- 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 +14 -4
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/sections_controller.rb +2 -2
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/entries_controller.rb +10 -0
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/seed_html_helper.rb +7 -0
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/entry_json_seed_helper.rb +2 -0
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/favicon_helper.rb +21 -0
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/react_server_side_rendering_helper.rb +40 -0
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb +36 -0
- data/entry_types/scrolled/app/models/pageflow_scrolled/chapter.rb +3 -9
- data/entry_types/scrolled/app/models/pageflow_scrolled/content_element.rb +37 -2
- data/entry_types/scrolled/app/models/pageflow_scrolled/section.rb +3 -9
- data/entry_types/scrolled/app/models/pageflow_scrolled/storyline.rb +1 -9
- data/entry_types/scrolled/app/views/pageflow_scrolled/editor/content_elements/batch.json.jbuilder +2 -0
- data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_head.html.erb +1 -7
- data/entry_types/scrolled/app/views/pageflow_scrolled/entries/_global_notices.html.erb +10 -0
- data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +28 -11
- data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry.json.jbuilder +3 -0
- data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_theme.json.jbuilder +8 -0
- data/entry_types/scrolled/app/views/pageflow_scrolled/favicons/_entry.html.erb +10 -0
- data/entry_types/scrolled/config/initializers/help_entries.rb +16 -0
- data/entry_types/scrolled/config/locales/de.yml +669 -0
- data/entry_types/scrolled/config/locales/en.yml +488 -0
- data/entry_types/scrolled/config/routes.rb +1 -0
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/install_generator.rb +76 -6
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/android-chrome-192x192.png +0 -0
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/android-chrome-512x512.png +0 -0
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/apple-touch-icon.png +0 -0
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/browserconfig.xml +9 -0
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/favicon-16x16.png +0 -0
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/favicon-32x32.png +0 -0
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/favicon.ico +0 -0
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/mstile-150x150.png +0 -0
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/safari-pinned-tab.svg +46 -0
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/site.webmanifest +19 -0
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/logoDesktop.svg +56 -0
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/logoMobile.svg +22 -0
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/unmute.mp3 +0 -0
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/themes_plugin.rb.tt +26 -0
- data/entry_types/scrolled/lib/pageflow_scrolled/engine.rb +4 -0
- data/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +3 -1
- data/entry_types/scrolled/lib/pageflow_scrolled/seeds.rb +90 -30
- data/entry_types/scrolled/lib/tasks/pageflow_scrolled/create_bundle_symlinks_for_yarn.rake +32 -0
- data/entry_types/scrolled/lib/tasks/pageflow_scrolled/dummy.rake +8 -0
- data/entry_types/scrolled/lib/tasks/pageflow_scrolled/storybook.rake +173 -0
- data/entry_types/scrolled/package/contentElements-editor.js +541 -0
- data/entry_types/scrolled/package/contentElements-frontend.css +1 -0
- data/entry_types/scrolled/package/contentElements-frontend.js +1169 -0
- data/entry_types/scrolled/package/editor.js +2930 -371
- data/entry_types/scrolled/package/frontend-server.js +228 -0
- data/entry_types/scrolled/package/frontend/EditableText-7093fd0e.js +1071 -0
- data/entry_types/scrolled/package/frontend/Viewer-e49e7807.js +387 -0
- data/entry_types/scrolled/package/frontend/Wavesurfer-0adf5667.js +375 -0
- data/entry_types/scrolled/package/frontend/components-6a6793ca.js +2534 -0
- data/entry_types/scrolled/package/frontend/getPrototypeOf-63c7c8e8.js +86 -0
- data/entry_types/scrolled/package/frontend/i18n-4dc6c377.js +1092 -0
- data/entry_types/scrolled/package/frontend/index.css +9 -0
- data/entry_types/scrolled/package/frontend/index.js +5686 -0
- data/entry_types/scrolled/package/frontend/useBrowserFeature-91a4c29d.js +33 -0
- data/entry_types/scrolled/package/package.json +30 -9
- data/entry_types/scrolled/spec/fixtures/audio.m4a +0 -0
- data/entry_types/scrolled/spec/fixtures/video.mp4 +0 -0
- data/lib/generators/pageflow/initializer/templates/pageflow.rb +14 -9
- data/lib/pageflow/ability_mixin.rb +14 -2
- data/lib/pageflow/configuration.rb +6 -5
- data/lib/pageflow/entry_export_import/revision_serialization.rb +15 -13
- data/lib/pageflow/entry_export_import/revision_serialization/import.rb +18 -26
- data/lib/pageflow/entry_type_configuration.rb +2 -0
- data/lib/pageflow/global_config_api.rb +5 -4
- data/lib/pageflow/nested_revision_component.rb +49 -0
- data/lib/pageflow/react.rb +4 -2
- data/lib/pageflow/revision_component.rb +6 -2
- data/lib/pageflow/themes.rb +4 -0
- data/lib/pageflow/user_mixin.rb +2 -1
- data/lib/pageflow/version.rb +1 -1
- data/{packages/pageflow → package}/config/jest/index.js +8 -2
- data/{packages/pageflow → package}/config/jest/transformers/jst.js +0 -0
- data/{packages/pageflow → package}/config/jest/transformers/upwardBabel.js +0 -0
- data/{packages/pageflow → package}/config/webpack.js +7 -0
- data/{packages/pageflow → package}/editor.js +482 -1130
- data/package/frontend.js +2553 -0
- data/{packages/pageflow → package}/package.json +3 -0
- data/{packages/pageflow → package}/testHelpers.js +114 -13
- data/{packages/pageflow → package}/ui.js +178 -55
- data/spec/factories/accounts.rb +3 -1
- data/spec/factories/entry_templates.rb +1 -0
- data/spec/factories/published_entries.rb +6 -1
- data/spec/factories/test_revision_components.rb +4 -0
- metadata +96 -37
- data/app/assets/javascripts/pageflow/dist/editor.js +0 -11890
- data/app/assets/javascripts/pageflow/dist/frontend.js +0 -5800
- data/app/assets/javascripts/pageflow/videojs.js +0 -6
- data/config/initializers/entry_types.rb +0 -4
- data/entry_types/scrolled/config/locales/new/de.yml +0 -269
- data/entry_types/scrolled/config/locales/new/en.yml +0 -264
- data/entry_types/scrolled/lib/tasks/pageflow_scrolled_tasks.rake +0 -96
- data/entry_types/scrolled/package/frontend.js +0 -2879
- data/packages/pageflow/config/jest/transformers/cssModules.js +0 -1
@@ -0,0 +1,33 @@
|
|
1
|
+
import { browser } from 'pageflow/frontend';
|
2
|
+
import React, { createContext, useContext, useState, useEffect } from 'react';
|
3
|
+
import { _ as _slicedToArray } from './i18n-4dc6c377.js';
|
4
|
+
|
5
|
+
var BrowserFeaturesAvailableContext = createContext(); // Browser feature detection is not available during server side
|
6
|
+
// rendering. To prevent mismatches during hydration, we keep features
|
7
|
+
// disabled in the initial render. Since hydration only starts after
|
8
|
+
// feature detection has finished, we can immediately re-render once
|
9
|
+
// the provider has mounted.
|
10
|
+
|
11
|
+
function BrowserFeaturesProvider(_ref) {
|
12
|
+
var children = _ref.children;
|
13
|
+
|
14
|
+
var _useState = useState(false),
|
15
|
+
_useState2 = _slicedToArray(_useState, 2),
|
16
|
+
isAvailable = _useState2[0],
|
17
|
+
setIsAvailable = _useState2[1];
|
18
|
+
|
19
|
+
useEffect(function () {
|
20
|
+
return setIsAvailable(true);
|
21
|
+
}, []);
|
22
|
+
return (
|
23
|
+
/*#__PURE__*/
|
24
|
+
React.createElement(BrowserFeaturesAvailableContext.Provider, {
|
25
|
+
value: isAvailable
|
26
|
+
}, children)
|
27
|
+
);
|
28
|
+
}
|
29
|
+
function useBrowserFeature(name) {
|
30
|
+
return useContext(BrowserFeaturesAvailableContext) && browser.has(name);
|
31
|
+
}
|
32
|
+
|
33
|
+
export { BrowserFeaturesProvider as B, useBrowserFeature as u };
|
@@ -7,22 +7,43 @@
|
|
7
7
|
"author": "Codevise Solutions GmbH <info@codevise.de>",
|
8
8
|
"license": "MIT",
|
9
9
|
"dependencies": {
|
10
|
+
"@egjs/view360": "^3.4.3",
|
11
|
+
"core-js": "^3.6.5",
|
12
|
+
"debounce": "^1.2.0",
|
13
|
+
"deep-assign": "^3.0.0",
|
14
|
+
"intersection-observer": "^0.7.0",
|
15
|
+
"invert-color": "^2.0.0",
|
10
16
|
"prop-types": "^15.7.2",
|
11
|
-
"react": "
|
12
|
-
"react-
|
17
|
+
"react-compare-image": "https://github.com/codevise/react-compare-image#offset-width-fix",
|
18
|
+
"react-dnd": "^11.1.3",
|
19
|
+
"react-dnd-html5-backend": "^11.1.3",
|
20
|
+
"react-draggable": "^4.4.2",
|
21
|
+
"react-measure": "^2.3.0",
|
13
22
|
"react-player": "^1.15.2",
|
14
23
|
"react-tooltip": "^3.11.1",
|
15
|
-
"
|
24
|
+
"react_ujs": "^2.6.1",
|
25
|
+
"reselect": "^4.0.0",
|
26
|
+
"screenfull": "^5.1.0",
|
27
|
+
"slate": "^0.57.3",
|
28
|
+
"slate-react": "^0.57.3",
|
29
|
+
"slugify": "^1.4.6",
|
30
|
+
"striptags": "^3.1.1",
|
31
|
+
"use-context-selector": "^1.2.11",
|
32
|
+
"video.js": "https://github.com/tf/video.js#pageflow-scrolled-5",
|
33
|
+
"wavesurfer.js": "https://github.com/tf/wavesurfer.js#patches",
|
34
|
+
"whatwg-fetch": "^3.0.0"
|
16
35
|
},
|
17
36
|
"peerDependencies": {
|
18
|
-
"pageflow": "15.1.0"
|
37
|
+
"pageflow": "15.1.0",
|
38
|
+
"react": "^16.9.0",
|
39
|
+
"react-dom": "^16.9.0"
|
19
40
|
},
|
20
41
|
"devDependencies": {
|
21
42
|
"@percy/storybook": "^3.2.0",
|
22
43
|
"@storybook/addon-viewport": "^5.3.13",
|
23
44
|
"@storybook/react": "^5.3.9",
|
24
45
|
"@testing-library/jest-dom": "^4.2.4",
|
25
|
-
"@testing-library/react": "^
|
46
|
+
"@testing-library/react": "^10.3.0",
|
26
47
|
"@testing-library/react-hooks": "^3.2.1",
|
27
48
|
"@typescript-eslint/eslint-plugin": "2.x",
|
28
49
|
"@typescript-eslint/parser": "2.x",
|
@@ -39,15 +60,15 @@
|
|
39
60
|
"eslint-plugin-react": "7.x",
|
40
61
|
"eslint-plugin-react-hooks": "1.x",
|
41
62
|
"jest": "^24.9.0",
|
42
|
-
"jest-css-modules-transform": "^3.1.0",
|
43
63
|
"jest-svg-transformer": "^1.0.0",
|
64
|
+
"react-svg-loader": "^3.0.3",
|
44
65
|
"react-test-renderer": "^16.9.0"
|
45
66
|
},
|
46
67
|
"scripts": {
|
47
68
|
"test": "jest",
|
48
69
|
"lint": "eslint .",
|
49
|
-
"start-storybook": "start-storybook",
|
50
|
-
"build-storybook": "build-storybook -o .storybook/out",
|
51
|
-
"snapshot": "STORYBOOK_SPLIT=true build-storybook --quiet -o .storybook/out && PERCY_TOKEN=${PERCY_TOKEN:-$PT} percy-storybook --widths=1280 --build_dir=.storybook/out"
|
70
|
+
"start-storybook": "start-storybook -s .storybook/static",
|
71
|
+
"build-storybook": "build-storybook -s .storybook/static -o .storybook/out",
|
72
|
+
"snapshot": "STORYBOOK_SPLIT=true build-storybook --quiet -s .storybook/static -o .storybook/out && PERCY_TOKEN=${PERCY_TOKEN:-$PT} percy-storybook --widths=1280 --build_dir=.storybook/out"
|
52
73
|
}
|
53
74
|
}
|
Binary file
|
Binary file
|
@@ -3,19 +3,24 @@ Pageflow.configure do |config|
|
|
3
3
|
# users.
|
4
4
|
config.mailer_sender = 'change-me-at-config-initializers-pageflow@example.com'
|
5
5
|
|
6
|
-
#
|
6
|
+
# Entry type plugins
|
7
|
+
config.plugin(PageflowPaged.plugin)
|
8
|
+
|
9
|
+
# Plugins that provide page types and widget types.
|
7
10
|
config.plugin(Pageflow.built_in_page_types_plugin)
|
8
11
|
config.plugin(Pageflow.built_in_widget_types_plugin)
|
9
12
|
# config.plugin(Pageflow::Rainbow.plugin)
|
10
13
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
config.for_entry_type(PageflowPaged.entry_type) do |entry_type_config|
|
15
|
+
# Add custom themes by invoking the pageflow:theme generator and
|
16
|
+
# registering the theme here.
|
17
|
+
#
|
18
|
+
# $ rails generate pageflow:theme my_custom_theme
|
19
|
+
# => creates app/assets/stylesheets/pageflow/themes/my_custom_theme.css.scss
|
20
|
+
#
|
21
|
+
entry_type_config.themes.register(:default)
|
22
|
+
# config.themes.register(:my_custom_theme)
|
23
|
+
end
|
19
24
|
|
20
25
|
# String to interpolate into paths of files generated by paperclip
|
21
26
|
# preprocessors. This allows to refresh cdn caches after
|
@@ -23,6 +23,10 @@ module Pageflow
|
|
23
23
|
AccountPolicy.new(user, account).add_member_to?
|
24
24
|
end
|
25
25
|
|
26
|
+
can :see_user_quota, Account do |account|
|
27
|
+
AccountPolicy.new(user, account).see_user_quota?
|
28
|
+
end
|
29
|
+
|
26
30
|
can :see_badge_belonging_to, Account do |account|
|
27
31
|
AccountPolicy.new(user, account).see_badge_belonging_to?
|
28
32
|
end
|
@@ -95,6 +99,10 @@ module Pageflow
|
|
95
99
|
Admin::AdminOnlyTabPolicy.new(user, tab).see?
|
96
100
|
end
|
97
101
|
|
102
|
+
can :see_entry_types, Account do |account|
|
103
|
+
AccountPolicy.new(user, account).see_entry_types?
|
104
|
+
end
|
105
|
+
|
98
106
|
unless user.admin?
|
99
107
|
can :configure_folder_on, Account do |account|
|
100
108
|
AccountPolicy.new(user, account).configure_folder_on?
|
@@ -214,8 +222,12 @@ module Pageflow
|
|
214
222
|
ThemingPolicy.new(user, theming).edit?
|
215
223
|
end
|
216
224
|
|
217
|
-
can :
|
218
|
-
EntryTemplatePolicy.new(user, entry_template).
|
225
|
+
can :create, EntryTemplate do |entry_template|
|
226
|
+
EntryTemplatePolicy.new(user, entry_template).create?
|
227
|
+
end
|
228
|
+
|
229
|
+
can :update, EntryTemplate do |entry_template|
|
230
|
+
EntryTemplatePolicy.new(user, entry_template).update?
|
219
231
|
end
|
220
232
|
|
221
233
|
can :create, ::User do |managed_user|
|
@@ -500,13 +500,14 @@ module Pageflow
|
|
500
500
|
# Restricts the configuration interface to those parts which can
|
501
501
|
# be used from inside features.
|
502
502
|
FeatureLevelConfiguration = Struct.new(:config) do
|
503
|
-
delegate :page_types, to: :config
|
504
|
-
delegate :widget_types, to: :config
|
505
|
-
delegate :help_entries, to: :config
|
506
|
-
delegate :admin_form_inputs, to: :config
|
507
503
|
delegate :admin_attributes_table_rows, to: :config
|
508
|
-
delegate :
|
504
|
+
delegate :admin_form_inputs, to: :config
|
505
|
+
delegate :entry_types, to: :config
|
509
506
|
delegate :file_importers, to: :config
|
507
|
+
delegate :help_entries, to: :config
|
508
|
+
delegate :page_types, to: :config
|
509
|
+
delegate :themes, to: :config
|
510
|
+
delegate :widget_types, to: :config
|
510
511
|
|
511
512
|
delegate :for_entry_type, to: :config
|
512
513
|
end
|
@@ -10,19 +10,6 @@ module Pageflow
|
|
10
10
|
widgets: {
|
11
11
|
except: [:subject_id, :subject_type]
|
12
12
|
},
|
13
|
-
storylines: {
|
14
|
-
except: :revision_id,
|
15
|
-
include: {
|
16
|
-
chapters: {
|
17
|
-
except: :storyline_id,
|
18
|
-
include: {
|
19
|
-
pages: {
|
20
|
-
except: :chapter_id
|
21
|
-
}
|
22
|
-
}
|
23
|
-
}
|
24
|
-
}
|
25
|
-
},
|
26
13
|
file_usages: {
|
27
14
|
except: [:revision_id],
|
28
15
|
include: {
|
@@ -51,6 +38,21 @@ module Pageflow
|
|
51
38
|
revision_component
|
52
39
|
.attributes.except('revision_id')
|
53
40
|
.merge('class_name' => revision_component.class.name)
|
41
|
+
.merge('components' => serialize_nested_revision_components(revision_component))
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def serialize_nested_revision_components(revision_component)
|
46
|
+
collection_names = revision_component.nested_revision_component_collection_names
|
47
|
+
|
48
|
+
collection_names.each_with_object({}) do |collection_name, result|
|
49
|
+
collection = revision_component.send(collection_name)
|
50
|
+
|
51
|
+
result[collection_name] = collection.map do |nested_component|
|
52
|
+
nested_component
|
53
|
+
.attributes
|
54
|
+
.merge('components' => serialize_nested_revision_components(nested_component))
|
55
|
+
end
|
54
56
|
end
|
55
57
|
end
|
56
58
|
end
|
@@ -17,7 +17,6 @@ module Pageflow
|
|
17
17
|
Revision.transaction do
|
18
18
|
revision = create_revision(data)
|
19
19
|
|
20
|
-
create_storylines_chapters_and_pages(revision, data['storylines'])
|
21
20
|
create_widgets(revision, data['widgets'])
|
22
21
|
create_revision_components(revision, data['components'])
|
23
22
|
create_files(revision, data['file_usages'])
|
@@ -46,30 +45,6 @@ module Pageflow
|
|
46
45
|
end
|
47
46
|
end
|
48
47
|
|
49
|
-
def create_storylines_chapters_and_pages(revision, storylines_data)
|
50
|
-
storylines_data.each do |storyline_data|
|
51
|
-
chapters_data = storyline_data.delete('chapters')
|
52
|
-
storyline = revision.storylines.create!(storyline_data.except(*DEFAULT_REMOVAL_COLUMNS))
|
53
|
-
|
54
|
-
create_chapters_and_pages(storyline, chapters_data)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
def create_chapters_and_pages(storyline, chapters_data)
|
59
|
-
chapters_data.each do |chapter_data|
|
60
|
-
pages_data = chapter_data.delete('pages')
|
61
|
-
chapter = storyline.chapters.create!(chapter_data.except(*DEFAULT_REMOVAL_COLUMNS))
|
62
|
-
|
63
|
-
create_pages(chapter, pages_data)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
def create_pages(chapter, pages_data)
|
68
|
-
pages_data.each do |page_data|
|
69
|
-
chapter.pages.create!(page_data.except(*DEFAULT_REMOVAL_COLUMNS))
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
48
|
def create_widgets(revision, widgets_data)
|
74
49
|
widgets_data.each do |widget_data|
|
75
50
|
revision.widgets.create!(widget_data.except(*DEFAULT_REMOVAL_COLUMNS))
|
@@ -78,9 +53,26 @@ module Pageflow
|
|
78
53
|
|
79
54
|
def create_revision_components(revision, revision_components_data)
|
80
55
|
revision_components_data.each do |component_data|
|
56
|
+
nested_compontents_data = component_data.delete('components')
|
57
|
+
|
81
58
|
component_model = component_data.delete('class_name').constantize
|
82
59
|
component_data['revision_id'] = revision.id
|
83
|
-
component_model.create!(component_data.except(*DEFAULT_REMOVAL_COLUMNS))
|
60
|
+
component = component_model.create!(component_data.except(*DEFAULT_REMOVAL_COLUMNS))
|
61
|
+
|
62
|
+
create_nested_revision_components(component, nested_compontents_data)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def create_nested_revision_components(revision_component, nested_compontents_data)
|
67
|
+
nested_compontents_data.each do |collection_name, components_data|
|
68
|
+
components_data.each do |component_data|
|
69
|
+
nested_compontents_data = component_data.delete('components')
|
70
|
+
|
71
|
+
collection = revision_component.send(collection_name)
|
72
|
+
nested_component = collection.create!(component_data.except(*DEFAULT_REMOVAL_COLUMNS))
|
73
|
+
|
74
|
+
create_nested_revision_components(nested_component, nested_compontents_data)
|
75
|
+
end
|
84
76
|
end
|
85
77
|
end
|
86
78
|
|
@@ -11,10 +11,12 @@ module Pageflow
|
|
11
11
|
|
12
12
|
attr_reader :features
|
13
13
|
|
14
|
+
delegate :file_importers, to: :@config
|
14
15
|
delegate :file_types, to: :@config
|
15
16
|
delegate :help_entries, to: :@config
|
16
17
|
delegate :hooks, to: :@config
|
17
18
|
delegate :revision_components, to: :@config
|
19
|
+
delegate :themes, to: :@config
|
18
20
|
delegate :widget_types, to: :@config
|
19
21
|
|
20
22
|
def plugin(plugin)
|
@@ -44,13 +44,14 @@ module Pageflow
|
|
44
44
|
# @return [Configuration]
|
45
45
|
# @since 0.9
|
46
46
|
def config_for(target)
|
47
|
-
config = build_config(
|
47
|
+
config = build_config(
|
48
|
+
target.respond_to?(:entry_type) && target.entry_type.name
|
49
|
+
) do |c|
|
48
50
|
c.enable_features(target.enabled_feature_names(c))
|
49
51
|
end
|
50
52
|
|
51
|
-
if target.respond_to?(:
|
52
|
-
config = Configuration::ConfigView.new(config,
|
53
|
-
config.entry_types.find_by_name!(target.type_name))
|
53
|
+
if target.respond_to?(:entry_type)
|
54
|
+
config = Configuration::ConfigView.new(config, target.entry_type)
|
54
55
|
end
|
55
56
|
|
56
57
|
config
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Pageflow
|
2
|
+
# Include in models that are declared as nested revision components
|
3
|
+
# of other revision components.
|
4
|
+
#
|
5
|
+
# @since 15.5
|
6
|
+
module NestedRevisionComponent
|
7
|
+
# Shared functionality of revision components and nested revision
|
8
|
+
# components.
|
9
|
+
module Container
|
10
|
+
extend ActiveSupport::Concern
|
11
|
+
|
12
|
+
included do
|
13
|
+
cattr_accessor :nested_revision_component_collection_names, default: []
|
14
|
+
end
|
15
|
+
|
16
|
+
# @api private
|
17
|
+
def copy_nested_revision_component_to(record)
|
18
|
+
nested_revision_component_collection_names.each do |collection_name|
|
19
|
+
send(collection_name).each do |nested|
|
20
|
+
nested.copy_to(record.send(collection_name))
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Macro methods to declare nested revision components
|
26
|
+
module ClassMethods
|
27
|
+
# Call this macro in the body of a class which includes
|
28
|
+
# `RevisionComponent` or `NestedRevisionComponent` and pass
|
29
|
+
# the name of an association that shall be included when the
|
30
|
+
# revision component is copied to a new revision. The
|
31
|
+
# associated model needs to be a `NestedRevisionComponent`.
|
32
|
+
def nested_revision_components(*collection_names)
|
33
|
+
self.nested_revision_component_collection_names = collection_names
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
extend ActiveSupport::Concern
|
39
|
+
include Container
|
40
|
+
|
41
|
+
# @api private
|
42
|
+
def copy_to(collection)
|
43
|
+
record = dup
|
44
|
+
collection << record
|
45
|
+
|
46
|
+
copy_nested_revision_component_to(record)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/pageflow/react.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
module Pageflow
|
2
2
|
module React
|
3
|
+
# @deprecated Use `PageflowPaged::React.create_page_type` instead.
|
3
4
|
def self.create_page_type(name, options = {})
|
4
|
-
|
5
|
+
PageflowPaged::React.create_page_type(name, options)
|
5
6
|
end
|
6
7
|
|
8
|
+
# @deprecated Use `PageflowPaged::React.create_widget_type` instead.
|
7
9
|
def self.create_widget_type(name, role, options = {})
|
8
|
-
|
10
|
+
PageflowPaged::React.create_widget_type(name, role, options)
|
9
11
|
end
|
10
12
|
end
|
11
13
|
end
|
@@ -2,8 +2,9 @@ module Pageflow
|
|
2
2
|
# RevisionComponent represents a model that is attached to the revision
|
3
3
|
# mechanism of Pageflow.
|
4
4
|
#
|
5
|
-
# In order to be used as a
|
6
|
-
# have an integer field `perma_id` and a
|
5
|
+
# In order to be used as a revision component, a model is required
|
6
|
+
# to have an integer field `perma_id` and a `revision_id` foreign
|
7
|
+
# key.
|
7
8
|
module RevisionComponent
|
8
9
|
extend ActiveSupport::Concern
|
9
10
|
|
@@ -13,6 +14,7 @@ module Pageflow
|
|
13
14
|
|
14
15
|
included do
|
15
16
|
include AutoGeneratedPermaId
|
17
|
+
include NestedRevisionComponent::Container
|
16
18
|
|
17
19
|
belongs_to :revision, class_name: 'Pageflow::Revision', touch: true
|
18
20
|
end
|
@@ -21,6 +23,8 @@ module Pageflow
|
|
21
23
|
record = dup
|
22
24
|
record.revision = revision
|
23
25
|
record.save!
|
26
|
+
|
27
|
+
copy_nested_revision_component_to(record)
|
24
28
|
end
|
25
29
|
|
26
30
|
module ClassMethods
|
data/lib/pageflow/themes.rb
CHANGED
@@ -36,6 +36,10 @@ module Pageflow
|
|
36
36
|
# @option options :hide_logo_option [Boolean]
|
37
37
|
# Pass true if hiding the logo on specific pages should be supported
|
38
38
|
# as an option in the editor.
|
39
|
+
#
|
40
|
+
# @option options :logo_url [String]
|
41
|
+
# Pass logo url as string to turn the logo in navigation bar into a link.
|
42
|
+
#
|
39
43
|
def register(name, options = {})
|
40
44
|
@themes[name] = Theme.new(name, options)
|
41
45
|
end
|