缺陷页面
This commit is contained in:
parent
6b8022cb23
commit
cdf1ce1c17
|
@ -554,6 +554,17 @@ module ApplicationHelper
|
|||
s.html_safe
|
||||
end
|
||||
|
||||
#缺陷追踪者列表复选框生成
|
||||
def issue_watcher_check_box_tags_ex name, principals
|
||||
s = ''
|
||||
principals.each do |principal|
|
||||
s << "<li>#{ check_box_tag name, principal.id, false, :id => nil } #{h link_to principal.userInfo, user_path( principal.id)}</li>\n"
|
||||
end
|
||||
s.html_safe
|
||||
end
|
||||
|
||||
|
||||
|
||||
#扩展的checkbox生成
|
||||
def principals_check_box_tags_ex(name, principals)
|
||||
s = ''
|
||||
|
|
|
@ -261,17 +261,28 @@ module WatchersHelper
|
|||
content.present? ? content_tag('ul', content, :class => 'watchers') : content
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def watchers_checkboxes(object, users, checked=nil)
|
||||
if users.nil?
|
||||
|
||||
else
|
||||
# scope = users.sort
|
||||
# watchers = paginateHelper scope,10
|
||||
# s = content_tag('ul', issue_watcher_check_box_tags_ex('issue[watcher_user_ids][]', watchers), :class => 'mb10 ml80')
|
||||
# links = pagination_links_full(@obj_pages, @obj_count, :per_page_links => false, :remote => false, :flag => true){|text, parameters, options|
|
||||
# link_to text, watchers_autocomplete_for_user_path(@users, parameters.merge(:q => params[:q],:format => 'js',:flag => 'ture')), :remote => true
|
||||
# }
|
||||
# s + content_tag('ul', links,:class => 'wlist', :style =>"float:left;margin-top:0px;")
|
||||
users.map do |user|
|
||||
c = checked.nil? ? object.watched_by?(user) : checked
|
||||
tag = check_box_tag 'issue[watcher_user_ids][]', user.id, c, :id => nil
|
||||
content_tag 'label', "#{tag} #{h(user)}".html_safe,
|
||||
:id => "issue_watcher_user_ids_#{user.id}",
|
||||
:class => "floating"
|
||||
end.join.html_safe
|
||||
s = content_tag('ul', issue_watcher_check_box_tags_ex('issue[watcher_user_ids][]', users), :class => 'mb10 ml80')
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -305,7 +316,7 @@ module WatchersHelper
|
|||
link_to(l(:label_exit_project),exit_cur_project_path(project.id),
|
||||
:remote => true, :confirm => l(:lable_sure_exit_project),
|
||||
:class => "pr_join_a_quit" )
|
||||
end
|
||||
end
|
||||
|
||||
#项目关注、取消关注
|
||||
#REDO:项目样式确定后方法需要对CSS变量进行改进
|
||||
|
@ -342,4 +353,18 @@ module WatchersHelper
|
|||
link_to text, url, :remote => true, :method => method , :class => "pr_join_a",:id => id
|
||||
end
|
||||
|
||||
def paginateHelper obj, pre_size=20
|
||||
@obj_count = obj.count
|
||||
@obj_pages = Redmine::Pagination::Paginator.new @obj_count, pre_size, params['page']
|
||||
if obj.kind_of? ActiveRecord::Base or obj.kind_of? ActiveRecord::Relation
|
||||
obj.limit(@obj_pages.per_page).offset(@obj_pages.offset)
|
||||
elsif obj.kind_of? Array
|
||||
obj[@obj_pages.offset, @obj_pages.per_page]
|
||||
else
|
||||
logger.error "[ApplicationController] Error : application_controller#paginateHelper ===> unknow category: #{obj.class}"
|
||||
raise RuntimeError, 'unknow type, Please input you type into this helper.'
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
<span class="add_attachment" style="font-weight:normal;">
|
||||
<%#= button_tag "浏览", :type=>"button", :onclick=>"CompatibleSend();" %>
|
||||
<!--%= link_to image_tag(),"javascript:void(0)", :onclick => "_file.click()"%-->
|
||||
<%= button_tag l(:button_browse), :type=>"button", :onclick=>"_file.click()",:onmouseover => 'this.focus()', :style => ie8? ? 'display:none' : '' %>
|
||||
<%= button_tag "文件浏览",:class => 'sub_btn', :type=>"button", :onclick=>"_file.click()",:onmouseover => 'this.focus()', :style => ie8? ? 'display:none' : '' %>
|
||||
<%= file_field_tag 'attachments[dummy][file]',
|
||||
:id => '_file',
|
||||
:class => 'file_selector',
|
||||
|
|
|
@ -4,83 +4,96 @@
|
|||
<legend onclick="toggleFieldset(this);" ><strong><%= l(:label_change_properties) %></strong></legend>
|
||||
<ul class="fl" >
|
||||
<li>
|
||||
<label class="label"><span class="c_red f12">*</span><%= l(:field_status) %>:</label>
|
||||
<% if @issue.safe_attribute?('status_id') && @allowed_statuses.present? %>
|
||||
<%= f.select :status_id, (@allowed_statuses.collect {|p| [p.name, p.id]}),
|
||||
{ :onchange => "updateIssueFrom('#{escape_javascript project_issue_form_path(@project, :id => @issue, :format => 'js')}')"}, :class => "w150" %>
|
||||
<%= f.select :status_id,
|
||||
(@allowed_statuses.collect {|p| [p.name, p.id]}),
|
||||
{ :onchange => "updateIssueFrom('#{escape_javascript project_issue_form_path(@project, :id => @issue, :format => 'js')}')" , :no_label => true},
|
||||
:class => "w150" %>
|
||||
<% else %>
|
||||
<p><label><%= l(:field_status) %></label> <%= h(@issue.status.name) %></p>
|
||||
<%= h(@issue.status.name) %>
|
||||
<% end %>
|
||||
</li>
|
||||
<div class="cl"></div>
|
||||
<li>
|
||||
<label class="label" ><span class="c_red f12">*</span><%= l(:field_priority) %>:</label>
|
||||
<% if @issue.safe_attribute? 'priority_id' %>
|
||||
<%= f.select :priority_id, (@priorities.collect {|p| [p.name, p.id]}), {:required => true}, :disabled => !@issue.leaf?, :class => "w150" %>
|
||||
<%= f.select :priority_id,
|
||||
(@priorities.collect {|p| [p.name, p.id]}),
|
||||
{:required => true, :no_label => true}, :disabled => !@issue.leaf?,
|
||||
:class => "w150" %>
|
||||
<% end %>
|
||||
</li>
|
||||
<div class="cl"></div>
|
||||
<li><% if @issue.safe_attribute? 'assigned_to_id' %>
|
||||
<li>
|
||||
<li>
|
||||
<label class="label" ><%= l(:field_assigned_to) %>:</label>
|
||||
<% if @issue.safe_attribute? 'assigned_to_id' %>
|
||||
<%= f.select :assigned_to_id, principals_options_for_select(@issue.assignable_users, @issue.assigned_to),
|
||||
:include_blank => true, :required => @issue.required_attribute?('assigned_to_id'),
|
||||
:class => "w150" %>
|
||||
{:required => @issue.required_attribute?('assigned_to_id'), :no_label => true} ,
|
||||
:class => "w150" %>
|
||||
<% end %>
|
||||
</li>
|
||||
<div class="cl"></div>
|
||||
<li><% if @issue.safe_attribute?('fixed_version_id') && @issue.assignable_versions.any? %>
|
||||
<%= f.select :fixed_version_id, version_options_for_select(@issue.assignable_versions, @issue.fixed_version), :include_blank => true,
|
||||
:required => @issue.required_attribute?('fixed_version_id'),
|
||||
:class => "w150" %>
|
||||
<li>
|
||||
<label class="label" ><%= l(:field_fixed_version) %>:</label>
|
||||
<% if @issue.safe_attribute?('fixed_version_id') && @issue.assignable_versions.any? %>
|
||||
<%= f.select :fixed_version_id, version_options_for_select(@issue.assignable_versions, @issue.fixed_version),
|
||||
{:include_blank => true, :required => @issue.required_attribute?('fixed_version_id'), :no_label => true},
|
||||
:class => "w150" %>
|
||||
<%#= link_to(image_tag('add.png', :style => 'vertical-align: middle;'),
|
||||
new_project_version_path(@issue.project),
|
||||
:remote => true,
|
||||
:method => 'get',
|
||||
:title => l(:label_version_new),
|
||||
:tabindex => 200) if User.current.allowed_to?(:manage_versions, @issue.project) %>
|
||||
|
||||
<a href="javascript:viod(0)" class="pic_add mt5 ml5" ></a>
|
||||
<% end %>
|
||||
</li>
|
||||
<div class="cl"></div>
|
||||
|
||||
</ul>
|
||||
<ul class="fl ml90">
|
||||
<li><% if @issue.safe_attribute? 'start_date' %>
|
||||
<p><%= f.text_field :start_date, :size => 10, :disabled => !@issue.leaf?,
|
||||
:class => "w150",
|
||||
<li>
|
||||
<label class="label02" ><%= l(:field_start_date) %>:</label>
|
||||
<% if @issue.safe_attribute? 'start_date' %>
|
||||
<%= f.text_field :start_date,
|
||||
:size => 22,
|
||||
:disabled => !@issue.leaf?,
|
||||
:no_label=> true,
|
||||
:required => @issue.required_attribute?('start_date') %>
|
||||
<%= calendar_for('issue_start_date','start_date') if @issue.leaf? %></p>
|
||||
<%= calendar_for('issue_start_date','start_date') if @issue.leaf? %>
|
||||
<% end %>
|
||||
</li>
|
||||
<div class="cl"></div>
|
||||
<li><% if @issue.safe_attribute? 'due_date' %>
|
||||
<p><%= f.text_field :due_date, :size => 10,
|
||||
:class => "w150",
|
||||
<li>
|
||||
<label class="label02" ><%= l(:field_due_date) %>:</label>
|
||||
<% if @issue.safe_attribute? 'due_date' %>
|
||||
<%= f.text_field :due_date, :size => 22,
|
||||
:disabled => !@issue.leaf?,
|
||||
:no_label=> true,
|
||||
:required => @issue.required_attribute?('due_date') %>
|
||||
<%= calendar_for('issue_due_date','start_date') if @issue.leaf? %></p>
|
||||
<%= calendar_for('issue_due_date','start_date') if @issue.leaf? %>
|
||||
<% end %>
|
||||
</li>
|
||||
<div class="cl"></div>
|
||||
<li><% if @issue.safe_attribute? 'estimated_hours' %>
|
||||
<p><%= f.text_field :estimated_hours, :size => 3,
|
||||
<li>
|
||||
<label class="label02" ><%= l(:field_estimated_hours) %>:</label>
|
||||
<% if @issue.safe_attribute? 'estimated_hours' %>
|
||||
<%= f.text_field :estimated_hours, :size => 22,
|
||||
:disabled => !@issue.leaf?,
|
||||
:class => "w150",
|
||||
:required => @issue.required_attribute?('estimated_hours') %> <%= l(:field_hours) %></p>
|
||||
:no_label=> true,
|
||||
:required => @issue.required_attribute?('estimated_hours') %>
|
||||
<span class="mt3 ml5"><%= l(:field_hours) %></span>
|
||||
<% end %>
|
||||
</li>
|
||||
<div class="cl"></div>
|
||||
<li><label class="label02" > % 完成 : </label>
|
||||
<select id="" name="" class="w150" >
|
||||
<option value="0" >0 %</option>
|
||||
<option value="10">10 %</option>
|
||||
<option value="20">20 %</option>
|
||||
<option value="30">30 %</option>
|
||||
<option value="40">40 %</option>
|
||||
<option value="50">50 %</option>
|
||||
<option value="60">60 %</option>
|
||||
<option value="70">70 %</option>
|
||||
<option value="80">80 %</option>
|
||||
<option value="90">90 %</option>
|
||||
<option value="100">100 %</option>
|
||||
</select>
|
||||
<% if @issue.safe_attribute?('done_ratio') && @issue.leaf? && Issue.use_field_for_done_ratio? %>
|
||||
<%= f.select :done_ratio, ((0..10).to_a.collect {|r| ["#{r*10} %", r*10] }),
|
||||
{:required => @issue.required_attribute?('done_ratio'), :no_label=> true ,:onchange => "PrecentChange(this.value)"},
|
||||
:class => "w150" %>
|
||||
<% end %>
|
||||
</li>
|
||||
<div class="cl"></div>
|
||||
</ul>
|
||||
|
@ -144,13 +157,7 @@
|
|||
}
|
||||
}
|
||||
</script>
|
||||
<% 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')},
|
||||
{:onchange => "PrecentChange(this.value)"} %></p>
|
||||
<% end %>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<% if @issue.safe_attribute? 'custom_field_values' %>
|
||||
<%= render :partial => 'issues/form_custom_fields' %>
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
<script src="/jquery.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
$("#issue_project_id").css("width","100%");
|
||||
$("#issue_project_id").css("overflow ","hidden");
|
||||
$("#issue_description").css("margin-left ","80px");
|
||||
// $(".jstEditor").css("margin-left ","80px");
|
||||
//issue_project_id
|
||||
});
|
||||
</script>
|
||||
|
@ -76,7 +75,28 @@
|
|||
<% end %>
|
||||
</li>
|
||||
<div class="cl"></div>
|
||||
</ul>
|
||||
<li>
|
||||
<% if @copy_from && @copy_from.attachments.any? %>
|
||||
<p>
|
||||
<!-- 去除附件复制功能 -->
|
||||
<!-- <label for="copy_attachments"><#%= l(:label_copy_attachments) %></label>
|
||||
<#%= check_box_tag 'copy_attachments', '1', @copy_attachments %> -->
|
||||
</p>
|
||||
<% end %>
|
||||
<% if @copy_from && !@copy_from.leaf? %>
|
||||
<p>
|
||||
<label for="copy_subtasks"><%= l(:label_copy_subtasks) %></label>
|
||||
<%= check_box_tag 'copy_subtasks', '1', @copy_subtasks %>
|
||||
</p>
|
||||
<% end %>
|
||||
</li>
|
||||
<div class="cl"></div>
|
||||
<li>
|
||||
<label class="label" ><span class="c_red f12">*</span><%= l(:label_attachment_plural) %>:</label>
|
||||
<%= render :partial => 'attachments/form', :locals => {:container => @issue} %>
|
||||
<li>
|
||||
<div class="cl"></div>
|
||||
</ul>
|
||||
|
||||
<div id="attributes">
|
||||
<%= render :partial => 'issues/attributes' %>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<div class="project_r_h">
|
||||
<div class="project_r_h" xmlns="http://www.w3.org/1999/html">
|
||||
<h2 class="project_h2">问题跟踪</h2>
|
||||
</div>
|
||||
<%= call_hook(:view_issues_new_top, {:issue => @issue}) %>
|
||||
|
@ -9,46 +9,39 @@
|
|||
<%= hidden_field_tag 'copy_from', params[:copy_from] if params[:copy_from] %>
|
||||
<div class="newpro_box">
|
||||
<%= render :partial => 'issues/form', :locals => {:f => f} %>
|
||||
|
||||
<% if @copy_from && @copy_from.attachments.any? %>
|
||||
<p>
|
||||
<!-- 去除附件复制功能 -->
|
||||
<!-- <label for="copy_attachments"><#%= l(:label_copy_attachments) %></label>
|
||||
<#%= check_box_tag 'copy_attachments', '1', @copy_attachments %> -->
|
||||
</p>
|
||||
<% end %>
|
||||
<% if @copy_from && !@copy_from.leaf? %>
|
||||
<p>
|
||||
<label for="copy_subtasks"><%= l(:label_copy_subtasks) %></label>
|
||||
<%= check_box_tag 'copy_subtasks', '1', @copy_subtasks %>
|
||||
</p>
|
||||
<% end %>
|
||||
|
||||
|
||||
<p id="attachments_form"><label><%= l(:label_attachment_plural) %></label><%= render :partial => 'attachments/form', :locals => {:container => @issue} %></p>
|
||||
|
||||
</div>
|
||||
<div class="newpro_box02 ">
|
||||
<% if @issue.safe_attribute? 'watcher_user_ids' -%>
|
||||
<p id="watchers_form">
|
||||
<label>
|
||||
<%= l(:label_issue_watchers) %>
|
||||
</label>
|
||||
<span id="watchers_inputs">
|
||||
<%= watchers_checkboxes(@issue, @available_watchers) %>
|
||||
</span>
|
||||
<span class="search_for_watchers">
|
||||
<%= link_to l(:label_search_for_watchers),
|
||||
<div>
|
||||
<label class="label" > <%= l(:label_issue_watchers) %>:</label>
|
||||
<input id="" name="" size="22" class="fl mb10 h26" type="text" value="搜索添加跟踪者" >
|
||||
<span class="search_for_watchers">
|
||||
<%= link_to "",
|
||||
{:controller => 'watchers', :action => 'new', :project_id => @issue.project},
|
||||
:remote => true,
|
||||
:method => 'get' %>
|
||||
</span>
|
||||
</p>
|
||||
<% end %>
|
||||
</div>
|
||||
<a href="#" class="ButtonColor m3p10" onclick="$('#issue-form').submit();">
|
||||
:method => 'get',
|
||||
:class=>"pic_sch mt5 ml5" %>
|
||||
</span>
|
||||
</div>
|
||||
<%= javascript_tag "observeSearchfield('user_search', 'users_for_watcher', '#{ escape_javascript watchers_autocomplete_for_user_path(:user=> @available_watchers, :format => 'js',:flag => 'ture') }')" %>
|
||||
<div class="cl"></div>
|
||||
<span id="watchers_inputs">
|
||||
<%= watchers_checkboxes(@issue, @available_watchers) %>
|
||||
</span>
|
||||
<div class="cl"></div>
|
||||
<div id="watchers_inputs">
|
||||
|
||||
</div>
|
||||
<div class="cl"></div>
|
||||
|
||||
</ul>
|
||||
<div class="cl"></div>
|
||||
<% end %>
|
||||
<a href="#" class="blue_btn fl ml80" onclick="$('#issue-form').submit();">
|
||||
<%= l(:button_create)%>
|
||||
</a>
|
||||
<%= preview_link preview_new_issue_path(:project_id => @project), 'issue-form','preview',{:class => "ButtonColor m3p10"}%>
|
||||
|
||||
<%= preview_link preview_new_issue_path(:project_id => @project), 'issue-form','preview',{:class => "blue_btn fl ml10"}%>
|
||||
</div>
|
||||
<%= javascript_tag "$('#issue_subject').focus();" %>
|
||||
<% end %>
|
||||
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
.jstEditor {
|
||||
|
||||
padding-left: 0px;
|
||||
}
|
||||
.jstEditor textarea, .jstEditor iframe {
|
||||
margin: 0 !important;
|
||||
margin: 0 ;
|
||||
margin-left: 80px;
|
||||
}
|
||||
|
||||
.jstHandle {
|
||||
|
|
|
@ -166,16 +166,7 @@ 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: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;}
|
||||
/* 新建问题 */
|
||||
.newpro_box{ color:#6d6d6d;}
|
||||
.newpro_box02{ color:#6d6d6d; margin-left:30px; margin-bottom:10px; }
|
||||
.newpro_box ul li{ }
|
||||
.newpro_box input{ height:26px; float:left; margin-bottom:10px;}
|
||||
.newpro_box textarea{ height:150px; float:left; margin-bottom:10px;}
|
||||
.newpro_box select{ height:26px; float:left; margin-bottom:10px;}
|
||||
.label{ width:80px; text-align:right; font-size:14px; display:block; float:left;}
|
||||
.label02{ width:110px; text-align:right; font-size:14px; display:block; float:left;}
|
||||
.collapsible{ border-left:none;border-right:none;border-bottom:none; border-top:1px solid #e4e4e4; padding-left:30px; padding-top:10px; }
|
||||
|
||||
|
||||
/* 弹框 新样式还没设计出来,暂时用的课程那边的样式 */
|
||||
.alert .close{width:26px;height:26px;overflow:hidden;position:absolute;top:-10px;right:-502px;background:url(images/close.png) no-repeat;cursor:pointer;}
|
||||
|
@ -338,6 +329,11 @@ a:hover.st_add{ color:#ff8e15;}
|
|||
padding-bottom: 3px;
|
||||
}
|
||||
|
||||
/* 新建问题 */
|
||||
.label{ width:80px; text-align:right; font-size:14px; display:block; float:left;}
|
||||
.label02{ width:110px; text-align:right; font-size:14px; display:block; float:left;}
|
||||
.collapsible{ border-left:none;border-right:none;border-bottom:none; border-top:1px solid #e4e4e4; padding-top:10px; }
|
||||
|
||||
/*add by sw*/
|
||||
blockquote {
|
||||
border-left: 1px solid #e0e0e0;
|
||||
|
|
Loading…
Reference in New Issue