aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2016-03-24 15:08:48 +0100
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2016-03-29 19:11:18 +0200
commit2b604976da1f7dbd47840728ec61b17833e43654 (patch)
tree1f7a193c95f27fa6093e8e9d1d512e9fcf166a9f /server
parent4325cef7f932d26dc3fbf171836c15a15d2e4903 (diff)
downloadsonarqube-2b604976da1f7dbd47840728ec61b17833e43654.tar.gz
sonarqube-2b604976da1f7dbd47840728ec61b17833e43654.zip
SONAR-7470 Drop ability to manage manual rules from UI
Diffstat (limited to 'server')
-rw-r--r--server/sonar-server/src/main/resources/org/sonar/server/platform/ws/l10n-index-example.json1
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/app.js9
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/filters-view.js11
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/rule-details-view.js25
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/rule/manual-rule-creation-view.js136
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/rule/rule-description-view.js2
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/rule/rule-parameters-view.js2
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/rule/rule-profiles-view.js12
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/templates/coding-rules-filters.hbs6
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/templates/coding-rules-rule-details.hbs6
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/templates/rule/coding-rules-manual-rule-creation.hbs51
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/templates/rule/coding-rules-rule-description.hbs78
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/templates/rule/coding-rules-rule-meta.hbs22
-rw-r--r--server/sonar-web/src/main/js/components/workspace/templates/workspace-rule.hbs20
14 files changed, 68 insertions, 313 deletions
diff --git a/server/sonar-server/src/main/resources/org/sonar/server/platform/ws/l10n-index-example.json b/server/sonar-server/src/main/resources/org/sonar/server/platform/ws/l10n-index-example.json
index 5a5718adc50..96e8d6bac83 100644
--- a/server/sonar-server/src/main/resources/org/sonar/server/platform/ws/l10n-index-example.json
+++ b/server/sonar-server/src/main/resources/org/sonar/server/platform/ws/l10n-index-example.json
@@ -34,7 +34,6 @@
"to.downcase": "to",
"widget.sqaleSunburst.cant_display": "SQALE technical debt is 0 so the breakdown by characteristic can't be displayed.",
"measure_filter.name_contains": "Name contains",
- "manual_rules.page": "Manual Rules",
"name_too_long_x": "Name is too long (maximum is {0} characters)",
"metric.line_coverage.name": "Line coverage",
"measure_filter.criteria.key": "Key",
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/app.js b/server/sonar-web/src/main/js/apps/coding-rules/app.js
index b6dd113f837..282c5dd1cc7 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/app.js
+++ b/server/sonar-web/src/main/js/apps/coding-rules/app.js
@@ -78,14 +78,6 @@ const init = function () {
Backbone.history.start();
};
-App.manualRepository = function () {
- return {
- key: 'manual',
- name: translate('coding_rules.manual_rule'),
- language: 'none'
- };
-};
-
const appXHR = $.get('/api/rules/app').done(function (r) {
App.canWrite = r.canWrite;
App.qualityProfiles = _.sortBy(r.qualityprofiles, ['name', 'lang']);
@@ -96,7 +88,6 @@ const appXHR = $.get('/api/rules/app').done(function (r) {
profile.language = App.languages[profile.lang];
});
App.repositories = r.repositories;
- App.repositories.push(App.manualRepository());
App.statuses = r.statuses;
});
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/filters-view.js b/server/sonar-web/src/main/js/apps/coding-rules/filters-view.js
index fb91769a46f..8f783009933 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/filters-view.js
+++ b/server/sonar-web/src/main/js/apps/coding-rules/filters-view.js
@@ -19,22 +19,11 @@
*/
import _ from 'underscore';
import Marionette from 'backbone.marionette';
-import ManualRuleCreationView from './rule/manual-rule-creation-view';
import Template from './templates/coding-rules-filters.hbs';
export default Marionette.ItemView.extend({
template: Template,
- events: {
- 'click .js-create-manual-rule': 'createManualRule'
- },
-
- createManualRule () {
- new ManualRuleCreationView({
- app: this.options.app
- }).render();
- },
-
serializeData () {
return _.extend(Marionette.ItemView.prototype.serializeData.apply(this, arguments), {
canWrite: this.options.app.canWrite
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/rule-details-view.js b/server/sonar-web/src/main/js/apps/coding-rules/rule-details-view.js
index 1a36a9c688d..e788c19cef2 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/rule-details-view.js
+++ b/server/sonar-web/src/main/js/apps/coding-rules/rule-details-view.js
@@ -27,7 +27,6 @@ import DescView from './rule/rule-description-view';
import ParamView from './rule/rule-parameters-view';
import ProfilesView from './rule/rule-profiles-view';
import CustomRulesView from './rule/custom-rules-view';
-import ManualRuleCreationView from './rule/manual-rule-creation-view';
import CustomRuleCreationView from './rule/custom-rule-creation-view';
import DeleteRuleView from './rule/delete-rule-view';
import IssuesView from './rule/rule-issues-view';
@@ -47,7 +46,6 @@ export default Marionette.LayoutView.extend({
},
events: {
- 'click .js-edit-manual': 'editManualRule',
'click .js-edit-custom': 'editCustomRule',
'click .js-delete': 'deleteRule'
},
@@ -131,13 +129,6 @@ export default Marionette.LayoutView.extend({
key.deleteScope('details');
},
- editManualRule () {
- new ManualRuleCreationView({
- app: this.options.app,
- model: this.model
- }).render();
- },
-
editCustomRule () {
new CustomRuleCreationView({
app: this.options.app,
@@ -162,18 +153,12 @@ export default Marionette.LayoutView.extend({
},
serializeData () {
- const isManual = this.model.get('isManual');
const isCustom = this.model.has('templateKey');
- const isEditable = this.options.app.canWrite && (isManual || isCustom);
- let qualityProfilesVisible = !isManual;
-
- if (qualityProfilesVisible) {
- if (this.model.get('isTemplate')) {
- qualityProfilesVisible = !_.isEmpty(this.options.actives);
- }
- else {
- qualityProfilesVisible = (this.options.app.canWrite || !_.isEmpty(this.options.actives));
- }
+ const isEditable = this.options.app.canWrite && (isCustom);
+ let qualityProfilesVisible = true;
+
+ if (this.model.get('isTemplate')) {
+ qualityProfilesVisible = !_.isEmpty(this.options.actives);
}
return _.extend(Marionette.ItemView.prototype.serializeData.apply(this, arguments), {
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/rule/manual-rule-creation-view.js b/server/sonar-web/src/main/js/apps/coding-rules/rule/manual-rule-creation-view.js
deleted file mode 100644
index a34ad593ce6..00000000000
--- a/server/sonar-web/src/main/js/apps/coding-rules/rule/manual-rule-creation-view.js
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2016 SonarSource SA
- * mailto:contact AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-import $ from 'jquery';
-import _ from 'underscore';
-import ModalFormView from '../../../components/common/modal-form';
-import Template from '../templates/rule/coding-rules-manual-rule-creation.hbs';
-import latinize from '../../../helpers/latinize';
-import { translate } from '../../../helpers/l10n';
-
-export default ModalFormView.extend({
- template: Template,
-
- ui () {
- return _.extend(ModalFormView.prototype.ui.apply(this.arguments), {
- manualRuleCreationKey: '#coding-rules-manual-rule-creation-key',
- manualRuleCreationName: '#coding-rules-manual-rule-creation-name',
- manualRuleCreationHtmlDescription: '#coding-rules-manual-rule-creation-html-description',
- manualRuleCreationSeverity: '#coding-rules-manual-rule-creation-severity',
- manualRuleCreationStatus: '#coding-rules-manual-rule-creation-status',
- manualRuleCreationParameters: '[name]',
- manualRuleCreationCreate: '#coding-rules-manual-rule-creation-create',
- manualRuleCreationReactivate: '#coding-rules-manual-rule-creation-reactivate',
- modalFoot: '.modal-foot'
- });
- },
-
- events () {
- return _.extend(ModalFormView.prototype.events.apply(this.arguments), {
- 'input @ui.manualRuleCreationName': 'generateKey',
- 'keydown @ui.manualRuleCreationName': 'generateKey',
- 'keyup @ui.manualRuleCreationName': 'generateKey',
-
- 'input @ui.manualRuleCreationKey': 'flagKey',
- 'keydown @ui.manualRuleCreationKey': 'flagKey',
- 'keyup @ui.manualRuleCreationKey': 'flagKey',
-
- 'click #coding-rules-manual-rule-creation-cancel': 'hide',
- 'click @ui.manualRuleCreationCreate': 'create',
- 'click @ui.manualRuleCreationReactivate': 'reactivate'
- });
- },
-
- onRender () {
- ModalFormView.prototype.onRender.apply(this, arguments);
- this.keyModifiedByUser = false;
- this.ui.manualRuleCreationReactivate.addClass('hidden');
- },
-
- generateKey () {
- if (!this.keyModifiedByUser && this.ui.manualRuleCreationKey) {
- const generatedKey = latinize(this.ui.manualRuleCreationName.val()).replace(/[^A-Za-z0-9]/g, '_');
- this.ui.manualRuleCreationKey.val(generatedKey);
- }
- },
-
- flagKey () {
- this.keyModifiedByUser = true;
- },
-
- create () {
- const action = (this.model && this.model.has('key')) ? 'update' : 'create';
- const options = {
- name: this.ui.manualRuleCreationName.val(),
- markdown_description: this.ui.manualRuleCreationHtmlDescription.val()
- };
- if (action === 'update') {
- options.key = this.model.get('key');
- } else {
- options.manual_key = this.ui.manualRuleCreationKey.val();
- options.prevent_reactivation = true;
- }
- this.sendRequest(action, options);
- },
-
- reactivate () {
- const options = {
- name: this.existingRule.name,
- markdown_description: this.existingRule.mdDesc,
- manual_key: this.ui.manualRuleCreationKey.val(),
- prevent_reactivation: false
- };
- this.sendRequest('create', options);
- },
-
- sendRequest (action, options) {
- const that = this;
- const url = '/api/rules/' + action;
- return $.ajax({
- url,
- type: 'POST',
- data: options,
- statusCode: {
- // do not show global error
- 400: null
- }
- }).done(function (r) {
- if (typeof r === 'string') {
- r = JSON.parse(r);
- }
- that.options.app.controller.showDetails(r.rule.key);
- that.destroy();
- }).fail(function (jqXHR) {
- if (jqXHR.status === 409) {
- that.existingRule = jqXHR.responseJSON.rule;
- that.showErrors([], [{ msg: translate('coding_rules.reactivate.help') }]);
- that.ui.manualRuleCreationCreate.addClass('hidden');
- that.ui.manualRuleCreationReactivate.removeClass('hidden');
- } else {
- that.showErrors(jqXHR.responseJSON.errors, jqXHR.responseJSON.warnings);
- }
- });
- },
-
- serializeData () {
- return _.extend(ModalFormView.prototype.serializeData.apply(this, arguments), {
- change: this.model && this.model.has('key')
- });
- }
-});
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/rule/rule-description-view.js b/server/sonar-web/src/main/js/apps/coding-rules/rule/rule-description-view.js
index 80ddf0dd6b2..9ed27e3238f 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/rule/rule-description-view.js
+++ b/server/sonar-web/src/main/js/apps/coding-rules/rule/rule-description-view.js
@@ -93,7 +93,7 @@ export default Marionette.ItemView.extend({
},
serializeData () {
- const isEditable = this.options.app.canWrite && (this.model.get('isManual') || this.model.get('isCustom'));
+ const isEditable = this.options.app.canWrite && (this.model.get('isCustom'));
return _.extend(Marionette.ItemView.prototype.serializeData.apply(this, arguments), {
isEditable,
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/rule/rule-parameters-view.js b/server/sonar-web/src/main/js/apps/coding-rules/rule/rule-parameters-view.js
index 89a66d8ad03..205a43c58b6 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/rule/rule-parameters-view.js
+++ b/server/sonar-web/src/main/js/apps/coding-rules/rule/rule-parameters-view.js
@@ -33,7 +33,7 @@ export default Marionette.ItemView.extend({
},
serializeData () {
- const isEditable = this.options.app.canWrite && (this.model.get('isManual') || this.model.get('isCustom'));
+ const isEditable = this.options.app.canWrite && this.model.get('isCustom');
return _.extend(Marionette.ItemView.prototype.serializeData.apply(this, arguments), {
isEditable,
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/rule/rule-profiles-view.js b/server/sonar-web/src/main/js/apps/coding-rules/rule/rule-profiles-view.js
index 88c5dc208ea..e3abef640bf 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/rule/rule-profiles-view.js
+++ b/server/sonar-web/src/main/js/apps/coding-rules/rule/rule-profiles-view.js
@@ -45,16 +45,10 @@ export default Marionette.CompositeView.extend({
},
onRender () {
- const isManual = this.model.get('isManual');
- let qualityProfilesVisible = !isManual;
+ let qualityProfilesVisible = true;
- if (qualityProfilesVisible) {
- if (this.model.get('isTemplate')) {
- qualityProfilesVisible = this.collection.length > 0;
- }
- else {
- qualityProfilesVisible = (this.options.app.canWrite || this.collection.length > 0);
- }
+ if (this.model.get('isTemplate')) {
+ qualityProfilesVisible = this.collection.length > 0;
}
this.$el.toggleClass('hidden', !qualityProfilesVisible);
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/templates/coding-rules-filters.hbs b/server/sonar-web/src/main/js/apps/coding-rules/templates/coding-rules-filters.hbs
index fb62c872c25..e307b61b100 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/templates/coding-rules-filters.hbs
+++ b/server/sonar-web/src/main/js/apps/coding-rules/templates/coding-rules-filters.hbs
@@ -1,9 +1,3 @@
<h1 class="page-title">
{{t 'coding_rules.page'}}
</h1>
-
-{{#if canWrite}}
- <div class="pull-right button-group">
- <button class="js-create-manual-rule">{{t 'coding_rules.create_manual_rule'}}</button>
- </div>
-{{/if}}
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/templates/coding-rules-rule-details.hbs b/server/sonar-web/src/main/js/apps/coding-rules/templates/coding-rules-rule-details.hbs
index f889780e6c6..eba42ee65ef 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/templates/coding-rules-rule-details.hbs
+++ b/server/sonar-web/src/main/js/apps/coding-rules/templates/coding-rules-rule-details.hbs
@@ -5,11 +5,7 @@
{{#if isEditable}}
<div class="coding-rules-detail-description">
<div class="button-group">
- {{#if isManual}}
- <button class="js-edit-manual" id="coding-rules-detail-manual-rule-change">{{t 'edit'}}</button>
- {{else}}
- <button class="js-edit-custom" id="coding-rules-detail-custom-rule-change">{{t 'edit'}}</button>
- {{/if}}
+ <button class="js-edit-custom" id="coding-rules-detail-custom-rule-change">{{t 'edit'}}</button>
<button class="button-red js-delete" id="coding-rules-detail-rule-delete" class="button-red">{{t 'delete'}}</button>
</div>
</div>
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/templates/rule/coding-rules-manual-rule-creation.hbs b/server/sonar-web/src/main/js/apps/coding-rules/templates/rule/coding-rules-manual-rule-creation.hbs
deleted file mode 100644
index 858bebf3854..00000000000
--- a/server/sonar-web/src/main/js/apps/coding-rules/templates/rule/coding-rules-manual-rule-creation.hbs
+++ /dev/null
@@ -1,51 +0,0 @@
-<form>
- <div class="modal-head">
- {{#if change}}
- <h2>{{t 'coding_rules.update_manual_rule'}}</h2>
- {{else}}
- <h2>{{t 'coding_rules.create_manual_rule'}}</h2>
- {{/if}}
- </div>
-
- <div class="modal-body">
- <div class="alert alert-warning hidden">{{t 'coding_rules.reactivate.help'}}</div>
- <div class="js-modal-messages"></div>
-
- <table>
- <tr class="property">
- <th class="nowrap"><h3>{{t 'name'}} <em class="mandatory">*</em></h3></th>
- <td>
- <input type="text" name="name" id="coding-rules-manual-rule-creation-name"
- class="coding-rules-name-key" value="{{name}}"/>
- </td>
- </tr>
- <tr class="property">
- <th class="nowrap"><h3>{{t 'key'}}{{#unless change}} <em class="mandatory">*</em>{{/unless}}</h3></th>
- <td>
- {{#if change}}
- {{key}}
- {{else}}
- <input type="text" name="key" id="coding-rules-manual-rule-creation-key"
- class="coding-rules-name-key" value="{{internalKey}}"/>
- {{/if}}
- </td>
- </tr>
- <tr class="property">
- <th class="nowrap"><h3>{{t 'description'}} <em class="mandatory">*</em></h3></th>
- <td>
- <textarea name="markdown_description" id="coding-rules-manual-rule-creation-html-description"
- class="coding-rules-markdown-description" rows="15">{{{mdDesc}}}</textarea>
- <span class="text-right">{{> '../../../../components/common/templates/_markdown-tips' }}</span>
- </td>
- </tr>
- </table>
- </div>
-
- <div class="modal-foot">
- <button id="coding-rules-manual-rule-creation-create">
- {{#if change}}{{t 'save'}}{{else}}{{t 'create'}}{{/if}}
- </button>
- <button id="coding-rules-manual-rule-creation-reactivate">{{t 'coding_rules.reactivate'}}</button>
- <a id="coding-rules-manual-rule-creation-cancel" class="js-modal-close">{{t 'cancel'}}</a>
- </div>
-</form>
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/templates/rule/coding-rules-rule-description.hbs b/server/sonar-web/src/main/js/apps/coding-rules/templates/rule/coding-rules-rule-description.hbs
index f9ad18feb91..9992055a7c6 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/templates/rule/coding-rules-rule-description.hbs
+++ b/server/sonar-web/src/main/js/apps/coding-rules/templates/rule/coding-rules-rule-description.hbs
@@ -1,48 +1,46 @@
<div class="coding-rules-detail-description rule-desc markdown">{{{htmlDesc}}}</div>
{{#unless isEditable}}
- {{#unless isManual}}
- <div class="coding-rules-detail-description coding-rules-detail-description-extra">
- <div id="coding-rules-detail-description-extra">
- {{#if htmlNote}}
- <div class="rule-desc marginbottom10 markdown">{{{htmlNote}}}</div>
- {{/if}}
- {{#if canWrite}}
- <div class="button-group">
- <button id="coding-rules-detail-extend-description">{{t 'coding_rules.extend_description'}}</button>
- </div>
- {{/if}}
- </div>
-
+ <div class="coding-rules-detail-description coding-rules-detail-description-extra">
+ <div id="coding-rules-detail-description-extra">
+ {{#if htmlNote}}
+ <div class="rule-desc marginbottom10 markdown">{{{htmlNote}}}</div>
+ {{/if}}
{{#if canWrite}}
- <div class="coding-rules-detail-extend-description-form hidden">
- <table class="width100">
- <tbody>
- <tr>
- <td class="width100" colspan="2">
- <textarea id="coding-rules-detail-extend-description-text" rows="4"
- style="width: 100%; margin-bottom: 4px;">{{mdNote}}</textarea>
- </td>
- </tr>
- <tr>
- <td>
- <div class="button-group">
- <button id="coding-rules-detail-extend-description-submit">{{t 'save'}}</button>
- {{#if mdNote}}
- <button id="coding-rules-detail-extend-description-remove"
- class="button-red">{{t 'remove'}}</button>
- {{/if}}
- </div>
- <a id="coding-rules-detail-extend-description-cancel" class="action">{{t 'cancel'}}</a>
- </td>
- <td class="text-right">
- {{> '../../../../components/common/templates/_markdown-tips' }}
- </td>
- </tr>
- </tbody>
- </table>
+ <div class="button-group">
+ <button id="coding-rules-detail-extend-description">{{t 'coding_rules.extend_description'}}</button>
</div>
{{/if}}
</div>
- {{/unless}}
+
+ {{#if canWrite}}
+ <div class="coding-rules-detail-extend-description-form hidden">
+ <table class="width100">
+ <tbody>
+ <tr>
+ <td class="width100" colspan="2">
+ <textarea id="coding-rules-detail-extend-description-text" rows="4"
+ style="width: 100%; margin-bottom: 4px;">{{mdNote}}</textarea>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <div class="button-group">
+ <button id="coding-rules-detail-extend-description-submit">{{t 'save'}}</button>
+ {{#if mdNote}}
+ <button id="coding-rules-detail-extend-description-remove"
+ class="button-red">{{t 'remove'}}</button>
+ {{/if}}
+ </div>
+ <a id="coding-rules-detail-extend-description-cancel" class="action">{{t 'cancel'}}</a>
+ </td>
+ <td class="text-right">
+ {{> '../../../../components/common/templates/_markdown-tips' }}
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ {{/if}}
+ </div>
{{/unless}}
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/templates/rule/coding-rules-rule-meta.hbs b/server/sonar-web/src/main/js/apps/coding-rules/templates/rule/coding-rules-rule-meta.hbs
index 1b225182a0d..57503382826 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/templates/rule/coding-rules-rule-meta.hbs
+++ b/server/sonar-web/src/main/js/apps/coding-rules/templates/rule/coding-rules-rule-meta.hbs
@@ -15,17 +15,15 @@
</header>
<ul class="coding-rules-detail-properties">
- {{#unless isManual}}
- <li class="coding-rules-detail-property"
- data-toggle="tooltip" data-placement="bottom" title="{{t 'coding_rules.type.tooltip' this.type}}">
- {{issueType this.type}}
- </li>
+ <li class="coding-rules-detail-property"
+ data-toggle="tooltip" data-placement="bottom" title="{{t 'coding_rules.type.tooltip' this.type}}">
+ {{issueType this.type}}
+ </li>
- <li class="coding-rules-detail-property"
- data-toggle="tooltip" data-placement="bottom" title="Default rule severity">
- {{severityIcon severity}}&nbsp;{{t "severity" severity}}
- </li>
- {{/unless}}
+ <li class="coding-rules-detail-property"
+ data-toggle="tooltip" data-placement="bottom" title="Default rule severity">
+ {{severityIcon severity}}&nbsp;{{t "severity" severity}}
+ </li>
{{#notEq status 'READY'}}
<li class="coding-rules-detail-property"
@@ -54,8 +52,8 @@
<li class="coding-rules-detail-property">{{t 'coding_rules.available_since'}} {{d createdAt}}</li>
<li class="coding-rules-detail-property"
- data-toggle="tooltip" data-placement="bottom" title="Rule repository{{#unless isManual}} (language){{/unless}}">
- {{repoName}}{{#unless isManual}} ({{langName}}){{/unless}}
+ data-toggle="tooltip" data-placement="bottom" title="Rule repository{(language)">
+ {{repoName}}({{langName}})
</li>
{{#if isTemplate}}
diff --git a/server/sonar-web/src/main/js/components/workspace/templates/workspace-rule.hbs b/server/sonar-web/src/main/js/components/workspace/templates/workspace-rule.hbs
index 1618f444b62..230088e7e87 100644
--- a/server/sonar-web/src/main/js/components/workspace/templates/workspace-rule.hbs
+++ b/server/sonar-web/src/main/js/components/workspace/templates/workspace-rule.hbs
@@ -6,17 +6,15 @@
<ul class="coding-rules-detail-properties">
{{#if severity}}
- {{#unless isManual}}
- <li class="coding-rules-detail-property"
- data-toggle="tooltip" data-placement="bottom" title="{{t 'coding_rules.type.tooltip' this.type}}">
- {{issueType this.type}}
- </li>
-
- <li class="coding-rules-detail-property"
- data-toggle="tooltip" data-placement="bottom" title="Default rule severity">
- {{severityIcon severity}}&nbsp;{{t "severity" severity}}
- </li>
- {{/unless}}
+ <li class="coding-rules-detail-property"
+ data-toggle="tooltip" data-placement="bottom" title="{{t 'coding_rules.type.tooltip' this.type}}">
+ {{issueType this.type}}
+ </li>
+
+ <li class="coding-rules-detail-property"
+ data-toggle="tooltip" data-placement="bottom" title="Default rule severity">
+ {{severityIcon severity}}&nbsp;{{t "severity" severity}}
+ </li>
{{/if}}
{{#notEq status 'READY'}}