pageflow 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of pageflow might be problematic. Click here for more details.

Files changed (99) hide show
  1. checksums.yaml +8 -8
  2. data/admins/pageflow/accounts.rb +3 -1
  3. data/admins/pageflow/entry.rb +2 -1
  4. data/app/assets/javascripts/pageflow/admin.js +1 -0
  5. data/app/assets/javascripts/pageflow/admin/accounts.js +30 -0
  6. data/app/assets/javascripts/pageflow/asset_urls.js.erb +2 -2
  7. data/app/assets/javascripts/pageflow/editor/api.js +136 -0
  8. data/app/assets/javascripts/pageflow/editor/api/failure.js +54 -0
  9. data/app/assets/javascripts/pageflow/editor/api/failures.js +47 -0
  10. data/app/assets/javascripts/pageflow/editor/base.js +8 -0
  11. data/app/assets/javascripts/pageflow/editor/collections/chapters_collection.js +1 -1
  12. data/app/assets/javascripts/pageflow/editor/collections/mixins/ordered_collection.js +9 -4
  13. data/app/assets/javascripts/pageflow/editor/controllers/sidebar_controller.js +9 -10
  14. data/app/assets/javascripts/pageflow/editor/initializers/additional_initializers.js +8 -0
  15. data/app/assets/javascripts/pageflow/editor/initializers/boot.js +1 -8
  16. data/app/assets/javascripts/pageflow/editor/initializers/routing.js +17 -0
  17. data/app/assets/javascripts/pageflow/editor/initializers/setup_collections.js +5 -5
  18. data/app/assets/javascripts/pageflow/editor/models/configuration.js +11 -2
  19. data/app/assets/javascripts/pageflow/editor/models/entry.js +2 -2
  20. data/app/assets/javascripts/pageflow/editor/models/mixins/retryable.js +2 -2
  21. data/app/assets/javascripts/pageflow/editor/models/page_configuration_file_selection_handler.js +37 -0
  22. data/app/assets/javascripts/pageflow/editor/models/theming.js +8 -0
  23. data/app/assets/javascripts/pageflow/editor/object.js +14 -0
  24. data/app/assets/javascripts/pageflow/editor/routers/sidebar_router.js +4 -4
  25. data/app/assets/javascripts/pageflow/editor/templates/edit_entry.jst.ejs +4 -4
  26. data/app/assets/javascripts/pageflow/editor/templates/notifications.jst.ejs +1 -1
  27. data/app/assets/javascripts/pageflow/editor/views/back_button_decorator_view.js +3 -2
  28. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/audio.js +2 -1
  29. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/video.js +2 -1
  30. data/app/assets/javascripts/pageflow/editor/views/edit_entry_view.js +23 -11
  31. data/app/assets/javascripts/pageflow/editor/views/edit_meta_data_view.js +28 -22
  32. data/app/assets/javascripts/pageflow/editor/views/entry_preview_view.js +5 -1
  33. data/app/assets/javascripts/pageflow/editor/views/file_item_view.js +3 -2
  34. data/app/assets/javascripts/pageflow/editor/views/files_view.js +3 -10
  35. data/app/assets/javascripts/pageflow/editor/views/input_view.js +39 -1
  36. data/app/assets/javascripts/pageflow/editor/views/inputs/check_box_input_view.js +13 -2
  37. data/app/assets/javascripts/pageflow/editor/views/inputs/file_input_view.js +9 -4
  38. data/app/assets/javascripts/pageflow/editor/views/inputs/text_area_input_view.js +14 -1
  39. data/app/assets/javascripts/pageflow/editor/views/inputs/text_input_view.js +11 -0
  40. data/app/assets/javascripts/pageflow/editor/views/mixins/failure_indicating_view.js +3 -3
  41. data/app/assets/javascripts/pageflow/editor/views/notifications_view.js +7 -6
  42. data/app/assets/javascripts/pageflow/editor/views/page_preview_view.js +2 -1
  43. data/app/assets/javascripts/pageflow/page_types/audio.js +13 -8
  44. data/app/assets/javascripts/pageflow/page_types/video.js +9 -5
  45. data/app/assets/javascripts/pageflow/widgets/navigation.js +3 -2
  46. data/app/assets/javascripts/pageflow/widgets/player_controls.js +3 -2
  47. data/app/assets/javascripts/pageflow/widgets/{home_button.js → top_button.js} +4 -4
  48. data/app/assets/stylesheets/pageflow/editor/back_button_decorator.css.scss +3 -0
  49. data/app/assets/stylesheets/pageflow/editor/base.css.scss +1 -0
  50. data/app/assets/stylesheets/pageflow/editor/tabs_view.css.scss +1 -0
  51. data/app/assets/stylesheets/pageflow/ie9.css.scss +8 -7
  52. data/app/assets/stylesheets/pageflow/lt_ie9.css.scss +2 -2
  53. data/app/assets/stylesheets/pageflow/navigation_bar.css.scss +16 -2
  54. data/app/assets/stylesheets/pageflow/themes/default/anchors.css.scss +0 -3
  55. data/app/assets/stylesheets/pageflow/themes/default/navigation.css.scss +13 -4
  56. data/app/controllers/pageflow/entries_controller.rb +4 -9
  57. data/app/helpers/pageflow/entries_helper.rb +2 -6
  58. data/app/helpers/pageflow/themes_helper.rb +9 -0
  59. data/app/helpers/pageflow/themings_helper.rb +11 -0
  60. data/app/jobs/pageflow/poll_zencoder_job.rb +2 -2
  61. data/app/models/pageflow/cname_theming_request_scope.rb +7 -0
  62. data/app/models/pageflow/draft_entry.rb +9 -1
  63. data/app/models/pageflow/entry.rb +3 -1
  64. data/app/models/pageflow/home_button.rb +37 -0
  65. data/app/models/pageflow/published_entry.rb +8 -0
  66. data/app/models/pageflow/revision.rb +6 -0
  67. data/app/models/pageflow/theming.rb +3 -0
  68. data/app/models/pageflow/zencoder_attachment.rb +35 -17
  69. data/app/views/admin/accounts/_form.html.erb +14 -2
  70. data/app/views/admin/entries/_attributes_table.html.arb +1 -1
  71. data/app/views/admin/entries/_links.html.arb +1 -1
  72. data/app/views/layouts/pageflow/_ie_include_tags.html.erb +4 -4
  73. data/app/views/pageflow/editor/entries/_analytics.html.erb +1 -0
  74. data/app/views/pageflow/editor/entries/_entry.json.jbuilder +4 -0
  75. data/app/views/pageflow/editor/themings/_theming.json.jbuilder +2 -0
  76. data/app/views/pageflow/entries/_navigation.html.erb +2 -2
  77. data/app/views/pageflow/entries/edit.html.erb +3 -0
  78. data/app/views/pageflow/entries/navigation/_bar_top.html.erb +2 -1
  79. data/app/views/pageflow/entries/navigation/_home_button.html.erb +8 -0
  80. data/config/initializers/zencoder.rb +11 -1
  81. data/config/locales/activerecord.de.yml +5 -0
  82. data/config/locales/editor.de.yml +5 -0
  83. data/config/routes.rb +1 -0
  84. data/db/migrate/20140819081454_add_home_url_attributes_to_themings_and_revisions.rb +9 -0
  85. data/lib/generators/pageflow/seeds/seeds_generator.rb +4 -4
  86. data/lib/generators/pageflow/seeds/templates/seeds.rb +30 -0
  87. data/lib/pageflow/configuration.rb +47 -1
  88. data/lib/pageflow/page_type.rb +25 -0
  89. data/lib/pageflow/revision_component.rb +39 -0
  90. data/lib/pageflow/seeds.rb +153 -71
  91. data/lib/pageflow/theme.rb +7 -2
  92. data/lib/pageflow/themes.rb +2 -2
  93. data/lib/pageflow/version.rb +1 -1
  94. data/lib/pageflow/zencoder_audio_output_definition.rb +3 -3
  95. data/lib/pageflow/zencoder_output_definition.rb +46 -7
  96. data/lib/pageflow/zencoder_video_output_definition.rb +51 -35
  97. data/spec/factories/entries.rb +6 -2
  98. metadata +687 -668
  99. data/app/assets/javascripts/pageflow/editor/collections/failed_records_collection.js +0 -18
@@ -10,13 +10,6 @@ pageflow.app.addInitializer(function(options) {
10
10
  pageflow.app.notificationsRegion.show(new pageflow.NotificationsView().render());
11
11
  pageflow.app.helpButtonRegion.show(new pageflow.HelpButtonView().render());
12
12
 
13
- window.editor = new pageflow.SidebarRouter({
14
- controller: new pageflow.SidebarController({
15
- region: pageflow.app.sidebarRegion,
16
- entry: pageflow.entry
17
- })
18
- });
19
-
20
13
  Backbone.history.start({root: options.root});
21
14
  });
22
15
 
@@ -26,4 +19,4 @@ pageflow.app.addRegions({
26
19
  dialogRegion: '.dialog_container',
27
20
  notificationsRegion: 'sidebar .notifications_container',
28
21
  helpButtonRegion: 'sidebar .help_button_container'
29
- });
22
+ });
@@ -0,0 +1,17 @@
1
+ pageflow.app.addInitializer(function() {
2
+ _.each(pageflow.editor.sideBarRoutings, function(options) {
3
+ new options.router({
4
+ controller: new options.controller({
5
+ region: pageflow.app.sidebarRegion,
6
+ entry: pageflow.entry
7
+ })
8
+ });
9
+ });
10
+
11
+ window.editor = new pageflow.SidebarRouter({
12
+ controller: new pageflow.SidebarController({
13
+ region: pageflow.app.sidebarRegion,
14
+ entry: pageflow.entry
15
+ })
16
+ });
17
+ });
@@ -6,15 +6,15 @@ pageflow.app.addInitializer(function(options) {
6
6
  pageflow.pages = new pageflow.PagesCollection(options.pages);
7
7
  pageflow.chapters = new pageflow.ChaptersCollection(options.chapters);
8
8
  pageflow.entry = new pageflow.Entry(options.entry);
9
+ pageflow.theming = new pageflow.Theming(options.theming);
9
10
 
10
11
  pageflow.pages.sort();
11
12
 
12
- pageflow.failedRecords = new pageflow.FailedRecordsCollection();
13
- pageflow.failedRecords.watch(pageflow.entry);
14
- pageflow.failedRecords.watch(pageflow.pages);
15
- pageflow.failedRecords.watch(pageflow.chapters);
13
+ pageflow.editor.failures.watch(pageflow.entry);
14
+ pageflow.editor.failures.watch(pageflow.pages);
15
+ pageflow.editor.failures.watch(pageflow.chapters);
16
16
 
17
17
  pageflow.savingRecords = new pageflow.SavingRecordsCollection();
18
18
  pageflow.savingRecords.watch(pageflow.pages);
19
19
  pageflow.savingRecords.watch(pageflow.chapters);
20
- });
20
+ });
@@ -10,7 +10,16 @@ pageflow.Configuration = Backbone.Model.extend({
10
10
  transition: 'fade',
11
11
  text_position: 'left',
12
12
  invert: false,
13
- hide_title: false
13
+ hide_title: false,
14
+ autoplay: true
15
+ },
16
+
17
+ /**
18
+ * Used by views (i.e. FileInputView) to get id which can be used in
19
+ * routes to lookup configuration via its page.
20
+ */
21
+ getRoutableId: function() {
22
+ return this.page.id;
14
23
  },
15
24
 
16
25
  getImageFileUrl: function(attribute) {
@@ -96,4 +105,4 @@ pageflow.Configuration = Backbone.Model.extend({
96
105
  return clone;
97
106
  });
98
107
  }
99
- });
108
+ });
@@ -19,7 +19,7 @@ pageflow.Entry = Backbone.Model.extend({
19
19
  this.pages.sort();
20
20
  });
21
21
 
22
- this.listenTo(this, 'change:title change:summary change:credits change:manual_start', function() {
22
+ this.listenTo(this, 'change:title change:summary change:credits change:manual_start change:home_url change:home_button_enabled', function() {
23
23
  this.save();
24
24
  });
25
25
 
@@ -121,6 +121,6 @@ pageflow.Entry = Backbone.Model.extend({
121
121
  },
122
122
 
123
123
  toJSON: function() {
124
- return _.pick(this.attributes, 'title', 'summary', 'credits', 'manual_start');
124
+ return _.pick(this.attributes, 'title', 'summary', 'credits', 'manual_start', 'home_url', 'home_button_enabled');
125
125
  }
126
126
  });
@@ -12,5 +12,5 @@ pageflow.retryable = {
12
12
  };
13
13
  options.url = this.url() + '/retry';
14
14
  return this.sync('post', this, options);
15
- },
16
- };
15
+ }
16
+ };
@@ -0,0 +1,37 @@
1
+
2
+ pageflow.PageConfigurationFileSelectionHandler = function(options) {
3
+ pageflow.ConfigurationEditorView.register('audio_loop', {
4
+ configure: function() {
5
+ this.tab('general', function() {
6
+ this.group('general');
7
+
8
+ this.input('additional_title', pageflow.TextInputView);
9
+ this.input('additional_description', pageflow.TextAreaInputView, {size: 'short'});
10
+ });
11
+
12
+ this.tab('files', function() {
13
+ this.input('audio_file_id', pageflow.FileInputView, {collection: pageflow.audioFiles});
14
+ this.input('background_image_id', pageflow.FileInputView, {collection: pageflow.imageFiles});
15
+ this.input('thumbnail_image_id', pageflow.FileInputView, {
16
+ collection: pageflow.imageFiles,
17
+ imagePositioning: false
18
+ });
19
+ });
20
+
21
+ this.tab('options', function() {
22
+ this.group('options');
23
+ });
24
+ }
25
+ });
26
+ var page = pageflow.pages.get(options.id);
27
+
28
+ this.call = function(file) {
29
+ page.configuration.setReference(options.attributeName, file);
30
+ };
31
+
32
+ this.getReferer = function() {
33
+ return '/pages/' + page.id + '/files';
34
+ };
35
+ };
36
+
37
+ pageflow.editor.registerFileSelectionHandler('pageConfiguration', pageflow.PageConfigurationFileSelectionHandler);
@@ -0,0 +1,8 @@
1
+ pageflow.Theming = Backbone.Model.extend({
2
+ modelName: 'theming',
3
+ i18nKey: 'pageflow/theming',
4
+
5
+ hasHomeButton: function() {
6
+ return this.get('home_button');
7
+ }
8
+ });
@@ -0,0 +1,14 @@
1
+ (function() {
2
+ // Class-y constructor by github.com/opensas
3
+ // https://github.com/jashkenas/backbone/issues/2601
4
+
5
+ pageflow.Object = function(options) {
6
+ this.initialize.apply(this, arguments);
7
+ };
8
+ _.extend(pageflow.Object.prototype, Backbone.Events, {
9
+ initialize: function(options) {}
10
+ });
11
+
12
+ // The self-propagating extend function that Backbone classes use.
13
+ pageflow.Object.extend = Backbone.Model.extend;
14
+ }());
@@ -4,9 +4,9 @@ pageflow.SidebarRouter = Backbone.Marionette.AppRouter.extend({
4
4
  'pages/:id/:tab': 'page',
5
5
  'chapters/:id': 'chapter',
6
6
 
7
- 'files/image_files?page=:page_id&attribute=:attribute': 'imageFiles',
8
- 'files/video_files?page=:page_id&attribute=:attribute': 'videoFiles',
9
- 'files/audio_files?page=:page_id&attribute=:attribute': 'audioFiles',
7
+ 'files/image_files?handler=:handler&payload=:payload': 'imageFiles',
8
+ 'files/video_files?handler=:handler&payload=:payload': 'videoFiles',
9
+ 'files/audio_files?handler=:handler&payload=:payload': 'audioFiles',
10
10
 
11
11
  'files/image_files': 'imageFiles',
12
12
  'files/video_files': 'videoFiles',
@@ -22,4 +22,4 @@ pageflow.SidebarRouter = Backbone.Marionette.AppRouter.extend({
22
22
 
23
23
  '.*': 'index'
24
24
  }
25
- });
25
+ });
@@ -2,12 +2,12 @@
2
2
  <a class="publish" href="#">Veröffentlichen...</a>
