diff options
| author | rr- | 2017-03-04 16:55:53 +0100 |
|---|---|---|
| committer | rr- | 2017-03-04 16:55:53 +0100 |
| commit | 49feb932f35fbc5bdb6b09eb3f881a7c9df1e3ab (patch) | |
| tree | e65dff331015a7bc4da99e61a925db8894f7bb9d /client | |
| parent | 5681fd11efe93b5b2a1719f16c9f253ffd508842 (diff) | |
client/tags: merging can now also add aliases
Diffstat (limited to 'client')
| -rw-r--r-- | client/html/tag_merge.tpl | 6 | ||||
| -rw-r--r-- | client/js/controllers/tag_controller.js | 23 | ||||
| -rw-r--r-- | client/js/models/tag.js | 10 | ||||
| -rw-r--r-- | client/js/views/tag_merge_view.js | 7 |
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]'); } } |