Changeset 1365

Show
Ignore:
Timestamp:
08/25/08 14:41:22 (5 months ago)
Author:
alban
Message:

Ecoute des documents via leurs casts. Fixes #20

Files:

Legend:

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

    r1138 r1365  
    11class DocumentsController < ApplicationController 
    22        layout 'documents', :except => [:auto_complete_for_tags] 
    3          
     3 
    44        upload_status_for :upload 
    5    
     5 
    66  def index 
    77    redirect_to :action => 'manage' 
    88  end 
    9    
     9 
    1010  def add 
    1111    @document = AudioDocument.new(params[:document]) 
     
    2121    end 
    2222  end 
    23    
    24   def show  
     23 
     24  def show 
    2525        @document = User.find(session[:user]).documents.find(params[:id], :include => :tags) 
    2626        @review = Review.new(params[:review]) 
     
    3030                if @review.save 
    3131                        flash[:success] = "Votre commentaire a bien été ajouté" 
    32                         redirect_to :action => 'show', :id => @document  
     32                        redirect_to :action => 'show', :id => @document 
    3333                else 
    3434                        flash[:failure] = "Votre commentaire n'a pas été ajouté" 
     
    3838        end 
    3939  end 
    40      
     40 
    4141  def edit 
    4242    @document = User.find(session[:user]).documents.find(params[:id]) 
     
    5656                @document = User.find(session[:user]).documents.find(:all, :limit => @pages.items_per_page, :offset => @pages.current.offset, :include => :tags) 
    5757        end 
    58    
     58 
    5959  def upload 
    6060        @document = User.find(session[:user]).documents.find(params[:id]) 
     
    6363                @document.save 
    6464          end 
    65          
     65 
    6666        if request.post? 
    6767                if params[:mode] == "ftp" 
     
    7575                        else 
    7676                                upload_file = params[:document][:file] 
    77                         end             
    78                                  
     77                        end 
     78 
    7979                        upload_progress.message = "Vérification du document ..." 
    8080      session.update 
    81                          
     81 
    8282                        begin 
    8383                                logger.debug "Upload file: #{upload_file}" 
    84                                 uploaded = @document.upload_file(upload_file)                   
     84                                uploaded = @document.upload_file(upload_file) 
    8585                        rescue Exception => e 
    8686                                logger.error("Can't upload #{upload_file.to_s}: #{e}") 
    8787                        end 
    88                          
     88 
    8989                        if uploaded 
    9090                                @document.upload = nil 
     
    9292                        flash[:success] = "Votre fichier a bien été déposé" 
    9393                        redirect_to :action => 'share', :id => @document 
    94                 else                    
    95                         flash[:failure] = "Votre fichier n'a pas été déposé"  
     94                else 
     95                        flash[:failure] = "Votre fichier n'a pas été déposé" 
    9696                        redirect_to :action => 'upload', :id => @document 
    9797                end 
    9898        end 
    9999  end 
    100    
     100 
    101101  def download 
    102102        @document = User.find(session[:user]).documents.find(params[:id]) 
    103103        send_file @document.path, :type => @document.format, :filename => @document.filename 
    104104  end 
    105    
     105 
    106106  def destroy 
    107107    User.find(session[:user]).documents.find(params[:id]).destroy 
     
    113113          flash[:warning] = "Votre document n'est lié à aucun fichier" unless @document.uploaded? 
    114114        end 
    115          
     115 
    116116        def tag 
    117117                @pages = Paginator.new(self, User.find(session[:user]).documents.find_by_tag(params[:name]).size, 4, params[:page]) 
    118118                @document = User.find(session[:user]).documents.find_by_tag(params[:name], { :offset => @pages.current.offset, :limit => @pages.items_per_page }) 
    119119        end 
    120          
     120 
    121121        def auto_complete_for_tags 
    122122                @tag = Tag.find(:all, :conditions => ["name ~* ?", params[:labels]]) 
    123123        end 
    124          
     124 
    125125  def listen 
    126126        @document = User.find(session[:user]).documents.find(params[:id]) 
     127        redirect_to :controller => 'casts', :action => 'play', :name => @document.casts.first.name 
    127128        end 
    128129 
     
    130131    input = params[:input].nil? ? "" : params[:input].downcase 
    131132    id = params[:id] 
    132      
     133 
    133134    @people = Document.find(id).nonsubscribers.delete_if do |people| 
    134135      ! people.match_name?(input) 
    135136    end 
    136137    render :partial => "users/people", :object => @people, :locals => { :empty => "Aucun utilisateur ne correspond", :draggable => true } 
    137   end   
     138  end 
    138139end 
  • trunk/app/controllers/subscriptions_controller.rb

    r1130 r1365  
    11class SubscriptionsController < ApplicationController 
    22  layout 'documents' 
    3    
     3 
    44  def index 
    55    redirect_to :action => 'manage' 
    66  end 
    7    
    87 
    98        def manage 
    109                @pages = Paginator.new(self, User.find(session[:user]).find_subscriptions.size, 4, params[:page]) 
    1110                @subscription = User.find(session[:user]).find_subscriptions(:limit => @pages.items_per_page, :offset => @pages.current.offset) 
    12         end  
    13    
     11        end 
     12 
     13  def listen 
     14        @subscription = User.find(session[:user]).find_subscription(params[:id]) 
     15        redirect_to :controller => 'casts', :action => 'play', :name => @subscription.document.casts.first.name 
     16        end 
     17 
    1418  def show 
    1519        @subscription = User.find(session[:user]).find_subscription(params[:id]) 
     
    1923                @review.user = User.find(session[:user]) 
    2024                if @review.save 
    21                         flash[:success] = "Votre commentaire a bien été ajouté"  
    22                         redirect_to :action => 'show', :id => @subscription  
     25                        flash[:success] = "Votre commentaire a bien été ajouté" 
     26                        redirect_to :action => 'show', :id => @subscription 
    2327                else 
    2428                        flash[:failure] = "Votre commentaire n'a pas été ajouté" 
     
    2832        end 
    2933  end 
    30    
     34 
    3135        def add 
    3236          document_id = params[:document] 
    3337          subscriber_type, subscriber_id = params[:id].split("_") 
    34            
     38 
    3539                @subscription = Subscription.new do |subscription| 
    3640        subscription.author = User.find(session[:user]) 
     
    3842        subscription.subscriber = Object.const_get(subscriber_type.capitalize).find(subscriber_id) 
    3943    end 
    40                  
     44 
    4145                unless @subscription.save 
    4246                  logger.error("can't create subscription on #{document_id} for #{subscriber_type}:#{subscriber_id} : #{@subscription.errors.inspect}") 
    4347                end 
    44                  
     48 
    4549                render :action => "update" 
    4650        end 
    47    
     51 
    4852  def remove 
    4953    @subscription = User.find(session[:user]).documents.find(params[:document]).subscriptions.find(:first, :conditions => ["author_id = ? AND subscriber_id = ?", session[:user], params[:id].split("_")[1]]) 
     
    5155    render :action => "update" 
    5256  end 
    53    
     57 
    5458  def tag 
    5559        @pages = Paginator.new(self, User.find(session[:user]).find_subscriptions(:tag => params[:name]).size, 4, params[:page]) 
    5660        @subscriptions = User.find(session[:user]).find_subscriptions(:tag => params[:name], :offset => @pages.current.offset, :limit => @pages.items_per_page) 
    5761  end 
    58    
     62 
    5963  def download 
    6064    @subscription = User.find(session[:user]).find_subscription(params[:id]) 
     
    6266        send_file @subscription.document.path, :type => @subscription.document.format, :filename => @subscription.document.filename 
    6367  end 
    64    
     68 
    6569end 
  • trunk/app/views/documents/_documents.rhtml

    r986 r1365  
    1212    </div> 
    1313   <% end %> 
    14    <% unless document.tags.empty? or !tags %>  
     14   <% unless document.tags.empty? or !tags %> 
    1515    <div class="tags"> 
    1616     <% for tag in document.tags %> 
    17       <%= link_to(tag.name, { :action => "tag", :name => tag.name }, :title => "Etiquette : #{tag.name}", :rel => "tag") %>  
     17      <%= link_to(tag.name, { :action => "tag", :name => tag.name }, :title => "Etiquette : #{tag.name}", :rel => "tag") %> 
    1818     <% end %> 
    1919    </div> 
     
    2121   <% if actions %> 
    2222    <div class="actions"> 
    23      <% if document.cues.size > 1 %> 
     23     <% unless document.casts.empty? %> 
    2424             <%= link_to("Ecouter", {:action => "listen", :id => document }, :title => "Ecouter le document", :class => "listen") %> 
    25            <% end %> 
    26            <% if document.cues.size == 1 %> 
    27              <%= link_to("Ecouter", { :controller => "cues", :action => "playlist", :id => document.cues.first }, :title => "Ecouter le document", :class => "listen") %> 
    2825           <% end %> 
    2926     <%= link_to("Télécharger", {:action => "download", :id => document }, :title => "Télécharger votre fichier", :class => "download") if document.uploaded?  %> 
  • trunk/app/views/subscriptions/_subscriptions.rhtml

    r986 r1365  
    1212    </div> 
    1313   <% end %> 
    14    <% unless subscription.document.tags.empty? or !tags %>  
     14   <% unless subscription.document.tags.empty? or !tags %> 
    1515    <div class="tags"> 
    1616     <% for tag in subscription.document.tags %> 
    17       <%= link_to(tag.name, { :action => "tag", :name => tag.name }, :rel => "tag") %>  
     17      <%= link_to(tag.name, { :action => "tag", :name => tag.name }, :rel => "tag") %> 
    1818     <% end %> 
    1919    </div> 
     
    2323     <span class="author" title="<%= subscription.author.name %> — <%= subscription.author.organization %>"><%= subscription.author.name %></span> 
    2424 
    25            <% if subscription.document.cues.size == 1 %> 
    26              <%= link_to("Ecouter", { :controller => "cues", :action => "playlist", :id => subscription.document.cues.first }, :title => "Ecouter le document", :class => "listen") %> 
     25           <% unless subscription.document.casts.empty? %> 
     26             <%= link_to("Ecouter", { :controller => "subscriptions", :action => "listen", :id => subscription }, :title => "Ecouter le document", :class => "listen") %> 
    2727           <% end %> 
    28       
     28 
    2929     <% unless subscription.document.uploaded? %> 
    3030                  <%= link_to("Non disponible", {:action => "show", :id => subscription }, :title => "Ce fichier n'est pas disponible", :class => "unavailable") %>