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.

Files changed (183) hide show
  1. checksums.yaml +8 -8
  2. data/admins/pageflow/accounts.rb +17 -49
  3. data/admins/pageflow/entry.rb +13 -6
  4. data/app/assets/fonts/pageflow/entypo.eot +0 -0
  5. data/app/assets/fonts/pageflow/entypo.svg +834 -0
  6. data/app/assets/fonts/pageflow/entypo.ttf +0 -0
  7. data/app/assets/fonts/pageflow/entypo.woff +0 -0
  8. data/app/assets/fonts/pageflow/fontawesome-webfont.eot +0 -0
  9. data/app/assets/fonts/pageflow/fontawesome-webfont.otf +0 -0
  10. data/app/assets/fonts/pageflow/fontawesome-webfont.svg +504 -0
  11. data/app/assets/fonts/pageflow/fontawesome-webfont.ttf +0 -0
  12. data/app/assets/fonts/pageflow/fontawesome-webfont.woff +0 -0
  13. data/app/assets/images/pageflow/themes/default/audio_sprite.png +0 -0
  14. data/app/assets/images/pageflow/themes/default/image_sprite.png +0 -0
  15. data/app/assets/images/pageflow/themes/default/internal_links_sprite.png +0 -0
  16. data/app/assets/images/pageflow/themes/default/loading_spinner.png +0 -0
  17. data/app/assets/images/pageflow/themes/default/loading_spinner_bg.png +0 -0
  18. data/app/assets/images/pageflow/themes/default/logo_header.png +0 -0
  19. data/app/assets/images/pageflow/themes/default/logo_header_invert.png +0 -0
  20. data/app/assets/images/pageflow/themes/default/scroll_indicator_sprite.png +0 -0
  21. data/app/assets/images/pageflow/themes/default/text_sprite.png +0 -0
  22. data/app/assets/images/pageflow/themes/default/video_sprite.png +0 -0
  23. data/app/assets/javascripts/pageflow/editor/base.js +1 -0
  24. data/app/assets/javascripts/pageflow/editor/collections/mixins/files_collection.js +11 -0
  25. data/app/assets/javascripts/pageflow/editor/collections/subset_collection.js +11 -0
  26. data/app/assets/javascripts/pageflow/editor/controllers/sidebar_controller.js +8 -1
  27. data/app/assets/javascripts/pageflow/editor/initializers/setup_config.js +3 -0
  28. data/app/assets/javascripts/pageflow/editor/models/audio_file.js +1 -0
  29. data/app/assets/javascripts/pageflow/editor/models/chapter.js +1 -0
  30. data/app/assets/javascripts/pageflow/editor/models/configuration.js +1 -0
  31. data/app/assets/javascripts/pageflow/editor/models/encoding_confirmation.js +45 -0
  32. data/app/assets/javascripts/pageflow/editor/models/entry.js +6 -14
  33. data/app/assets/javascripts/pageflow/editor/models/entry_publication.js +40 -0
  34. data/app/assets/javascripts/pageflow/editor/models/file_stage.js +5 -0
  35. data/app/assets/javascripts/pageflow/editor/models/image_file.js +5 -0
  36. data/app/assets/javascripts/pageflow/editor/models/mixins/encoded_file.js +31 -14
  37. data/app/assets/javascripts/pageflow/editor/models/mixins/files_count_watcher.js +4 -0
  38. data/app/assets/javascripts/pageflow/editor/models/mixins/stage_provider.js +2 -2
  39. data/app/assets/javascripts/pageflow/editor/models/other_entry.js +1 -0
  40. data/app/assets/javascripts/pageflow/editor/models/page.js +1 -0
  41. data/app/assets/javascripts/pageflow/editor/models/video_file.js +1 -0
  42. data/app/assets/javascripts/pageflow/editor/routers/sidebar_router.js +2 -0
  43. data/app/assets/javascripts/pageflow/editor/templates/confirm_encoding.jst.ejs +15 -0
  44. data/app/assets/javascripts/pageflow/editor/templates/confirmable_file_item.jst.ejs +7 -0
  45. data/app/assets/javascripts/pageflow/editor/templates/{quota_decorator.jst.ejs → entry_publication_quota_decorator.jst.ejs} +1 -1
  46. data/app/assets/javascripts/pageflow/editor/templates/files_explorer.jst.ejs +5 -3
  47. data/app/assets/javascripts/pageflow/editor/templates/notifications.jst.ejs +6 -1
  48. data/app/assets/javascripts/pageflow/editor/views/confirm_encoding_view.js +76 -0
  49. data/app/assets/javascripts/pageflow/editor/views/confirmable_file_item_view.js +42 -0
  50. data/app/assets/javascripts/pageflow/editor/views/entry_publication_quota_decorator_view.js +49 -0
  51. data/app/assets/javascripts/pageflow/editor/views/file_meta_data_item_view.js +1 -1
  52. data/app/assets/javascripts/pageflow/editor/views/file_stage_item_view.js +1 -0
  53. data/app/assets/javascripts/pageflow/editor/views/file_thumbnail_view.js +2 -1
  54. data/app/assets/javascripts/pageflow/editor/views/files_explorer_view.js +3 -3
  55. data/app/assets/javascripts/pageflow/editor/views/input_view.js +2 -2
  56. data/app/assets/javascripts/pageflow/editor/views/inputs/select_input_view.js +1 -1
  57. data/app/assets/javascripts/pageflow/editor/views/notifications_view.js +12 -1
  58. data/app/assets/javascripts/pageflow/editor/views/publish_entry_view.js +5 -4
  59. data/app/assets/javascripts/pageflow/page_types/video.js +0 -1
  60. data/app/assets/javascripts/pageflow/widgets/player_controls.js +1 -1
  61. data/app/assets/stylesheets/pageflow/editor/base.css.scss +1 -0
  62. data/app/assets/stylesheets/pageflow/editor/confirmable_files.css.scss +67 -0
  63. data/app/assets/stylesheets/pageflow/editor/file_stages.css.scss +5 -0
  64. data/app/assets/stylesheets/pageflow/editor/file_thumbnails.css.scss +10 -0
  65. data/app/assets/stylesheets/pageflow/editor/files.css.scss +3 -1
  66. data/app/assets/stylesheets/pageflow/editor/files_explorer.css.scss +30 -2
  67. data/app/assets/stylesheets/pageflow/editor/files_gallery.css.scss +1 -2
  68. data/app/assets/stylesheets/pageflow/editor/notifications.css.scss +18 -1
  69. data/app/assets/stylesheets/pageflow/editor/quotas.css.scss +1 -1
  70. data/app/assets/stylesheets/pageflow/editor/tabs_view.css.scss +2 -0
  71. data/app/assets/stylesheets/pageflow/mixins.css.scss +2 -1
  72. data/app/assets/stylesheets/pageflow/mixins/icons.css.scss +4 -308
  73. data/app/assets/stylesheets/pageflow/mixins/icons/entypo.css.scss +295 -0
  74. data/app/assets/stylesheets/pageflow/mixins/icons/fontawesome.css.scss +520 -0
  75. data/app/assets/stylesheets/pageflow/mixins/label.css.scss +5 -0
  76. data/app/assets/stylesheets/pageflow/themes/default.css.scss +11 -0
  77. data/app/assets/stylesheets/pageflow/themes/default/anchors.css.scss +3 -8
  78. data/app/assets/stylesheets/pageflow/themes/default/loading_spinner.css.scss +96 -9
  79. data/app/assets/stylesheets/pageflow/themes/default/navigation.css.scss +128 -183
  80. data/app/assets/stylesheets/pageflow/themes/default/overview.css.scss +48 -6
  81. data/app/assets/stylesheets/pageflow/themes/default/page.css.scss +3 -6
  82. data/app/assets/stylesheets/pageflow/themes/default/player_controls.css.scss +31 -0
  83. data/app/controllers/concerns/pageflow/quota_verification.rb +4 -4
  84. data/app/controllers/pageflow/editor/encoding_confirmations_controller.rb +45 -0
  85. data/app/controllers/pageflow/editor/entry_publications_controller.rb +48 -0
  86. data/app/controllers/pageflow/entries_controller.rb +8 -3
  87. data/app/controllers/pageflow/revisions_controller.rb +0 -10
  88. data/app/controllers/pageflow/video_files_controller.rb +7 -1
  89. data/app/helpers/pageflow/config_helper.rb +9 -0
  90. data/app/helpers/pageflow/entries_helper.rb +3 -3
  91. data/app/helpers/pageflow/pages_helper.rb +2 -2
  92. data/app/helpers/pageflow/quota_helper.rb +1 -1
  93. data/app/jobs/pageflow/poll_meta_data_from_zencoder_job.rb +9 -0
  94. data/app/jobs/pageflow/poll_zencoder_job.rb +3 -3
  95. data/app/jobs/pageflow/request_meta_data_from_zencoder_job.rb +14 -0
  96. data/app/jobs/pageflow/submit_file_to_zencoder_job.rb +0 -2
  97. data/app/models/pageflow/account.rb +9 -4
  98. data/app/models/pageflow/audio_file.rb +2 -0
  99. data/app/models/pageflow/draft_entry.rb +5 -1
  100. data/app/models/pageflow/edit_lock.rb +2 -0
  101. data/app/models/pageflow/encoding_confirmation.rb +40 -0
  102. data/app/models/pageflow/entry.rb +3 -3
  103. data/app/models/pageflow/entry_publication.rb +27 -0
  104. data/app/models/pageflow/page.rb +6 -6
  105. data/app/models/pageflow/published_entry.rb +3 -3
  106. data/app/models/pageflow/theming.rb +20 -0
  107. data/app/models/pageflow/video_file.rb +2 -0
  108. data/app/state_machines/pageflow/encoded_file_state_machine.rb +41 -1
  109. data/app/views/admin/accounts/_account_details.html.arb +5 -0
  110. data/app/views/admin/accounts/_entries_panel.html.arb +15 -0
  111. data/app/views/admin/accounts/_form.html.erb +18 -0
  112. data/app/views/admin/accounts/_theming_details.html.arb +6 -0
  113. data/app/views/admin/accounts/_users_panel.html.arb +15 -0
  114. data/app/views/admin/entries/_links.html.arb +3 -2
  115. data/app/views/admin/users/_form.html.erb +2 -2
  116. data/app/views/admin/users/_quota_exhausted.html.erb +1 -0
  117. data/app/views/pageflow/config/_editor_seeds.json.jbuilder +2 -0
  118. data/app/views/pageflow/editor/encoding_confirmations/_summary.html.erb +1 -0
  119. data/app/views/pageflow/editor/encoding_confirmations/check.json.jbuilder +3 -0
  120. data/app/views/pageflow/editor/entry_publications/check.json.jbuilder +11 -0
  121. data/app/views/pageflow/editor/quotas/{_published_entries_exceeded.html.erb → _published_entries_exhausted.html.erb} +1 -1
  122. data/app/views/pageflow/entries/_entry.html.erb +1 -1
  123. data/app/views/pageflow/entries/_navigation.html.erb +2 -2
  124. data/app/views/pageflow/entries/_social_meta_tags.html.erb +2 -2
  125. data/app/views/pageflow/entries/_theming.css.erb +1 -0
  126. data/app/views/pageflow/entries/edit.html.erb +3 -1
  127. data/app/views/pageflow/entries/navigation/_bar_top.html.erb +2 -2
  128. data/app/views/pageflow/entries/show.css.erb +3 -1
  129. data/app/views/pageflow/entries/show.html.erb +13 -13
  130. data/config/initializers/page_type_helpers.rb +1 -0
  131. data/config/locales/activerecord.de.yml +41 -22
  132. data/config/locales/admin/accounts.yml +0 -1
  133. data/config/locales/admin/entries.yml +6 -2
  134. data/config/locales/admin/themings.yml +7 -0
  135. data/config/locales/admin/users/me.de.yml +2 -2
  136. data/config/locales/editor.de.yml +9 -3
  137. data/config/locales/quotas.de.yml +1 -1
  138. data/config/routes.rb +34 -27
  139. data/db/migrate/20140624135420_create_themings.rb +15 -0
  140. data/db/migrate/20140624135421_create_themings_for_existing_accounts.rb +26 -0
  141. data/db/migrate/20140624135422_change_theme_references_to_theming_references.rb +45 -0
  142. data/db/migrate/20140624135423_remove_attributes_from_themes.rb +10 -0
  143. data/db/migrate/20140624135424_create_accounts_themes_join_table.rb +8 -0
  144. data/db/migrate/20140624135425_move_cname_from_account_to_theming.rb +21 -0
  145. data/db/migrate/20140625184800_drop_themes.rb +14 -0
  146. data/db/migrate/20140704110631_add_confirmed_by_to_encoded_files.rb +6 -0
  147. data/lib/generators/pageflow/initializer/templates/pageflow.rb +9 -0
  148. data/lib/generators/pageflow/theme/theme_generator.rb +28 -0
  149. data/lib/pageflow.rb +9 -2
  150. data/lib/pageflow/ability_mixin.rb +1 -1
  151. data/lib/pageflow/built_in_page_type.rb +1 -1
  152. data/lib/pageflow/configuration.rb +49 -6
  153. data/lib/pageflow/engine.rb +11 -1
  154. data/lib/pageflow/quota.rb +42 -15
  155. data/lib/pageflow/quotas.rb +15 -0
  156. data/lib/pageflow/seeds.rb +12 -16
  157. data/lib/pageflow/theme.rb +14 -0
  158. data/lib/pageflow/themes.rb +25 -0
  159. data/lib/pageflow/user_mixin.rb +1 -1
  160. data/lib/pageflow/version.rb +1 -1
  161. data/lib/pageflow/zencoder_meta_data_output_definition.rb +23 -0
  162. data/spec/factories/accounts.rb +9 -0
  163. data/spec/factories/audio_files.rb +46 -0
  164. data/spec/factories/chapters.rb +21 -0
  165. data/spec/factories/edit_locks.rb +11 -0
  166. data/spec/factories/entries.rb +33 -0
  167. data/spec/factories/file_usages.rb +8 -0
  168. data/spec/factories/folders.rb +8 -0
  169. data/spec/factories/image_files.rb +38 -0
  170. data/spec/factories/invited_user.rb +10 -0
  171. data/spec/factories/memberships.rb +8 -0
  172. data/spec/factories/pages.rb +14 -0
  173. data/spec/factories/revisions.rb +22 -0
  174. data/spec/factories/themings.rb +8 -0
  175. data/spec/factories/users.rb +39 -0
  176. data/spec/factories/video_files.rb +46 -0
  177. metadata +103 -39
  178. data/app/assets/javascripts/pageflow/editor/models/quota.js +0 -18
  179. data/app/assets/javascripts/pageflow/editor/views/quota_decorator_view.js +0 -45
  180. data/app/controllers/pageflow/editor/quotas_controller.rb +0 -13
  181. data/app/models/pageflow/theme.rb +0 -4
  182. data/app/views/admin/users/_quota_exceeded.html.erb +0 -1
  183. 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, :theme, :slug,
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 :theme
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, :theme, :presence => true
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
@@ -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', :attachment, 'poster_image_id']
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', :attachment, 'thumbnail_image_id']
39
+ ['pageflow/image_file', :processed_attachment, 'thumbnail_image_id', 'image_file']
40
40
  elsif configuration['after_image_id'].present?
