memcached_alan
sw 10 years ago
commit 456dcf9d40

@ -4,5 +4,5 @@
<%= link_to l(:button_delete), issue_path(@issue.id), :data => {:confirm => issues_destroy_confirmation_message(@issue)}, :method => :delete, :class => 'talk_edit fr' if User.current.allowed_to?(:delete_issues, @project) %> <%= link_to l(:button_delete), issue_path(@issue.id), :data => {:confirm => issues_destroy_confirmation_message(@issue)}, :method => :delete, :class => 'talk_edit fr' if User.current.allowed_to?(:delete_issues, @project) %>
<%= link_to l(:button_edit), edit_issue_path(@issue), :onclick => 'showAndScrollTo("all_attributes", "issue_notes"); return false;', :class => 'talk_edit fr', :accesskey => accesskey(:edit) if @issue.editable? && User.current.allowed_to?(:edit_issues, @project) %> <%= link_to l(:button_edit), edit_issue_path(@issue), :onclick => 'showAndScrollTo("all_attributes"); return false;', :class => 'talk_edit fr', :accesskey => accesskey(:edit) if @issue.editable? && User.current.allowed_to?(:edit_issues, @project) %>
<%= link_to l(:label_user_newfeedback), edit_issue_path(@issue), :onclick => 'showAndScrollTo("update", "issue_notes"); return false;', :class => 'talk_edit fr', :accesskey => accesskey(:edit) if @issue.editable? && User.current.allowed_to?(:add_issue_notes, @project) %> <%= link_to l(:label_user_newfeedback), edit_issue_path(@issue), :onclick => 'showAndScrollTo("update", "issue_notes"); return false;', :class => 'talk_edit fr', :accesskey => accesskey(:edit) if @issue.editable? && User.current.allowed_to?(:add_issue_notes, @project) %>

@ -17,6 +17,7 @@
<% if @issue.safe_attribute? 'is_private' %> <% if @issue.safe_attribute? 'is_private' %>
<%= f.check_box :is_private, :no_label => true, :class => "ml30" %> <%= f.check_box :is_private, :no_label => true, :class => "ml30" %>
<label class="fl ml5 mt3" for="issue_is_private" id="issue_is_private_label"><%= l(:field_is_private) %></label> <label class="fl ml5 mt3" for="issue_is_private" id="issue_is_private_label"><%= l(:field_is_private) %></label>
<label class="fl ml5 mt3" for="issue_is_private" id="issue_is_private_tips"><%= l(:field_is_private_tips)%></label>
<% end %> <% end %>
</li> </li>
<div class="cl"></div> <div class="cl"></div>

@ -1,19 +1,24 @@
<div class="pr_info_join fl"> <div class="pr_info_join fl">
<!--关注项目--> <!--关注:非项目成员-->
<% if ( !(User.current.member_of? @project) && User.current.login?) %> <!--added by linchun--> <% if !User.current.member_of?(@project) && User.current.login? && !User.current.admin %>
<span><%= watcher_link_for_project(@project, User.current) %></span> <span><%= watcher_link_for_project(@project, User.current) %></span>
<% end %> <% end %>
<!--加入项目 --> <!--加入项目 -->
<% if ( !(User.current.member_of? @project) && User.current.login?) %> <% if !User.current.member_of?(@project) && User.current.login? && !User.current.admin %>
<%= join_in_project_link(@project, User.current) %> <%= join_in_project_link(@project, User.current) %>
<% end %> <% end %>
<!--退出项目--> <!--配置项目-->
<% if User.current.admin? || User.current.allowed_to?({:controller => 'projects', :action => 'settings'}, @project) %> <% if User.current.admin? || User.current.allowed_to?({:controller => 'projects', :action => 'settings'}, @project) %>
<%= link_to "<span class='pr_setting'></span>#{l(:button_configure)}".html_safe, settings_project_path(@project), :class => "pr_join_a" %> <%= link_to "<span class='pr_setting'></span>#{l(:button_configure)}".html_safe, settings_project_path(@project), :class => "pr_join_a" %>
<% end %> <% end %>
<% if Member.where(:user_id => User.current.id, :project_id=>@project.id).first.roles.first.to_s.include?("Manager") || User.current.admin? %> <!--项目类型-->
<% if (User.current.login? && User.current.member_of?(@project) && Member.where(:user_id => User.current.id, :project_id => @project.id).first.roles.first.to_s.include?("Manager")) || User.current.admin? %>
<%= link_to "<span class='#{typeclass}'></span>#{text}".html_safe,"javascript:void(0)" ,:onClick => "show_window();", :class => "pr_join_a",:id => "setting_project_type"%> <%= link_to "<span class='#{typeclass}'></span>#{text}".html_safe,"javascript:void(0)" ,:onClick => "show_window();", :class => "pr_join_a",:id => "setting_project_type"%>
<% else %> <% end %>
<!--退出项目-->
<% if (User.current.member_of? @project) && User.current.login? &&
Member.where(:user_id => User.current.id, :project_id => @project.id).first.roles.first.to_s != "Manager" %>
<%= exit_project_link(@project) %> <%= exit_project_link(@project) %>
<% end %> <% end %>
</div> </div>

