##// END OF EJS Templates
Merged r10465 from trunk....
Jean-Philippe Lang -
r10324:2df7c0ff3a60
parent child
Show More
@@ -1029,6 +1029,11 module ApplicationHelper
1029 1029 content_tag(:a, name, {:href => '#', :onclick => "#{function}; return false;"}.merge(html_options))
1030 1030 end
1031 1031
1032 # Helper to render JSON in views
1033 def raw_json(arg)
1034 arg.to_json.to_s.gsub('/', '\/').html_safe
1035 end
1036
1032 1037 def back_url
1033 1038 url = params[:back_url]
1034 1039 if url.nil? && referer = request.env['HTTP_REFERER']
@@ -1,12 +1,12
1 1 <%= javascript_tag do %>
2 var operatorLabels = <%= raw Query.operators_labels.to_json %>;
3 var operatorByType = <%= raw Query.operators_by_filter_type.to_json %>;
4 var availableFilters = <%= raw query.available_filters_as_json.to_json %>;
5 var labelDayPlural = "<%= raw escape_javascript(l(:label_day_plural)) %>";
2 var operatorLabels = <%= raw_json Query.operators_labels %>;
3 var operatorByType = <%= raw_json Query.operators_by_filter_type %>;
4 var availableFilters = <%= raw_json query.available_filters_as_json %>;
5 var labelDayPlural = <%= raw_json l(:label_day_plural) %>;
6 6 $(document).ready(function(){
7 7 initFilters();
8 8 <% query.filters.each do |field, options| %>
9 addFilter("<%= field %>", <%= raw query.operator_for(field).to_json %>, <%= raw query.values_for(field).to_json %>);
9 addFilter("<%= field %>", <%= raw_json query.operator_for(field) %>, <%= raw_json query.values_for(field) %>);
10 10 <% end %>
11 11 });
12 12 <% end %>
@@ -163,9 +163,9 function buildFilterRow(field, operator, values) {
163 163 case "date":
164 164 case "date_past":
165 165 tr.find('td.values').append(
166 '<span style="display:none;"><input type="text" name="v['+field+'][]" id="values_'+fieldId+'_1" size="10" class="value date_value" value="'+values[0]+'" /></span>' +
167 ' <span style="display:none;"><input type="text" name="v['+field+'][]" id="values_'+fieldId+'_2" size="10" class="value date_value" value="'+values[1]+'" /></span>' +
168 ' <span style="display:none;"><input type="text" name="v['+field+'][]" id="values_'+fieldId+'" size="3" class="value" value="'+values[0]+'" /> '+labelDayPlural+'</span>'
166 '<span style="display:none;"><input type="text" name="v['+field+'][]" id="values_'+fieldId+'_1" size="10" class="value date_value" /></span>' +
167 ' <span style="display:none;"><input type="text" name="v['+field+'][]" id="values_'+fieldId+'_2" size="10" class="value date_value" /></span>' +
168 ' <span style="display:none;"><input type="text" name="v['+field+'][]" id="values_'+fieldId+'" size="3" class="value" /> '+labelDayPlural+'</span>'
169 169 );
170 170 $('#values_'+fieldId+'_1').val(values[0]).datepicker(datepickerOptions);
171 171 $('#values_'+fieldId+'_2').val(values[1]).datepicker(datepickerOptions);
@@ -174,15 +174,15 function buildFilterRow(field, operator, values) {
174 174 case "string":
175 175 case "text":
176 176 tr.find('td.values').append(
177 '<span style="display:none;"><input type="text" name="v['+field+'][]" id="values_'+fieldId+'" size="30" class="value" value="'+values[0]+'" /></span>'
177 '<span style="display:none;"><input type="text" name="v['+field+'][]" id="values_'+fieldId+'" size="30" class="value" /></span>'
178 178 );
179 179 $('#values_'+fieldId).val(values[0]);
180 180 break;
181 181 case "integer":
182 182 case "float":
183 183 tr.find('td.values').append(
184 '<span style="display:none;"><input type="text" name="v['+field+'][]" id="values_'+fieldId+'_1" size="6" class="value" value="'+values[0]+'" /></span>' +
185 ' <span style="display:none;"><input type="text" name="v['+field+'][]" id="values_'+fieldId+'_2" size="6" class="value" value="'+values[1]+'" /></span>'
184 '<span style="display:none;"><input type="text" name="v['+field+'][]" id="values_'+fieldId+'_1" size="6" class="value" /></span>' +
185 ' <span style="display:none;"><input type="text" name="v['+field+'][]" id="values_'+fieldId+'_2" size="6" class="value" /></span>'
186 186 );
187 187 $('#values_'+fieldId+'_1').val(values[0]);
188 188 $('#values_'+fieldId+'_2').val(values[1]);
@@ -273,4 +273,12 class QueriesControllerTest < ActionController::TestCase
273 273 assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook', :set_filter => 1, :query_id => nil
274 274 assert_nil Query.find_by_id(1)
275 275 end
276
277 def test_backslash_should_be_escaped_in_filters
278 @request.session[:user_id] = 2
279 get :new, :subject => 'foo/bar'
280 assert_response :success
281 assert_template 'new'
282 assert_include 'addFilter("subject", "=", ["foo\/bar"]);', response.body
283 end
276 284 end
General Comments 0
You need to be logged in to leave comments. Login now