41
- ['pageflow/image_file', :attachment, 'after_image_id']
41
+ ['pageflow/image_file', :processed_attachment, 'after_image_id','image_file']
42
42
  else
43
- ['pageflow/image_file', :attachment, 'background_image_id']
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, :theme, :to_model, :to_key, :persisted?, :to => :entry)
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(Entry.published.find(id))
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
- result :ok => 'waiting_for_encoding'
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,5 @@
1
+ attributes_table_for account do
2
+ row :name, :class => 'name'
3
+ row :default_file_rights, :class => 'default_file_rights'
4
+ row :created_at
5
+ 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,6 @@
1
+ attributes_table_for account.default_theming do
2
+ row :cname, :class => 'cname'
3
+ row :theme, :class => 'theme' do
4
+ account.default_theming.theme.name
5
+ end
6
+ 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.quota.exceeded?(:users, @user.account) %>
2
- <%= render 'admin/users/quota_exceeded' %>
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,2 @@
1
+ json.key_format!(camelize: :lower)
2
+ json.(Pageflow.config, :confirm_encoding_jobs)
@@ -0,0 +1 @@
1
+ <p>Replace by creating <code>app/views/pageflow/editor/encoding_confirmations/_summary.html.erb</code></p>
@@ -0,0 +1,3 @@
1
+ json.exceeding(@encoding_confirmation.exceeding?)
2
+ json.summary_html(render_html_partial('pageflow/editor/encoding_confirmations/summary',
3
+ encoding_confirmation: @encoding_confirmation))
@@ -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/_published_entries_exceeded.html.erb</code></p>
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.name}/logo_print.png") %>" class="print_image" alt="Logo image for print version">
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.theme.imprint_link_label), entry.theme.imprint_link_url, :target => '_blank') %>
64
- <%= link_to(raw(entry.theme.copyright_link_label), entry.theme.copyright_link_url, :target => '_blank', :class => 'copy') %>
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.account.cname_domain}" %>
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.account.cname_domain %>
8
+ <%= tag :meta, :property => "og:site_name", :content => entry.theming.cname_domain %>
9
9
  <%= tag :meta, :property => "og:type", :content => "article" %>