merrycms 0.1.2 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. data/app/controllers/admin/base_controller.rb +1 -0
  2. data/app/controllers/admin/categories_controller.rb +1 -1
  3. data/app/controllers/admin/documents_controller.rb +49 -0
  4. data/app/controllers/admin/images_controller.rb +49 -0
  5. data/app/controllers/admin/pages_controller.rb +0 -1
  6. data/app/controllers/admin/translations_controller.rb +1 -1
  7. data/app/controllers/admin/videos_controller.rb +56 -0
  8. data/app/helpers/admin/base_helper.rb +15 -0
  9. data/app/helpers/admin/categories_helper.rb +3 -7
  10. data/app/helpers/admin/documents_helper.rb +4 -0
  11. data/app/helpers/admin/images_helper.rb +14 -0
  12. data/app/helpers/admin/videos_helper.rb +53 -0
  13. data/app/models/document.rb +7 -0
  14. data/app/models/image.rb +9 -0
  15. data/app/models/source.rb +8 -0
  16. data/app/models/video.rb +7 -0
  17. data/app/views/admin/categories/index.html.erb +1 -1
  18. data/app/views/admin/documents/_form.erb +22 -0
  19. data/app/views/admin/documents/_search.erb +15 -0
  20. data/app/views/admin/documents/_subnav.erb +7 -0
  21. data/app/views/admin/documents/edit.html.erb +7 -0
  22. data/app/views/admin/documents/index.html.erb +24 -0
  23. data/app/views/admin/documents/new.html.erb +3 -0
  24. data/app/views/admin/images/_form.erb +22 -0
  25. data/app/views/admin/images/_search.erb +15 -0
  26. data/app/views/admin/images/_subnav.erb +7 -0
  27. data/app/views/admin/images/edit.html.erb +7 -0
  28. data/app/views/admin/images/index.html.erb +26 -0
  29. data/app/views/admin/images/new.html.erb +3 -0
  30. data/app/views/admin/pages/index.html.erb +6 -12
  31. data/app/views/admin/shared/_nav.erb +11 -0
  32. data/app/views/admin/shared/_subnav.erb +0 -0
  33. data/app/views/{shared/_toplinks.html.erb → admin/shared/_toplinks.erb} +4 -4
  34. data/app/views/admin/videos/_form.erb +38 -0
  35. data/app/views/admin/videos/_head_info.erb +13 -0
  36. data/app/views/admin/videos/_search.erb +15 -0
  37. data/app/views/admin/videos/_subnav.erb +7 -0
  38. data/app/views/admin/videos/edit.html.erb +3 -0
  39. data/app/views/admin/videos/index.html.erb +24 -0
  40. data/app/views/admin/videos/new.html.erb +3 -0
  41. data/app/views/admin/videos/show.html.erb +8 -0
  42. data/app/views/layouts/admin.html.erb +8 -6
  43. data/config/locales/de/de.yml +193 -0
  44. data/config/locales/en/en-US.yml +182 -0
  45. data/config/locales/fr/admin/admin.fr.yml +11 -3
  46. data/config/locales/fr/admin/documents.fr.yml +38 -0
  47. data/config/locales/fr/admin/images.fr.yml +54 -0
  48. data/config/locales/fr/admin/toplinks.fr.yml +7 -8
  49. data/config/locales/fr/admin/videos.fr.yml +42 -0
  50. data/config/locales/fr/fr.yml +182 -0
  51. data/lib/generators/merrycms/install_documents_generator.rb +26 -0
  52. data/lib/generators/merrycms/install_images_generator.rb +30 -0
  53. data/lib/generators/merrycms/install_videos_generator.rb +26 -0
  54. data/lib/generators/merrycms/templates/create_documents_migration.rb +16 -0
  55. data/lib/generators/merrycms/templates/create_images_migration.rb +16 -0
  56. data/lib/generators/merrycms/templates/create_videos_migration.rb +25 -0
  57. data/lib/generators/merrycms/templates/paperclip_initializer.rb +6 -0
  58. data/lib/merrycms/engine.rb +6 -0
  59. data/lib/merrycms/rails/routes.rb +5 -0
  60. data/lib/merrycms/railties/merrycms_tasks.rake +3 -0
  61. data/lib/merrycms/validates_as_image.rb +20 -0
  62. data/lib/merrycms.rb +2 -1
  63. data/lib/paperclip_processors/poster.rb +38 -0
  64. data/lib/paperclip_processors/video_thumbnail.rb +42 -0
  65. metadata +92 -5
  66. data/app/views/admin/_nav.html.erb +0 -10
@@ -1,5 +1,6 @@
1
1
  module Admin
2
2
  class BaseController < ApplicationController
3
+ include BaseHelper
3
4
 
4
5
  rescue_from Acl9::AccessDenied, :with => :access_denied
5
6
 
@@ -1,5 +1,5 @@
1
1
  module Admin
2
- class CategoriesController < ApplicationController
2
+ class CategoriesController < BaseController
3
3
 
4
4
  layout "admin"
5
5
 
@@ -0,0 +1,49 @@
1
+ module Admin
2
+ class DocumentsController < BaseController
3
+
4
+ layout "admin"
5
+
6
+ before_filter :authenticate_user!
7
+ access_control do
8
+ allow :admin
9
+ end
10
+
11
+ def index
12
+ @search = Document.search(params[:search])
13
+ @documents = @search.order(:title).page(params[:page])
14
+ end
15
+
16
+ def new
17
+ @document = Document.new
18
+ end
19
+
20
+ def create
21
+ @document = Document.new(params[:document])
22
+ if @document.save
23
+ redirect_to admin_documents_path
24
+ else
25
+ render :new
26
+ end
27
+ end
28
+
29
+ def edit
30
+ @document = Document.find(params[:id])
31
+ end
32
+
33
+ def update
34
+ @document = Document.find(params[:id])
35
+ if @document.update_attributes(params[:document])
36
+ redirect_to admin_documents_path
37
+ else
38
+ render :edit
39
+ end
40
+ end
41
+
42
+ def destroy
43
+ @document = Document.find(params[:id])
44
+ @document.destroy
45
+ redirect_to admin_documents_path
46
+ end
47
+
48
+ end
49
+ end
@@ -0,0 +1,49 @@
1
+ module Admin
2
+ class ImagesController < BaseController
3
+
4
+ layout "admin"
5
+
6
+ before_filter :authenticate_user!
7
+ access_control do
8
+ allow :admin
9
+ end
10
+
11
+ def index
12
+ @search = Image.search(params[:search])
13
+ @images = @search.order(:title).page(params[:page])
14
+ end
15
+
16
+ def new
17
+ @image = Image.new
18
+ end
19
+
20
+ def create
21
+ @image = Image.new(params[:image])
22
+ if @image.save
23
+ redirect_to admin_images_path
24
+ else
25
+ render :new
26
+ end
27
+ end
28
+
29
+ def edit
30
+ @image = Image.find(params[:id])
31
+ end
32
+
33
+ def update
34
+ @image = Image.find(params[:id])
35
+ if @image.update_attributes(params[:image])
36
+ redirect_to admin_images_path
37
+ else
38
+ render :edit
39
+ end
40
+ end
41
+
42
+ def destroy
43
+ @image = Image.find(params[:id])
44
+ @image.destroy
45
+ redirect_to admin_images_path
46
+ end
47
+
48
+ end
49
+ end
@@ -11,7 +11,6 @@ module Admin
11
11
  def index
12
12
  @search = Page.includes(:category).search(params[:search])
13
13
  @pages = @search.order("created_at desc").page(params[:page])
14
- puts @pages # hack for kaminari
15
14
  end
16
15
 
17
16
  def new
@@ -1,5 +1,5 @@
1
1
  module Admin
2
- class TranslationsController < ApplicationController
2
+ class TranslationsController < BaseController
3
3
  respond_to :html, :json
4
4
 
5
5
  layout "admin"
