pageflow 15.7.0 → 15.8.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 +103 -199
- data/README.md +1 -9
- data/Rakefile +4 -1
- data/admins/pageflow/entry.rb +32 -6
- data/admins/pageflow/membership.rb +5 -1
- data/admins/pageflow/user.rb +7 -0
- data/app/assets/javascripts/pageflow/admin/entries.js +40 -0
- data/app/assets/stylesheets/pageflow/admin/permalink_input.scss +65 -0
- data/app/assets/stylesheets/pageflow/admin.scss +1 -0
- data/app/assets/stylesheets/pageflow/editor/base.scss +2 -6
- data/app/assets/stylesheets/pageflow/editor/dialogs.scss +2 -0
- data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +9 -0
- data/app/assets/stylesheets/pageflow/editor/info_box.scss +13 -3
- data/app/assets/stylesheets/pageflow/mixins/buttons.scss +1 -0
- data/app/assets/stylesheets/pageflow/page.scss +0 -2
- data/app/assets/stylesheets/pageflow/themes/default/page.scss +1 -1
- data/app/assets/stylesheets/pageflow/ui/forms.scss +4 -1
- data/app/controllers/pageflow/editor/file_import_controller.rb +32 -42
- data/app/controllers/pageflow/entries_controller.rb +25 -1
- data/app/helpers/pageflow/admin/permalinks_helper.rb +15 -0
- data/app/helpers/pageflow/entries_helper.rb +9 -1
- data/app/helpers/pageflow/themings_helper.rb +1 -1
- data/app/inputs/pageflow_permalink_input.rb +47 -0
- data/app/models/concerns/pageflow/permalinkable.rb +12 -0
- data/app/models/concerns/pageflow/reusable_file.rb +5 -0
- data/app/models/concerns/pageflow/uploadable_file.rb +4 -0
- data/app/models/pageflow/customized_theme.rb +4 -2
- data/app/models/pageflow/entry.rb +13 -0
- data/app/models/pageflow/entry_at_revision.rb +2 -1
- data/app/models/pageflow/entry_duplicate.rb +7 -0
- data/app/models/pageflow/image_file_url_templates.rb +2 -2
- data/app/models/pageflow/permalink.rb +39 -0
- data/app/models/pageflow/permalink_directory.rb +10 -0
- data/app/models/pageflow/published_entry.rb +17 -0
- data/app/models/pageflow/revision.rb +1 -1
- data/app/models/pageflow/theme_customization_file.rb +6 -1
- data/app/models/pageflow/theming.rb +1 -0
- data/app/views/admin/entries/_form.html.erb +9 -1
- data/app/views/admin/entries/_permalink_inputs.html.erb +6 -0
- data/app/views/admin/entries/permalink_inputs.html.erb +7 -0
- data/app/views/pageflow/editor/file_import/start_import_job.json.jbuilder +10 -0
- data/app/views/pageflow/files/_file.json.jbuilder +1 -0
- data/config/initializers/mime_types.rb +1 -0
- data/config/routes.rb +8 -5
- data/db/migrate/20221024100724_create_pageflow_permalink_directories.rb +10 -0
- data/db/migrate/20221025074049_add_permalink_attributes_to_entries.rb +5 -0
- data/db/migrate/20221027065022_create_pageflow_permalinks.rb +12 -0
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +166 -169
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +44 -2
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-client.js +5 -5
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-server.js +1 -1
- data/entry_types/paged/config/initializers/features.rb +2 -0
- data/entry_types/paged/config/locales/{new/help.de.yml → de.yml} +74 -65
- data/entry_types/paged/config/locales/{new/help.en.yml → en.yml} +66 -56
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/favicon_helper.rb +39 -13
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/generated_media_queries_helper.rb +55 -0
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb +6 -2
- data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_head.html.erb +2 -0
- data/entry_types/scrolled/app/views/pageflow_scrolled/entries/_manifest.json.jbuilder +16 -0
- data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +9 -3
- data/entry_types/scrolled/app/views/pageflow_scrolled/favicons/_entry.html.erb +16 -10
- data/entry_types/scrolled/config/locales/de.yml +265 -76
- data/entry_types/scrolled/config/locales/en.yml +266 -77
- data/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb +3 -3
- data/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +14 -0
- data/entry_types/scrolled/lib/pageflow_scrolled/react_widget_type.rb +1 -1
- data/entry_types/scrolled/lib/pageflow_scrolled/web_app_manifest.rb +11 -0
- data/entry_types/scrolled/lib/pageflow_scrolled.rb +39 -1
- data/entry_types/scrolled/lib/tasks/pageflow_scrolled/storybook.rake +3 -2
- data/entry_types/scrolled/package/contentElements-editor.js +124 -38
- data/entry_types/scrolled/package/contentElements-frontend.css +1 -1
- data/entry_types/scrolled/package/contentElements-frontend.js +321 -27
- data/entry_types/scrolled/package/editor.js +1345 -739
- data/entry_types/scrolled/package/frontend/EditableInlineText.module-c6672f27.js +5314 -0
- data/entry_types/scrolled/package/frontend/{PhonePlatformContext-9fb97827.js → PhonePlatformContext-22e65f92.js} +40 -4
- data/entry_types/scrolled/package/frontend/{Viewer-e2290ea0.js → Viewer-6b05522f.js} +6 -40
- data/entry_types/scrolled/package/frontend/arrowRight-7e3d9dd5.js +42 -0
- data/entry_types/scrolled/package/frontend/{components-6ab26015.js → components-487daafa.js} +546 -361
- data/entry_types/scrolled/package/frontend/index.css +1 -1
- data/entry_types/scrolled/package/frontend/index.js +197 -3674
- data/entry_types/scrolled/package/package.json +3 -2
- data/entry_types/scrolled/package/testHelpers.js +12 -2
- data/entry_types/scrolled/package/widgets/defaultNavigation.css +1 -1
- data/entry_types/scrolled/package/widgets/defaultNavigation.js +35 -32
- data/entry_types/scrolled/spec/fixtures/image.ico +0 -0
- data/lib/pageflow/entry_type.rb +6 -2
- data/lib/pageflow/user_mixin.rb +6 -0
- data/lib/pageflow/version.rb +1 -1
- data/package/editor.js +122 -149
- data/package/frontend.js +19 -2
- data/package/testHelpers.js +39 -6
- data/spec/factories/entries.rb +17 -0
- data/spec/factories/permalink_directory.rb +6 -0
- data/spec/factories/permalinks.rb +4 -0
- data/spec/factories/published_entries.rb +2 -0
- metadata +30 -47
- data/entry_types/paged/config/locales/new/video_contain.de.yml +0 -7
- data/entry_types/paged/config/locales/new/video_contain.en.yml +0 -7
- data/entry_types/scrolled/config/locales/new/before_after_slider.de.yml +0 -8
- data/entry_types/scrolled/config/locales/new/before_after_slider.en.yml +0 -8
- data/entry_types/scrolled/config/locales/new/center_ragged.de.yml +0 -8
- data/entry_types/scrolled/config/locales/new/center_ragged.en.yml +0 -9
- data/entry_types/scrolled/config/locales/new/consent.de.yml +0 -25
- data/entry_types/scrolled/config/locales/new/consent.en.yml +0 -24
- data/entry_types/scrolled/config/locales/new/content_element_categories.de.yml +0 -39
- data/entry_types/scrolled/config/locales/new/content_element_categories.en.yml +0 -39
- data/entry_types/scrolled/config/locales/new/default_transition.de.yml +0 -14
- data/entry_types/scrolled/config/locales/new/default_transition.en.yml +0 -14
- data/entry_types/scrolled/config/locales/new/header_line_breaks.de.yml +0 -28
- data/entry_types/scrolled/config/locales/new/header_line_breaks.en.yml +0 -27
- data/entry_types/scrolled/config/locales/new/header_size.de.yml +0 -17
- data/entry_types/scrolled/config/locales/new/header_size.en.yml +0 -17
- data/entry_types/scrolled/config/locales/new/iframe_embed.de.yml +0 -39
- data/entry_types/scrolled/config/locales/new/iframe_embed.en.yml +0 -39
- data/entry_types/scrolled/config/locales/new/inline_loops.de.yml +0 -26
- data/entry_types/scrolled/config/locales/new/inline_loops.en.yml +0 -26
- data/entry_types/scrolled/config/locales/new/portrait_inline_image.de.yml +0 -9
- data/entry_types/scrolled/config/locales/new/portrait_inline_image.en.yml +0 -9
- data/entry_types/scrolled/config/locales/new/section_width.de.yml +0 -10
- data/entry_types/scrolled/config/locales/new/section_width.en.yml +0 -10
- data/entry_types/scrolled/config/locales/new/typography_variants.de.yml +0 -7
- data/entry_types/scrolled/config/locales/new/typography_variants.en.yml +0 -7
- data/entry_types/scrolled/config/locales/new/video_embed_poster.de.yml +0 -8
- data/entry_types/scrolled/config/locales/new/video_embed_poster.en.yml +0 -8
- data/entry_types/scrolled/config/locales/new/waveform_styles.de.yml +0 -11
- data/entry_types/scrolled/config/locales/new/waveform_styles.en.yml +0 -12
- data/entry_types/scrolled/config/locales/new/widgets.de.yml +0 -6
- data/entry_types/scrolled/config/locales/new/widgets.en.yml +0 -6
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/browserconfig.xml +0 -9
- 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 +0 -46
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/site.webmanifest +0 -19
- data/entry_types/scrolled/package/frontend/EditableInlineText.module-b9923660.js +0 -993
- data/entry_types/scrolled/package/frontend/usePhonePlatform-2857c22b.js +0 -34
@@ -1,4 +1,5 @@
|
|
1
|
-
import
|
1
|
+
import { browser } from 'pageflow/frontend';
|
2
|
+
import React, { useReducer, useMemo, useCallback, createContext as createContext$1, useContext, useState, useEffect } from 'react';
|
2
3
|
import I18n from 'i18n-js';
|
3
4
|
import { createContext, useContextSelector } from 'use-context-selector';
|
4
5
|
import { createSelectorCreator, defaultMemoize, createSelector } from 'reselect';
|
@@ -820,11 +821,20 @@ function useSectionContentElements(_ref2) {
|
|
820
821
|
};
|
821
822
|
});
|
822
823
|
}
|
824
|
+
function useChapter(_ref3) {
|
825
|
+
var permaId = _ref3.permaId;
|
826
|
+
var chapters = useChapters();
|
827
|
+
return useMemo(function () {
|
828
|
+
return chapters.find(function (chapter) {
|
829
|
+
return chapter.permaId === permaId;
|
830
|
+
});
|
831
|
+
}, [chapters, permaId]);
|
832
|
+
}
|
823
833
|
function useChapters() {
|
824
834
|
var chapters = useEntryStateCollectionItems('chapters');
|
825
835
|
return useMemo(function () {
|
826
836
|
var chapterSlugs = {};
|
827
|
-
return chapters.map(function (chapter) {
|
837
|
+
return chapters.map(function (chapter, index) {
|
828
838
|
var chapterSlug = chapter.configuration.title;
|
829
839
|
|
830
840
|
if (chapterSlug) {
|
@@ -846,6 +856,7 @@ function useChapters() {
|
|
846
856
|
return {
|
847
857
|
id: chapter.id,
|
848
858
|
permaId: chapter.permaId,
|
859
|
+
index: index,
|
849
860
|
title: chapter.configuration.title,
|
850
861
|
summary: chapter.configuration.summary,
|
851
862
|
chapterSlug: chapterSlug
|
@@ -901,7 +912,7 @@ function getFileUrl(collectionName, file, quality, urlTemplates) {
|
|
901
912
|
var template = templates[quality];
|
902
913
|
|
903
914
|
if (template) {
|
904
|
-
return template.replace(':id_partition', idPartition(file.id)).replace(':basename', file.basename).replace(':pageflow_hls_qualities', function () {
|
915
|
+
return template.replace(':id_partition', idPartition(file.id)).replace(':basename', file.basename).replace(':extension', file.extension).replace(':pageflow_hls_qualities', function () {
|
905
916
|
return hlsQualities(file);
|
906
917
|
});
|
907
918
|
}
|
@@ -1180,6 +1191,31 @@ function useI18n() {
|
|
1180
1191
|
};
|
1181
1192
|
}
|
1182
1193
|
|
1194
|
+
var BrowserFeaturesAvailableContext = createContext$1(); // Browser feature detection is not available during server side
|
1195
|
+
// rendering. To prevent mismatches during hydration, we keep features
|
1196
|
+
// disabled in the initial render. Since hydration only starts after
|
1197
|
+
// feature detection has finished, we can immediately re-render once
|
1198
|
+
// the provider has mounted.
|
1199
|
+
|
1200
|
+
function BrowserFeaturesProvider(_ref) {
|
1201
|
+
var children = _ref.children;
|
1202
|
+
|
1203
|
+
var _useState = useState(false),
|
1204
|
+
_useState2 = _slicedToArray(_useState, 2),
|
1205
|
+
isAvailable = _useState2[0],
|
1206
|
+
setIsAvailable = _useState2[1];
|
1207
|
+
|
1208
|
+
useEffect(function () {
|
1209
|
+
return setIsAvailable(true);
|
1210
|
+
}, []);
|
1211
|
+
return /*#__PURE__*/React.createElement(BrowserFeaturesAvailableContext.Provider, {
|
1212
|
+
value: isAvailable
|
1213
|
+
}, children);
|
1214
|
+
}
|
1215
|
+
function useBrowserFeature(name) {
|
1216
|
+
return useContext(BrowserFeaturesAvailableContext) && browser.has(name);
|
1217
|
+
}
|
1218
|
+
|
1183
1219
|
var PhonePlatformContext = React.createContext(false);
|
1184
1220
|
|
1185
|
-
export {
|
1221
|
+
export { useShareProviders as A, BrowserFeaturesProvider as B, useShareUrl as C, updateContentElementConfiguration as D, EntryStateProvider as E, _unsupportedIterableToArray as F, LocaleProvider as L, PhonePlatformContext as P, _objectWithoutProperties as _, _objectSpread2 as a, _defineProperty as b, _slicedToArray as c, useLocale as d, useLegalInfo as e, useTheme as f, useEntryMetadata as g, useNestedFiles as h, useFile as i, _toConsumableArray as j, useSectionContentElements as k, useAdditionalSeedData as l, useSectionsWithChapter as m, useBrowserFeature as n, useEntryStateDispatch as o, useSection as p, useChapter as q, useEntryStructure as r, useWidget as s, getFileUrlTemplateHost as t, useI18n as u, useAvailableQualities as v, setupI18n as w, useChapters as x, useCredits as y, useFileRights as z };
|
@@ -1,13 +1,13 @@
|
|
1
1
|
import 'pageflow/frontend';
|
2
2
|
import React, { useMemo, useEffect, useRef, useState } from 'react';
|
3
3
|
import ReactDOM from 'react-dom';
|
4
|
-
import { _ as _objectWithoutProperties, u as useI18n, b as _defineProperty, c as _slicedToArray } from './PhonePlatformContext-
|
4
|
+
import { _ as _objectWithoutProperties, u as useI18n, b as _defineProperty, n as useBrowserFeature, c as _slicedToArray } from './PhonePlatformContext-22e65f92.js';
|
5
5
|
import 'i18n-js';
|
6
6
|
import 'use-context-selector';
|
7
7
|
import 'reselect';
|
8
8
|
import 'slugify';
|
9
9
|
import classNames from 'classnames';
|
10
|
-
import {
|
10
|
+
import { A as ArrowRightIcon, u as usePhonePlatform } from './arrowRight-7e3d9dd5.js';
|
11
11
|
import { PanoViewer } from '@egjs/view360';
|
12
12
|
import screenfull from 'screenfull';
|
13
13
|
|
@@ -165,40 +165,6 @@ var ArrowLeftIcon = (function (_ref) {
|
|
165
165
|
}));
|
166
166
|
});
|
167
167
|
|
168
|
-
function _extends$3() {
|
169
|
-
_extends$3 = Object.assign || function (target) {
|
170
|
-
for (var i = 1; i < arguments.length; i++) {
|
171
|
-
var source = arguments[i];
|
172
|
-
|
173
|
-
for (var key in source) {
|
174
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
175
|
-
target[key] = source[key];
|
176
|
-
}
|
177
|
-
}
|
178
|
-
}
|
179
|
-
|
180
|
-
return target;
|
181
|
-
};
|
182
|
-
|
183
|
-
return _extends$3.apply(this, arguments);
|
184
|
-
}
|
185
|
-
var ArrowRightIcon = (function (_ref) {
|
186
|
-
var _ref$styles = _ref.styles,
|
187
|
-
styles = _ref$styles === void 0 ? {} : _ref$styles,
|
188
|
-
props = _objectWithoutProperties(_ref, ["styles"]);
|
189
|
-
|
190
|
-
return /*#__PURE__*/React.createElement("svg", _extends$3({
|
191
|
-
xmlns: "http://www.w3.org/2000/svg",
|
192
|
-
className: (styles["h-5"] || "h-5") + " " + (styles["w-5"] || "w-5"),
|
193
|
-
viewBox: "0 0 20 20",
|
194
|
-
fill: "currentColor"
|
195
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
196
|
-
fillRule: "evenodd",
|
197
|
-
d: "M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z",
|
198
|
-
clipRule: "evenodd"
|
199
|
-
}));
|
200
|
-
});
|
201
|
-
|
202
168
|
var styles$2 = {"indicator":"PanoramaIndicator-module_indicator__3A90v","visible":"PanoramaIndicator-module_visible__3LOgm","arrow":"PanoramaIndicator-module_arrow__QV1Pd","arrowLeft":"PanoramaIndicator-module_arrowLeft__Jh7GC PanoramaIndicator-module_arrow__QV1Pd","arrowRight":"PanoramaIndicator-module_arrowRight__ZZBtO PanoramaIndicator-module_arrow__QV1Pd","nudgeLeft":"PanoramaIndicator-module_nudgeLeft__IU_Iy","nudgeRight":"PanoramaIndicator-module_nudgeRight__3XzNu","text":"PanoramaIndicator-module_text__2FzUy"};
|
203
169
|
|
204
170
|
function PanoramaIndicator(_ref) {
|
@@ -258,8 +224,8 @@ function FullscreenIndicator(_ref) {
|
|
258
224
|
|
259
225
|
var styles$4 = {"full":"Viewer-module_full__1q18y","container":"Viewer-module_container__3eJ34 Viewer-module_full__1q18y","controls":"Viewer-module_controls__3BTof","spinner":"Viewer-module_spinner__2oRve","spin":"Viewer-module_spin__3jBR2","isLoading":"Viewer-module_isLoading__sQuGw"};
|
260
226
|
|
261
|
-
function _extends$
|
262
|
-
_extends$
|
227
|
+
function _extends$3() {
|
228
|
+
_extends$3 = Object.assign || function (target) {
|
263
229
|
for (var i = 1; i < arguments.length; i++) {
|
264
230
|
var source = arguments[i];
|
265
231
|
|
@@ -273,13 +239,13 @@ function _extends$4() {
|
|
273
239
|
return target;
|
274
240
|
};
|
275
241
|
|
276
|
-
return _extends$
|
242
|
+
return _extends$3.apply(this, arguments);
|
277
243
|
}
|
278
244
|
var SpinnerIcon = (function (_ref) {
|
279
245
|
var _ref$styles = _ref.styles,
|
280
246
|
props = _objectWithoutProperties(_ref, ["styles"]);
|
281
247
|
|
282
|
-
return /*#__PURE__*/React.createElement("svg", _extends$
|
248
|
+
return /*#__PURE__*/React.createElement("svg", _extends$3({
|
283
249
|
xmlns: "http://www.w3.org/2000/svg",
|
284
250
|
fill: "none",
|
285
251
|
viewBox: "0 0 24 24"
|
@@ -0,0 +1,42 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { P as PhonePlatformContext, _ as _objectWithoutProperties } from './PhonePlatformContext-22e65f92.js';
|
3
|
+
|
4
|
+
function usePhonePlatform() {
|
5
|
+
return React.useContext(PhonePlatformContext);
|
6
|
+
}
|
7
|
+
|
8
|
+
function _extends() {
|
9
|
+
_extends = Object.assign || function (target) {
|
10
|
+
for (var i = 1; i < arguments.length; i++) {
|
11
|
+
var source = arguments[i];
|
12
|
+
|
13
|
+
for (var key in source) {
|
14
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
15
|
+
target[key] = source[key];
|
16
|
+
}
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
return target;
|
21
|
+
};
|
22
|
+
|
23
|
+
return _extends.apply(this, arguments);
|
24
|
+
}
|
25
|
+
var ArrowRightIcon = (function (_ref) {
|
26
|
+
var _ref$styles = _ref.styles,
|
27
|
+
styles = _ref$styles === void 0 ? {} : _ref$styles,
|
28
|
+
props = _objectWithoutProperties(_ref, ["styles"]);
|
29
|
+
|
30
|
+
return /*#__PURE__*/React.createElement("svg", _extends({
|
31
|
+
xmlns: "http://www.w3.org/2000/svg",
|
32
|
+
className: (styles["h-5"] || "h-5") + " " + (styles["w-5"] || "w-5"),
|
33
|
+
viewBox: "0 0 20 20",
|
34
|
+
fill: "currentColor"
|
35
|
+
}, props), /*#__PURE__*/React.createElement("path", {
|
36
|
+
fillRule: "evenodd",
|
37
|
+
d: "M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z",
|
38
|
+
clipRule: "evenodd"
|
39
|
+
}));
|
40
|
+
});
|
41
|
+
|
42
|
+
export { ArrowRightIcon as A, usePhonePlatform as u };
|