X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/adbf44aae48c2a84efaf214b2541dc44f962ae44..a11cf903969595b065b46cc991d70c43035af76d:/redmine/redmine_publications/app/controllers/publications_controller.rb?ds=sidebyside diff --git a/redmine/redmine_publications/app/controllers/publications_controller.rb b/redmine/redmine_publications/app/controllers/publications_controller.rb index c7d16e3f..c7a11948 100644 --- a/redmine/redmine_publications/app/controllers/publications_controller.rb +++ b/redmine/redmine_publications/app/controllers/publications_controller.rb @@ -1,30 +1,60 @@ - class PublicationsController < ApplicationController unloadable - @@source_file_field_id = 1 + # before_filter :authorize, :only => [:issues] - def issues - logger.info "Searching for issues with document name = " + params[:pub] + "." - joins = "JOIN issue_publications ON (issues.id = issue_publications.issue_id) JOIN publications ON (issue_publications.publication_id = publications.id)" - - conditions = ['publications.source_file = ? ', params[:pub] ] - @issues = Issue.all(:joins => joins, :conditions => conditions) - respond_to do |format| - format.html - format.xml do - render :xml => @issues - end - - format.json do - headers['Content-Type'] = 'application/json' - render :json => @issues - end + def index + @publications = Publication.all + respond_to do |format| + format.html + format.xml { render :xml => @publications } + format.json { render :json => @publications } + end + end + + def refresh + regexp = Regexp.new(Setting.plugin_redmine_publications[:pattern]) + 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 + + respond_to do |format| + format.html + format.xml { render :xml => @repo_status} + format.json { render :json => @repo_status } + end end - def redirect_to_platform - render :text => "" + def issues + @publication = Publication.find_by_name(params[:pub]) + + joins = "JOIN issue_publications ON (issues.id = issue_publications.issue_id)" + conditions = ['issue_publications.publication_id = ? ', @publication.id ] + @issues = Issue.all(:joins => joins, :conditions => conditions) + + respond_to do |fmt| + fmt.json { render :json => @issues, :callback => params[:callback] } + end + end + + private + + def find_project + @project = Project.find(params[:project_id]) end end