Adds a pseudo format to api template names and overrides ActionController#default_template so that api templates are chosen automatically.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4466 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang committed 2010-12-04 17:43:39 +00:00
1 parent 9157482049
commit 224921460a
14 files changed
+32 -15

No files matched your search

+21 -1
View File
@@ -22,7 +22,7 @@ class ApplicationController < ActionController::Base
include Redmine::I18n
layout 'base'
exempt_from_layout 'builder', 'apit'
exempt_from_layout 'builder', 'rsb'
# Remove broken cookie after upgrade from 0.8.x (#4292)
# See https://rails.lighthouseapp.com/projects/8994/tickets/3360
@@ -426,4 +426,24 @@ class ApplicationController < ActionController::Base
)
render options
end
# Overrides #default_template so that the api template
# is used automatically if it exists
def default_template(action_name = self.action_name)
if api_request?
begin
return self.view_paths.find_template(default_template_name(action_name), 'api')
rescue ::ActionView::MissingTemplate
# the api template was not found
# fallback to the default behaviour
end
end
super
end
# Overrides #pick_layout so that #render with no arguments
# doesn't use the layout for api requests
def pick_layout(*args)
api_request? ? nil : super
end
end
+3 -3
View File
@@ -84,7 +84,7 @@ class IssuesController < ApplicationController
respond_to do |format|
format.html { render :template => 'issues/index.rhtml', :layout => !request.xhr? }
format.api { render :template => 'issues/index.apit' }
format.api
format.atom { render_feed(@issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") }
format.csv { send_data(issues_to_csv(@issues, @project), :type => 'text/csv; header=present', :filename => 'export.csv') }
format.pdf { send_data(issues_to_pdf(@issues, @project, @query), :type => 'application/pdf', :filename => 'export.pdf') }
@@ -109,7 +109,7 @@ class IssuesController < ApplicationController
@time_entry = TimeEntry.new
respond_to do |format|
format.html { render :template => 'issues/show.rhtml' }
format.api { render :template => 'issues/show.apit' }
format.api
format.atom { render :template => 'journals/index', :layout => false, :content_type => 'application/atom+xml' }
format.pdf { send_data(issue_to_pdf(@issue), :type => 'application/pdf', :filename => "#{@project.identifier}-#{@issue.id}.pdf") }
end
@@ -136,7 +136,7 @@ class IssuesController < ApplicationController
redirect_to(params[:continue] ? { :action => 'new', :project_id => @project, :issue => {:tracker_id => @issue.tracker, :parent_issue_id => @issue.parent_issue_id}.reject {|k,v| v.nil?} } :
{ :action => 'show', :id => @issue })
}
format.api { render :template => 'issues/show.apit', :status => :created, :location => issue_url(@issue) }
format.api { render :action => 'show', :status => :created, :location => issue_url(@issue) }
end
return
else
+2 -3
View File
@@ -54,7 +54,6 @@ class ProjectsController < ApplicationController
}
format.api {
@projects = Project.visible.find(:all, :order => 'lft')
render :template => 'projects/index.apit'
}
format.atom {
projects = Project.visible.find(:all, :order => 'created_on DESC',
@@ -89,7 +88,7 @@ class ProjectsController < ApplicationController
flash[:notice] = l(:notice_successful_create)
redirect_to :controller => 'projects', :action => 'settings', :id => @project
}
format.api { render :template => 'projects/show.apit', :status => :created, :location => url_for(:controller => 'projects', :action => 'show', :id => @project.id) }
format.api { render :action => 'show', :status => :created, :location => url_for(:controller => 'projects', :action => 'show', :id => @project.id) }
end
else
respond_to do |format|
@@ -165,7 +164,7 @@ class ProjectsController < ApplicationController
respond_to do |format|
format.html
format.api { render :template => 'projects/show.apit'}
format.api
end
end
+2 -4
View File
@@ -76,8 +76,6 @@ class TimelogController < ApplicationController
:order => sort_clause,
:limit => @entry_pages.items_per_page,
:offset => @entry_pages.current.offset)
render :template => 'timelog/index.apit'
}
format.atom {
entries = TimeEntry.find(:all,
@@ -103,7 +101,7 @@ class TimelogController < ApplicationController
respond_to do |format|
# TODO: Implement html response
format.html { render :nothing => true, :status => 406 }
format.api { render :template => 'timelog/show.apit' }
format.api
end
end
@@ -128,7 +126,7 @@ class TimelogController < ApplicationController
flash[:notice] = l(:notice_successful_update)
redirect_back_or_default :action => 'index', :project_id => @time_entry.project
}
format.api { render :template => 'timelog/show.apit', :status => :created, :location => time_entry_url(@time_entry) }
format.api { render :action => 'show', :status => :created, :location => time_entry_url(@time_entry) }
end
else
respond_to do |format|
+3 -3
View File
@@ -49,7 +49,7 @@ class UsersController < ApplicationController
respond_to do |format|
format.html { render :layout => !request.xhr? }
format.api { render :template => 'users/index.apit' }
format.api
end
end
@@ -71,7 +71,7 @@ class UsersController < ApplicationController
respond_to do |format|
format.html { render :layout => 'base' }
format.api { render :template => 'users/show.apit' }
format.api
end
rescue ActiveRecord::RecordNotFound
render_404
@@ -114,7 +114,7 @@ class UsersController < ApplicationController
{:controller => 'users', :action => 'edit', :id => @user}
)
}
format.api { render :template => 'users/show.apit', :status => :created, :location => user_url(@user) }
format.api { render :action => 'show', :status => :created, :location => user_url(@user) }
end
else
@auth_sources = AuthSource.find(:all)
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.