Revision 912:5e80956cc792 app/views/queries

View differences:

app/views/queries/_columns.html.erb
1
<table style="border-collapse: collapse; border:0;">
2
  <tr>
3
    <td style="padding-left:0">
4
      <%= label_tag "available_columns", l(:description_available_columns) %>
5
      <br />
6
      <%= select_tag 'available_columns',
7
              options_for_select((query.available_columns - query.columns).collect {|column| [column.caption, column.name]}),
8
              :multiple => true, :size => 10, :style => "width:150px",
9
              :ondblclick => "moveOptions(this.form.available_columns, this.form.selected_columns);" %>
10
    </td>
11
    <td align="center" valign="middle">
12
      <input type="button" value="&#8594;"
13
       onclick="moveOptions(this.form.available_columns, this.form.selected_columns);" /><br />
14
      <input type="button" value="&#8592;"
15
       onclick="moveOptions(this.form.selected_columns, this.form.available_columns);" />
16
    </td>
17
    <td>
18
      <%= label_tag "selected_columns", l(:description_selected_columns) %>
19
      <br />
20
      <%= select_tag 'c[]',
21
              options_for_select(query.columns.collect {|column| [column.caption, column.name]}),
22
              :id => 'selected_columns', :multiple => true, :size => 10, :style => "width:150px",
23
              :ondblclick => "moveOptions(this.form.selected_columns, this.form.available_columns);" %>
24
    </td>
25
    <td align="center" valign="middle">
26
      <input type="button" value="&#8593;" onclick="moveOptionUp(this.form.selected_columns);" /><br />
27
      <input type="button" value="&#8595;" onclick="moveOptionDown(this.form.selected_columns);" />
28
    </td>
29
  </tr>
30
</table>
31

  
32
<% content_for :header_tags do %>
33
<%= javascript_include_tag 'select_list_move' %>
34
<% end %>
app/views/queries/_columns.rhtml
1
<table style="border-collapse: collapse; border:0;">
2
	<tr>
3
		<td style="padding-left:0"><%= select_tag 'available_columns',
4
		          options_for_select((query.available_columns - query.columns).collect {|column| [column.caption, column.name]}),
5
		          :multiple => true, :size => 10, :style => "width:150px" %>
6
		</td>
7
		<td align="center" valign="middle">
8
			<input type="button" value="&#8594;"
9
			 onclick="moveOptions(this.form.available_columns, this.form.selected_columns);" /><br />
10
			<input type="button" value="&#8592;"
11
			 onclick="moveOptions(this.form.selected_columns, this.form.available_columns);" />
12
		</td>
13
		<td><%= select_tag 'c[]',
14
		          options_for_select(query.columns.collect {|column| [column.caption, column.name]}),
15
		          :id => 'selected_columns', :multiple => true, :size => 10, :style => "width:150px" %>
16
		</td>
17
		<td align="center" valign="middle">
18
			<input type="button" value="&#8593;" onclick="moveOptionUp(this.form.selected_columns);" /><br />
19
			<input type="button" value="&#8595;" onclick="moveOptionDown(this.form.selected_columns);" />
20
		</td>
21
	</tr>
22
</table>
23

  
24
<% content_for :header_tags do %>
25
<%= javascript_include_tag 'select_list_move' %>
26
<% end %>
app/views/queries/_filters.html.erb
1
<script type="text/javascript">
2
//<![CDATA[
3
function add_filter() {
4
  select = $('add_filter_select');
5
  field = select.value
6
  Element.show('tr_' +  field);
7
  check_box = $('cb_' + field);
8
  check_box.checked = true;
9
  toggle_filter(field);
10
  select.selectedIndex = 0;
11

  
12
  for (i=0; i<select.options.length; i++) {
13
    if (select.options[i].value == field) {
14
      select.options[i].disabled = true;
15
    }
16
  }
17
}
18

  
19
function toggle_filter(field) {
20
  check_box = $('cb_' + field);
21
  if (check_box.checked) {
22
    Element.show("operators_" + field);
23
    Form.Element.enable("operators_" + field);
24
    toggle_operator(field);
25
  } else {
26
    Element.hide("operators_" + field);
27
    Form.Element.disable("operators_" + field);
28
    enableValues(field, []);
29
  }
30
}
31

  
32
function enableValues(field, indexes) {
33
  var f = $$(".values_" + field);
34
  for(var i=0;i<f.length;i++) {
35
    if (indexes.include(i)) {
36
      Form.Element.enable(f[i]);
37
      f[i].up('span').show();
38
    } else {
39
      f[i].value = '';
40
      Form.Element.disable(f[i]);
41
      f[i].up('span').hide();
42
    }
43
  }
44
  if (indexes.length > 0) {
45
    Element.show("div_values_" + field);
46
  } else {
47
    Element.hide("div_values_" + field);
48
  }
49
}
50

  
51
function toggle_operator(field) {
52
  operator = $("operators_" + field);
53
  switch (operator.value) {
54
    case "!*":
55
    case "*":
56
    case "t":
57
    case "w":
58
    case "o":
59
    case "c":
60
      enableValues(field, []);
61
      break;
62
    case "><":
63
      enableValues(field, [0,1]);
64
      break;
65
    case "<t+":
66
    case ">t+":
67
    case "t+":
68
    case ">t-":
69
    case "<t-":
70
    case "t-":
71
      enableValues(field, [2]);
72
      break;
73
    default:
74
      enableValues(field, [0]);
75
      break;
76
  }
77
}
78

  
79
function toggle_multi_select(el) {
80
  var select = $(el);
81
  if (select.multiple == true) {
82
    select.multiple = false;
83
  } else {
84
    select.multiple = true;
85
  }
86
}
87

  
88
function submit_query_form(id) {
89
  selectAllOptions("selected_columns");
90
  $(id).submit();
91
}
92

  
93
function apply_filters_observer() {
94
  $$("#query_form input[type=text]").invoke("observe", "keypress", function(e){
95
    if(e.keyCode == Event.KEY_RETURN) {
96
      submit_query_form("query_form");
97
    }
98
  });
99
}
100
Event.observe(document,"dom:loaded", apply_filters_observer);
101
//]]>
102
</script>
103

  
104
<table width="100%">
105
<tr>
106
<td>
107
<table>
108
<% query.available_filters.sort{|a,b| a[1][:order]<=>b[1][:order]}.each do |filter| %>
109
    <% field = filter[0]
110
       options = filter[1] %>
111
    <tr <%= 'style="display:none;"' unless query.has_filter?(field) %> id="tr_<%= field %>" class="filter">
112
    <td class="field">
113
        <%= check_box_tag 'f[]', field, query.has_filter?(field), :onclick => "toggle_filter('#{field}');", :id => "cb_#{field}" %>
114
        <label for="cb_<%= field %>"><%= filter[1][:name] || l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) %></label>
115
    </td>
116
    <td class="operator">
117
        <%= label_tag "op_#{field}", l(:description_filter), :class => "hidden-for-sighted" %>
118
        <%= select_tag "op[#{field}]", options_for_select(operators_for_select(options[:type]),
119
                        query.operator_for(field)), :id => "operators_#{field}",
120
                        :onchange => "toggle_operator('#{field}');" %>
121
    </td>
122
    <td class="values">
123
    <div id="div_values_<%= field %>" style="display:none;">
124
    <% case options[:type]
125
    when :list, :list_optional, :list_status, :list_subprojects %>
126
        <span class="span_values_<%= field %>">
127
          <%= select_tag "v[#{field}][]", options_for_select(options[:values], query.values_for(field)), :class => "values_#{field}", :id => "values_#{field}_1", :multiple => (query.values_for(field) && query.values_for(field).length > 1) %>
128
          <%= link_to_function image_tag('bullet_toggle_plus.png'), "toggle_multi_select('values_#{field}_1');" %>
129
        </span>
130
    <% when :date, :date_past %>
131
        <span class="span_values_<%= field %>"><%= text_field_tag "v[#{field}][]", query.value_for(field), :size => 10, :class => "values_#{field}", :id => "values_#{field}_1" %> <%= calendar_for "values_#{field}_1" %></span>
132
        <span class="span_values_<%= field %>"><%= text_field_tag "v[#{field}][]", query.value_for(field, 1), :size => 10, :class => "values_#{field}", :id => "values_#{field}_2" %> <%= calendar_for "values_#{field}_2" %></span>
133
        <span class="span_values_<%= field %>"><%= text_field_tag "v[#{field}][]", query.value_for(field), :size => 3, :class => "values_#{field}" %> <%= l(:label_day_plural) %></span>
134
    <% when :string, :text %>
135
        <span class="span_values_<%= field %>"><%= text_field_tag "v[#{field}][]", query.value_for(field), :class => "values_#{field}", :id => "values_#{field}", :size => 30 %></span>
136
    <% when :integer, :float %>
137
        <span class="span_values_<%= field %>"><%= text_field_tag "v[#{field}][]", query.value_for(field), :class => "values_#{field}", :id => "values_#{field}_1", :size => 6 %></span>
138
        <span class="span_values_<%= field %>"><%= text_field_tag "v[#{field}][]", query.value_for(field, 1), :class => "values_#{field}", :id => "values_#{field}_2", :size => 6 %></span>
139
    <% end %>
140
    </div>
141
    <script type="text/javascript">toggle_filter('<%= field %>');</script>
142
    </td>
143
    </tr>
144
<% end %>
145
</table>
146
</td>
147
<td class="add-filter">
148
<%= label_tag('add_filter_select', l(:label_filter_add)) %>
149
<%= select_tag 'add_filter_select', options_for_select([["",""]] + query.available_filters.sort{|a,b| a[1][:order]<=>b[1][:order]}.collect{|field| [ field[1][:name] || l(("field_"+field[0].to_s.gsub(/_id$/, "")).to_sym), field[0]] unless query.has_filter?(field[0])}.compact),
150
                                    :onchange => "add_filter();",
151
                                    :name => nil %>
152
</td>
153
</tr>
154
</table>
155
<%= hidden_field_tag 'f[]', '' %>
app/views/queries/_filters.rhtml
1
<script type="text/javascript">
2
//<![CDATA[
3
function add_filter() {
4
    select = $('add_filter_select');
5
    field = select.value
6
    Element.show('tr_' +  field);
7
    check_box = $('cb_' + field);
8
    check_box.checked = true;
9
    toggle_filter(field);
10
    select.selectedIndex = 0;
11
    
12
    for (i=0; i<select.options.length; i++) {
13
        if (select.options[i].value == field) {
14
            select.options[i].disabled = true;
15
        }    
16
    }
17
}
18

  
19
function toggle_filter(field) {
20
    check_box = $('cb_' + field);
21
    
22
    if (check_box.checked) {
23
        Element.show("operators_" + field);
24
				Form.Element.enable("operators_" + field);
25
        Form.Element.enable("values_" + field);
26
        toggle_operator(field);
27
    } else {
28
        Element.hide("operators_" + field);
29
        Element.hide("div_values_" + field);
30
        Form.Element.disable("operators_" + field);
31
        Form.Element.disable("values_" + field);
32
  }
33
}
34

  
35
function toggle_operator(field) {
36
  operator = $("operators_" + field);
37
  switch (operator.value) {
38
    case "!*":
39
    case "*":
40
    case "t":
41
    case "w":
42
    case "o":
43
    case "c":
44
      Element.hide("div_values_" + field);
45
      break;
46
    default:
47
      Element.show("div_values_" + field);
48
      break;
49
  }
50
}
51

  
52
function toggle_multi_select(field) {
53
    select = $('values_' + field);
54
    if (select.multiple == true) {
55
        select.multiple = false;
56
    } else {
57
        select.multiple = true;
58
    }
59
}
60

  
61
function submit_query_form(id) {
62
  selectAllOptions("selected_columns");
63
  $(id).submit();
64
}
65

  
66
function apply_filters_observer() {
67
  $$("#query_form input[type=text]").invoke("observe", "keypress", function(e){
68
    if(e.keyCode == Event.KEY_RETURN) {
69
      submit_query_form("query_form");
70
    }
71
  });
72
}
73
Event.observe(document,"dom:loaded", apply_filters_observer);
74
//]]>
75
</script>
76

  
77
<table width="100%">
78
<tr>
79
<td>
80
<table>
81
<% query.available_filters.sort{|a,b| a[1][:order]<=>b[1][:order]}.each do |filter| %>
82
    <% field = filter[0]
83
       options = filter[1] %>
84
    <tr <%= 'style="display:none;"' unless query.has_filter?(field) %> id="tr_<%= field %>" class="filter">
85
    <td style="width:200px;">
86
        <%= check_box_tag 'f[]', field, query.has_filter?(field), :onclick => "toggle_filter('#{field}');", :id => "cb_#{field}" %>
87
        <label for="cb_<%= field %>"><%= filter[1][:name] || l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) %></label>
88
    </td>
89
    <td style="width:150px;">
90
        <%= select_tag "op[#{field}]", options_for_select(operators_for_select(options[:type]), query.operator_for(field)), :id => "operators_#{field}", :onchange => "toggle_operator('#{field}');", :class => "select-small", :style => "vertical-align: top;" %>
91
    </td>
92
    <td>    
93
    <div id="div_values_<%= field %>" style="display:none;">
94
    <% case options[:type]
95
    when :list, :list_optional, :list_status, :list_subprojects %>
96
        <select <%= "multiple=true" if query.values_for(field) and query.values_for(field).length > 1 %> name="v[<%= field %>][]" id="values_<%= field %>" class="select-small" style="vertical-align: top;">
97
        <%= options_for_select options[:values], query.values_for(field) %>        
98
        </select>
99
        <%= link_to_function image_tag('bullet_toggle_plus.png'), "toggle_multi_select('#{field}');", :style => "vertical-align: bottom;" %>
100
    <% when :date, :date_past %>
101
        <%= text_field_tag "v[#{field}][]", query.values_for(field), :id => "values_#{field}", :size => 3, :class => "select-small" %> <%= l(:label_day_plural) %>
102
    <% when :string, :text %>
103
        <%= text_field_tag "v[#{field}][]", query.values_for(field), :id => "values_#{field}", :size => 30, :class => "select-small" %>
104
    <% when :integer %>
105
        <%= text_field_tag "v[#{field}][]", query.values_for(field), :id => "values_#{field}", :size => 3, :class => "select-small" %>
106
    <% end %>
107
    </div>
108
    <script type="text/javascript">toggle_filter('<%= field %>');</script>
109
    </td>
110
    </tr>
111
<% end %>
112
</table>
113
</td>
114
<td class="add-filter">
115
<%= label_tag('add_filter_select', l(:label_filter_add)) %>:
116
<%= select_tag 'add_filter_select', options_for_select([["",""]] + query.available_filters.sort{|a,b| a[1][:order]<=>b[1][:order]}.collect{|field| [ field[1][:name] || l(("field_"+field[0].to_s.gsub(/_id$/, "")).to_sym), field[0]] unless query.has_filter?(field[0])}.compact),
117
																		:onchange => "add_filter();",
118
																		:class => "select-small",
119
																		:name => nil %>
120
</td>
121
</tr>
122
</table>
123
<%= hidden_field_tag 'f[]', '' %>
app/views/queries/_form.html.erb
1
<%= error_messages_for 'query' %>
2

  
3
<div class="box">
4
<div class="tabular">
5
<p><label for="query_name"><%=l(:field_name)%></label>
6
<%= text_field 'query', 'name', :size => 80 %></p>
7

  
8
<% if User.current.admin? || User.current.allowed_to?(:manage_public_queries, @project) %>
9
<p><label for="query_is_public"><%=l(:field_is_public)%></label>
10
<%= check_box 'query', 'is_public',
11
      :onchange => (User.current.admin? ? nil : 'if (this.checked) {$("query_is_for_all").checked = false; $("query_is_for_all").disabled = true;} else {$("query_is_for_all").disabled = false;}') %></p>
12
<% end %>
13

  
14
<p><label for="query_is_for_all"><%=l(:field_is_for_all)%></label>
15
<%= check_box_tag 'query_is_for_all', 1, @query.project.nil?,
16
      :disabled => (!@query.new_record? && (@query.project.nil? || (@query.is_public? && !User.current.admin?))) %></p>
17

  
18
<p><label for="query_default_columns"><%=l(:label_default_columns)%></label>
19
<%= check_box_tag 'default_columns', 1, @query.has_default_columns?, :id => 'query_default_columns',
20
      :onclick => 'if (this.checked) {Element.hide("columns")} else {Element.show("columns")}' %></p>
21

  
22
<p><label for="query_group_by"><%= l(:field_group_by) %></label>
23
<%= select 'query', 'group_by', @query.groupable_columns.collect {|c| [c.caption, c.name.to_s]}, :include_blank => true %></p>
24
</div>
25

  
26
<fieldset><legend><%= l(:label_filter_plural) %></legend>
27
<%= render :partial => 'queries/filters', :locals => {:query => query}%>
28
</fieldset>
29

  
30
<fieldset><legend><%= l(:label_sort) %></legend>
31
<% 3.times do |i| %>
32
<%= i+1 %>: 
33
<%= label_tag "query_sort_criteria_attribute_" + i.to_s,
34
              l(:description_query_sort_criteria_attribute), :class => "hidden-for-sighted" %>
35
<%= select_tag("query[sort_criteria][#{i}][]",
36
               options_for_select([[]] + query.available_columns.select(&:sortable?).collect {|column| [column.caption, column.name.to_s]}, @query.sort_criteria_key(i)),
37
               :id => "query_sort_criteria_attribute_" + i.to_s)%>
38
<%= label_tag "query_sort_criteria_direction_" + i.to_s,
39
              l(:description_query_sort_criteria_direction), :class => "hidden-for-sighted" %>
40
<%= select_tag("query[sort_criteria][#{i}][]",
41
                options_for_select([[], [l(:label_ascending), 'asc'], [l(:label_descending), 'desc']], @query.sort_criteria_order(i)),
42
                :id => "query_sort_criteria_direction_" + i.to_s) %>
43
<br />
44
<% end %>
45
</fieldset>
46

  
47
<% content_tag 'fieldset', :id => 'columns', :style => (query.has_default_columns? ? 'display:none;' : nil) do %>
48
<legend><%= l(:field_column_names) %></legend>
49
<%= render :partial => 'queries/columns', :locals => {:query => query}%>
50
<% end %>
51

  
52
</div>
app/views/queries/_form.rhtml
1
<%= error_messages_for 'query' %>
2
<%= hidden_field_tag 'confirm', 1 %>
3

  
4
<div class="box">
5
<div class="tabular">
6
<p><label for="query_name"><%=l(:field_name)%></label>
7
<%= text_field 'query', 'name', :size => 80 %></p>
8

  
9
<% if User.current.admin? || User.current.allowed_to?(:manage_public_queries, @project) %>
10
<p><label for="query_is_public"><%=l(:field_is_public)%></label>
11
<%= check_box 'query', 'is_public',
12
      :onchange => (User.current.admin? ? nil : 'if (this.checked) {$("query_is_for_all").checked = false; $("query_is_for_all").disabled = true;} else {$("query_is_for_all").disabled = false;}') %></p>
13
<% end %>
14

  
15
<p><label for="query_is_for_all"><%=l(:field_is_for_all)%></label>
16
<%= check_box_tag 'query_is_for_all', 1, @query.project.nil?,
17
      :disabled => (!@query.new_record? && (@query.project.nil? || (@query.is_public? && !User.current.admin?))) %></p>
18

  
19
<p><label for="query_default_columns"><%=l(:label_default_columns)%></label>
20
<%= check_box_tag 'default_columns', 1, @query.has_default_columns?, :id => 'query_default_columns',
21
      :onclick => 'if (this.checked) {Element.hide("columns")} else {Element.show("columns")}' %></p>
22

  
23
<p><label for="query_group_by"><%= l(:field_group_by) %></label>
24
<%= select 'query', 'group_by', @query.groupable_columns.collect {|c| [c.caption, c.name.to_s]}, :include_blank => true %></p>
25
</div>
26

  
27
<fieldset><legend><%= l(:label_filter_plural) %></legend>
28
<%= render :partial => 'queries/filters', :locals => {:query => query}%>
29
</fieldset>
30

  
31
<fieldset><legend><%= l(:label_sort) %></legend>
32
<% 3.times do |i| %>
33
<%= i+1 %>: <%= select_tag("query[sort_criteria][#{i}][]",
34
									options_for_select([[]] + query.available_columns.select(&:sortable?).collect {|column| [column.caption, column.name.to_s]}, @query.sort_criteria_key(i))) %>
35
				    <%= select_tag("query[sort_criteria][#{i}][]",
36
							    		  		options_for_select([[], [l(:label_ascending), 'asc'], [l(:label_descending), 'desc']], @query.sort_criteria_order(i))) %><br />
37
<% end %>
38
</fieldset>
39

  
40
<% content_tag 'fieldset', :id => 'columns', :style => (query.has_default_columns? ? 'display:none;' : nil) do %>
41
<legend><%= l(:field_column_names) %></legend>
42
<%= render :partial => 'queries/columns', :locals => {:query => query}%>
43
<% end %>
44

  
45
</div>
app/views/queries/edit.html.erb
1
<h2><%= l(:label_query) %></h2>
2

  
3
<% form_tag(query_path(@query), :onsubmit => 'selectAllOptions("selected_columns");', :method => :put) do %>
4
  <%= render :partial => 'form', :locals => {:query => @query} %>
5
  <%= submit_tag l(:button_save) %>
6
<% end %>
app/views/queries/edit.rhtml
1
<h2><%= l(:label_query) %></h2>
2

  
3
<% form_tag({:action => 'edit', :id => @query}, :onsubmit => 'selectAllOptions("selected_columns");') do %>
4
  <%= render :partial => 'form', :locals => {:query => @query} %>
5
  <%= submit_tag l(:button_save) %>
6
<% end %>
app/views/queries/index.api.rsb
1
api.array :queries, api_meta(:total_count => @query_count, :offset => @offset, :limit => @limit) do
2
  @queries.each do |query|
3
    api.query do
4
      api.id          query.id
5
      api.name        query.name
6
      api.is_public   query.is_public
7
      api.project_id  query.project_id
8
    end
9
  end
10
end
app/views/queries/index.html.erb
1
<div class="contextual">
2
<%= link_to_if_authorized l(:label_query_new), new_project_query_path(:project_id => @project), :class => 'icon icon-add' %>
3
</div>
4

  
5
<h2><%= l(:label_query_plural) %></h2>
6

  
7
<% if @queries.empty? %>
8
  <p><i><%=l(:label_no_data)%></i></p>
9
<% else %>
10
  <table class="list">
11
  <% @queries.each do |query| %>
12
    <tr class="<%= cycle('odd', 'even') %>">
13
      <td>
14
        <%= link_to h(query.name), :controller => 'issues', :action => 'index', :project_id => @project, :query_id => query %>
15
      </td>
16
      <td align="right">
17
        <small>
18
        <% if query.editable_by?(User.current) %>
19
        <%= link_to l(:button_edit), edit_query_path(query), :class => 'icon icon-edit' %>
20
        <%= link_to l(:button_delete), query_path(query), :confirm => l(:text_are_you_sure), :method => :delete, :class => 'icon icon-del' %>
21
        </small>
22
      <% end %>
23
      </td>
24
    </tr>
25
  <% end %>
26
  </table>
27
<% end %>
app/views/queries/index.rhtml
1
<div class="contextual">
2
<%= link_to_if_authorized l(:label_query_new), {:controller => 'queries', :action => 'new', :project_id => @project}, :class => 'icon icon-add' %>
3
</div>
4

  
5
<h2><%= l(:label_query_plural) %></h2>
6

  
7
<% if @queries.empty? %>
8
  <p><i><%=l(:label_no_data)%></i></p>
9
<% else %>
10
  <table class="list">
11
  <% @queries.each do |query| %>
12
    <tr class="<%= cycle('odd', 'even') %>">
13
      <td>
14
        <%= link_to query.name, :controller => 'issues', :action => 'index', :project_id => @project, :query_id => query %>
15
      </td>
16
      <td align="right">
17
        <small>
18
        <% if query.editable_by?(User.current) %>    
19
        <%= link_to l(:button_edit), {:controller => 'queries', :action => 'edit', :id => query}, :class => 'icon icon-edit' %>
20
        <%= link_to l(:button_delete), {:controller => 'queries', :action => 'destroy', :id => query}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %>
21
        </small>
22
      <% end %>
23
      </td>
24
    </tr>
25
  <% end %>
26
  </table>
27
<% end %>
app/views/queries/new.html.erb
1
<h2><%= l(:label_query_new) %></h2>
2

  
3
<% form_tag(@project ? project_queries_path : queries_path, :onsubmit => 'selectAllOptions("selected_columns");') do %>
4
  <%= render :partial => 'form', :locals => {:query => @query} %>
5
  <%= submit_tag l(:button_save) %>
6
<% end %>
app/views/queries/new.rhtml
1
<h2><%= l(:label_query_new) %></h2>
2

  
3
<% form_tag({:action => 'new', :project_id => @query.project}, :onsubmit => 'selectAllOptions("selected_columns");') do %>
4
  <%= render :partial => 'form', :locals => {:query => @query} %>
5
  <%= submit_tag l(:button_save) %>
6
<% end %>

Also available in: Unified diff