HOME


Mini Shell 1.0
DIR:/usr/local/cwpsrv/var/services/users/mefccpc/cwp_theme/original/js/modules/
Upload File :
Current File : //usr/local/cwpsrv/var/services/users/mefccpc/cwp_theme/original/js/modules/crontab.js.twig
console.log();
$('[data-toggle="tooltip"]').tooltip();
function changeView(view){
  let another_view = view == 'row_list_cron' ? 'row_panel_cron' : 'row_list_cron';
  $('#' + view).slideUp('fast', function(){
    $('#' + another_view).slideDown('fast');
  });
  if(view == 'row_panel_cron'){
    $('#simple_scheduled').show();
    $('#advance_options').hide();
    $('#crontab_command').val('');
    $('#simple_selected').val('hourly');
    $('#cron_description').val('');
    $('#form_title').text('{{ langmod.CRCREATE }}');
    resetAdvance('#sel_min');
    resetAdvance('#sel_hour');
    resetAdvance('#sel_day');
    resetAdvance('#sel_month');
    resetAdvance('#sel_weekdays');
    $('#line_editing').val('');
    $('#status_editing').val('');
  }
}
function phpVersionsModal(){
  $('#phpversions_modal').modal('show');
}
function copyPHPVersion(path){
  $('#php_ver_copy_path').val(path);
  let field = document.getElementById('php_ver_copy_path');
  field.select();
  document.execCommand('copy');
  noti_bubble('{{langmod.CRPHPCOPIED}}','{{langmod.CRPHPSUCC}}','success',false,false,'3000',true);

}
function resetAdvance(idelemen){
  let option = $(idelemen).data('list').options[0].value;
  populateOnEdit(idelemen, option);
}
function setButtonAllState(state){
  if(state){
    $('#selunselall_button').html('{{ langmod.CRUNSELECT }}');
  }else{
    $('#selunselall_button').html('{{ langmod.CRSELECTALL }}');
  }
  all_selected = state;
}
function saveButtonState(elem_button, state){
  let button_icon = elem_button.find('.fa');
  let cancel_buton = $('#cron_cancel_button');
  if(state === true){
    elem_button.addClass('disabled');
    cancel_buton.addClass('disabled');
    button_icon.removeClass('fa-floppy-o');
    button_icon.addClass('fa-circle-o-notch fa-spin');
  }else{
    elem_button.removeClass('disabled');
    button_icon.removeClass('fa-circle-o-notch');
    button_icon.removeClass('fa-spin');
    cancel_buton.removeClass('disabled');
    button_icon.addClass('fa-floppy-o');
  }
}
String.prototype.isEmpty = function() {
    return (this.length === 0 || !this.trim());
};
String.prototype.replaceAll = function(find, replace) {
    return this.replace(new RegExp(find, 'g'), replace);
}
function createCron(elem_button){
  elem_button = $(elem_button);
  let data_send = '';
  let invalid = false;
  let type_scheduled = '';
  if($('#advance_options').is(':visible')){
    type_scheduled = 'advance';
    $('#advance_options').find('.advance_options_item').each(function(){
      let val_item = $(this).data('items_selecteds');
      let opt_selection = $(this).parent().find('.cron_opt_selection');
      if(Array.isArray(val_item)){
        if(val_item.length > 0){
          val_item = JSON.stringify(val_item);
          opt_selection.removeClass('error');
        }else{
          opt_selection.addClass('error');
          invalid = true;
        }
      }else if(val_item != undefined){
        val_item = val_item.value;
        opt_selection.removeClass('error');
      }else{
        opt_selection.addClass('error');
        invalid = true;
      }
      data_send += $(this).attr('id') + '=' + val_item + '&';
    });
    data_send = data_send.substring(0, data_send.length - 1);
  }else{
    type_scheduled = 'simple';
    data_send = 'simple_selected=' + $('#simple_selected').val();
  }
  let crontab_command_input = $('#crontab_command');
  let comment = $('#cron_description').val();
  let crontab_command = encodeURIComponent(crontab_command_input.val());
  if(crontab_command.isEmpty()){
    crontab_command_input.addClass('error');
    crontab_command_input.focus();
    invalid = true;
  }
  if(!invalid){
    saveButtonState(elem_button, true);
    let line_editing = $('#line_editing').val();
    let endpoint_url = '';
    if(line_editing.isEmpty()){
      endpoint_url = "./{{users}}/index.php?module=crontab&acc=add";
    }else{
      let status_editing = $('#status_editing').val();
      line_editing = '&line=' + line_editing + '&status_editing=' + status_editing;
      endpoint_url = "./{{users}}/index.php?module=crontab&acc=edit";
    }
    $.ajax({
        type: "POST",
        url: endpoint_url,
        data: 'type=' + type_scheduled + '&' + data_send + '&comment=' + comment + '&crontab_command=' + crontab_command + line_editing,
        complete: function(datos){
          saveButtonState(elem_button, false);
          cronTable(datos.responseJSON.list);
          changeView('row_panel_cron');

        }
    });
  }else{
    noti_bubble('{{ langmod.CRINVALIDCREATION }}','Error','error',false,false,'4000',true);
  }

  // $.ajax({
  //     type: "POST",
  //     url: "./{{users}}/index.php?module=crontab&acc=addcront",
  //     data: 'type=' + type_scheduled,
  //     complete: function(datos){
  //
  //     }
  // });
}
function updateAdvanced(elem_id){
  let elem = $('#' + elem_id);
  let selecteds = elem.data('items_selecteds');
  let selecteds_container = elem.parent().find('.cron_opt_selection');
  let sels = '';
  if(Array.isArray(selecteds)){
    if(selecteds.length > 0){
      sels = '(' + selecteds.join(',') + ')';
      let list = elem.data('list');
      if(selecteds.length == list.items.length){
        setButtonAllState(true);
      }
    }else{
      sels = 'None selected.';
      setButtonAllState(false);
    }
  }else{
    sels = selecteds.label;
  }
  selecteds_container.text(sels);
}
function crontab_run(elem){
    let command = $(elem).data('command');
    noti_bubble('{{ langmod.CRLABEL4 }}','{{ langmod.CRLABEL6 }}','success',true,false,'3000',true);
    $.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } });
    $.ajax({
        type: "POST",
        url: "./{{users}}/index.php?module=crontab",
        data:"acc=run_cron&command=" + command,
        complete: function(datos){
            return false;
        }
    });
    return false;
}
function showTimeMenu(elem, title, additional){
  let elem_id = $(elem).attr('id');
  if($('#main_cont_' + elem_id).is(':visible')){
    $('#main_cont_' + elem_id).remove();
    $('#' + elem_id).parent().find('.fa-sliders.selected').removeClass('selected');
  }else{
    let data_list = $(elem).data('list');
    let items = data_list.items;
    let selecteds = $(elem).data('items_selecteds');
    // if(selecteds == 'All'){
    //   selecteds = items;
    // }
    var col_size = '';
    if(elem_id == 'sel_month'){
      col_size = 'col-md-6';
    }else if(elem_id == 'sel_weekdays'){
      col_size = 'col-md-6';
    }else{
      col_size = 'col-md-2';
    }
    let selected_option = '';
    let days_selected = [];
    if(Array.isArray(selecteds)){
      selected_option = 'custom';
      days_selected = selecteds;
    }else{
      selected_option = selecteds.value;
    }
    let html_config = '<div tabindex="20" class="main_cont_config_menu" id="main_cont_' + elem_id + '"><div class="mail-config-menu cron_option ' + elem_id + '">' +
                        '<div class="mail-config-menu-container">' +
                          '<div class="tabs-container">' +
                                '<ul class="nav nav-tabs cron_advance_tab" role="tablist">' +
                                    '<li><a class="nav-link active" data-toggle="tab" href="#tabcommon"> {{ langmod.CRCOMMONSETTINGS }}</a></li>' +
                                    '<li><a class="nav-link" data-toggle="tab" href="#tabmil">{{ langmod.CRSELECT }} ' + title + '</a></li>' +
                                '</ul>' +
                                '<div class="tab-content">' +
                                    '<div role="tabpanel" id="tabcommon" class="tab-pane active">' +
                                        '<div class="panel-body">';
                                        data_list.options.forEach(function(option, index){
                                          html_config += '<div class="i-checks"><label> <input type="radio" data-option=\'' + JSON.stringify(option) + '\' class="cron_option" ' + ( option.value == selected_option ? 'checked' : '')  + ' value="' + option.value + '" name="cron_option"> <i></i> ' + option.label + ' </label></div>';
                                        });
                                        html_config += '<div class="i-checks"><label> <input type="radio" class="cron_option" ' + ( selected_option == 'custom' ? 'checked' : '')  + ' id="custom_option" value="custom" data-option="custom" name="cron_option"> <i></i> {{ langmod.CRCUSTOMSELECT }} </label></div>';
                                        html_config += '</div>' +
                                    '</div>' +
                                    '<div role="tabpanel" id="tabmil" class="tab-pane">' +
                                        '<div class="panel-body">' +
                                          '<div class="row cron_item_container container-fluid">';


    // let html_config = '<div class="mail-config-menu cron_option ' + elem_id + '"><div class="mail-config-menu-container"><h3>Select ' + title + '</h3><div class="row cron_item_container">';
    let selected_count = 0;
    items.forEach(function(item){
      let isSelected = '';
      if(days_selected.indexOf(item.value) > -1){
        selected_count++;
        isSelected = 'class="selected"';
      }
      html_config += '<div class="' + col_size + ' cron-item-time"><span ' + isSelected + ' data-value="' + item.value + '">' + item.label + '</span></div>';
    });
    html_config +='</div>' +
                    '<div class="selunselall_button">' +
                      '<span class="btn btn-block btn-success" id="selunselall_button" onclick="handleOptSelection(this,\'' + elem_id + '\')">{{ langmod.CRSELECTALL }}</span>' +
                    '</div>' +
                    '</div>' +
                  '</div>' +
                  '</div>' +
                  '</div>' +
                  '</div>' +
                  '</div></div>';
    // html_config = html_config.replace('{{ITEMS}}', html_config_items);
    // html_config += '</div><div style="margin-top:5px"><span class="btn btn-block btn-outline btn-primary">Unselect all</span></div></div></div>';
    $(elem).parent().find('.fa-sliders').addClass('selected');
    $(elem).parent().parent().prepend(html_config);
    // $('#main_cont_' + elem_id).focus();
    // document.getElementById().focus();
    setTimeout(function(){
      $('html, body').animate({
           scrollTop: $('#' + elem_id).offset().top - ($('.mail-config-menu-container').height() + 100)
      }, 300);
    },50);
    if(selected_count == items.length){
      setButtonAllState(true);
    }else{
      setButtonAllState(false);
    }
    $('.i-checks').iCheck({
        checkboxClass: 'icheckbox_square-green',
        radioClass: 'iradio_square-green',
    });
    $('.i-checks').on('ifChecked', function(event){
      if($(event.target).val() != 'custom'){
        $('#' + elem_id).data('items_selecteds', $(event.target).data('option'));
        $('.cron-item-time span').removeClass('selected');
      }else{
        setTimeout(function(){
          $('.cron_advance_tab li:eq(1) a').tab('show');
        },200);
        $('#' + elem_id).data('items_selecteds', []);
      }
      updateAdvanced(elem_id);
    });
    $('.cron-item-time').click(function(){
      let selecteds = $('#' + elem_id).data('items_selecteds');
      let current_option = $('.cron_option :checked');
      if(current_option.val() != 'custom'){
        current_option.iCheck('uncheck');
        $('#custom_option').iCheck('check');
      }
      let span_item = $(this).find('span');
      if(span_item.hasClass('selected')){
        span_item.removeClass('selected');
      }else{
        span_item.addClass('selected');
      }
      let sels = [];
      $('.cron-item-time span.selected').each(function(index){
        sels.push($(this).data('value'));
      });
      $('#' + elem_id).data('items_selecteds', sels);
      updateAdvanced(elem_id);
    });
    if(selected_option == 'custom'){
      $('.cron_advance_tab li:eq(1) a').tab('show');
    }
    hideOnClickOutside('#main_cont_' +  elem_id, '#' + elem_id + (additional != undefined ? ', ' + additional : ''));
  }

}
let all_selected = false;
function handleOptSelection(button, master_elem){
  let gparent = $(button).parent().parent();
  let items = gparent.find('.cron-item-time');
  let new_items = [];
  if(!all_selected){
    items.each(function(){
      let item_elem = $(this).find('span');
      item_elem.addClass('selected');
      new_items.push(item_elem.data('value'));
    });
    all_selected = true;
  }else{
    items.each(function(){
      $(this).find('span').removeClass('selected');
    });
    all_selected = false;
  }
  $('#' + master_elem).data('items_selecteds', new_items);
  updateAdvanced(master_elem);
}
function hideOnClickOutside(selector, second){
  let forhide = false;
  if(second === undefined){
    second = '#show_options_button';
    forhide = true;
  }
  function outsideClickListener(event){
    $target = $(event.target);
    if (!$target.closest(selector).length && !$target.closest(second).length  && $(selector).is(':visible')) {
      $(selector).parent().find('.fa-sliders.selected').removeClass('selected');
      if(forhide){
        $(selector).hide();
      }else{
        $(selector).remove();
      }
      $(selector).remove();
        removeClickListener();
    }
  }

  function removeClickListener(){
    document.removeEventListener('click', outsideClickListener)
  }

  document.addEventListener('click', outsideClickListener)
}
function showAdvanceOptions(){
  if($('#simple_scheduled').is(':visible')){
    var to_show = 'advance_options';
    var to_hide = 'simple_scheduled';
  }else{
    var to_hide = 'advance_options';
    var to_show = 'simple_scheduled';
  }
  $('#' + to_hide).slideUp('fast', function(){
    $('#' + to_show).slideDown('fast');
  });
}
function showMoreData(elem, title){
  let elem_id = $(elem).attr('id');
  if($('#main_cont_' + elem_id).is(':visible')){
    $('#main_cont_' + elem_id).remove();
    return;
  }
  let position = $(elem).offset();
  let width_elem = $(elem).width();
  let factor = 6;
  if(width_elem > 55){
    factor = 5;
  }
  let left_px = position.left - (width_elem * factor);
  let items = $(elem).data('time');
  let menu_html = '<div tabindex="20" style="left:' + left_px + 'px" class="main_cont_config_menu" id="main_cont_' + elem_id + '">'+
                    '<div class="mail-config-menu cron_option ' + elem_id + ' cron-option-value">' +
                      '<h4>' + title + '</h4>'+
                      '<div class="mail-config-menu-container">';
                      items.forEach(function(item){
                        menu_html += '<div class="col-md-2 cron-item-time"><span class="selected" data-value="' + item + '">' + item + '</span></div>';
                      });
                      menu_html += '</div>' +
                    '</div>' +
                  '</div>';
  hideOnClickOutside('#main_cont_' +  elem_id, '#' + elem_id);
  $(elem).append(menu_html);
  // $(menu_html).insertBefore(elem);
}
function advanceValueShow(option_value, title, title_short, line, options){
  let slices = option_value.split(',');
  let html = '';
  if(option_value.length > 5){
    html = '<div class="label label-primary more_options tooltip_placed" data-toggle="tooltip" data-placement="top" title="' + title + '" id="cron_line_' + line + '" data-time=\'' + JSON.stringify(slices) + '\'" onclick="showMoreData(this,\'' + title + '\')">{{ langmod.CRSHOWMORE }}<span class="label label-warning count_info" style="margin-left:0px">' + slices.length + '</span></div>';
    // html = '<div class="label label-primary more_options" id="cron_line_' + line + '" data-time=\'' + JSON.stringify(slices) + '\'">Show +<span class="label label-warning count_info" style="margin-left:0px">' + slices.length + '</span></div>';
  }else{
    let rwval = slices.join(',');
    let optsel = options.filter(function(opt){return opt.value == rwval})[0];
    if(optsel){
      let titslice = optsel.label.split('(');
      title = titslice.join(title_short + ' (');
    }
    html = '<div class="label label-primary tooltip_placed" data-toggle="tooltip" data-placement="top" title="' + title + '">(' + rwval + ')</div>';
  }
  return html;
}
function timeInfo(info_time, line){
  let description = '';
  let pattern = '';
  if(info_time.type == 'simple'){
    description = '<div class="label label-primary tooltip_placed" data-toggle="tooltip" data-placement="top" title="' + info_time.data.label + '">' + info_time.data.label + '</div>';
    pattern = info_time.data.pattern;
  }else{
    description = '<div>' +
                    advanceValueShow(info_time.data.minutes,'{{ langmod.CRSELECTEDM }}','mins', line, minutes_list.options) +
                    ' ' + advanceValueShow(info_time.data.hours,'{{ langmod.CRSELECTEDH }}','hours', line, hours_list.options) +
                    ' ' + advanceValueShow(info_time.data.days,'{{ langmod.CRSELECTEDD }}','days', line, days_list.options) +
                    ' ' + advanceValueShow(info_time.data.months,'{{ langmod.CRSELECTEDMT }}','months', line, months_list.options) +
                    ' ' + advanceValueShow(info_time.data.weekdays,'{{ langmod.CRSELECTEDWD }}','weedays', line, days_week.options) +
                  '</div>';
  }
  let html_time = '<div class="cron-table-b-info cron-table-time">' +
                    '<div class="cron-table-time-description">' +
                      '<span>' + description + '</span>&nbsp;' +
                    '</div>' +
                    // '<i class="fa fa-info"></i>' +
                  '</div>';
  return html_time;
}
function replaceQuotes(content){
  content = content.replaceAll('{Q1}','"');
  content = content.replaceAll('{Q2}',"'");
  content = content.replaceAll('{Q3}',"`");
  content = content.replaceAll('{B1}', String.fromCharCode(92));
  return content;
}
function cronTable(cron_list){
  let table_content = '';
  let content_html = '';
  if(cron_list.length > 0){
    cron_list.forEach(function(cron_item){
      let tr_class = '';
      let act_icon = 'fa-ban';
      let act_title = 'Deactivate';
      if(cron_item.status == false){
        tr_class = 'class="cron_line_inactive"';
        act_icon = 'fa-check';
        act_title = 'Activate';
      }
      table_content += '<tr id="cron_line_' + cron_item.line + '" ' + tr_class + '>' +
                            '<td class="cron-table-td">' + cron_item.line + '</td>' +
                            '<td class="cron-table-td">' + replaceQuotes(cron_item.command) + '</td>' +
                            '<td class="cron-table-td">' + timeInfo(cron_item.time, cron_item.line) + '</td>' +
                            '<td class="cron-table-b-actions">' +
                              '<div class="cron-table-b-info">' +
                                '<button type="button" title="Run cron job now" class="btn btn-success btn-xs" data-command="' + cron_item.command + '" onclick="return crontab_run(this)">' +
                                  '<i class="fa fa-play" aria-hidden="true"></i>' +
                                '</button>' +
                                '<button type="button" title="' + act_title + ' cron job" class="btn btn-cronstatus btn-xs" data-line="' + cron_item.line + '" data-status="' + cron_item.status + '" onclick="return crontab_status(this)">' +
                                  '<i class="fa ' + act_icon + '" aria-hidden="true"></i>' +
                                '</button>' +
                                '<button type="button" title="Edit cron job" class="btn btn-success btn-cron-edit btn-xs" data-info=\'' + JSON.stringify(cron_item) + '\'" onclick="return crontab_edit(this)">' +
                                  '<i class="fa fa-pencil" aria-hidden="true"></i>' +
                                '</button>' +
                                '<button type="button" title="Delete cron job" class="btn btn-warning btn-xs"  onclick="return crontab_delete(' + cron_item.line + ',\'' + cron_item.command + '\')">' +
                                  '<i class="fa fa-trash" aria-hidden="true">' +
                                '</button>' +
                              '</div>' +
                            '</td>' +
                        '</tr>';
    });
    content_html = '<table class="table table-striped cron-table">' +
                    '<thead>' +
                        '<tr>' +
                          '<th style="width:25px">#</th>' +
                          '<th style="width:40%">{{langmod.cron_job}}</th>' +
                          '<th id="wrun_col">{{langmod.CRWHENRUN}}&nbsp;<i class="fa fa-info" onmouseover="showCronConfigInfo()" onmouseout="showCronConfigInfo()"></i></th>' +
                          '<th class="cron-table-h-actions">{{langmod.action}}</th>' +
                        '</tr>' +
                    '</thead>' +
                    '<tbody id="table_crons">' +
                      table_content +
                    '</tbody>' +
                '</table>';
  }else{
    content_html = '<div class="empty_list"><h4 class="text-success">{{langmod.CRNONECREATED}}</h4></div>';
  }
  $('#cron_list_container').html(content_html);
  $('.tooltip_placed').tooltip();
  if(tableSSL){
    tableSSL.destroy();
  }
  tableSSL = $('.cron-table').DataTable({
    "iDisplayLength": 20,
    "columns": [
                null,
                { "width": "40%" },
                null,
                null
              ],
  });
}
function btnStatusHandler(btn_elem, status){
  let cron_st = btn_elem.data('status');
  let line = btn_elem.data('line');
  let act = 'deactivate';
  let class_to_remove = 'fa-ban';
  let class_to_add = 'fa-check';
  let new_title = 'Deactivate cron job';
  if(cron_st == false){
    act = 'activate';
    class_to_remove = 'fa-check';
    class_to_add = 'fa-ban';
    new_title = 'Activate cron job';
  }
  let btn_icon = btn_elem.find('.fa');
  if(status === undefined){
    btn_elem.addClass('disabled');
    btn_icon.removeClass(class_to_remove);
    btn_icon.addClass('fa-circle-o-notch fa-spin');
    return {
      status: cron_st,
      act : act,
      line: line
    };
  }else{
    btn_elem.removeClass('disabled');
    btn_icon.removeClass('fa-circle-o-notch fa-spin');
    btn_icon.addClass(class_to_remove);
    btn_elem.attr('title', new_title);
  }
}
function crontab_status(elem){
  let btn_elem = $(elem);
  cron_st = btnStatusHandler(btn_elem);
  $.ajax({
      type: "POST",
      url: "./{{users}}/index.php?module=crontab&acc=status",
      data: 'line=' + cron_st.line + '&act=' + cron_st.act,
      complete: function(response){
        let data_response = response.responseJSON;
        let tr_elem = $('#cron_line_' + cron_st.line);
        if(data_response.status == 'OK'){
          if(cron_st.status == false){
            tr_elem.removeClass('cron_line_inactive');
          }else{
            tr_elem.addClass('cron_line_inactive');
          }
          let btn_edit = tr_elem.find('.btn-cron-edit');
          let btn_edit_info = btn_edit.data('info');
          btn_edit_info.status = !cron_st.status;
          btn_edit.data('info',btn_edit_info);
          btn_elem.data('status', !cron_st.status);
          btnStatusHandler(btn_elem, true);
          noti_bubble('Cron job has been ' + cron_st.act,'{{langmod.CRLABEL4}}','success',false,false,'4000',true);
        }else{
          noti_bubble('{{langmod.CRDELETED}}','{{langmod.CRLABEL4}}','success',false,false,'4000',true);
        }
      }
  });
}
function showCronConfigInfo(){
  if($('.cron_config_window').is(':visible')){
    $('.cron_config_window').slideUp('fast',function(){
      $(this).remove();
    });
  }else{
    let html = '<div class="cron_config_window" style="display:none">' +
        '<pre># {{langmod.EXAMPLE}}:<br/>' +
          '<span class="big-space-letter"># .----------------</span> {{langmod.Tminutes}} (0 - 59)<br/>' +
          '<span class="big-space-letter"># |  .-------------</span> {{langmod.TITLE2_Hours2}} (0 - 23)<br/>' +
          '<span class="big-space-letter"># |  |  .----------</span> {{langmod.DayMonT}}<br/>' +
          '<span class="big-space-letter"># |  |  |  .-------</span> {{langmod.CRON1}}<br/>' +
          '<span class="big-space-letter"># |  |  |  |  .----</span> {{langmod.CRON2}}<br/>' +
          '<span class="big-space-letter"># |  |  |  |  |</span><br/>' +
          '<span class="big-space-letter"># *  *  *  *  *</span> {{langmod.CRON3}}' +
        '</pre>' +
    '</div>';
    $('#wrun_col').append(html);
    $('.cron_config_window').slideDown('fast');
  }

}
let cron_list = JSON.parse('{{mod.cron_list|json_encode()|raw}}');
let minutes_list = JSON.parse('{{mod.minutes_list|json_encode()|raw}}');
let hours_list = JSON.parse('{{mod.hours_list|json_encode()|raw}}');
let days_list = JSON.parse('{{mod.days_list|json_encode()|raw}}');
let days_week = JSON.parse('{{mod.days_week|json_encode()|raw}}');
let months_list = JSON.parse('{{mod.months_list|json_encode()|raw}}');
$(document).ready(function() {
  cronTable(cron_list);
});
let tableSSL = null;
function crontab_edit(elem){
  let info_cron = $(elem).data('info');
  $('#crontab_command').val(replaceQuotes(info_cron.command));
  $('#cron_description').val(replaceQuotes(info_cron.comment));
  $('#line_editing').val(info_cron.line);
  $('#status_editing').val(info_cron.status);
  $('#form_title').text('{{langmod.CREDITING}} ' + info_cron.line);
  if(info_cron.time.type == 'simple'){
    $('#simple_selected').val(info_cron.time.data.value);
  }else{
    populateOnEdit('#sel_min', info_cron.time.data.minutes);
    populateOnEdit('#sel_hour', info_cron.time.data.hours);
    populateOnEdit('#sel_day', info_cron.time.data.days);
    populateOnEdit('#sel_month', info_cron.time.data.months);
    populateOnEdit('#sel_weekdays', info_cron.time.data.weekdays);
    $('#advance_options').show();
    $('#simple_scheduled').hide();
  }
  changeView('row_list_cron');
}
function populateOnEdit(element, data){
  let list = $(element).data('list');
  let data_stored = list.options.filter(function(option){return option.value == data})[0];
  if(data_stored === undefined){
    data_stored = data.split(',').map(function(item){
      return parseInt(item);
    });
  }
  $(element).data('items_selecteds', data_stored);
  updateAdvanced(element.substr(1));
}
function bindClickDelete(line){
  $('#btn-delete-cron').unbind('click');
  $('#btn-delete-cron').click(function(){
    let btn_elem = $(this);
    let icon_elem = btn_elem.find('.fa');
    let btn_cancel = $('#btn-delete-cancel-button');
    btn_elem.addClass('disabled');
    btn_cancel.addClass('disabled');
    icon_elem.removeClass('fa-trash');
    icon_elem.addClass('fa-circle-o-notch fa-spin');
    $.ajax({
        type: "POST",
        url: "./{{users}}/index.php?module=crontab&acc=deletecron",
        data: 'line=' + line,
        complete: function(datos){
            cronTable(datos.responseJSON.list);
            $("#cron_confirm_window").modal('toggle');
            noti_bubble('{{langmod.CRDELETED}}','{{langmod.CRLABEL4}}','success',false,false,'4000',true);
            btn_elem.removeClass('disabled');
            btn_cancel.removeClass('disabled');
            icon_elem.removeClass('fa-circle-o-notch fa-spin');
            icon_elem.addClass('fa-trash');
        }
    });
  });
}
function crontab_delete(line, command){
  $("#cron_confirm_message").html('{{ langmod.CRDELETEWARNING }} ' + line + ' ({{langmod.command}}: ' + replaceQuotes(command) + ')');
    $("#cron_confirm_window").modal('toggle');
    bindClickDelete(line);
    return false;
}

function addcron(sw){
    if(sw==1){
        btnporcess('off','btn-cron1','{{ langmod.CRLABEL10 }}');
        if(($("#common_options_1").val()=='')||($("#common_command_1").val()=='')){
            if($("#common_options_1").val()==''){ $("common_options_1").css("color","#ffd4d4"); }
            noti_bubble('{{langmod.ERROR1}}','{{langmod.ERROR2}}','error',true,false,'3000',true);
            btnporcess('on','btn-cron1','{{ langmod.save_change }}');
            return false;
        }else{
            $("#btn-cron1").addClass('disabled');
            $("#btn-cron1").attr('disabled',true);
            $('#ibox1').children('.ibox-content').toggleClass('sk-loading');
            $.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } });
            var comm=$("#common_command_1").val();
            var rcomm=comm.replace('>>','||@||');
            $.ajax({
                type: "POST",
                url: "./{{users}}/index.php?module=crontab&acc=addcron",
                data:"common="+Base64.encode($("#common_options_1").val())+"&command="+Base64.encode(rcomm)+"&sw="+sw+"&minute_options="+Base64.encode($("#minute_options").val())+
                    "&hour_options="+Base64.encode($("#hour_options").val())+"&day_options="+Base64.encode($("#day_options").val())+"&month_options="+Base64.encode($("#month_options").val())+"&weekday_options="+Base64.encode($("#weekday_options").val())+"&command2="+Base64.encode($("#command2").val())+"&command3="+Base64.encode($("#command3").val()),
                complete: function(datos){
                    //alert(datos.responseText); return false;
                    $("#common_options_1").val('');
                    $("#common_command_1").val('');
                    noti_bubble('{{langmod.EXIST}}','{{langmod.EXISTADD}}','success',true,false,'3000',true);
                    refrescron();
                    $("#btn-cron1").removeClass('disabled');
                    $("#btn-cron1").attr('disabled',false);
                    track_errors();
                    $('#ibox1').children('.ibox-content').removeClass('sk-loading');
                    btnporcess('on','btn-cron1','{{ langmod.save_change }}');
                    return false;
                }
            });
        }
    }
    if(sw==2){
        btnporcess('off','btn-cron2','{{ langmod.CRLABEL10 }}');
        if(($("#minute_options").val()=='')||($("#hour_options").val()=='')||($("#day_options").val()=='')||($("#month_options").val()=='')||($("#weekday_options").val()=='')||($("#command2").val()=='')){
            noti_bubble('{{langmod.ERROR1}}','{{langmod.ERROR2}}','error',true,false,'3000',true);
            return false;
        }else{
            $("#btn-cron2").addClass('disabled');
            $("#btn-cron2").attr('disabled',true);
            $('#ibox1').children('.ibox-content').toggleClass('sk-loading');
            $.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } });
            $.ajax({
                type: "POST",
                url: "./{{users}}/index.php?module=crontab&acc=addcron",
                data:"sw="+sw+"&minute_options="+Base64.encode($("#minute_options").val())+"&hour_options="+Base64.encode($("#hour_options").val())+"&day_options="+Base64.encode($("#day_options").val())+"&month_options="+Base64.encode($("#month_options").val())+"&weekday_options="+Base64.encode($("#weekday_options").val())+"&command2="+Base64.encode($("#command2").val()),
                complete: function(datos){
                    $("#minute_options").val('');
                    $("#hour_options").val('');
                    $("#day_options").val('');
                    $("#month_options").val('');
                    $("#weekday_options").val('');
                    $("#command2").val('');
                    $("#table_crons").html('');
                    noti_bubble('{{langmod.EXIST}}','{{langmod.EXISTADD}}','success',true,false,'3000',true);
                    refrescron();
                    $("#btn-cron2").removeClass('disabled');
                    $("#btn-cron2").attr('disabled',false);
                    track_errors();
                    $('#ibox1').children('.ibox-content').removeClass('sk-loading');
                    btnporcess('on','btn-cron2','{{ langmod.save_change }}');
                    return false;
                }
            });
        }
    }
    if(sw==3){
        btnporcess('off','btn-cron3','{{ langmod.CRLABEL10 }}');
        $("#btn-cron3").addClass('disabled');
        $("#btn-cron3").attr('disabled',true);
        if($("#command3").val()==''){
            noti_bubble('{{langmod.ERROR1}}','{{langmod.ERROR1}}','error',true,false,'3000',true);
            return false;
        }else{
            $.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } });
            $.ajax({
                type: "POST",
                url: "./{{users}}/index.php?module=crontab&acc=addcron",
                data:"sw="+sw+"&command3="+Base64.encode($("#command3").val())+"&val_hide_comm3="+Base64.encode($("#val_hide_comm3").val()),
                complete: function(datos){
                    $("#command3").val('');
                    $("#table_crons").html('');
                    noti_bubble('{{langmod.EXIST}}','{{langmod.EXISTADD}}','success',true,false,'3000',true);
                    refrescron();
                    $("#btn-cron3").removeClass('disabled');
                    $("#btn-cron3").attr('disabled',false);
                    track_errors();
                    $('#ibox1').children('.ibox-content').removeClass('sk-loading');
                    btnporcess('on','btn-cron3','{{ langmod.save_change }}');
                    return false;
                }
            });
        }
    }
}
// function crontab_edit(line,desc){
//     $("#litab1").removeClass('active');
//     $("#litab2").removeClass('active');
//     $("#litab3").addClass('active');
//
//     $("#tab-1").removeClass('active');
//     $("#tab-2").removeClass('active');
//     $("#tab-3").addClass('active');
//
//     $("#command3").val(Base64.decode(desc));
//     $("#btn_cancel_comm3").show();
//     $("#val_hide_comm3").val(line);
//     return false;
// }
function refrescron(){
    $.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } });
    $.ajax({
        type: "POST",
        url: "./{{users}}/index.php?module=crontab&acc=refrescron",
        complete: function(datos){
            $("#table_crons").html('');
            $("#table_crons").html(datos.responseText);
            return false;
        }
    });
    return false;
}

