aboutsummaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorrr-2017-03-04 16:55:53 +0100
committerrr-2017-03-04 16:55:53 +0100
commit49feb932f35fbc5bdb6b09eb3f881a7c9df1e3ab (patch)
treee65dff331015a7bc4da99e61a925db8894f7bb9d /client
parent5681fd11efe93b5b2a1719f16c9f253ffd508842 (diff)
client/tags: merging can now also add aliases
Diffstat (limited to 'client')
-rw-r--r--client/html/tag_merge.tpl6
-rw-r--r--client/js/controllers/tag_controller.js23
-rw-r--r--client/js/models/tag.js10
-rw-r--r--client/js/views/tag_merge_view.js7
4 files changed, 32 insertions, 14 deletions
diff --git a/client/html/tag_merge.tpl b/client/html/tag_merge.tpl
index 90d8aa6..0ffbdd2 100644
--- a/client/html/tag_merge.tpl
+++ b/client/html/tag_merge.tpl
@@ -2,12 +2,14 @@
<form>
<ul class='input'>
<li class='target'>
- <%= ctx.makeTextInput({required: true, text: 'Target tag', pattern: ctx.tagNamePattern}) %>
+ <%= ctx.makeTextInput({name: 'target-tag', required: true, text: 'Target tag', pattern: ctx.tagNamePattern}) %>
</li>
<li>
<p>Usages in posts, suggestions and implications will be
- merged. Category and aliases need to be handled manually.</p>
+ merged. Category needs to be handled manually.</p>
+
+ <%= ctx.makeCheckbox({name: 'alias', text: 'Make this tag an alias of the target tag.'}) %>
<%= ctx.makeCheckbox({required: true, text: 'I confirm that I want to merge this tag.'}) %>
</li>
diff --git a/client/js/controllers/tag_controller.js b/client/js/controllers/tag_controller.js
index c1de3a3..d33e3d7 100644
--- a/client/js/controllers/tag_controller.js
+++ b/client/js/controllers/tag_controller.js
@@ -97,16 +97,19 @@ class TagController {
_evtMerge(e) {
this._view.clearMessages();
this._view.disableForm();
- e.detail.tag.merge(e.detail.targetTagName).then(() => {
- this._view.showSuccess('Tag merged.');
- this._view.enableForm();
- router.replace(
- uri.formatClientLink('tag', e.detail.targetTagName, 'merge'),
- null, false);
- }, error => {
- this._view.showError(error.message);
- this._view.enableForm();
- });
+ e.detail.tag
+ .merge(e.detail.targetTagName, e.detail.addAlias)
+ .then(() => {
+ this._view.showSuccess('Tag merged.');
+ this._view.enableForm();
+ router.replace(
+ uri.formatClientLink(
+ 'tag', e.detail.targetTagName, 'merge'),
+ null, false);
+ }, error => {
+ this._view.showError(error.message);
+ this._view.enableForm();
+ });
}
_evtDelete(e) {
diff --git a/client/js/models/tag.js b/client/js/models/tag.js
index 1a15693..ccfe6b2 100644
--- a/client/js/models/tag.js
+++ b/client/js/models/tag.js
@@ -75,7 +75,7 @@ class Tag extends events.EventTarget {
});
}
- merge(targetName) {
+ merge(targetName, addAlias) {
return api.get(uri.formatApiLink('tag', targetName))
.then(response => {
return api.post(uri.formatApiLink('tag-merge'), {
@@ -85,6 +85,14 @@ class Tag extends events.EventTarget {
mergeTo: targetName,
});
}).then(response => {
+ if (!addAlias) {
+ return Promise.resolve(response);
+ }
+ return api.put(uri.formatApiLink('tag', targetName), {
+ version: response.version,
+ names: response.names.concat(this._names),
+ });
+ }).then(response => {
this._updateFromResponse(response);
this.dispatchEvent(new CustomEvent('change', {
detail: {
diff --git a/client/js/views/tag_merge_view.js b/client/js/views/tag_merge_view.js
index 711716c..87ffb47 100644
--- a/client/js/views/tag_merge_view.js
+++ b/client/js/views/tag_merge_view.js
@@ -51,6 +51,7 @@ class TagMergeView extends events.EventTarget {
detail: {
tag: this._tag,
targetTagName: this._targetTagFieldNode.value,
+ addAlias: this._addAliasCheckboxNode.checked,
},
}));
}
@@ -60,7 +61,11 @@ class TagMergeView extends events.EventTarget {
}
get _targetTagFieldNode() {
- return this._formNode.querySelector('.target input');
+ return this._formNode.querySelector('input[name=target-tag]');
+ }
+
+ get _addAliasCheckboxNode() {
+ return this._formNode.querySelector('input[name=alias]');
}
}

© 2015 - 2026 Jakob L. Kreuze