diff --git a/.slim-lint.yml b/.slim-lint.yml index cf5297ef..0c30f04c 100644 --- a/.slim-lint.yml +++ b/.slim-lint.yml @@ -5,6 +5,7 @@ linters: ignored_cops: - Layout/ArgumentAlignment - Layout/ArrayAlignment + - Layout/EmptyLineAfterGuardClause - Layout/HashAlignment - Layout/IndentationWidth - Layout/MultilineArrayBraceLayout diff --git a/app/views/common/_dashboard.html.slim b/app/views/common/_dashboard.html.slim index 95936cca..51846b7d 100644 --- a/app/views/common/_dashboard.html.slim +++ b/app/views/common/_dashboard.html.slim @@ -29,14 +29,10 @@ javascript: update: function(event, ui){ // trigger the call on the list that receives the block only if ($(this).find(ui.item).length > 0) { - $.ajax({ - url: "#{escape_javascript _order_blocks_dashboard_path(@project, dashboard)}", - type: 'post', - data: { - 'group': $(this).attr('id').replace(/^list-/, ''), - 'blocks': $.map($(this).children(), function(el){return $(el).attr('id').replace(/^block-/, '');}) - } - }); + $.post("#{escape_javascript _order_blocks_dashboard_path(@project, dashboard)}", + { 'group': $(this).attr('id').replace(/^list-/, ''), + 'blocks': $.map($(this).children(), function(el){return $(el).attr('id').replace(/^block-/, '');}) + }); } } }); diff --git a/app/views/dashboards/_form.html.slim b/app/views/dashboards/_form.html.slim index 3b6e290a..50cb41c9 100644 --- a/app/views/dashboards/_form.html.slim +++ b/app/views/dashboards/_form.html.slim @@ -71,13 +71,13 @@ javascript: $(function() { - $("input[name='dashboard[visibility]']").change(function(){ + $("input[name='dashboard[visibility]']").change(function() { var roles_checked = $('#dashboard_visibility_1').is(':checked'); var private_checked = $('#dashboard_visibility_0').is(':checked'); $("input[name='dashboard[role_ids][]'][type=checkbox]").attr('disabled', !roles_checked); }).trigger('change'); - $("input[name='dashboard[system_default]']").change(function(){ + $("input[name='dashboard[system_default]']").change(function() { var selection = $('#dashboard_system_default').is(':checked'); if (selection) { $('#always-expose').show(); diff --git a/app/views/issues/_additionals_show_description_bottom.html.slim b/app/views/issues/_additionals_show_description_bottom.html.slim index b579950a..3db3b479 100644 --- a/app/views/issues/_additionals_show_description_bottom.html.slim +++ b/app/views/issues/_additionals_show_description_bottom.html.slim @@ -4,7 +4,7 @@ $('.issue .description .contextual') .prepend("#{escape_javascript link_to(l(:button_edit), edit_issue_path(@issue), class: 'icon icon-edit', id: 'fast-desc-link')} "); - $("#fast-desc-link").click(function(){ + $("#fast-desc-link").click(function() { $("#issue_description_and_toolbar").parent().find('a').first().hide(); showAndScrollTo("update", "issue_notes"); $("#issue_description_and_toolbar").show(); diff --git a/assets/javascripts/additionals.js b/assets/javascripts/additionals.js index 32f6f0b8..ad1eab3c 100644 --- a/assets/javascripts/additionals.js +++ b/assets/javascripts/additionals.js @@ -84,11 +84,10 @@ function observeLiveSearchField(fieldId, targetId, target_url) { $.ajax({ url: url, - type: 'get', data: formData, - success: function(data){ if(targetId) $('#'+targetId).html(data); }, - beforeSend: function(){ $this.addClass('ajax-loading'); }, - complete: function(){ $this.removeClass('ajax-loading'); } + success: function(data) { if(targetId) $('#'+targetId).html(data); }, + beforeSend: function() { $this.addClass('ajax-loading'); }, + complete: function() { $this.removeClass('ajax-loading'); } }); } }; diff --git a/assets/javascripts/additionals_macro_button.js b/assets/javascripts/additionals_macro_button.js index 871c1588..8342dd1f 100644 --- a/assets/javascripts/additionals_macro_button.js +++ b/assets/javascripts/additionals_macro_button.js @@ -17,7 +17,7 @@ jsToolBar.prototype.macroMenu = function(fn){ var menu = $(''); for (var i = 0; i < this.macroList.length; i++) { var macroItem = $('
').text(this.macroList[i]); - $('
  • ').html(macroItem).appendTo(menu).mousedown(function(){ + $('
  • ').html(macroItem).appendTo(menu).mousedown(function() { fn($(this).text()); }); } diff --git a/assets/javascripts/select2_helpers.js b/assets/javascripts/select2_helpers.js index 6e656191..f52c04c9 100644 --- a/assets/javascripts/select2_helpers.js +++ b/assets/javascripts/select2_helpers.js @@ -29,7 +29,7 @@ function additionals_transform_to_select2(field) { minimumInputLength: 1, width: '90%', templateResult: formatNameWithIcon - }).on('select2:open', function () { + }).on('select2:open', function() { $(this).parent('span').find('.select2-search__field').val(' ').trigger($.Event('input', { which: 13 })).val(''); }); } @@ -151,7 +151,7 @@ function transformToSelect2(field, options) { selectField.select2(buildSelect2Options(options)); var select2Instance = selectField.data('select2'); - select2Instance.on('results:message', function(){ + select2Instance.on('results:message', function() { this.dropdown._resizeDropdown(); this.dropdown._positionDropdown(); }); @@ -164,7 +164,7 @@ function select2Tag(id, options) { selectField.select2(buildSelect2Options(options)); var select2Instance = selectField.data('select2'); - select2Instance.on('results:message', function(){ + select2Instance.on('results:message', function() { this.dropdown._resizeDropdown(); this.dropdown._positionDropdown(); }); diff --git a/lib/additionals.rb b/lib/additionals.rb index b032d8ab..786e77b1 100644 --- a/lib/additionals.rb +++ b/lib/additionals.rb @@ -101,9 +101,6 @@ module Additionals def setup RenderAsync.configuration.jquery = true - loader.incompatible? %w[redmine_editauthor - redmine_changeauthor] - loader.add_patch %w[ApplicationController AutoCompletesController Issue @@ -131,6 +128,8 @@ module Additionals loader.add_helper({ controller: 'Issues', helper: 'AdditionalsCommonJournals' }) + loader.add_patch [{ target: Redmine::Views::LabelledFormBuilder, patch: 'LabelledFormBuilder' }] + loader.add_global_helper [Additionals::Helpers, AdditionalsFontawesomeHelper, AdditionalsMenuHelper, diff --git a/lib/additionals/patches/labelled_form_builder_patch.rb b/lib/additionals/patches/labelled_form_builder_patch.rb new file mode 100644 index 00000000..e9d02e8b --- /dev/null +++ b/lib/additionals/patches/labelled_form_builder_patch.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +module Additionals + module Patches + module LabelledFormBuilderPatch + extend ActiveSupport::Concern + + included do + prepend InstanceOverwriteMethods + end + + module InstanceOverwriteMethods + # add info support + # NOTE: if info = true, label symbol + _info is used, e.g. for field_author this is field_author_info + def label_for_field(field, options = {}) + if (info = options.delete :info) && info + text = options[:label].is_a?(Symbol) ? l(options[:label]) : options[:label] + text ||= @object.class.human_attribute_name field + + title = if info.is_a?(TrueClass) && options[:label].is_a?(Symbol) + l "#{options[:label]}_info" + elsif info.is_a?(TrueClass) && options[:label].blank? + l "#{field}_info" + else + info.is_a?(Symbol) ? l(info) : info + end + + options[:label] = @template.tag.span text, title: title, class: 'field-description' + end + + super + end + end + end + end +end