pageflow 16.0.0 → 16.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +210 -33
- data/README.md +0 -1
- data/Rakefile +1 -1
- data/admins/pageflow/entry.rb +0 -1
- data/admins/pageflow/sites.rb +3 -0
- data/app/assets/javascripts/pageflow/dist/ui.js +298 -72
- data/app/assets/stylesheets/pageflow/admin/permalink_input.scss +10 -0
- data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +6 -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 +1 -1
- data/app/controllers/pageflow/chapters_controller.rb +2 -2
- data/app/controllers/pageflow/editor/files_controller.rb +1 -1
- data/app/controllers/pageflow/entries_controller.rb +10 -0
- 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 +2 -1
- data/app/helpers/pageflow/feeds_helper.rb +66 -0
- data/app/helpers/pageflow/page_types_helper.rb +9 -9
- data/app/inputs/pageflow_permalink_input.rb +15 -3
- data/app/models/concerns/pageflow/reusable_file.rb +3 -3
- 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/image_file.rb +14 -3
- 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 +4 -0
- data/app/models/pageflow/site.rb +8 -0
- data/app/models/pageflow/sitemaps.rb +13 -0
- data/app/models/pageflow/used_file.rb +2 -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 +8 -2
- data/app/views/components/pageflow/admin/sites_tab.rb +3 -0
- data/app/views/pageflow/editor/config/_seeds.json.jbuilder +1 -0
- data/app/views/pageflow/feeds/index.atom.builder +20 -0
- data/app/views/pageflow/sitemaps/index.xml.builder +9 -0
- data/config/initializers/features.rb +1 -0
- data/config/initializers/paperclip.rb +4 -0
- data/config/locales/de.yml +27 -6
- data/config/locales/en.yml +30 -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/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +445 -109
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +26 -3
- 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 +1 -0
- 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 +17 -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 +2 -0
- 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 +3 -0
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/packs_helper.rb +31 -10
- 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 +3 -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 +6 -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 +3 -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 +189 -8
- data/entry_types/scrolled/config/locales/en.yml +207 -2
- data/entry_types/scrolled/config/routes.rb +4 -0
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/install_generator.rb +97 -5
- 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 +17 -1
- data/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +24 -0
- data/entry_types/scrolled/lib/pageflow_scrolled/react_widget_type.rb +6 -1
- data/entry_types/scrolled/lib/tasks/pageflow_scrolled/storybook.rake +1 -2
- data/entry_types/scrolled/package/contentElements-editor.js +307 -22
- data/entry_types/scrolled/package/contentElements-frontend.css +1 -1
- data/entry_types/scrolled/package/contentElements-frontend.js +690 -71
- data/entry_types/scrolled/package/editor.js +616 -220
- data/entry_types/scrolled/package/frontend/{EditableInlineText.module-14c7b097.js → EditableInlineText.module-fa9e3aff.js} +1669 -1674
- data/entry_types/scrolled/package/frontend/PhonePlatformContext-10a1d600.js +32 -0
- data/entry_types/scrolled/package/frontend/ToggleFullscreenCornerButton-727cce0d.js +107 -0
- data/entry_types/scrolled/package/frontend/Viewer-169e14ca.js +154 -0
- data/entry_types/scrolled/package/frontend/{Viewer-b6becc57.js → Viewer-ee1aa590.js} +32 -161
- data/entry_types/scrolled/package/frontend/arrowRight-92a34ccc.js +77 -0
- data/entry_types/scrolled/package/frontend/{components-b3160dd7.js → components-4a09bfa3.js} +185 -45
- data/entry_types/scrolled/package/frontend/{PhonePlatformContext-f6093cc6.js → i18n-ddd92820.js} +149 -107
- data/entry_types/scrolled/package/frontend/index-02378634.js +118 -0
- data/entry_types/scrolled/package/frontend/index.css +1 -1
- data/entry_types/scrolled/package/frontend/index.js +206 -54
- data/entry_types/scrolled/package/frontend/useContentElementEditorState-63045393.js +52 -0
- data/entry_types/scrolled/package/package.json +2 -1
- data/entry_types/scrolled/package/testHelpers.js +9 -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 +1 -1
- data/lib/generators/pageflow/resque/resque_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 +21 -0
- data/lib/pageflow/engine.rb +60 -39
- 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/rails_version.rb +19 -0
- data/lib/pageflow/seeds.rb +10 -7
- data/lib/pageflow/version.rb +1 -1
- data/lib/pageflow/widget_types.rb +4 -0
- data/package/config/webpack5.js +14 -0
- data/package/editor.js +141 -30
- data/package/frontend.js +26 -2
- data/package/testHelpers.js +1 -1
- data/package/ui.js +296 -71
- data/spec/factories/entries.rb +17 -3
- data/spec/factories/sites.rb +3 -0
- data/vendor/assets/javascripts/iscroll.js +4 -7
- metadata +65 -49
- data/app/helpers/pageflow/admin/permalinks_helper.rb +0 -15
- data/entry_types/scrolled/package/frontend/arrowRight-78a7cee4.js +0 -42
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
this.pageflow = this.pageflow || {};
|
|
2
|
-
this.pageflow._uiGlobalInterop = (function (exports, Marionette, _, $, I18n$1, Backbone, ChildViewContainer, IScroll, jquery_minicolors, wysihtml5, Cocktail) {
|
|
2
|
+
this.pageflow._uiGlobalInterop = (function (exports, Marionette, _, $, I18n$1, Backbone, ChildViewContainer, IScroll, jquery_minicolors, wysihtml5, jqueryUi, Cocktail) {
|
|
3
3
|
'use strict';
|
|
4
4
|
|
|
5
5
|
Marionette = Marionette && Marionette.hasOwnProperty('default') ? Marionette['default'] : Marionette;
|
|
@@ -1067,6 +1067,107 @@ this.pageflow._uiGlobalInterop = (function (exports, Marionette, _, $, I18n$1, B
|
|
|
1067
1067
|
}
|
|
1068
1068
|
});
|
|
1069
1069
|
|
|
1070
|
+
function _defineProperty(obj, key, value) {
|
|
1071
|
+
if (key in obj) {
|
|
1072
|
+
Object.defineProperty(obj, key, {
|
|
1073
|
+
value: value,
|
|
1074
|
+
enumerable: true,
|
|
1075
|
+
configurable: true,
|
|
1076
|
+
writable: true
|
|
1077
|
+
});
|
|
1078
|
+
} else {
|
|
1079
|
+
obj[key] = value;
|
|
1080
|
+
}
|
|
1081
|
+
|
|
1082
|
+
return obj;
|
|
1083
|
+
}
|
|
1084
|
+
|
|
1085
|
+
function ownKeys(object, enumerableOnly) {
|
|
1086
|
+
var keys = Object.keys(object);
|
|
1087
|
+
|
|
1088
|
+
if (Object.getOwnPropertySymbols) {
|
|
1089
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
1090
|
+
if (enumerableOnly) symbols = symbols.filter(function (sym) {
|
|
1091
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
1092
|
+
});
|
|
1093
|
+
keys.push.apply(keys, symbols);
|
|
1094
|
+
}
|
|
1095
|
+
|
|
1096
|
+
return keys;
|
|
1097
|
+
}
|
|
1098
|
+
|
|
1099
|
+
function _objectSpread2(target) {
|
|
1100
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
1101
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
1102
|
+
|
|
1103
|
+
if (i % 2) {
|
|
1104
|
+
ownKeys(Object(source), true).forEach(function (key) {
|
|
1105
|
+
_defineProperty(target, key, source[key]);
|
|
1106
|
+
});
|
|
1107
|
+
} else if (Object.getOwnPropertyDescriptors) {
|
|
1108
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
1109
|
+
} else {
|
|
1110
|
+
ownKeys(Object(source)).forEach(function (key) {
|
|
1111
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
1112
|
+
});
|
|
1113
|
+
}
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1116
|
+
return target;
|
|
1117
|
+
}
|
|
1118
|
+
|
|
1119
|
+
var attributeBinding = {
|
|
1120
|
+
setupBooleanAttributeBinding: function setupBooleanAttributeBinding(optionName, updateMethod) {
|
|
1121
|
+
this.setupAttributeBinding(optionName, updateMethod, Boolean);
|
|
1122
|
+
},
|
|
1123
|
+
getBooleanAttributBoundOption: function getBooleanAttributBoundOption(optionName) {
|
|
1124
|
+
return this.getAttributeBoundOption(optionName, Boolean);
|
|
1125
|
+
},
|
|
1126
|
+
setupAttributeBinding: function setupAttributeBinding(optionName, updateMethod) {
|
|
1127
|
+
var _this = this;
|
|
1128
|
+
|
|
1129
|
+
var normalize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (value) {
|
|
1130
|
+
return value;
|
|
1131
|
+
};
|
|
1132
|
+
var binding = this.options["".concat(optionName, "Binding")];
|
|
1133
|
+
var view = this;
|
|
1134
|
+
|
|
1135
|
+
if (binding) {
|
|
1136
|
+
_.flatten([binding]).forEach(function (attribute) {
|
|
1137
|
+
_this.listenTo(_this.model, 'change:' + attribute, update);
|
|
1138
|
+
});
|
|
1139
|
+
}
|
|
1140
|
+
|
|
1141
|
+
update();
|
|
1142
|
+
|
|
1143
|
+
function update() {
|
|
1144
|
+
updateMethod.call(view, view.getAttributeBoundOption(optionName, normalize));
|
|
1145
|
+
}
|
|
1146
|
+
},
|
|
1147
|
+
getAttributeBoundOption: function getAttributeBoundOption(optionName) {
|
|
1148
|
+
var _this2 = this;
|
|
1149
|
+
|
|
1150
|
+
var normalize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (value) {
|
|
1151
|
+
return value;
|
|
1152
|
+
};
|
|
1153
|
+
var binding = this.options["".concat(optionName, "Binding")];
|
|
1154
|
+
var bindingValueOptionName = "".concat(optionName, "BindingValue");
|
|
1155
|
+
var value = Array.isArray(binding) ? binding.map(function (attribute) {
|
|
1156
|
+
return _this2.model.get(attribute);
|
|
1157
|
+
}) : this.model.get(binding);
|
|
1158
|
+
|
|
1159
|
+
if (bindingValueOptionName in this.options) {
|
|
1160
|
+
return value === this.options[bindingValueOptionName];
|
|
1161
|
+
} else if (typeof this.options[optionName] === 'function') {
|
|
1162
|
+
return normalize(this.options[optionName](value));
|
|
1163
|
+
} else if (optionName in this.options) {
|
|
1164
|
+
return normalize(this.options[optionName]);
|
|
1165
|
+
} else if (binding) {
|
|
1166
|
+
return normalize(value);
|
|
1167
|
+
}
|
|
1168
|
+
}
|
|
1169
|
+
};
|
|
1170
|
+
|
|
1070
1171
|
/**
|
|
1071
1172
|
* Mixin for input views handling common concerns like labels,
|
|
1072
1173
|
* inline help, visiblity and disabling.
|
|
@@ -1196,7 +1297,7 @@ this.pageflow._uiGlobalInterop = (function (exports, Marionette, _, $, I18n$1, B
|
|
|
1196
1297
|
* @mixin
|
|
1197
1298
|
*/
|
|
1198
1299
|
|
|
1199
|
-
var inputView = {
|
|
1300
|
+
var inputView = _objectSpread2(_objectSpread2({}, attributeBinding), {}, {
|
|
1200
1301
|
ui: {
|
|
1201
1302
|
label: 'label',
|
|
1202
1303
|
labelText: 'label .name',
|
|
@@ -1240,8 +1341,8 @@ this.pageflow._uiGlobalInterop = (function (exports, Marionette, _, $, I18n$1, B
|
|
|
1240
1341
|
this.ui.labelText.text(this.labelText());
|
|
1241
1342
|
this.updateInlineHelp();
|
|
1242
1343
|
this.setLabelFor();
|
|
1243
|
-
this.
|
|
1244
|
-
this.
|
|
1344
|
+
this.setupBooleanAttributeBinding('disabled', this.updateDisabled);
|
|
1345
|
+
this.setupBooleanAttributeBinding('visible', this.updateVisible);
|
|
1245
1346
|
},
|
|
1246
1347
|
|
|
1247
1348
|
/**
|
|
@@ -1290,7 +1391,7 @@ this.pageflow._uiGlobalInterop = (function (exports, Marionette, _, $, I18n$1, B
|
|
|
1290
1391
|
}
|
|
1291
1392
|
},
|
|
1292
1393
|
isDisabled: function isDisabled() {
|
|
1293
|
-
return this.
|
|
1394
|
+
return this.getBooleanAttributBoundOption('disabled');
|
|
1294
1395
|
},
|
|
1295
1396
|
updateDisabled: function updateDisabled() {
|
|
1296
1397
|
this.$el.toggleClass('input-disabled', !!this.isDisabled());
|
|
@@ -1308,46 +1409,9 @@ this.pageflow._uiGlobalInterop = (function (exports, Marionette, _, $, I18n$1, B
|
|
|
1308
1409
|
}
|
|
1309
1410
|
},
|
|
1310
1411
|
updateVisible: function updateVisible() {
|
|
1311
|
-
this.$el.toggleClass('
|
|
1312
|
-
},
|
|
1313
|
-
setupAttributeBinding: function setupAttributeBinding(optionName, updateMethod) {
|
|
1314
|
-
var _this = this;
|
|
1315
|
-
|
|
1316
|
-
var binding = this.options["".concat(optionName, "Binding")];
|
|
1317
|
-
var view = this;
|
|
1318
|
-
|
|
1319
|
-
if (binding) {
|
|
1320
|
-
_.flatten([binding]).forEach(function (attribute) {
|
|
1321
|
-
_this.listenTo(_this.model, 'change:' + attribute, update);
|
|
1322
|
-
});
|
|
1323
|
-
}
|
|
1324
|
-
|
|
1325
|
-
update();
|
|
1326
|
-
|
|
1327
|
-
function update() {
|
|
1328
|
-
updateMethod.call(view, view.getAttributeBoundOption(optionName));
|
|
1329
|
-
}
|
|
1330
|
-
},
|
|
1331
|
-
getAttributeBoundOption: function getAttributeBoundOption(optionName) {
|
|
1332
|
-
var _this2 = this;
|
|
1333
|
-
|
|
1334
|
-
var binding = this.options["".concat(optionName, "Binding")];
|
|
1335
|
-
var bindingValueOptionName = "".concat(optionName, "BindingValue");
|
|
1336
|
-
var value = Array.isArray(binding) ? binding.map(function (attribute) {
|
|
1337
|
-
return _this2.model.get(attribute);
|
|
1338
|
-
}) : this.model.get(binding);
|
|
1339
|
-
|
|
1340
|
-
if (bindingValueOptionName in this.options) {
|
|
1341
|
-
return value === this.options[bindingValueOptionName];
|
|
1342
|
-
} else if (typeof this.options[optionName] === 'function') {
|
|
1343
|
-
return !!this.options[optionName](value);
|
|
1344
|
-
} else if (optionName in this.options) {
|
|
1345
|
-
return !!this.options[optionName];
|
|
1346
|
-
} else if (binding) {
|
|
1347
|
-
return !!value;
|
|
1348
|
-
}
|
|
1412
|
+
this.$el.toggleClass('hidden_via_binding', this.getBooleanAttributBoundOption('visible') === false);
|
|
1349
1413
|
}
|
|
1350
|
-
};
|
|
1414
|
+
});
|
|
1351
1415
|
|
|
1352
1416
|
function template$4(data) {
|
|
1353
1417
|
var __p = '';
|
|
@@ -1466,6 +1530,125 @@ this.pageflow._uiGlobalInterop = (function (exports, Marionette, _, $, I18n$1, B
|
|
|
1466
1530
|
}
|
|
1467
1531
|
});
|
|
1468
1532
|
|
|
1533
|
+
function _classCallCheck(instance, Constructor) {
|
|
1534
|
+
if (!(instance instanceof Constructor)) {
|
|
1535
|
+
throw new TypeError("Cannot call a class as a function");
|
|
1536
|
+
}
|
|
1537
|
+
}
|
|
1538
|
+
|
|
1539
|
+
function _defineProperties(target, props) {
|
|
1540
|
+
for (var i = 0; i < props.length; i++) {
|
|
1541
|
+
var descriptor = props[i];
|
|
1542
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
1543
|
+
descriptor.configurable = true;
|
|
1544
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
1545
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
1546
|
+
}
|
|
1547
|
+
}
|
|
1548
|
+
|
|
1549
|
+
function _createClass(Constructor, protoProps, staticProps) {
|
|
1550
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
1551
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
1552
|
+
return Constructor;
|
|
1553
|
+
}
|
|
1554
|
+
|
|
1555
|
+
/**
|
|
1556
|
+
* Input view for a number.
|
|
1557
|
+
*
|
|
1558
|
+
* See {@link inputView} for further options.
|
|
1559
|
+
*
|
|
1560
|
+
* @param {Object} [options]
|
|
1561
|
+
*
|
|
1562
|
+
* @param {string} [options.locale]
|
|
1563
|
+
* Locale used to fomat and parse numbers.
|
|
1564
|
+
*
|
|
1565
|
+
* @class
|
|
1566
|
+
*/
|
|
1567
|
+
|
|
1568
|
+
var NumberInputView = Marionette.ItemView.extend({
|
|
1569
|
+
mixins: [inputView],
|
|
1570
|
+
template: function template() {
|
|
1571
|
+
return "\n <label>\n <span class=\"name\"></span>\n <span class=\"inline_help\"></span>\n </label>\n <input type=\"text\" dir=\"auto\" />\n ";
|
|
1572
|
+
},
|
|
1573
|
+
ui: {
|
|
1574
|
+
input: 'input'
|
|
1575
|
+
},
|
|
1576
|
+
events: {
|
|
1577
|
+
'change': 'onChange'
|
|
1578
|
+
},
|
|
1579
|
+
initialize: function initialize() {
|
|
1580
|
+
this.parser = new NumberParser(this.options.locale);
|
|
1581
|
+
},
|
|
1582
|
+
onRender: function onRender() {
|
|
1583
|
+
this.load();
|
|
1584
|
+
this.listenTo(this.model, 'change:' + this.options.propertyName, this.load);
|
|
1585
|
+
},
|
|
1586
|
+
onChange: function onChange() {
|
|
1587
|
+
this.save();
|
|
1588
|
+
this.load();
|
|
1589
|
+
},
|
|
1590
|
+
onClose: function onClose() {
|
|
1591
|
+
this.save();
|
|
1592
|
+
},
|
|
1593
|
+
save: function save() {
|
|
1594
|
+
var inputValue = this.ui.input.val();
|
|
1595
|
+
this.model.set(this.options.propertyName, this.parser.parse(inputValue) || 0);
|
|
1596
|
+
},
|
|
1597
|
+
load: function load() {
|
|
1598
|
+
var input = this.ui.input;
|
|
1599
|
+
var value = this.model.get(this.options.propertyName) || 0;
|
|
1600
|
+
input.val(value.toLocaleString(this.options.locale, {
|
|
1601
|
+
useGrouping: false
|
|
1602
|
+
}));
|
|
1603
|
+
},
|
|
1604
|
+
displayValidationError: function displayValidationError(message) {
|
|
1605
|
+
this.$el.addClass('invalid');
|
|
1606
|
+
this.ui.input.attr('title', message);
|
|
1607
|
+
},
|
|
1608
|
+
resetValidationError: function resetValidationError(message) {
|
|
1609
|
+
this.$el.removeClass('invalid');
|
|
1610
|
+
this.ui.input.attr('title', '');
|
|
1611
|
+
}
|
|
1612
|
+
});
|
|
1613
|
+
|
|
1614
|
+
var NumberParser = /*#__PURE__*/function () {
|
|
1615
|
+
function NumberParser(locale) {
|
|
1616
|
+
_classCallCheck(this, NumberParser);
|
|
1617
|
+
|
|
1618
|
+
var format = new Intl.NumberFormat(locale);
|
|
1619
|
+
var parts = format.formatToParts(12345.6);
|
|
1620
|
+
var numerals = Array.from({
|
|
1621
|
+
length: 10
|
|
1622
|
+
}).map(function (_, i) {
|
|
1623
|
+
return format.format(i);
|
|
1624
|
+
});
|
|
1625
|
+
var index = new Map(numerals.map(function (d, i) {
|
|
1626
|
+
return [d, i];
|
|
1627
|
+
}));
|
|
1628
|
+
this._group = new RegExp("[".concat(parts.find(function (d) {
|
|
1629
|
+
return d.type === "group";
|
|
1630
|
+
}).value, "]"), "g");
|
|
1631
|
+
this._decimal = new RegExp("[".concat(parts.find(function (d) {
|
|
1632
|
+
return d.type === "decimal";
|
|
1633
|
+
}).value, "]"));
|
|
1634
|
+
this._numeral = new RegExp("[".concat(numerals.join(""), "]"), "g");
|
|
1635
|
+
|
|
1636
|
+
this._index = function (d) {
|
|
1637
|
+
return index.get(d);
|
|
1638
|
+
};
|
|
1639
|
+
}
|
|
1640
|
+
|
|
1641
|
+
_createClass(NumberParser, [{
|
|
1642
|
+
key: "parse",
|
|
1643
|
+
value: function parse(string) {
|
|
1644
|
+
string = string.trim().replace(this._group, "").replace(this._decimal, ".").replace(this._numeral, this._index);
|
|
1645
|
+
return string ? +string : NaN;
|
|
1646
|
+
}
|
|
1647
|
+
}]);
|
|
1648
|
+
|
|
1649
|
+
return NumberParser;
|
|
1650
|
+
}();
|
|
1651
|
+
|
|
1469
1652
|
/**
|
|
1470
1653
|
* Text based input view that can display a placeholder.
|
|
1471
1654
|
*
|
|
@@ -1676,11 +1859,15 @@ this.pageflow._uiGlobalInterop = (function (exports, Marionette, _, $, I18n$1, B
|
|
|
1676
1859
|
this.ui.input.minicolors({
|
|
1677
1860
|
changeDelay: 200,
|
|
1678
1861
|
change: _.bind(function (color) {
|
|
1862
|
+
this._saving = true;
|
|
1863
|
+
|
|
1679
1864
|
if (color === this.defaultValue()) {
|
|
1680
1865
|
this.model.unset(this.options.propertyName);
|
|
1681
1866
|
} else {
|
|
1682
1867
|
this.model.set(this.options.propertyName, color);
|
|
1683
1868
|
}
|
|
1869
|
+
|
|
1870
|
+
this._saving = false;
|
|
1684
1871
|
}, this)
|
|
1685
1872
|
});
|
|
1686
1873
|
this.listenTo(this.model, 'change:' + this.options.propertyName, this.load);
|
|
@@ -1709,7 +1896,10 @@ this.pageflow._uiGlobalInterop = (function (exports, Marionette, _, $, I18n$1, B
|
|
|
1709
1896
|
}
|
|
1710
1897
|
},
|
|
1711
1898
|
load: function load() {
|
|
1712
|
-
|
|
1899
|
+
if (!this._saving) {
|
|
1900
|
+
this.ui.input.minicolors('value', this.model.get(this.options.propertyName) || this.defaultValue());
|
|
1901
|
+
}
|
|
1902
|
+
|
|
1713
1903
|
this.$el.toggleClass('is_default', !this.model.has(this.options.propertyName));
|
|
1714
1904
|
},
|
|
1715
1905
|
refreshPicker: function refreshPicker() {
|
|
@@ -2292,21 +2482,6 @@ this.pageflow._uiGlobalInterop = (function (exports, Marionette, _, $, I18n$1, B
|
|
|
2292
2482
|
}
|
|
2293
2483
|
});
|
|
2294
2484
|
|
|
2295
|
-
function _defineProperty(obj, key, value) {
|
|
2296
|
-
if (key in obj) {
|
|
2297
|
-
Object.defineProperty(obj, key, {
|
|
2298
|
-
value: value,
|
|
2299
|
-
enumerable: true,
|
|
2300
|
-
configurable: true,
|
|
2301
|
-
writable: true
|
|
2302
|
-
});
|
|
2303
|
-
} else {
|
|
2304
|
-
obj[key] = value;
|
|
2305
|
-
}
|
|
2306
|
-
|
|
2307
|
-
return obj;
|
|
2308
|
-
}
|
|
2309
|
-
|
|
2310
2485
|
function template$9(data) {
|
|
2311
2486
|
var __p = '';
|
|
2312
2487
|
__p += '<label>\n <span class="name"></span>\n <span class="inline_help"></span>\n</label>\n<input type="text" />\n<div class="validation"></div>\n';
|
|
@@ -2573,6 +2748,25 @@ this.pageflow._uiGlobalInterop = (function (exports, Marionette, _, $, I18n$1, B
|
|
|
2573
2748
|
*
|
|
2574
2749
|
* @param {Object} [options]
|
|
2575
2750
|
*
|
|
2751
|
+
* @param {number} [options.defaultValue]
|
|
2752
|
+
* Defaults value to display if property is not set.
|
|
2753
|
+
*
|
|
2754
|
+
* @param {number} [options.minValue=0]
|
|
2755
|
+
* Value when dragging slider to the very left.
|
|
2756
|
+
*
|
|
2757
|
+
* @param {number} [options.maxValue=100]
|
|
2758
|
+
* Value when dragging slider to the very right.
|
|
2759
|
+
*
|
|
2760
|
+
* @param {string} [options.unit="%"]
|
|
2761
|
+
* Unit to display after value.
|
|
2762
|
+
*
|
|
2763
|
+
* @param {function} [options.displayText]
|
|
2764
|
+
* Function that receives value and returns custom text to display as value.
|
|
2765
|
+
*
|
|
2766
|
+
* @param {boolean} [options.saveOnSlide]
|
|
2767
|
+
* Already update the model while dragging the handle - not only after
|
|
2768
|
+
* handle has been released.
|
|
2769
|
+
*
|
|
2576
2770
|
* @class
|
|
2577
2771
|
*/
|
|
2578
2772
|
|
|
@@ -2585,15 +2779,27 @@ this.pageflow._uiGlobalInterop = (function (exports, Marionette, _, $, I18n$1, B
|
|
|
2585
2779
|
value: '.value'
|
|
2586
2780
|
},
|
|
2587
2781
|
events: {
|
|
2588
|
-
'slidechange': 'save'
|
|
2782
|
+
'slidechange': 'save',
|
|
2783
|
+
'slide': 'handleSlide'
|
|
2589
2784
|
},
|
|
2590
2785
|
onRender: function onRender() {
|
|
2786
|
+
var _this = this;
|
|
2787
|
+
|
|
2591
2788
|
this.ui.widget.slider({
|
|
2592
|
-
animate: 'fast'
|
|
2593
|
-
|
|
2594
|
-
|
|
2789
|
+
animate: 'fast'
|
|
2790
|
+
});
|
|
2791
|
+
this.setupAttributeBinding('minValue', function (value) {
|
|
2792
|
+
return _this.updateSliderOption('min', value || 0);
|
|
2793
|
+
});
|
|
2794
|
+
this.setupAttributeBinding('maxValue', function (value) {
|
|
2795
|
+
return _this.updateSliderOption('max', value || 100);
|
|
2595
2796
|
});
|
|
2596
2797
|
this.load();
|
|
2798
|
+
this.listenTo(this.model, 'change:' + this.options.propertyName, this.load);
|
|
2799
|
+
},
|
|
2800
|
+
updateSliderOption: function updateSliderOption(name, value) {
|
|
2801
|
+
this.ui.widget.slider('option', name, value);
|
|
2802
|
+
this.updateText(this.ui.widget.slider('value'));
|
|
2597
2803
|
},
|
|
2598
2804
|
updateDisabled: function updateDisabled(disabled) {
|
|
2599
2805
|
this.$el.toggleClass('disabled', !!disabled);
|
|
@@ -2604,11 +2810,15 @@ this.pageflow._uiGlobalInterop = (function (exports, Marionette, _, $, I18n$1, B
|
|
|
2604
2810
|
this.ui.widget.slider('enable');
|
|
2605
2811
|
}
|
|
2606
2812
|
},
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
this.
|
|
2611
|
-
|
|
2813
|
+
handleSlide: function handleSlide(event, ui) {
|
|
2814
|
+
this.updateText(ui.value);
|
|
2815
|
+
|
|
2816
|
+
if (this.options.saveOnSlide) {
|
|
2817
|
+
this.save(event, ui);
|
|
2818
|
+
}
|
|
2819
|
+
},
|
|
2820
|
+
save: function save(event, ui) {
|
|
2821
|
+
this.model.set(this.options.propertyName, ui.value);
|
|
2612
2822
|
},
|
|
2613
2823
|
load: function load() {
|
|
2614
2824
|
var value;
|
|
@@ -2619,7 +2829,18 @@ this.pageflow._uiGlobalInterop = (function (exports, Marionette, _, $, I18n$1, B
|
|
|
2619
2829
|
value = 'defaultValue' in this.options ? this.options.defaultValue : 0;
|
|
2620
2830
|
}
|
|
2621
2831
|
|
|
2622
|
-
this.ui.widget.slider('option', 'value', value);
|
|
2832
|
+
this.ui.widget.slider('option', 'value', this.clampValue(value));
|
|
2833
|
+
this.updateText(value);
|
|
2834
|
+
},
|
|
2835
|
+
clampValue: function clampValue(value) {
|
|
2836
|
+
var min = this.ui.widget.slider('option', 'min');
|
|
2837
|
+
var max = this.ui.widget.slider('option', 'max');
|
|
2838
|
+
return Math.min(max, Math.max(min, value));
|
|
2839
|
+
},
|
|
2840
|
+
updateText: function updateText(value) {
|
|
2841
|
+
var unit = 'unit' in this.options ? this.options.unit : '%';
|
|
2842
|
+
var text = 'displayText' in this.options ? this.options.displayText(value) : value + unit;
|
|
2843
|
+
this.ui.value.text(text);
|
|
2623
2844
|
}
|
|
2624
2845
|
});
|
|
2625
2846
|
|
|
@@ -3013,7 +3234,10 @@ this.pageflow._uiGlobalInterop = (function (exports, Marionette, _, $, I18n$1, B
|
|
|
3013
3234
|
return view;
|
|
3014
3235
|
},
|
|
3015
3236
|
appendSubview: function appendSubview(view) {
|
|
3016
|
-
|
|
3237
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
3238
|
+
to = _ref.to;
|
|
3239
|
+
|
|
3240
|
+
return (to || this.$el).append(this.subview(view).el);
|
|
3017
3241
|
},
|
|
3018
3242
|
onClose: function onClose() {
|
|
3019
3243
|
if (this.subviews) {
|
|
@@ -3082,6 +3306,7 @@ this.pageflow._uiGlobalInterop = (function (exports, Marionette, _, $, I18n$1, B
|
|
|
3082
3306
|
exports.IconTableCellView = IconTableCellView;
|
|
3083
3307
|
exports.JsonInputView = JsonInputView;
|
|
3084
3308
|
exports.LabelOnlyView = LabelOnlyView;
|
|
3309
|
+
exports.NumberInputView = NumberInputView;
|
|
3085
3310
|
exports.Object = BaseObject;
|
|
3086
3311
|
exports.PresenceTableCellView = PresenceTableCellView;
|
|
3087
3312
|
exports.ProxyUrlInputView = ProxyUrlInputView;
|
|
@@ -3100,6 +3325,7 @@ this.pageflow._uiGlobalInterop = (function (exports, Marionette, _, $, I18n$1, B
|
|
|
3100
3325
|
exports.TooltipView = TooltipView;
|
|
3101
3326
|
exports.UrlDisplayView = UrlDisplayView;
|
|
3102
3327
|
exports.UrlInputView = UrlInputView;
|
|
3328
|
+
exports.attributeBinding = attributeBinding;
|
|
3103
3329
|
exports.cssModulesUtils = cssModulesUtils;
|
|
3104
3330
|
exports.i18nUtils = i18nUtils;
|
|
3105
3331
|
exports.inputView = inputView;
|
|
@@ -3111,4 +3337,4 @@ this.pageflow._uiGlobalInterop = (function (exports, Marionette, _, $, I18n$1, B
|
|
|
3111
3337
|
|
|
3112
3338
|
return exports;
|
|
3113
3339
|
|
|
3114
|
-
}({}, Backbone.Marionette, _, jQuery, I18n, Backbone, Backbone.ChildViewContainer, IScroll, jQuery, wysihtml5, Cocktail));
|
|
3340
|
+
}({}, Backbone.Marionette, _, jQuery, I18n, Backbone, Backbone.ChildViewContainer, IScroll, jQuery, wysihtml5, jQuery, Cocktail));
|
|
@@ -62,4 +62,14 @@ $pageflow-permalink-input-directory-background-position: null !default;
|
|
|
62
62
|
padding-left: 0;
|
|
63
63
|
flex: 1;
|
|
64
64
|
}
|
|
65
|
+
|
|
66
|
+
&.no_directories {
|
|
67
|
+
select {
|
|
68
|
+
display: none;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
input {
|
|
72
|
+
padding-left: $pageflow-permalink-input-directory-padding-left;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
65
75
|
}
|
|
@@ -10,6 +10,11 @@
|
|
|
10
10
|
@include icon-only-button;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
> button.ellipsis_icon {
|
|
14
|
+
@include fa-ellipsis-v-icon;
|
|
15
|
+
width: 31px;
|
|
16
|
+
}
|
|
17
|
+
|
|
13
18
|
&.full_width {
|
|
14
19
|
width: 100%;
|
|
15
20
|
|
|
@@ -26,7 +31,7 @@
|
|
|
26
31
|
@include transition(visibility 100ms, opacity 100ms);
|
|
27
32
|
|
|
28
33
|
position: absolute;
|
|
29
|
-
z-index:
|
|
34
|
+
z-index: 6;
|
|
30
35
|
padding: 1px;
|
|
31
36
|
border: solid 1px var(--ui-on-surface-color-lighter);
|
|
32
37
|
border-radius: rounded(sm);
|
|
@@ -162,11 +162,11 @@
|
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
.editor .help_button {
|
|
165
|
-
@include background-icon-
|
|
166
|
-
|
|
165
|
+
@include background-icon-left($color: var(--ui-primary-color),
|
|
166
|
+
$font-size: 16px, $left: 5px, $top: 50%);
|
|
167
167
|
@include help-circled-icon;
|
|
168
168
|
|
|
169
|
-
padding: 7px
|
|
169
|
+
padding: 7px 5px 0 28px;
|
|
170
170
|
float: right;
|
|
171
171
|
height: 20px;
|
|
172
172
|
cursor: pointer;
|
|
@@ -31,7 +31,7 @@ module Pageflow
|
|
|
31
31
|
|
|
32
32
|
authorize!(:update, chapter)
|
|
33
33
|
verify_edit_lock!(chapter.entry)
|
|
34
|
-
chapter.
|
|
34
|
+
chapter.update(chapter_params)
|
|
35
35
|
|
|
36
36
|
respond_with(chapter)
|
|
37
37
|
end
|
|
@@ -43,7 +43,7 @@ module Pageflow
|
|
|
43
43
|
authorize!(:edit_outline, storyline.entry)
|
|
44
44
|
verify_edit_lock!(storyline.entry)
|
|
45
45
|
params.require(:ids).each_with_index do |id, index|
|
|
46
|
-
entry.chapters.update(
|
|
46
|
+
entry.chapters.find(id).update(storyline_id: storyline.id, position: index)
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
head :no_content
|
|
@@ -85,11 +85,21 @@ module Pageflow
|
|
|
85
85
|
|
|
86
86
|
delegate_to_rack_app!(entry.entry_type.frontend_app) do |_status, headers, _body|
|
|
87
87
|
allow_iframe_for_embed(headers)
|
|
88
|
+
apply_cache_control(entry, headers)
|
|
88
89
|
end
|
|
89
90
|
end
|
|
90
91
|
|
|
91
92
|
def allow_iframe_for_embed(headers)
|
|
92
93
|
headers.except!('X-Frame-Options') if params[:embed]
|
|
93
94
|
end
|
|
95
|
+
|
|
96
|
+
def apply_cache_control(entry, headers)
|
|
97
|
+
config = Pageflow.config_for(entry)
|
|
98
|
+
|
|
99
|
+
return if config.public_entry_cache_control_header.blank?
|
|
100
|
+
return if entry.password_protected?
|
|
101
|
+
|
|
102
|
+
headers['Cache-Control'] = config.public_entry_cache_control_header
|
|
103
|
+
end
|
|
94
104
|
end
|
|
95
105
|
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module Pageflow
|
|
2
|
+
# @api private
|
|
3
|
+
class FeedsController < Pageflow::ApplicationController
|
|
4
|
+
def index
|
|
5
|
+
site = Site.for_request(request).first!
|
|
6
|
+
return head 404 unless site.feeds_enabled?
|
|
7
|
+
|
|
8
|
+
@feed = EntriesFeed.for(
|
|
9
|
+
site: site,
|
|
10
|
+
locale: params[:locale]
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
respond_to do |format|
|
|
14
|
+
format.atom
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -20,7 +20,7 @@ module Pageflow
|
|
|
20
20
|
|
|
21
21
|
authorize!(:update, page)
|
|
22
22
|
verify_edit_lock!(page.chapter.entry)
|
|
23
|
-
page.
|
|
23
|
+
page.update(page_params)
|
|
24
24
|
|
|
25
25
|
respond_with(page)
|
|
26
26
|
end
|
|
@@ -32,7 +32,7 @@ module Pageflow
|
|
|
32
32
|
authorize!(:edit_outline, entry.to_model)
|
|
33
33
|
verify_edit_lock!(chapter.entry)
|
|
34
34
|
params.require(:ids).each_with_index do |id, index|
|
|
35
|
-
entry.pages.update(
|
|
35
|
+
entry.pages.find(id).update(chapter_id: chapter.id, position: index)
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
head :no_content
|