pageflow 0.1.0 → 0.2.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/admins/pageflow/accounts.rb +17 -49
- data/admins/pageflow/entry.rb +13 -6
- data/app/assets/fonts/pageflow/entypo.eot +0 -0
- data/app/assets/fonts/pageflow/entypo.svg +834 -0
- data/app/assets/fonts/pageflow/entypo.ttf +0 -0
- data/app/assets/fonts/pageflow/entypo.woff +0 -0
- data/app/assets/fonts/pageflow/fontawesome-webfont.eot +0 -0
- data/app/assets/fonts/pageflow/fontawesome-webfont.otf +0 -0
- data/app/assets/fonts/pageflow/fontawesome-webfont.svg +504 -0
- data/app/assets/fonts/pageflow/fontawesome-webfont.ttf +0 -0
- data/app/assets/fonts/pageflow/fontawesome-webfont.woff +0 -0
- data/app/assets/images/pageflow/themes/default/audio_sprite.png +0 -0
- data/app/assets/images/pageflow/themes/default/image_sprite.png +0 -0
- data/app/assets/images/pageflow/themes/default/internal_links_sprite.png +0 -0
- data/app/assets/images/pageflow/themes/default/loading_spinner.png +0 -0
- data/app/assets/images/pageflow/themes/default/loading_spinner_bg.png +0 -0
- data/app/assets/images/pageflow/themes/default/logo_header.png +0 -0
- data/app/assets/images/pageflow/themes/default/logo_header_invert.png +0 -0
- data/app/assets/images/pageflow/themes/default/scroll_indicator_sprite.png +0 -0
- data/app/assets/images/pageflow/themes/default/text_sprite.png +0 -0
- data/app/assets/images/pageflow/themes/default/video_sprite.png +0 -0
- data/app/assets/javascripts/pageflow/editor/base.js +1 -0
- data/app/assets/javascripts/pageflow/editor/collections/mixins/files_collection.js +11 -0
- data/app/assets/javascripts/pageflow/editor/collections/subset_collection.js +11 -0
- data/app/assets/javascripts/pageflow/editor/controllers/sidebar_controller.js +8 -1
- data/app/assets/javascripts/pageflow/editor/initializers/setup_config.js +3 -0
- data/app/assets/javascripts/pageflow/editor/models/audio_file.js +1 -0
- data/app/assets/javascripts/pageflow/editor/models/chapter.js +1 -0
- data/app/assets/javascripts/pageflow/editor/models/configuration.js +1 -0
- data/app/assets/javascripts/pageflow/editor/models/encoding_confirmation.js +45 -0
- data/app/assets/javascripts/pageflow/editor/models/entry.js +6 -14
- data/app/assets/javascripts/pageflow/editor/models/entry_publication.js +40 -0
- data/app/assets/javascripts/pageflow/editor/models/file_stage.js +5 -0
- data/app/assets/javascripts/pageflow/editor/models/image_file.js +5 -0
- data/app/assets/javascripts/pageflow/editor/models/mixins/encoded_file.js +31 -14
- data/app/assets/javascripts/pageflow/editor/models/mixins/files_count_watcher.js +4 -0
- data/app/assets/javascripts/pageflow/editor/models/mixins/stage_provider.js +2 -2
- data/app/assets/javascripts/pageflow/editor/models/other_entry.js +1 -0
- data/app/assets/javascripts/pageflow/editor/models/page.js +1 -0
- data/app/assets/javascripts/pageflow/editor/models/video_file.js +1 -0
- data/app/assets/javascripts/pageflow/editor/routers/sidebar_router.js +2 -0
- data/app/assets/javascripts/pageflow/editor/templates/confirm_encoding.jst.ejs +15 -0
- data/app/assets/javascripts/pageflow/editor/templates/confirmable_file_item.jst.ejs +7 -0
- data/app/assets/javascripts/pageflow/editor/templates/{quota_decorator.jst.ejs → entry_publication_quota_decorator.jst.ejs} +1 -1
- data/app/assets/javascripts/pageflow/editor/templates/files_explorer.jst.ejs +5 -3
- data/app/assets/javascripts/pageflow/editor/templates/notifications.jst.ejs +6 -1
- data/app/assets/javascripts/pageflow/editor/views/confirm_encoding_view.js +76 -0
- data/app/assets/javascripts/pageflow/editor/views/confirmable_file_item_view.js +42 -0
- data/app/assets/javascripts/pageflow/editor/views/entry_publication_quota_decorator_view.js +49 -0
- data/app/assets/javascripts/pageflow/editor/views/file_meta_data_item_view.js +1 -1
- data/app/assets/javascripts/pageflow/editor/views/file_stage_item_view.js +1 -0
- data/app/assets/javascripts/pageflow/editor/views/file_thumbnail_view.js +2 -1
- data/app/assets/javascripts/pageflow/editor/views/files_explorer_view.js +3 -3
- data/app/assets/javascripts/pageflow/editor/views/input_view.js +2 -2
- data/app/assets/javascripts/pageflow/editor/views/inputs/select_input_view.js +1 -1
- data/app/assets/javascripts/pageflow/editor/views/notifications_view.js +12 -1
- data/app/assets/javascripts/pageflow/editor/views/publish_entry_view.js +5 -4
- data/app/assets/javascripts/pageflow/page_types/video.js +0 -1
- data/app/assets/javascripts/pageflow/widgets/player_controls.js +1 -1
- data/app/assets/stylesheets/pageflow/editor/base.css.scss +1 -0
- data/app/assets/stylesheets/pageflow/editor/confirmable_files.css.scss +67 -0
- data/app/assets/stylesheets/pageflow/editor/file_stages.css.scss +5 -0
- data/app/assets/stylesheets/pageflow/editor/file_thumbnails.css.scss +10 -0
- data/app/assets/stylesheets/pageflow/editor/files.css.scss +3 -1
- data/app/assets/stylesheets/pageflow/editor/files_explorer.css.scss +30 -2
- data/app/assets/stylesheets/pageflow/editor/files_gallery.css.scss +1 -2
- data/app/assets/stylesheets/pageflow/editor/notifications.css.scss +18 -1
- data/app/assets/stylesheets/pageflow/editor/quotas.css.scss +1 -1
- data/app/assets/stylesheets/pageflow/editor/tabs_view.css.scss +2 -0
- data/app/assets/stylesheets/pageflow/mixins.css.scss +2 -1
- data/app/assets/stylesheets/pageflow/mixins/icons.css.scss +4 -308
- data/app/assets/stylesheets/pageflow/mixins/icons/entypo.css.scss +295 -0
- data/app/assets/stylesheets/pageflow/mixins/icons/fontawesome.css.scss +520 -0
- data/app/assets/stylesheets/pageflow/mixins/label.css.scss +5 -0
- data/app/assets/stylesheets/pageflow/themes/default.css.scss +11 -0
- data/app/assets/stylesheets/pageflow/themes/default/anchors.css.scss +3 -8
- data/app/assets/stylesheets/pageflow/themes/default/loading_spinner.css.scss +96 -9
- data/app/assets/stylesheets/pageflow/themes/default/navigation.css.scss +128 -183
- data/app/assets/stylesheets/pageflow/themes/default/overview.css.scss +48 -6
- data/app/assets/stylesheets/pageflow/themes/default/page.css.scss +3 -6
- data/app/assets/stylesheets/pageflow/themes/default/player_controls.css.scss +31 -0
- data/app/controllers/concerns/pageflow/quota_verification.rb +4 -4
- data/app/controllers/pageflow/editor/encoding_confirmations_controller.rb +45 -0
- data/app/controllers/pageflow/editor/entry_publications_controller.rb +48 -0
- data/app/controllers/pageflow/entries_controller.rb +8 -3
- data/app/controllers/pageflow/revisions_controller.rb +0 -10
- data/app/controllers/pageflow/video_files_controller.rb +7 -1
- data/app/helpers/pageflow/config_helper.rb +9 -0
- data/app/helpers/pageflow/entries_helper.rb +3 -3
- data/app/helpers/pageflow/pages_helper.rb +2 -2
- data/app/helpers/pageflow/quota_helper.rb +1 -1
- data/app/jobs/pageflow/poll_meta_data_from_zencoder_job.rb +9 -0
- data/app/jobs/pageflow/poll_zencoder_job.rb +3 -3
- data/app/jobs/pageflow/request_meta_data_from_zencoder_job.rb +14 -0
- data/app/jobs/pageflow/submit_file_to_zencoder_job.rb +0 -2
- data/app/models/pageflow/account.rb +9 -4
- data/app/models/pageflow/audio_file.rb +2 -0
- data/app/models/pageflow/draft_entry.rb +5 -1
- data/app/models/pageflow/edit_lock.rb +2 -0
- data/app/models/pageflow/encoding_confirmation.rb +40 -0
- data/app/models/pageflow/entry.rb +3 -3
- data/app/models/pageflow/entry_publication.rb +27 -0
- data/app/models/pageflow/page.rb +6 -6
- data/app/models/pageflow/published_entry.rb +3 -3
- data/app/models/pageflow/theming.rb +20 -0
- data/app/models/pageflow/video_file.rb +2 -0
- data/app/state_machines/pageflow/encoded_file_state_machine.rb +41 -1
- data/app/views/admin/accounts/_account_details.html.arb +5 -0
- data/app/views/admin/accounts/_entries_panel.html.arb +15 -0
- data/app/views/admin/accounts/_form.html.erb +18 -0
- data/app/views/admin/accounts/_theming_details.html.arb +6 -0
- data/app/views/admin/accounts/_users_panel.html.arb +15 -0
- data/app/views/admin/entries/_links.html.arb +3 -2
- data/app/views/admin/users/_form.html.erb +2 -2
- data/app/views/admin/users/_quota_exhausted.html.erb +1 -0
- data/app/views/pageflow/config/_editor_seeds.json.jbuilder +2 -0
- data/app/views/pageflow/editor/encoding_confirmations/_summary.html.erb +1 -0
- data/app/views/pageflow/editor/encoding_confirmations/check.json.jbuilder +3 -0
- data/app/views/pageflow/editor/entry_publications/check.json.jbuilder +11 -0
- data/app/views/pageflow/editor/quotas/{_published_entries_exceeded.html.erb → _published_entries_exhausted.html.erb} +1 -1
- data/app/views/pageflow/entries/_entry.html.erb +1 -1
- data/app/views/pageflow/entries/_navigation.html.erb +2 -2
- data/app/views/pageflow/entries/_social_meta_tags.html.erb +2 -2
- data/app/views/pageflow/entries/_theming.css.erb +1 -0
- data/app/views/pageflow/entries/edit.html.erb +3 -1
- data/app/views/pageflow/entries/navigation/_bar_top.html.erb +2 -2
- data/app/views/pageflow/entries/show.css.erb +3 -1
- data/app/views/pageflow/entries/show.html.erb +13 -13
- data/config/initializers/page_type_helpers.rb +1 -0
- data/config/locales/activerecord.de.yml +41 -22
- data/config/locales/admin/accounts.yml +0 -1
- data/config/locales/admin/entries.yml +6 -2
- data/config/locales/admin/themings.yml +7 -0
- data/config/locales/admin/users/me.de.yml +2 -2
- data/config/locales/editor.de.yml +9 -3
- data/config/locales/quotas.de.yml +1 -1
- data/config/routes.rb +34 -27
- data/db/migrate/20140624135420_create_themings.rb +15 -0
- data/db/migrate/20140624135421_create_themings_for_existing_accounts.rb +26 -0
- data/db/migrate/20140624135422_change_theme_references_to_theming_references.rb +45 -0
- data/db/migrate/20140624135423_remove_attributes_from_themes.rb +10 -0
- data/db/migrate/20140624135424_create_accounts_themes_join_table.rb +8 -0
- data/db/migrate/20140624135425_move_cname_from_account_to_theming.rb +21 -0
- data/db/migrate/20140625184800_drop_themes.rb +14 -0
- data/db/migrate/20140704110631_add_confirmed_by_to_encoded_files.rb +6 -0
- data/lib/generators/pageflow/initializer/templates/pageflow.rb +9 -0
- data/lib/generators/pageflow/theme/theme_generator.rb +28 -0
- data/lib/pageflow.rb +9 -2
- data/lib/pageflow/ability_mixin.rb +1 -1
- data/lib/pageflow/built_in_page_type.rb +1 -1
- data/lib/pageflow/configuration.rb +49 -6
- data/lib/pageflow/engine.rb +11 -1
- data/lib/pageflow/quota.rb +42 -15
- data/lib/pageflow/quotas.rb +15 -0
- data/lib/pageflow/seeds.rb +12 -16
- data/lib/pageflow/theme.rb +14 -0
- data/lib/pageflow/themes.rb +25 -0
- data/lib/pageflow/user_mixin.rb +1 -1
- data/lib/pageflow/version.rb +1 -1
- data/lib/pageflow/zencoder_meta_data_output_definition.rb +23 -0
- data/spec/factories/accounts.rb +9 -0
- data/spec/factories/audio_files.rb +46 -0
- data/spec/factories/chapters.rb +21 -0
- data/spec/factories/edit_locks.rb +11 -0
- data/spec/factories/entries.rb +33 -0
- data/spec/factories/file_usages.rb +8 -0
- data/spec/factories/folders.rb +8 -0
- data/spec/factories/image_files.rb +38 -0
- data/spec/factories/invited_user.rb +10 -0
- data/spec/factories/memberships.rb +8 -0
- data/spec/factories/pages.rb +14 -0
- data/spec/factories/revisions.rb +22 -0
- data/spec/factories/themings.rb +8 -0
- data/spec/factories/users.rb +39 -0
- data/spec/factories/video_files.rb +46 -0
- metadata +103 -39
- data/app/assets/javascripts/pageflow/editor/models/quota.js +0 -18
- data/app/assets/javascripts/pageflow/editor/views/quota_decorator_view.js +0 -45
- data/app/controllers/pageflow/editor/quotas_controller.rb +0 -13
- data/app/models/pageflow/theme.rb +0 -4
- data/app/views/admin/users/_quota_exceeded.html.erb +0 -1
- data/app/views/pageflow/editor/quotas/show.json.jbuilder +0 -5
@@ -3,6 +3,8 @@ module Pageflow
|
|
3
3
|
include EncodedFileStateMachine
|
4
4
|
include UploadedFile
|
5
5
|
|
6
|
+
belongs_to :confirmed_by, :class_name => 'User'
|
7
|
+
|
6
8
|
has_attached_file(:attachment_on_filesystem, Pageflow.config.paperclip_filesystem_default_options)
|
7
9
|
has_attached_file(:attachment_on_s3, Pageflow.config.paperclip_s3_default_options)
|
8
10
|
|
@@ -5,7 +5,7 @@ module Pageflow
|
|
5
5
|
attr_reader :entry, :draft
|
6
6
|
|
7
7
|
delegate(:id,
|
8
|
-
:edit_lock, :account, :
|
8
|
+
:edit_lock, :account, :theming, :slug,
|
9
9
|
:published_until, :published?,
|
10
10
|
:to_model, :to_key, :persisted?, :to_json,
|
11
11
|
:to => :entry)
|
@@ -62,6 +62,10 @@ module Pageflow
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
+
def stylesheet_model
|
66
|
+
@draft
|
67
|
+
end
|
68
|
+
|
65
69
|
private
|
66
70
|
|
67
71
|
def collection_containing(file)
|
@@ -2,6 +2,8 @@ module Pageflow
|
|
2
2
|
class EditLock < ActiveRecord::Base
|
3
3
|
TIME_TO_LIVE = 10.seconds
|
4
4
|
|
5
|
+
scope :active, ->(time = Time.now - TIME_TO_LIVE) { where('pageflow_edit_locks.updated_at >= ?', time) }
|
6
|
+
|
5
7
|
class Error < RuntimeError
|
6
8
|
def code
|
7
9
|
self.class.name.split('::').last.underscore
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Pageflow
|
2
|
+
class EncodingConfirmation
|
3
|
+
class QuotaExceededError < RuntimeError
|
4
|
+
end
|
5
|
+
|
6
|
+
attr_reader :entry, :attributes, :encoding_quota, :user
|
7
|
+
|
8
|
+
def initialize(entry, attributes, encoding_quota, user)
|
9
|
+
@entry = entry
|
10
|
+
@attributes = attributes
|
11
|
+
@encoding_quota = encoding_quota
|
12
|
+
@user = user
|
13
|
+
end
|
14
|
+
|
15
|
+
def exceeding?
|
16
|
+
assumed_quota.exceeded?
|
17
|
+
end
|
18
|
+
|
19
|
+
def save!
|
20
|
+
ActiveRecord::Base.transaction do
|
21
|
+
raise(QuotaExceededError) if exceeding?
|
22
|
+
|
23
|
+
files.each do |file|
|
24
|
+
file.confirmed_by = user
|
25
|
+
file.confirm_encoding!
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def assumed_quota
|
31
|
+
@assumed_quota ||= encoding_quota.assume(files: files)
|
32
|
+
end
|
33
|
+
|
34
|
+
def files
|
35
|
+
@files ||=
|
36
|
+
entry.video_files.find(attributes.fetch(:video_file_ids, [])) +
|
37
|
+
entry.audio_files.find(attributes.fetch(:audio_file_ids, []))
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -5,7 +5,7 @@ module Pageflow
|
|
5
5
|
|
6
6
|
belongs_to :account
|
7
7
|
belongs_to :folder
|
8
|
-
belongs_to :
|
8
|
+
belongs_to :theming
|
9
9
|
|
10
10
|
has_many :revisions, -> { order('frozen_at DESC') }
|
11
11
|
|
@@ -19,16 +19,16 @@ module Pageflow
|
|
19
19
|
has_many :video_files
|
20
20
|
has_many :audio_files
|
21
21
|
|
22
|
-
|
23
22
|
has_one :draft, -> { editable }, :class_name => 'Revision'
|
24
23
|
has_one :published_revision, -> { published }, :class_name => 'Revision'
|
25
24
|
|
26
25
|
has_one :edit_lock, :dependent => :destroy
|
27
26
|
|
28
|
-
validates :account, :
|
27
|
+
validates :account, :theming, :presence => true
|
29
28
|
validate :folder_belongs_to_same_account
|
30
29
|
|
31
30
|
scope :published, -> { joins(:published_revision) }
|
31
|
+
scope :editing, -> { joins(:edit_lock).merge(Pageflow::EditLock.active) }
|
32
32
|
|
33
33
|
after_create :create_draft!
|
34
34
|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Pageflow
|
2
|
+
class EntryPublication
|
3
|
+
attr_reader :entry, :attributes, :quota, :user
|
4
|
+
|
5
|
+
def initialize(entry, attributes, published_entries_quota, user)
|
6
|
+
@entry = entry
|
7
|
+
@attributes = attributes
|
8
|
+
@quota = published_entries_quota
|
9
|
+
@user = user
|
10
|
+
end
|
11
|
+
|
12
|
+
def exceeding?
|
13
|
+
assumed_quota.exceeded?
|
14
|
+
end
|
15
|
+
|
16
|
+
def save!
|
17
|
+
assumed_quota.verify_not_exceeded!
|
18
|
+
entry.publish(attributes.merge(creator: user))
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def assumed_quota
|
24
|
+
quota.assume(published_entry: entry)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/app/models/pageflow/page.rb
CHANGED
@@ -17,7 +17,7 @@ module Pageflow
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def thumbnail
|
20
|
-
model_name, attachment, property = thumbnail_definition
|
20
|
+
model_name, attachment, property, model_class = thumbnail_definition
|
21
21
|
|
22
22
|
begin
|
23
23
|
model_name.to_s.camelcase.constantize.find(configuration[property]).send(attachment)
|
@@ -30,17 +30,17 @@ module Pageflow
|
|
30
30
|
# TODO: this has to be refactored to be page type agnostic
|
31
31
|
if template == 'video' || template == 'background_video'
|
32
32
|
if configuration['poster_image_id'].present?
|
33
|
-
['pageflow/image_file', :
|
33
|
+
['pageflow/image_file', :processed_attachment, 'poster_image_id', 'image_file']
|
34
34
|
else
|
35
|
-
['pageflow/video_file', :poster, 'video_file_id']
|
35
|
+
['pageflow/video_file', :poster, 'video_file_id', 'video_file']
|
36
36
|
end
|
37
37
|
else
|
38
38
|
if configuration['thumbnail_image_id'].present?
|
39
|
-
['pageflow/image_file', :
|
39
|
+
['pageflow/image_file', :processed_attachment, 'thumbnail_image_id', 'image_file']
|
40
40
|
elsif configuration['after_image_id'].present?
|
41
|
-
['pageflow/image_file', :
|
41
|
+
['pageflow/image_file', :processed_attachment, 'after_image_id','image_file']
|
42
42
|
else
|
43
|
-
['pageflow/image_file', :
|
43
|
+
['pageflow/image_file', :processed_attachment, 'background_image_id', 'image_file']
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
@@ -5,7 +5,7 @@ module Pageflow
|
|
5
5
|
|
6
6
|
attr_reader :entry, :revision
|
7
7
|
|
8
|
-
delegate(:account, :
|
8
|
+
delegate(:account, :theming, :to_model, :to_key, :persisted?, :to => :entry)
|
9
9
|
|
10
10
|
delegate(:chapters, :pages,
|
11
11
|
:image_files, :video_files, :audio_files,
|
@@ -26,8 +26,8 @@ module Pageflow
|
|
26
26
|
pages.first.try(:thumbnail) || ImageFile.new.processed_attachment
|
27
27
|
end
|
28
28
|
|
29
|
-
def self.find(id)
|
30
|
-
PublishedEntry.new(
|
29
|
+
def self.find(id, scope = Entry)
|
30
|
+
PublishedEntry.new(scope.published.find(id))
|
31
31
|
end
|
32
32
|
|
33
33
|
def cache_key
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Pageflow
|
2
|
+
class Theming < ActiveRecord::Base
|
3
|
+
belongs_to :account
|
4
|
+
|
5
|
+
validates :account, :presence => true
|
6
|
+
validates_inclusion_of :theme_name, :in => ->(_) { Pageflow.config.themes.names }
|
7
|
+
|
8
|
+
def cname_domain
|
9
|
+
cname.split('.').pop(2).join('.')
|
10
|
+
end
|
11
|
+
|
12
|
+
def theme
|
13
|
+
Pageflow.config.themes.get(theme_name)
|
14
|
+
end
|
15
|
+
|
16
|
+
def name
|
17
|
+
I18n.t('admin.themings.name', :account_name => account.name, :theme_name => theme_name)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -3,6 +3,8 @@ module Pageflow
|
|
3
3
|
include EncodedFileStateMachine
|
4
4
|
include UploadedFile
|
5
5
|
|
6
|
+
belongs_to :confirmed_by, :class_name => 'User'
|
7
|
+
|
6
8
|
has_attached_file(:attachment_on_filesystem, Pageflow.config.paperclip_filesystem_default_options)
|
7
9
|
|
8
10
|
has_attached_file(:attachment_on_s3, Pageflow.config.paperclip_s3_default_options)
|
@@ -8,11 +8,15 @@ module Pageflow
|
|
8
8
|
|
9
9
|
state 'not_uploaded_to_s3'
|
10
10
|
state 'uploading_to_s3'
|
11
|
+
state 'waiting_for_meta_data'
|
12
|
+
state 'fetching_meta_data'
|
13
|
+
state 'waiting_for_confirmation'
|
11
14
|
state 'waiting_for_encoding'
|
12
15
|
state 'encoding'
|
13
16
|
state 'encoded'
|
14
17
|
|
15
18
|
state 'upload_to_s3_failed'
|
19
|
+
state 'fetching_meta_data_failed'
|
16
20
|
state 'encoding_failed'
|
17
21
|
|
18
22
|
event :publish do
|
@@ -21,6 +25,10 @@ module Pageflow
|
|
21
25
|
|
22
26
|
event :retry do
|
23
27
|
transition 'upload_to_s3_failed' => 'uploading_to_s3'
|
28
|
+
|
29
|
+
transition 'encoding_failed' => 'waiting_for_confirmation', :if => lambda { Pageflow.config.confirm_encoding_jobs }
|
30
|
+
transition 'encoded' => 'waiting_for_confirmation', :if => lambda { Pageflow.config.confirm_encoding_jobs }
|
31
|
+
|
24
32
|
transition 'encoding_failed' => 'waiting_for_encoding'
|
25
33
|
transition 'encoded' => 'waiting_for_encoding'
|
26
34
|
end
|
@@ -28,10 +36,34 @@ module Pageflow
|
|
28
36
|
job UploadFileToS3Job do
|
29
37
|
on_enter 'uploading_to_s3'
|
30
38
|
result :pending, :retry_after => 30.seconds
|
31
|
-
|
39
|
+
|
40
|
+
result :ok, :state => 'waiting_for_meta_data', :if => lambda { Pageflow.config.confirm_encoding_jobs }
|
41
|
+
result :ok, :state => 'waiting_for_encoding'
|
42
|
+
|
32
43
|
result :error => 'uploading_to_s3_failed'
|
33
44
|
end
|
34
45
|
|
46
|
+
job RequestMetaDataFromZencoderJob do
|
47
|
+
on_enter 'waiting_for_meta_data'
|
48
|
+
result :ok => 'fetching_meta_data'
|
49
|
+
result :error => 'fetching_meta_data_failed'
|
50
|
+
end
|
51
|
+
|
52
|
+
job PollMetaDataFromZencoderJob do
|
53
|
+
on_enter 'fetching_meta_data'
|
54
|
+
result :pending, :retry_after => 2.seconds
|
55
|
+
result :ok => 'waiting_for_confirmation'
|
56
|
+
result :error => 'fetching_meta_data_failed'
|
57
|
+
end
|
58
|
+
|
59
|
+
event :confirm_encoding do
|
60
|
+
transition 'waiting_for_confirmation' => 'waiting_for_encoding'
|
61
|
+
end
|
62
|
+
|
63
|
+
after_transition 'waiting_for_confirmation' => 'waiting_for_encoding' do |file|
|
64
|
+
Pageflow.config.hooks.invoke(:file_encoding_confirmed, :file => file)
|
65
|
+
end
|
66
|
+
|
35
67
|
job SubmitFileToZencoderJob do
|
36
68
|
on_enter 'waiting_for_encoding'
|
37
69
|
result :ok => 'encoding'
|
@@ -44,6 +76,14 @@ module Pageflow
|
|
44
76
|
result :ok => 'encoded'
|
45
77
|
result :error => 'encoding_failed'
|
46
78
|
end
|
79
|
+
|
80
|
+
after_transition any => 'encoded' do |file|
|
81
|
+
Pageflow.config.hooks.invoke(:file_encoded, :file => file)
|
82
|
+
end
|
83
|
+
|
84
|
+
after_transition any => 'encoding_failed' do |file|
|
85
|
+
Pageflow.config.hooks.invoke(:file_encoding_failed, :file => file)
|
86
|
+
end
|
47
87
|
end
|
48
88
|
end
|
49
89
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
panel t('activerecord.models.entry.other') do
|
2
|
+
if account.entries.any?
|
3
|
+
table_for account.entries, :i18n => Pageflow::Entry do
|
4
|
+
column :title do |entry|
|
5
|
+
link_to(entry.title, admin_entry_path(entry))
|
6
|
+
end
|
7
|
+
end
|
8
|
+
else
|
9
|
+
div :class => "blank_slate_container" do
|
10
|
+
span :class => "blank_slate" do
|
11
|
+
I18n.t('admin.accounts.no_entries')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<%= semantic_form_for [:admin, resource] do |f| %>
|
2
|
+
<%= f.inputs do %>
|
3
|
+
<%= f.input :name %>
|
4
|
+
<%= f.input :default_file_rights %>
|
5
|
+
<%= f.semantic_fields_for :default_theming do |theming| %>
|
6
|
+
<%= theming.input :cname %>
|
7
|
+
<%= theming.input :theme_name, :include_blank => false, :collection => Pageflow.config.themes.names %>
|
8
|
+
<%= theming.input :imprint_link_label %>
|
9
|
+
<%= theming.input :imprint_link_url %>
|
10
|
+
<%= theming.input :copyright_link_label %>
|
11
|
+
<%= theming.input :copyright_link_url %>
|
12
|
+
<% end %>
|
13
|
+
<% end %>
|
14
|
+
<%= f.actions do %>
|
15
|
+
<%= f.action(:submit) %>
|
16
|
+
<%= f.action(:cancel, :wrapper_html => {:class => 'cancel'}) %>
|
17
|
+
<% end %>
|
18
|
+
<% end %>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
panel I18n.t('activerecord.models.user.other') do
|
2
|
+
if account.users.any?
|
3
|
+
table_for account.users, :i18n => User do
|
4
|
+
column :full_name do |user|
|
5
|
+
link_to user.full_name, admin_user_path(user)
|
6
|
+
end
|
7
|
+
end
|
8
|
+
else
|
9
|
+
div :class => "blank_slate_container" do
|
10
|
+
span :class => "blank_slate" do
|
11
|
+
I18n.t('admin.accounts.no_members')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -1,8 +1,9 @@
|
|
1
1
|
para do
|
2
2
|
if authorized?(:edit, Pageflow::Entry)
|
3
|
-
span(link_to(I18n.t("admin.entries.editor"), pageflow.edit_entry_path(entry), :class => 'button'))
|
3
|
+
span(link_to(I18n.t("admin.entries.editor"), pageflow.edit_entry_path(entry), :class => 'editor button'))
|
4
4
|
end
|
5
|
+
span(link_to(I18n.t("admin.entries.preview"), preview_admin_entry_path(entry), :class => 'preview button'))
|
5
6
|
if entry.published?
|
6
|
-
span(link_to(I18n.t("admin.entries.show_public"), pageflow.short_entry_path(entry), :class => 'button'))
|
7
|
+
span(link_to(I18n.t("admin.entries.show_public"), pageflow.short_entry_path(entry), :class => 'show_public button'))
|
7
8
|
end
|
8
9
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
<% if @user.new_record? && Pageflow.config.
|
2
|
-
<%= render 'admin/users/
|
1
|
+
<% if @user.new_record? && Pageflow.config.quotas.get(:users, @user.account).exhausted? %>
|
2
|
+
<%= render 'admin/users/quota_exhausted' %>
|
3
3
|
<% else %>
|
4
4
|
<%= semantic_form_for([:admin, @user.becomes(User)]) do |f| %>
|
5
5
|
<%= f.inputs "Details" do %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<p>Replace by creating <code>app/views/admin/users/_quota_exhausted.html.erb</code></p>
|
@@ -0,0 +1 @@
|
|
1
|
+
<p>Replace by creating <code>app/views/pageflow/editor/encoding_confirmations/_summary.html.erb</code></p>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
json.exceeding(@entry_publication.exceeding?)
|
2
|
+
json.quota do
|
3
|
+
json.(@entry_publication.quota, :state_description, :state)
|
4
|
+
end
|
5
|
+
json.entry do
|
6
|
+
json.(@entry_publication.entry, :published_until)
|
7
|
+
json.published(@entry_publication.entry.published?)
|
8
|
+
end
|
9
|
+
json.exhausted_html(render_html_partial('pageflow/editor/quotas/published_entries_exhausted',
|
10
|
+
quota: @entry_publication.quota,
|
11
|
+
account: @entry_publication.quota.account))
|
@@ -1 +1 @@
|
|
1
|
-
<p>Replace by creating <code>app/views/pageflow/editor/quotas/
|
1
|
+
<p>Replace by creating <code>app/views/pageflow/editor/quotas/_published_entries_exhausted.html.erb</code></p>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<div id="outer_wrapper">
|
2
2
|
<%= render 'pageflow/entries/skip_links' %>
|
3
3
|
<h1 class="hidden"><%= entry.title %></h1>
|
4
|
-
<img src="<%= image_path("pageflow/themes/#{entry.theme.
|
4
|
+
<img src="<%= image_path("pageflow/themes/#{entry.theming.theme.directory_name}/logo_print.png") %>" class="print_image" alt="Logo image for print version">
|
5
5
|
<span class="print_only page_url"><%= request.original_url %></span>
|
6
6
|
<%= content_tag :div, :id => 'content', :class => 'entry', :data => {:role => 'slideshow'} do %>
|
7
7
|
<%= render entry.pages %>
|
@@ -60,8 +60,8 @@
|
|
60
60
|
Bildrechte:
|
61
61
|
<%= entry_file_rights(entry) %>
|
62
62
|
</p>
|
63
|
-
<%= link_to(raw(entry.
|
64
|
-
<%= link_to(raw(entry.
|
63
|
+
<%= link_to(raw(entry.theming.imprint_link_label), entry.theming.imprint_link_url, :target => '_blank') %>
|
64
|
+
<%= link_to(raw(entry.theming.copyright_link_label), entry.theming.copyright_link_url, :target => '_blank', :class => 'copy') %>
|
65
65
|
</li>
|
66
66
|
</ul>
|
67
67
|
</div>
|
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
<%= tag :meta, :property => "og:image:url", :content => entry.thumbnail.url(:medium).gsub('https://', 'http://') %>
|
4
4
|
|
5
|
-
<%= tag :meta, :property => "og:title", :content => "#{entry.title} - #{entry.
|
5
|
+
<%= tag :meta, :property => "og:title", :content => "#{entry.title} - #{entry.theming.cname_domain}" %>
|
6
6
|
<%= tag :meta, :property => "og:description", :content => entry_summary(entry) %>
|
7
7
|
<%= tag :meta, :property => "og:url", :content => pretty_entry_url(entry) %>
|
8
|
-
<%= tag :meta, :property => "og:site_name", :content => entry.
|
8
|
+
<%= tag :meta, :property => "og:site_name", :content => entry.theming.cname_domain %>
|
9
9
|
<%= tag :meta, :property => "og:type", :content => "article" %>
|