Changeset 3

Show
Ignore:
Timestamp:
03/24/06 22:12:04 (3 years ago)
Author:
benjamin
Message:

added releases/media pages

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/app/controllers/release_ajax_controller.rb

    r2 r3  
    11class ReleaseAjaxController < ReleaseController 
     2  include AjaxController 
     3  self.extend(AjaxController) 
     4 
    25  layout nil 
     6 
     7  sort_action :release, :media 
    38 
    49  def new_cover 
     
    813  end 
    914 
     15  def new_disc 
     16    @release.media << DVD.new 
     17  end 
     18 
    1019  def add_movie 
    1120    @release.movies << Movie.find(params[:movie]) 
    12     @release.save 
     21  end 
     22 
     23  def sort_release_movies 
     24    @release.movies.each { |m| 
     25      @release.movie_position(m, params['release-movies'].index(m.id.to_s) + 1) if params['release-movies'].include?(m.id.to_s) 
     26    } 
     27    render :nothing => true 
    1328  end 
    1429 
  • trunk/app/controllers/release_controller.rb

    r2 r3  
    55 
    66  in_place_edit_for :release, :name 
     7 
     8  helper 'wiki/wiki' 
    79 
    810 
     
    1315  def select_release 
    1416    @release = Release.find(params[:id]) 
     17    @object  = @release 
    1518  end 
    1619 
    1720  def index 
    1821    register_action Action.find_by_name('RELEASE_NEW_MOVIE').for( @release ) 
     22    register_action Action.find_by_name('RELEASE_NEW_DISC').for( @release ) 
    1923  end 
    2024 
  • trunk/app/controllers/search_ajax_controller.rb

    r2 r3  
    6363  end 
    6464   
    65   def filter_language 
     65  def filter_languages 
    6666    @filter = request.raw_post 
    6767    @movie = Movie.find(params[:movie]) 
    6868    languages = Language.find_localized( @filter ) 
    6969    @movie.languages.each {|l| languages.delete(l)} 
    70     render :partial => 'language', :collection => languages 
     70    render :partial => 'language', :collection => languages.sort{|a,b|  
     71                 _("LANGUAGE_" + a.code.upcase) <=> _("LANGUAGE_" + b.code.upcase)} 
    7172  end 
    7273 
  • trunk/app/helpers/interface_helper.rb

    r2 r3  
    1919        in_place_collection_editor_field c, m, action, options 
    2020      when 'wiki' 
     21 
     22        action_read  = m.to_s.upcase + "_RAW" 
     23        action_write = m.to_s.upcase + "_SET" 
     24 
    2125        # :TODO: geht prinzipiell, wird aber nicht mehr gebraucht :) 
    22         "<div id='in_place_wiki_editor'>" + display_wiki_content(object) + "</div>" + 
    23         in_place_editor('in_place_wiki_editor', {  
    24           :url              => Action.find_by_name('MOVIE_SET_ABSTRACT').for( @movie ).url, 
    25           :load_text_url    => Action.find_by_name('MOVIE_RAW_ABSTRACT').for( @movie ).url, 
    26           :external_control => 'edit-' + m.to_s + '-control', 
     26        "<div id='in_place_wiki_editor_" + object.id.to_s + "'>" + display_wiki_content(object) + "</div>" + 
     27        in_place_editor('in_place_wiki_editor_' + object.id.to_s, {  
     28          :url              => Action.find_by_name( action_write ).for( object ).url, 
     29          :load_text_url    => Action.find_by_name( action_read ).for( object ).url, 
     30          :external_control => 'edit-' + c.to_s + '_' + m.to_s + '_' + object.id.to_s + '-control', 
    2731          :rows             => 5 
    2832        } ) 
  • trunk/app/models/actions/action.rb

    r2 r3  
    5757        @url[:page] = @target.page_name 
    5858      else 
    59         klass = @target.respond_to?(:superclass) ? @target.superclass :  
    60                                                    @target.class 
     59        klass = @target.class.base_class  
    6160        @url[klass.to_s.downcase] = @target.id 
    6261      end  
  • trunk/app/models/content/content.rb

    r2 r3  
    44  belongs_to :person 
    55  belongs_to :character 
     6  belongs_to :release 
     7  belongs_to :medium 
    68 
    79  include WikiContent 
    810 
    911  def default_action 
    10     Action.find_by_name(parent.superclass.to_s.upcase + '_VIEW_WIKI_PAGE').for(  
     12    Action.find_by_name(parent.class.base_class.to_s.upcase + '_VIEW_WIKI_PAGE').for(  
    1113                          self.movie ).targeting( self ) 
    1214  end 
  • trunk/app/models/movie/movie.rb

    r2 r3  
    3838  has_and_belongs_to_many :releases, 
    3939                          :include => :cover, 
    40                           :extend => ReleaseFinder 
     40                          :extend  => ReleaseFinder, 
     41                          :order   => 'movies_releases.position' 
    4142 
    4243  has_and_belongs_to_many :references, 
  • trunk/app/models/references/reference.rb

    r2 r3  
    1010 
    1111  def superclass 
    12     Reference 
     12    self.class.base_class 
    1313  end 
    1414end 
  • trunk/app/models/releases/medium.rb

    r2 r3  
    11class Medium < ActiveRecord::Base 
    22  belongs_to :release 
     3 
     4  has_many :contents, 
     5           :dependent  => true, 
     6           :finder_sql => 'SELECT DISTINCT * from contents where language_id = #{release.language.id} AND medium_id = #{id}' 
     7 
     8  def content 
     9    if contents.empty? 
     10      c = Content.new 
     11      c.language = release.language 
     12      c.medium  = self 
     13      c.data = _('NO_CONTENT') 
     14      c.save 
     15      self.reload 
     16    end 
     17    contents.first 
     18  end 
     19 
     20  def name 
     21    if read_attribute(:name).empty? 
     22      "..." 
     23    else 
     24      read_attribute(:name) 
     25    end 
     26  end 
    327end 
  • trunk/app/models/releases/release.rb

    r2 r3  
    11class Release < ActiveRecord::Base 
    22  belongs_to :language 
    3   has_many   :media 
     3  has_many   :media, 
     4             :order => :position 
    45  has_one    :cover 
    5   has_and_belongs_to_many :movies 
     6  has_and_belongs_to_many :movies, 
     7                          :order   => 'movies_releases.position' 
    68 
    79  validates_presence_of :name 
     
    1618                      :message => _('BARCODE_FORMAT_INVALID') 
    1719 
     20  if not defined? UPDATE_POSITION_SQL_STATEMENT 
     21    UPDATE_POSITION_SQL_STATEMENT = "update movies_releases set position = ? where  
     22                                     movie_id = ? AND release_id = ?" 
     23  end 
     24 
     25 
     26  def movie_position(movie, position) 
     27    connection.execute(  
     28      ActiveRecord::Base.send(:sanitize_sql, [ UPDATE_POSITION_SQL_STATEMENT, position, movie.id, id ]) 
     29    ) 
     30  end 
     31 
    1832end 
  • trunk/app/models/wiki/wiki_enabled.rb

    r2 r3  
    2121      page.language      = lang 
    2222      page.name          = name 
    23       method             = page.method(self.superclass.to_s.downcase + "=") 
     23      method             = page.method(self.class.base_class.to_s.downcase + "=") 
    2424      method.call(self) 
    2525    end 
     
    2929 
    3030  def new_wiki_action 
    31     Action.find_by_name(self.superclass.to_s.upcase + '_NEW_WIKI_PAGE').for( self ) 
     31    Action.find_by_name(self.class.base_class.to_s.upcase + '_NEW_WIKI_PAGE').for( self ) 
    3232  end 
    3333end 
  • trunk/app/views/cast_ajax/create.rjs

    r2 r3  
    1 page.insert_html :top, @cast.class.to_s.downcase + '_' + @cast.id.to_s, image_tag('loading.gif') 
    2  
    31update = "movie-" + @cast.class.to_s.downcase.pluralize 
    42page.replace_html update, :partial    => 'movie/cast',  
  • trunk/app/views/movie/_release.rhtml

    r2 r3  
    99    <strong style="font-size: 1.2em;"> 
    1010      <%= process_action Action.find_by_name('RELEASE_VIEW').for( release ) %> 
    11     </strong> 
    12 <%= release.runtime %> 
     11  </strong> (<%= release.media.count %> discs)<br /> 
     12    <%= _('RELEASE_INCLUDES') %>: 
     13    <ul> 
     14    <% release.movies.each { |m| %> 
     15    <li><%= process_action m.default_action %></li> 
     16    <% } %> 
     17    </ul> 
    1318  </div> 
    1419</div> 
  • trunk/app/views/movie_ajax/create_genre.rjs

    r2 r3  
    1 page.hide 'ajax-actions' 
    21page.replace_html 'overview-genres', :partial => 'movie/overview_genres' 
  • trunk/app/views/movie_ajax/new_language.rhtml

    r2 r3  
    2424  <% languages = Language.find_all  
    2525     @movie.languages.each { |l| languages.delete(l) } -%> 
    26   <%= render :partial => 'search_ajax/language', :collection => languages %> 
     26  <%= render :partial => 'search_ajax/language', :collection => languages.sort { |a,b| 
     27         _("LANGUAGE_" + a.code.upcase) <=> _("LANGUAGE_" + b.code.upcase)} %> 
    2728</div> 
    2829 
  • trunk/app/views/release/_movie.rhtml

    r2 r3  
    1 <li id="movie_" + <%= movie.id.to_s %>
    2   <%= movie.name %> 
     1<li id="movie_<%= movie.id.to_s %>"
     2  <%= process_action movie.default_action %> 
    33</li> 
  • trunk/app/views/release/index.rhtml

    r2 r3  
    11<h2><%= editable_attribute :release, :name, 'string' %></h2> 
    2 <div style="float: right;"> 
     2<div style="float: right; text-align: center;"> 
    33<%= process_action @release.cover.default_action %> 
     4<br /> 
     5<br /> 
     6<%= image_tag 'barcode' %> 
     7<br /> 
     8 
    49</div> 
    510 
     
    712<%= editable_attribute( :release, :movies, 'sortable-list', @release ) %> 
    813 
     14<h3><%= _('RELEASE_MEDIA') %></h3> 
     15<%= editable_attribute( :release, :media, 'sortable-list', @release ) %> 
  • trunk/db/schema.rb

    r2 r3  
    1717    t.column "icon", :string, :limit => 64 
    1818  end 
     19 
     20  add_index "actions", ["name"], :name => "name", :unique => true 
    1921 
    2022  create_table "authorities", :force => true do |t| 
     
    5355    t.column "character_id", :integer, :default => 0, :null => false 
    5456    t.column "release_id", :integer, :default => 0, :null => false 
     57    t.column "medium_id", :integer, :default => 0, :null => false 
    5558    t.column "language_id", :integer, :default => 0, :null => false 
    5659    t.column "data", :text, :default => "", :null => false 
     
    9396    t.column "type", :string, :limit => 64 
    9497    t.column "name", :string, :limit => 64, :default => "", :null => false 
     98    t.column "frozen", :boolean, :default => false, :null => false 
    9599  end 
    96100 
     
    136140    t.column "movie_id", :integer, :default => 0, :null => false 
    137141    t.column "release_id", :integer, :default => 0, :null => false 
     142    t.column "frozen", :boolean, :default => false, :null => false 
     143    t.column "position", :integer, :default => 0, :null => false 
    138144  end 
    139145 
     
    172178  end 
    173179 
    174   add_index "releases", ["language_id"], :name => "movie_id" 
    175  
    176180  create_table "users", :force => true do |t| 
    177181    t.column "login", :string 
  • trunk/public/stylesheets/screen.css

    r2 r3  
    1010@import url("movie.css"); 
    1111@import url("genres.css"); 
     12@import url("release.css"); 
    1213@import url("wiki.css"); 
    1314@import url("inplaceeditor.css"); 
  • trunk/test/fixtures/actions.yml

    r2 r3  
    101101  icon:  
    102102  confirmation:  
    103   updates:  
     103  updates: ajax-actions 
    104104  type: AjaxAction 
    105105  action: create 
     
    456456  view:  
    457457  parent_id:  
     458actions_070:  
     459  name: RELEASE_NEW_MOVIE 
     460  success_id:  
     461  icon:  
     462  confirmation:  
     463  updates: ajax-actions 
     464  type: AjaxAction 
     465  action: new_movie 
     466  id: "83" 
     467  controller: release_ajax 
     468  view:  
     469  parent_id:  
    458470actions_069:  
    459471  name: RELEASE_CREATE_COVER 
     
    504516  view:  
    505517  parent_id:  
     518actions_071:  
     519  name: RELEASE_ADD_MOVIE 
     520  success_id:  
     521  icon:  
     522  confirmation:  
     523  updates:  
     524  type: TitledAjaxAction 
     525  action: add_movie 
     526  id: "84" 
     527  controller: release_ajax 
     528  view:  
     529  parent_id:  
    506530actions_007:  
    507531  name: MOVIE_CREATE_ALIAS 
     
    552576  view:  
    553577  parent_id:  
     578actions_072:  
     579  name: CONTENT_RAW 
     580  success_id:  
     581  icon:  
     582  confirmation:  
     583  updates:  
     584  type: AjaxAction 
     585  action: raw_content 
     586  id: "85" 
     587  controller: content_ajax 
     588  view:  
     589  parent_id:  
    554590actions_029:  
    555591  name: CAST_ADD_COMMENT 
     
    598634  id: "43" 
    599635  controller: movie_ajax 
     636  view:  
     637  parent_id:  
     638actions_073:  
     639  name: CONTENT_SET 
     640  success_id:  
     641  icon:  
     642  confirmation:  
     643  updates:  
     644  type: AjaxAction 
     645  action: set_content 
     646  id: "86" 
     647  controller: content_ajax 
    600648  view:  
    601649  parent_id:  
     
    648696  view:  
    649697  parent_id:  
     698actions_074:  
     699  name: MEDIUM_SET_NAME 
     700  success_id:  
     701  icon:  
     702  confirmation:  
     703  updates:  
     704  type: AjaxAction 
     705  action: set_name 
     706  id: "87" 
     707  controller: medium_ajax 
     708  view:  
     709  parent_id:  
    650710actions_011:  
    651711  name: MOVIE_SUBMIT_WIKI 
     
    682742  id: "66" 
    683743  controller: character 
     744  view:  
     745  parent_id:  
     746actions_075:  
     747  name: RELEASE_NEW_DISC 
     748  success_id:  
     749  icon:  
     750  confirmation:  
     751  updates:  
     752  type: AjaxAction 
     753  action: new_disc 
     754  id: "88" 
     755  controller: release_ajax 
    684756  view:  
    685757  parent_id: