Commit 2580b078 authored by cosolom's avatar cosolom Committed by George
Browse files

Issue #3318255: Allow add custom onesignal snippets

parent 318d168a
Loading
Loading
Loading
Loading
+33 −46
Original line number Diff line number Diff line
@@ -51,76 +51,62 @@ function onesignal_page_attachments(&$attachments) {
   * });
   * @endcode
   */
  $onesignal_javascript_header = '
  var OneSignal = window.OneSignal || [];
  OneSignal.push(function() {
    OneSignal.init({
      appId: "' . $config_manager->getAppId() . '",';

  $config = [];
  $config['appId'] = $config_manager->getAppId();
  if (!empty($config_manager->getSafariWebId())) {
    $onesignal_javascript_header .= '
      safari_web_id: "' . $config_manager->getSafariWebId() . '",';
    $config['safari_web_id'] = $config_manager->getSafariWebId();
  }

  if (!empty($config_manager->getAutoRegister())) {
    $onesignal_javascript_header .= '
      autoRegister: "' . $config_manager->getAutoRegister() . '",';
    $config['autoRegister'] = $config_manager->getAutoRegister();
  }

  if (!empty($config_manager->getLocalhostSecure())) {
    $onesignal_javascript_header .= '
      allowLocalhostAsSecureOrigin: true,';
    $config['allowLocalhostAsSecureOrigin'] = TRUE;
  }

  if (!empty($config_manager->getNotifyButton())) {
    $onesignal_javascript_header .= '
      notifyButton: {
        enable: "' . $config_manager->getNotifyButton() . '",
      },';
    $config['notifyButton'] = [
      'enable' => $config_manager->getNotifyButton(),
    ];
  }

  // Print welcomeNotification block.
  if (!empty($config_manager->getWelcomeTitle()) || !empty($config_manager->getWelcomeMessage())) {
    $onesignal_javascript_header .= '
      welcomeNotification: {';
    $config['welcomeNotification'] = [];
    if (!empty($config_manager->getWelcomeTitle())) {
      $onesignal_javascript_header .= '
        title: "' . $config_manager->getWelcomeTitle() . '",';
      $config['welcomeNotification']['title'] = $config_manager->getWelcomeTitle();
    }
    if (!empty($config_manager->getWelcomeMessage())) {
      $onesignal_javascript_header .= '
        message: "' . $config_manager->getWelcomeMessage() . '",';
      $config['welcomeNotification']['message'] = $config_manager->getWelcomeMessage();
    }
    $onesignal_javascript_header .= '
      },';
  }

  // Print promptOptions block.
  if (!empty($config_manager->getActionMessage()) || !empty($config_manager->getAcceptButtonText()) || !empty($config_manager->getCancelButtonText())) {
    $onesignal_javascript_header .= '
      promptOptions: {';
    $config['promptOptions'] = [];
    if (!empty($config_manager->getActionMessage())) {
      $onesignal_javascript_header .= '
        actionMessage: "' . $config_manager->getActionMessage() . '",';
      $config['promptOptions']['actionMessage'] = $config_manager->getActionMessage();
    }
    if (!empty($config_manager->getAcceptButtonText())) {
      $onesignal_javascript_header .= '
        acceptButtonText: "' . $config_manager->getAcceptButtonText() . '",';
      $config['promptOptions']['acceptButtonText'] = $config_manager->getAcceptButtonText();
    }
    if (!empty($config_manager->getCancelButtonText())) {
      $onesignal_javascript_header .= '
        cancelButtonText: "' . $config_manager->getCancelButtonText() . '",';
      $config['promptOptions']['cancelButtonText'] = $config_manager->getCancelButtonText();
    }
    $onesignal_javascript_header .= '
  }
  ';
  }

  // Close the Onsignal initialization code.
  $onesignal_javascript_header .= '
    });
  $extra_js = \Drupal::service('module_handler')->invokeAll('onesignal_extra_js');
  $inline_js = [
    '#type' => 'inline_template',
    '#template' => "
        var OneSignal = window.OneSignal || [];
        OneSignal.push(function() {
          {{ extra_js|raw }}
          OneSignal.init({{ onesignal_json|raw }});
        });
  ';
      ",
    '#context' => [
      'onesignal_json' => json_encode($config),
      'extra_js' => implode(PHP_EOL, $extra_js),
    ],
  ];
  $inline_js = \Drupal::service('renderer')->renderPlain($inline_js);

  $attachments['#attached']['html_head'][] = [
    // The data.
@@ -128,7 +114,8 @@ function onesignal_page_attachments(&$attachments) {
      // Add a <script> tag.
      '#tag' => 'script',
      // Add the JavaScript code to the <script> tag.
      '#value' => Markup::create($onesignal_javascript_header),
      // '#value' => Markup::create($onesignal_javascript_header),
      '#value' => $inline_js,
      // Set a weight so this code appears after meta tags, etc.
      '#weight' => -1,
    ],