Changeset 3
- Timestamp:
- 03/24/06 22:12:04 (3 years ago)
- Files:
-
- trunk/app/controllers/content_ajax_controller.rb (added)
- trunk/app/controllers/medium_ajax_controller.rb (added)
- trunk/app/controllers/release_ajax_controller.rb (modified) (2 diffs)
- trunk/app/controllers/release_controller.rb (modified) (2 diffs)
- trunk/app/controllers/search_ajax_controller.rb (modified) (1 diff)
- trunk/app/helpers/content_ajax_helper.rb (added)
- trunk/app/helpers/interface_helper.rb (modified) (1 diff)
- trunk/app/helpers/medium_ajax_helper.rb (added)
- trunk/app/models/actions/action.rb (modified) (1 diff)
- trunk/app/models/content/content.rb (modified) (1 diff)
- trunk/app/models/movie/movie.rb (modified) (1 diff)
- trunk/app/models/references/reference.rb (modified) (1 diff)
- trunk/app/models/releases/medium.rb (modified) (1 diff)
- trunk/app/models/releases/release.rb (modified) (2 diffs)
- trunk/app/models/wiki/wiki_enabled.rb (modified) (2 diffs)
- trunk/app/views/cast_ajax/create.rjs (modified) (1 diff)
- trunk/app/views/content_ajax (added)
- trunk/app/views/medium_ajax (added)
- trunk/app/views/movie/_release.rhtml (modified) (1 diff)
- trunk/app/views/movie_ajax/create_genre.rjs (modified) (1 diff)
- trunk/app/views/movie_ajax/new_language.rhtml (modified) (1 diff)
- trunk/app/views/release/_medium.rhtml (added)
- trunk/app/views/release/_movie.rhtml (modified) (1 diff)
- trunk/app/views/release/index.rhtml (modified) (2 diffs)
- trunk/app/views/release_ajax/new_disc.rjs (added)
- trunk/db/migrate/009_media.rb (added)
- trunk/db/schema.rb (modified) (5 diffs)
- trunk/public/images/dvd.png (added)
- trunk/public/stylesheets/release.css (added)
- trunk/public/stylesheets/screen.css (modified) (1 diff)
- trunk/test/fixtures/actions.yml (modified) (7 diffs)
- trunk/test/functional/content_ajax_controller_test.rb (added)
- trunk/test/functional/medium_ajax_controller_test.rb (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/app/controllers/release_ajax_controller.rb
r2 r3 1 1 class ReleaseAjaxController < ReleaseController 2 include AjaxController 3 self.extend(AjaxController) 4 2 5 layout nil 6 7 sort_action :release, :media 3 8 4 9 def new_cover … … 8 13 end 9 14 15 def new_disc 16 @release.media << DVD.new 17 end 18 10 19 def add_movie 11 20 @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 13 28 end 14 29 trunk/app/controllers/release_controller.rb
r2 r3 5 5 6 6 in_place_edit_for :release, :name 7 8 helper 'wiki/wiki' 7 9 8 10 … … 13 15 def select_release 14 16 @release = Release.find(params[:id]) 17 @object = @release 15 18 end 16 19 17 20 def index 18 21 register_action Action.find_by_name('RELEASE_NEW_MOVIE').for( @release ) 22 register_action Action.find_by_name('RELEASE_NEW_DISC').for( @release ) 19 23 end 20 24 trunk/app/controllers/search_ajax_controller.rb
r2 r3 63 63 end 64 64 65 def filter_language 65 def filter_languages 66 66 @filter = request.raw_post 67 67 @movie = Movie.find(params[:movie]) 68 68 languages = Language.find_localized( @filter ) 69 69 @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)} 71 72 end 72 73 trunk/app/helpers/interface_helper.rb
r2 r3 19 19 in_place_collection_editor_field c, m, action, options 20 20 when 'wiki' 21 22 action_read = m.to_s.upcase + "_RAW" 23 action_write = m.to_s.upcase + "_SET" 24 21 25 # :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', 27 31 :rows => 5 28 32 } ) trunk/app/models/actions/action.rb
r2 r3 57 57 @url[:page] = @target.page_name 58 58 else 59 klass = @target.respond_to?(:superclass) ? @target.superclass : 60 @target.class 59 klass = @target.class.base_class 61 60 @url[klass.to_s.downcase] = @target.id 62 61 end trunk/app/models/content/content.rb
r2 r3 4 4 belongs_to :person 5 5 belongs_to :character 6 belongs_to :release 7 belongs_to :medium 6 8 7 9 include WikiContent 8 10 9 11 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( 11 13 self.movie ).targeting( self ) 12 14 end trunk/app/models/movie/movie.rb
r2 r3 38 38 has_and_belongs_to_many :releases, 39 39 :include => :cover, 40 :extend => ReleaseFinder 40 :extend => ReleaseFinder, 41 :order => 'movies_releases.position' 41 42 42 43 has_and_belongs_to_many :references, trunk/app/models/references/reference.rb
r2 r3 10 10 11 11 def superclass 12 Reference12 self.class.base_class 13 13 end 14 14 end trunk/app/models/releases/medium.rb
r2 r3 1 1 class Medium < ActiveRecord::Base 2 2 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 3 27 end trunk/app/models/releases/release.rb
r2 r3 1 1 class Release < ActiveRecord::Base 2 2 belongs_to :language 3 has_many :media 3 has_many :media, 4 :order => :position 4 5 has_one :cover 5 has_and_belongs_to_many :movies 6 has_and_belongs_to_many :movies, 7 :order => 'movies_releases.position' 6 8 7 9 validates_presence_of :name … … 16 18 :message => _('BARCODE_FORMAT_INVALID') 17 19 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 18 32 end trunk/app/models/wiki/wiki_enabled.rb
r2 r3 21 21 page.language = lang 22 22 page.name = name 23 method = page.method(self. superclass.to_s.downcase + "=")23 method = page.method(self.class.base_class.to_s.downcase + "=") 24 24 method.call(self) 25 25 end … … 29 29 30 30 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 ) 32 32 end 33 33 end 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 3 1 update = "movie-" + @cast.class.to_s.downcase.pluralize 4 2 page.replace_html update, :partial => 'movie/cast', trunk/app/views/movie/_release.rhtml
r2 r3 9 9 <strong style="font-size: 1.2em;"> 10 10 <%= 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> 13 18 </div> 14 19 </div> trunk/app/views/movie_ajax/create_genre.rjs
r2 r3 1 page.hide 'ajax-actions'2 1 page.replace_html 'overview-genres', :partial => 'movie/overview_genres' trunk/app/views/movie_ajax/new_language.rhtml
r2 r3 24 24 <% languages = Language.find_all 25 25 @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)} %> 27 28 </div> 28 29 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 %> 3 3 </li> trunk/app/views/release/index.rhtml
r2 r3 1 1 <h2><%= editable_attribute :release, :name, 'string' %></h2> 2 <div style="float: right; ">2 <div style="float: right; text-align: center;"> 3 3 <%= process_action @release.cover.default_action %> 4 <br /> 5 <br /> 6 <%= image_tag 'barcode' %> 7 <br /> 8 4 9 </div> 5 10 … … 7 12 <%= editable_attribute( :release, :movies, 'sortable-list', @release ) %> 8 13 14 <h3><%= _('RELEASE_MEDIA') %></h3> 15 <%= editable_attribute( :release, :media, 'sortable-list', @release ) %> trunk/db/schema.rb
r2 r3 17 17 t.column "icon", :string, :limit => 64 18 18 end 19 20 add_index "actions", ["name"], :name => "name", :unique => true 19 21 20 22 create_table "authorities", :force => true do |t| … … 53 55 t.column "character_id", :integer, :default => 0, :null => false 54 56 t.column "release_id", :integer, :default => 0, :null => false 57 t.column "medium_id", :integer, :default => 0, :null => false 55 58 t.column "language_id", :integer, :default => 0, :null => false 56 59 t.column "data", :text, :default => "", :null => false … … 93 96 t.column "type", :string, :limit => 64 94 97 t.column "name", :string, :limit => 64, :default => "", :null => false 98 t.column "frozen", :boolean, :default => false, :null => false 95 99 end 96 100 … … 136 140 t.column "movie_id", :integer, :default => 0, :null => false 137 141 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 138 144 end 139 145 … … 172 178 end 173 179 174 add_index "releases", ["language_id"], :name => "movie_id"175 176 180 create_table "users", :force => true do |t| 177 181 t.column "login", :string trunk/public/stylesheets/screen.css
r2 r3 10 10 @import url("movie.css"); 11 11 @import url("genres.css"); 12 @import url("release.css"); 12 13 @import url("wiki.css"); 13 14 @import url("inplaceeditor.css"); trunk/test/fixtures/actions.yml
r2 r3 101 101 icon: 102 102 confirmation: 103 updates: 103 updates: ajax-actions 104 104 type: AjaxAction 105 105 action: create … … 456 456 view: 457 457 parent_id: 458 actions_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: 458 470 actions_069: 459 471 name: RELEASE_CREATE_COVER … … 504 516 view: 505 517 parent_id: 518 actions_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: 506 530 actions_007: 507 531 name: MOVIE_CREATE_ALIAS … … 552 576 view: 553 577 parent_id: 578 actions_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: 554 590 actions_029: 555 591 name: CAST_ADD_COMMENT … … 598 634 id: "43" 599 635 controller: movie_ajax 636 view: 637 parent_id: 638 actions_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 600 648 view: 601 649 parent_id: … … 648 696 view: 649 697 parent_id: 698 actions_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: 650 710 actions_011: 651 711 name: MOVIE_SUBMIT_WIKI … … 682 742 id: "66" 683 743 controller: character 744 view: 745 parent_id: 746 actions_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 684 756 view: 685 757 parent_id:
