You are here

class ContentSyncDialogHelper in Content Synchronization 8.2

Same name and namespace in other branches
  1. 8 src/Utility/ContentSyncDialogHelper.php \Drupal\content_sync\Utility\ContentSyncDialogHelper
  2. 3.0.x src/Utility/ContentSyncDialogHelper.php \Drupal\content_sync\Utility\ContentSyncDialogHelper

Helper class for dialog methods.

Hierarchy

Expanded class hierarchy of ContentSyncDialogHelper

File

src/Utility/ContentSyncDialogHelper.php, line 11

Namespace

Drupal\content_sync\Utility
View source
class ContentSyncDialogHelper {

  /**
   * Off canvas trigger name.
   *
   * @var string
   */
  protected static $offCanvasTriggerName;

  /**
   * Get Off canvas trigger name.
   *
   * @return string
   *   The off canvas trigger name.
   *
   * @see Issue #2862625: Rename offcanvas to two words in code and comments.
   * @see https://www.drupal.org/node/2862625
   */
  public static function getOffCanvasTriggerName() {
    if (isset(self::$offCanvasTriggerName)) {
      return self::$offCanvasTriggerName;
    }
    $main_content_renderers = \Drupal::getContainer()
      ->getParameter('main_content_renderers');
    if (isset($main_content_renderers['drupal_dialog_offcanvas'])) {
      self::$offCanvasTriggerName = 'offcanvas';
    }
    else {
      self::$offCanvasTriggerName = 'off_canvas';
    }
    return self::$offCanvasTriggerName;
  }

  /**
   * Use outside-in off-canvas system tray instead of dialogs.
   *
   * @return bool
   *   TRUE if outside_in.module is enabled and system trays are not disabled.
   */
  public static function useOffCanvas() {
    return floatval(\Drupal::VERSION) >= 8.300000000000001 && \Drupal::moduleHandler()
      ->moduleExists('outside_in') && !\Drupal::config('content_sync.settings')
      ->get('ui.offcanvas_disabled') ? TRUE : FALSE;
  }

  /**
   * Attach libraries required by (modal) dialogs.
   *
   * @param array $build
   *   A render array.
   */
  public static function attachLibraries(array &$build) {
    $build['#attached']['library'][] = 'content_sync/content_sync.admin.dialog';

    // @see \Drupal\content_sync\Element\content_syncHtmlEditor::preRendercontent_syncHtmlEditor
    if (\Drupal::moduleHandler()
      ->moduleExists('imce') && Imce::access()) {
      $element['#attached']['library'][] = 'imce/drupal.imce.ckeditor';
      $element['#attached']['drupalSettings']['content_sync']['html_editor']['ImceImageIcon'] = file_create_url(drupal_get_path('module', 'imce') . '/js/plugins/ckeditor/icons/imceimage.png');
    }
  }

  /**
   * Get modal dialog attributes.
   *
   * @param int $width
   *   Width of the modal dialog.
   * @param array $class
   *   Additional class names to be included in the dialog's attributes.
   *
   * @return array
   *   Modal dialog attributes.
   */
  public static function getModalDialogAttributes($width = 800, array $class = []) {
    if (\Drupal::config('content_sync.settings')
      ->get('ui.dialog_disabled')) {
      return $class ? [
        'class' => $class,
      ] : [];
    }
    else {
      $class[] = 'use-ajax';
      if (self::useOffCanvas()) {
        return [
          'class' => $class,
          'data-dialog-type' => 'dialog',
          'data-dialog-renderer' => self::getOffCanvasTriggerName(),
          'data-dialog-options' => Json::encode([
            'width' => $width > 480 ? 480 : $width,
          ]),
        ];
      }
      else {
        return [
          'class' => $class,
          'data-dialog-type' => 'modal',
          'data-dialog-options' => Json::encode([
            'width' => $width,
          ]),
        ];
      }
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ContentSyncDialogHelper::$offCanvasTriggerName protected static property Off canvas trigger name.
ContentSyncDialogHelper::attachLibraries public static function Attach libraries required by (modal) dialogs.
ContentSyncDialogHelper::getModalDialogAttributes public static function Get modal dialog attributes.
ContentSyncDialogHelper::getOffCanvasTriggerName public static function Get Off canvas trigger name.
ContentSyncDialogHelper::useOffCanvas public static function Use outside-in off-canvas system tray instead of dialogs.