From 29ef8af066175be7c7a18637c649180adb3bdd36 Mon Sep 17 00:00:00 2001 From: Marius BALTEANU Date: Mon, 12 Oct 2020 10:49:22 +0300 Subject: [PATCH] Store autocomplete data sources in a JS object --- app/helpers/application_helper.rb | 16 ++++++++++++++++ app/helpers/custom_fields_helper.rb | 8 +++----- app/views/documents/_form.html.erb | 3 +-- app/views/issues/_edit.html.erb | 3 +-- app/views/issues/_form.html.erb | 2 +- app/views/issues/bulk_edit.html.erb | 3 +-- app/views/journals/_notes_form.html.erb | 3 +-- app/views/layouts/base.html.erb | 5 ++--- app/views/messages/_form.html.erb | 3 +-- app/views/news/_form.html.erb | 3 +-- app/views/news/show.html.erb | 3 +-- app/views/search/index.html.erb | 3 +-- app/views/wiki/edit.html.erb | 3 +-- public/javascripts/application.js | 12 ++++++++---- 14 files changed, 39 insertions(+), 31 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 9f6317f42..c1b7ecd49 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1741,6 +1741,22 @@ module ApplicationHelper end end + def autocomplete_data_sources(project) + { + issues: auto_complete_issues_path(:project_id => project, :q => '') + } + end + + def heads_for_auto_complete(project) + data_sources = autocomplete_data_sources(project) + + javascript_tag( + "rm = window.rm || {};" + + "rm.AutoComplete = rm.AutoComplete || {};" + + "rm.AutoComplete.dataSources = '#{data_sources.to_json}';" + ) + end + private def wiki_helper diff --git a/app/helpers/custom_fields_helper.rb b/app/helpers/custom_fields_helper.rb index be908562b..a1670ecef 100644 --- a/app/helpers/custom_fields_helper.rb +++ b/app/helpers/custom_fields_helper.rb @@ -84,9 +84,8 @@ module CustomFieldsHelper if custom_value.custom_field.full_text_formatting? css += ' wiki-edit' data = { - :auto_complete => true, - :issues_url => auto_complete_issues_path(:project_id => custom_value.customized.project, :q => '') - } if custom_value.customized&.try(:project) + :auto_complete => true + } end custom_value.custom_field.format.edit_tag( self, @@ -133,8 +132,7 @@ module CustomFieldsHelper if custom_field.full_text_formatting? css += ' wiki-edit' data = { - :auto_complete => true, - :issues_url => auto_complete_issues_path(:q => '') + :auto_complete => true } end custom_field.format.bulk_edit_tag( diff --git a/app/views/documents/_form.html.erb b/app/views/documents/_form.html.erb index b8b8c8404..45b63611f 100644 --- a/app/views/documents/_form.html.erb +++ b/app/views/documents/_form.html.erb @@ -5,8 +5,7 @@

<%= f.text_field :title, :required => true, :size => 60 %>

<%= f.text_area :description, :cols => 60, :rows => 15, :class => 'wiki-edit', :data => { - :auto_complete => true, - :issues_url => auto_complete_issues_path(:project_id => @project, :q => '') + :auto_complete => true } %>

diff --git a/app/views/issues/_edit.html.erb b/app/views/issues/_edit.html.erb index cc2f110b7..33f8352f5 100644 --- a/app/views/issues/_edit.html.erb +++ b/app/views/issues/_edit.html.erb @@ -31,8 +31,7 @@
<%= l(:field_notes) %> <%= f.text_area :notes, :cols => 60, :rows => 10, :class => 'wiki-edit', :data => { - :auto_complete => true, - :issues_url => auto_complete_issues_path(:project_id => @issue.project, :q => '') + :auto_complete => true }, :no_label => true %> <%= wikitoolbar_for 'issue_notes', preview_issue_path(:project_id => @project, :issue_id => @issue) %> diff --git a/app/views/issues/_form.html.erb b/app/views/issues/_form.html.erb index 214502b0a..0d3ca5e22 100644 --- a/app/views/issues/_form.html.erb +++ b/app/views/issues/_form.html.erb @@ -38,7 +38,6 @@ :rows => [[10, @issue.description.to_s.length / 50].max, 20].min, :data => { :auto_complete => true, - :issues_url => auto_complete_issues_path(:project_id => @issue.project, :q => '') }, :no_label => true %> <% end %> @@ -54,6 +53,7 @@ <% end %> <% heads_for_wiki_formatter %> +<%= heads_for_auto_complete(@issue.project) %> <%= javascript_tag do %> $(document).ready(function(){ diff --git a/app/views/issues/bulk_edit.html.erb b/app/views/issues/bulk_edit.html.erb index 224ace22a..a49617aab 100644 --- a/app/views/issues/bulk_edit.html.erb +++ b/app/views/issues/bulk_edit.html.erb @@ -221,8 +221,7 @@ <%= l(:field_notes) %> <%= text_area_tag 'notes', @notes, :cols => 60, :rows => 10, :class => 'wiki-edit', :data => { - :auto_complete => true, - :issues_url => auto_complete_issues_path(:project_id => @project, :q => '') + :auto_complete => true } %> <%= wikitoolbar_for 'notes' %> diff --git a/app/views/journals/_notes_form.html.erb b/app/views/journals/_notes_form.html.erb index aeb4b6a93..13a6c7fdc 100644 --- a/app/views/journals/_notes_form.html.erb +++ b/app/views/journals/_notes_form.html.erb @@ -6,8 +6,7 @@ <%= text_area_tag 'journal[notes]', @journal.notes, :id => "journal_#{@journal.id}_notes", :class => 'wiki-edit', :rows => (@journal.notes.blank? ? 10 : [[10, @journal.notes.length / 50].max, 100].min), :data => { - :auto_complete => true, - :issues_url => auto_complete_issues_path(:project_id => @project, :q => '') + :auto_complete => true } %> <% if @journal.safe_attribute? 'private_notes' %> diff --git a/app/views/layouts/base.html.erb b/app/views/layouts/base.html.erb index d6c76c41c..50fe17b38 100644 --- a/app/views/layouts/base.html.erb +++ b/app/views/layouts/base.html.erb @@ -13,6 +13,7 @@ <%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %> <%= javascript_heads %> <%= heads_for_theme %> +<%= heads_for_auto_complete(@project) %> <%= call_hook :view_layouts_base_html_head %> <%= yield :header_tags -%> @@ -23,7 +24,6 @@
- <% if User.current.logged? || !Setting.login_required? %>