Don't erase old publcations, so that the relations don't disappear.
[redakcja_redmine.git] / app / controllers / publications_controller.rb
index 6c1e734..c7a1194 100644 (file)
@@ -13,34 +13,29 @@ class PublicationsController < ApplicationController
   end
 
   def refresh
-    @match_status = []
-
     regexp = Regexp.new(Setting.plugin_redmine_publications[:pattern])
-    Publication.delete_all()
-    repos = Repository.all
-    if repos
-    repos.each do |repo|
-      repo_status = []
-      if repo.entries
-      repo.entries.each do |entry|
-        match = entry.path.match(regexp)
+    repo = Repository.find(:first, :conditions => ['project_id = ?', Setting.plugin_redmine_publications[:project]] )
+
+    Rails.logger.info('[INFO] Importing changes from ' << repo.url)
+    Rails.logger.info('[INFO] Change list: ' << repo.changes.find(:all).inspect )
+
+    @repo_status = []
+    repo.changes.find(:all).each do |change|
+        Rails.logger.info('[INFO] Importing change ' << change.path)
+        match = change.path.match(regexp)
         if match
-          Publication.find_or_create_by_name(:name => match[1],
-            :source_file => entry.path, :repository_id => repo.id)
-          repo_status += [{:path => entry.path, :match => match[1], :matched => true}]
+            Publication.find_or_create_by_name(:name => match[1],
+                :source_file => change.path, :repository_id => repo.id)
+              @repo_status += [{:path => change.path, :match => match[1], :matched => true}]
         else
-          repo_status += [{:path => entry.path, :match =>nil, :matched => false}]
+              @repo_status += [{:path => change.path, :match => nil, :matched => false}]
         end
-      end
-      @match_status += [{:repo => repo, :status => repo_status}]
-      end
     end
        
     respond_to do |format|
-      format.html
-      format.xml { render :xml => @match_status}
-      format.json { render :json => @match_status }
-    end
+        format.html
+        format.xml { render :xml => @repo_status}
+        format.json { render :json => @repo_status }
     end
   end
 
@@ -52,7 +47,7 @@ class PublicationsController < ApplicationController
     @issues = Issue.all(:joins => joins, :conditions =>  conditions)
 
     respond_to do |fmt| 
-       fmt.json { render :json => @issues, :callback => params[:callback] }
+      fmt.json { render :json => @issues, :callback => params[:callback] }
     end
   end