pageflow 15.7.1 → 16.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (201) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +33 -243
  3. data/README.md +1 -9
  4. data/Rakefile +4 -1
  5. data/admins/pageflow/accounts.rb +12 -16
  6. data/admins/pageflow/entry.rb +57 -28
  7. data/admins/pageflow/entry_templates.rb +5 -7
  8. data/admins/pageflow/sites.rb +50 -0
  9. data/admins/pageflow/user.rb +7 -0
  10. data/app/assets/javascripts/pageflow/admin/entries.js +53 -4
  11. data/app/assets/stylesheets/pageflow/admin/permalink_input.scss +65 -0
  12. data/app/assets/stylesheets/pageflow/admin.scss +1 -0
  13. data/app/assets/stylesheets/pageflow/editor/base.scss +2 -6
  14. data/app/assets/stylesheets/pageflow/editor/dialogs.scss +2 -0
  15. data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +9 -0
  16. data/app/assets/stylesheets/pageflow/editor/info_box.scss +13 -3
  17. data/app/assets/stylesheets/pageflow/mixins/buttons.scss +1 -0
  18. data/app/assets/stylesheets/pageflow/page.scss +0 -2
  19. data/app/assets/stylesheets/pageflow/themes/default/page.scss +1 -1
  20. data/app/assets/stylesheets/pageflow/ui/forms.scss +4 -1
  21. data/app/controllers/pageflow/editor/file_import_controller.rb +32 -42
  22. data/app/controllers/pageflow/entries_controller.rb +27 -3
  23. data/app/helpers/pageflow/admin/permalinks_helper.rb +15 -0
  24. data/app/helpers/pageflow/common_entry_seed_helper.rb +1 -1
  25. data/app/helpers/pageflow/embed_code_helper.rb +1 -1
  26. data/app/helpers/pageflow/entries_helper.rb +25 -17
  27. data/app/helpers/pageflow/sites_helper.rb +11 -0
  28. data/app/helpers/pageflow/social_share_helper.rb +2 -2
  29. data/app/inputs/pageflow_permalink_input.rb +47 -0
  30. data/app/models/concerns/pageflow/permalinkable.rb +12 -0
  31. data/app/models/concerns/pageflow/reusable_file.rb +5 -0
  32. data/app/models/concerns/pageflow/uploadable_file.rb +4 -0
  33. data/app/models/pageflow/account.rb +7 -33
  34. data/app/models/pageflow/{cname_theming_request_scope.rb → cname_site_request_scope.rb} +3 -3
  35. data/app/models/pageflow/customized_theme.rb +5 -3
  36. data/app/models/pageflow/entry.rb +8 -4
  37. data/app/models/pageflow/entry_at_revision.rb +4 -3
  38. data/app/models/pageflow/entry_duplicate.rb +8 -1
  39. data/app/models/pageflow/entry_template.rb +4 -4
  40. data/app/models/pageflow/home_button.rb +7 -7
  41. data/app/models/pageflow/image_file_url_templates.rb +2 -2
  42. data/app/models/pageflow/permalink.rb +39 -0
  43. data/app/models/pageflow/permalink_directory.rb +10 -0
  44. data/app/models/pageflow/published_entry.rb +19 -2
  45. data/app/models/pageflow/revision.rb +1 -1
  46. data/app/models/pageflow/site.rb +59 -0
  47. data/app/models/pageflow/theme_customization.rb +1 -1
  48. data/app/models/pageflow/theme_customization_file.rb +6 -1
  49. data/app/policies/pageflow/account_policy.rb +2 -2
  50. data/app/policies/pageflow/entry_policy.rb +2 -2
  51. data/app/policies/pageflow/entry_template_policy.rb +1 -1
  52. data/app/policies/pageflow/{theming_policy.rb → site_policy.rb} +13 -11
  53. data/app/views/admin/accounts/_entry_template_details.html.arb +1 -1
  54. data/app/views/admin/accounts/_form.html.erb +4 -22
  55. data/app/views/admin/accounts/_site_defaults_inline_help.html.erb +5 -0
  56. data/app/views/admin/entries/_form.html.erb +11 -12
  57. data/app/views/admin/entries/_permalink_inputs.html.erb +6 -0
  58. data/app/views/admin/entries/_site_input.html.erb +15 -0
  59. data/app/views/admin/entries/{entry_type_name_input.html.erb → entry_site_and_type_name_input.html.erb} +3 -0
  60. data/app/views/admin/entries/permalink_inputs.html.erb +7 -0
  61. data/app/views/admin/entry_templates/_form.html.erb +5 -5
  62. data/app/views/admin/sites/_attributes_table.html.arb +9 -0
  63. data/app/views/admin/sites/_fields.html.erb +17 -0
  64. data/app/views/admin/sites/_form.html.erb +5 -0
  65. data/app/views/components/pageflow/admin/entries_tab.rb +1 -2
  66. data/app/views/components/pageflow/admin/entry_templates_tab.rb +10 -11
  67. data/app/views/components/pageflow/admin/features_tab.rb +1 -1
  68. data/app/views/components/pageflow/admin/sites_tab.rb +32 -0
  69. data/app/views/components/pageflow/admin/users_tab.rb +1 -2
  70. data/app/views/pageflow/editor/entries/seed.json.erb +1 -1
  71. data/app/views/pageflow/editor/file_import/start_import_job.json.jbuilder +10 -0
  72. data/app/views/pageflow/editor/sites/_site.json.jbuilder +1 -0
  73. data/app/views/pageflow/entries/{_theming.css.erb → _site.css.erb} +0 -0
  74. data/app/views/pageflow/entries/stylesheet.css.erb +1 -1
  75. data/app/views/pageflow/files/_file.json.jbuilder +1 -0
  76. data/app/views/pageflow/social_share/_entry_meta_tags.html.erb +1 -1
  77. data/app/views/pageflow/social_share/_page_meta_tags.html.erb +1 -1
  78. data/config/initializers/admin_resource_tabs.rb +29 -12
  79. data/config/initializers/mime_types.rb +1 -0
  80. data/config/locales/de.yml +19 -17
  81. data/config/locales/en.yml +19 -17
  82. data/config/routes.rb +8 -5
  83. data/db/migrate/20221024100724_create_pageflow_permalink_directories.rb +10 -0
  84. data/db/migrate/20221025074049_add_permalink_attributes_to_entries.rb +5 -0
  85. data/db/migrate/20221027065022_create_pageflow_permalinks.rb +12 -0
  86. data/db/migrate/20221215101134_rename_theming_to_site.rb +9 -0
  87. data/db/migrate/20221215120856_associate_entry_templates_with_sites.rb +34 -0
  88. data/db/migrate/20221219203023_add_name_to_sites.rb +5 -0
  89. data/db/migrate/20230103155934_associate_theme_customizations_with_sites.rb +27 -0
  90. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +176 -179
  91. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +49 -7
  92. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-client.js +5 -5
  93. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-server.js +1 -1
  94. data/entry_types/paged/config/initializers/features.rb +2 -0
  95. data/entry_types/paged/config/locales/{new/help.de.yml → de.yml} +74 -65
  96. data/entry_types/paged/config/locales/{new/help.en.yml → en.yml} +66 -56
  97. data/entry_types/scrolled/app/helpers/pageflow_scrolled/favicon_helper.rb +39 -13
  98. data/entry_types/scrolled/app/helpers/pageflow_scrolled/generated_media_queries_helper.rb +55 -0
  99. data/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb +6 -2
  100. data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_head.html.erb +2 -0
  101. data/entry_types/scrolled/app/views/pageflow_scrolled/entries/_manifest.json.jbuilder +16 -0
  102. data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +9 -3
  103. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry.json.jbuilder +5 -5
  104. data/entry_types/scrolled/app/views/pageflow_scrolled/favicons/_entry.html.erb +16 -10
  105. data/entry_types/scrolled/config/locales/de.yml +265 -76
  106. data/entry_types/scrolled/config/locales/en.yml +266 -77
  107. data/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb +3 -3
  108. data/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +14 -0
  109. data/entry_types/scrolled/lib/pageflow_scrolled/react_widget_type.rb +1 -1
  110. data/entry_types/scrolled/lib/pageflow_scrolled/seeds.rb +1 -1
  111. data/entry_types/scrolled/lib/pageflow_scrolled/web_app_manifest.rb +11 -0
  112. data/entry_types/scrolled/lib/pageflow_scrolled.rb +39 -1
  113. data/entry_types/scrolled/lib/tasks/pageflow_scrolled/storybook.rake +3 -2
  114. data/entry_types/scrolled/package/contentElements-editor.js +124 -38
  115. data/entry_types/scrolled/package/contentElements-frontend.css +1 -1
  116. data/entry_types/scrolled/package/contentElements-frontend.js +321 -27
  117. data/entry_types/scrolled/package/editor.js +1345 -739
  118. data/entry_types/scrolled/package/frontend/EditableInlineText.module-14c7b097.js +5314 -0
  119. data/entry_types/scrolled/package/frontend/{PhonePlatformContext-9fb97827.js → PhonePlatformContext-f6093cc6.js} +87 -223
  120. data/entry_types/scrolled/package/frontend/{Viewer-e2290ea0.js → Viewer-b6becc57.js} +6 -40
  121. data/entry_types/scrolled/package/frontend/arrowRight-78a7cee4.js +42 -0
  122. data/entry_types/scrolled/package/frontend/{components-6ab26015.js → components-b3160dd7.js} +546 -361
  123. data/entry_types/scrolled/package/frontend/index.css +1 -1
  124. data/entry_types/scrolled/package/frontend/index.js +398 -3692
  125. data/entry_types/scrolled/package/package.json +3 -2
  126. data/entry_types/scrolled/package/testHelpers.js +12 -2
  127. data/entry_types/scrolled/package/widgets/defaultNavigation.css +2 -2
  128. data/entry_types/scrolled/package/widgets/defaultNavigation.js +50 -40
  129. data/entry_types/scrolled/spec/fixtures/image.ico +0 -0
  130. data/lib/pageflow/ability_mixin.rb +16 -8
  131. data/lib/pageflow/admin/attributes_table_rows.rb +1 -1
  132. data/lib/pageflow/admin/form_inputs.rb +1 -1
  133. data/lib/pageflow/admin/tabs.rb +1 -1
  134. data/lib/pageflow/configuration/permissions.rb +3 -3
  135. data/lib/pageflow/configuration.rb +17 -17
  136. data/lib/pageflow/entry_export_import/entry_serialization.rb +1 -1
  137. data/lib/pageflow/entry_type.rb +6 -2
  138. data/lib/pageflow/primary_domain_entry_redirect.rb +7 -7
  139. data/lib/pageflow/seeds.rb +10 -10
  140. data/lib/pageflow/theme_customizations.rb +10 -10
  141. data/lib/pageflow/version.rb +1 -1
  142. data/package/editor.js +129 -156
  143. data/package/frontend.js +19 -2
  144. data/package/testHelpers.js +39 -6
  145. data/spec/factories/accounts.rb +5 -2
  146. data/spec/factories/draft_entries.rb +2 -2
  147. data/spec/factories/entries.rb +18 -1
  148. data/spec/factories/entry_templates.rb +1 -1
  149. data/spec/factories/permalink_directory.rb +6 -0
  150. data/spec/factories/permalinks.rb +4 -0
  151. data/spec/factories/published_entries.rb +4 -2
  152. data/spec/factories/sites.rb +9 -0
  153. metadata +50 -62
  154. data/app/assets/javascripts/pageflow/dist/editor.js +0 -11890
  155. data/app/assets/javascripts/pageflow/dist/frontend.js +0 -5800
  156. data/app/assets/javascripts/pageflow/dist/react-client.js +0 -22
  157. data/app/assets/javascripts/pageflow/dist/react-server.js +0 -19
  158. data/app/helpers/pageflow/themings_helper.rb +0 -11
  159. data/app/models/pageflow/theming.rb +0 -29
  160. data/app/views/admin/accounts/_theming_defaults_inline_help.html.erb +0 -5
  161. data/app/views/admin/accounts/_theming_details.html.arb +0 -5
  162. data/app/views/pageflow/editor/themings/_theming.json.jbuilder +0 -1
  163. data/entry_types/paged/config/locales/new/video_contain.de.yml +0 -7
  164. data/entry_types/paged/config/locales/new/video_contain.en.yml +0 -7
  165. data/entry_types/scrolled/config/locales/new/before_after_slider.de.yml +0 -8
  166. data/entry_types/scrolled/config/locales/new/before_after_slider.en.yml +0 -8
  167. data/entry_types/scrolled/config/locales/new/center_ragged.de.yml +0 -8
  168. data/entry_types/scrolled/config/locales/new/center_ragged.en.yml +0 -9
  169. data/entry_types/scrolled/config/locales/new/consent.de.yml +0 -25
  170. data/entry_types/scrolled/config/locales/new/consent.en.yml +0 -24
  171. data/entry_types/scrolled/config/locales/new/content_element_categories.de.yml +0 -39
  172. data/entry_types/scrolled/config/locales/new/content_element_categories.en.yml +0 -39
  173. data/entry_types/scrolled/config/locales/new/default_transition.de.yml +0 -14
  174. data/entry_types/scrolled/config/locales/new/default_transition.en.yml +0 -14
  175. data/entry_types/scrolled/config/locales/new/header_line_breaks.de.yml +0 -28
  176. data/entry_types/scrolled/config/locales/new/header_line_breaks.en.yml +0 -27
  177. data/entry_types/scrolled/config/locales/new/header_size.de.yml +0 -17
  178. data/entry_types/scrolled/config/locales/new/header_size.en.yml +0 -17
  179. data/entry_types/scrolled/config/locales/new/iframe_embed.de.yml +0 -39
  180. data/entry_types/scrolled/config/locales/new/iframe_embed.en.yml +0 -39
  181. data/entry_types/scrolled/config/locales/new/inline_loops.de.yml +0 -26
  182. data/entry_types/scrolled/config/locales/new/inline_loops.en.yml +0 -26
  183. data/entry_types/scrolled/config/locales/new/portrait_inline_image.de.yml +0 -9
  184. data/entry_types/scrolled/config/locales/new/portrait_inline_image.en.yml +0 -9
  185. data/entry_types/scrolled/config/locales/new/section_width.de.yml +0 -10
  186. data/entry_types/scrolled/config/locales/new/section_width.en.yml +0 -10
  187. data/entry_types/scrolled/config/locales/new/typography_variants.de.yml +0 -7
  188. data/entry_types/scrolled/config/locales/new/typography_variants.en.yml +0 -7
  189. data/entry_types/scrolled/config/locales/new/video_embed_poster.de.yml +0 -8
  190. data/entry_types/scrolled/config/locales/new/video_embed_poster.en.yml +0 -8
  191. data/entry_types/scrolled/config/locales/new/waveform_styles.de.yml +0 -11
  192. data/entry_types/scrolled/config/locales/new/waveform_styles.en.yml +0 -12
  193. data/entry_types/scrolled/config/locales/new/widgets.de.yml +0 -6
  194. data/entry_types/scrolled/config/locales/new/widgets.en.yml +0 -6
  195. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/browserconfig.xml +0 -9
  196. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/mstile-150x150.png +0 -0
  197. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/safari-pinned-tab.svg +0 -46
  198. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/site.webmanifest +0 -19
  199. data/entry_types/scrolled/package/frontend/EditableInlineText.module-b9923660.js +0 -993
  200. data/entry_types/scrolled/package/frontend/usePhonePlatform-2857c22b.js +0 -34
  201. data/spec/factories/themings.rb +0 -7
