summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2009-01-27 17:27:50 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2009-01-27 17:27:50 +0000
commite1f96ca4db645f0da090dfcee378217353505c62 (patch)
tree149dd8fa4a99f9e96ab5a9f20ab9050aeee047a1 /app
parent6c93b8d5992efe0efc2d00a2f0d846c4460d6f67 (diff)
downloadredmine-e1f96ca4db645f0da090dfcee378217353505c62.tar.gz
redmine-e1f96ca4db645f0da090dfcee378217353505c62.zip
Replaces the obsolete robots.txt with a cached action (#2491).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2319 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r--app/controllers/projects_controller.rb6
-rw-r--r--app/controllers/welcome_controller.rb6
-rw-r--r--app/models/project.rb1
-rw-r--r--app/views/welcome/robots.rhtml9
4 files changed, 22 insertions, 0 deletions
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 64040e3ba..5d90c92af 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -29,6 +29,12 @@ class ProjectsController < ApplicationController
before_filter :require_admin, :only => [ :add, :archive, :unarchive, :destroy ]
accept_key_auth :activity
+ after_filter :only => [:add, :edit, :archive, :unarchive, :destroy] do |controller|
+ if controller.request.post?
+ controller.send :expire_action, :controller => 'welcome', :action => 'robots.txt'
+ end
+ end
+
helper :sort
include SortHelper
helper :custom_fields
diff --git a/app/controllers/welcome_controller.rb b/app/controllers/welcome_controller.rb
index b8108e8ac..c14ec4dbe 100644
--- a/app/controllers/welcome_controller.rb
+++ b/app/controllers/welcome_controller.rb
@@ -16,9 +16,15 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class WelcomeController < ApplicationController
+ caches_action :robots
def index
@news = News.latest User.current
@projects = Project.latest User.current
end
+
+ def robots
+ @projects = Project.public.active
+ render :layout => false, :content_type => 'text/plain'
+ end
end
diff --git a/app/models/project.rb b/app/models/project.rb
index f40bcb603..7ce0051ed 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -67,6 +67,7 @@ class Project < ActiveRecord::Base
named_scope :has_module, lambda { |mod| { :conditions => ["#{Project.table_name}.id IN (SELECT em.project_id FROM #{EnabledModule.table_name} em WHERE em.name=?)", mod.to_s] } }
named_scope :active, { :conditions => "#{Project.table_name}.status = #{STATUS_ACTIVE}"}
+ named_scope :public, { :conditions => { :is_public => true } }
named_scope :visible, lambda { { :conditions => Project.visible_by(User.current) } }
def identifier=(identifier)
diff --git a/app/views/welcome/robots.rhtml b/app/views/welcome/robots.rhtml
new file mode 100644
index 000000000..c6e206bd6
--- /dev/null
+++ b/app/views/welcome/robots.rhtml
@@ -0,0 +1,9 @@
+User-agent: *
+<% @projects.each do |p| -%>
+Disallow: /projects/<%= p.to_param %>/repository
+Disallow: /projects/<%= p.to_param %>/issues
+Disallow: /projects/<%= p.to_param %>/activity
+<% end -%>
+Disallow: /issues/gantt
+Disallow: /issues/calendar
+Disallow: /activity