]> source.dussan.org Git - nextcloud-server.git/commitdiff
new config parameter 'front_controller_active' which will instruct the url generator...
authorThomas Müller <thomas.mueller@tmit.eu>
Tue, 31 Dec 2013 13:36:02 +0000 (14:36 +0100)
committerThomas Müller <thomas.mueller@tmit.eu>
Tue, 31 Dec 2013 13:36:02 +0000 (14:36 +0100)
lib/private/server.php
lib/private/urlgenerator.php

index 77c3732a9cabdc2a76101c9552ef8d238241ade4..17565fafa46fef0b969c9b8a2797e21bc0f601fb 100644 (file)
@@ -120,7 +120,8 @@ class Server extends SimpleContainer implements IServerContainer {
                        return new \OC\L10N\Factory();
                });
                $this->registerService('URLGenerator', function($c) {
-                       return new \OC\URLGenerator();
+                       $config = $this->getConfig();
+                       return new \OC\URLGenerator($config);
                });
                $this->registerService('AppHelper', function($c) {
                        return new \OC\AppHelper();
@@ -249,7 +250,7 @@ class Server extends SimpleContainer implements IServerContainer {
        }
 
        /**
-        * @return \OC\Config
+        * @return \OCP\IConfig
         */
        function getConfig() {
                return $this->query('AllConfig');
index 7795011fd062ee9c78471b2475d8a97225e97535..4e3c11090007fdb23b91d52c7e9491659694665a 100644 (file)
@@ -15,6 +15,19 @@ use RuntimeException;
  * Class to generate URLs
  */
 class URLGenerator implements IURLGenerator {
+
+       /**
+        * @var \OCP\IConfig
+        */
+       private $config;
+
+       /**
+        * @param \OCP\IConfig $config
+        */
+       public function __construct($config) {
+               $this->config = $config;
+       }
+
        /**
         * @brief Creates an url using a defined route
         * @param $route
@@ -41,12 +54,18 @@ class URLGenerator implements IURLGenerator {
         * Returns a url to the given app and file.
         */
        public function linkTo( $app, $file, $args = array() ) {
+               $frontControllerActive=($this->config->getSystemValue('front_controller_active', 'false') == 'true');
+
                if( $app != '' ) {
                        $app_path = \OC_App::getAppPath($app);
                        // Check if the app is in the app folder
                        if ($app_path && file_exists($app_path . '/' . $file)) {
                                if (substr($file, -3) == 'php' || substr($file, -3) == 'css') {
+
                                        $urlLinkTo = \OC::$WEBROOT . '/index.php/apps/' . $app;
+                                       if ($frontControllerActive) {
+                                               $urlLinkTo = \OC::$WEBROOT . '/apps/' . $app;
+                                       }
                                        $urlLinkTo .= ($file != 'index.php') ? '/' . $file : '';
                                } else {
                                        $urlLinkTo = \OC_App::getAppWebPath($app) . '/' . $file;
@@ -58,7 +77,11 @@ class URLGenerator implements IURLGenerator {
                        if (file_exists(\OC::$SERVERROOT . '/core/' . $file)) {
                                $urlLinkTo = \OC::$WEBROOT . '/core/' . $file;
                        } else {
-                               $urlLinkTo = \OC::$WEBROOT . '/' . $file;
+                               if ($frontControllerActive && $file === 'index.php') {
+                                       $urlLinkTo = \OC::$WEBROOT;
+                               } else {
+                                       $urlLinkTo = \OC::$WEBROOT . '/' . $file;
+                               }
                        }
                }