3
3
 
4
4
  <ul class="menu">
5
- <li>
6
- <a class="edit_entry_meta_data" href="#">Titel und Optionen</a>
5
+ <li>
6
+ <a class="edit_entry_meta_data" href="#" data-path="/meta_data">Titel und Optionen</a>
7
7
  <span class="failure_icon" title="Beim Speichern der Metadaten ist ein Fehler aufgetreten." />
8
8
  </li>
9
- <li>
10
- <a class="manage_files" href="#">Dateien verwalten</a>
9
+ <li>
10
+ <a class="manage_files" href="#" data-path="/files">Dateien verwalten</a>
11
11
  </li>
12
12
  </ul>
13
13
 
@@ -1,5 +1,5 @@
1
1
  <li class="uploading"><span class="count">0</span> Dateien werden gerade hochgeladen.</li>
2
- <li class="failed"><span class="count">0</span> Datensätze konnten nicht gespeichert werden. <a class="retry">Erneut versuchen</a></li>
2
+ <li class="failed"><span class="count">0</span> <span class="description">Datensätze konnten nicht gespeichert werden.</span> <a class="retry">Erneut versuchen</a></li>
3
3
  <li class="saving">Änderungen werden gespeichert...</li>
4
4
  <li class="saved">Alle Änderungen wurden gespeichert.</li>