@ -8,55 +8,80 @@
:locals => {:path => @path, :kind => 'dir', :revision => @rev} %> :locals => {:path => @path, :kind => 'dir', :revision => @rev} %>
<%= render :partial => 'navigation' %> <%= render :partial => 'navigation' %>
</div><!--contextual end--> </div>
<!--contextual end-->
<div class="cl"></div> <div class="cl"></div>
<div class=" c_dark f14"> <div class=" c_dark f14">
<p > <%if @repository.type.to_s=="Repository::Git"%> <p>
<% if @repository.type.to_s=="Repository::Git" %>
<%= @repos_url %> <%= @repos_url %>
<% else %> <% else %>
<%= h @repository.url %> <%= h @repository.url %>
<% end %> <% end %>
</p> </p>
<p class="mb10 word_break">
<p class="mb10 break_word">
(<%= l(:label_all_revisions) %><%= @repositories.sort.collect { |repo| (<%= l(:label_all_revisions) %><%= @repositories.sort.collect { |repo|
link_to h(repo.name), link_to h(repo.name),
{:controller => 'repositories', :action => 'show', {:controller => 'repositories', :action => 'show',
:id => @project, :repository_id => repo.identifier_param, :rev => nil, :path => nil}, :id => @project, :repository_id => repo.identifier_param, :rev => nil, :path => nil},
:class => 'repository' + (repo == @repository ? ' selected' : ''), :class => 'repository' + (repo == @repository ? ' selected' : ''),
:class => "mb10 word_break c_orange"}.join('&nbsp|&nbsp').html_safe %>) :class => "mb10 break_word c_orange" }.join('&nbsp|&nbsp').html_safe %>)
</p> </p>
</div>
</div>
<div class="repos_more"><a id="showgithelp" value="hide_help" onclick ="showhelpAndScrollTo('repos_git_more','repos_git_more'); return false;" class="c_dblue lh23">收起Git操作指南</a></div>
<div id="repos_git_more">
<br>
<div class=" c_dark f14">
<p>项目代码请设置好正确的编码方式utf-8否则中文会出现乱码</p> <p>项目代码请设置好正确的编码方式utf-8否则中文会出现乱码</p>
<p>建立版本库文件夹,打开命令行执行如下:</p> <p>建立版本库文件夹,打开命令行执行如下:</p>
</div> </div>
<div class="repos_explain"> <div class="repos_explain">
<p>git init</p> <p>git init</p>
<p>git add *</p> <p>git add *</p>
<p>git commit -m "first commit"</p> <p>git commit -m "first commit"</p>
<p>git remote add origin <p>git remote add origin
http://xianbo_trustie2@repository.trustie.net/xianbo/trustie2.git http://xianbo_trustie2@repository.trustie.net/xianbo/trustie2.git
</p> </p>
<p>git config http.postBuffer 524288000 #设置本地post缓存为500MB</p> <p>git config http.postBuffer 524288000 #设置本地post缓存为500MB</p>
<p>git push -u origin master:master</p> <p>git push -u origin master:master</p>
</div><!--repos_explain end--> </div>
<!--repos_explain end-->
<div class="c_dark f14"> <div class="c_dark f14">
<p>已经有本地库,还没有配置远程地址,打开命令行执行如下:</p> <p>已经有本地库,还没有配置远程地址,打开命令行执行如下:</p>
</div> </div>
<div class="repos_explain"> <div class="repos_explain">
<p>git remote add origin http://xianbo_trustie2@repository.trustie.net/xianbo/trustie2.git</p> <p>git remote add origin http://xianbo_trustie2@repository.trustie.net/xianbo/trustie2.git</p>
<p>git add .</p> <p>git add .</p>
<p>git commit -m "first commit"</p> <p>git commit -m "first commit"</p>
<p>git config http.postBuffer 524288000 #设置本地post缓存为500MB</p> <p>git config http.postBuffer 524288000 #设置本地post缓存为500MB</p>
<p>git push -u origin master:master</p> <p>git push -u origin master:master</p>
</div><!--repos_explain end--> </div>
<!--repos_explain end-->
<div class="c_dark f14"> <div class="c_dark f14">
<p>已有远程地址,创建一个远程分支,并切换到该分支,打开命令行执行如下:</p> <p>已有远程地址,创建一个远程分支,并切换到该分支,打开命令行执行如下:</p>
</div> </div>
<div class="repos_explain"> <div class="repos_explain">
<p>git clone http://xianbo_trustie2@repository.trustie.net/xianbo/trustie2.git</p> <p>git clone http://xianbo_trustie2@repository.trustie.net/xianbo/trustie2.git</p>
<p>git push</p> <p>git push</p>
<p>git checkout -b branch_name</p> <p>git checkout -b branch_name</p>
<p>git push origin branch_name</p> <p>git push origin branch_name</p>
</div><!--repos_explain end--> </div>
<!--repos_explain end-->
<div class="c_dark f14"> <div class="c_dark f14">
<p>从网上获取别人的开源版本库转交到trustie网站上打开命令行执行如下</p> <p>从网上获取别人的开源版本库转交到trustie网站上打开命令行执行如下</p>
</div> </div>
@ -64,13 +89,18 @@
<p>git remote add trustie <p>git remote add trustie
http://xianbo_trustie2@repository.trustie.net/xianbo/trustie2.git http://xianbo_trustie2@repository.trustie.net/xianbo/trustie2.git
</p> </p>
<p>git add .</p> <p>git add .</p>
<p>git commit -m "first commit"</p> <p>git commit -m "first commit"</p>
<p>git config http.postBuffer 524288000 #设置本地post缓存为500MB</p> <p>git config http.postBuffer 524288000 #设置本地post缓存为500MB</p>
<p>git push -u trustie master:master</p> <p>git push -u trustie master:master</p>
<p><a href="/users/646" class="c_orange">李海</a>提供</p> <p><a href="/users/646" class="c_orange">李海</a>提供</p>
</div> </div>
</div>
<% if !@entries.nil? && authorize_for('repositories', 'browse') %> <% if !@entries.nil? && authorize_for('repositories', 'browse') %>
<%= render :partial => 'dir_list' %> <%= render :partial => 'dir_list' %>
<% end %> <% end %>
@ -119,6 +149,7 @@
<p class="fb c_dark mt10">查看如何提交代码: <p class="fb c_dark mt10">查看如何提交代码:
<%= link_to(l(:label_how_commit_code_chinese), ch_usage_path, :class => "c_blue") %> <%= link_to(l(:label_how_commit_code_chinese), ch_usage_path, :class => "c_blue") %>
<%= link_to('English', en_usage_path, :class => "c_blue") %> <%= link_to('English', en_usage_path, :class => "c_blue") %>
<div class="cl"></div> <div class="cl"></div>

@ -188,6 +188,7 @@ zh:
field_priority: 优先级 field_priority: 优先级
field_done_ratio: "% 完成" field_done_ratio: "% 完成"
field_is_private: 私有 field_is_private: 私有
field_is_private_tips: (设置为“私有”后本问题将仅对项目成员可见)
field_watcher: 跟踪者 field_watcher: 跟踪者
label_relates_to: 关联到 label_relates_to: 关联到
label_duplicates: 重复 label_duplicates: 重复

@ -260,7 +260,7 @@ K.options = {
items : [ 'emoticons', items : [ 'emoticons',
'source','plainpaste', 'wordpaste', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist', '|', 'source','plainpaste', 'wordpaste', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist', '|',
'formatblock', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', 'formatblock', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold',
'italic', 'underline', 'removeformat', '|','imagedirectupload','table', 'link' 'italic', 'underline', 'removeformat', '|','imagedirectupload','table', 'link', 'fullscreen',"more"
], ],
noDisableItems : ['source', 'fullscreen'], noDisableItems : ['source', 'fullscreen'],
colorTable : [ colorTable : [
@ -3909,10 +3909,15 @@ _extend(KToolbar, KWidget, {
}); });
}, },
get : function(name) { get : function(name) {
if (this._itemMap[name]) { // if (this._itemMap[name]) {
return this._itemMap[name]; // return this._itemMap[name];
// }
if($("#define").css('display') == 'block'){
pdiv = $("#define")
}else if($("#full").css('display') == 'block'){
pdiv = $("#full")
} }
return (this._itemMap[name] = K('span.ke-icon-' + name, this.div).parent()); return (this._itemMap[name] = K('span.ke-icon-' + name, pdiv).parent());
}, },
select : function(name) { select : function(name) {
_selectToolbar.call(this, name, function(knode) { _selectToolbar.call(this, name, function(knode) {
@ -4915,6 +4920,7 @@ KEditor.prototype = {
self.srcElement.before(container); self.srcElement.before(container);
} }
var toolbarDiv = K('.toolbar', container), var toolbarDiv = K('.toolbar', container),
toolBarDivFull = K('.toolbar', container),
editDiv = K('.edit', container), editDiv = K('.edit', container),
statusbar = self.statusbar = K('.statusbar', container); statusbar = self.statusbar = K('.statusbar', container);
container.removeClass('container') container.removeClass('container')
@ -4959,9 +4965,36 @@ KEditor.prototype = {
htmlList.push('<span class="ke-toolbar-icon ke-toolbar-icon-url ke-icon-' + name + '" unselectable="on"></span></span>'); htmlList.push('<span class="ke-toolbar-icon ke-toolbar-icon-url ke-icon-' + name + '" unselectable="on"></span></span>');
} }
}); });
htmlList.unshift('<div style="display:block" id="define"/>')
htmlList.push('</div>')
var htmlListFull = [];
var fullItems = [
'emoticons',
'source','plainpaste', 'wordpaste', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist', '|',
'formatblock', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold',
'italic', 'underline', 'removeformat', '|','imagedirectupload','table', 'link', 'fullscreen',"less",
'/',
'undo', 'redo', '|', 'preview', 'print', 'template', 'code', 'cut', 'plainpaste',
'justifyfull', 'insertunorderedlist', 'indent', 'outdent', 'subscript',
'superscript', 'clearhtml', 'quickformat', 'selectall', 'fontname',
'strikethrough', 'lineheight', '|', 'imagedirectupload', 'hr', 'pagebreak',
'anchor', 'unlink'
]
K.each(fullItems, function(i, name) {
if (name == '|') {
htmlListFull.push('<span class="ke-inline-block ke-separator"></span>');
} else if (name == '/') {
htmlListFull.push('<div class="ke-hr"></div>');
} else {
htmlListFull.push('<span class="ke-outline" data-name="' + name + '" title="' + self.lang(name) + '" unselectable="on">');
htmlListFull.push('<span class="ke-toolbar-icon ke-toolbar-icon-url ke-icon-' + name + '" unselectable="on"></span></span>');
}
});
htmlListFull.unshift('<div style="display:none" id="full"/>')
htmlListFull.push('</div>')
var toolbar = self.toolbar = _toolbar({ var toolbar = self.toolbar = _toolbar({
src : toolbarDiv, src : toolbarDiv,
html : htmlList.join(''), html : htmlList.join('')+htmlListFull.join(''),
noDisableItems : self.noDisableItems, noDisableItems : self.noDisableItems,
click : function(e, name) { click : function(e, name) {
e.stop(); e.stop();
@ -4975,6 +5008,7 @@ KEditor.prototype = {
self.clickToolbar(name); self.clickToolbar(name);
} }
}); });
var editHeight = _removeUnit(height) - toolbar.div.height(); var editHeight = _removeUnit(height) - toolbar.div.height();
var edit = self.edit = _edit({ var edit = self.edit = _edit({
height : editHeight > 0 && _removeUnit(height) > self.minHeight ? editHeight : self.minHeight, height : editHeight > 0 && _removeUnit(height) > self.minHeight ? editHeight : self.minHeight,
@ -5308,6 +5342,7 @@ KEditor.prototype = {
name = options.name, name = options.name,
knode = self.toolbar.get(name), knode = self.toolbar.get(name),
pos = knode.pos(); pos = knode.pos();
options.x = pos.x; options.x = pos.x;
options.y = pos.y + knode.height(); options.y = pos.y + knode.height();
options.z = self.options.zIndex; options.z = self.options.zIndex;
@ -5992,4 +6027,5 @@ _plugin('core', function(K) {
}); });
}); });
}); });
})(window); })(window);

