mirror of
https://github.com/rr-/szurubooru.git
synced 2025-07-17 08:26:24 +00:00
Added tag presenter
This commit is contained in:
@ -6,6 +6,7 @@ App.Presenters.TagListPresenter = function(
|
||||
jQuery,
|
||||
util,
|
||||
promise,
|
||||
keyboard,
|
||||
pagerPresenter,
|
||||
topNavigationPresenter) {
|
||||
|
||||
@ -52,6 +53,11 @@ App.Presenters.TagListPresenter = function(
|
||||
page: searchArgs.page,
|
||||
searchParams: {
|
||||
order: searchArgs.order}});
|
||||
|
||||
keyboard.keyup('p', function() {
|
||||
$el.find('table a').eq(0).focus();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function deinit() {
|
||||
@ -92,4 +98,4 @@ App.Presenters.TagListPresenter = function(
|
||||
|
||||
};
|
||||
|
||||
App.DI.register('tagListPresenter', ['_', 'jQuery', 'util', 'promise', 'pagerPresenter', 'topNavigationPresenter'], App.Presenters.TagListPresenter);
|
||||
App.DI.register('tagListPresenter', ['_', 'jQuery', 'util', 'promise', 'keyboard', 'pagerPresenter', 'topNavigationPresenter'], App.Presenters.TagListPresenter);
|
||||
|
77
public_html/js/Presenters/TagPresenter.js
Normal file
77
public_html/js/Presenters/TagPresenter.js
Normal file
@ -0,0 +1,77 @@
|
||||
var App = App || {};
|
||||
App.Presenters = App.Presenters || {};
|
||||
|
||||
App.Presenters.TagPresenter = function(
|
||||
_,
|
||||
jQuery,
|
||||
util,
|
||||
promise,
|
||||
api,
|
||||
keyboard,
|
||||
topNavigationPresenter) {
|
||||
|
||||
var $el = jQuery('#content');
|
||||
var templates = {};
|
||||
|
||||
var tagName;
|
||||
|
||||
function init(args, loaded) {
|
||||
topNavigationPresenter.select('tags');
|
||||
topNavigationPresenter.changeTitle('Tags');
|
||||
|
||||
promise.wait(
|
||||
util.promiseTemplate('tag'),
|
||||
util.promiseTemplate('post-list-item'))
|
||||
.then(function(tagTemplate, postListItemTemplate) {
|
||||
templates.tag = tagTemplate;
|
||||
templates.postListItem = postListItemTemplate;
|
||||
|
||||
reinit(args, loaded);
|
||||
});
|
||||
}
|
||||
|
||||
function reinit(args, loaded) {
|
||||
tagName = args.tagName;
|
||||
|
||||
render();
|
||||
loaded();
|
||||
|
||||
promise.wait(api.get('posts', {query: tagName}))
|
||||
.then(function(response) {
|
||||
var posts = response.json.data;
|
||||
posts = posts.slice(0, 8);
|
||||
renderPosts(posts);
|
||||
}).fail(function(response) {
|
||||
console.log(new Error(response));
|
||||
});
|
||||
}
|
||||
|
||||
function render() {
|
||||
$el.html(templates.tag({tagName: tagName}));
|
||||
$el.find('.post-list').hide();
|
||||
}
|
||||
|
||||
function renderPosts(posts) {
|
||||
var $target = $el.find('.post-list ul');
|
||||
_.each(posts, function(post) {
|
||||
var $post = jQuery('<li>' + templates.postListItem({
|
||||
post: post,
|
||||
searchArgs: {query: tagName},
|
||||
}) + '</li>');
|
||||
$target.append($post);
|
||||
});
|
||||
if (posts.length > 0) {
|
||||
$el.find('.post-list').fadeIn();
|
||||
keyboard.keyup('p', function() {
|
||||
$el.find('.post-list a').eq(0).focus();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
init: init,
|
||||
reinit: reinit,
|
||||
};
|
||||
};
|
||||
|
||||
App.DI.register('tagPresenter', ['_', 'jQuery', 'util', 'promise', 'api', 'keyboard', 'topNavigationPresenter'], App.Presenters.TagPresenter);
|
@ -42,6 +42,7 @@ App.Router = function(pathJs, _, jQuery, promise, util, appState, presenterManag
|
||||
inject('#/post(/:postNameOrId)(/:searchArgs)', 'postPresenter');
|
||||
inject('#/comments(/:searchArgs)', 'globalCommentListPresenter');
|
||||
inject('#/tags(/:searchArgs)', 'tagListPresenter');
|
||||
inject('#/tag(/:tagName)', 'tagPresenter');
|
||||
inject('#/help', 'helpPresenter');
|
||||
setRoot('#/home');
|
||||
}
|
||||
|
Reference in New Issue
Block a user