Fixed #11608: t3lib_beFunc::viewOnClick - Extract logic to find the right frontend...
authorBenni Mack <benni.mack@typo3.org>
Sun, 21 Feb 2010 13:51:36 +0000 (13:51 +0000)
committerBenni Mack <benni.mack@typo3.org>
Sun, 21 Feb 2010 13:51:36 +0000 (13:51 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@6931 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
t3lib/class.t3lib_befunc.php

index 457e338..9e45e23 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 2010-02-21  Benjamin Mack  <benni@typo3.org>
 
+       * Fixed #11608: t3lib_beFunc::viewOnClick - Extract logic to find the right frontend domain (Thanks to Michael Klapper)
        * Fixed #12201: Replace header(Location:) with t3lib_div::redirect() (Thanks to Steffen Gebert)
 
 2010-02-21  Xavier Perseguers  <typo3@perseguers.ch>
index d99177f..0396be5 100644 (file)
@@ -2626,15 +2626,6 @@ final class t3lib_BEfunc {
                        $viewScriptPreviewEnabled = $viewScriptPreviewDisabled = $altUrl;
                }
 
-                       // check alternate Domains
-               if ($rootLine)  {
-                       $parts = parse_url(t3lib_div::getIndpEnv('TYPO3_SITE_URL'));
-                       if (t3lib_BEfunc::getDomainStartPage($parts['host'],$parts['path'])) {
-                               $preUrl_temp = t3lib_BEfunc::firstDomainRecord($rootLine);
-                       }
-               }
-               $preUrl = $preUrl_temp ? (t3lib_div::getIndpEnv('TYPO3_SSL') ? 'https://' : 'http://') . $preUrl_temp : $backPath . '..';
-
                        // Look if a fixed preview language should be added:
                $viewLanguageOrder = $GLOBALS['BE_USER']->getTSConfigVal('options.view.languageOrder');
                if (strlen($viewLanguageOrder)) {
@@ -2659,14 +2650,13 @@ final class t3lib_BEfunc {
                                        break;
                                }
                        }
-
                                // Add it:
                        $addGetVars .= $suffix;
                }
 
-               $urlPreviewEnabled  = $preUrl . $viewScriptPreviewEnabled . $id . $addGetVars . $anchor;
-               $urlPreviewDisabled = $preUrl . $viewScriptPreviewDisabled . $id . $addGetVars . $anchor;
-
+               $viewDomain = t3lib_BEfunc::getViewDomain($id, $rootLine);
+               $urlPreviewEnabled  = $viewDomain . $viewScriptPreviewEnabled . $id . $addGetVars . $anchor;
+               $urlPreviewDisabled = $viewDomain . $viewScriptPreviewDisabled . $id . $addGetVars . $anchor;           
 
                return "previewWin=window.open(top.WorkspaceFrontendPreviewEnabled?'" .
                        $urlPreviewDisabled . "':'" . $urlPreviewEnabled .
@@ -2674,6 +2664,36 @@ final class t3lib_BEfunc {
        }
 
        /**
+        * Builds the frontend view domain for a given page ID with a given root
+        * line.
+        *
+        * @param integer $pageId the page ID to use, must be > 0
+        * @param array $rootLine the root line structure to use
+        *
+        * @return string the full domain including the protocol http:// or https://
+        *
+        * @author Michael Klapper <michael.klapper@aoemedia.de>
+        */
+       public static function getViewDomain($pageId, $rootLine = null) {
+               $domain = t3lib_div::getIndpEnv('TYPO3_SITE_URL');
+
+               if (!is_array($rootLine)) {
+                       $rootLine = t3lib_BEfunc::BEgetRootLine($pageId);
+               }
+               
+                       // checks alternate domains
+               if (count($rootLine) > 0) {
+                       $urlParts = parse_url($domain);
+                       if (t3lib_BEfunc::getDomainStartPage($urlParts['host'], $urlParts['path'])) {
+                               $protocol = t3lib_div::getIndpEnv('TYPO3_SSL') ? 'https://' : 'http://';
+                               $domain = $protocol . t3lib_BEfunc::firstDomainRecord($rootLine);
+                       }
+               }
+
+               return $domain;
+       }       
+       
+       /**
         * Returns the merged User/Page TSconfig for page id, $id.
         * Please read details about module programming elsewhere!
         * Usage: 15