media_directories-2.x-dev/modules/media_directories_ui/js/media_directories_ui.browser.js

modules/media_directories_ui/js/media_directories_ui.browser.js
(function ($, Drupal, drupalSettings) {
  Drupal.MediaBrowser = {
    initialized: false,
    treeSelector: '#jstree-container',
    activeDirectory: -1,
    selectedMedia: [],
    targetBundles: [],
    searchString: null,
    cardinality: -1,
    remainingItems: 25,
    urls: {},
    keepSelectionOnChange: false
  };

  /**
   * Main init function.
   */
  Drupal.MediaBrowser.init = function () {
    if (this.initialized) {
      return;
    }

    // Init tree.
    Drupal.MediaBrowser.tree();

    if ('media_directories' in drupalSettings) {
      if ('target_bundles' in drupalSettings.media_directories) {
        this.targetBundles = drupalSettings.media_directories.target_bundles;
      }

      if ('cardinality' in drupalSettings.media_directories) {
        this.cardinality = drupalSettings.media_directories.cardinality;
      }

      if ('remaining' in drupalSettings.media_directories) {
        this.remainingItems = drupalSettings.media_directories.remaining;
      }
    }

    Drupal.MediaBrowser.toolbar.init();

    // Mark media browser as initialized.
    this.initialized = true;
  };

  /**
   * Get action url from settings.
   *
   * @param action_name
   * @returns {*}
   */
  Drupal.MediaBrowser.getUrl = function (action_name) {
    if ('media_directories' in drupalSettings) {
      if (action_name in drupalSettings.media_directories.url) {
        return drupalSettings.media_directories.url[action_name];
      }
    }
  };

  /**
   * Clear media from selection.
   * Some of the actions will change list of media items
   * so we might need to clear selected items.
   */
  Drupal.MediaBrowser.clearMediaSelection = function (resetSearch) {

    if (resetSearch == undefined) {
      resetSearch = true;
    }

    // Clear selection from global storage.
    Drupal.MediaBrowser.selectedMedia = [];
    // Reset also the search string.
    if (resetSearch) {
      Drupal.MediaBrowser.searchString = null;
      Drupal.MediaBrowser.toolbar.inputs.media_name_filter.val('');
    }
    // Notify toolbar of these changes.
    Drupal.MediaBrowser.toolbar.selectionChanged();

    // Remove the selected class from all items.
    $('.media-listing .media-item').removeClass('selected');
  };

  /**
   * Get elements which are selected.
   * State only stores media ID's, because DOM will change and
   * we need to restore selection in some cases.
   *
   * @returns {Array}
   */
  Drupal.MediaBrowser.getSelectedMids = function () {
    var mids = [];
    $.each(Drupal.MediaBrowser.selectedMedia, function (key, value) {
      mids.push(value);
    });
    return mids;
  };

  /**
   * Get DOM elements which are selected and visible.
   * State only stores media ID's, because DOM will change and
   * we need to restore selection in some cases.
   *
   * @returns {Array}
   */
  Drupal.MediaBrowser.getSelectedElements = function () {
    var elements = [];
    $.each(Drupal.MediaBrowser.getSelectedMids(), function (key, value) {
      var $media_element = Drupal.MediaBrowser.getMediaElement(value);

      if ($media_element.length > 0) {
        elements.push($media_element);
      }
    });
    return elements;
  };

  /**
   * Get a DOM element by a media entity id.
   *
   * @returns {Array}
   */
  Drupal.MediaBrowser.getMediaElement = function (mid) {
    return $('.browser--listing [data-mid="' + mid + '"]');
  };

  /**
   * Start blocking user gestures and show that something is in progress.
   */
  Drupal.MediaBrowser.startLoader = function () {
    var $browser = $('.browser');
    $browser.css('opacity', '0.5');
    $browser.css('pointer-events', 'none');
  };

  /**
   * Unlock the UI so user can start interacting again.
   */
  Drupal.MediaBrowser.stopLoader = function () {
    var $browser = $('.browser');
    $browser.css('opacity', '1');
    $browser.css('pointer-events', 'auto');
  };
})(jQuery, Drupal, drupalSettings);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc