jQuery(function($) { "use strict"; var TEMPLATES = new LuigiTemplate.Cache({ post: [ "", "", "", "", "", "%{name|h}", " ", "%{label}", "", "", "", "%{site_name|h}", "", "", "", "%{post_url}", "", "", "", "%{user_name|h}", "", "", "", "%{created_at_text|h}", "", "", "%{posted_at_text|h}", "", "", ], post_url: [ "", "%{post_url|h}", "", ], post_slug: [ "%{slug|h}", ], error: [ "", "", "", " ", "Error: %{error|h}", "", "", ], }); // FIXME: move this to DATA as well? var POST_STATES = { draft: { css: 'bg-warning', label: [ " ", "", ].join(''), }, deleted: { css: 'bg-danger', label: [ " ", "", ].join(''), }, }; function reload() { $('#posts-reload').addClass('disabled') .find('.loading').toggleClass('hidden'); send('post/get_posts', { type: $('#posts-filter-type li.active a').data('id'), state: $('#posts-filter-state li.active a').data('id'), user_id: $('#posts-filter-user li.active a').data('id'), 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 tbody').html(TEMPLATES.run('error', { error: error, })); }).done(function(r) { $('#posts tbody').html($.map(r.rows, function(row) { var css = '', label = ''; if (POST_STATES[row.state]) { css = POST_STATES[row.state].css; label = POST_STATES[row.state].label; } var post_url = 'n/a'; if (row.post_url) { post_url = TEMPLATES.run('post_url', row); } else { post_url = TEMPLATES.run('post_slug', row); } return TEMPLATES.run('post', $.extend(row, { css: css, label: label, icon: DATA.post_types[row.post_type].icon, post_url: post_url, })); }).join('')); }); } $('#admin-tab-posts').on('show.bs.tab', function() { $('#posts-reload').click(); }); $('.add-post').click(function() { var type = $(this).data('type'); // dismiss dropdown $('body').trigger('click'); send(type + '/add').fail(function(r) { gripe(r, 'add ' + type); }).done(function(r) { // show edit dialog $('#' + type + '-edit-dialog').data('post_id', r.post_id).modal('show') }); // stop event return false; }); $('#posts-reload').click(function() { reload(); // stop event return false; }); $('#posts-q').on('search-update', function() { reload(); }); $('.posts-filter-menu').on('guff.choose', function() { // reload posts reload(); }); $('#posts').on('click', 'a.edit', function() { var data = $(this).data(); if (data.edit == 'user') { $('#user-edit-dialog').data(data).modal('show'); } else if (data.edit == 'site') { alert('TODO: edit site'); } // stop event return false; }); $('#posts').on('click', 'a.link', function() { open($(this).attr('href')); // stop event return false; }); $('#posts').on('click', 'tbody tr[data-post_id]', function() { var data = $(this).data(); $('#' + data.post_type + '-edit-dialog') .data('post_id', data.post_id) .modal('show'); // stop event return false; }); });