function track_errors(){
    $.ajax({
        type: "POST",
        url: "./{{users}}/index.php?module=crontab&acc=track_errors",
        complete: function(datos){
          if(datos.responseJSON.st != 'OK'){
            $("#alerterrorcron").show('blind');
            // $("#edibtncron"+datos.responseText).addClass('disabled');
            // $("#edibtncron"+datos.responseText).attr('disabled',true);
            // $("#tr"+datos.responseText).css('background-color','#f2dede');
            noti_bubble('{{langmod.CRLABEL8}}','{{langmod.ERROR1}}','error',false,false,'3000',true);
          }else{
            $("#alerterrorcron").hide();
          }
        }
    });
}
// $('#btn-delete-cron').on('click', function(){
//     btnporcess('off','btn-delete-cron','{{ langmod.CRLABEL10 }}');
//     var line =$("#idhidencron").val();
//     $('#ibox1').children('.ibox-content').toggleClass('sk-loading');
//     $.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } });
//     $.ajax({
//         type: "POST",
//         url: "./{{users}}/index.php?module=crontab&acc=deletecron",
//         data:"line="+line,
//         complete: function(datos){
//             $('#ibox1').children('.ibox-content').toggleClass('sk-loading');
//             refrescron();
//             $("#descron").html('');
//             $("#idhidencron").val('');
//             btnporcess('on','btn-delete-cron','{{ langmod.CRYES }}');
//             $("#myModal2").modal('toggle');
//             noti_bubble('{{ langmod.CRLABEL4 }}','{{ langmod.CRLABEL5 }}','success',true,false,'3000',true);
//             return false;
//         }
//     });
// });