Added tag name changing

This commit is contained in:
Marcin Kurczewski
2014-10-10 09:53:05 +02:00
parent 74e6e008dc
commit 672185f959
13 changed files with 199 additions and 13 deletions

View File

@ -43,6 +43,7 @@ App.Auth = function(_, jQuery, util, api, appState, promise) {
listTags: 'listTags',
massTag: 'massTag',
changeTagName: 'changeTagName',
viewHistory: 'viewHistory',
};

View File

@ -6,19 +6,28 @@ App.Presenters.TagPresenter = function(
jQuery,
util,
promise,
auth,
api,
router,
keyboard,
topNavigationPresenter) {
topNavigationPresenter,
messagePresenter) {
var $el = jQuery('#content');
var $messages = $el;
var templates = {};
var tag;
var tagName;
var privileges = {};
function init(params, loaded) {
topNavigationPresenter.select('tags');
topNavigationPresenter.changeTitle('Tags');
privileges.canChangeName = auth.hasPrivilege(auth.privileges.changeTagName);
promise.wait(
util.promiseTemplate('tag'),
util.promiseTemplate('post-list-item'))
@ -33,22 +42,50 @@ App.Presenters.TagPresenter = function(
function reinit(params, loaded) {
tagName = params.tagName;
render();
loaded();
messagePresenter.hideMessages($messages);
promise.wait(api.get('posts', {query: tagName}))
.then(function(response) {
var posts = response.json.data;
promise.wait(
api.get('tags/' + tagName),
api.get('posts', {query: tagName}))
.then(function(tagResponse, postsResponse) {
tag = tagResponse.json;
var posts = postsResponse.json.data;
posts = posts.slice(0, 8);
render();
loaded();
renderPosts(posts);
}).fail(function(response) {
console.log(new Error(response));
}).fail(function(tagResponse, postsResponse) {
messagePresenter.showError($messages, tagResponse.json.error || postsResponse.json.error);
loaded();
});
}
function render() {
$el.html(templates.tag({tagName: tagName}));
$el.html(templates.tag({privileges: privileges, tag: tag, tagName: tagName}));
$el.find('.post-list').hide();
$el.find('form').submit(editFormSubmitted);
}
function editFormSubmitted(e) {
e.preventDefault();
var $form = $el.find('form');
var formData = {};
if (privileges.canChangeName) {
formData.name = $form.find('[name=name]').val();
}
promise.wait(api.put('/tags/' + tag.name, formData))
.then(function(response) {
tag = response.json;
render();
router.navigate('#/tag/' + tag.name);
}).fail(function(response) {
console.log(response);
window.alert('An error occurred');
});
}
function renderPosts(posts) {
@ -76,4 +113,4 @@ App.Presenters.TagPresenter = function(
};
App.DI.register('tagPresenter', ['_', 'jQuery', 'util', 'promise', 'api', 'keyboard', 'topNavigationPresenter'], App.Presenters.TagPresenter);
App.DI.register('tagPresenter', ['_', 'jQuery', 'util', 'promise', 'auth', 'api', 'router', 'keyboard', 'topNavigationPresenter', 'messagePresenter'], App.Presenters.TagPresenter);