diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 8a1b3bbe0..0acf75c62 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -215,11 +215,11 @@ update end end - unless @repository.gitlab? - # redirect_to to_gitlab_project_repository_path(@project, @repository) - render :to_gitlab - return - end + # unless @repository.gitlab? + # # redirect_to to_gitlab_project_repository_path(@project, @repository) + # render :to_gitlab + # return + # end #if( !User.current.member_of?(@project) || @project.hidden_repo) @repository.fetch_changesets if Setting.autofetch_changesets? && @path.empty? @@ -252,11 +252,10 @@ update project_path_cut = RepositoriesHelper::PROJECT_PATH_CUT ip = RepositoriesHelper::REPO_IP_ADDRESS gitlab_address = Redmine::Configuration['gitlab_address'] - if @repository.type.to_s=="Repository::Gitlab" + if @repository.type.to_s == "Repository::Gitlab" @repos_url = gitlab_address.to_s+"/"+@project.owner.to_s+"/"+@repository.identifier+"."+"git" else - @repos_url = "http://"+@repository.login.to_s+"_"+@repository.identifier.to_s+"@"+ip.to_s+ - @repository.url.slice(project_path_cut, @repository.url.length).to_s + @repos_url = "http://"+@repository.login.to_s+"_"+@repository.identifier.to_s+"@"+ip.to_s + @repository.url.slice(project_path_cut, @repository.url.length).to_s end if @course_tag == 1 render :action => 'show', :layout => 'base_courses' diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 84364b4f6..01b126c26 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -609,6 +609,12 @@ module ApplicationHelper return @result end + # 判断版本库是否初始为gitlab + def rep_is_gitlab?(project) + rep = Repository.where("project_id =? and type =?", project, "Repository::Gitlab") + return rep.blank? ? true :false + end + # 判断当前用户是否为项目管理员 def is_project_manager?(user_id, project_id) @result = false diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 41f25d1a3..48766813c 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -117,6 +117,22 @@ module ProjectsHelper end end + # 获取新增gitlab版本库 + def rep_gitlab(project) + rep = Repository.where("project_id =? and type =?", project, "Repository::Gitlab") + end + + # 获取新项目的版本库地址 + def rep_gitlab_url(project) + gitlab_address = Redmine::Configuration['gitlab_address'] + url = gitlab_address.to_s+"/"+project.owner.to_s+"/"+project.identifier+"."+"git" + end + + # # 获取Forge历史版本库 + def rep_forge(project) + rep = Repository.where("project_id =? and type =?", project, "Repository::Git") + end + # Added by young def course_settings_tabs tabs = [{:name => 'info', :action => :edit_project, :partial => 'projects/edit', :label => :label_information_plural, :course=>'1'}, diff --git a/app/views/projects/_development_group.html.erb b/app/views/projects/_development_group.html.erb index 1770291f5..67867ffbf 100644 --- a/app/views/projects/_development_group.html.erb +++ b/app/views/projects/_development_group.html.erb @@ -41,8 +41,15 @@ <%# --版本库被设置成私有、module中设置不显示、没有创建版本库 三种情况不显示-- %> <% if visible_repository?(@project) %> <% end %> diff --git a/app/views/projects/settings/_new_repositories.html.erb b/app/views/projects/settings/_new_repositories.html.erb index bfb87b16a..e614dc5fe 100644 --- a/app/views/projects/settings/_new_repositories.html.erb +++ b/app/views/projects/settings/_new_repositories.html.erb @@ -7,87 +7,80 @@ <%= str = error_messages_for 'repository' %> <% project_path_cut = RepositoriesHelper::PROJECT_PATH_CUT %> <% ip = RepositoriesHelper::REPO_IP_ADDRESS %> +<%# 新建版本库 %> + +<% if @project.repositories.count == 0 || rep_is_gitlab?(@project) %> +
+ + + <% course_tag = @project.project_type %> + <% if User.current.allowed_to?(:manage_repository, @project) %> + + <%= link_to l(:label_repository_new_repos),"#" , :onclick=>"pro_st_show_ku();", :class => 'c_blue fl' %>

+ <% end %> +
+
+ + <%= labelled_form_for :repository, @repository, :url =>project_repositories_path(@project),:html => {:id => 'repository-form',:method=>"post",:autocomplete=>'off'} do |f| %> +
+ + <%=l(:lable_project_rep_create) %> + <%=l(:button_cancel)%> +
+ <% end %> +
+<% end %> + + <% if @project.repositories.any? %> + <%= render :partial => 'projects/settings/rep_gitlab', :locals => {:project => @project, :ip => "ip", :project_path_cut => "project_path_cut" } %> + <%#= render :partial => 'projects/settings/rep_forge', :locals => {:project => @project, :ip => "ip", :project_path_cut => "project_path_cut" } %> +
历史版本库
- - - - - - - - - <% @project.repositories.sort.each do |repository| %> - - - - + <% rep_forge(@project).sort.each do |repository| %> + + + <%if repository.scm_name=="Git"%> - + <%else %> - + <% end %> - - <% end %>
<%= l(:field_identifier) %> <%= l(:field_repository_is_default) %><%= l(:label_scm) %> <%= l(:label_repository_path) %>
- <%= link_to truncate(repository.identifier), ({:controller => 'repositories', :action => 'show', :id => @project, :repository_id => repository.identifier_param} if repository.identifier.present?) %> <%= checked_image repository.is_default? %><%=h repository.scm_name %>
+ <%= repository.identifier %><%=h repository.scm_name %> <%=truncate( 'http://' << repository.login.to_s << '_'<< repository.identifier.to_s << '@'<< ip.to_s << h( repository.url.slice(project_path_cut, repository.url.length)),:length=>20)%> + + <%=truncate( 'http://' << repository.login.to_s << '_'<< repository.identifier.to_s << '@'<< ip.to_s << h( repository.url.slice(project_path_cut, repository.url.length)),:length=>60) %> + + <%=h truncate(repository.url,:length=>10) %><%=h truncate(repository.url,:length=>10) %> - <% if repository.scm_name=="Git"%> - <%if User.current.allowed_to?(:manage_repository, @project) %> - <%= link_to(l(:label_user_plural), committers_repository_path(repository)) %> - <% end %> - <% end %> - - <% if repository.login.to_s==User.current.login.to_s %> - <%= delete_new_link repository_path(repository) %> - <% end %>
<% else %> -

<%= l(:label_repository_no_data) %>

+

温馨提示:<%= l(:label_repository_no_data) %>

<% end %> -<%# 新建版本库 %> -<% if @project.repositories.count == 0 %> - - - <% course_tag = @project.project_type %> - <% if User.current.allowed_to?(:manage_repository, @project) %> - - <%= link_to l(:label_repository_new_repos),"#" , :onclick=>"pro_st_show_ku();", :class => 'c_blue fl' %>

- <% end %> -
-
- <%= labelled_form_for :repository, @repository, :url =>project_repositories_path(@project),:html => {:id => 'repository-form',:method=>"post",:autocomplete=>'off'} do |f| %> -
- - <%=l(:button_save)%> - <%=l(:button_cancel)%> -
- <% end %> -<% end %> diff --git a/app/views/projects/settings/_rep_forge.html.erb b/app/views/projects/settings/_rep_forge.html.erb new file mode 100644 index 000000000..e25849c38 --- /dev/null +++ b/app/views/projects/settings/_rep_forge.html.erb @@ -0,0 +1,38 @@ + + + 历史版本 + + + + + + + + + <% rep_forge(project).sort.each do |repository| %> + + + + + <%if repository.scm_name=="Git"%> + + <%else %> + + <% end %> + + + + <% end %> + +
<%= l(:field_identifier) %> <%= l(:field_repository_is_default) %><%= l(:label_scm) %> <%= l(:label_repository_path) %>
+ <%= link_to truncate(repository.identifier), ({:controller => 'repositories', :action => 'show', :id => @project, :repository_id => repository.identifier_param} if repository.identifier.present?) %> <%= checked_image repository.is_default? %><%=h repository.scm_name %> <%=truncate( 'http://' << repository.login.to_s << '_'<< repository.identifier.to_s << '@'<< ip.to_s << h( repository.url.slice(project_path_cut, repository.url.length)),:length=>20)%><%=h truncate(repository.url,:length=>10) %> + <% if repository.scm_name=="Git"%> + <%if User.current.allowed_to?(:manage_repository, @project) %> + <%= link_to(l(:label_user_plural), committers_repository_path(repository)) %> + <% end %> + <% end %> + + <% if repository.login.to_s==User.current.login.to_s %> + <%= delete_new_link repository_path(repository) %> + <% end %>
\ No newline at end of file diff --git a/app/views/projects/settings/_rep_gitlab.html.erb b/app/views/projects/settings/_rep_gitlab.html.erb new file mode 100644 index 000000000..1de706b5d --- /dev/null +++ b/app/views/projects/settings/_rep_gitlab.html.erb @@ -0,0 +1,26 @@ +<% rep_gitlab(project).sort.each do |repository| %> + + + + + + + + + + + + + <%if repository.scm_name=="Gitlab"%> + + <%else %> + + <% end %> + +<% end %> + +
<%= l(:field_identifier) %><%= l(:label_scm) %> <%= l(:label_repository_path) %>
+ <%= link_to truncate(repository.identifier), ({:controller => 'repositories', :action => 'show', :id => @project, :repository_id => repository.identifier_param} if repository.identifier.present?) %> + <%=h repository.scm_name %> + <%=truncate(rep_gitlab_url(project), :length => 360) %> + <%=h truncate(repository.url,:length=>10) %>
\ No newline at end of file diff --git a/config/locales/commons/zh.yml b/config/locales/commons/zh.yml index 61bad2a00..3b5e9790e 100644 --- a/config/locales/commons/zh.yml +++ b/config/locales/commons/zh.yml @@ -200,7 +200,7 @@ zh: label_subject_empty: 主题不能为空 label_no_data: 没有任何数据可供显示 - label_repository_no_data: 您还没有创建版本库,每个项目只允许创建一个版本库! + label_repository_no_data: 每个项目只能创建一个版本库! # 项目、课程、用户公用 label_settings: 配置 label_information_plural: 信息 diff --git a/config/locales/projects/zh.yml b/config/locales/projects/zh.yml index cce03b13e..88a710633 100644 --- a/config/locales/projects/zh.yml +++ b/config/locales/projects/zh.yml @@ -88,6 +88,8 @@ zh: project_module_files: 资源库 project_module_repository: 版本库 project_module_create_repository: 创建版本库 + project_gitlab_create_repository: 新版本库 + label_project_more: 更多 project_module_news: 新闻 @@ -112,6 +114,7 @@ zh: label_project_overview: "项目简介" label_expend_information: 展开更多信息 label_project_create: "新建了项目" + lable_project_rep_create: 创建 # # 项目托管平台 diff --git a/lib/tasks/update_rep_if_fault.rake b/lib/tasks/update_rep_if_fault.rake new file mode 100644 index 000000000..7bcf63c4c --- /dev/null +++ b/lib/tasks/update_rep_if_fault.rake @@ -0,0 +1,22 @@ +#coding=utf-8 + +namespace :rep_fault do + desc "update fault rep" + task :rep_update => :environment do + Project.all.each do |project| + if project.repositories.count > 0 + unless Repository.where("project_id =? and type = ?",project, "Repository::Gitlab").blank? + project.repositories.each do |repository| + repository.update_attributes(:is_default => false) + end + end + end + end + end + + desc "update ossean's data" + task :update_type => :environment do + repository = Repository.find(400) + repository.update_attributes(:type => "Repository::Git") + end +end \ No newline at end of file diff --git a/public/stylesheets/project.css b/public/stylesheets/project.css index e769e14e4..2623fe65e 100644 --- a/public/stylesheets/project.css +++ b/public/stylesheets/project.css @@ -553,6 +553,7 @@ a:hover.member_btn{ background:#329cbd;} .pro_table tr td{ height:30px;} .pro_table_tit{ text-align:center; font-weight:bold;} .pro_table_on{ background:#f0fbff; } +.pro_table_on_forge{ background: #EAEAEA; } .pro_st_edit_issues{ display:none; margin-top:20px;} .pro_st_edit_issues ul li{ margin-bottom:10px;} .pro_st_edit_ban{ display:none; margin-top:20px;} diff --git a/public/stylesheets/public.css b/public/stylesheets/public.css index 0be7a6ff0..0c4479907 100644 --- a/public/stylesheets/public.css +++ b/public/stylesheets/public.css @@ -71,6 +71,7 @@ h4{ font-size:14px; color:#3b3b3b;} .ml45{ margin-left:45px;} .ml55{ margin-left:55px;} .ml30{ margin-left:30px;} +.ml38{ margin-left:38px;} .ml60{ margin-left:60px;} .ml80{ margin-left:80px;} .ml90{ margin-left:90px;} @@ -133,6 +134,7 @@ h4{ font-size:14px; color:#3b3b3b;} .w265{ width: 265px;} .w270{ width: 270px;} .w350 {width:350px;} +.w362 {width:362px;} .w430{ width:470px;} .w520{ width:520px;} .w543{ width:543px;} diff --git a/public/stylesheets/repository.css b/public/stylesheets/repository.css index 71cbd47b6..e2d636e2e 100644 --- a/public/stylesheets/repository.css +++ b/public/stylesheets/repository.css @@ -275,4 +275,13 @@ li.commit .commit-row-info a { } li.commit .commit-row-info .committed_ago { display: inline-block; +} +.rep_history_title{ + font-weight: bold; + font-size: 13px; + color: #7F7F7F; + padding-bottom: 10px; +} +.rep_history_grey{ + color: #7F7F7F; } \ No newline at end of file