@ -9,6 +9,8 @@
KindEditor.lang({ KindEditor.lang({
imagedirectupload:'本地图片', imagedirectupload:'本地图片',
more: '切换到更多功能',
less: '切换到简单功能',
source : 'HTML代码', source : 'HTML代码',
preview : '预览', preview : '预览',
undo : '后退(Ctrl+Z)', undo : '后退(Ctrl+Z)',

@ -0,0 +1,15 @@
KindEditor.plugin('less', function(K) {
var self = this, name = 'less';
self.plugin.less = {
click : function(){
if($("#define").css('display') == 'block'){
$("#define").css('display','none')
$("#full").css('display','block')
}else if($("#full").css('display') == 'block'){
$("#full").css('display','none')
$("#define").css('display','block')
}
}
}
self.clickToolbar(name,self.plugin.less.click)
});

@ -0,0 +1,15 @@
KindEditor.plugin('more', function(K) {
var self = this, name = 'more';
self.plugin.more = {
click : function(){
if($("#define").css('display') == 'block'){
$("#define").css('display','none')
$("#full").css('display','block')
}else if($("#full").css('display') == 'block'){
$("#full").css('display','none')
$("#define").css('display','block')
}
}
}
self.clickToolbar(name,self.plugin.more.click)
});

@ -243,6 +243,11 @@
width: 16px; width: 16px;
height: 16px; height: 16px;
} }
.ke-icon-more {
background-position: 0px -672px;
width: 16px;
height: 16px;
}
.ke-icon-plainpaste { .ke-icon-plainpaste {
background-position: 0px -704px; background-position: 0px -704px;
width: 16px; width: 16px;
@ -328,6 +333,11 @@
width: 16px; width: 16px;
height: 16px; height: 16px;
} }
.ke-icon-less {
background-position: 0px -976px;
width: 16px;
height: 16px;
}
.ke-icon-baidumap { .ke-icon-baidumap {
background-position: 0px -976px; background-position: 0px -976px;
width: 16px; width: 16px;

@ -59,6 +59,29 @@ function show_more_msg() {
} }
} }
//项目版本库git帮助文档显示
function showhelpAndScrollTo(id, focus) {
var information = $("#showgithelp");
var val = information.attr("value");
if (val == "show_help") {
$("#showgithelp").text("收起Git操作指南");
information.attr("value", "hide_help");
$('#' + id).show();
if (focus !== null) {
$('#' + focus).focus();
}
$('html, body').animate({scrollTop: $('#' + id).offset().top}, 400);
}
else {
$("#showgithelp").text("显示Git操作指南");
information.attr("value", "show_help");
$('#' + id).hide();
}
}
/////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////项目讨论区 //////////////////////////////////////////////////////////////项目讨论区
function regexSubject() { function regexSubject() {
@ -191,26 +214,21 @@ function project_setting(n) {
} }
//配置-验证项目名称 //配置-验证项目名称
function regex_project_name() function regex_project_name() {
{
var name = $.trim($("#project_name").val()); var name = $.trim($("#project_name").val());
if(name.length == 0) if (name.length == 0) {
{
$("#project_name_notice").show(); $("#project_name_notice").show();
return false; return false;
} }
else else {
{
$("#project_name_notice").hide(); $("#project_name_notice").hide();
return true; return true;
} }
} }
//配置-信息提交 //配置-信息提交
function submit_edit_project(id) function submit_edit_project(id) {
{ if (regex_project_name()) {
if(regex_project_name())
{
$("#edit_project_" + id).submit(); $("#edit_project_" + id).submit();
} }
} }
@ -239,6 +257,7 @@ function showAndScrollTo(id, focus) {
$('#' + focus).focus(); $('#' + focus).focus();
} }
$('html, body').animate({scrollTop: $('#' + id).offset().top}, 400); $('html, body').animate({scrollTop: $('#' + id).offset().top}, 400);
}
/*缺陷完成度决定缺陷状态*/ /*缺陷完成度决定缺陷状态*/
@ -288,6 +307,3 @@ function showAndScrollTo(id, focus) {
} }
}); });
}