5
5
 
@@ -1,8 +1,9 @@
1
1
  pageflow.BackButtonDecoratorView = Backbone.Marionette.Layout.extend({
2
2
  template: 'templates/back_button_decorator',
3
+ className: 'back_button_decorator',
3
4
 
4
5
  events: {
5
- 'click a.back': 'goBack',
6
+ 'click a.back': 'goBack'
6
7
  },
7
8
 
8
9
  regions: {
@@ -16,4 +17,4 @@ pageflow.BackButtonDecoratorView = Backbone.Marionette.Layout.extend({
16
17
  goBack: function() {
17
18
  editor.navigate('/', {trigger: true});
18
19
  }
19
- });
20
+ });
@@ -13,7 +13,8 @@ pageflow.ConfigurationEditorView.register('audio', {
13
13
  });
14
14
 
15
15
  this.tab('options', function() {
16
+ this.input('autoplay', pageflow.CheckBoxInputView);
16
17
  this.group('options');
17
18
  });
18
19
  }
19
- });
20
+ });
@@ -16,7 +16,8 @@ pageflow.ConfigurationEditorView.register('video', {
16
16
  });
17
17
 
18
18
  this.tab('options', function() {
19
+ this.input('autoplay', pageflow.CheckBoxInputView);
19
20
  this.group('options');
20
21
  });
21
22
  }
