cirandas.net

ref: master

plugins/html5_video/lib/html5_video_plugin.rb


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
class Html5VideoPlugin < Noosfero::Plugin

  def self.plugin_name
    "HTML5 Video"
  end

  def stylesheet?
    true
  end

  def js_files
    ['video-channel.js']
  end

  def self.plugin_description
    _("A plugin to enable the video suport, with auto conversion for the web.")
  end

  def content_types
    [Html5VideoPlugin::VideoChannel]
  end

  def view_page_layout(controller, page)
    if FilePresenter.for(page).is_a? FilePresenter::Video and controller.params[:display] == 'iframe'
      'html5_video_plugin_iframe'
    end
  end

  def uploaded_file_after_create_callback(uploaded_file)
    full_filename = uploaded_file.full_filename
    file_presenter = FilePresenter.for(uploaded_file)
    if file_presenter.is_a? FilePresenter::Video
      job = Html5VideoPlugin::CreateVideoPreviewJob.new
      job.file_type = uploaded_file.class.name
      job.file_id = uploaded_file.id
      job.full_filename = full_filename
      Delayed::Job.enqueue job, priority: 10
      [
        [:OGV,  :tiny, 11],
        [:WEBM, :tiny, 12],
        [:OGV,  :nice, 13],
        [:WEBM, :nice, 14],
      ].each do |format, size, priority|
        job = Html5VideoPlugin::CreateVideoForWebJob.new
        job.file_type = uploaded_file.class.name
        job.file_id = uploaded_file.id
        job.full_filename = full_filename
        job.format = format
        job.size = size
        Delayed::Job.enqueue job, priority: priority
      end
    end
  end
end