diff options
Diffstat (limited to 'public/assets/js/admin/pages.js')
| -rw-r--r-- | public/assets/js/admin/pages.js | 240 |
1 files changed, 0 insertions, 240 deletions
diff --git a/public/assets/js/admin/pages.js b/public/assets/js/admin/pages.js deleted file mode 100644 index 4aa02ca..0000000 --- a/public/assets/js/admin/pages.js +++ /dev/null @@ -1,240 +0,0 @@ -// Globals -// ----------------------------------------------------------------------------- -var categories = []; -var privileges = [ { id: 0, label: 'Δημόσιο' } ]; -var pages = []; -var table; - - - -// Supplamentary functions -// ----------------------------------------------------------------------------- - -// array.indexOf polyfill -// --- -- -- - - - -if (!Array.prototype.indexOf) -{ - Array.prototype.indexOf = function(elt /*, from*/) - { - var len = this.length >>> 0; - - var from = Number(arguments[1]) || 0; - from = (from < 0) - ? Math.ceil(from) - : Math.floor(from); - if (from < 0) - from += len; - - for (; from < len; from++) - { - if (from in this && - this[from] === elt) - return from; - } - return -1; - }; -} - - -// function for sorting an array by 'label' attribute -// --- -- -- - - - -function compare_label (a,b) { - if ( a.label < b.label ) { return -1; } - if ( a.label > b.label ) { return 1; } - return 0; -} - - -// function for sorting an array by 'breadcrumb' attribute -// --- -- -- - - - -function compare_breadcrumb (a,b) { - if ( a.breadcrumb < b.breadcrumb ) { return -1; } - if ( a.breadcrumb > b.breadcrumb ) { return 1; } - return 0; -} - -// return category record by category-id -// --- -- -- - - - -function page_record(id) { - var record = 0; - pages.forEach(el => { if (el.id == id) record = el; }); - - return record; -} - - -// create actions html (edit and delete buttons) -// --- -- -- - - - -function create_actions_html(el) { - - var pub, del, edit; - - // preapre [show|hide]-file as reference - if (el.status == 1) { - pub = '<span class="btn btn-sm"><i class="fas fa-eye"></i></span>'; - - } else { - pub = '<span class="btn btn-sm"><i class="fas fa-eye-slash"></i></span>'; - } - - del = ""; - - fast_edit = [ - '<button type="button" class="btn btn-sm btn-light"', - 'data-bs-toggle="modal" data-bs-target="#managePages"', - 'data-id="'+ el.id +'">', - '<i class="fa-solid fa-bolt"></i>', - '</button>' - ].join('\n'); - - edit = [ - '<a type="button" class="btn btn-sm btn-warning "', - 'href="/admin/edit_page/'+ el.id +'">', - '<i class="fas fa-pencil-alt"></i>', - '</a>' - ].join('\n'); - - return pub +' '+ fast_edit +' '+ edit +' '+ del; -} - - - -$(document).ready(function() { - - // When document is ready - // ------------------------------------------------------------------------- - - - /** init_table - * --- -- -- - - - - * get categories - * constuct categories array - * render dataTable - */ - function init_table() { - - // get all categories from server (ajax) - $.getJSON( "/admin/api/pages") - .done(function( json ) { - // then ... - - // reset categories - pages.length = 0; - - // construct (new) categories data - Object.keys(json).forEach( key => { - el = json[key]; - pages.push({ - id: parseInt(el.id), - title: el.title, - actions: create_actions_html(el) - }); - }); - - // sort by breadcrumb - // categories.sort( compare_breadcrumb ); - - // destroy previous datatable table instances - $('#dt-pages').dataTable().fnClearTable(); - $('#dt-pages').dataTable().fnDestroy(); - - // (re-)create categories datatable - table = $('#dt-pages').DataTable({ - language: { url: '/libs/DataTables/localization/Greek.json' }, - data: pages, - ordering: false, - columns: [ - { data: 'id' }, - { data: 'title' }, - { data: 'actions' } - ] - }); - - }) - .fail(function( jqxhr, textStatus, error ) { - console.log( "Request Failed (" + error +")" ); - }); - - } - init_table(); // init table on first run - - - - /** When modal show-up - * ------------------------------------------------------------------------- - * ... prepare the manage-category form - * ... update select2 with possible parents - */ - $('#managePages').on('show.bs.modal', event => { - var button = $(event.relatedTarget); // Button that triggered the modal - var id = parseInt( button.data('id') ); // category_id from data-id - // var modal = $(this); // modal object - - //// update modal literature - //// --- - //$('#manageCategory .modal-title').html( // modal title - // (id) ? 'Ενημέρωση Κατηγορίας' : 'Δημιουργία Κατηγορίας' - //); - //$('#manageCategory form input[name=id]').val( id ); // category id (hidden) - //$('#manageCategory form input[name=label]').val( // category label - // (id) ? category_record(id).label : "" - //); - //prepare_parents_element(id); // prepare <select> for parents - }) - - - /** set_parent_options() - * - * -> create options for parents <select> - * -> choose selected parent - * - * NOTE: - * the targer <select> should be a select2 control - * - * @param parents (array): array of parents - * @param selected (int): selected parent - */ - function set_parent_options(selector, list, selected_value = false) { - - list.forEach( li => { // attach options into <select> control - selector.append(`<option value="${li.id}">${li.label}</option>`); - }); - - if (selected_value !== false) { // mark selected option(s) - selector.val(selected_value).trigger('change'); - } - else { selector.val(null).trigger('change'); } - } - - - - - - // When form is submited - // ------------------------------------------------------------------------- - - $('#manageCategory form').submit( event => { - event.preventDefault(); - - // prepare data to POST - var data = { - id: parseInt($('#manageCategory form input[name=id]').val()), - label: $('#manageCategory form input[name=label]').val(), - parent_id: parseInt($('#parent_id').select2('data')[0].id) - }; - - // select action url (add or update) - var request = '/admin/api/categories/' + ((data.id == 0) ? 'add' : 'update'); - - // send POST request - $.post(request, data) - .done(function( data ) { - - $('#manageCategory').modal('hide'); // when done, close modal - - init_table(); // reload table of categories - }); - - }); - -}); |
