OSDN Git Service

add selenium test code.
[quickedit/quick_edit.git] / app / views / hooks / _quick_edit_context.html.erb
index 9303be3..52d1671 100644 (file)
@@ -1,14 +1,24 @@
 <%
    extend ApplicationHelper
    extend IssueRelationsHelper
+
+   excludes = Setting.plugin_quick_edit['custom_field_exclude_names'].split(/,/).map {|v| Regexp.new(v)}
+
    custom_fields = @issues.map(&:available_custom_fields).reduce(:&).select do |f|
-     #concat f.field_format
-     %w(string date int).include?(f.field_format)
+     %w{string date int text link float}.include?(f.field_format) && ( excludes.empty? || excludes.none? {|ex| ex.match(f.name)} )
    end
 
+   readonly_fields = @issues.map {|issue| issue.read_only_attribute_names(User.current)}
+   readonly_fields.flatten!
+   readonly_fields.uniq!
+
    first_issue = @issues.first
+   first_issue_id = first_issue.id
    if @issues.size > 1
       second_issue = @issues[1]
+      second_issue_id = second_issue.id
+   else
+      second_issue_id = ''
    end
 
    # 可能なら更新後に選択されたチケットに戻り先に設定
    else
      back_url = @back
    end
+
 %>
   <li class="folder">
-    <a href="#" class="submenu"><%= l(:button_quick_edit) %></a>
+    <a id="quick_edit_context" href="#" class="submenu"><%= l(:button_quick_edit) %></a>
     <ul>
-      <%= quick_edit_link_to(l(:field_subject), :subject, :string, first_issue.subject, !@can[:update]) %>
-      <%= quick_edit_link_to(l(:field_parent_issue), :parent_issue_id, :int, first_issue.parent_id, !@can[:update]) %>
-
-
+      <%= quick_edit_link_to(@issue_ids, get_attribute_caption(:subject), :subject, nil, back_url, !editable(:subject,@can,readonly_fields)) %>
+      <%= quick_edit_link_to(@issue_ids, get_attribute_caption(:description), :description, nil, back_url, !editable(:description,@can,readonly_fields)) %>
+      <%= quick_edit_link_to(@issue_ids, get_attribute_caption(:parent_issue_id), :parent_issue_id, nil, back_url, !editable(:parent_issue_id,@can,readonly_fields)) %>
       <% unless @issues.any? {|issue| issue.disabled_core_fields.include?('start_date') } %>
-      <%= quick_edit_link_to(l(:field_start_date), :start_date, :date, first_issue.start_date, !@can[:update]) %>
+      <%= quick_edit_link_to(@issue_ids, get_attribute_caption(:start_date), :start_date, nil, back_url, !editable(:start_date,@can,readonly_fields)) %>
       <% end %>
 
       <% unless @issues.any? {|issue| issue.disabled_core_fields.include?('due_date') } %>
-      <%= quick_edit_link_to(l(:field_due_date), :due_date, :date, first_issue.due_date, !@can[:update]) %>
+      <%= quick_edit_link_to(@issue_ids, get_attribute_caption(:due_date), :due_date, nil, back_url, !editable(:due_date,@can,readonly_fields)) %>
       <% end %>
 
       <% custom_fields.each do |f| %>
-      <%= quick_edit_link_to(f.name, 'custom_field_values[%d]' % f.id, f.field_format, first_issue.editable_custom_field_values.detect {|v| v.custom_field_id == f.id}, !@can[:update]) %>
+      <%= quick_edit_link_to(@issue_ids, f.name, 'custom_field_values', f.id, back_url, !editable_custom_field(f,@can,readonly_fields)) %>
       <% end %>
 
       <% if @issues.size <= 2  %>
         <% if User.current.allowed_to?(:manage_issue_relations, @project) %>
         <hr>
         <li><%= link_to l(:label_relation_new),
-                        'javascript: quick_edit_show_new_relation_dialog();',
+                        'javascript: quick_edit_show_new_relation_dialog(\''+first_issue_id.to_s+'\',\''+second_issue_id.to_s+'\',\''+URI.encode_www_form_component(back_url)+'\');',
                         :remote => false,
                         :title => l(:label_relation_new),
                         :class => 'icon',
       <% end %>
    </ul>
   </li>
-  <div id="quick_edit_input_dialog" style="display:none;" title="Quick Edit">
-     <p id="quick_edit_input_dialog_message"></p>
-     <form>
-        <fieldset id="text_fields" style="border: none; margin:none; padding: none;">
-        <input id="quick_edit_input_dialog_new_value" type="text" size="40" style="vertical-align:middle;"></input>
-        </fieldset>
-        <fieldset id="date_fields" style="border: none; margin:none; padding: none;">
-        <input id="quick_edit_input_dialog_new_date_value" type="text" size="40" style="vertical-align:middle;"></input>
-        <%= calendar_for('quick_edit_input_dialog_new_date_value') %>
-        </fieldset>
-        <input id="quick_edit_input_dialog_target" type="hidden"></input>
-        <input id="quick_edit_input_dialog_field_type" type="hidden"></input>
-        <input id="quick_edit_input_dialog_pattern" type="hidden"></input>
-        <input id="quick_edit_input_dialog_dummy" type="text" style="display:none"></input>
-     </form> 
-  </div>
 
-  <% if @issues.size <= 2 %>
   <div id="quick_edit_new_relation_dialog" style="display:none;" title="Quick Edit - <%= l(:label_relation_new) %>">
-    <%
-       issue_to_id = second_issue.nil? ? '' : second_issue.id
-    %>
     <%= form_tag({:controller=>'quick_edit_relations', :action=>:create}) do %>
-      <%= text_field_tag :issue_id, first_issue.id, { :size => 10 } %>
+      <%= text_field_tag :issue_id, '', { :size => 10 } %>
       <%= select :relation, :relation_type, collection_for_relation_type_select, {}, :onchange => "setPredecessorFieldsVisibility();"  %>
-      <%= text_field_tag 'relation[issue_to_id]', issue_to_id, { :size => 10 } %>
-      <%= hidden_field_tag :back_url, back_url %>
+      <%= text_field_tag 'relation[issue_to_id]', '', { :size => 10 } %>
+      <%= hidden_field_tag :back_url, '' %>
       <span id="predecessor_fields" style="display:none;">
       <br><%= l(:field_delay) %>: <%= text_field_tag :delay, '', {:size => 3} %> <%= l(:label_day_plural) %>
       </span><br>
 
     <% end %>
   </div>
-  <% end %>
-
-<script>
-//<![CDATA[
-function quick_edit_get_value_element(field_type) {
-  if (field_type == 'date') {
-     return $('#quick_edit_input_dialog_new_date_value');
-  } else {
-     return $('#quick_edit_input_dialog_new_value');
-  }
-}
-
-function quick_edit_show_input_dialog(field_name,target,field_type,pattern,message,default_value){
-  if (field_type == 'date') {
-     $("#quick_edit_input_dialog > form > #text_fields").css("display", "none");
-     $("#quick_edit_input_dialog > form > #date_fields").css("display", "block");
-  } else {
-     $("#quick_edit_input_dialog > form > #text_fields").css("display", "block");
-     $("#quick_edit_input_dialog > form > #date_fields").css("display", "none");
-  }
-
-  if (default_value) {
-     quick_edit_get_value_element(field_type).val(default_value);
-  }
-  $("#quick_edit_input_dialog").attr('title','Quick Edit - ' + field_name);
-  $("#quick_edit_input_dialog_target").val(target);
-  $("#quick_edit_input_dialog_field_type").val(field_type);
-  $("#quick_edit_input_dialog_pattern").val(pattern);
-  $("#quick_edit_input_dialog_message").html(message);
-  $("#quick_edit_input_dialog").dialog({
-     modal: true,
-     closeOnEscape: false,
-     width: 500,
-     height: 210,
-     buttons: {
-        "Ok" : quick_edit_input_dialog_ok,
-        "Cancel" : quick_edit_input_dialog_cancel
-     },
-     close: quick_edit_input_dialog_close
-  });
-}
-
-function quick_edit_input_dialog_close(){
-  $("#quick_edit_input_dialog").remove();
-}
-
-function quick_edit_input_dialog_cancel(){
-  $("#quick_edit_input_dialog").dialog("close");
-}
-
-function quick_edit_input_dialog_ok(){
-  var field_type = $("#quick_edit_input_dialog_field_type").val();
-  var new_value = quick_edit_get_value_element(field_type).val();
-  if(new_value === null) return;
-
-  var target = $("#quick_edit_input_dialog_target").val();
-  var pattern = new RegExp($("#quick_edit_input_dialog_pattern").val());
-
-  if(new_value == "") {
-    alert('<%=l(:text_is_required)%>');
-    return;
-
-  } else {
-
-    if(pattern && !pattern.test(new_value)){
-       alert('<%=l(:text_invalid_format)%>');
-       return;
-    }
-  }
-
-  <% if @issues.count > 1 %>
-     if(!confirm('<%=l(:text_multiple_update_confirm)%>')) return;
-  <% end %>
-
-
-  var additional_index;
-  var match = /(.*)\[([0-9]+)\]/.exec(target);
-  if(match){
-     target_name = match[1];
-     additional_index = match[2];
-  }else{
-     target_name = target;
-     additional_index = null;
-  }
-
-  var bulk_update_html_id = '';
-  var bulk_update_url =  '<%= bulk_update_issues_path(:ids => @issue_ids, :back_url => back_url)%>';
-  if (additional_index === null) {
-      bulk_update_html_id = '#context_edit_update_link_' + target_name;
-      bulk_update_url += encodeURI('&issue['+target_name+']='+new_value);
-  } else {
-      bulk_update_html_id = '#context_edit_update_link_' + target_name + '_'+additional_index+'_';
-      bulk_update_url += encodeURI('&issue['+target_name+']['+additional_index+']='+new_value);
-  }
-
-  jQuery(bulk_update_html_id)
-     .attr('href',bulk_update_url)
-     .click();
-}
-
-function quick_edit_show_new_relation_dialog(){
-  $("#quick_edit_new_relation_dialog").dialog({
-     modal: true,
-     closeOnEscape: false,
-     width: 450,
-     height: 150,
-     close: quick_edit_new_relation_dialog_close
-  });
-}
-
-function quick_edit_new_relation_dialog_cancel(){
-   $('#quick_edit_new_relation_dialog').dialog("close");
-}
-
-function quick_edit_new_relation_dialog_close(){
-   $('#quick_edit_new_relation_dialog').remove();
-}
-
-//]]>
-</script>
-