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)
- 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}]
- else
- repo_status += [{:path => entry.path, :match =>nil, :matched => false}]
- end
- end
- @match_status += [{:repo => repo, :status => repo_status}]
+
+ 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 => change.path, :repository_id => repo.id)
+ @repo_status += [{:path => change.path, :match => match[1], :matched => true}]
+ else
+ @repo_status += [{:path => change.path, :match => nil, :matched => false}]
end
- end
+ end
- respond_to do |format|
+ respond_to do |format|
format.html
- format.xml { render :xml => @match_status}
- format.json { render :json => @match_status }
- end
+ format.xml { render :xml => @repo_status}
+ format.json { render :json => @repo_status }
end
end
-<% @match_status.each do |repo_status| %>
-<h2>Repozytorium: <%= repo_status[:repo].url %></h2>
<table>
<tr><th>Ścieżka zasobu</th><th>Rozpoznano</th><th>ID zasobu</th></tr>
-
-<% repo_status[:status].each do |status| %>
+<% @repo_status.each do |status| %>
<tr>
<td><%= status[:path] %></td>
<td><%= (status[:matched] && 'Tak') || 'Nie' %></td>
</tr>
<% end %>
</table>
-<% end %>
-<% @tracker = Tracker.find(@settings[:tracker] || 1) %>
-
+<% @project = Project.find(:first, :conditions => ["id = ?", @settings[:project]]) %>
<fieldset>
<p>
- <label for="settings[tracker]">Typ zagadnienia: </label>
- <%= collection_select(:tracker, :id, Tracker.all, :id, :name, {}, {:name => "settings[tracker]"}) %>
+ <label for="settings[project]">Użyj w projektcie: </label>
+ <%= collection_select(:project, :id, Project.all, :id, :name, {}, {:name => "settings[project]"}) %>
</p>
<p>
# permission :view_issues_for_publication, :publications => :issues
settings :partial => 'settings/publications_settings',
- :default => { :tracker => '1', :pattern => '.*/[a-z_].xml', :editorurl => 'http://localhost/:pubid'}
+ :default => { :project => '0', :pattern => '[^\$].xml', :editorurl => 'http://localhost/:pubid'}
menu :application_menu, :publications, { :controller => 'publications', :action => 'index' }, :caption => 'Publikacje'
end
def is_pticket?(context)
- context[:issue].tracker_id == Setting.plugin_redmine_publications[:tracker].to_i
+ context[:issue].project_id == Setting.plugin_redmine_publications[:project].to_i
end
public
module InstanceMethods
def update_publication
- if self.action == 'A'
+ if (self.action == 'A') and (self.changeset.repository.project_id == Setting.plugin_redmine_publications[:project].to_i)
regexp = Regexp.new(Setting.plugin_redmine_publications[:pattern])
match = self.path.match(regexp)
- Rails.logger.info('[INFO] Adding publication: "' << match[1])
- Publication.find_or_create_by_name(:name => match[1],
- :source_file => self.path, :repository_id => self.changeset.repository.id )
+ if match
+ Rails.logger.info('[INFO] Adding publication: "' << match[1])
+ Publication.find_or_create_by_name(:name => match[1],
+ :source_file => self.path, :repository_id => self.changeset.repository.id )
+ end
end
end