diff options
Diffstat (limited to 'data/assets/js/admin/tabs/posts.js')
-rw-r--r-- | data/assets/js/admin/tabs/posts.js | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/data/assets/js/admin/tabs/posts.js b/data/assets/js/admin/tabs/posts.js index 03f3483..83db403 100644 --- a/data/assets/js/admin/tabs/posts.js +++ b/data/assets/js/admin/tabs/posts.js @@ -2,6 +2,62 @@ jQuery(function($) { "use strict"; var TEMPLATES = new LuigiTemplate.Cache({ + post: [ + "<a ", + "href='#' ", + "class='list-group-item' ", + "data-post_id='%{post_id|h}' ", + "data-post_type='%{post_type|h}' ", + "title='Edit %{post_type} %{post_id|h}.' ", + ">", + "%{name|h}", + " ", + "(slug = %{slug|h}, state = %{state|h}, type = %{post_type|h})", + "</a>", + ], + + error: [ + "<span class='list-group-item list-group-item-danger disabled'>", + "<i class='fa fa-exclamation-triangle'></i>", + " ", + "Error: %{error|h}", + "</span>", + ], + }); + + function reload() { + $('#posts-reload').addClass('disabled') + .find('.loading').toggleClass('hidden'); + + send('post/get_posts', { + q: $('#posts-q').data('q'), + page: 1, + }).always(function() { + $('#posts-reload').removeClass('disabled') + .find('.loading').toggleClass('hidden'); + }).fail(function(r) { + var error = r.responseText; + + try { + var data = $.parseJSON(r.responseText); + if (data.error) + error = data.error; + } catch (e) {} + + $('#posts').html(TEMPLATES.run('error', { + error: error, + })); + }).done(function(r) { + console.log(r); + + $('#posts').html($.map(r.rows, function(row) { + return TEMPLATES.run('post', row); + }).join('')); + }); + } + + $('#admin-tab-posts').on('show.bs.tab', function() { + $('#posts-reload').click(); }); $('.add-post').click(function() { @@ -30,4 +86,26 @@ jQuery(function($) { // stop event return false; }); + + $('#posts-reload').click(function() { + reload(); + + // stop event + return false; + }); + + $('#posts-q').on('search-update', function() { + reload(); + }); + + $('#posts').on('click', 'a', function() { + var data = $(this).data(); + + $('#' + data.post_type + '-edit-dialog') + .data('post_id', data.post_id) + .modal('show'); + + // stop event + return false; + }); }); |