Mercurial > hg > soundsoftware-site
comparison app/controllers/sys_controller.rb @ 1338:25603efa57b5
Merge from live branch
author | Chris Cannam |
---|---|
date | Thu, 20 Jun 2013 13:14:14 +0100 |
parents | 9397280c138c |
children | 51364c0cd58f |
comparison
equal
deleted
inserted
replaced
1209:1b1138f6f55e | 1338:25603efa57b5 |
---|---|
1 # Redmine - project management software | 1 # Redmine - project management software |
2 # Copyright (C) 2006-2011 Jean-Philippe Lang | 2 # Copyright (C) 2006-2012 Jean-Philippe Lang |
3 # | 3 # |
4 # This program is free software; you can redistribute it and/or | 4 # This program is free software; you can redistribute it and/or |
5 # modify it under the terms of the GNU General Public License | 5 # modify it under the terms of the GNU General Public License |
6 # as published by the Free Software Foundation; either version 2 | 6 # as published by the Free Software Foundation; either version 2 |
7 # of the License, or (at your option) any later version. | 7 # of the License, or (at your option) any later version. |
17 | 17 |
18 class SysController < ActionController::Base | 18 class SysController < ActionController::Base |
19 before_filter :check_enabled | 19 before_filter :check_enabled |
20 | 20 |
21 def projects | 21 def projects |
22 p = Project.active.has_module(:repository).find(:all, :include => :repository, :order => 'identifier') | 22 p = Project.active.has_module(:repository).find( |
23 :all, | |
24 :include => :repository, | |
25 :order => "#{Project.table_name}.identifier" | |
26 ) | |
23 # extra_info attribute from repository breaks activeresource client | 27 # extra_info attribute from repository breaks activeresource client |
24 render :xml => p.to_xml(:only => [:id, :identifier, :name, :is_public, :status], :include => {:repository => {:only => [:id, :url, :is_external, :external_url]}}) | 28 render :xml => p.to_xml( |
29 :only => [:id, :identifier, :name, :is_public, :status], | |
30 :include => {:repository => {:only => [:id, :url, :is_external, :external_url]}} | |
31 ) | |
25 end | 32 end |
26 | 33 |
27 def create_project_repository | 34 def create_project_repository |
28 project = Project.find(params[:id]) | 35 project = Project.find(params[:id]) |
29 if project.repository | 36 if project.repository |
30 render :nothing => true, :status => 409 | 37 render :nothing => true, :status => 409 |
31 else | 38 else |
32 logger.info "Repository for #{project.name} was reported to be created by #{request.remote_ip}." | 39 logger.info "Repository for #{project.name} was reported to be created by #{request.remote_ip}." |
33 project.repository = Repository.factory(params[:vendor], params[:repository]) | 40 repository = Repository.factory(params[:vendor], params[:repository]) |
34 if project.repository && project.repository.save | 41 repository.project = project |
35 render :xml => project.repository.to_xml(:only => [:id, :url]), :status => 201 | 42 if repository.save |
43 render :xml => {repository.class.name.underscore.gsub('/', '-') => {:id => repository.id, :url => repository.url}}, :status => 201 | |
36 else | 44 else |
37 render :nothing => true, :status => 422 | 45 render :nothing => true, :status => 422 |
38 end | 46 end |
39 end | 47 end |
40 end | 48 end |
41 | 49 |
42 def fetch_changesets | 50 def fetch_changesets |
43 projects = [] | 51 projects = [] |
52 scope = Project.active.has_module(:repository) | |
44 if params[:id] | 53 if params[:id] |
45 projects << Project.active.has_module(:repository).find(params[:id]) | 54 project = nil |
55 if params[:id].to_s =~ /^\d*$/ | |
56 project = scope.find(params[:id]) | |
57 else | |
58 project = scope.find_by_identifier(params[:id]) | |
59 end | |
60 raise ActiveRecord::RecordNotFound unless project | |
61 projects << project | |
46 else | 62 else |
47 projects = Project.active.has_module(:repository).find(:all, :include => :repository) | 63 projects = scope.all |
48 end | 64 end |
49 projects.each do |project| | 65 projects.each do |project| |
50 if project.repository | 66 project.repositories.each do |repository| |
51 project.repository.fetch_changesets | 67 repository.fetch_changesets |
52 end | 68 end |
53 end | 69 end |
54 render :nothing => true, :status => 200 | 70 render :nothing => true, :status => 200 |
55 rescue ActiveRecord::RecordNotFound | 71 rescue ActiveRecord::RecordNotFound |
56 render :nothing => true, :status => 404 | 72 render :nothing => true, :status => 404 |
82 | 98 |
83 def set_embedded_active | 99 def set_embedded_active |
84 project = Project.find(params[:id]) | 100 project = Project.find(params[:id]) |
85 mods = project.enabled_modules | 101 mods = project.enabled_modules |
86 enable = (params[:enable] == "1") | 102 enable = (params[:enable] == "1") |
87 if mods.detect {|m| m.name == "embedded"} | 103 if mods.detect {|m| m.name == "redmine_embedded"} |
88 logger.info "Project #{project.name} currently has Embedded enabled" | 104 logger.info "Project #{project.name} currently has Embedded enabled" |
89 if !enable | 105 if !enable |
90 logger.info "Disabling Embedded" | 106 logger.info "Disabling Embedded" |
91 modnames = mods.all(:select => :name).collect{|m| m.name}.reject{|n| n == "embedded"} | 107 modnames = mods.all(:select => :name).collect{|m| m.name}.reject{|n| n == "redmine_embedded"} |
92 project.enabled_module_names = modnames | 108 project.enabled_module_names = modnames |
93 end | 109 end |
94 else | 110 else |
95 logger.info "Project #{project.name} currently has Embedded disabled" | 111 logger.info "Project #{project.name} currently has Embedded disabled" |
96 if enable | 112 if enable |
97 logger.info "Enabling Embedded" | 113 logger.info "Enabling Embedded" |
98 modnames = mods.all(:select => :name).collect{|m| m.name} | 114 modnames = mods.all(:select => :name).collect{|m| m.name} |
99 modnames << "embedded" | 115 modnames << "redmine_embedded" |
100 project.enabled_module_names = modnames | 116 project.enabled_module_names = modnames |
101 end | 117 end |
102 end | 118 end |
103 render :nothing => true, :status => 200 | 119 render :nothing => true, :status => 200 |
104 rescue ActiveRecord::RecordNotFound | 120 rescue ActiveRecord::RecordNotFound |