diff --git app/controllers/#download_svn_revision_controller.rb# app/controllers/#download_svn_revision_controller.rb# new file mode 100644 index 0000000..5506007 --- /dev/null +++ app/controllers/#download_svn_revision_controller.rb# @@ -0,0 +1,87 @@ +class DownloadSvnRevisionController < ApplicationController + unloadable + + before_filter :require_login + before_filter :set_repository_variable + before_filter :set_project_variable + before_filter :can_download_svn_revision + + #helper :git_hosting + def user_allowed_to_svn(permission, project) + if project.active? + return User.current.allowed_to?(permission, project) + else + return User.current.allowed_to?(permission, nil, :global => true) + end + end + + + def index + commit = nil + format = params[:download_format] + + if !params[:rev] + rev = "master" + else + rev = params[:rev] + end + + if( + project_name = @repository.name.to_s.parameterize.to_s + + cmd_args = "" + + case format + when 'tar' then + extension = 'tar' + content_type = 'application/x-tar' + cmd_args << "tar -cvf #{project_name}-#{rev}.#{extension} #{project_name}-#{rev}" + when 'tar.gz' then + extension = 'tar.gz' + content_type = 'application/x-gzip' + cmd_args << "tar -zcvf #{project_name}-#{rev}.#{extension} #{project_name}-#{rev}" + when 'zip' then + extension = 'zip' + content_type = 'application/x-zip' + cmd_args << "zip -r #{project_name}-#{rev}.#{extension} #{project_name}-#{rev}" + end + + #begin + #system("echo '#{@repository.url} #{project_name}-#{rev}.#{extension}' > log/logging.log") + system("svn export #{@repository.url} #{project_name}-#{rev}; #{cmd_args}") + content = "#{project_name}-#{rev}.#{extension}" + #rescue => e + #flash.now[:error] = l(:git_archive_timeout, :timeout => e.message) + # render_404 + #return + #end + if(File.file?("#{project_name}-#{rev}.#{extension}")) + send_file(content, :filename => "#{project_name}-#{rev}.#{extension}", :type => content_type) + end + end + + + private + + + def can_download_svn_revision + render_403 unless user_allowed_to_svn(:download_svn_revision, @project) + end + + + def set_repository_variable + @repository = Repository.find_by_id(params[:repository_id]) + if @repository.nil? + render_404 + end + end + + + def set_project_variable + @project = @repository.project + if @project.nil? + render_404 + end + end + +end diff --git app/controllers/download_svn_revision_controller.rb app/controllers/download_svn_revision_controller.rb new file mode 100644 index 0000000..4c65e3f --- /dev/null +++ app/controllers/download_svn_revision_controller.rb @@ -0,0 +1,87 @@ +class DownloadSvnRevisionController < ApplicationController + unloadable + + before_filter :require_login + before_filter :set_repository_variable + before_filter :set_project_variable + before_filter :can_download_svn_revision + + #helper :git_hosting + def user_allowed_to_svn(permission, project) + if project.active? + return User.current.allowed_to?(permission, project) + else + return User.current.allowed_to?(permission, nil, :global => true) + end + end + + + def index + commit = nil + format = params[:download_format] + + if !params[:rev] + rev = "master" + else + rev = params[:rev] + end + + + project_name = @repository.name.to_s.parameterize.to_s + + cmd_args = "" + + case format + when 'tar' then + extension = 'tar' + content_type = 'application/x-tar' + cmd_args << "tar -cvf #{project_name}-#{rev}.#{extension} #{project_name}-#{rev}" + when 'tar.gz' then + extension = 'tar.gz' + content_type = 'application/x-gzip' + cmd_args << "tar -zcvf #{project_name}-#{rev}.#{extension} #{project_name}-#{rev}" + when 'zip' then + extension = 'zip' + content_type = 'application/x-zip' + cmd_args << "zip -r #{project_name}-#{rev}.#{extension} #{project_name}-#{rev}" + end + + #begin + #system("echo '#{@repository.url} #{project_name}-#{rev}.#{extension}' > log/logging.log") + system("svn export #{@repository.url} #{project_name}-#{rev}; #{cmd_args}") + content = "#{project_name}-#{rev}.#{extension}" + #rescue => e + #flash.now[:error] = l(:git_archive_timeout, :timeout => e.message) + # render_404 + #return + #end + if(File.file?("#{project_name}-#{rev}.#{extension}")) + send_file(content, :filename => "#{project_name}-#{rev}.#{extension}", :type => content_type) + end + end + + + private + + + def can_download_svn_revision + render_403 unless user_allowed_to_svn(:download_svn_revision, @project) + end + + + def set_repository_variable + @repository = Repository.find_by_id(params[:repository_id]) + if @repository.nil? + render_404 + end + end + + + def set_project_variable + @project = @repository.project + if @project.nil? + render_404 + end + end + +end diff --git app/controllers/download_svn_revision_controller.rb~ app/controllers/download_svn_revision_controller.rb~ new file mode 100644 index 0000000..7527cac --- /dev/null +++ app/controllers/download_svn_revision_controller.rb~ @@ -0,0 +1,87 @@ +class DownloadSvnRevisionController < ApplicationController + unloadable + + before_filter :require_login + before_filter :set_repository_variable + before_filter :set_project_variable + before_filter :can_download_svn_revision + + #helper :git_hosting + def user_allowed_to(permission, project) + if project.active? + return User.current.allowed_to?(permission, project) + else + return User.current.allowed_to?(permission, nil, :global => true) + end + end + + + def index + commit = nil + format = params[:download_format] + + if !params[:rev] + rev = "master" + else + rev = params[:rev] + end + + + project_name = @repository.name.to_s.parameterize.to_s + + cmd_args = "" + + case format + when 'tar' then + extension = 'tar' + content_type = 'application/x-tar' + cmd_args << "tar -cvf #{project_name}-#{rev}.#{extension} #{project_name}-#{rev}" + when 'tar.gz' then + extension = 'tar.gz' + content_type = 'application/x-gzip' + cmd_args << "tar -zcvf #{project_name}-#{rev}.#{extension} #{project_name}-#{rev}" + when 'zip' then + extension = 'zip' + content_type = 'application/x-zip' + cmd_args << "zip -r #{project_name}-#{rev}.#{extension} #{project_name}-#{rev}" + end + + #begin + #system("echo '#{@repository.url} #{project_name}-#{rev}.#{extension}' > log/logging.log") + system("svn export #{@repository.url} #{project_name}-#{rev}; #{cmd_args}") + content = "#{project_name}-#{rev}.#{extension}" + #rescue => e + #flash.now[:error] = l(:git_archive_timeout, :timeout => e.message) + # render_404 + #return + #end + if(File.file?("#{project_name}-#{rev}.#{extension}")) + send_file(content, :filename => "#{project_name}-#{rev}.#{extension}", :type => content_type) + end + end + + + private + + + def can_download_svn_revision + render_403 unless view_context.user_allowed_to(:download_svn_revision, @project) + end + + + def set_repository_variable + @repository = Repository.find_by_id(params[:repository_id]) + if @repository.nil? + render_404 + end + end + + + def set_project_variable + @project = @repository.project + if @project.nil? + render_404 + end + end + +end diff --git app/views/repositories/#_download_revision.erb# app/views/repositories/#_download_revision.erb# new file mode 100644 index 0000000..213ee30 --- /dev/null +++ app/views/repositories/#_download_revision.erb# @@ -0,0 +1,72 @@ +<% if Repository.respond_to?(:factory_with_git_hosting) %> + <% if @repository.is_a?(Repository::Git) && RedmineGitolite::ConfigRedmine.get_setting(:download_revision_enabled, true) %> + <% if (@project.active? && User.current.allowed_to?(:download_git_revision, @project)) || (!@project.active? && User.current.allowed_to?(:download_git_revision, nil, :global => true)) %> + +
+ + + + <% content_for :header_tags do %> + <%= stylesheet_link_tag 'font_awesome', :plugin => 'redmine_git_hosting' %> + <% end %> + + <% end %> + <% end %> +<% end %> + + + <% if @repository.is_a?(Repository::Subversion)%> + <% if (@project.active? && User.current.allowed_to?(:download_svn_revision, @project)) || (!@project.active? && User.current.allowed_to?(:download_svn_revision, nil, :global => true)) %> + + + + + <% if Repository.respond_to?(:factory_with_git_hosting) %> + <% content_for :header_tags do %> + <%= stylesheet_link_tag 'font_awesome', :plugin => 'redmine_git_hosting' %> + <% end %> + <% end %> + + <% end %> + <% end %> + diff --git app/views/repositories/_download_revision.erb app/views/repositories/_download_revision.erb new file mode 100644 index 0000000..213ee30 --- /dev/null +++ app/views/repositories/_download_revision.erb @@ -0,0 +1,72 @@ +<% if Repository.respond_to?(:factory_with_git_hosting) %> + <% if @repository.is_a?(Repository::Git) && RedmineGitolite::ConfigRedmine.get_setting(:download_revision_enabled, true) %> + <% if (@project.active? && User.current.allowed_to?(:download_git_revision, @project)) || (!@project.active? && User.current.allowed_to?(:download_git_revision, nil, :global => true)) %> + + + + + + <% content_for :header_tags do %> + <%= stylesheet_link_tag 'font_awesome', :plugin => 'redmine_git_hosting' %> + <% end %> + + <% end %> + <% end %> +<% end %> + + + <% if @repository.is_a?(Repository::Subversion)%> + <% if (@project.active? && User.current.allowed_to?(:download_svn_revision, @project)) || (!@project.active? && User.current.allowed_to?(:download_svn_revision, nil, :global => true)) %> + + + + + <% if Repository.respond_to?(:factory_with_git_hosting) %> + <% content_for :header_tags do %> + <%= stylesheet_link_tag 'font_awesome', :plugin => 'redmine_git_hosting' %> + <% end %> + <% end %> + + <% end %> + <% end %> + diff --git app/views/repositories/_download_revision.erb~ app/views/repositories/_download_revision.erb~ new file mode 100644 index 0000000..a3bcde9 --- /dev/null +++ app/views/repositories/_download_revision.erb~ @@ -0,0 +1,71 @@ +<% if Repository.respond_to?(:factory_with_git_hosting) %> + <% if @repository.is_a?(Repository::Git) && RedmineGitolite::ConfigRedmine.get_setting(:download_revision_enabled, true) %> + <% if (@project.active? && User.current.allowed_to?(:download_git_revision, @project)) || (!@project.active? && User.current.allowed_to?(:download_git_revision, nil, :global => true)) %> + + + + + + <% content_for :header_tags do %> + <%= stylesheet_link_tag 'font_awesome', :plugin => 'redmine_git_hosting' %> + <% end %> + + <% end %> + <% end %> +<% end %> + + + <% if @repository.is_a?(Repository::Subversion)%> + <% if (@project.active? && User.current.allowed_to?(:download_svn_revision, @project)) || (!@project.active? && User.current.allowed_to?(:download_svn_revision, nil, :global => true)) %> + + + + + + <% content_for :header_tags do %> + <%= stylesheet_link_tag 'font_awesome', :plugin => 'redmine_git_hosting' %> + <% end %> + + <% end %> + <% end %> + diff --git app/views/repositories/_sidebar.html.erb app/views/repositories/_sidebar.html.erb new file mode 100644 index 0000000..46e80f7 --- /dev/null +++ app/views/repositories/_sidebar.html.erb @@ -0,0 +1,26 @@ +<% if Repository.respond_to?(:factory_with_git_hosting) %> +<%= javascript_tag do %> + $(document).ready(function() { + $('#sidebar p').remove(); + }); +<% end %> + + + +