data/package/editor.js CHANGED
@@ -2684,10 +2684,10 @@ var EditLockContainer = Backbone.Model.extend({
2684
2684
  handleError: function handleError() {}
2685
2685
  });
2686
2686
 
2687
- var Theming = Backbone.Model.extend({
2688
- modelName: 'theming',
2689
- i18nKey: 'pageflow/theming',
2690
- collectionName: 'themings'
2687
+ var Site = Backbone.Model.extend({
2688
+ modelName: 'site',
2689
+ i18nKey: 'pageflow/site',
2690
+ collectionName: 'sites'
2691
2691
  });
2692
2692
 
2693
2693
  var ChapterConfiguration = Configuration.extend({
@@ -3496,40 +3496,28 @@ var FileImport = Backbone.Model.extend({
3496
3496
  },
3497
3497
  startImportJob: function startImportJob(collectionName) {
3498
3498
  this.action = 'start_import_job';
3499
- var selections = state.files[collectionName].uploadable();
3500
- var jsonSelections = selections.toJSON();
3501
- jsonSelections.forEach(function (selection, index) {
3502
- selection['url'] = selections.at(index).get('source_url');
3503
- });
3499
+ var fileType = editor.fileTypes.findByCollectionName(collectionName);
3504
3500
  var currentEntry = this.get('currentEntry');
3505
- this.fetch({
3506
- data: {
3501
+ var selections = currentEntry.getFileCollection(fileType).uploadable();
3502
+ this.sync('create', this, {
3503
+ attrs: {
3507
3504
  collection: collectionName,
3508
- files: jsonSelections
3505
+ files: selections.toJSON().map(function (item, index) {
3506
+ return _objectSpread2(_objectSpread2({}, item), {}, {
3507
+ url: selections.at(index).get('source_url')
3508
+ });
3509
+ })
3509
3510
  },
3510
- postData: true,
3511
- type: 'POST'
3512
- }).then(function (data) {
3513
- if (data && data.data) {
3514
- var files = data.data;
3515
-
3516
- if (files && files.length > 0) {
3517
- files.forEach(function (file) {
3518
- var localFile = selections.find(function (cFile) {
3519
- return cFile.get('attachment_on_s3_file_name') == file.file_name && cFile.get('source_url') == file.source_url && cFile.get('state') == 'uploadable';
3520
- });
3521
-
3522
- if (localFile) {
3523
- state.files[collectionName].remove(localFile);
3524
- var fileType = editor.fileTypes.findByUpload(file);
3525
- file = new fileType.model(file, {
3526
- fileType: fileType
3527
- });
3528
- currentEntry.getFileCollection(fileType).add(file);
3529
- file.set('state', 'uploading');
3530
- }
3511
+ success: function success(items) {
3512
+ items.forEach(function (item) {
3513
+ var file = selections.find(function (file) {
3514
+ return file.get('source_url') == item.source_url;
3531
3515
  });
3532
- }
3516
+
3517
+ if (file) {
3518
+ file.set(item.attributes);
3519
+ }
3520
+ });
3533
3521
  }
3534
3522
  });
3535
3523
  }
@@ -3915,11 +3903,11 @@ __p += '<div class="blank_slate">\n <p>\n ' +
3915
3903
  ((__t = ( I18n.t('pageflow.editor.templates.confirm_encoding.link_to_progress', {
3916
3904
  link: '<a href="#/files/video_files">'+I18n.t('pageflow.editor.templates.confirm_encoding.manage_files')+'</a>'})
3917
3905
  )) == null ? '' : __t) +
3918
- '\n </p>\n</div>\n\n<div class="intro">\n</div>\n\n<div class="video_files_panel">\n <h2>' +
3906
+ '\n </p>\n</div>\n\n<div class="intro">\n</div>\n\n<div class="video_files_panel">\n <h2 class="sidebar-header">\n ' +
3919
3907
  ((__t = ( I18n.t('pageflow.editor.templates.confirm_encoding.videos_tab') )) == null ? '' : __t) +
3920
- '</h2>\n</div>\n\n<div class="audio_files_panel">\n <h2>' +
3908
+ '\n </h2>\n</div>\n\n<div class="audio_files_panel">\n <h2 class="sidebar-header">\n ' +
3921
3909
  ((__t = ( I18n.t('pageflow.editor.templates.confirm_encoding.audios_tab') )) == null ? '' : __t) +
3922
- '</h2>\n</div>\n\n<div class="summary">\n</div>\n<button class="confirm">' +
3910
+ '\n </h2>\n</div>\n\n<div class="summary">\n</div>\n<button class="confirm">' +
3923
3911
  ((__t = ( I18n.t('pageflow.editor.templates.confirm_encoding.confirm_button') )) == null ? '' : __t) +
3924
3912
  '</button>\n';
3925
3913
  return __p
@@ -4164,6 +4152,10 @@ var EditEntryView = Marionette.Layout.extend({
4164
4152
  link.data('path', options.path);
4165
4153
  }
4166
4154
 
4155
+ if (options.id) {
4156
+ link.attr('data-main-menu-item', options.id);
4157
+ }
4158
+
4167
4159
  link.text(I18n$1.t(options.translationKey));
4168
4160
 
4169
4161
  if (options.click) {
@@ -4190,9 +4182,6 @@ var WidgetItemView = Marionette.Layout.extend({
4190
4182
  regions: {
4191
4183
  widgetTypeContainer: '.widget_type'
4192
4184
  },
4193
- ui: {
4194
- role: 'h2'
4195
- },
4196
4185
  modelEvents: {
4197
4186
  'change:type_name': 'update'
4198
4187
  },
@@ -4459,12 +4448,12 @@ var DropDownButtonItemView = Marionette.ItemView.extend({
4459
4448
  label: '> .label'
4460
4449
  },
4461
4450
  events: {
4462
- 'click > a': function clickA() {
4451
+ 'click > a': function clickA(event) {
4463
4452
  if (!this.model.get('disabled')) {
4464
4453
  this.model.selected();
4465
4454
  }
4466
4455
 
4467
- return false;
4456
+ event.preventDefault();
4468
4457
  }
4469
4458
  },
4470
4459
  modelEvents: {
@@ -4518,6 +4507,13 @@ return __p
4518
4507
  * @param {Backbone.Collection} options.items
4519
4508
  * Collection of menu items. See below for supported attributes.
4520
4509
  *
4510
+ * @param {boolean} [options.fullWidth]
4511
+ * Make button and drop down span 100% of available width.
4512
+ *
4513
+ * @param {boolean} [options.openOnClick]
4514
+ * Require click to open menu. By default, menu opens on when the
4515
+ * mouse enters the button.
4516
+ *
4521
4517
  * ## Item Models
4522
4518
  *
4523
4519
  * The following model attributes can be used to control the
@@ -4542,17 +4538,19 @@ var DropDownButtonView = Marionette.ItemView.extend({
4542
4538
  button: '> button',
4543
4539
  menu: '.drop_down_button_menu'
4544
4540
  },
4545
- events: {
4546
- 'mouseenter': function mouseenter() {
4541
+ events: function events() {
4542
+ var _ref;
4543
+
4544
+ return _ref = {}, _defineProperty(_ref, this.options.openOnClick ? 'click' : 'mouseenter', function () {
4547
4545
  this.positionMenu();
4548
4546
  this.showMenu();
4549
- },
4550
- 'mouseleave': function mouseleave() {
4547
+ }), _defineProperty(_ref, 'mouseleave', function mouseleave() {
4551
4548
  this.scheduleHideMenu();
4552
- }
4549
+ }), _ref;
4553
4550
  },
4554
4551
  onRender: function onRender() {
4555
4552
  var view = this;
4553
+ this.$el.toggleClass('full_width', !!this.options.fullWidth);
4556
4554
  this.ui.button.toggleClass('has_icon_and_text', !!this.options.label);
4557
4555
  this.ui.button.toggleClass('has_icon_only', !this.options.label);
4558
4556
  this.ui.button.text(this.options.label);
@@ -4565,6 +4563,9 @@ var DropDownButtonView = Marionette.ItemView.extend({
4565
4563
  },
4566
4564
  'mouseleave': function mouseleave() {
4567
4565
  view.scheduleHideMenu();
4566
+ },
4567
+ 'click': function click() {
4568
+ view.hideMenu();
4568
4569
  }
4569
4570
  });
4570
4571
  this.ui.menu.appendTo('#editor_menu_container');
@@ -4576,13 +4577,15 @@ var DropDownButtonView = Marionette.ItemView.extend({
4576
4577
  var offset = this.$el.offset();
4577
4578
  this.ui.menu.css({
4578
4579
  top: offset.top + this.$el.height(),
4579
- left: offset.left
4580
+ left: offset.left,
4581
+ width: this.options.fullWidth ? this.$el.width() : null
4580
4582
  });
4581
4583
  },
4582
4584
  showMenu: function showMenu() {
4583
4585
  this.ensureOnlyOneDropDownButtonShowsMenu();
4584
4586
  clearTimeout(this.hideMenuTimeout);
4585
4587
  this.ui.menu.addClass('is_visible');
4588
+ this.ui.button.addClass('hover');
4586
4589
  },
4587
4590
  ensureOnlyOneDropDownButtonShowsMenu: function ensureOnlyOneDropDownButtonShowsMenu() {
4588
4591
  if (DropDownButtonView.currentlyShowingMenu) {
@@ -4595,6 +4598,7 @@ var DropDownButtonView = Marionette.ItemView.extend({
4595
4598
  clearTimeout(this.hideMenuTimeout);
4596
4599
 
4597
4600
  if (!this.isClosed) {
4601
+ this.ui.button.removeClass('hover');
4598
4602
  this.ui.menu.removeClass('is_visible');
4599
4603
  }
4600
4604
  },
@@ -4654,16 +4658,6 @@ var FileThumbnailView = Marionette.ItemView.extend({
4654
4658
  }
4655
4659
  });
4656
4660
 
4657
- function template$f(data) {
4658
- var __t, __p = '';
4659
- __p += '<label>\n <span class="name"></span>\n <span class="inline_help"></span>\n</label>\n<div class="file_thumbnail"></div>\n<div class="file_name"></div>\n\n<a href="" class="unset" title="' +
4660
- ((__t = ( I18n.t('pageflow.ui.templates.inputs.file_input.reset') )) == null ? '' : __t) +
4661
- '"></a>\n<a href="" class="choose" title="' +
4662
- ((__t = ( I18n.t('pageflow.ui.templates.inputs.file_input.edit') )) == null ? '' : __t) +
4663
- '"></a>\n';
4664
- return __p
4665
- }
4666
-
4667
4661
  /**
4668
4662
  * Input view to reference a file.
4669
4663
  *
@@ -4672,7 +4666,9 @@ return __p
4672
4666
 
4673
4667
  var FileInputView = Marionette.ItemView.extend({
4674
4668
  mixins: [inputView],
4675
- template: template$f,
4669
+ template: function template() {
4670
+ return "\n <label>\n <span class=\"name\"></span>\n <span class=\"inline_help\"></span>\n </label>\n <div class=\"file_thumbnail\"></div>\n <div class=\"file_name\"></div>\n\n <a href=\"\"\n class=\"unset\"\n title=\"".concat(I18n$1.t('pageflow.ui.templates.inputs.file_input.reset'), "\">\n </a>\n <a href=\"\"\n class=\"choose\"\n title=\"").concat(I18n$1.t('pageflow.ui.templates.inputs.file_input.edit'), "\">\n </a>\n ");
4671
+ },
4676
4672
  className: 'file_input',
4677
4673
  ui: {
4678
4674
  fileName: '.file_name',
@@ -4715,7 +4711,8 @@ var FileInputView = Marionette.ItemView.extend({
4715
4711
 
4716
4712
  if (dropDownMenuItems.length) {
4717
4713
  this.appendSubview(new DropDownButtonView({
4718
- items: dropDownMenuItems
4714
+ items: dropDownMenuItems,
4715
+ openOnClick: true
4719
4716
  }));
4720
4717
  }
4721
4718
  },
@@ -4870,14 +4867,14 @@ FileInputView.DefaultTextTrackFileMenuItem = Backbone.Model.extend({
4870
4867
  }
4871
4868
  });
4872
4869
 
4873
- function template$g(data) {
4870
+ function template$f(data) {
4874
4871
  var __p = '';
4875
4872
  __p += '<div class="spinner">\n <div class="rect1"></div>\n <div class="rect2"></div>\n <div class="rect3"></div>\n <div class="rect4"></div>\n <div class="rect5"></div>\n</div>\n';
4876
4873
  return __p
4877
4874
  }
4878
4875
 
4879
4876
  var LoadingView = Marionette.ItemView.extend({
4880
- template: template$g,
4877
+ template: template$f,
4881
4878
  className: 'loading',
4882
4879
  tagName: 'li'
4883
4880
  });
@@ -4900,7 +4897,7 @@ var selectableView = {
4900
4897
  }
4901
4898
  };
4902
4899
 
4903
- function template$h(data) {
4900
+ function template$g(data) {
4904
4901
  var __t, __p = '';
4905
4902
  __p += '<span class="theme_name"></span>\n<span class="button_or_checkmark">\n <p class="theme_in_use"></p>\n <a class="use_theme">' +
4906
4903
  ((__t = ( I18n.t('pageflow.editor.templates.theme.use') )) == null ? '' : __t) +
@@ -4910,7 +4907,7 @@ return __p
4910
4907
 
4911
4908
  var ThemeItemView = Marionette.ItemView.extend({
4912
4909
  tagName: 'li',
4913
- template: template$h,
4910
+ template: template$g,
4914
4911
  className: 'theme_item',
4915
4912
  mixins: [selectableView],
4916
4913
  selectionAttribute: 'theme',
@@ -4941,7 +4938,7 @@ var ThemeItemView = Marionette.ItemView.extend({
4941
4938
  }
4942
4939
  });
4943
4940
 
4944
- function template$i(data) {
4941
+ function template$h(data) {
4945
4942
  var __t, __p = '';
4946
4943
  __p += '<div class="box">\n <h1 class="dialog-header">\n ' +
4947
4944
  ((__t = ( I18n.t('pageflow.editor.templates.change_theme_dialog.header') )) == null ? '' : __t) +
@@ -4956,7 +4953,7 @@ return __p
4956
4953
  }
4957
4954
 
4958
4955
  var ChangeThemeDialogView = Marionette.ItemView.extend({
4959
- template: template$i,
4956
+ template: template$h,
4960
4957
  className: 'change_theme dialog editor',
4961
4958
  mixins: [dialogView],
4962
4959
  ui: {
@@ -5024,14 +5021,14 @@ ChangeThemeDialogView.changeTheme = function (options) {
5024
5021
  }).promise();
5025
5022
  };
5026
5023
 
5027
- function template$j(data) {
5024
+ function template$i(data) {
5028
5025
  var __p = '';
5029
5026
  __p += '\n';
5030
5027
  return __p
5031
5028
  }
5032
5029
 
5033
5030
  var StaticThumbnailView = Marionette.ItemView.extend({
5034
- template: template$j,
5031
+ template: template$i,
5035
5032
  className: 'static_thumbnail',
5036
5033
  modelEvents: {
5037
5034
  'change:configuration': 'update'
@@ -5095,7 +5092,7 @@ var ModelThumbnailView = Marionette.View.extend({
5095
5092
  }
5096
5093
  });
5097
5094
 
5098
- function template$k(data) {
5095
+ function template$j(data) {
5099
5096
  var __p = '';
5100
5097
  __p += '<label>\n <span class="name"></span>\n <span class="inline_help"></span>\n</label>\n<div class="title"></div>\n<button class="unset"></button>\n<button class="choose"></button>\n';
5101
5098
  return __p
@@ -5111,7 +5108,7 @@ var ReferenceInputView = Marionette.ItemView.extend(
5111
5108
  /** @lends ReferenceInputView.prototype */
5112
5109
  {
5113
5110
  mixins: [inputView],
5114
- template: template$k,
5111
+ template: template$j,
5115
5112
  className: 'reference_input',
5116
5113
  ui: {
5117
5114
  title: '.title',
@@ -5210,7 +5207,7 @@ var ThemeInputView = ReferenceInputView.extend({
5210
5207
  }
5211
5208
  });
5212
5209
 
5213
- function template$l(data) {
5210
+ function template$k(data) {
5214
5211
  var __t, __p = '';
5215
5212
  __p += '<a class="back">' +
5216
5213
  ((__t = ( I18n.t('pageflow.editor.templates.edit_meta_data.outline') )) == null ? '' : __t) +
@@ -5223,7 +5220,7 @@ return __p
5223
5220
  }
5224
5221
 
5225
5222
  var EditMetaDataView = Marionette.Layout.extend({
5226
- template: template$l,
5223
+ template: template$k,
5227
5224
  className: 'edit_meta_data',
5228
5225
  mixins: [failureIndicatingView],
5229
5226
  regions: {
@@ -5275,7 +5272,7 @@ var EditMetaDataView = Marionette.Layout.extend({
5275
5272
  configurationEditor.tab('widgets', function () {
5276
5273
  editor.entryType.appearanceInputs && editor.entryType.appearanceInputs(this, {
5277
5274
  entry: entry,
5278
- theming: state.theming
5275
+ site: state.site
5279
5276
  });
5280
5277
  entry.widgets && this.view(EditWidgetsView, {
5281
5278
  model: entry,
@@ -5323,7 +5320,7 @@ var EditMetaDataView = Marionette.Layout.extend({
5323
5320
  }
5324
5321
  });
5325
5322
 
5326
- function template$m(data) {
5323
+ function template$l(data) {
5327
5324
  var __t, __p = '';
5328
5325
  __p += '<a class="back">' +
5329
5326
  ((__t = ( I18n.t('pageflow.editor.templates.edit_widget.back') )) == null ? '' : __t) +
@@ -5332,7 +5329,7 @@ return __p
5332
5329
  }
5333
5330
 
5334
5331
  var EditWidgetView = Marionette.ItemView.extend({
5335
- template: template$m,
5332
+ template: template$l,
5336
5333
  className: 'edit_widget',
5337
5334
  events: {
5338
5335
  'click a.back': function clickABack() {
@@ -5364,7 +5361,7 @@ var loadable = modelLifecycleTrackingView({
5364
5361
  }
5365
5362
  });
5366
5363
 
5367
- function template$n(data) {
5364
+ function template$m(data) {
5368
5365
  var __p = '';
5369
5366
  __p += '<span class="file_thumbnail"></span>\n\n<span class="file_name"></span>\n';
5370
5367
  return __p
@@ -5372,7 +5369,7 @@ return __p
5372
5369
 
5373
5370
  var ExplorerFileItemView = Marionette.ItemView.extend({
5374
5371
  tagName: 'li',
5375
- template: template$n,
5372
+ template: template$m,
5376
5373
  mixins: [loadable, selectableView],
5377
5374
  selectionAttribute: 'file',
5378
5375
  ui: {
@@ -5409,14 +5406,14 @@ var ExplorerFileItemView = Marionette.ItemView.extend({
5409
5406
  }
5410
5407
  });
5411
5408
 
5412
- function template$o(data) {
5409
+ function template$n(data) {
5413
5410
  var __p = '';
5414
5411
  __p += '<a href="">\n <span class="title"></span>\n</a>\n';
5415
5412
  return __p
5416
5413
  }
5417
5414
 
5418
5415
  var OtherEntryItemView = Marionette.ItemView.extend({
5419
- template: template$o,
5416
+ template: template$n,
5420
5417
  className: 'other_entry_item',
5421
5418
  tagName: 'li',
5422
5419
  mixins: [selectableView],
@@ -5431,7 +5428,7 @@ var OtherEntryItemView = Marionette.ItemView.extend({
5431
5428
  }
5432
5429
  });
5433
5430
 
5434
- function template$p(data) {
5431
+ function template$o(data) {
5435
5432
  var __t, __p = '';
5436
5433
  __p +=
5437
5434
  ((__t = ( I18n.t('pageflow.editor.templates.other_entries_blank_slate.none_available') )) == null ? '' : __t) +
@@ -5457,7 +5454,7 @@ var OtherEntriesCollectionView = Marionette.View.extend({
5457
5454
  selection: this.options.selection
5458
5455
  },
5459
5456
  blankSlateViewConstructor: Marionette.ItemView.extend({
5460
- template: template$p,
5457
+ template: template$o,
5461
5458
  tagName: 'li',
5462
5459
  className: 'blank_slate'
5463
5460
  }),
@@ -5468,7 +5465,7 @@ var OtherEntriesCollectionView = Marionette.View.extend({
5468
5465
  }
5469
5466
  });
5470
5467
 
5471
- function template$q(data) {
5468
+ function template$p(data) {
5472
5469
  var __t, __p = '';
5473
5470
  __p += '<div class="box">\n <h1 class="dialog-header">\n ' +
5474
5471
  ((__t = ( I18n.t('pageflow.editor.templates.files_explorer.reuse_files') )) == null ? '' : __t) +
@@ -5497,7 +5494,7 @@ return __p
5497
5494
  }
5498
5495
 
5499
5496
  var FilesExplorerView = Marionette.ItemView.extend({
5500
- template: template$q,
5497
+ template: template$p,
5501
5498
  className: 'files_explorer editor dialog',
5502
5499
  mixins: [dialogView],
5503
5500
  ui: {
@@ -5584,7 +5581,7 @@ FilesExplorerView.open = function (options) {
5584
5581
  app.dialogRegion.show(new FilesExplorerView(options));
5585
5582
  };
5586
5583
 
5587
- function template$r(data) {
5584
+ function template$q(data) {
5588
5585
  var __p = '';
5589
5586
  __p += '<th></th>\n<td></td>';
5590
5587
  return __p
@@ -5592,7 +5589,7 @@ return __p
5592
5589
 
5593
5590
  var FileMetaDataItemView = Marionette.ItemView.extend({
5594
5591
  tagName: 'tr',
5595
- template: template$r,
5592
+ template: template$q,
5596
5593
  ui: {
5597
5594
  label: 'th',
5598
5595
  value: 'td'
@@ -5614,7 +5611,7 @@ var FileMetaDataItemView = Marionette.ItemView.extend({
5614
5611
  }
5615
5612
  });
5616
5613
 
5617
- function template$s(data) {
5614
+ function template$r(data) {
5618
5615
  var __p = '';
5619
5616
  __p += '<p class="percent"></p>\n<p class="description"></p>\n<p class="error_message"></p>';
5620
5617
  return __p
@@ -5623,7 +5620,7 @@ return __p
5623
5620
  var FileStageItemView = Marionette.ItemView.extend({
5624
5621
  tagName: 'li',
5625
5622
  className: 'file_stage_item',
5626
- template: template$s,
5623
+ template: template$r,
5627
5624
  ui: {
5628
5625
  description: '.description',
5629
5626
  percent: '.percent',
@@ -5664,7 +5661,7 @@ var FileStageItemView = Marionette.ItemView.extend({
5664
5661
  }
5665
5662
  });
5666
5663
 
5667
- function template$t(data) {
5664
+ function template$s(data) {
5668
5665
  var __t, __p = '';
5669
5666
  __p += '<span class="file_thumbnail"></span>\n\n<span class="file_name"></span>\n<a class="select">' +
5670
5667
  ((__t = ( I18n.t('pageflow.editor.templates.file_item.select') )) == null ? '' : __t) +
@@ -5688,7 +5685,7 @@ return __p
5688
5685
 
5689
5686
  var FileItemView = Marionette.ItemView.extend({
5690
5687
  tagName: 'li',
5691
- template: template$t,
5688
+ template: template$s,
5692
5689
  mixins: [loadable],
5693
5690
  ui: {
5694
5691
  fileName: '.file_name',
@@ -5803,7 +5800,7 @@ var FileItemView = Marionette.ItemView.extend({
5803
5800
  }
5804
5801
  });
5805
5802
 
5806
- function template$u(data) {
5803
+ function template$t(data) {
5807
5804
  var __t, __p = '';
5808
5805
  __p += '<div class="filtered_files-banner">\n <span class="filtered_files-banner_prefix">\n ' +
5809
5806
  ((__t = ( I18n.t('pageflow.editor.views.filtered_files_view.banner_prefix') )) == null ? '' : __t) +
@@ -5822,7 +5819,7 @@ return __p
5822
5819
  }
5823
5820
 
5824
5821
  var FilteredFilesView = Marionette.ItemView.extend({
5825
- template: template$u,
5822
+ template: template$t,
5826
5823
  className: 'filtered_files',
5827
5824
  ui: {
5828
5825
  banner: '.filtered_files-banner',
@@ -5886,7 +5883,7 @@ var FilteredFilesView = Marionette.ItemView.extend({
5886
5883
  }
5887
5884
  });
5888
5885
 
5889
- function template$v(data) {
5886
+ function template$u(data) {
5890
5887
  var __t, __p = '';
5891
5888
  __p += '<div class="box choose_importer_box">\n <h1 class="dialog-header">' +
5892
5889
  ((__t = ( I18n.t('pageflow.editor.views.files_view.importer.heading') )) == null ? '' : __t) +
@@ -5896,7 +5893,7 @@ __p += '<div class="box choose_importer_box">\n <h1 class="dialog-header">' +
5896
5893
  return __p
5897
5894
  }
5898
5895
 
5899
- function template$w(data) {
5896
+ function template$v(data) {
5900
5897
  var __t, __p = '';
5901
5898
  __p += '<button class=\'importer\' data-key=\'' +
5902
5899
  ((__t = ( data.fileImporter.key )) == null ? '' : __t) +
@@ -5911,7 +5908,7 @@ return __p
5911
5908
  }
5912
5909
 
5913
5910
  var ImporterSelectView = Marionette.ItemView.extend({
5914
- template: template$w,
5911
+ template: template$v,
5915
5912
  className: 'importer_select',
5916
5913
  tagName: 'li',
5917
5914
  events: {
@@ -5928,7 +5925,7 @@ var ImporterSelectView = Marionette.ItemView.extend({
5928
5925
  });
5929
5926
 
5930
5927
  var ChooseImporterView = Marionette.ItemView.extend({
5931
- template: template$v,
5928
+ template: template$u,
5932
5929
  className: 'choose_importer editor dialog',
5933
5930
  mixins: [dialogView],
5934
5931
  ui: {
@@ -5963,7 +5960,7 @@ ChooseImporterView.open = function (options) {
5963
5960
  app.dialogRegion.show(new ChooseImporterView(options).render());
5964
5961
  };
5965
5962
 
5966
- function template$x(data) {
5963
+ function template$w(data) {
5967
5964
  var __t, __p = '';
5968
5965
  __p += '<div class="box file_importer_box">\n <h1 class="dialog-header">' +
5969
5966
  ((__t = ( I18n.t('pageflow.editor.file_importers.'+data.importerKey+'.dialog_label') )) == null ? '' : __t) +
@@ -5977,7 +5974,7 @@ __p += '<div class="box file_importer_box">\n <h1 class="dialog-header">' +
5977
5974
  return __p
5978
5975
  }
5979
5976
 
5980
- function template$y(data) {
5977
+ function template$x(data) {
5981
5978
  var __t, __p = '';
5982
5979
  __p += '<div class="box">\n <h1 class="dialog-header">' +
5983
5980
  ((__t = ( I18n.t('pageflow.editor.templates.confirm_upload.header') )) == null ? '' : __t) +
@@ -5995,9 +5992,6 @@ return __p
5995
5992
 
5996
5993
  var UploadableFilesView = Marionette.View.extend({
5997
5994
  className: 'uploadable_files',
5998
- ui: {
5999
- header: 'h2'
6000
- },
6001
5995
  initialize: function initialize() {
6002
5996
  this.uploadableFiles = this.collection.uploadable();
6003
5997
 
@@ -6042,7 +6036,7 @@ var UploadableFilesView = Marionette.View.extend({
6042
6036
  });
6043
6037
 
6044
6038
  var ConfirmFileImportUploadView = Marionette.Layout.extend({
6045
- template: template$y,
6039
+ template: template$x,
6046
6040
  className: 'confirm_upload editor dialog',
6047
6041
  mixins: [dialogView],
6048
6042
  regions: {
@@ -6112,7 +6106,7 @@ ConfirmFileImportUploadView.open = function (options) {
6112
6106
  };
6113
6107
 
6114
6108
  var FilesImporterView = Marionette.ItemView.extend({
6115
- template: template$x,
6109
+ template: template$w,
6116
6110
  className: 'files_importer editor dialog',
6117
6111
  mixins: [dialogView],
6118
6112
  ui: {
@@ -6199,7 +6193,7 @@ FilesImporterView.open = function (options) {
6199
6193
  app.dialogRegion.show(new FilesImporterView(options).render());
6200
6194
  };
6201
6195
 
6202
- function template$z(data) {
6196
+ function template$y(data) {
6203
6197
  var __t, __p = '';
6204
6198
  __p += '<button class="">\n <span class="label">' +
6205
6199
  ((__t = ( I18n.t('pageflow.editor.templates.select_button.select') )) == null ? '' : __t) +
@@ -6208,7 +6202,7 @@ return __p
6208
6202
  }
6209
6203
 
6210
6204
  var SelectButtonView = Marionette.ItemView.extend({
6211
- template: template$z,
6205
+ template: template$y,
6212
6206
  className: 'select_button',
6213
6207
  ui: {
6214
6208
  button: 'button',
@@ -6243,7 +6237,7 @@ var SelectButtonView = Marionette.ItemView.extend({
6243
6237
  }
6244
6238
  });
6245
6239
 
6246
- function template$A(data) {
6240
+ function template$z(data) {
6247
6241
  var __t, __p = '';
6248
6242
  __p += '<a class="back">' +
6249
6243
  ((__t = ( I18n.t('pageflow.editor.templates.files.back') )) == null ? '' : __t) +
@@ -6252,7 +6246,7 @@ return __p
6252
6246
  }
6253
6247
 
6254
6248
  var FilesView = Marionette.ItemView.extend({
6255
- template: template$A,
6249
+ template: template$z,
6256
6250
  className: 'manage_files',
6257
6251
  events: {
6258
6252
  'click a.back': 'goBack',
@@ -6337,14 +6331,14 @@ var FilesView = Marionette.ItemView.extend({
6337
6331
  }
6338
6332
  });
6339
6333
 
6340
- function template$B(data) {
6334
+ function template$A(data) {
6341
6335
  var __p = '';
6342
6336
  __p += '<div class="quota_state">\n</div>\n<div class="outlet">\n</div>\n<div class="exhausted_message">\n</div>\n';
6343
6337
  return __p
6344
6338
  }
6345
6339
 
6346
6340
  var EntryPublicationQuotaDecoratorView = Marionette.Layout.extend({
6347
- template: template$B,
6341
+ template: template$A,
6348
6342
  className: 'quota_decorator',
6349
6343
  regions: {
6350
6344
  outlet: '.outlet'
@@ -6385,7 +6379,7 @@ var EntryPublicationQuotaDecoratorView = Marionette.Layout.extend({
6385
6379
  }
6386
6380
  });
6387
6381
 
6388
- function template$C(data) {
6382
+ function template$B(data) {
6389
6383
  var __t, __p = '';
6390
6384
  __p += '<div class="files_pending notice">\n <p>' +
6391
6385
  ((__t = ( I18n.t('pageflow.editor.templates.publish_entry.files_pending_notice') )) == null ? '' : __t) +
@@ -6397,9 +6391,9 @@ __p += '<div class="files_pending notice">\n <p>' +
6397
6391
  ((__t = ( I18n.t('pageflow.editor.templates.publish_entry.view_revisions') )) == null ? '' : __t) +
6398
6392
  '</a></p>\n </div>\n\n <div class="not_published notice">\n ' +
6399
6393
  ((__t = ( I18n.t('pageflow.editor.templates.publish_entry.not_published_notice') )) == null ? '' : __t) +
6400
- '\n </div>\n\n <h2>' +
6394
+ '\n </div>\n\n <h2 class="sidebar-header">\n ' +
6401
6395
  ((__t = ( I18n.t('pageflow.editor.templates.publish_entry.publish_current') )) == null ? '' : __t) +
6402
- '</h2>\n\n <div class="radio_input">\n <input id="publish_entry_forever" type="radio" name="mode" value="publish_forever">\n <label for="publish_entry_forever">' +
6396
+ '\n </h2>\n\n <div class="radio_input">\n <input id="publish_entry_forever" type="radio" name="mode" value="publish_forever">\n <label for="publish_entry_forever">' +
6403
6397
  ((__t = ( I18n.t('pageflow.editor.templates.publish_entry.unlimited') )) == null ? '' : __t) +
6404
6398
  '</label>\n </div>\n\n <div class="radio_input">\n <input id="publish_entry_until" type="radio" name="mode" value="publish_until">\n <label for="publish_entry_until">' +
6405
6399
  ((__t = ( I18n.t('pageflow.editor.templates.publish_entry.until_including') )) == null ? '' : __t) +
@@ -6432,7 +6426,7 @@ return __p
6432
6426
  }
6433
6427
 
6434
6428
  var PublishEntryView = Marionette.ItemView.extend({
6435
- template: template$C,
6429
+ template: template$B,
6436
6430
  className: 'publish_entry',
6437
6431
  ui: {
6438
6432
  publishUntilFields: '.publish_until_fields',
@@ -6817,7 +6811,7 @@ var ScrollingView = Marionette.View.extend({
6817
6811
  }
6818
6812
  });
6819
6813
 
6820
- function template$D(data) {
6814
+ function template$C(data) {
6821
6815
  var __t, __p = '';
6822
6816
  __p += '<div class="box">\n <h2>' +
6823
6817
  ((__t = ( I18n.t('pageflow.editor.templates.help.title') )) == null ? '' : __t) +
@@ -6828,7 +6822,7 @@ return __p
6828
6822
  }
6829
6823
 
6830
6824
  var HelpView = Marionette.ItemView.extend({
6831
- template: template$D,
6825
+ template: template$C,
6832
6826
  className: 'help',
6833
6827
  ui: {
6834
6828
  placeholder: '.placeholder',
@@ -6905,7 +6899,7 @@ var PageThumbnailView = ModelThumbnailView.extend({
6905
6899
  className: 'model_thumbnail page_thumbnail'
6906
6900
  });
6907
6901
 
6908
- function template$E(data) {
6902
+ function template$D(data) {
6909
6903
  var __t, __p = '';
6910
6904
  __p += '<div>\n <span class="missing_page_thumbnail"></span>\n <span class="page_thumbnail"></span>\n <div class="title"></div>\n <div class="label"></div>\n <a class="remove" title="' +
6911
6905
  ((__t = ( I18n.t('pageflow.editor.templates.page_link_item.remove') )) == null ? '' : __t) +
@@ -6916,7 +6910,7 @@ return __p
6916
6910
  }
6917
6911
 
6918
6912
  var PageLinkItemView = Marionette.ItemView.extend({
6919
- template: template$E,
6913
+ template: template$D,
6920
6914
  tagName: 'li',
6921
6915
  className: 'page_link',
6922
6916
  ui: {
@@ -6966,7 +6960,7 @@ var PageLinkItemView = Marionette.ItemView.extend({
6966
6960
  }
6967
6961
  });
6968
6962
 
6969
- function template$F(data) {
6963
+ function template$E(data) {
6970
6964
  var __t, __p = '';
6971
6965
  __p += '<label>\n <span class="name">' +
6972
6966
  ((__t = ( I18n.t('pageflow.editor.templates.page_links.label') )) == null ? '' : __t) +
@@ -6977,7 +6971,7 @@ return __p
6977
6971
  }
6978
6972
 
6979
6973
  var PageLinksView = Marionette.ItemView.extend({
6980
- template: template$F,
6974
+ template: template$E,
6981
6975
  className: 'page_links',
6982
6976
  ui: {
6983
6977
  links: 'ul.links',
@@ -7013,14 +7007,14 @@ var PageLinksView = Marionette.ItemView.extend({
7013
7007
  }
7014
7008
  });
7015
7009
 
7016
- function template$G(data) {
7010
+ function template$F(data) {
7017
7011
  var __p = '';
7018
7012
  __p += '<div class="emulation_mode_button-wrapper"\n data-tooltip-align="top center">\n <div class="emulation_mode_button-desktop_icon"/>\n <div class="emulation_mode_button-phone_icon"/>\n <div class="emulation_mode_button-track" />\n <div class="emulation_mode_button-thumb" />\n</div>\n';
7019
7013
  return __p
7020
7014
  }
7021
7015
 
7022
7016
  var EmulationModeButtonView = Marionette.ItemView.extend({
7023
- template: template$G,
7017
+ template: template$F,
7024
7018
  className: 'emulation_mode_button',
7025
7019
  mixins: [tooltipContainer],
7026
7020
  ui: {
@@ -7054,7 +7048,7 @@ var EmulationModeButtonView = Marionette.ItemView.extend({
7054
7048
  }
7055
7049
  });
7056
7050
 
7057
- function template$H(data) {
7051
+ function template$G(data) {
7058
7052
  var __t, __p = '';
7059
7053
  __p +=
7060
7054
  ((__t = ( I18n.t('pageflow.editor.templates.help_button.open_help') )) == null ? '' : __t);
@@ -7062,7 +7056,7 @@ return __p
7062
7056
  }
7063
7057
 
7064
7058
  var HelpButtonView = Marionette.ItemView.extend({
7065
- template: template$H,
7059
+ template: template$G,
7066
7060
  className: 'help_button',
7067
7061
  events: {
7068
7062
  'click': function click() {
@@ -7102,7 +7096,7 @@ var InfoBoxView = Marionette.View.extend({
7102
7096
  }
7103
7097
  });
7104
7098
 
7105
- function template$I(data) {
7099
+ function template$H(data) {
7106
7100
  var __t, __p = '';
7107
7101
  __p += '<span class="list_item_thumbnail"></span>\n<span class="list_item_missing_thumbnail"></span>\n<span class="list_item_type_pictogram type_pictogram"></span>\n\n<div class="list_item_title"></div>\n<div class="list_item_description"></div>\n\n<div class="list_item_buttons">\n <a class="list_item_edit_button" title="' +
7108
7102
  ((__t = ( I18n.t('pageflow.editor.templates.list_item.edit') )) == null ? '' : __t) +
@@ -7113,7 +7107,7 @@ return __p
7113
7107
  }
7114
7108
 
7115
7109
  var ListItemView = Marionette.ItemView.extend({
7116
- template: template$I,
7110
+ template: template$H,
7117
7111
  tagName: 'li',
7118
7112
  className: 'list_item',
7119
7113
  ui: {
@@ -7187,7 +7181,7 @@ var ListItemView = Marionette.ItemView.extend({
7187
7181
  }
7188
7182
  });
7189
7183
 
7190
- function template$J(data) {
7184
+ function template$I(data) {
7191
7185
  var __t, __p = '';
7192
7186
  __p += '<div class="checking notice editor">\n <p>' +
7193
7187
  ((__t = ( I18n.t('pageflow.editor.templates.locked.loading') )) == null ? '' : __t) +
@@ -7202,7 +7196,7 @@ return __p
7202
7196
  }
7203
7197
 
7204
7198
  var LockedView = Marionette.ItemView.extend({
7205
- template: template$J,
7199
+ template: template$I,
7206
7200
  className: 'locked checking',
7207
7201
  ui: {
7208
7202
  breakButton: '.break',
@@ -7243,25 +7237,12 @@ var LockedView = Marionette.ItemView.extend({
7243
7237
  });
7244
7238
 
7245
7239
  var EditorView = Backbone.View.extend({
7246
- scrollNavigationKeys: _.values({
7247
- pageUp: 33,
7248
- pageDown: 34,
7249
- end: 35,
7250
- home: 36,
7251
- left: 37,
7252
- up: 38,
7253
- right: 39,
7254
- down: 40
7255
- }),
7256
7240
  events: {
7257
7241
  'click a': function clickA(event) {
7258
7242
  // prevent default for all links
7259
7243
  if (!$(event.currentTarget).attr('target') && !$(event.currentTarget).attr('download') && !$(event.currentTarget).attr('href')) {
7260
7244
  return false;
7261
7245
  }
7262
- },
7263
- 'keydown sidebar': function keydownSidebar(event) {
7264
- this.preventScrollingPreviewWhileFocusInSidebar(event);
7265
7246
  }
7266
7247
  },
7267
7248
  initialize: function initialize() {
@@ -7289,11 +7270,6 @@ var EditorView = Backbone.View.extend({
7289
7270
  model: state.editLock
7290
7271
  }).render().el);
7291
7272
  this.$el.append(new HelpView().render().el);
7292
- },
7293
- preventScrollingPreviewWhileFocusInSidebar: function preventScrollingPreviewWhileFocusInSidebar(event) {
7294
- if (this.scrollNavigationKeys.indexOf(event.which) >= 0) {
7295
- event.stopPropagation();
7296
- }
7297
7273
  }
7298
7274
  });
7299
7275
 
@@ -7395,7 +7371,7 @@ var LazyVideoEmbeddedView = Marionette.View.extend({
7395
7371
  }
7396
7372
  });
7397
7373
 
7398
- function template$K(data) {
7374
+ function template$J(data) {
7399
7375
  var __t, __p = '';
7400
7376
  __p += '<li class="uploading"><span class="count">0</span>' +
7401
7377
  ((__t = ( I18n.t('pageflow.editor.templates.notification.upload_pending') )) == null ? '' : __t) +
@@ -7418,7 +7394,7 @@ return __p
7418
7394
  var NotificationsView = Marionette.ItemView.extend({
7419
7395
  className: 'notifications',
7420
7396
  tagName: 'ul',
7421
- template: template$K,
7397
+ template: template$J,
7422
7398
  ui: {
7423
7399
  failedCount: '.failed .count',
7424
7400
  uploadingCount: '.uploading .count',
@@ -7507,9 +7483,6 @@ var FileProcessingStateDisplayView = Marionette.View.extend({
7507
7483
 
7508
7484
  var NestedFilesView = Marionette.View.extend({
7509
7485
  className: 'nested_files',
7510
- ui: {
7511
- header: 'h2'
7512
- },
7513
7486
  initialize: function initialize() {
7514
7487
  if (!this.options.selection.has('file')) {
7515
7488
  this.options.selection.set('file', this.collection.first());
@@ -7581,7 +7554,7 @@ var NestedFilesView = Marionette.View.extend({
7581
7554
  }, 200)
7582
7555
  });
7583
7556
 
7584
- function template$L(data) {
7557
+ function template$K(data) {
7585
7558
  var __t, __p = '';
7586
7559
  __p += '<div class="text_tracks_container">\n <div class="files_upload_panel">\n <div class="files_panel">\n </div>\n <a class="upload" href="">' +
7587
7560
  ((__t = ( I18n.t('pageflow.editor.templates.text_tracks.upload') )) == null ? '' : __t) +
@@ -7592,7 +7565,7 @@ return __p
7592
7565
  }
7593
7566
 
7594
7567
  var TextTracksView = Marionette.Layout.extend({
7595
- template: template$L,
7568
+ template: template$K,
7596
7569
  className: 'text_tracks',
7597
7570
  regions: {
7598
7571
  selectedFileRegion: '.selected_file_region'
@@ -7656,7 +7629,7 @@ var TextTracksFileMetaDataItemValueView = FileMetaDataItemValueView.extend({
7656
7629
  }
7657
7630
  });
7658
7631
 
7659
- function template$M(data) {
7632
+ function template$L(data) {
7660
7633
  var __p = '';
7661
7634
  __p += '<label>\n <span class="list_label"></span>\n</label>\n\n<ul class="list_items"></ul>\n';
7662
7635
  return __p
@@ -7703,7 +7676,7 @@ return __p
7703
7676
  */
7704
7677
 
7705
7678
  var ListView = Marionette.ItemView.extend({
7706
- template: template$M,
7679
+ template: template$L,
7707
7680
  className: 'list',
7708
7681
  ui: {
7709
7682
  label: '.list_label',
@@ -7733,7 +7706,7 @@ var ListView = Marionette.ItemView.extend({
7733
7706
  });
7734
7707
 
7735
7708
  var ConfirmUploadView = Marionette.Layout.extend({
7736
- template: template$y,
7709
+ template: template$x,
7737
7710
  className: 'confirm_upload editor dialog',
7738
7711
  mixins: [dialogView],
7739
7712
  regions: {
@@ -8168,7 +8141,7 @@ app.addInitializer(function (options) {
8168
8141
  state.entry = editor.createEntryModel(options, {
8169
8142
  widgets: widgets
8170
8143
  });
8171
- state.theming = new Theming(options.theming);
8144
+ state.site = new Site(options.site);
8172
8145
  state.account = new Backbone.Model(options.account);
8173
8146
  widgets.subject = state.entry;
8174
8147
  state.storylineOrdering = new StorylineOrdering(state.storylines, state.pages);
@@ -8284,4 +8257,4 @@ app.addRegions({
8284
8257
  sidebarFooterRegion: 'sidebar .sidebar_footer_container'
8285
8258
  });
8286
8259
 
8287
- export { AudioFile, BackButtonDecoratorView, BackgroundImageEmbeddedView, BackgroundPositioningPreviewView, BackgroundPositioningSlidersView, BackgroundPositioningView, ChangeThemeDialogView, Chapter, ChapterConfiguration, ChapterPagesCollection, ChapterScaffold, ChaptersCollection, ChooseImporterView, Configuration, ConfirmEncodingView, ConfirmFileImportUploadView, ConfirmUploadView, ConfirmableFileItemView, DropDownButtonItemListView, DropDownButtonItemView, DropDownButtonView, EditConfigurationView, EditEntryView, EditFileView, EditLock, EditLockContainer, EditMetaDataView, EditWidgetView, EditWidgetsView, EditorApi, EditorView, EmulationModeButtonView, EncodedFile, EncodingConfirmation, Entry, EntryMetadata, EntryMetadataFileSelectionHandler, EntryPublication, EntryPublicationQuotaDecoratorView, ExplorerFileItemView, Failure, FileConfiguration, FileImport, FileInputView, FileItemView, FileMetaDataItemValueView, FileMetaDataItemView, FileProcessingStateDisplayView, FileReuse, FileSettingsDialogView, FileStage, FileStageItemView, FileThumbnailView, FileTypes, FileTypesCollection, FileUploader, FilesCollection, FilesExplorerView, FilesImporterView, FilesView, FilteredFilesView, ForeignKeySubsetCollection, HelpButtonView, HelpImageView, HelpView, ImageFile, InfoBoxView, InvalidNestedTypeError, LazyVideoEmbeddedView, ListItemView, ListView, LoadingView, LockedView, ModelThumbnailView, NestedFilesCollection, NestedFilesView, NestedTypeError, NotificationsView, OrderedPageLinksCollection, OtherEntriesCollection, OtherEntriesCollectionView, OtherEntry, OtherEntryItemView, Page, PageConfigurationFileSelectionHandler, PageLink, PageLinkConfigurationEditorView, PageLinkFileSelectionHandler, PageLinkItemView, PageLinksCollection, PageLinksView, PageThumbnailView, PagesCollection, PublishEntryView, ReferenceInputView, ReusableFile, Scaffold, ScrollingView, SelectButtonView, SidebarController, SidebarFooterView, SidebarRouter, StaticThumbnailView, Storyline, StorylineChaptersCollection, StorylineConfiguration, StorylineOrdering, StorylineScaffold, StorylineTransitiveChildPages, StorylinesCollection, SubsetCollection, TextFileMetaDataItemValueView, TextTrackFile, TextTracksFileMetaDataItemValueView, TextTracksView, Theme, ThemeInputView, ThemeItemView, ThemesCollection, Theming, UnmatchedUploadError, UploadError, UploadableFile, UploadableFilesView, UploaderView, VideoFile, Widget, WidgetConfiguration, WidgetConfigurationFileSelectionHandler, WidgetItemView, WidgetTypes, WidgetsCollection, addAndReturnModel, app, authenticationProvider, configurationContainer, delayedDestroying, dialogView, editor, entryTypeEditorControllerUrls, failureIndicatingView, failureTracking, fileWithType, filesCountWatcher, formDataUtils, loadable, modelLifecycleTrackingView, orderedCollection, persistedPromise, polling, retryable, selectableView, stageProvider, startEditor, state, stylesheet, transientReferences, validFileTypeTranslationList };
8260
+ export { AudioFile, BackButtonDecoratorView, BackgroundImageEmbeddedView, BackgroundPositioningPreviewView, BackgroundPositioningSlidersView, BackgroundPositioningView, ChangeThemeDialogView, Chapter, ChapterConfiguration, ChapterPagesCollection, ChapterScaffold, ChaptersCollection, ChooseImporterView, Configuration, ConfirmEncodingView, ConfirmFileImportUploadView, ConfirmUploadView, ConfirmableFileItemView, DropDownButtonItemListView, DropDownButtonItemView, DropDownButtonView, EditConfigurationView, EditEntryView, EditFileView, EditLock, EditLockContainer, EditMetaDataView, EditWidgetView, EditWidgetsView, EditorApi, EditorView, EmulationModeButtonView, EncodedFile, EncodingConfirmation, Entry, EntryMetadata, EntryMetadataFileSelectionHandler, EntryPublication, EntryPublicationQuotaDecoratorView, ExplorerFileItemView, Failure, FileConfiguration, FileImport, FileInputView, FileItemView, FileMetaDataItemValueView, FileMetaDataItemView, FileProcessingStateDisplayView, FileReuse, FileSettingsDialogView, FileStage, FileStageItemView, FileThumbnailView, FileTypes, FileTypesCollection, FileUploader, FilesCollection, FilesExplorerView, FilesImporterView, FilesView, FilteredFilesView, ForeignKeySubsetCollection, HelpButtonView, HelpImageView, HelpView, ImageFile, InfoBoxView, InvalidNestedTypeError, LazyVideoEmbeddedView, ListItemView, ListView, LoadingView, LockedView, ModelThumbnailView, NestedFilesCollection, NestedFilesView, NestedTypeError, NotificationsView, OrderedPageLinksCollection, OtherEntriesCollection, OtherEntriesCollectionView, OtherEntry, OtherEntryItemView, Page, PageConfigurationFileSelectionHandler, PageLink, PageLinkConfigurationEditorView, PageLinkFileSelectionHandler, PageLinkItemView, PageLinksCollection, PageLinksView, PageThumbnailView, PagesCollection, PublishEntryView, ReferenceInputView, ReusableFile, Scaffold, ScrollingView, SelectButtonView, SidebarController, SidebarFooterView, SidebarRouter, Site, StaticThumbnailView, Storyline, StorylineChaptersCollection, StorylineConfiguration, StorylineOrdering, StorylineScaffold, StorylineTransitiveChildPages, StorylinesCollection, SubsetCollection, TextFileMetaDataItemValueView, TextTrackFile, TextTracksFileMetaDataItemValueView, TextTracksView, Theme, ThemeInputView, ThemeItemView, ThemesCollection, UnmatchedUploadError, UploadError, UploadableFile, UploadableFilesView, UploaderView, VideoFile, Widget, WidgetConfiguration, WidgetConfigurationFileSelectionHandler, WidgetItemView, WidgetTypes, WidgetsCollection, addAndReturnModel, app, authenticationProvider, configurationContainer, delayedDestroying, dialogView, editor, entryTypeEditorControllerUrls, failureIndicatingView, failureTracking, fileWithType, filesCountWatcher, formDataUtils, loadable, modelLifecycleTrackingView, orderedCollection, persistedPromise, polling, retryable, selectableView, stageProvider, startEditor, state, stylesheet, transientReferences, validFileTypeTranslationList };