<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>app/views/releases/_select_stories.rhtml</filename>
    </added>
    <added>
      <filename>public/images/rss_large.png</filename>
    </added>
    <added>
      <filename>public/images/rss_small.png</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -52,9 +52,23 @@ class ReleasesController &lt; ApplicationController
       page.redirect_to project_releases_path(@project)
     end
   end
+  
+  def select_stories
+    find_stories_not_in_release
+    @stories = @other_stories
+    render :update do |page|
+      page.call 'showPopup', render(:partial =&gt; 'select_stories')
+    end
+  end
 
-  def assign_story
-    change_story_release
+  def assign_stories
+    change_story_release(Release.find_by_id(params[:id]))
+    redirect_to project_release_path(@project, @release)
+  end
+  
+  def remove_stories
+    change_story_release(nil)
+    redirect_to project_release_path(@project, @release)
   end
 
   protected
@@ -64,15 +78,14 @@ class ReleasesController &lt; ApplicationController
   end
   
   def find_stories_not_in_release
-     @other_stories = @project.stories.backlog.select { |s|
+     @other_stories = @project.stories.select { |s|
       s.release_id.nil?
     }
   end
   
-  def change_story_release
-    release = Release.find_by_id(params[:id])
-    story = Story.find(params[:story])
-    set_status_and_error_for(Story.assign_to_release(release, story))
+  def change_story_release(release)
+    stories = Story.find(params[:selected_stories]||[])
+    set_status_and_error_for(Story.assign_many_to_release(release, stories))
   end
 
   def common_popup(url)</diff>
      <filename>app/controllers/releases_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,7 +4,11 @@ module ProjectsHelper
   end
 
   def project_audit_image(project)
-    link_to image_tag(&quot;xml.gif&quot;), audits_project_path(project)
+    link_to image_tag(&quot;rss_small.png&quot;), audits_project_path(project)
+  end
+  
+  def project_export_image(project)
+    link_to image_tag(&quot;xml.gif&quot;), xml_export_project_path(project)
   end
 
   def project_dashboard_link(project)</diff>
      <filename>app/helpers/projects_helper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -10,6 +10,10 @@ module ReleasesHelper
   def link_to_edit_release(release, options={})
     link_to_remote(options[:value] || release.name, :url =&gt; edit_project_release_path(@project, release), :method =&gt; :get)
   end
+  
+  def link_to_assign_stories(release)
+    link_to_remote('Assign Story Cards', :url =&gt; select_stories_project_release_path(@project, release), :method =&gt; :get)
+  end
 
   def option_to_edit_release(release)
     create_action_option(&quot;Edit&quot;, edit_project_release_path(@project, release))</diff>
      <filename>app/helpers/releases_helper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -190,14 +190,16 @@ class Story &lt; ActiveRecord::Base
     {:successes =&gt; successes, :failures =&gt; failures}
   end
   
-  def self.assign_to_release(release, story)
+  def self.assign_many_to_release(release, stories)
     successes, failures = [], []
-    story.release = release
+    stories.each do |s|
+      s.release = release
       if s.save
         successes &lt;&lt; &quot;SC#{s.scid} has been moved.&quot;
       else
         failures &lt;&lt; &quot;SC#{s.scid} could not be moved.&quot;
       end
+    end
     {:successes =&gt; successes, :failures =&gt; failures}
   end
 </diff>
      <filename>app/models/story.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,7 +3,6 @@
   &lt;h3&gt;Select the stories that you want to add to the iteration.&lt;/h3&gt;&lt;br /&gt;
   &lt;%= form_tag assign_stories_project_iteration_path(@project, @iteration) %&gt;
     &lt;%= hidden_field_tag :move_to, @iteration.id %&gt;
-    &lt;input type=&quot;hidden&quot; name=&quot;move_to&quot; value=&quot;&lt;%= @iteration.id %&gt;&quot; /&gt;
     &lt;%= render( :partial =&gt; 'stories/stories', :locals =&gt; {:hide_cols =&gt; [ :owner, :action, :project, :iteration ] } ) %&gt;
   	&lt;div class=&quot;submit&quot;&gt;&lt;%= submit_tag &quot;Add Selected Stories to Iteration&quot; %&gt;&lt;/div&gt;
   &lt;/form&gt;</diff>
      <filename>app/views/iterations/_select_stories.rhtml</filename>
    </modified>
    <modified>
      <diff>@@ -2,6 +2,7 @@
     (&lt;%= link_to_edit_release(@release, :value=&gt;&quot;Edit&quot;) %&gt;)
     &lt;br/&gt;
 &lt;/div&gt;
+
 &lt;h3&gt;&lt;%= @release.name %&gt;&lt;/h3&gt;
 &lt;div id=&quot;IterationSummary&quot;&gt;
     &lt;%= render :partial =&gt; 'release_summary' %&gt;
@@ -17,12 +18,16 @@
 &lt;%= textilize(@release.description) %&gt;
 &lt;% end %&gt;
 &lt;br/&gt;
+(&lt;%= link_to_assign_stories(@release) %&gt;)
 &lt;% empty_collection_content(@stories) do %&gt;
 &lt;p&gt;
     No stories are in this release yet.
 &lt;/p&gt;
 &lt;% end %&gt;
 &lt;% collection_content(@stories) do %&gt;
+    &lt;%= form_tag remove_stories_project_release_path(@project) %&gt;
+&lt;div class=&quot;move_to&quot;&gt;Remove Selected Stories from Release? &lt;%= submit_tag &quot;Remove&quot; %&gt;&lt;/div&gt;
     &lt;%= render( :partial =&gt; 'stories/stories', :locals =&gt; {:hide_cols =&gt; [ :project, :release]}) %&gt;
+&lt;/form&gt;
   &lt;% end %&gt;
 </diff>
      <filename>app/views/releases/show.rhtml</filename>
    </modified>
    <modified>
      <diff>@@ -7,7 +7,7 @@ map.resources :projects, :member =&gt; {:xml_export =&gt; :get, :audits =&gt; :get, :team
   project.resources :acceptancetests, :member =&gt; {:clone_acceptance =&gt; :get}, :collection =&gt; {:export =&gt; :get, :assign =&gt; :post,}
   project.resource :dashboard
   project.resources :users, :member =&gt; {:remove_from_project =&gt; :put}
-  project.resources :releases do |release|
+  project.resources :releases, :member=&gt;{:select_stories =&gt; :get, :assign_stories =&gt; :post, :remove_stories=&gt;:post} do |release|
     release.resources :stories
   end
   project.resources :stats</diff>
      <filename>config/routes.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>90e76817002004f806e44b5501fcef4427e3fd2b</id>
    </parent>
  </parents>
  <author>
    <name>Andy Trommer</name>
    <email>atrommer@gmail.com</email>
  </author>
  <url>http://github.com/explainpmt/explainpmt/commit/7c256e3e959372875f7a83eeec7f5a31bc700d3c</url>
  <id>7c256e3e959372875f7a83eeec7f5a31bc700d3c</id>
  <committed-date>2008-10-04T14:50:02-07:00</committed-date>
  <authored-date>2008-10-04T14:50:02-07:00</authored-date>
  <message>More work on the Release module.  Can now add and remove stories to/from a release from the Release page.
Also updated the audit icon to be the standard RSS icon rather than the existing XML icon now that Jen has
XML-ified everything properly.</message>
  <tree>8d6693a7b19066e3cac5240b7ab87fd1a16d47a8</tree>
  <committer>
    <name>Andy Trommer</name>
    <email>atrommer@gmail.com</email>
  </committer>
</commit>
