Advertisement
koki2000

categories.js

Jul 17th, 2018
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. jQuery.noConflict();
  2. jQuery(document).ready(function ($) {
  3.     var admin_forum_categories = $('#admin_forum_categories');
  4.  
  5.     var modal_message_text = $('#modal-message-text');
  6.     var message_modal = $('#message-modal');
  7.  
  8.     /*
  9.     * http://jsfiddle.net/gyrocode/abhbs4x8/
  10.     * Updates "Select all" control in a data table
  11.     * */
  12.     function updateDataTableSelectAllCtrl(table){
  13.         var $table             = table.table().node();
  14.         var $chkbox_all        = $('tbody input[type="checkbox"]', $table);
  15.         var $chkbox_checked    = $('tbody input[type="checkbox"]:checked', $table);
  16.         var chkbox_select_all  = $('thead input[name="select_all"]', $table).get(0);
  17.  
  18.         // If none of the checkboxes are checked
  19.         if($chkbox_checked.length === 0){
  20.             chkbox_select_all.checked = false;
  21.             if('indeterminate' in chkbox_select_all){
  22.                 chkbox_select_all.indeterminate = false;
  23.             }
  24.  
  25.             // If all of the checkboxes are checked
  26.         } else if ($chkbox_checked.length === $chkbox_all.length){
  27.             chkbox_select_all.checked = true;
  28.             if('indeterminate' in chkbox_select_all){
  29.                 chkbox_select_all.indeterminate = false;
  30.             }
  31.  
  32.             // If some of the checkboxes are checked
  33.         } else {
  34.             chkbox_select_all.checked = true;
  35.             if('indeterminate' in chkbox_select_all){
  36.                 chkbox_select_all.indeterminate = true;
  37.             }
  38.         }
  39.     }
  40.  
  41.     var selected = [];
  42.  
  43.     var rows_selected = [];
  44.  
  45.    var table = $(admin_forum_categories).DataTable({
  46.         'paging'      : true,
  47.         'lengthChange': true,
  48.         'searching'   : true,
  49.         'ordering'    : true,
  50.         'responsive'  : true,
  51.         'info'        : true,
  52.         'autoWidth'   : false,
  53.         "processing": true,
  54.         "serverSide": true,
  55.         "pageLength": 10,
  56.         'language'    :{
  57.             "url"   : "https://cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/Hungarian.json"
  58.         },
  59.         "ajax":{
  60.             "url": base_url + "/admin/forum/kategoriak_ajax",
  61.             "dataType": "json",
  62.             "type": "POST"
  63.         },
  64.         "columnDefs":[
  65.             {
  66.                 "className" :   "text-center",
  67.                 "targets"   :   "_all"
  68.             },
  69.             {
  70.                 "targets":[0, 3],
  71.                 "orderable":false
  72.             }
  73.         ],
  74.         "rowCallback": function( row, data ) {
  75.             // Get row ID
  76.             if ( $.inArray(data.DT_RowId, selected) !== -1 ) {
  77.                 $(row).addClass('selected');
  78.             }
  79.         }
  80.     });
  81.  
  82.     $(admin_forum_categories).find('tbody').on('click', 'tr', function () {
  83.         var id = this.id;
  84.         var index = $.inArray(id, selected);
  85.  
  86.         if ( index === -1 ) {
  87.             selected.push( id );
  88.         } else {
  89.             selected.splice( index, 1 );
  90.         }
  91.  
  92.         $(this).toggleClass('selected');
  93.     });
  94.  
  95.     // Handle click on checkbox
  96.     $(admin_forum_categories).find('tbody').on('click', 'input[type="checkbox"]', function(e){
  97.         var $row = $(this).closest('tr');
  98.  
  99.         // Get row data
  100.         var data = table.row($row).data();
  101.  
  102.         // Get row ID
  103.         var rowId = data[0];
  104.  
  105.         // Determine whether row ID is in the list of selected row IDs
  106.         var index = $.inArray(rowId, rows_selected);
  107.  
  108.         // If checkbox is checked and row ID is not in list of selected row IDs
  109.         if(this.checked && index === -1){
  110.             rows_selected.push(rowId);
  111.  
  112.             // Otherwise, if checkbox is not checked and row ID is in list of selected row IDs
  113.         } else if (!this.checked && index !== -1){
  114.             rows_selected.splice(index, 1);
  115.         }
  116.  
  117.         if(this.checked){
  118.             $row.addClass('selected');
  119.         } else {
  120.             $row.removeClass('selected');
  121.         }
  122.  
  123.         // Update state of "Select all" control
  124.         updateDataTableSelectAllCtrl(table);
  125.  
  126.         // Prevent click event from propagating to parent
  127.         e.stopPropagation();
  128.     });
  129.  
  130.     // Handle click on table cells with checkboxes
  131.     $(admin_forum_categories).on('click', 'tbody td, thead th:first-child', function(e){
  132.         $(this).parent().find('input[type="checkbox"]').trigger('click');
  133.     });
  134.  
  135.     // Handle click on "Select all" control
  136.     $('thead input[name="select_all"]', table.table().container()).on('click', function(e){
  137.         if(this.checked){
  138.             $(admin_forum_categories).find('tbody input[type="checkbox"]:not(:checked)').trigger('click');
  139.         } else {
  140.             $(admin_forum_categories).find('tbody input[type="checkbox"]:checked').trigger('click');
  141.         }
  142.  
  143.         // Prevent click event from propagating to parent
  144.         e.stopPropagation();
  145.     });
  146.  
  147.     // Handle table draw event
  148.     table.on('draw', function(){
  149.         // Update state of "Select all" control
  150.         updateDataTableSelectAllCtrl(table);
  151.     });
  152.  
  153.     // ----------------------------- Kijelölt kategóriák törlése -----------------------------
  154.  
  155.     var delete_categories_multiple_modal = $('#delete_category_multiple_modal');
  156.     var delete_selected_categories_button = $('#delete_selected_categories');
  157.  
  158.     $('#cat_delete_selected').on('click', function(e){
  159.  
  160.         var delete_this = $('#admin_forum_categories > tbody > tr >td:first-child > input').serialize();
  161.  
  162.         var delete_req_segments = delete_this.split("&");
  163.  
  164.         var delete_ids = [];
  165.  
  166.         for(i=0; i<delete_req_segments.length; i++){
  167.             delete_ids[i] = delete_req_segments[i].split("=")[1];
  168.         }
  169.  
  170.         delete_ids = delete_ids.sort(function(a, b){return a-b});
  171.  
  172.         var selected_items_count = delete_ids.length;
  173.  
  174.         $(delete_categories_multiple_modal).css('z-index',9999);
  175.         $(delete_categories_multiple_modal).modal('show');
  176.  
  177.         $('#delete_multiple_num').text(selected_items_count);
  178.  
  179.         $(delete_selected_categories_button).on('click',function () {
  180.             $.ajax({
  181.                 url: base_url+"/admin/forum/kategoriak/torles",
  182.                 cache: false,
  183.                 type: "POST",
  184.                 data: {
  185.                     delete_ids: delete_this
  186.                 },
  187.                 dataType: "json",
  188.                 success: function (data) {
  189.  
  190.                     if(data['status-code'] === "danger"){
  191.  
  192.                         //https://stackoverflow.com/questions/19528173/bootstrap-open-another-modal-in-modal/30250853#30250853
  193.                         $(delete_categories_multiple_modal).modal('hide').on('hidden.bs.modal', function (e) {
  194.                             $(modal_message_text).text(data['status-text']);
  195.                             $(modal_message_text).addClass('alert-'+data['status-code']);
  196.                             $(message_modal).css('z-index',9999);
  197.                             $(message_modal).modal('show');
  198.  
  199.                             $(this).off('hidden.bs.modal'); // Remove the 'on' event binding
  200.                         });
  201.                     }
  202.                     else if(data['status-code'] === "success"){
  203.                         window.location.href = base_url+"/admin/forum/kategoriak";
  204.                     }
  205.                 }
  206.             });
  207.         });
  208.  
  209.         // Prevent actual form submission
  210.         e.preventDefault();
  211.     });
  212.     // ----------------------------- // Kijelölt kategóriák törlése -----------------------------
  213.  
  214.     // Single category delete
  215.     $(admin_forum_categories).on('click', 'tbody tr td button.delete_category_btn', function () {
  216.  
  217.         var category_id = $(this).data('category_id');
  218.         var category_title = $(this).data('category_title');
  219.  
  220.         var delete_category_modal = $('#delete_category_modal');
  221.         var delete_category_button = $('#delete_this_category');
  222.  
  223.         $(delete_category_modal).css('z-index', 9999);
  224.         $(delete_category_modal).modal('show');
  225.  
  226.         $('#modal_cat_name').text(category_title);
  227.  
  228.         $(delete_category_button).on('click', function () {
  229.             $.ajax({
  230.                 url: base_url + "/admin/forum/kategoriak/torles",
  231.                 cache: false,
  232.                 type: "POST",
  233.                 data: {
  234.                     category_id: category_id,
  235.                     category_title: category_title
  236.                 },
  237.                 dataType: "json",
  238.                 success: function (data) {
  239.                     console.log(data);
  240.  
  241.                     if(data['status-code'] === "danger"){
  242.                         $(modal_message_text).text(data['status-text']);
  243.                         $(modal_message_text).addClass('alert-' + data['status-code']);
  244.                         $(message_modal).css('z-index', 9999);
  245.  
  246.                         $(message_modal).modal('show');
  247.                     }
  248.                     else if(data['status-code'] === "success"){
  249.                         window.location.href = base_url+"/admin/forum/kategoriak";
  250.                     }
  251.                 }
  252.             });
  253.         });
  254.     });
  255.  
  256. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement