mirror of
https://github.com/rr-/szurubooru.git
synced 2025-07-17 08:26:24 +00:00
Added post featuring
This commit is contained in:
@ -24,6 +24,7 @@ App.Auth = function(_, jQuery, util, api, appState, promise) {
|
||||
uploadPosts: 'uploadPosts',
|
||||
uploadPostsAnonymously: 'uploadPostsAnonymously',
|
||||
deletePosts: 'deletePosts',
|
||||
featurePosts: 'featurePosts',
|
||||
|
||||
listTags: 'listTags',
|
||||
};
|
||||
|
@ -2,20 +2,50 @@ var App = App || {};
|
||||
App.Presenters = App.Presenters || {};
|
||||
|
||||
App.Presenters.HomePresenter = function(
|
||||
_,
|
||||
jQuery,
|
||||
topNavigationPresenter) {
|
||||
util,
|
||||
promise,
|
||||
api,
|
||||
topNavigationPresenter,
|
||||
messagePresenter) {
|
||||
|
||||
var $el = jQuery('#content');
|
||||
var homeTemplate;
|
||||
var postContentTemplate;
|
||||
var post;
|
||||
|
||||
function init(args, loaded) {
|
||||
topNavigationPresenter.select('home');
|
||||
topNavigationPresenter.changeTitle('Home');
|
||||
render();
|
||||
loaded();
|
||||
|
||||
promise.waitAll(
|
||||
util.promiseTemplate('home'),
|
||||
util.promiseTemplate('post-content'),
|
||||
api.get('/posts/featured'))
|
||||
.then(function(
|
||||
homeTemplateHtml,
|
||||
postContentTemplateHtml,
|
||||
response) {
|
||||
homeTemplate = _.template(homeTemplateHtml);
|
||||
postContentTemplate = _.template(postContentTemplateHtml);
|
||||
|
||||
post = response.json;
|
||||
render();
|
||||
loaded();
|
||||
|
||||
}).fail(function(response) {
|
||||
messagePresenter.showError($el, response.json && response.json.error || response);
|
||||
});
|
||||
}
|
||||
|
||||
function render() {
|
||||
$el.html('Home placeholder');
|
||||
$el.html(homeTemplate({
|
||||
post: post,
|
||||
postContentTemplate: postContentTemplate,
|
||||
title: topNavigationPresenter.getBaseTitle(),
|
||||
formatRelativeTime: util.formatRelativeTime,
|
||||
}));
|
||||
}
|
||||
|
||||
return {
|
||||
@ -25,4 +55,4 @@ App.Presenters.HomePresenter = function(
|
||||
|
||||
};
|
||||
|
||||
App.DI.register('homePresenter', ['jQuery', 'topNavigationPresenter'], App.Presenters.HomePresenter);
|
||||
App.DI.register('homePresenter', ['_', 'jQuery', 'util', 'promise', 'api', 'topNavigationPresenter', 'messagePresenter'], App.Presenters.HomePresenter);
|
||||
|
@ -25,6 +25,7 @@ App.Presenters.PostPresenter = function(
|
||||
topNavigationPresenter.select('posts');
|
||||
|
||||
privileges.canDeletePosts = auth.hasPrivilege(auth.privileges.deletePosts);
|
||||
privileges.canFeaturePosts = auth.hasPrivilege(auth.privileges.featurePosts);
|
||||
|
||||
promise.waitAll(
|
||||
util.promiseTemplate('post'),
|
||||
@ -34,7 +35,6 @@ App.Presenters.PostPresenter = function(
|
||||
postTemplateHtml,
|
||||
postContentTemplateHtml,
|
||||
response) {
|
||||
$messages = $el.find('.messages');
|
||||
postTemplate = _.template(postTemplateHtml);
|
||||
postContentTemplate = _.template(postContentTemplateHtml);
|
||||
|
||||
@ -45,7 +45,7 @@ App.Presenters.PostPresenter = function(
|
||||
|
||||
}).fail(function(response) {
|
||||
$el.empty();
|
||||
messagePresenter.showError($messages, response.json && response.json.error || response);
|
||||
showGenericError(response);
|
||||
});
|
||||
}
|
||||
|
||||
@ -57,23 +57,45 @@ App.Presenters.PostPresenter = function(
|
||||
postContentTemplate: postContentTemplate,
|
||||
privileges: privileges,
|
||||
}));
|
||||
$messages = $el.find('.messages');
|
||||
|
||||
$el.find('.delete').click(deleteButtonClicked);
|
||||
$el.find('.feature').click(featureButtonClicked);
|
||||
}
|
||||
|
||||
function deleteButtonClicked(e) {
|
||||
e.preventDefault();
|
||||
messagePresenter.hideMessages($messages);
|
||||
if (window.confirm('Do you really want to delete this post?')) {
|
||||
deletePost();
|
||||
}
|
||||
}
|
||||
|
||||
function deletePost() {
|
||||
api.delete('/posts/' + post.id).then(function(response) {
|
||||
router.navigate('#/posts');
|
||||
}).fail(function(response) {
|
||||
messagePresenter.showError($messages, response.json && response.json.error || response);
|
||||
});
|
||||
api.delete('/posts/' + post.id)
|
||||
.then(function(response) {
|
||||
router.navigate('#/posts');
|
||||
}).fail(showGenericError);
|
||||
}
|
||||
|
||||
function featureButtonClicked(e) {
|
||||
e.preventDefault();
|
||||
messagePresenter.hideMessages($messages);
|
||||
if (window.confirm('Do you want to feature this post on fron page?')) {
|
||||
featurePost();
|
||||
}
|
||||
}
|
||||
|
||||
function featurePost() {
|
||||
api.post('/posts/' + post.id + '/feature')
|
||||
.then(function(response) {
|
||||
router.navigate('#/home');
|
||||
})
|
||||
.fail(showGenericError);
|
||||
}
|
||||
|
||||
function showGenericError(response) {
|
||||
messagePresenter.showError($messages, response.json && response.json.error || response);
|
||||
}
|
||||
|
||||
return {
|
||||
|
@ -47,6 +47,10 @@ App.Presenters.TopNavigationPresenter = function(
|
||||
$el.find('li.' + selectedElement).find('a').addClass('active');
|
||||
}
|
||||
|
||||
function getBaseTitle() {
|
||||
return baseTitle;
|
||||
}
|
||||
|
||||
function changeTitle(subTitle) {
|
||||
var newTitle = baseTitle;
|
||||
if (subTitle) {
|
||||
@ -59,6 +63,7 @@ App.Presenters.TopNavigationPresenter = function(
|
||||
init: init,
|
||||
render: render,
|
||||
select: select,
|
||||
getBaseTitle: getBaseTitle,
|
||||
changeTitle: changeTitle,
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user