summaryrefslogtreecommitdiff
path: root/client/js/controllers
diff options
context:
space:
mode:
authorHunternif <hunternif@gmail.com>2019-05-07 21:47:08 +0700
committerHunternif <hunternif@gmail.com>2019-05-07 21:47:08 +0700
commit684e5e5ddcb69cb80742dc6b43e5d6ea092d89d0 (patch)
tree9148e62774897437baf66eaa6ae952d4e8be3095 /client/js/controllers
parent67ba7981b6eeb859bbb69277ec9bd77d16903c0d (diff)
client: tags with categories are saved immediately after input, in all places: upload page, post editor, bulk tag editor
Diffstat (limited to 'client/js/controllers')
-rw-r--r--client/js/controllers/post_list_controller.js16
-rw-r--r--client/js/controllers/post_main_controller.js23
-rw-r--r--client/js/controllers/post_upload_controller.js23
3 files changed, 12 insertions, 50 deletions
diff --git a/client/js/controllers/post_list_controller.js b/client/js/controllers/post_list_controller.js
index a7a5793..9dffbf2 100644
--- a/client/js/controllers/post_list_controller.js
+++ b/client/js/controllers/post_list_controller.js
@@ -4,6 +4,7 @@ const router = require('../router.js');
const api = require('../api.js');
const settings = require('../models/settings.js');
const uri = require('../util/uri.js');
+const tags = require('../tags.js');
const PostList = require('../models/post_list.js');
const topNavigation = require('../models/top_navigation.js');
const PageController = require('../controllers/page_controller.js');
@@ -66,20 +67,27 @@ class PostListController {
router.showNoDispatch(
uri.formatClientLink('posts', e.detail.parameters));
Object.assign(this._ctx.parameters, e.detail.parameters);
+ this._bulkEditTags.map(tagName =>
+ tags.resolveTagAndCategory(tagName)
+ .catch(error => window.alert(error.message))
+ );
this._syncPageController();
}
_evtTag(e) {
Promise.all(
- this._bulkEditTags.map(tag =>
- e.detail.post.tags.addByName(tag)))
- .then(e.detail.post.save())
+ this._bulkEditTags.map(tag => {
+ let tagData = tags.parseTagAndCategory(tag);
+ return e.detail.post.tags.addByName(tagData.name);
+ }))
+ .then(() => e.detail.post.save())
.catch(error => window.alert(error.message));
}
_evtUntag(e) {
for (let tag of this._bulkEditTags) {
- e.detail.post.tags.removeByName(tag);
+ let tagData = tags.parseTagAndCategory(tag);
+ e.detail.post.tags.removeByName(tagData.name);
}
e.detail.post.save().catch(error => window.alert(error.message));
}
diff --git a/client/js/controllers/post_main_controller.js b/client/js/controllers/post_main_controller.js
index 2adf33b..1f802c6 100644
--- a/client/js/controllers/post_main_controller.js
+++ b/client/js/controllers/post_main_controller.js
@@ -153,29 +153,6 @@ class PostMainController extends BasePostController {
}
post.save()
.then(() => {
- this._view.sidebarControl.showSuccess('Post saved.');
- // now save the new tags with categories
- if (!e.detail.newTags) {
- return Promise.resolve();
- }
- let tagPromises = [];
- for (let newTag of e.detail.newTags) {
- // load the tag that was created during updating the post
- tagPromises.push(
- Tag.get(newTag.names[0]).then(tag => {
- tag.category = newTag.category;
- return tag.save();
- }
- ).then(() => {
- e.detail.newTags.removeByName(newTag.names[0]);
- }, error => {
- this._view.sidebarControl.showError(error.message);
- })
- );
- }
- return Promise.all(tagPromises);
- })
- .then(() => {
this._view.sidebarControl.enableForm();
misc.disableExitConfirmation();
}, error => {
diff --git a/client/js/controllers/post_upload_controller.js b/client/js/controllers/post_upload_controller.js
index 4982530..f176803 100644
--- a/client/js/controllers/post_upload_controller.js
+++ b/client/js/controllers/post_upload_controller.js
@@ -65,29 +65,6 @@ class PostUploadController {
uploadable, e.detail.skipDuplicates, e.detail.copyTagsToOriginals)),
Promise.resolve())
.then(() => {
- // now save the new tags with categories
- //TODO: re-use this code in post_main_controller.js
- if (!e.detail.newTags) {
- return Promise.resolve();
- }
- let tagPromises = [];
- for (let newTag of e.detail.newTags) {
- // load the tag that was created during updating the post
- tagPromises.push(
- Tag.get(newTag.names[0]).then(tag => {
- tag.category = newTag.category;
- return tag.save();
- }
- ).then(() => {
- e.detail.newTags.removeByName(newTag.names[0]);
- }, error => {
- tagErrors.push(error.message);
- })
- );
- }
- return Promise.all(tagPromises);
- })
- .then(() => {
this._view.clearMessages();
misc.disableExitConfirmation();
const ctx = router.show(uri.formatClientLink('posts'));