@@ -0,0 +1,56 @@
1
+ module Admin
2
+ class VideosController < BaseController
3
+
4
+ layout "admin"
5
+
6
+ before_filter :authenticate_user!
7
+ access_control do
8
+ allow :admin
9
+ end
10
+
11
+ def index
12
+ @search = Video.search(params[:search])
13
+ @videos = @search.order(:title).page(params[:page])
14
+ end
15
+
16
+ def show
17
+ @video = Video.find(params[:id])
18
+ end
19
+
20
+ def new
21
+ @video = Video.new
22
+ 3.times { @video.sources.build }
23
+ end
24
+
25
+ def create
26
+ @video = Video.new(params[:video])
27
+ if @video.save
28
+ redirect_to admin_videos_path
29
+ else
30
+ render :new
31
+ end
32
+ end
33
+
34
+ def edit
35
+ @video = Video.find(params[:id])
36
+ n = 3 - @video.sources.size
37
+ n.times { @video.sources.build }
38
+ end
39
+
40
+ def update
41
+ @video = Video.find(params[:id])
42
+ if @video.update_attributes(params[:video])
43
+ redirect_to admin_videos_path
44
+ else
45
+ render :edit
46
+ end
47
+ end
48
+
49
+ def destroy
50
+ @video = Video.find(params[:id])
51
+ @video.destroy
52
+ redirect_to admin_videos_path
53
+ end
54
+
55
+ end
56
+ end
@@ -0,0 +1,15 @@
1
+ module Admin
2
+ module BaseHelper
3
+
4
+ def render_subnav
5
+ if content_for?(:subnav)
6
+ yield(:subnav)
7
+ elsif File.exists?(File.join(File.dirname(__FILE__),'..','..','views',params[:controller],'_subnav.erb'))
8
+ render(:partial=> 'subnav')
9
+ else
10
+ render(:partial=> 'admin/shared/subnav')
11
+ end
12
+ end
13
+
14
+ end
15
+ end
@@ -3,13 +3,9 @@ module Admin
3
3
 
4
4
  def render_cat hash, options = {}, &block
5
5
  sort_proc = options.delete :sort
6
- content_tag :tr, options do
7
- content_tag :td do
8
- hash.keys.sort_by(&sort_proc).each do |node|
9
- block.call node, render_tree(hash[node], :sort => sort_proc, &block)
10
- end
11
- end
12
- end if hash.present?
6
+ hash.keys.sort_by(&sort_proc).each do |node|
7
+ block.call node, render_tree(hash[node], :sort => sort_proc, &block)
8
+ end
13
9
  end
14
10
 
15
11
  def display_node(node)
@@ -0,0 +1,4 @@
1
+ module Admin
2
+ module DocumentsHelper
3
+ end
4
+ end
@@ -0,0 +1,14 @@
1
+ module Admin
2
+ module ImagesHelper
3
+
4
+ def display_image_links(image)
5
+ html = ""
6
+ html << "<strong>#{t('images.styles.original')}</strong> : #{image.image.url(:original, false)}<br/>"
7
+ image.image.styles.each do |style, file|
8
+ html << "<strong>#{t("images.styles.#{style}")}</strong> : #{image.image.url(style, false)}<br/>"
9
+ end
10
+ html
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,53 @@
1
+ module Admin
2
+ module VideosHelper
3
+
4
+ def display_video_size(video)
5
+ main_source = video.sources.first
6
+ number_to_human_size main_source.video_file_size if main_source
7
+ end
8
+
9
+ def display_video(video, width=nil, height=nil)
10
+ return unless video
11
+
12
+ main_source = video.sources.first
13
+ if main_source.nil?
14
+ html = "<p>#{t('videos.no_source')}</p>"
15
+ return html
16
+ end
17
+
18
+ width = width ? width : main_source.width
19
+ height = height ? height : main_source.height
20
+ poster = main_source.video.url(:poster, false)
21
+ flash_player = 'http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf'
22
+ video_alt = 'Poster image'
23
+ poster_title = video.title
24
+
25
+ sources = video.sources.map do |source|
26
+ { :src => "http://localhost:3000#{source.video.url(:original, false)}", :type => "#{source.video_content_type}" }
27
+ end
28
+
29
+ html = ""
30
+
31
+ html << "<div class='video-js-box vim-css'>"
32
+
33
+ html << "<video id='example_video_1' class='video-js' width='#{width}' height='#{height}' controls='controls' preload='auto' poster='#{poster}'>"
34
+
35
+ sources.each do |source|
36
+ html << "<source src='#{source[:src]}' type='#{source[:type]}' />"
37
+ end
38
+
39
+ html << "<object id='flash_fallback_1' class='vjs-flash-fallback' width='#{width}' height='#{height}' type='application/x-shockwave-flash' data='#{flash_player}'>"
40
+ html << "<param name='movie' value='#{flash_player}' />"
41
+ html << "<param name='allowfullscreen' value='true' />"
42
+ html << "<param name='flashvars' value='config={\"playlist\":[\"#{poster}\", {\"url\":\"#{sources[0][:src]}\",\"autoPlay\":false,\"autoBuffering\":true}]}' />"
43
+
44
+ html << "<img src='#{poster}' width='#{width}' height='#{height}' alt='#{video_alt}' title='#{poster_title}' />"
45
+ html << "</object>"
46
+ html << "</video>"
47
+ html << "</div>"
48
+
49
+ html
50
+ end
51
+
52
+ end
53
+ end
@@ -0,0 +1,7 @@
1
+ class Document < ActiveRecord::Base
2
+
3
+ has_attached_file :doc
4
+ validates_attachment_presence :doc, :message => I18n.t('activerecord.errors.models.document.attributes.doc.blank')
5
+ validates_presence_of :title
6
+
7
+ end
@@ -0,0 +1,9 @@
1
+ class Image < ActiveRecord::Base
2
+ include ValidatesAsImage
3
+
4
+ has_attached_file :image, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :whiny => false
5
+ validates_attachment_presence :image, :message => I18n.t('activerecord.errors.models.image.attributes.image.blank')
6
+ validates_as_image :image
7
+ validates_presence_of :title
8
+
9
+ end
@@ -0,0 +1,8 @@
1
+ class Source < ActiveRecord::Base
2
+ belongs_to :video
3
+
4
+ CONTAINER_TYPES = ["mp4", "webm", "theora"]
5
+
6
+ has_attached_file :video, :styles => { :poster => ['100', :jpg] }, :processors => [ :poster ]
7
+
8
+ end
@@ -0,0 +1,7 @@
1
+ class Video < ActiveRecord::Base
2
+ has_many :sources
3
+ accepts_nested_attributes_for :sources, :reject_if => proc { |attributes| attributes['video'].blank? }, :allow_destroy => true
4
+
5
+ validates_presence_of :title
6
+
7
+ end
@@ -8,7 +8,7 @@
8
8
  <th><%= t('categories.link') %></th>
9
9
  <th></th>
10
10
  </tr>
11
- <%= render_cat @categories, :sort => lambda{|x| x.position } do |node, child| %>
11
+ <% render_cat @categories, :sort => lambda{|x| x.position } do |node, child| %>
12
12
  <tr>
13
13
  <td><%= display_node(node) %></td>
14
14
  <td><%= node.link %></td>
