Commit 4628e98c authored by Thomas Müller's avatar Thomas Müller
Browse files

Merge pull request #13063 from AdamWill/assets-relocate

allow css/js asset directory to be relocated ('assetdirectory')
parents 2daf90da bb79aac7
...@@ -810,6 +810,16 @@ $CONFIG = array( ...@@ -810,6 +810,16 @@ $CONFIG = array(
*/ */
'asset-pipeline.enabled' => false, 'asset-pipeline.enabled' => false,
/**
* The parent of the directory where css and js assets will be stored if
* piplelining is enabled; this defaults to the ownCloud directory. The assets
* will be stored in a subdirectory of this directory named 'assets'. The
* server *must* be configured to serve that directory as $WEBROOT/assets.
* You will only likely need to change this if the main ownCloud directory
* is not writeable by the web server in your configuration.
*/
'assetdirectory' => '/var/www/owncloud',
/** /**
* Where ``mount.json`` file should be stored, defaults to ``data/mount.json`` * Where ``mount.json`` file should be stored, defaults to ``data/mount.json``
*/ */
......
...@@ -233,13 +233,14 @@ class OC_Template extends \OC\Template\Base { ...@@ -233,13 +233,14 @@ class OC_Template extends \OC\Template\Base {
*/ */
public static function isAssetPipelineEnabled() { public static function isAssetPipelineEnabled() {
// asset management enabled? // asset management enabled?
$useAssetPipeline = \OC::$server->getConfig()->getSystemValue('asset-pipeline.enabled', false); $config = \OC::$server->getConfig();
$useAssetPipeline = $config->getSystemValue('asset-pipeline.enabled', false);
if (!$useAssetPipeline) { if (!$useAssetPipeline) {
return false; return false;
} }
// assets folder exists? // assets folder exists?
$assetDir = \OC::$SERVERROOT . '/assets'; $assetDir = $config->getSystemValue('assetdirectory', \OC::$SERVERROOT) . '/assets';
if (!is_dir($assetDir)) { if (!is_dir($assetDir)) {
if (!mkdir($assetDir)) { if (!mkdir($assetDir)) {
\OCP\Util::writeLog('assets', \OCP\Util::writeLog('assets',
......
...@@ -155,10 +155,11 @@ class OC_TemplateLayout extends OC_Template { ...@@ -155,10 +155,11 @@ class OC_TemplateLayout extends OC_Template {
} }
public function generateAssets() { public function generateAssets() {
$assetDir = \OC::$server->getConfig()->getSystemValue('assetdirectory', \OC::$SERVERROOT);
$jsFiles = self::findJavascriptFiles(OC_Util::$scripts); $jsFiles = self::findJavascriptFiles(OC_Util::$scripts);
$jsHash = self::hashFileNames($jsFiles); $jsHash = self::hashFileNames($jsFiles);
if (!file_exists("assets/$jsHash.js")) { if (!file_exists("$assetDir/assets/$jsHash.js")) {
$jsFiles = array_map(function ($item) { $jsFiles = array_map(function ($item) {
$root = $item[0]; $root = $item[0];
$file = $item[2]; $file = $item[2];
...@@ -176,14 +177,14 @@ class OC_TemplateLayout extends OC_Template { ...@@ -176,14 +177,14 @@ class OC_TemplateLayout extends OC_Template {
$jsCollection = new AssetCollection($jsFiles); $jsCollection = new AssetCollection($jsFiles);
$jsCollection->setTargetPath("assets/$jsHash.js"); $jsCollection->setTargetPath("assets/$jsHash.js");
$writer = new AssetWriter(\OC::$SERVERROOT); $writer = new AssetWriter($assetDir);
$writer->writeAsset($jsCollection); $writer->writeAsset($jsCollection);
} }
$cssFiles = self::findStylesheetFiles(OC_Util::$styles); $cssFiles = self::findStylesheetFiles(OC_Util::$styles);
$cssHash = self::hashFileNames($cssFiles); $cssHash = self::hashFileNames($cssFiles);
if (!file_exists("assets/$cssHash.css")) { if (!file_exists("$assetDir/assets/$cssHash.css")) {
$cssFiles = array_map(function ($item) { $cssFiles = array_map(function ($item) {
$root = $item[0]; $root = $item[0];
$file = $item[2]; $file = $item[2];
...@@ -204,7 +205,7 @@ class OC_TemplateLayout extends OC_Template { ...@@ -204,7 +205,7 @@ class OC_TemplateLayout extends OC_Template {
$cssCollection = new AssetCollection($cssFiles); $cssCollection = new AssetCollection($cssFiles);
$cssCollection->setTargetPath("assets/$cssHash.css"); $cssCollection->setTargetPath("assets/$cssHash.css");
$writer = new AssetWriter(\OC::$SERVERROOT); $writer = new AssetWriter($assetDir);
$writer->writeAsset($cssCollection); $writer->writeAsset($cssCollection);
} }
......
...@@ -22,7 +22,7 @@ class AssetCache extends BasicEmitter implements \OC\RepairStep { ...@@ -22,7 +22,7 @@ class AssetCache extends BasicEmitter implements \OC\RepairStep {
$this->emit('\OC\Repair', 'info', array('Asset pipeline disabled -> nothing to do')); $this->emit('\OC\Repair', 'info', array('Asset pipeline disabled -> nothing to do'));
return; return;
} }
$assetDir = \OC::$SERVERROOT . '/assets'; $assetDir = \OC::$server->getConfig()->getSystemValue('assetdirectory', \OC::$SERVERROOT) . '/assets';
\OC_Helper::rmdirr($assetDir, false); \OC_Helper::rmdirr($assetDir, false);
$this->emit('\OC\Repair', 'info', array('Asset cache cleared.')); $this->emit('\OC\Repair', 'info', array('Asset cache cleared.'));
} }
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment