diff --git a/core/core.php b/core/core.php index 72664781..30514814 100644 --- a/core/core.php +++ b/core/core.php @@ -1393,17 +1393,9 @@ class core extends common { } // Redirection if($output['redirect']) { - // Redirection Lity - if ($output['script'] === 'redirectdatality') { + if (!empty($output['script']) ) { $this->addOutput ([ - 'script' => '$(document).on("lity:close", function(event, instance) { - location.replace("' . helper::baseURl() . '"); - }); - // Open a URL in a lightbox - var lightbox = lity("'. $output['redirect'] .'"); - - // Bind as an event handler - $(document).on("click", "[data-lightbox]", lity);' + 'script' => $output['script'] ]); } else { http_response_code(301); diff --git a/module/redirection/redirection.php b/module/redirection/redirection.php index 8bf8db6a..10091706 100644 --- a/module/redirection/redirection.php +++ b/module/redirection/redirection.php @@ -18,6 +18,12 @@ class redirection extends common { 'config' => self::GROUP_MODERATOR, 'index' => self::GROUP_VISITOR ]; + public static $openIn = [ + 'tab' => 'Un nouvel onglet', + 'lity' => 'Une popup intégrée', + 'popup' => 'Une popup', + 'window' => 'La fenêtre' + ]; const REDIRECTION_VERSION = '1.4'; @@ -29,7 +35,7 @@ class redirection extends common { if($this->isPost()) { $this->setData(['module', $this->getUrl(0), [ 'url' => $this->getInput('redirectionConfigUrl', helper::FILTER_URL, true), - 'openIn' => $this->getInput('redirectionConfigOpenIn', helper::FILTER_BOOLEAN) + 'target' => $this->getInput('redirectionConfigTarget'), ]]); // Valeurs en sortie $this->addOutput([ @@ -66,10 +72,33 @@ class redirection extends common { else { // Incrémente le compteur de clics $this->setData(['module', $this->getUrl(0), 'count', helper::filter($this->getData(['module', $this->getUrl(0), 'count']) + 1, helper::FILTER_INT)]); + + switch ($this->getData(['module', $this->getUrl(0), 'target'])) { + case 'tab': + $script = ' window.history.back(); + window.open("' . $this->getData(['module',$this->getUrl(0), 'url']) . '", "_blank");'; + break; + case 'lity': + $script = '$(document).on("lity:close", function(event, instance) { + location.replace("' . helper::baseURl() . '"); + }); + // Open a URL in a lightbox + var lightbox = lity("'. $this->getData(['module',$this->getUrl(0), 'url']) .'"); + + // Bind as an event handler + $(document).on("click", "[data-lightbox]", lity);'; + break; + case "popup": + $script = ' window.history.back(); + window.open("' . $this->getData(['module',$this->getUrl(0), 'url']) . '", "_blank", "toolbar=0,location=0,menubar=0");'; + break; + case 'window': + $script = ''; + } // Valeurs en sortie $this->addOutput([ 'redirect' => $this->getData(['module', $this->getUrl(0), 'url']), - 'script' => $this->getData(['module', $this->getUrl(0), 'openIn']) ? 'redirectdatality' : '', + 'script' => $script, 'state' => true ]); } diff --git a/module/redirection/view/config/config.php b/module/redirection/view/config/config.php index 4f284fb3..40901a52 100644 --- a/module/redirection/view/config/config.php +++ b/module/redirection/view/config/config.php @@ -21,10 +21,10 @@ 'placeholder' => 'http://', 'value' => $this->getData(['module', $this->getUrl(0), 'url']) ]); ?> - $this->getData(['module', $this->getUrl(0), 'openIn']) - ]); - ?> + 'Ouvrir dans', + 'selected' => $this->getData(['module', $this->getUrl(0), 'target']) + ]); ?>