From a62e109e8cafe710f7bf47c86815e34106852285 Mon Sep 17 00:00:00 2001 From: Frank Karlitschek Date: Thu, 23 Feb 2012 15:37:38 +0100 Subject: [PATCH] =?UTF-8?q?make=20the=20location=20of=20the=203rdparty=20f?= =?UTF-8?q?older=20flexible.=20It=C2=B4s=20automatically=20search=20in=20t?= =?UTF-8?q?he=20owncloud=20folder=20and=20in=20the=20parent=20folder.=20ov?= =?UTF-8?q?erride=20with=20an=20option=20in=20config.php=20is=20also=20pos?= =?UTF-8?q?sible?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/calendar/ajax/events.php | 2 +- config/config.sample.php | 2 ++ lib/base.php | 33 ++++++++++++++++++++++++++++++++- lib/template.php | 22 +++++++++++++++++++--- 4 files changed, 54 insertions(+), 5 deletions(-) diff --git a/apps/calendar/ajax/events.php b/apps/calendar/ajax/events.php index 7734129bd9..1436f63431 100755 --- a/apps/calendar/ajax/events.php +++ b/apps/calendar/ajax/events.php @@ -7,7 +7,7 @@ */ require_once ('../../../lib/base.php'); -require_once('../../../3rdparty/when/When.php'); +require_once('when/When.php'); function create_return_event($event, $vevent){ $return_event = array(); diff --git a/config/config.sample.php b/config/config.sample.php index cd52535871..5206737455 100755 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -13,6 +13,8 @@ $CONFIG = array( "forcessl" => false, "enablebackup" => false, "theme" => "", +"3rdpartyroot" => "", +"3rdpartyurl" => "", // "datadirectory" => "" ); ?> diff --git a/lib/base.php b/lib/base.php index 880645ff79..a95c9d2b21 100644 --- a/lib/base.php +++ b/lib/base.php @@ -54,6 +54,14 @@ class OC{ * the folder that stores the data for the root filesystem (e.g. /srv/http/owncloud/data) */ public static $CONFIG_DATADIRECTORY_ROOT = ''; + /** + * The installation path of the 3rdparty folder on the server (e.g. /srv/http/owncloud/3rdparty) + */ + public static $THIRDPARTYROOT = ''; + /** + * the root path of the 3rdparty folder for http requests (e.g. owncloud/3rdparty) + */ + public static $THIRDPARTYWEBROOT = ''; /** * SPL autoload @@ -138,12 +146,35 @@ class OC{ } OC::$WEBROOT=substr($scriptName,0,strlen($scriptName)-strlen(OC::$SUBURI)); + if(OC::$WEBROOT!='' and OC::$WEBROOT[0]!=='/'){ OC::$WEBROOT='/'.OC::$WEBROOT; } + // search the 3rdparty folder + if(OC_Config::getValue('3rdpartyroot', '')<>'' and OC_Config::getValue('3rdpartyurl', '')<>''){ + OC::$THIRDPARTYROOT=OC_Config::getValue('3rdpartyroot', ''); + OC::$THIRDPARTYWEBROOT=OC_Config::getValue('3rdpartyurl', ''); + }elseif(file_exists(OC::$SERVERROOT.'/3rdparty')){ + OC::$THIRDPARTYROOT=OC::$SERVERROOT; + OC::$THIRDPARTYWEBROOT=OC::$WEBROOT; + }elseif(file_exists(OC::$SERVERROOT.'/../3rdparty')){ + $url_tmp=explode('/',OC::$WEBROOT); + $length=count($url_tmp); + unset($url_tmp[$length-1]); + OC::$THIRDPARTYWEBROOT=implode('/',$url_tmp); + $root_tmp=explode('/',OC::$SERVERROOT); + $length=count($root_tmp); + unset($root_tmp[$length-1]); + OC::$THIRDPARTYROOT=implode('/',$root_tmp); + }else{ + echo("3rdparty directory not found! Please put the ownCloud 3rdparty folder in the ownCloud folder or the folder above. You can also configure the location in the config.php file."); + exit; + } + + // set the right include path - set_include_path(OC::$SERVERROOT.'/lib'.PATH_SEPARATOR.OC::$SERVERROOT.'/config'.PATH_SEPARATOR.OC::$SERVERROOT.'/3rdparty'.PATH_SEPARATOR.get_include_path().PATH_SEPARATOR.OC::$SERVERROOT); + set_include_path(OC::$SERVERROOT.'/lib'.PATH_SEPARATOR.OC::$SERVERROOT.'/config'.PATH_SEPARATOR.OC::$THIRDPARTYROOT.'/3rdparty'.PATH_SEPARATOR.get_include_path().PATH_SEPARATOR.OC::$SERVERROOT); // Redirect to installer if not installed if (!OC_Config::getValue('installed', false) && OC::$SUBURI != '/index.php') { diff --git a/lib/template.php b/lib/template.php index d991759fbc..5fe2eb7d6c 100644 --- a/lib/template.php +++ b/lib/template.php @@ -346,31 +346,41 @@ class OC_Template{ // Add the core js files or the js files provided by the selected theme foreach(OC_Util::$scripts as $script){ - if(is_file(OC::$SERVERROOT."/themes/$theme/apps/$script$fext.js" )){ + // Is it in 3rd party? + if(is_file(OC::$THIRDPARTYROOT."/$script.js" )){ + $page->append( "jsfiles", OC::$THIRDPARTYWEBROOT."/$script.js" ); + + // Is it in apps and overwritten by the theme? + }elseif(is_file(OC::$SERVERROOT."/themes/$theme/apps/$script$fext.js" )){ $page->append( "jsfiles", OC::$WEBROOT."/themes/$theme/apps/$script$fext.js" ); }elseif(is_file(OC::$SERVERROOT."/themes/$theme/apps/$script.js" )){ $page->append( "jsfiles", OC::$WEBROOT."/themes/$theme/apps/$script.js" ); + // Is it part of an app? }elseif(is_file(OC::$SERVERROOT."/apps/$script$fext.js" )){ $page->append( "jsfiles", OC::$WEBROOT."/apps/$script$fext.js" ); }elseif(is_file(OC::$SERVERROOT."/apps/$script.js" )){ $page->append( "jsfiles", OC::$WEBROOT."/apps/$script.js" ); + // Is it in the owncloud root but overwritten by the theme? }elseif(is_file(OC::$SERVERROOT."/themes/$theme/$script$fext.js" )){ $page->append( "jsfiles", OC::$WEBROOT."/themes/$theme/$script$fext.js" ); }elseif(is_file(OC::$SERVERROOT."/themes/$theme/$script.js" )){ $page->append( "jsfiles", OC::$WEBROOT."/themes/$theme/$script.js" ); - + + // Is it in the owncloud root ? }elseif(is_file(OC::$SERVERROOT."/$script$fext.js" )){ $page->append( "jsfiles", OC::$WEBROOT."/$script$fext.js" ); }elseif(is_file(OC::$SERVERROOT."/$script.js" )){ $page->append( "jsfiles", OC::$WEBROOT."/$script.js" ); + // Is in core but overwritten by a theme? }elseif(is_file(OC::$SERVERROOT."/themes/$theme/core/$script$fext.js" )){ $page->append( "jsfiles", OC::$WEBROOT."/themes/$theme/core/$script$fext.js" ); }elseif(is_file(OC::$SERVERROOT."/themes/$theme/core/$script.js" )){ $page->append( "jsfiles", OC::$WEBROOT."/themes/$theme/core/$script.js" ); + // Is it in core? }elseif(is_file(OC::$SERVERROOT."/core/$script$fext.js" )){ $page->append( "jsfiles", OC::$WEBROOT."/core/$script$fext.js" ); }else{ @@ -380,14 +390,20 @@ class OC_Template{ } // Add the css files foreach(OC_Util::$styles as $style){ - if(is_file(OC::$SERVERROOT."/apps/$style$fext.css" )){ + // is it in 3rdparty? + if(is_file(OC::$THIRDPARTYROOT."/$style.css" )){ + $page->append( "cssfiles", OC::$THIRDPARTYWEBROOT."/$style.css" ); + // or in apps? + }elseif(is_file(OC::$SERVERROOT."/apps/$style$fext.css" )){ $page->append( "cssfiles", OC::$WEBROOT."/apps/$style$fext.css" ); }elseif(is_file(OC::$SERVERROOT."/apps/$style.css" )){ $page->append( "cssfiles", OC::$WEBROOT."/apps/$style.css" ); + // or in the owncloud root? }elseif(is_file(OC::$SERVERROOT."/$style$fext.css" )){ $page->append( "cssfiles", OC::$WEBROOT."/$style$fext.css" ); }elseif(is_file(OC::$SERVERROOT."/$style.css" )){ $page->append( "cssfiles", OC::$WEBROOT."/$style.css" ); + // or in core ? }elseif(is_file(OC::$SERVERROOT."/core/$style$fext.css" )){ $page->append( "cssfiles", OC::$WEBROOT."/core/$style$fext.css" ); }else{