pageflow 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of pageflow might be problematic. Click here for more details.
- checksums.yaml +8 -8
- data/Rakefile +2 -1
- data/admins/pageflow/accounts.rb +20 -4
- data/admins/pageflow/entry.rb +4 -5
- data/app/assets/javascripts/pageflow/audio_player.js +16 -7
- data/app/assets/javascripts/pageflow/base.js +5 -0
- data/app/assets/javascripts/pageflow/built_in_widget_types.js +11 -0
- data/app/assets/javascripts/pageflow/cookies.js +43 -0
- data/app/assets/javascripts/pageflow/editor/base.js +2 -10
- data/app/assets/javascripts/pageflow/editor/collections/widgets_collection.js +16 -0
- data/app/assets/javascripts/pageflow/editor/controllers/sidebar_controller.js +3 -2
- data/app/assets/javascripts/pageflow/editor/edit_widget.jst.ejs +2 -0
- data/app/assets/javascripts/pageflow/editor/initializers/setup_widget_types.js +3 -0
- data/app/assets/javascripts/pageflow/editor/models/configuration.js +18 -9
- data/app/assets/javascripts/pageflow/editor/models/edit_lock_container.js +1 -0
- data/app/assets/javascripts/pageflow/editor/models/entry.js +13 -3
- data/app/assets/javascripts/pageflow/editor/models/entry_configuration.js +4 -0
- data/app/assets/javascripts/pageflow/editor/models/entry_configuration_file_selection_handler.js +11 -0
- data/app/assets/javascripts/pageflow/editor/models/image_file.js +4 -0
- data/app/assets/javascripts/pageflow/editor/models/mixins/widget_subject.js +37 -0
- data/app/assets/javascripts/pageflow/editor/models/page.js +1 -1
- data/app/assets/javascripts/pageflow/editor/models/page_configuration_file_selection_handler.js +1 -25
- data/app/assets/javascripts/pageflow/editor/models/theming.js +3 -0
- data/app/assets/javascripts/pageflow/editor/models/video_file.js +7 -0
- data/app/assets/javascripts/pageflow/editor/models/widget.js +19 -0
- data/app/assets/javascripts/pageflow/editor/routers/sidebar_router.js +1 -0
- data/app/assets/javascripts/pageflow/editor/templates/background_positioning.jst.ejs +18 -0
- data/app/assets/javascripts/pageflow/editor/templates/background_positioning_preview.jst.ejs +2 -0
- data/app/assets/javascripts/pageflow/editor/templates/background_positioning_sliders.jst.ejs +6 -0
- data/app/assets/javascripts/pageflow/editor/templates/edit_meta_data.jst.ejs +1 -1
- data/app/assets/javascripts/pageflow/editor/templates/edit_widget.jst.ejs +2 -0
- data/app/assets/javascripts/pageflow/editor/templates/edit_widgets.jst.ejs +2 -0
- data/app/assets/javascripts/pageflow/editor/templates/entry_preview.jst.ejs +1 -3
- data/app/assets/javascripts/pageflow/editor/views/background_positioning_preview_view.js +39 -0
- data/app/assets/javascripts/pageflow/editor/views/background_positioning_sliders_view.js +94 -0
- data/app/assets/javascripts/pageflow/editor/views/background_positioning_view.js +67 -0
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/audio.js +1 -1
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/audio_loop.js +1 -1
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/background_image.js +1 -1
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/background_video.js +4 -3
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/internal_links.js +1 -1
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/video.js +9 -2
- data/app/assets/javascripts/pageflow/editor/views/edit_meta_data_view.js +18 -2
- data/app/assets/javascripts/pageflow/editor/views/edit_widget_view.js +29 -0
- data/app/assets/javascripts/pageflow/editor/views/edit_widgets_view.js +20 -0
- data/app/assets/javascripts/pageflow/editor/views/embedded/background_image_embedded_view.js +8 -3
- data/app/assets/javascripts/pageflow/editor/views/entry_preview_view.js +53 -9
- data/app/assets/javascripts/pageflow/editor/views/page_item_view.js +1 -1
- data/app/assets/javascripts/pageflow/editor/views/page_preview_view.js +11 -3
- data/app/assets/javascripts/pageflow/events.js +1 -0
- data/app/assets/javascripts/pageflow/features/hashchange_support.js +8 -0
- data/app/assets/javascripts/pageflow/history.js +14 -2
- data/app/assets/javascripts/pageflow/page_types/audio.js +18 -6
- data/app/assets/javascripts/pageflow/page_types/audio_loop.js +19 -7
- data/app/assets/javascripts/pageflow/page_types/background_video.js +41 -33
- data/app/assets/javascripts/pageflow/page_types/mixins/video_helpers.js +7 -16
- data/app/assets/javascripts/pageflow/ready.js +12 -25
- data/app/assets/javascripts/pageflow/slideshow.js +5 -5
- data/app/assets/javascripts/pageflow/slideshow/hide_text_on_swipe.js +1 -1
- data/app/assets/javascripts/pageflow/slideshow/page_widget.js +11 -1
- data/app/assets/javascripts/pageflow/slideshow/scroll_indicator_widget.js +19 -2
- data/app/assets/javascripts/pageflow/slideshow/scroller_widget.js +31 -6
- data/app/assets/javascripts/pageflow/slideshow/swipe_gesture.js +6 -5
- data/app/assets/javascripts/pageflow/ui.js +16 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/object.js +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/renderer.js +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/check_box.jst.ejs +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/file_input.jst.ejs +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/page_reference.jst.ejs +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/select_input.jst.ejs +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/slider_input.jst.ejs +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/text_area_input.jst.ejs +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/text_input.jst.ejs +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/url_input.jst.ejs +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/templates/tabs_view.jst.ejs +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/views/collection_view.js +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/views/configuration_editor_tab_view.js +8 -1
- data/app/assets/javascripts/pageflow/{editor → ui}/views/configuration_editor_view.js +3 -1
- data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/check_box_input_view.js +1 -1
- data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/file_input_view.js +10 -8
- data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/page_reference_input_view.js +1 -1
- data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/proxy_url_input_view.js +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/select_input_view.js +41 -1
- data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/slider_input_view.js +1 -1
- data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/text_area_input_view.js +1 -1
- data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/text_input_view.js +8 -2
- data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/url_input_view.js +9 -3
- data/app/assets/javascripts/pageflow/{editor/views → ui/views/mixins}/input_view.js +5 -1
- data/app/assets/javascripts/pageflow/{editor → ui}/views/mixins/subview_container.js +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/views/sortable_collection_view.js +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/views/tabs_view.js +11 -2
- data/app/assets/javascripts/pageflow/video_player/lazy.js +4 -1
- data/app/assets/javascripts/pageflow/visited.js +56 -0
- data/app/assets/javascripts/pageflow/widget_types.js +27 -0
- data/app/assets/javascripts/pageflow/widgets/events.js +33 -0
- data/app/assets/javascripts/pageflow/widgets/navigation.js +42 -33
- data/app/assets/javascripts/pageflow/widgets/navigation_mobile.js +60 -38
- data/app/assets/javascripts/pageflow/widgets/overview.js +3 -3
- data/app/assets/javascripts/pageflow/widgets/page_navigation_list.js +34 -4
- data/app/assets/javascripts/pageflow/widgets/share_menu.js +60 -0
- data/app/assets/stylesheets/pageflow/admin.css.scss +1 -0
- data/app/assets/stylesheets/pageflow/admin/tabs_view.css.scss +50 -0
- data/app/assets/stylesheets/pageflow/application_with_simulated_media_queries.css.scss +2 -0
- data/app/assets/stylesheets/pageflow/base.css.scss +2 -1
- data/app/assets/stylesheets/pageflow/editor/{image_positioning.css.scss → background_positioning.css.scss} +66 -65
- data/app/assets/stylesheets/pageflow/editor/base.css.scss +7 -5
- data/app/assets/stylesheets/pageflow/editor/file_thumbnails.css.scss +7 -9
- data/app/assets/stylesheets/pageflow/editor/select_button.css.scss +4 -4
- data/app/assets/stylesheets/pageflow/editor/widgets.css.scss +4 -0
- data/app/assets/stylesheets/pageflow/entries.css.scss +5 -0
- data/app/assets/stylesheets/pageflow/mixins/breakpoints.css.scss +75 -10
- data/app/assets/stylesheets/pageflow/multimedia_alert.css.scss +31 -30
- data/app/assets/stylesheets/pageflow/navigation_bar.css.scss +4 -0
- data/app/assets/stylesheets/pageflow/navigation_mobile.css.scss +57 -58
- data/app/assets/stylesheets/pageflow/player_controls.css.scss +2 -2
- data/app/assets/stylesheets/pageflow/slideshow.css.scss +4 -1
- data/app/assets/stylesheets/pageflow/subshare.css.scss +28 -0
- data/app/assets/stylesheets/pageflow/ui.css.scss +7 -0
- data/app/assets/stylesheets/pageflow/{editor → ui}/forms.css.scss +1 -0
- data/app/assets/stylesheets/pageflow/{editor → ui}/tabs_view.css.scss +1 -0
- data/app/controllers/pageflow/editor/widgets_controller.rb +39 -0
- data/app/controllers/pageflow/entries_controller.rb +10 -1
- data/app/helpers/pageflow/entries_helper.rb +7 -0
- data/app/helpers/pageflow/page_types_helper.rb +7 -7
- data/app/helpers/pageflow/pages_helper.rb +36 -5
- data/app/helpers/pageflow/social_share_helper.rb +54 -0
- data/app/helpers/pageflow/widgets_helper.rb +43 -0
- data/app/models/pageflow/draft_entry.rb +4 -1
- data/app/models/pageflow/entry.rb +1 -0
- data/app/models/pageflow/published_entry.rb +6 -3
- data/app/models/pageflow/revision.rb +5 -0
- data/app/models/pageflow/theming.rb +3 -0
- data/app/models/pageflow/widget.rb +74 -0
- data/app/views/admin/accounts/_form.html.erb +10 -0
- data/app/views/components/pageflow/admin/entries_tab.rb +22 -0
- data/app/views/components/pageflow/admin/members_tab.rb +35 -0
- data/app/views/components/pageflow/admin/revisions_tab.rb +51 -0
- data/app/views/components/pageflow/admin/tabs_view.rb +78 -0
- data/app/views/components/pageflow/admin/users_tab.rb +22 -0
- data/app/views/layouts/pageflow/application.html.erb +5 -5
- data/app/views/pageflow/editor/entries/_entry.json.jbuilder +7 -4
- data/app/views/pageflow/editor/files/_file.json.jbuilder +2 -2
- data/app/views/pageflow/editor/widgets/_widget.json.jbuilder +2 -0
- data/app/views/pageflow/editor/widgets/index.json.jbuilder +1 -0
- data/app/views/pageflow/entries/_entry.html.erb +6 -2
- data/app/views/pageflow/entries/_mobile_navigation.html.erb +56 -0
- data/app/views/pageflow/entries/_navigation.html.erb +3 -53
- data/app/views/pageflow/entries/edit.html.erb +2 -0
- data/app/views/pageflow/entries/navigation/_bar_top.html.erb +7 -3
- data/app/views/pageflow/entries/navigation/_page.html.erb +2 -2
- data/app/views/pageflow/entries/partials.html.erb +1 -1
- data/app/views/pageflow/entries/show.html.erb +12 -4
- data/app/views/pageflow/files/show.html.erb +5 -0
- data/app/views/pageflow/pages/templates/_audio_loop.html.erb +1 -1
- data/app/views/pageflow/pages/templates/_background_video.html.erb +2 -2
- data/app/views/pageflow/pages/templates/_video.html.erb +4 -3
- data/app/views/pageflow/{entries/_social_meta_tags.html.erb → social_share/_entry_meta_tags.html.erb} +2 -2
- data/app/views/pageflow/social_share/_image_tags.html.erb +3 -0
- data/app/views/pageflow/social_share/_page_meta_tags.html.erb +9 -0
- data/config/initializers/admin_resource_tabs.rb +7 -0
- data/config/initializers/paperclip.rb +1 -1
- data/config/initializers/view_components.rb +9 -1
- data/config/initializers/widget_types.rb +4 -0
- data/config/locales/activerecord.de.yml +5 -1
- data/config/locales/admin/tabs.de.yml +8 -0
- data/config/locales/editor.de.yml +5 -4
- data/config/locales/pageflow/editor/background_positioning.de.yml +13 -0
- data/config/locales/pageflow/ui.de.yml +6 -0
- data/config/locales/pageflow/widgets.de.yml +14 -0
- data/config/routes.rb +6 -0
- data/config/spring.rb +2 -1
- data/db/migrate/20141027102310_create_widgets.rb +11 -0
- data/db/migrate/20141028125408_add_emphasize_chapter_beginning_to_revisions.rb +5 -0
- data/db/migrate/20141119164526_add_emphasize_new_pages_to_revisions.rb +5 -0
- data/db/migrate/20141119174032_add_sharing_image_to_revisions.rb +7 -0
- data/lib/pageflow/ability_mixin.rb +2 -0
- data/lib/pageflow/admin/tabs.rb +18 -0
- data/lib/pageflow/built_in_widget_type.rb +27 -0
- data/lib/pageflow/configuration.rb +17 -0
- data/lib/pageflow/engine.rb +2 -0
- data/lib/pageflow/version.rb +1 -1
- data/lib/pageflow/widget_type.rb +52 -0
- data/lib/pageflow/widget_types.rb +50 -0
- data/spec/factories/audio_files.rb +1 -1
- data/spec/factories/chapters.rb +1 -1
- data/spec/factories/entries.rb +2 -2
- data/spec/factories/image_files.rb +1 -1
- data/spec/factories/video_files.rb +1 -1
- data/spec/factories/widgets.rb +6 -0
- data/vendor/assets/javascripts/audio5.min.js +3 -0
- metadata +104 -44
- data/app/assets/javascripts/pageflow/editor/templates/image_positioning.jst.ejs +0 -26
- data/app/assets/javascripts/pageflow/editor/views/image_positioning_view.js +0 -153
- data/app/views/admin/accounts/_entries_panel.html.arb +0 -15
- data/app/views/admin/accounts/_users_panel.html.arb +0 -15
- data/app/views/admin/entries/_members.html.arb +0 -29
- data/app/views/admin/entries/_revisions.html.arb +0 -45
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MTNhNTM1MWI5MWJmN2NmYmFkNjJjM2IyNWYxYTA4N2NiNmZhYmJmNw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MGMxMTY1ZGQwZDQwZDE1ZmU3ZjViMTkzNTgxODJhMmMzYjZiZDMyNQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ODY1MzZiZDZlNTc1OGYzZjg2MjcyYjUyODA4NDBkMmVlYTJkZDIzYjQ5NjRk
|
10
|
+
Y2QyODE5OTIxZWE4OTU2Nzk2Mzg3NGJhYWM4MTgxNTA5OWVkZmZjNGJmM2Uw
|
11
|
+
M2IwM2FjNDg5OTdhMTA4NDkyY2E5MWYzNmRhYjcyZjYxMWViMDk=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YjYxOGQ2ZDYzNmU0ZGZiYjI4Nzk3ODljOTkxZTI4Zjk3NzRlMmI3ZjAxMDIx
|
14
|
+
ZGUwNDE4N2NkODFjNjJjYjlhYmEwNTZhNDg1OTE1MDUzMzIwZmFhMjdlMGZj
|
15
|
+
ZDQ4ZDg4MTIwOGE5ZTJhN2NiMGYzMDFmMDdkMzc0YjBhZjRlZTU=
|
data/Rakefile
CHANGED
@@ -14,7 +14,8 @@ RDoc::Task.new(:rdoc) do |rdoc|
|
|
14
14
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
15
|
end
|
16
16
|
|
17
|
-
|
17
|
+
require File.expand_path('spec/support/pageflow/rails_version', File.dirname(__FILE__))
|
18
|
+
APP_RAKEFILE = File.expand_path("../spec/dummy/rails-#{Pageflow::RailsVersion.detect}/Rakefile", __FILE__)
|
18
19
|
load 'rails/tasks/engine.rake'
|
19
20
|
|
20
21
|
Bundler::GemHelper.install_tasks
|
data/admins/pageflow/accounts.rb
CHANGED
@@ -17,14 +17,14 @@ module Pageflow
|
|
17
17
|
render 'account_details', :account => account
|
18
18
|
render 'theming_details', :account => account
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
end
|
20
|
+
tabs_view(Pageflow.config.admin_resource_tabs.find_by_resource(:theming),
|
21
|
+
:i18n => 'pageflow.admin.resource_tabs',
|
22
|
+
:build_args => [account.default_theming])
|
24
23
|
end
|
25
24
|
|
26
25
|
controller do
|
27
26
|
helper ThemesHelper
|
27
|
+
helper WidgetsHelper
|
28
28
|
|
29
29
|
def new
|
30
30
|
@account = Account.new
|
@@ -35,6 +35,22 @@ module Pageflow
|
|
35
35
|
@account = Account.new(permitted_params[:account])
|
36
36
|
@account.build_default_theming(permitted_params[:account][:default_theming_attributes])
|
37
37
|
super
|
38
|
+
update_widgets
|
39
|
+
end
|
40
|
+
|
41
|
+
def update
|
42
|
+
super
|
43
|
+
update_widgets
|
44
|
+
end
|
45
|
+
|
46
|
+
def update_widgets
|
47
|
+
@account.default_theming.widgets.batch_update!(widgets_params) if @account.valid?
|
48
|
+
end
|
49
|
+
|
50
|
+
def widgets_params
|
51
|
+
params.fetch(:widgets, {}).map do |role, type_name|
|
52
|
+
{role: role, type_name: type_name}
|
53
|
+
end
|
38
54
|
end
|
39
55
|
|
40
56
|
def permitted_params
|
data/admins/pageflow/entry.rb
CHANGED
@@ -81,16 +81,15 @@ module Pageflow
|
|
81
81
|
render 'attributes_table', :entry => entry
|
82
82
|
render 'links', :entry => entry
|
83
83
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
end
|
84
|
+
tabs_view(Pageflow.config.admin_resource_tabs.find_by_resource(:entry),
|
85
|
+
:i18n => 'pageflow.admin.resource_tabs',
|
86
|
+
:build_args => [entry])
|
88
87
|
end
|
89
88
|
|
90
89
|
controller do
|
91
90
|
helper FoldersHelper
|
92
91
|
helper EntriesHelper
|
93
|
-
helper Admin::RevisionsHelper
|
92
|
+
helper Pageflow::Admin::RevisionsHelper
|
94
93
|
|
95
94
|
def scoped_collection
|
96
95
|
params.key?(:folder_id) ? super.where(:folder_id => params[:folder_id]) : super
|
@@ -1,4 +1,6 @@
|
|
1
|
-
pageflow.AudioPlayer = function(sources,
|
1
|
+
pageflow.AudioPlayer = function(sources, options) {
|
2
|
+
options = options || {};
|
3
|
+
|
2
4
|
var codecMapping = {
|
3
5
|
vorbis: 'audio/ogg',
|
4
6
|
mp4: 'audio/mp4',
|
@@ -6,16 +8,23 @@ pageflow.AudioPlayer = function(sources, tag) {
|
|
6
8
|
};
|
7
9
|
|
8
10
|
var ready = new $.Deferred();
|
11
|
+
var loaded = new $.Deferred();
|
12
|
+
|
9
13
|
var audio = new Audio5js({
|
10
|
-
reusedTag: tag,
|
14
|
+
reusedTag: options.tag,
|
11
15
|
swf_path: pageflow.assetUrls.audioSwf,
|
12
16
|
throw_errors: false,
|
13
17
|
format_time: false,
|
14
18
|
codecs: ['vorbis', 'mp4', 'mp3'],
|
15
|
-
ready: ready.resolve
|
19
|
+
ready: ready.resolve,
|
20
|
+
loop: options.loop
|
16
21
|
});
|
17
22
|
|
18
23
|
audio.readyPromise = ready.promise();
|
24
|
+
audio.loadedPromise = loaded.promise();
|
25
|
+
|
26
|
+
audio.on('load', loaded.resolve);
|
27
|
+
|
19
28
|
audio.src = function(sources) {
|
20
29
|
ready.then(function() {
|
21
30
|
var source = _.detect(sources || [], function(source) {
|
@@ -59,16 +68,16 @@ pageflow.AudioPlayer = function(sources, tag) {
|
|
59
68
|
return audio;
|
60
69
|
};
|
61
70
|
|
62
|
-
pageflow.AudioPlayer.fromAudioTag = function(element) {
|
71
|
+
pageflow.AudioPlayer.fromAudioTag = function(element, options) {
|
63
72
|
return new pageflow.AudioPlayer(element.find('source').map(function() {
|
64
73
|
return {
|
65
74
|
src: $(this).attr('src'),
|
66
75
|
type: $(this).attr('type')
|
67
76
|
};
|
68
|
-
}).get(), element[0]);
|
77
|
+
}).get(), {tag: element[0], loop: options.loop});
|
69
78
|
};
|
70
79
|
|
71
|
-
pageflow.AudioPlayer.fromScriptTag = function(element) {
|
80
|
+
pageflow.AudioPlayer.fromScriptTag = function(element, options) {
|
72
81
|
var sources = element.length ? JSON.parse(element.text()) : [];
|
73
|
-
return new pageflow.AudioPlayer(sources);
|
82
|
+
return new pageflow.AudioPlayer(sources, options);
|
74
83
|
};
|
@@ -26,6 +26,8 @@
|
|
26
26
|
//= require backbone-rails
|
27
27
|
//= require_self
|
28
28
|
|
29
|
+
//= require ./cookies
|
30
|
+
//= require ./events
|
29
31
|
//= require ./page_type
|
30
32
|
//= require ./asset_urls
|
31
33
|
//= require ./preload
|
@@ -33,9 +35,12 @@
|
|
33
35
|
//= require ./features
|
34
36
|
//= require ./audio_player
|
35
37
|
//= require ./video_player
|
38
|
+
//= require ./visited
|
36
39
|
//= require ./print_layout
|
37
40
|
//= require ./history
|
38
41
|
//= require ./manual_start
|
42
|
+
//= require ./widget_types
|
43
|
+
//= require ./built_in_widget_types
|
39
44
|
|
40
45
|
//= require ./settings
|
41
46
|
|
@@ -0,0 +1,43 @@
|
|
1
|
+
/**
|
2
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/document.cookie
|
3
|
+
*/
|
4
|
+
|
5
|
+
pageflow.cookies = {
|
6
|
+
getItem: function (sKey) {
|
7
|
+
if (!sKey) { return null; }
|
8
|
+
return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null;
|
9
|
+
},
|
10
|
+
setItem: function (sKey, sValue, vEnd, sPath, sDomain, bSecure) {
|
11
|
+
if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) { return false; }
|
12
|
+
var sExpires = "";
|
13
|
+
if (vEnd) {
|
14
|
+
switch (vEnd.constructor) {
|
15
|
+
case Number:
|
16
|
+
sExpires = vEnd === Infinity ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + vEnd;
|
17
|
+
break;
|
18
|
+
case String:
|
19
|
+
sExpires = "; expires=" + vEnd;
|
20
|
+
break;
|
21
|
+
case Date:
|
22
|
+
sExpires = "; expires=" + vEnd.toUTCString();
|
23
|
+
break;
|
24
|
+
}
|
25
|
+
}
|
26
|
+
document.cookie = encodeURIComponent(sKey) + "=" + encodeURIComponent(sValue) + sExpires + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "") + (bSecure ? "; secure" : "");
|
27
|
+
return true;
|
28
|
+
},
|
29
|
+
removeItem: function (sKey, sPath, sDomain) {
|
30
|
+
if (!this.hasItem(sKey)) { return false; }
|
31
|
+
document.cookie = encodeURIComponent(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "");
|
32
|
+
return true;
|
33
|
+
},
|
34
|
+
hasItem: function (sKey) {
|
35
|
+
if (!sKey) { return false; }
|
36
|
+
return (new RegExp("(?:^|;\\s*)" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(document.cookie);
|
37
|
+
},
|
38
|
+
keys: function () {
|
39
|
+
var aKeys = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, "").split(/\s*(?:\=[^;]*)?;\s*/);
|
40
|
+
for (var nLen = aKeys.length, nIdx = 0; nIdx < nLen; nIdx++) { aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]); }
|
41
|
+
return aKeys;
|
42
|
+
}
|
43
|
+
};
|
@@ -1,7 +1,7 @@
|
|
1
1
|
//= require cocktail
|
2
2
|
//= require backbone.marionette
|
3
|
+
//= require pageflow/ui
|
3
4
|
//= require ./sync
|
4
|
-
//= require ./renderer
|
5
5
|
|
6
6
|
//= require jquery.ui.all
|
7
7
|
//= require jquery/layout
|
@@ -11,13 +11,6 @@
|
|
11
11
|
//= require jquery-fileupload/jquery.fileupload
|
12
12
|
//= require jquery-fileupload/jquery.fileupload-fp
|
13
13
|
|
14
|
-
//= require wysihtml5
|
15
|
-
//= require parser_rules/simple
|
16
|
-
|
17
|
-
//= require i18n
|
18
|
-
//= require i18n/translations
|
19
|
-
|
20
|
-
//= require ./object
|
21
14
|
//= require ./api
|
22
15
|
|
23
16
|
//= require_self
|
@@ -39,13 +32,12 @@
|
|
39
32
|
//= require ./views/file_item_view
|
40
33
|
//= require ./views/chapter_item_view
|
41
34
|
//= require ./views/page_item_view
|
42
|
-
//= require ./views/configuration_editor_tab_view
|
43
|
-
//= require ./views/configuration_editor_view
|
44
35
|
//= require_tree ./views/configuration_editors
|
45
36
|
//= require_tree ./views
|
46
37
|
|
47
38
|
//= require ./initializers/setup_config
|
48
39
|
//= require ./initializers/setup_file_types
|
40
|
+
//= require ./initializers/setup_widget_types
|
49
41
|
//= require ./initializers/setup_collections
|
50
42
|
//= require ./initializers/setup_page_types
|
51
43
|
//= require ./initializers/edit_lock
|
@@ -0,0 +1,16 @@
|
|
1
|
+
pageflow.WidgetsCollection = Backbone.Collection.extend({
|
2
|
+
model: pageflow.Widget,
|
3
|
+
|
4
|
+
initialize: function(models, options) {
|
5
|
+
options = options || {};
|
6
|
+
this.subject = options.subject;
|
7
|
+
},
|
8
|
+
|
9
|
+
url: function() {
|
10
|
+
return this.subject.widgetsUrlRoot() + '/widgets';
|
11
|
+
},
|
12
|
+
});
|
13
|
+
|
14
|
+
pageflow.WidgetsCollection.createForSubject = function(subject) {
|
15
|
+
return new pageflow.WidgetsCollection([], {subject: subject});
|
16
|
+
};
|
@@ -27,9 +27,10 @@ pageflow.SidebarController = Backbone.Marionette.Controller.extend({
|
|
27
27
|
}));
|
28
28
|
},
|
29
29
|
|
30
|
-
metaData: function() {
|
30
|
+
metaData: function(tab) {
|
31
31
|
this.region.show(new pageflow.EditMetaDataView({
|
32
|
-
model: this.entry
|
32
|
+
model: this.entry,
|
33
|
+
tab: tab
|
33
34
|
}));
|
34
35
|
},
|
35
36
|
|
@@ -19,7 +19,7 @@ pageflow.Configuration = Backbone.Model.extend({
|
|
19
19
|
* routes to lookup configuration via its page.
|
20
20
|
*/
|
21
21
|
getRoutableId: function() {
|
22
|
-
return this.
|
22
|
+
return this.parent.id;
|
23
23
|
},
|
24
24
|
|
25
25
|
getImageFileUrl: function(attribute) {
|
@@ -36,17 +36,26 @@ pageflow.Configuration = Backbone.Model.extend({
|
|
36
36
|
return this.getReference(attribute, pageflow.imageFiles);
|
37
37
|
},
|
38
38
|
|
39
|
-
|
40
|
-
var propertyName = this.
|
39
|
+
getFilePosition: function(attribute, coord) {
|
40
|
+
var propertyName = this._filePositionProperty(attribute, coord);
|
41
41
|
return this.has(propertyName) ? this.get(propertyName) : 50;
|
42
42
|
},
|
43
43
|
|
44
|
-
|
45
|
-
var propertyName = this.
|
44
|
+
setFilePosition: function(attribute, coord, value) {
|
45
|
+
var propertyName = this._filePositionProperty(attribute, coord);
|
46
46
|
this.set(propertyName, value);
|
47
47
|
},
|
48
48
|
|
49
|
-
|
49
|
+
setFilePositions: function(attribute, x, y) {
|
50
|
+
var attributes = {};
|
51
|
+
|
52
|
+
attributes[this._filePositionProperty(attribute, 'x')] = x;
|
53
|
+
attributes[this._filePositionProperty(attribute, 'y')] = y;
|
54
|
+
|
55
|
+
this.set(attributes);
|
56
|
+
},
|
57
|
+
|
58
|
+
_filePositionProperty: function(attribute, coord) {
|
50
59
|
return attribute.replace(/_id$/, '_' + coord);
|
51
60
|
},
|
52
61
|
|
@@ -93,15 +102,15 @@ pageflow.Configuration = Backbone.Model.extend({
|
|
93
102
|
},
|
94
103
|
|
95
104
|
_appendSuffix: function(sources) {
|
96
|
-
var
|
105
|
+
var parent = this.parent;
|
97
106
|
|
98
|
-
if (!
|
107
|
+
if (!parent || !parent.id) {
|
99
108
|
return sources;
|
100
109
|
}
|
101
110
|
|
102
111
|
return _.map(sources, function(source) {
|
103
112
|
var clone = _.clone(source);
|
104
|
-
clone.src = clone.src + '?e=' +
|
113
|
+
clone.src = clone.src + '?e=' + parent.id;
|
105
114
|
return clone;
|
106
115
|
});
|
107
116
|
}
|
@@ -3,12 +3,21 @@ pageflow.Entry = Backbone.Model.extend({
|
|
3
3
|
urlRoot: '/entries',
|
4
4
|
modelName: 'entry',
|
5
5
|
i18nKey: 'pageflow/entry',
|
6
|
+
collectionName: 'entries',
|
6
7
|
|
7
|
-
|
8
|
+
autoSaveWidgets: true,
|
9
|
+
|
10
|
+
mixins: [pageflow.filesCountWatcher,
|
11
|
+
pageflow.polling,
|
12
|
+
pageflow.failureTracking,
|
13
|
+
pageflow.widgetSubject],
|
8
14
|
|
9
15
|
initialize: function(attributes, options) {
|
10
16
|
options = options || {};
|
11
17
|
|
18
|
+
this.configuration = new pageflow.EntryConfiguration(this.get('configuration') || {});
|
19
|
+
this.configuration.parent = this;
|
20
|
+
|
12
21
|
this.files = options.files || pageflow.files;
|
13
22
|
this.chapters = options.chapters || pageflow.chapters;
|
14
23
|
this.chapters.parentModel = this;
|
@@ -26,7 +35,8 @@ pageflow.Entry = Backbone.Model.extend({
|
|
26
35
|
this.pages.sort();
|
27
36
|
});
|
28
37
|
|
29
|
-
this.listenTo(this, 'change
|
38
|
+
this.listenTo(this.configuration, 'change', function() {
|
39
|
+
this.trigger('change:configuration');
|
30
40
|
this.save();
|
31
41
|
});
|
32
42
|
},
|
@@ -87,6 +97,6 @@ pageflow.Entry = Backbone.Model.extend({
|
|
87
97
|
},
|
88
98
|
|
89
99
|
toJSON: function() {
|
90
|
-
return
|
100
|
+
return this.configuration.toJSON();
|
91
101
|
}
|
92
102
|
});
|
data/app/assets/javascripts/pageflow/editor/models/entry_configuration_file_selection_handler.js
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
pageflow.EntryConfigurationFileSelectionHandler = function(options) {
|
2
|
+
this.call = function(file) {
|
3
|
+
pageflow.entry.configuration.setReference(options.attributeName, file);
|
4
|
+
};
|
5
|
+
|
6
|
+
this.getReferer = function() {
|
7
|
+
return '/meta_data/' + (options.returnToTab || 'general');
|
8
|
+
};
|
9
|
+
};
|
10
|
+
|
11
|
+
pageflow.editor.registerFileSelectionHandler('entryConfiguration', pageflow.EntryConfigurationFileSelectionHandler);
|