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

Reply via email to