コード例 #1
0
 protected static function registerAssetsManagerGroups(ResourceLoader $resourceLoader)
 {
     if (empty(self::$assetsManagerGroups)) {
         return true;
     }
     $assetsConfig = new AssetsConfig();
     foreach (self::$assetsManagerGroups as $moduleName => $groupName) {
         $type = $assetsConfig->getGroupType($groupName);
         $key = null;
         switch ($type) {
             case AssetsManager::TYPE_JS:
                 $key = 'scripts';
                 break;
             case AssetsManager::TYPE_CSS:
             case AssetsManager::TYPE_SCSS:
                 $key = 'styles';
                 break;
         }
         if (empty($key)) {
             // todo: log error
             continue;
         }
         $assets = $assetsConfig->resolve($groupName, false, false);
         foreach ($assets as $k => $v) {
             if (!preg_match('#^(extensions|resources|skins)/#', $v)) {
                 unset($assets[$k]);
             }
         }
         $assets = array_values($assets);
         $module = array();
         $module[$key] = $assets;
         $resourceLoader->register($moduleName, $module);
     }
     return true;
 }
コード例 #2
0
 public function __construct(WebRequest $request)
 {
     parent::__construct($request);
     global $IP, $wgUser;
     $ac = new AssetsConfig();
     $assets = $ac->resolve($this->mOid, true, !isset($this->mParams['minify']) || $this->mParams['minify'] == true, $this->mParams);
     $this->mContentType = $ac->getGroupType($this->mOid);
     foreach ($assets as $asset) {
         // reference to a file to be fetched by the browser from external server (BugId:9522)
         if (substr($asset, 0, 10) == '#external_') {
             // do nothing
         } else {
             if (Http::isValidURI($asset)) {
                 $params = array();
                 $url = parse_url($asset);
                 if (isset($url['query'])) {
                     parse_str($url['query'], $params);
                 }
                 // Start checking the url to see if it is something we care about (BugId:30188)
                 if (isset($params['action']) && $params['action'] == 'raw' && isset($params['gen']) && $params['gen'] == 'js') {
                     //$this->mContent .= RequestContext::getMain()->getSkin()->generateUserJs(); // FIXME
                 } else {
                     if (isset($params['action']) && $params['action'] == 'raw' && isset($params['gen']) && $params['gen'] == 'css') {
                         //$this->mContent .= RequestContext::getMain()->getSkin()->generateUserStylesheet(); // FIXME
                     } else {
                         //Debug added on May 4, 2012 to inquire external requests spikes
                         $start = microtime(true);
                         $this->mContent .= HTTP::get($asset);
                         $totalTime = microtime(true) - $start;
                         if ($totalTime >= 1) {
                             Wikia::log(__METHOD__, false, "oid: {$this->mOid}, totalTime: {$totalTime}, asset: {$asset}, referrer: {$_SERVER['HTTP_REFERER']}, entrypoint: {$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}", true);
                         }
                     }
                 }
             } else {
                 $this->mContent .= file_get_contents($IP . '/' . $asset);
             }
         }
         if ($this->mContentType == AssetsManager::TYPE_JS) {
             // add semicolon to separate concatenated files (BugId:20272)
             // but only for JS (BugId:20824)
             $this->mContent .= ";\n";
         }
     }
     // For RTE only
     // TODO: add "filters" definitions to config.php
     if ($this->mOid == 'rte' || $this->mOid == 'eplrte' || $this->mOid == 'mini_editor_rte_js') {
         $this->mContent = preg_replace('#^.*@Packager\\.RemoveLine.*$#m', '', $this->mContent);
         $this->mContent = str_replace("", '', $this->mContent);
     }
 }
コード例 #3
0
/**
 * @param User $user
 * @param $result
 * @return bool
 */
function AssetsManagerClearCookie($user, &$result)
{
    global $wgRequest;
    if ($wgRequest->getVal('action') === 'ajax' && $wgRequest->getVal('rs') === 'AssetsManagerEntryPoint' && !AssetsConfig::isUserDependent($wgRequest->getVal('oid'))) {
        $result = new User();
    }
    return true;
}
コード例 #4
0
ファイル: AppAssets.php プロジェクト: apuc/app_to_vk
 public static function getJs()
 {
     $dop_dir = DOP_DIR;
     foreach (AssetsConfig::js() as $js) {
         if ($js[0] == '/') {
             echo "<script type='text/javascript' src='{$js}'></script>";
         } else {
             echo "<script type='text/javascript' src='{$dop_dir}/assets/{$js}'></script>";
         }
     }
 }
コード例 #5
0
 /**
  * Loads packages definitions from config.php
  *
  * @author Federico "Lox" Lucignano <federico(at)wikia-inc.com>
  */
 private function load()
 {
     if (empty(self::$mConfig)) {
         wfProfileIn(__METHOD__);
         include 'config.php';
         /* @var $config Array */
         self::$mConfig = $config;
         wfProfileOut(__METHOD__);
         wfProfileIn(__METHOD__ . 'Groups');
         foreach (glob(__DIR__ . '/configGroups/*Config.php') as $fileName) {
             include $fileName;
             $configFileName = pathinfo($fileName)['filename'];
             if (!empty(${$configFileName})) {
                 $configVar = ${$configFileName};
                 self::$mConfig = array_merge(self::$mConfig, $configVar);
             }
         }
         wfProfileOut(__METHOD__ . 'Groups');
     }
 }
コード例 #6
0
 public function duplicateAssetsDataProvider()
 {
     $dataSets = array();
     $config = new AssetsConfig();
     // single assets
     $packages = $config->getGroupNames();
     foreach ($packages as $name) {
         $files = $config->resolve($name, false, false);
         $dataSets[] = array($name, $files);
     }
     return $dataSets;
 }
コード例 #7
0
 public function getVary()
 {
     $isCookieDependent = AssetsConfig::isUserDependent($this->mOid);
     return $isCookieDependent ? 'Cookie,Accept-Encoding' : 'Accept-Encoding';
 }