22
- });
23
+ });
@@ -4,7 +4,8 @@ pageflow.EditEntryView = Backbone.Marionette.ItemView.extend({
4
4
  mixins: [pageflow.failureIndicatingView],
5
5
 
6
6
  ui: {
7
- publicationStateButton: 'a.publication_state'
7
+ publicationStateButton: 'a.publication_state',
8
+ menu: '.menu'
8
9
  },
9
10
 
10
11
  events: {
@@ -19,22 +20,19 @@ pageflow.EditEntryView = Backbone.Marionette.ItemView.extend({
19
20
  return false;
20
21
  },
21
22
 
22
- 'click a.edit_entry_meta_data': function() {
23
- editor.navigate('/meta_data', {trigger: true});
24
- return false;
23
+ 'click a.add_chapter': function() {
24
+ this.model.addChapter();
25
25
  },
26
26
 
27
- 'click a.manage_files': function() {
28
- editor.navigate('/files', {trigger: true});
27
+ 'click .menu a': function(event) {
28
+ editor.navigate($(event.target).data('path'), {trigger: true});
29
29
  return false;
30
- },
31
-
32
- 'click a.add_chapter': function() {
33
- this.model.addChapter();
34
30
  }
35
31
  },
36
32
 
37
33
  onRender: function() {
34
+ this._addMenuItems();
35
+
38
36
  this.subview(new pageflow.SortableCollectionView({
39
37
  el: this.$('ul.chapters'),
40
38
  collection: this.model.chapters,
@@ -45,5 +43,19 @@ pageflow.EditEntryView = Backbone.Marionette.ItemView.extend({
45
43
  }
46
44
  }
47
45
  }));
46
+ },
47
+
48
+ _addMenuItems: function() {
49
+ var view = this;
50
+
51
+ _.each(pageflow.editor.mainMenuItems, function(options) {
52
+ var item = $('<li><a href="#"></a></li>');
53
+ var link = item.find('a');
54
+
55
+ link.data('path', options.path);
56
+ link.text(I18n.t(options.translationKey));
57
+
58
+ view.ui.menu.append(item);
59
+ });
48
60
  }
49
- });
61
+ });
@@ -1,13 +1,13 @@
1
1
  /*global editor*/
2
2
 
3
- pageflow.EditMetaDataView = Backbone.Marionette.ItemView.extend({
3
+ pageflow.EditMetaDataView = Backbone.Marionette.Layout.extend({
4
4
  template: 'templates/edit_meta_data',
5
5
  className: 'edit_meta_data',
6
6
 
7
7
  mixins: [pageflow.failureIndicatingView],
8
8
 
9
- ui: {
10
- form: '.form_fields'
9
+ regions: {
10
+ formContainer: '.form_fields'
11
11
  },
12
12
 
13
13
  events: {
@@ -15,25 +15,31 @@ pageflow.EditMetaDataView = Backbone.Marionette.ItemView.extend({
15
15
  },
16
16
 
17
17
  onRender: function() {
18
- this.ui.form.append(this.subview(new pageflow.TextInputView({
19
- model: this.model,
20
- propertyName: 'title'
21
- })).el);
22
-
23
- this.ui.form.append(this.subview(new pageflow.TextAreaInputView({
24
- model: this.model,
25
- propertyName: 'summary'
26
- })).el);
27
-
28
- this.ui.form.append(this.subview(new pageflow.TextAreaInputView({
29
- model: this.model,
30
- propertyName: 'credits'
31
- })).el);
32
-
33
- this.ui.form.append(this.subview(new pageflow.CheckBoxInputView({
34
- model: this.model,
35
- propertyName: 'manual_start'
36
- })).el);
18
+ var configurationEditor = new pageflow.ConfigurationEditorView({
19
+ model: this.model
20
+ });
21
+
22
+ configurationEditor.tab('general', function() {
23
+ this.input('title', pageflow.TextInputView);
24
+ this.input('summary', pageflow.TextAreaInputView);
25
+ this.input('credits', pageflow.TextAreaInputView);
26
+ });
27
+
28
+ configurationEditor.tab('widgets', function() {
29
+ this.input('manual_start', pageflow.CheckBoxInputView);
30
+ this.input('home_button_enabled', pageflow.CheckBoxInputView, {
31
+ disabled: !pageflow.theming.hasHomeButton(),
32
+ displayUncheckedIfDisabled: true
33
+ });
34
+ if (pageflow.theming.hasHomeButton()) {
35
+ this.input('home_url', pageflow.TextInputView, {
36
+ placeholder: pageflow.theming.get('pretty_url'),
37
+ visibleBinding: 'home_button_enabled'
38
+ });
39
+ }
40
+ });
41
+
42
+ this.formContainer.show(configurationEditor);
37
43
  },
38
44
 
39
45
  goBack: function() {
@@ -21,7 +21,11 @@ pageflow.EntryPreviewView = Backbone.Marionette.ItemView.extend({
21
21
 
22
22
  this.update();
23
23
 
24
- this.listenTo(pageflow.entry, 'sync:order change:credits', this.update);
24
+ this.listenTo(pageflow.entry, 'sync:order', this.update);
25
+ this.listenTo(pageflow.entry, 'change:credits change:home_url change:home_button_enabled', function() {
26
+ pageflow.entry.once('sync', this.update, this);
27
+ });
28
+
25
29
  this.listenTo(pageflow.chapters, 'sync', this.update);
26
30
  this.listenTo(pageflow.pages, 'sync', this.update);
27
31
 
@@ -23,7 +23,8 @@ pageflow.FileItemView = Backbone.Marionette.ItemView.extend({
23
23
 
24
24
  events: {
25
25
  'click .select': function() {
26
- this.$el.trigger('file-selected', this.model);
26
+ this.options.selectionHandler.call(this.model);
27
+ pageflow.editor.navigate(this.options.selectionHandler.getReferer(), {trigger: true});
27
28
  return false;
28
29
  },
29
30
 
@@ -71,7 +72,7 @@ pageflow.FileItemView = Backbone.Marionette.ItemView.extend({
71
72
  this.ui.downloadLink.attr('href', this.model.get('url'));
72
73
  this.ui.downloads.toggle(this.model.isUploaded());
73
74
 
74
- this.ui.selectButton.toggle(this.options.selectable);
75
+ this.ui.selectButton.toggle(!!this.options.selectionHandler);
75
76
 
76
77
  this.ui.cancelButton.toggle(this.model.isUploading());
77
78
  this.ui.removeButton.toggle(!this.model.isUploading());
@@ -61,7 +61,7 @@ pageflow.FilesView = Backbone.Marionette.ItemView.extend({
61
61
  collection: options.collection,
62
62
  itemViewConstructor: options.itemView,
63
63
  itemViewOptions: {
64
- selectable: this.options.tabName === name
64
+ selectionHandler: this.options.tabName === name && this.options.selectionHandler
65
65
  },
66
66
  blankSlateViewConstructor: Backbone.Marionette.ItemView.extend({
67
67
  template: 'templates/files_blank_slate'
@@ -75,8 +75,8 @@ pageflow.FilesView = Backbone.Marionette.ItemView.extend({
75
75
  },
76
76
 
77
77
  goBack: function() {
78
- if (this.options.page) {
79
- editor.navigate('/pages/' + this.options.page.id + '/files', {trigger: true});
78
+ if (this.options.selectionHandler) {
79
+ editor.navigate(this.options.selectionHandler.getReferer(), {trigger: true});
80
80
  }
81
81
  else {
82
82
  editor.navigate('/', {trigger: true});
@@ -85,12 +85,5 @@ pageflow.FilesView = Backbone.Marionette.ItemView.extend({
85
85
 
86
86
  upload: function() {
87
87
  pageflow.app.trigger('request-upload');
88
- },
89
-
90
- updatePage: function(event, file) {
91
- if (this.options.page) {
92
- this.options.page.configuration.setReference(this.options.pageAttributeName, file);
93
- this.goBack();
94
- }
95
88
  }
96
89
  });