Tweichart has uploaded a new change for review. https://gerrit.wikimedia.org/r/179457
Change subject: [WIP] flexiskin compatibility to bs 2.23 skin ...................................................................... [WIP] flexiskin compatibility to bs 2.23 skin * now uses variables.css * overwriting of bs less variables implemented Change-Id: I82dabc512d71f560686766920b89bd7a37089f6d --- M Flexiskin/Flexiskin.class.php 1 file changed, 57 insertions(+), 10 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/BlueSpiceExtensions refs/changes/57/179457/1 diff --git a/Flexiskin/Flexiskin.class.php b/Flexiskin/Flexiskin.class.php index eaca0a0..b7ed7f0 100644 --- a/Flexiskin/Flexiskin.class.php +++ b/Flexiskin/Flexiskin.class.php @@ -76,19 +76,53 @@ * Initialization of ArticleInfo extension */ public function initExt() { - global $wgOut, $wgRequest, $wgUploadPath; wfProfileIn('BS::' . __METHOD__); //$this->mCore->registerPermission('flexiskinchange'); self::$sFlexiskinPath = BsFileSystemHelper::getDataDirectory('flexiskin') . DS; BsConfig::registerVar('MW::Flexiskin::Active', "default", BsConfig::LEVEL_PUBLIC | BsConfig::TYPE_STRING | BsConfig::USE_PLUGIN_FOR_PREFS, 'bs-flexiskin-pref-active', 'select'); BsConfig::registerVar('MW::Flexiskin::Logo', "", BsConfig::LEVEL_PUBLIC | BsConfig::TYPE_STRING | BsConfig::USE_PLUGIN_FOR_PREFS, 'bs-flexiskin-pref-logo', 'text'); - if (self::getVal('flexiskin') || BsConfig::get('MW::Flexiskin::Active') != '') { - $sId = self::getVal('flexiskin') != '' ? self::getVal('flexiskin') : BsConfig::get('MW::Flexiskin::Active'); - if ($sId != "default") - $wgOut->addHeadItem('flexiskin', "<link rel='stylesheet' href='" . $wgUploadPath . "/bluespice/flexiskin/" . $sId . "/style" . (self::getVal('preview', '') != "" ? '.tmp' : '') . ".css'>"); + if ( self::getVal( 'flexiskin' ) || BsConfig::get( 'MW::Flexiskin::Active' ) != '' ) { + $sId = self::getVal( 'flexiskin' ) != '' ? self::getVal( 'flexiskin' ) : BsConfig::get( 'MW::Flexiskin::Active' ); + if ( $sId != "default" ) { + $bIsTemp = self::getVal( 'preview', '' ) != "" ? true : false; + $this->addCssFile( $sId, $bIsTemp ); + } } $this->mCore->registerPermission('flexiskinedit'); wfProfileOut('BS::' . __METHOD__); + } + + /** + * Replaces the BlueSpiceSkin screen.less file with the one specified by the parameters + * @global string $wgResourceModules + * @global string $wgStyleDirectory + * @global string $wgUploadDirectory + * @param string $sFlexiskinId + * @param int $bIsTemp + * @return boolean true of replaced correctly, otherwise false + */ + public function addCssFile( $sFlexiskinId, $bIsTemp = false ) { + global $wgResourceModules, $wgUploadPath, $wgUploadDirectory; + $sFilePath = ""; + $sFilePath .= "/bluespice/flexiskin/" . $sFlexiskinId; + $sFilePath .= "/screen" . ($bIsTemp ? '.tmp' : '') . ".less"; + $sFullFilePath = realpath( $wgUploadDirectory . $sFilePath ); + if ( $sFullFilePath === false || !file_exists( $sFullFilePath ) ) { + return false; + } + if ( !isset( $wgResourceModules['skins.bluespiceskin'] ) || + !isset( $wgResourceModules['skins.bluespiceskin']['styles'] ) ) { + return false; + } + foreach ( $wgResourceModules['skins.bluespiceskin']['styles'] as $iIndex => $sStylePath ) { + //check if element ends with "screen.less" + if ( strpos( $sStylePath, "screen.less", strlen( $sStylePath ) - strlen( "screen.less" ) ) === false ) { + continue; + } + $wgResourceModules['skins.bluespiceskin']['styles'][$iIndex] = ".." . $wgUploadPath . $sFilePath; + return true; + } + return false; } public function getForm( $firsttime = false ) { @@ -176,16 +210,27 @@ return json_encode(array('success' => false, 'msg' => wfMessage('bs-flexiskin-error-fail-add-skin', self::getErrorMessage($oStatus))->plain())); } if ( $oData->template != 'default' ){ - $oStatus = BsFileSystemHelper::copyFile('style.css', "flexiskin" . DS . $oData->template, "flexiskin" . DS . md5($sId)); + $oStatus = BsFileSystemHelper::copyFile('variables.less', "flexiskin" . DS . $oData->template, "flexiskin" . DS . md5($sId)); $oStatus = BsFileSystemHelper::copyFolder("images", "flexiskin" . DS . $oData->template, "flexiskin" . DS . md5($sId)); } else{ - $oStatus = BsFileSystemHelper::saveToDataDirectory('style.css', self::generateStyleFile($sConfigFile), "flexiskin" . DS . md5($sId)); + $oStatus = BsFileSystemHelper::saveToDataDirectory('variables.less', self::generateStyleFile($sConfigFile), "flexiskin" . DS . md5($sId)); } + $oStatus = BsFileSystemHelper::saveToDataDirectory('screen.less', self::generateScreenFile(), "flexiskin" . DS . md5($sId)); + $oStatus = BsFileSystemHelper::saveToDataDirectory('screen.tmp.less', self::generateScreenFile(true), "flexiskin" . DS . md5($sId)); if (!$oStatus->isGood()) return json_encode(array('success' => false, 'msg' => wfMessage('bs-flexiskin-error-fail-add-skin', self::getErrorMessage($oStatus))->plain())); BsFileSystemHelper::ensureDataDirectory("flexiskin" . DS . md5($sId) . DS . "images"); return json_encode(array('success' => true)); + } + + private static function generateScreenFile($bIsTmp = false){ + $aScreenFile = array(); + $aScreenFile[] = "@import '../../../../skins/BlueSpiceSkin/resources/variables.less';"; + $aScreenFile[] = "@import 'variables.".($bIsTmp ? "tmp." : "")."less';"; + $aScreenFile[] = "@import '../../../../skins/BlueSpiceSkin/resources/screen.layout.less';"; + $aScreenFile[] = "@import '../../../../skins/BlueSpiceSkin/resources/components.less';"; + return implode("\n", $aScreenFile); } private static function generateConfigFile($oData) { @@ -235,19 +280,20 @@ $aFile[] = call_user_func($func, $aConfig); } */ $sId = self::getVal('id'); - $oStatus = BsFileSystemHelper::saveToDataDirectory("style.tmp.css", $aFile, "flexiskin" . DS . $sId); + $oStatus = BsFileSystemHelper::saveToDataDirectory("variables.tmp.less", $aFile, "flexiskin" . DS . $sId); if (!$oStatus->isGood()) return json_encode(array('success' => false, 'msg' => wfMessage("bs-flexiskin-error-save-preview", self::getErrorMessage($oStatus))->plain())); $oStatus = BsFileSystemHelper::saveToDataDirectory("conf.tmp.json", $aData['data'], "flexiskin" . DS . $sId); if (!$oStatus->isGood()) return json_encode(array('success' => false, 'msg' => wfMessage("bs-flexiskin-error-save-preview", self::getErrorMessage($oStatus))->plain())); + RequestContext::getMain()->getTitle()->invalidateCache(); return json_encode(array('success' => true, 'src' => $wgScriptPath . "/index.php?flexiskin=" . self::getVal('id') . "&preview=true")); } public static function resetFlexiskin() { global $wgRequest, $wgScriptPath; $sId = self::getVal('id'); - $oStatus = BsFileSystemHelper::deleteFile("style.tmp.css", "flexiskin" . DS . $sId); + $oStatus = BsFileSystemHelper::deleteFile("variables.tmp.less", "flexiskin" . DS . $sId); if (!$oStatus->isGood()) return json_encode(array('success' => false, 'msg' => wfMessage("bs-flexiskin-reset-error", self::getErrorMessage($oStatus))->plain())); $oStatus = BsFileSystemHelper::deleteFile("conf.tmp.json", "flexiskin" . DS . $sId); @@ -280,7 +326,7 @@ //may happen if (!is_dir(self::$sFlexiskinPath . "/" . self::$iNewId)) mkdir(self::$sFlexiskinPath . "/" . self::$iNewId); - $oStatus = BsFileSystemHelper::saveToDataDirectory("style.css", $aFile, "flexiskin" . DS . self::$iNewId); + $oStatus = BsFileSystemHelper::saveToDataDirectory("variables.less", $aFile, "flexiskin" . DS . self::$iNewId); if (!$oStatus->isGood()) return json_encode(array('success' => false, 'msg' => wfMessage("bs-flexiskin-error-save", self::getErrorMessage($oStatus))->plain())); $oStatus = BsFileSystemHelper::saveToDataDirectory("conf.json", $aData['data'], "flexiskin" . DS . self::$iNewId); @@ -311,6 +357,7 @@ $aFile = array(); if (!is_array($aConfigs)) $aConfigs = json_decode($aConfigs); + $aFile[] = '@bs-skin-path: "../../../../skins/BlueSpiceSkin/resources/";'; foreach ($aConfigs as $aConfig) { $func = "Flexiskin::format_" . $aConfig->id; if (is_callable($func)) -- To view, visit https://gerrit.wikimedia.org/r/179457 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I82dabc512d71f560686766920b89bd7a37089f6d Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/BlueSpiceExtensions Gerrit-Branch: master Gerrit-Owner: Tweichart <weich...@hallowelt.biz> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits