Changeset 1126
- Timestamp:
- 08/19/07 00:38:43 (1 year ago)
- Files:
-
- trunk/app/controllers/document_controller.rb (modified) (1 diff)
- trunk/app/controllers/documents_controller.rb (modified) (6 diffs)
- trunk/app/controllers/podcasts_controller.rb (modified) (3 diffs)
- trunk/app/controllers/subscriptions_controller.rb (modified) (2 diffs)
- trunk/app/controllers/users_controller.rb (modified) (3 diffs)
- trunk/app/models/author.rb (deleted)
- trunk/app/models/document.rb (modified) (1 diff)
- trunk/app/models/podcast.rb (modified) (1 diff)
- trunk/app/models/subscription.rb (modified) (1 diff)
- trunk/app/models/user.rb (modified) (1 diff)
- trunk/test/functional/document_api_test.rb (modified) (1 diff)
- trunk/test/unit/user_test.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/app/controllers/document_controller.rb
r1122 r1126 50 50 51 51 def current_author 52 Author.find(@user_id)52 User.find(@user_id) 53 53 end 54 54 trunk/app/controllers/documents_controller.rb
r1123 r1126 11 11 @document = AudioDocument.new(params[:document]) 12 12 if request.post? 13 @document.author = Author.find(session[:user])13 @document.author = User.find(session[:user]) 14 14 @document.tag_with(params[:labels]) 15 15 if @document.save … … 23 23 24 24 def show 25 @document = Author.find(session[:user]).documents.find(params[:id], :include => :tags)25 @document = User.find(session[:user]).documents.find(params[:id], :include => :tags) 26 26 @review = Review.new(params[:review]) 27 27 if request.post? … … 40 40 41 41 def edit 42 @document = Author.find(session[:user]).documents.find(params[:id])42 @document = User.find(session[:user]).documents.find(params[:id]) 43 43 if request.post? 44 44 @document.tag_with(params[:labels]) … … 53 53 54 54 def manage 55 @pages = Paginator.new(self, Author.find(session[:user]).documents.size, 4, params[:page])56 @document = Author.find(session[:user]).documents.find(:all, :limit => @pages.items_per_page, :offset => @pages.current.offset, :include => :tags)55 @pages = Paginator.new(self, User.find(session[:user]).documents.size, 4, params[:page]) 56 @document = User.find(session[:user]).documents.find(:all, :limit => @pages.items_per_page, :offset => @pages.current.offset, :include => :tags) 57 57 end 58 58 59 59 def upload 60 @document = Author.find(session[:user]).documents.find(params[:id])60 @document = User.find(session[:user]).documents.find(params[:id]) 61 61 unless @document.upload 62 62 @document.upload = Upload.new … … 100 100 101 101 def download 102 @document = Author.find(session[:user]).documents.find(params[:id])102 @document = User.find(session[:user]).documents.find(params[:id]) 103 103 send_file @document.path, :type => @document.format, :filename => @document.filename 104 104 end 105 105 106 106 def destroy 107 Author.find(session[:user]).documents.find(params[:id]).destroy107 User.find(session[:user]).documents.find(params[:id]).destroy 108 108 redirect_to :action => 'manage' 109 109 end 110 110 111 111 def share 112 @document = Author.find(session[:user]).documents.find(params[:id])112 @document = User.find(session[:user]).documents.find(params[:id]) 113 113 flash[:warning] = "Votre document n'est lié à aucun fichier" unless @document.uploaded? 114 114 end 115 115 116 116 def tag 117 @pages = Paginator.new(self, Author.find(session[:user]).documents.find_by_tag(params[:name]).size, 4, params[:page])118 @document = Author.find(session[:user]).documents.find_by_tag(params[:name], { :offset => @pages.current.offset, :limit => @pages.items_per_page })117 @pages = Paginator.new(self, User.find(session[:user]).documents.find_by_tag(params[:name]).size, 4, params[:page]) 118 @document = User.find(session[:user]).documents.find_by_tag(params[:name], { :offset => @pages.current.offset, :limit => @pages.items_per_page }) 119 119 end 120 120 … … 124 124 125 125 def listen 126 @document = Author.find(session[:user]).documents.find(params[:id])126 @document = User.find(session[:user]).documents.find(params[:id]) 127 127 end 128 128 trunk/app/controllers/podcasts_controller.rb
r796 r1126 9 9 @podcast = Podcast.new(params[:podcast]) 10 10 if request.post? 11 @podcast.author = Author.find(session[:user])11 @podcast.author = User.find(session[:user]) 12 12 @podcast.tag_with(params[:labels]) 13 13 @podcast.name = StringRandom.alphanumeric(8).downcase … … 22 22 23 23 def show 24 @podcast = Author.find(session[:user]).podcasts.find(params[:id], :include => :tags)24 @podcast = User.find(session[:user]).podcasts.find(params[:id], :include => :tags) 25 25 end 26 26 27 27 def edit 28 @podcast = Author.find(session[:user]).podcasts.find(params[:id])28 @podcast = User.find(session[:user]).podcasts.find(params[:id]) 29 29 if request.post? 30 30 @podcast.tag_with(params[:labels]) … … 39 39 40 40 def manage 41 @pages = Paginator.new(self, Author.find(session[:user]).podcasts.size, 4, params[:page])42 @podcast = Author.find(session[:user]).podcasts.find(:all, :limit => @pages.items_per_page, :offset => @pages.current.offset, :include => :tags)41 @pages = Paginator.new(self, User.find(session[:user]).podcasts.size, 4, params[:page]) 42 @podcast = User.find(session[:user]).podcasts.find(:all, :limit => @pages.items_per_page, :offset => @pages.current.offset, :include => :tags) 43 43 end 44 44 45 45 def destroy 46 Author.find(session[:user]).podcasts.find(params[:id]).destroy46 User.find(session[:user]).podcasts.find(params[:id]).destroy 47 47 redirect_to :action => 'manage' 48 48 end trunk/app/controllers/subscriptions_controller.rb
r796 r1126 30 30 def add 31 31 @subscription = Subscription.new do |subscription| 32 subscription.author = Author.find(session[:user])32 subscription.author = User.find(session[:user]) 33 33 subscription.document = subscription.author.documents.find(params[:document]) 34 34 subscription.subscriber = Subscriber.find(params[:id].split("_")[1]) … … 39 39 40 40 def remove 41 @subscription = Author.find(session[:user]).documents.find(params[:document]).subscriptions.find(:first, :conditions => ["author_id = ? AND subscriber_id = ?", session[:user], params[:id].split("_")[1]])41 @subscription = User.find(session[:user]).documents.find(params[:document]).subscriptions.find(:first, :conditions => ["author_id = ? AND subscriber_id = ?", session[:user], params[:id].split("_")[1]]) 42 42 @subscription.destroy 43 43 render :action => "update" trunk/app/controllers/users_controller.rb
r1106 r1126 13 13 14 14 def dashboard 15 @author = Author.find(session[:user])15 @author = User.find(session[:user]) 16 16 @subscriber = Subscriber.find(session[:user]) 17 @tag = @subscriber.subscriptions.collect{ |s| s.document.tags } + @author.documents.collect{ |d| d.tags } 17 user_tags = @author.documents.collect{ |d| d.tags } 18 @tag = @subscriber.subscriptions.collect{ |s| s.document.tags } + user_tags 18 19 @tag = @tag.flatten.uniq[0..15] 19 20 end 20 21 21 22 def tags 22 @author = Author.find(session[:user])23 @author = User.find(session[:user]) 23 24 @subscriber = Subscriber.find(session[:user]) 24 25 @tag = @subscriber.subscriptions.collect{ |s| s.document.tags } + @author.documents.collect{ |d| d.tags } … … 27 28 28 29 def tag 29 @document = Author.find(session[:user]).documents.find_by_tag(params[:name], { :limit => 5 })30 @document = User.find(session[:user]).documents.find_by_tag(params[:name], { :limit => 5 }) 30 31 @subscription = Subscriber.find(session[:user]).subscriptions.find_by_tag(params[:name], { :limit => 5 }) 31 32 end 32 33 33 34 def find 34 @document = Author.find(session[:user]).documents.find_by_keywords(params[:keywords])35 @document = User.find(session[:user]).documents.find_by_keywords(params[:keywords]) 35 36 @subscription = Subscriber.find(session[:user]).subscriptions.find_by_keywords(params[:keywords]) 36 37 end … … 84 85 85 86 begin 86 Subscriber.find(@user.id).subscriptions.build(:author => Author.find(1), :document => Document.find(1)).save87 Subscriber.find(@user.id).subscriptions.build(:author => User.find(1), :document => Document.find(1)).save 87 88 rescue ActiveRecord::RecordNotFound 88 89 logger.error("no welcome document found") trunk/app/models/document.rb
r1122 r1126 2 2 require 'taglib' 3 3 class Document < ActiveRecord::Base 4 belongs_to :author 4 belongs_to :author, :class_name => "User", :foreign_key => "author_id" 5 5 has_one :upload, :dependent => :destroy 6 6 has_many :subscribers, :through => :subscriptions trunk/app/models/podcast.rb
r1010 r1126 1 1 class Podcast < ActiveRecord::Base 2 2 has_and_belongs_to_many :tags 3 belongs_to :author 3 belongs_to :author, :class_name => "User", :foreign_key => "author_id" 4 4 5 5 def tag_with(list) trunk/app/models/subscription.rb
r585 r1126 1 1 class Subscription < ActiveRecord::Base 2 belongs_to :author 3 belongs_to :subscriber 2 belongs_to :author, :class_name => "User", :foreign_key => "author_id" 3 belongs_to :subscriber, :class_name => "User", :foreign_key => "subscriber_id" 4 4 belongs_to :document 5 5 trunk/app/models/user.rb
r1125 r1126 2 2 class User < ActiveRecord::Base 3 3 has_many :reviews, :dependent => :destroy 4 5 has_many :documents, :dependent => :destroy, :order => "updated_at DESC", :foreign_key => "author_id" do 6 def find_by_tag(name, options = Hash.new) 7 find_by_sql(["SELECT documents.* FROM documents, tags, documents_tags WHERE documents.id = documents_tags.document_id AND tags.id = documents_tags.tag_id AND documents.author_id = ? AND tags.name = ? OFFSET ? LIMIT ?", @owner.quoted_id, name, options[:offset], options[:limit]]) 8 end 9 10 def find_by_keywords(keywords) 11 find(:all, :conditions => ["title ~* ?", keywords]) 12 end 13 end 14 15 has_many :subscriptions, :dependent => :destroy, :order => "created_at DESC" do 16 def find_by_tag(name, options = Hash.new) 17 options[:offset] = 0 if options[:offset] 18 find_by_sql(["SELECT subscriptions.* FROM subscriptions, documents, tags, documents_tags WHERE subscriptions.document_id = documents.id AND documents.id = documents_tags.document_id AND tags.id = documents_tags.tag_id AND subscriptions.subscriber_id = ? AND tags.name = ? OFFSET ? LIMIT ?", @owner.quoted_id, name, options[:offset], options[:limit]]) 19 end 20 21 def find_by_keywords(keywords) 22 find_by_sql(["SELECT subscriptions.* FROM subscriptions, documents WHERE subscriptions.document_id = documents.id AND subscriptions.subscriber_id = ? AND documents.title ~* ?", @owner.quoted_id, keywords]) 23 end 24 end 25 26 has_many :podcasts, :dependent => :destroy, :foreign_key => "author_id" 27 4 28 has_and_belongs_to_many :groups 5 29 has_many :manageable_groups, :class_name => "Group", :foreign_key => "owner_id" trunk/test/functional/document_api_test.rb
r1125 r1126 14 14 @user = users(:elmo) 15 15 @user_key = "#{@user.username}/#{@user.username}" 16 @document = Author.find(@user.id).documents.first16 @document = User.find(@user.id).documents.first 17 17 assert_not_nil @document 18 18 end trunk/test/unit/user_test.rb
r1125 r1126 32 32 assert_kind_of User, User.find(:first) 33 33 end 34 35 def test_documents 36 user = users(:elmo) 37 assert ! user.documents.empty? 38 tags = user.documents.collect{ |d| d.tags } 39 end 40 34 41 end
