Merge branch 'szzh' of http://repository.trustie.net/xianbo/trustie2 into szzh
This commit is contained in:
commit
b0b3f257a4
|
@ -29,6 +29,7 @@ class BidsController < ApplicationController
|
||||||
helper :projects
|
helper :projects
|
||||||
helper :words
|
helper :words
|
||||||
helper :welcome
|
helper :welcome
|
||||||
|
helper :project_score
|
||||||
|
|
||||||
def find_project_by_bid_id
|
def find_project_by_bid_id
|
||||||
@bid = Bid.find(params[:id])
|
@bid = Bid.find(params[:id])
|
||||||
|
|
|
@ -414,7 +414,7 @@ module UserScoreHelper
|
||||||
#发帖数
|
#发帖数
|
||||||
def memo_num(user,project=nil)
|
def memo_num(user,project=nil)
|
||||||
if project.nil?
|
if project.nil?
|
||||||
Message.includes(:author).joins(:board).where("#{Message.table_name}.parent_id IS NULL and #{Message.table_name}.author_id = '#{user.id}' and #{Board.table_name}.project_id != -1").all.count
|
Message.includes(:author).joins(:board).where("#{Message.table_name}.parent_id IS NULL and #{Message.table_name}.author_id = '#{user.id}' and #{Board.table_name}.project_id != -1").all.count #+ Memo.includes(:author).where("parent_id IS NULL and author_id = '#{user.id}'").all.count
|
||||||
else
|
else
|
||||||
Message.includes(:author).joins(:board).where("#{Message.table_name}.parent_id IS NULL and #{Message.table_name}.author_id = '#{user.id}' and #{Board.table_name}.project_id = #{project.id}").all.count
|
Message.includes(:author).joins(:board).where("#{Message.table_name}.parent_id IS NULL and #{Message.table_name}.author_id = '#{user.id}' and #{Board.table_name}.project_id = #{project.id}").all.count
|
||||||
end
|
end
|
||||||
|
@ -458,26 +458,26 @@ module UserScoreHelper
|
||||||
option_number.replay_for_message = replay_for_message_num(user,project)#JournalsForMessage.includes(:user).where("m_parent_id IS NOT NULL and user_id = #{user.id}").count
|
option_number.replay_for_message = replay_for_message_num(user,project)#JournalsForMessage.includes(:user).where("m_parent_id IS NOT NULL and user_id = #{user.id}").count
|
||||||
update_score(option_number)
|
update_score(option_number)
|
||||||
end
|
end
|
||||||
#====================================contiue here=====================================================
|
|
||||||
def replay_for_message_num(user,project=nil)
|
def replay_for_message_num(user,project=nil)
|
||||||
if project.nil?
|
if project.nil?
|
||||||
JournalsForMessage.includes(:user).where("m_parent_id IS NOT NULL and user_id = #{user.id}").count
|
JournalsForMessage.includes(:user).where("m_parent_id IS NOT NULL and user_id = #{user.id} and jour_type = 'Project'").count
|
||||||
else
|
else
|
||||||
|
JournalsForMessage.includes(:user).where("m_parent_id IS NOT NULL and user_id = #{user.id} and jour_type = 'Project' and jour_id = '#{project.id}'").count
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
#更新对帖子的回复数量
|
#更新对帖子的回复数量
|
||||||
def update_replay_for_memo(user,type)
|
def update_replay_for_memo(user,type,project=nil)
|
||||||
option_number = get_option_number(user,type)
|
option_number = get_option_number(user,type)
|
||||||
option_number.replay_for_memo = Message.includes(:author).where("parent_id IS NOT NULL and author_id = #{user.id}").all.count #+ Memo.includes(:author).where("parent_id IS NOT NULL and author_id = #{user.id}").all.count
|
option_number.replay_for_memo = replay_for_memo_num(user,project)#Message.includes(:author).where("parent_id IS NOT NULL and author_id = #{user.id}").all.count #+ Memo.includes(:author).where("parent_id IS NOT NULL and author_id = #{user.id}").all.count
|
||||||
update_score(option_number)
|
update_score(option_number)
|
||||||
end
|
end
|
||||||
|
|
||||||
def replay_for_memo_num(user,project=nil)
|
def replay_for_memo_num(user,project=nil)
|
||||||
if project.nil?
|
if project.nil?
|
||||||
Message.includes(:author).where("parent_id IS NOT NULL and author_id = #{user.id}").all.count
|
Message.includes(:author).joins(:board).where("#{Message.table_name}.parent_id IS NOT NULL and #{Message.table_name}.author_id = '#{user.id}' and #{Board.table_name}.project_id != -1").all.count
|
||||||
else
|
else
|
||||||
Message.includes(:author).joins(:board).where("#{Message.table_name}.parent_id IS NOT NULL and #{Message.table_name}.author_id = '#{user.id}' and #{Board.table_name}.project_id = #{project.id}").all.count
|
Message.includes(:author).joins(:board).where("#{Message.table_name}.parent_id IS NOT NULL and #{Message.table_name}.author_id = '#{user.id}' and #{Board.table_name}.project_id = #{project.id}").all.count
|
||||||
end
|
end
|
||||||
|
@ -495,32 +495,13 @@ module UserScoreHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
#更新帖子踩各项数量
|
#更新帖子踩各项数量
|
||||||
def update_tread(user,type)
|
def update_tread(user,type,project=nil)
|
||||||
option_number = get_option_number(user,type)
|
option_number = get_option_number(user,type)
|
||||||
option_number.tread = PraiseTread.where("praise_tread_object_type = 'Issue' || praise_tread_object_type = 'Message' and praise_or_tread = 0 and user_id = '#{user.id}'").all.count
|
tread_nums = tread_num(user,project)
|
||||||
pts = PraiseTread.where("praise_tread_object_type = 'Issue' || praise_tread_object_type = 'Message' and praise_or_tread = 0").all
|
option_number.tread = tread_nums[:tread]
|
||||||
result = []
|
option_number.tread_by_one = tread_nums[:tead_by_one]
|
||||||
result1 = []
|
option_number.tread_by_two = tread_nums[:tread_by_two]
|
||||||
result2 = []
|
option_number.tread_by_three = tread_nums[:tread_by_three]
|
||||||
pts.each do |pt|
|
|
||||||
obj = PraiseTread.find_object_by_type_and_id(pt.praise_tread_object_type, pt.praise_tread_object_id)
|
|
||||||
if obj.nil?
|
|
||||||
next
|
|
||||||
end
|
|
||||||
target_user = obj.author
|
|
||||||
level = UserLevels.get_level(pt.user)#pt.user.get_level
|
|
||||||
project = pt.project
|
|
||||||
if level == 1 && target_user.id = user.id
|
|
||||||
result << pt
|
|
||||||
elsif level == 2 && target_user.id = user.id
|
|
||||||
result1 << pt
|
|
||||||
elsif level == 3 && target_user.id = user.id
|
|
||||||
result2 << pt
|
|
||||||
end
|
|
||||||
end
|
|
||||||
option_number.tread_by_one = result.count
|
|
||||||
option_number.tread_by_two = result1.count
|
|
||||||
option_number.tread_by_three = result2.count
|
|
||||||
update_score(option_number)
|
update_score(option_number)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -579,31 +560,12 @@ module UserScoreHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
#更新帖子顶数量
|
#更新帖子顶数量
|
||||||
def update_praise(user,type)
|
def update_praise(user,type,project=nil)
|
||||||
option_number = get_option_number(user,type)
|
option_number = get_option_number(user,type)
|
||||||
pts = PraiseTread.where("praise_tread_object_type = 'Issue' || praise_tread_object_type = 'Message' and praise_or_tread = 1").all
|
praise_nums = praise_num(user,project)
|
||||||
result = []
|
option_number.praise_by_one = praise_nums[:praise_by_one]
|
||||||
result1 = []
|
option_number.praise_by_two = praise_nums[:praise_by_two]
|
||||||
result2 = []
|
option_number.praise_by_three = praise_nums[:praise_by_three]
|
||||||
pts.each do |pt|
|
|
||||||
obj = PraiseTread.find_object_by_type_and_id(pt.praise_tread_object_type, pt.praise_tread_object_id)
|
|
||||||
if obj.nil?
|
|
||||||
next
|
|
||||||
end
|
|
||||||
target_user = obj.author
|
|
||||||
level = UserLevels.get_level(pt.user)#pt.user.get_level
|
|
||||||
project = pt.project
|
|
||||||
if level == 1 && target_user.id = user.id
|
|
||||||
result << pt
|
|
||||||
elsif level == 2 && target_user.id = user.id
|
|
||||||
result1 << pt
|
|
||||||
elsif level == 3 && target_user.id = user.id
|
|
||||||
result2 << pt
|
|
||||||
end
|
|
||||||
end
|
|
||||||
option_number.praise_by_one = result.count
|
|
||||||
option_number.praise_by_two = result1.count
|
|
||||||
option_number.praise_by_three = result2.count
|
|
||||||
update_score(option_number)
|
update_score(option_number)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -643,6 +605,9 @@ module UserScoreHelper
|
||||||
if obj.nil?
|
if obj.nil?
|
||||||
next
|
next
|
||||||
end
|
end
|
||||||
|
#if obj.project.id == -1
|
||||||
|
# next
|
||||||
|
#end
|
||||||
target_user = obj.author
|
target_user = obj.author
|
||||||
level = UserLevels.get_level(pt.user)#pt.user.get_level
|
level = UserLevels.get_level(pt.user)#pt.user.get_level
|
||||||
project = pt.project
|
project = pt.project
|
||||||
|
@ -660,9 +625,9 @@ module UserScoreHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
#更新提交代码次数
|
#更新提交代码次数
|
||||||
def update_changeset(user,type)
|
def update_changeset(user,type,project=nil)
|
||||||
option_number = get_option_number(user,type)
|
option_number = get_option_number(user,type)
|
||||||
option_number.changeset = Changeset.includes(:user).where("user_id = '#{user.id}'").all.count
|
option_number.changeset = changeset_num(user,project)#Changeset.includes(:user).where("user_id = '#{user.id}'").all.count
|
||||||
update_score(option_number)
|
update_score(option_number)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -676,9 +641,9 @@ module UserScoreHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
#更新文档提交次数
|
#更新文档提交次数
|
||||||
def update_document(user,type)
|
def update_document(user,type,project=nil)
|
||||||
option_number = get_option_number(user,type)
|
option_number = get_option_number(user,type)
|
||||||
option_number.document = Document.includes(:user).where("user_id = '#{user.id}'").all.count
|
option_number.document = document_num(user,project)#Document.includes(:user).where("user_id = '#{user.id}'").all.count
|
||||||
update_score(option_number)
|
update_score(option_number)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -692,9 +657,9 @@ module UserScoreHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
#更新附件提交数量
|
#更新附件提交数量
|
||||||
def update_attachment(user,type)
|
def update_attachment(user,type,project=nil)
|
||||||
option_number = get_option_number(user,type)
|
option_number = get_option_number(user,type)
|
||||||
option_number.attachment = Attachment.includes(:author).where("author_id = '#{user.id}'").all.count
|
option_number.attachment = attachment_num(user,project)#Attachment.includes(:author).where("author_id = '#{user.id}'").all.count
|
||||||
update_score(option_number)
|
update_score(option_number)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -707,9 +672,9 @@ module UserScoreHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
#更新缺陷完成度次数
|
#更新缺陷完成度次数
|
||||||
def update_issue_done_ratio(user,type)
|
def update_issue_done_ratio(user,type,project=nil)
|
||||||
option_number = get_option_number(user,type)
|
option_number = get_option_number(user,type)
|
||||||
option_number.issue_done_ratio = Journal.joins(:details, :user).where("#{JournalDetail.table_name}.prop_key = 'done_ratio' and #{User.table_name}.id = '#{user.id}'").count
|
option_number.issue_done_ratio = issue_done_ratio_num(user,project) #Journal.joins(:details, :user).where("#{JournalDetail.table_name}.prop_key = 'done_ratio' and #{User.table_name}.id = '#{user.id}'").count
|
||||||
update_score(option_number)
|
update_score(option_number)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -723,9 +688,9 @@ module UserScoreHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
#更新发布缺陷次数
|
#更新发布缺陷次数
|
||||||
def update_post_issue(user,type)
|
def update_post_issue(user,type,project=nil)
|
||||||
option_number = get_option_number(user,type)
|
option_number = get_option_number(user,type)
|
||||||
option_number.post_issue = Issue.includes(:author).where("author_id = '#{user.id}'").all.count
|
option_number.post_issue = post_issue_num(user,project) #Issue.includes(:author).where("author_id = '#{user.id}'").all.count
|
||||||
update_score(option_number)
|
update_score(option_number)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -737,7 +702,8 @@ module UserScoreHelper
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def user_scores(user,type)
|
def user_scores(user,type,project=nil)
|
||||||
|
ooption_num = get_option_number(user,type,project)
|
||||||
|
update_score(ooption_num)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,8 +5,7 @@
|
||||||
<div class="splitcontent" style="display: block;">
|
<div class="splitcontent" style="display: block;">
|
||||||
<div class="splitcontentleft">
|
<div class="splitcontentleft">
|
||||||
<% if @issue.safe_attribute?('status_id') && @allowed_statuses.present? %>
|
<% if @issue.safe_attribute?('status_id') && @allowed_statuses.present? %>
|
||||||
<p><%= f.select :status_id, (@allowed_statuses.collect {|p| [p.name, p.id]}), {:required => true},
|
<p><%= f.select :status_id, (@allowed_statuses.collect {|p| [p.name, p.id]}), {:required => true}, :onchange => "updateIssueFrom('#{escape_javascript project_issue_form_path(@project, :id => @issue, :format => 'js')}')" %></p>
|
||||||
:onchange => "updateIssueFrom('#{escape_javascript project_issue_form_path(@project, :id => @issue, :format => 'js')}')" %></p>
|
|
||||||
|
|
||||||
<% else %>
|
<% else %>
|
||||||
<p><label><%= l(:field_status) %></label> <%= h(@issue.status.name) %></p>
|
<p><label><%= l(:field_status) %></label> <%= h(@issue.status.name) %></p>
|
||||||
|
@ -46,10 +45,28 @@
|
||||||
<% if @issue.safe_attribute? 'estimated_hours' %>
|
<% if @issue.safe_attribute? 'estimated_hours' %>
|
||||||
<p><%= f.text_field :estimated_hours, :size => 3, :disabled => !@issue.leaf?, :required => @issue.required_attribute?('estimated_hours') %> <%= l(:field_hours) %></p>
|
<p><%= f.text_field :estimated_hours, :size => 3, :disabled => !@issue.leaf?, :required => @issue.required_attribute?('estimated_hours') %> <%= l(:field_hours) %></p>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<script type="text/javascript">
|
||||||
|
function PrecentChange(obj){
|
||||||
|
var _v= obj;
|
||||||
|
if(_v==100)
|
||||||
|
{
|
||||||
|
//alert(3);
|
||||||
|
}
|
||||||
|
else if(_v==0)
|
||||||
|
{
|
||||||
|
//alert(1);
|
||||||
|
}
|
||||||
|
else if(_v!=100&&_v!=0)
|
||||||
|
{
|
||||||
|
// alert(2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
<% if @issue.safe_attribute?('done_ratio') && @issue.leaf? && Issue.use_field_for_done_ratio? %>
|
<% if @issue.safe_attribute?('done_ratio') && @issue.leaf? && Issue.use_field_for_done_ratio? %>
|
||||||
<p><%= f.select :done_ratio, ((0..10).to_a.collect {|r| ["#{r*10} %", r*10] }), :required => @issue.required_attribute?('done_ratio') %></p>
|
<p><%= f.select :done_ratio, ((0..10).to_a.collect {|r| ["#{r*10} %", r*10] }), {:required => @issue.required_attribute?('done_ratio')},
|
||||||
|
{:onchange => "PrecentChange(this.value)"} %></p>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
|
@ -8,10 +8,13 @@
|
||||||
<p style="padding-right: 20px;">
|
<p style="padding-right: 20px;">
|
||||||
<%= f.text_area :description, :rows => 8, :class => 'wiki-edit', :style => "font-size:small;width:490px;margin-left:10px;" %>
|
<%= f.text_area :description, :rows => 8, :class => 'wiki-edit', :style => "font-size:small;width:490px;margin-left:10px;" %>
|
||||||
</p><!--by young-->
|
</p><!--by young-->
|
||||||
<p><%= f.text_field :identifier, :required => true, :size => 60, :style => "width:488px;", :disabled => @project.identifier_frozen?, :maxlength => Project::IDENTIFIER_MAX_LENGTH %>
|
|
||||||
|
<p style="display: none"><%= f.text_field :identifier, :required => true, :size => 60, :style => "width:488px;", :disabled => @project.identifier_frozen?, :maxlength => Project::IDENTIFIER_MAX_LENGTH,
|
||||||
|
value:"#{User.current.id.to_s + '_' +format_time(Time.now).to_s}" %>
|
||||||
<% unless @project.identifier_frozen? %>
|
<% unless @project.identifier_frozen? %>
|
||||||
<em class="info"><%= l(:text_length_between, :min => 1, :max => Project::IDENTIFIER_MAX_LENGTH) %> <%= l(:text_project_identifier_info).html_safe %></em>
|
<em class="info"><%= l(:text_length_between, :min => 1, :max => Project::IDENTIFIER_MAX_LENGTH) %> <%= l(:text_project_identifier_info).html_safe %></em>
|
||||||
<% end %></p>
|
<% end %></p>
|
||||||
|
|
||||||
<!-- <p style="margin-left:-10px;"><%#= f.text_field :homepage, :size => 60, :style => "width:488px;margin-left: 10px;" %></p> --> <!-- by huang -->
|
<!-- <p style="margin-left:-10px;"><%#= f.text_field :homepage, :size => 60, :style => "width:488px;margin-left: 10px;" %></p> --> <!-- by huang -->
|
||||||
<p style="margin-left:-10px;"><em style ="color: #888888;display: block;font-size: 90%;font-style: normal;"><%= f.check_box :is_public, :style => "margin-left:10px;" %></em></p>
|
<p style="margin-left:-10px;"><em style ="color: #888888;display: block;font-size: 90%;font-style: normal;"><%= f.check_box :is_public, :style => "margin-left:10px;" %></em></p>
|
||||||
<p style="margin-left:-10px;"><em style ="color: #888888;display: block;font-size: 90%;font-style: normal;"><%= f.check_box :hidden_repo, :style => "margin-left:10px;" %></em></p>
|
<p style="margin-left:-10px;"><em style ="color: #888888;display: block;font-size: 90%;font-style: normal;"><%= f.check_box :hidden_repo, :style => "margin-left:10px;" %></em></p>
|
||||||
|
|
|
@ -11,13 +11,14 @@
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p><%= f.check_box :is_default, :label => :field_repository_is_default %></p>
|
<p><%= f.check_box :is_default, :label => :field_repository_is_default %></p>
|
||||||
<p><%= f.text_field :identifier, :required => true, :disabled => @repository.identifier_frozen? %>
|
<p style="display: none"><%= f.text_field :identifier, :required => true, :disabled => @repository.identifier_frozen?,
|
||||||
|
value:"#{User.current.id.to_s + '_' +format_time(Time.now).to_s}"%>
|
||||||
<% unless @repository.identifier_frozen? %>
|
<% unless @repository.identifier_frozen? %>
|
||||||
<em class="info" ><%= l(:text_length_between, :min => 1, :max => Repository::IDENTIFIER_MAX_LENGTH) %> <%= l(:text_repository_identifier_info).html_safe %></em>
|
<em class="info" ><%= l(:text_length_between, :min => 1, :max => Repository::IDENTIFIER_MAX_LENGTH) %> <%= l(:text_repository_identifier_info).html_safe %></em>
|
||||||
<% end %></p>
|
<% end %></p>
|
||||||
|
|
||||||
<!--Modified by tanxianbo-->
|
<!--Modified by tanxianbo-->
|
||||||
<p><%= f.text_field :url, :size => 60, :required => true, :disabled => !@repository.safe_attribute?('url') %>
|
<p><%= f.text_field :url, :size => 60, :required => true, :disabled => !@repository.safe_attribute?('url'), :id => "url_text_field" %>
|
||||||
<em class='info'><%= "#{l(:label_exist_repository_path)}" %></em>
|
<em class='info'><%= "#{l(:label_exist_repository_path)}" %></em>
|
||||||
</p>
|
</p>
|
||||||
<p><%= f.text_field :login, :size => 30 %></p>
|
<p><%= f.text_field :login, :size => 30 %></p>
|
||||||
|
@ -27,6 +28,7 @@
|
||||||
</div>
|
</div>
|
||||||
<!--Ended by tanxianbo-->
|
<!--Ended by tanxianbo-->
|
||||||
<p>
|
<p>
|
||||||
<%= submit_tag(@repository.new_record? ? l(:button_create) : l(:button_save)) %>
|
<%#= submit_tag(@repository.new_record? ? l(:button_create) : l(:button_save)) %>
|
||||||
|
<input type="button" class="enterprise" value="<%= @repository.new_record? ? l(:button_create) : l(:button_save) %>" onclick="createVersion();"/>
|
||||||
<%= link_to l(:button_cancel), settings_project_path(@project, :tab => 'repositories') %>
|
<%= link_to l(:button_cancel), settings_project_path(@project, :tab => 'repositories') %>
|
||||||
</p>
|
</p>
|
||||||
|
|
|
@ -1,5 +1,23 @@
|
||||||
<h3><%= l(:label_repository_new) %></h3>
|
<h3><%= l(:label_repository_new) %></h3>
|
||||||
|
<script type="text/javascript">
|
||||||
|
//var re=new RegExp(strRegex);
|
||||||
|
function createVersion(){
|
||||||
|
var re =new RegExp("^(https|http|file|svn)[?:]{1}/{1}/{1}.*$");
|
||||||
|
var strRegex = /^([https|http|file|svn]:){1}.*$/;
|
||||||
|
var name = $("#url_text_field").val();
|
||||||
|
if(name == "")
|
||||||
|
{
|
||||||
|
alert("URL不能为空");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if(!re.test(name))
|
||||||
|
{
|
||||||
|
alert("URL路径不正确");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$("#repository-form").submit();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
<%= labelled_form_for :repository, @repository, :url => project_repositories_path(@project), :html => {:id => 'repository-form'} do |f| %>
|
<%= labelled_form_for :repository, @repository, :url => project_repositories_path(@project), :html => {:id => 'repository-form'} do |f| %>
|
||||||
<%= render :partial => 'form', :locals => {:f => f} %>
|
<%= render :partial => 'form', :locals => {:f => f} %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -1557,7 +1557,7 @@ zh:
|
||||||
label_welcome_page_to: 参与了 %{project_count} 个项目!
|
label_welcome_page_to: 参与了 %{project_count} 个项目!
|
||||||
label_repository_path_not_null: 库路径 不能为空字符
|
label_repository_path_not_null: 库路径 不能为空字符
|
||||||
label_password_not_null: 密码不能设置为空。
|
label_password_not_null: 密码不能设置为空。
|
||||||
label_exist_repository_path: 定义已有版本库URL路径,定义格式file:///, http://, https://, svn://
|
label_exist_repository_path: 定义已有版本库URL路径,定义格式file://, http://, https://, svn://
|
||||||
label_project_no_activity: 该项目暂无动态!
|
label_project_no_activity: 该项目暂无动态!
|
||||||
label_course_homework_un: 暂未发布任何作业
|
label_course_homework_un: 暂未发布任何作业
|
||||||
label_follow_no_requirement: 暂未关注任何需求!
|
label_follow_no_requirement: 暂未关注任何需求!
|
||||||
|
|
Loading…
Reference in New Issue