]> source.dussan.org Git - redmine.git/commitdiff
Converts ProjectsController to use the new API template system.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 3 Dec 2010 12:06:14 +0000 (12:06 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 3 Dec 2010 12:06:14 +0000 (12:06 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4456 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/projects_controller.rb
app/views/projects/index.apit [new file with mode: 0644]
app/views/projects/index.xml.builder [deleted file]
app/views/projects/show.apit [new file with mode: 0644]
app/views/projects/show.xml.builder [deleted file]

index f97f6c30fbce4efacdc9fb93601d7a76eb1948c5..d94dec1c6197655a32cdf05fc1fd79659ee91966 100644 (file)
@@ -52,8 +52,9 @@ class ProjectsController < ApplicationController
       format.html { 
         @projects = Project.visible.find(:all, :order => 'lft') 
       }
-      format.xml  {
+      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',
@@ -93,12 +94,12 @@ class ProjectsController < ApplicationController
           flash[:notice] = l(:notice_successful_create)
           redirect_to :controller => 'projects', :action => 'settings', :id => @project
         }
-        format.xml  { render :action => 'show', :status => :created, :location => url_for(:controller => 'projects', :action => 'show', :id => @project.id) }
+        format.api  { render :template => 'projects/show.apit', :status => :created, :location => url_for(:controller => 'projects', :action => 'show', :id => @project.id) }
       end
     else
       respond_to do |format|
         format.html { render :action => 'new' }
-        format.xml  { render :xml => @project.errors, :status => :unprocessable_entity }
+        format.api  { render_validation_errors(@project) }
       end
     end
     
@@ -169,7 +170,7 @@ class ProjectsController < ApplicationController
     
     respond_to do |format|
       format.html
-      format.xml
+      format.api { render :template => 'projects/show.apit'}
     end
   end
 
@@ -194,7 +195,7 @@ class ProjectsController < ApplicationController
           flash[:notice] = l(:notice_successful_update)
           redirect_to :action => 'settings', :id => @project
         }
-        format.xml  { head :ok }
+        format.api  { head :ok }
       end
     else
       respond_to do |format|
@@ -202,7 +203,7 @@ class ProjectsController < ApplicationController
           settings
           render :action => 'settings'
         }
-        format.xml  { render :xml => @project.errors, :status => :unprocessable_entity }
+        format.api  { render_validation_errors(@project) }
       end
     end
   end
@@ -233,11 +234,11 @@ class ProjectsController < ApplicationController
     if request.get?
       # display confirmation view
     else
-      if params[:format] == 'xml' || params[:confirm]
+      if api_request? || params[:confirm]
         @project_to_destroy.destroy
         respond_to do |format|
           format.html { redirect_to :controller => 'admin', :action => 'projects' }
-          format.xml  { head :ok }
+          format.api  { head :ok }
         end
       end
     end
diff --git a/app/views/projects/index.apit b/app/views/projects/index.apit
new file mode 100644 (file)
index 0000000..e65477a
--- /dev/null
@@ -0,0 +1,18 @@
+api.array :projects do
+  @projects.each do |project|
+    api.project do
+      api.id          project.id
+      api.name        project.name
+      api.identifier  project.identifier
+      api.description project.description
+      api.parent(:id => project.parent_id, :name => project.parent.name) unless project.parent.nil?
+      api.array :custom_fields do
+        project.visible_custom_field_values.each do |custom_value|
+          api.custom_field custom_value.value, :id => custom_value.custom_field_id, :name => custom_value.custom_field.name
+        end
+      end unless project.custom_field_values.empty?
+      api.created_on  project.created_on
+      api.updated_on  project.updated_on
+    end
+  end
+end
diff --git a/app/views/projects/index.xml.builder b/app/views/projects/index.xml.builder
deleted file mode 100644 (file)
index 6ea2a3a..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-xml.instruct!
-xml.projects :type => 'array' do
-  @projects.each do |project|
-    xml.project do
-      xml.id          project.id
-      xml.name        project.name
-      xml.identifier  project.identifier
-      xml.description project.description
-      xml.parent(:id => project.parent_id, :name => project.parent.name) unless project.parent.nil?
-      xml.custom_fields do
-        project.visible_custom_field_values.each do |custom_value|
-          xml.custom_field custom_value.value, :id => custom_value.custom_field_id, :name => custom_value.custom_field.name
-        end
-      end unless project.custom_field_values.empty?
-      xml.created_on  project.created_on
-      xml.updated_on  project.updated_on
-    end
-  end
-end
diff --git a/app/views/projects/show.apit b/app/views/projects/show.apit
new file mode 100644 (file)
index 0000000..4479e50
--- /dev/null
@@ -0,0 +1,22 @@
+api.project do
+  api.id          @project.id
+  api.name        @project.name
+  api.identifier  @project.identifier
+  api.description @project.description
+  api.homepage    @project.homepage
+  
+  api.array :custom_fields do
+    @project.visible_custom_field_values.each do |custom_value|
+      api.custom_field custom_value.value, :id => custom_value.custom_field_id, :name => custom_value.custom_field.name
+    end
+  end unless @project.custom_field_values.empty?
+  
+  api.created_on @project.created_on
+  api.updated_on @project.updated_on
+  
+  api.array :trackers do
+    @project.trackers.each do |tracker|
+      api.tracker(:id => tracker.id, :name => tracker.name)
+    end
+  end
+end
diff --git a/app/views/projects/show.xml.builder b/app/views/projects/show.xml.builder
deleted file mode 100644 (file)
index d99db8b..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-xml.instruct!
-xml.project do
-  xml.id          @project.id
-  xml.name        @project.name
-  xml.identifier  @project.identifier
-  xml.description @project.description
-  xml.homepage    @project.homepage
-  
-  xml.custom_fields do
-    @project.visible_custom_field_values.each do |custom_value|
-      xml.custom_field custom_value.value, :id => custom_value.custom_field_id, :name => custom_value.custom_field.name
-    end
-  end unless @project.custom_field_values.empty?
-  
-  xml.created_on @project.created_on
-  xml.updated_on @project.updated_on
-  
-  xml.trackers do
-    @project.trackers.each do |tracker|
-      xml.tracker(:id => tracker.id, :name => tracker.name)
-    end
-  end
-end