@ -177,7 +177,9 @@ a:hover.upload_btn_grey{background:#8a8a8a;}
a.link_file{ background:url(../images/pic_file.png) 0 2px no-repeat; padding-left:20px; color:#64bdd9; } a.link_file{ background:url(../images/pic_file.png) 0 2px no-repeat; padding-left:20px; color:#64bdd9; }
a:hover.link_file{ background:url(../images/pic_file.png) 0 -25px no-repeat; color:#3ca5c6;} a:hover.link_file{ background:url(../images/pic_file.png) 0 -25px no-repeat; color:#3ca5c6;}
.r_txt_tit{width:510px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;color:#15bccf; float:left; color:#09658c; font-size:14px;} .r_txt_tit{width:510px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;color:#15bccf; float:left; color:#09658c; font-size:14px;}
/* 版本库展示Git操作文档 */
.repos_more{height:23px; width:100%; border:1px solid #CCC; background:#F6F6F6; text-align:center; font-size:12px; padding-top:2px;}
.lh23{line-height: 23px;}
/* 弹框 新样式还没设计出来,暂时用的课程那边的样式 */ /* 弹框 新样式还没设计出来,暂时用的课程那边的样式 */
.alert .close{width:26px;height:26px;overflow:hidden;position:absolute;top:-10px;right:-502px;background:url(images/close.png) no-repeat;cursor:pointer;} .alert .close{width:26px;height:26px;overflow:hidden;position:absolute;top:-10px;right:-502px;background:url(images/close.png) no-repeat;cursor:pointer;}

Loading…
Cancel
Save