@@ -0,0 +1,22 @@
1
+ <%= form_for [:admin, @document], :html => { :multipart => true } do |f| %>
2
+ <%= render "shared/error_messages", :target => @document %>
3
+ <div>
4
+ <%= f.label :title, t('documents.title'), :class => "desc required" %>
5
+ <%= f.text_field :title, :size => "80" %>
6
+ </div>
7
+ <div>
8
+ <%= f.label :doc, t('documents.doc_field') %>
9
+ <%= f.file_field :doc %>
10
+ </div>
11
+ <div>
12
+ <%= f.submit t('documents.submit') %>
13
+ <%= link_to t('cancel'), admin_documents_path %>
14
+ </div>
15
+ <% end %>
16
+
17
+ <% if @document.id %>
18
+ <%= form_for [:admin, @document], :html => { :method => "delete" } do |f| %>
19
+ <input type="hidden" name="_method" value="delete" />
20
+ <button type="submit"><%= t('documents.delete') %></button>
21
+ <% end %>
22
+ <% end %>
@@ -0,0 +1,15 @@
1
+ <%= form_for @search, :url => admin_documents_path, :html => {:method => :get, :class => 'search'} do |f| %>
2
+ <div>
3
+ <h3><%= t('documents.search.title') %></h3>
4
+ <div class='top'>
5
+ <%= f.label :title_contains, t('documents.search.document_title'), :class => 'desc' %>
6
+ <%= f.text_field :title_contains, :size => "20" %>
7
+ </div>
8
+ <div class='top'>
9
+ <label>&nbsp;</label>
10
+ <p>
11
+ <%= f.submit t('documents.search.submit') %>
12
+ </p>
13
+ </div>
14
+ </div>
15
+ <% end %>
@@ -0,0 +1,7 @@
1
+ <div id="subnav">
2
+ <ul class='left'>
3
+ <li><%= link_to t('images.subnav'), admin_images_path %></li>
4
+ <li><%= link_to t('documents.subnav'), admin_documents_path %></li>
5
+ <li><%= link_to t('videos.subnav'), admin_videos_path %></li>
6
+ </ul>
7
+ </div>
@@ -0,0 +1,7 @@
1
+ <h1><%= t('documents.edit.title') %></h1>
2
+
3
+ <p>
4
+ <strong><%= t('documents.file_name') %></strong> : <%= @document.doc_file_name %>
5
+ </p>
6
+
7
+ <%= render :partial => "form", :locals => { :document => @document } %>
@@ -0,0 +1,24 @@
1
+ <h1><%= t('documents.index.title') %></h1>
2
+
3
+ <p>
4
+ <%= link_to t('documents.links.new'), new_admin_document_path, :class => 'button' %>
5
+ </p>
6
+
7
+ <%= render "search" %>
8
+
9
+ <%= paginate @documents %>
10
+
11
+ <table>
12
+ <tr>
13
+ <th><%= t('documents.title') %></th>
14
+ <th><%= t('documents.link') %></th>
15
+ <th><%= t('documents.file_size') %></th>
16
+ </tr>
17
+ <% for document in @documents %>
18
+ <tr>
19
+ <td><%= link_to document.title, edit_admin_document_path(document) %></td>
20
+ <td><%= document.doc.url(:original, false) %></td>
21
+ <td><%= number_to_human_size document.doc_file_size %></td>
22
+ </tr>
23
+ <% end %>
24
+ </table>
@@ -0,0 +1,3 @@
1
+ <h1><%= t('documents.new.title') %></h1>
2
+
3
+ <%= render :partial => "form", :locals => { :document => @document } %>
@@ -0,0 +1,22 @@
1
+ <%= form_for [:admin, @image], :html => { :multipart => true } do |f| %>
2
+ <%= render "shared/error_messages", :target => @image %>
3
+ <div>
4
+ <%= f.label :title, t('images.title'), :class => "desc required" %>
5
+ <%= f.text_field :title, :size => "80" %>
6
+ </div>
7
+ <div>
8
+ <%= f.label :image, t('images.image_field') %>
9
+ <%= f.file_field :image %>
10
+ </div>
11
+ <div>
12
+ <%= f.submit t('images.submit') %>
13
+ <%= link_to t('cancel'), admin_images_path %>
14
+ </div>
15
+ <% end %>
16
+
17
+ <% if @image.id %>
18
+ <%= form_for [:admin, @image], :html => { :method => "delete" } do |f| %>
19
+ <input type="hidden" name="_method" value="delete" />
20
+ <button type="submit"><%= t('images.delete') %></button>
21
+ <% end %>
22
+ <% end %>
@@ -0,0 +1,15 @@
1
+ <%= form_for @search, :url => admin_images_path, :html => {:method => :get, :class => 'search'} do |f| %>
2
+ <div>
3
+ <h3><%= t('images.search.title') %></h3>
4
+ <div class='top'>
5
+ <%= f.label :title_contains, t('images.search.image_title'), :class => 'desc' %>
6
+ <%= f.text_field :title_contains, :size => "20" %>
7
+ </div>
8
+ <div class='top'>
9
+ <label>&nbsp;</label>
10
+ <p>
11
+ <%= f.submit t('images.search.submit') %>
12
+ </p>
13
+ </div>
14
+ </div>
15
+ <% end %>
@@ -0,0 +1,7 @@
1
+ <div id="subnav">
2
+ <ul class='left'>
3
+ <li><%= link_to t('images.subnav'), admin_images_path %></li>
4
+ <li><%= link_to t('documents.subnav'), admin_documents_path %></li>
5
+ <li><%= link_to t('videos.subnav'), admin_videos_path %></li>
6
+ </ul>
7
+ </div>
@@ -0,0 +1,7 @@
1
+ <h1><%= t('images.edit.title') %></h1>
2
+
3
+ <div id="images">
4
+ <%= image_tag @image.image.url(:medium), :class => 'image_file' %>
5
+
6
+ <%= render :partial => "form", :locals => { :image => @image } %>
7
+ </div>
@@ -0,0 +1,26 @@
1
+ <h1><%= t('images.index.title') %></h1>
2
+
3
+ <p>
4
+ <%= link_to t('images.links.new'), new_admin_image_path, :class => 'button' %>
5
+ </p>
6
+
7
+ <%= render "search" %>
8
+
9
+ <%= paginate @images %>
10
+
11
+ <table>
12
+ <tr>
13
+ <th width="100"><%= t('images.thumb') %></th>
14
+ <th><%= t('images.title') %></th>
15
+ <th><%= t('images.link') %></th>
16
+ <th><%= t('images.file_size') %></th>
17
+ </tr>
18
+ <% for image in @images %>
19
+ <tr>
20
+ <td><%= image_tag image.image.url(:thumb), :class => 'thumb' %></td>
21
+ <td><%= link_to image.title, edit_admin_image_path(image) %></td>
22
+ <td><%=raw display_image_links(image) %></td>
23
+ <td><%= number_to_human_size image.image_file_size %></td>
24
+ </tr>
25
+ <% end %>
26
+ </table>
@@ -0,0 +1,3 @@
1
+ <h1><%= t('images.new.title') %></h1>
2
+
3
+ <%= render :partial => "form", :locals => { :image => @image } %>
@@ -14,20 +14,14 @@
14
14
  <th><%= t('pages.state') %></th>
15
15
  <th></th>
16
16
  </tr>
17
- <% if @pages.size == 0 %>
17
+ <% @pages.each do |page| %>
18
18
  <tr>
19
- <td colspan="5">Aucune page</td>
19
+ <td><%= link_to page.title, edit_admin_page_path(page) %></a></td>
20
+ <td><%= page.link %></td>
21
+ <td><%= display_page_category(page) %></td>
22
+ <td><%= display_state(page) %></td>
23
+ <td><%= display_events(page) %></td>
20
24
  </tr>
21
- <% else %>
22
- <% @pages.each do |page| %>
23
- <tr>
24
- <td><%= link_to page.title, edit_admin_page_path(page) %></a></td>
25
- <td><%= page.link %></td>
26
- <td><%= display_page_category(page) %></td>
27
- <td><%= display_state(page) %></td>
28
- <td><%= display_events(page) %></td>
29
- </tr>
30
- <% end %>
31
25
  <% end %>
32
26
  </table>
33
27
 
@@ -0,0 +1,11 @@
1
+ <div id="nav">
2
+ <ul class="left">
3
+ <li><%= link_to t('admin.nav.pages'), admin_pages_path %></li>
4
+ <li><%= link_to t('admin.nav.categories'), admin_categories_path %></li>
5
+ <li><%= link_to t('admin.nav.translations'), admin_translations_path %></li>
6
+ <li><%= link_to t('admin.nav.media'), admin_images_path %></li>
7
+ </ul>
8
+ <ul class="right">
9
+ <li><%= link_to t('admin.nav.users'), admin_users_path %></li>
10
+ </ul>
11
+ </div>
File without changes
@@ -1,9 +1,9 @@
1
1
  <div id="toplinks">
2
2
  <% if user_signed_in? %>
3
- <%= t('admin.signed_in_as', :user => current_user.email) %>.
4
- <%= link_to t('.sign_out'), destroy_user_session_path %>
3
+ <%= t('admin.toplinks.signed_in_as', :user => current_user.email) %>.
4
+ <%= link_to t('admin.toplinks.sign_out'), destroy_user_session_path %>
5
5
  <% else %>
6
- <%= link_to t('.sign_up'), new_user_registration_path %> <%= t('.or') %> <%= link_to t('.sign_in'), new_user_session_path %>
6
+ <%= link_to t('admin.toplinks.sign_up'), new_user_registration_path %> <%= t('.or') %> <%= link_to t('admin.toplinks.sign_in'), new_user_session_path %>
7
7
  <% end %>
8
- &nbsp;<a href='/'><%= t('admin.website_home') %></a>
8
+ &nbsp;<a href='/'><%= t('admin.toplinks.website_home') %></a>
9
9
  </div>
@@ -0,0 +1,38 @@
1
+ <%= form_for [:admin, @video], :html => { :multipart => true } do |f| %>
2
+ <%= render "shared/error_messages", :target => @video %>
3
+ <div>
4
+ <%= f.label :title, t('videos.title'), :class => "desc required" %>
5
+ <%= f.text_field :title, :size => "80" %>
6
+ </div>
7
+ <h3><%= t('videos.sources.title') %></h3>
8
+ <%=raw t('videos.sources.instruct') %>
9
+
10
+ <% @index = 0 %>
11
+ <%= f.fields_for :sources do |source_form| %>
12
+ <div>
13
+ <%= source_form.label :video, t('videos.sources.file') %>
14
+ <%= source_form.object.attributes['video_file_name'] %>
15
+ <%= source_form.file_field :video %>
16
+ <%= source_form.label :container_type, t('videos.sources.container_type')%>
17
+ <%= source_form.hidden_field :container_type, :value => source_form.object.attributes[:container_type] || Source::CONTAINER_TYPES[@index] %>
18
+ <%= source_form.object.attributes[:container_type] || Source::CONTAINER_TYPES[@index] %>
19
+ <% if source_form.object.attributes && source_form.object.attributes['video_file_size'] %>
20
+ <strong><%= t('videos.file_size') %></strong>
21
+ <%= number_to_human_size source_form.object.attributes['video_file_size'] %>
22
+ <% end %>
23
+ </div>
24
+ <% @index += 1 %>
25
+ <% end %>
26
+
27
+ <div>
28
+ <%= f.submit t('videos.submit') %>
29
+ <%= link_to t('cancel'), admin_videos_path %>
30
+ </div>
31
+ <% end %>
32
+
33
+ <% if @video.id %>
34
+ <%= form_for [:admin, @video], :html => { :method => "delete" } do |f| %>
35
+ <input type="hidden" name="_method" value="delete" />
36
+ <button type="submit"><%= t('videos.delete') %></button>
37
+ <% end %>
38
+ <% end %>
@@ -0,0 +1,13 @@
1
+ <% content_for :head do %>
2
+ <link rel="stylesheet" href="/stylesheets/video-js.css" type="text/css" media="screen" title="Video JS">
3
+ <link rel="stylesheet" href="/stylesheets/skins/vim.css" type="text/css" media="screen" title="Video JS">
4
+ <link rel="stylesheet" href="/stylesheets/skins/hu.css" type="text/css" media="screen" title="Video JS">
5
+
6
+ <script src="/javascripts/video.js" type="text/javascript" charset="utf-8"></script>
7
+
8
+ <script type="text/javascript">
9
+ $(function(){
10
+ $("video").VideoJS()
11
+ });
12
+ </script>
13
+ <% end %>
@@ -0,0 +1,15 @@
1
+ <%= form_for @search, :url => admin_videos_path, :html => {:method => :get, :class => 'search'} do |f| %>
2
+ <div>
3
+ <h3><%= t('videos.search.title') %></h3>
4
+ <div class='top'>
5
+ <%= f.label :title_contains, t('videos.search.video_title'), :class => 'desc' %>
6
+ <%= f.text_field :title_contains, :size => "20" %>
7
+ </div>
8
+ <div class='top'>
9
+ <label>&nbsp;</label>
10
+ <p>
11
+ <%= f.submit t('videos.search.submit') %>
12
+ </p>
13
+ </div>
14
+ </div>
15
+ <% end %>