[РАСШИРЕНИЕ] extendedclientscript

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
DropSQL
Сообщения: 102
Зарегистрирован: 2010.02.19, 22:20
Откуда: Киев

[РАСШИРЕНИЕ] extendedclientscript

Сообщение DropSQL »

Всем привет!
В общем решил воспользоваться расширением, а оно не работает, возможно проблема в настройке моего веб сервера, но всёже решение универстальное:
файл ExtendedClientScript: строка 205

Код: Выделить всё

$this->basePath or $this->basePath = realpath($_SERVER['DOCUMENT_ROOT']); 
заменить на:

Код: Выделить всё

$this->basePath or $this->basePath = Yii::getPathOfAlias('webroot'); 
По моему правильно и универсально.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: [РАСШИРЕНИЕ] extendedclientscript

Сообщение samdark »

А к нам это какое отношение имеет? Автору расширения надо сообщать…
DropSQL
Сообщения: 102
Зарегистрирован: 2010.02.19, 22:20
Откуда: Киев

Re: [РАСШИРЕНИЕ] extendedclientscript

Сообщение DropSQL »

http://www.yiiframework.com/forum/index ... ge__st__40
Ты ему помогал, видимо нет у него желание менять... по этому пишу сюда, извини если не туда, хотелось бы рабочее расширение
DropSQL
Сообщения: 102
Зарегистрирован: 2010.02.19, 22:20
Откуда: Киев

Re: [РАСШИРЕНИЕ] extendedclientscript

Сообщение DropSQL »

Ещё ccsmin использует JSMin, по этому лучше импорт вынести раньше запуска этих фукнций и в любом случае инклудить сразу эти 2 класса, без каких либо условий, я сделал так:

Код: Выделить всё

    /**
    * Performs the actual combining and compressing
    *
    * @param <type> $type
    * @param <type> $urls
    * @param <type> $pos
    */
    private function combineAndCompress($type, $urls, $pos)
    {
        $this->fileUrl or $this->fileUrl = $this->getCoreScriptUrl();
        $this->basePath or $this->basePath = Yii::getPathOfAlias('webroot');
        $this->filePath or $this->filePath = $this->basePath.$this->fileUrl;

        $optionsHash = ($type == 'js') ? md5($this->basePath . $this->compressJs . $this->ttlDays . $this->prefix)
                                                 : md5($this->basePath . $this->compressCss . $this->ttlDays . $this->prefix . serialize($this->cssMinFilters . $this->cssMinPlugins));

        if ($this->autoRefresh)
        {
            $mtimes = array();

            foreach ($urls as $file)
            {
                $fileName = $this->basePath.'/'.trim($file,'/');

                if(file_exists($fileName))
                {
                    $mtimes[] = filemtime($fileName);
                }
            }
            $this->_changesHash = md5(serialize($mtimes));
        }

        $combineHash = md5(implode('',$urls));

        $fileName = $this->prefix.md5($combineHash.$optionsHash.$this->_changesHash).".$type";

        $this->_renewFile = (file_exists($this->filePath.'/'.$fileName)) ? false : true;

        Yii::import($this->jsMinPath);
        Yii::import($this->cssMinPath);

        if ($this->_renewFile)
        {
            $this->garbageCollect($type);
            $combinedFile = '';

            foreach ($urls as $key => $file)
                $combinedFile .= file_get_contents($this->basePath.'/'.$file);

            if ($type == 'js' && $this->compressJs)
                $combinedFile = $this->minifyJs($combinedFile);

            if ($type == 'css' && $this->compressCss)
                $combinedFile = $this->minifyCss($combinedFile);

            file_put_contents($this->filePath.'/'.$fileName, $combinedFile);
        }

        foreach ($urls as $url)
            $this->scriptMap[basename($url)] = $this->fileUrl.'/'.$fileName;

        $this->remapScripts();
    }
Внимание на эти строки:

Код: Выделить всё

Yii::import($this->jsMinPath);
Yii::import($this->cssMinPath);
 
n-drey
Сообщения: 11
Зарегистрирован: 2013.08.27, 14:20

Re: [РАСШИРЕНИЕ] extendedclientscript

Сообщение n-drey »

DropSQL писал(а):Всем привет!
В общем решил воспользоваться расширением, а оно не работает, возможно проблема в настройке моего веб сервера, но всёже решение универстальное:
файл ExtendedClientScript: строка 205

Код: Выделить всё

$this->basePath or $this->basePath = realpath($_SERVER['DOCUMENT_ROOT']);
заменить на:

Код: Выделить всё

$this->basePath or $this->basePath = Yii::getPathOfAlias('webroot');
По моему правильно и универсально.
У меня это расширение вообще не пашет. Даже с вашими изменениями (((
В конфиге:

Код: Выделить всё

'clientScript'=>array(
            'class'=>'ext.ExtendedClientScript.ExtendedClientScript',
            'combineCss'=>true,
            'compressCss'=>true,
            'combineJs'=>true,
            'compressJs'=>true,
        ),
 
В главном шаблоне подключаю скрипты:

Код: Выделить всё

 Yii::app()->clientScript->registerScriptFile(
        Yii::app()->assetManager->publish(
            Yii::getPathOfAlias('ext.assets') . '/dklab_realplexor.js'
        ), CClientScript::POS_HEAD
    );

    Yii::app()->clientScript->registerScriptFile(
        Yii::app()->assetManager->publish(
            Yii::getPathOfAlias('ext.assets') . '/bootstrap.min.js'
        ), CClientScript::POS_HEAD
    ); 
Никаких ошибок никакой реакции ((( Может подключать не так надо?
chesar
Сообщения: 514
Зарегистрирован: 2013.04.10, 17:49

Re: [РАСШИРЕНИЕ] extendedclientscript

Сообщение chesar »

попробуй убрать второй параметр

Код: Выделить всё

Yii::app()->clientScript->registerScriptFile( , CClientScript::POS_HEAD);
 
Из всех вызовов.
n-drey
Сообщения: 11
Зарегистрирован: 2013.08.27, 14:20

Re: [РАСШИРЕНИЕ] extendedclientscript

Сообщение n-drey »

chesar писал(а):попробуй убрать второй параметр

Код: Выделить всё

Yii::app()->clientScript->registerScriptFile( , CClientScript::POS_HEAD);
 
Из всех вызовов.
Разобрался :)
Определение в конфиге main.php:

Код: Выделить всё

'clientScript'=>array(
            'class'=>'ext.ExtendedClientScript.ExtendedClientScript',
            'combineCss'=>true,
            'compressCss'=>true,
            'combineJs'=>true,
            'compressJs'=>true,
        ),
нужно делать после всех определений:

Код: Выделить всё

'clientScript' => array(
            'scriptMap' => array(
                'jquery.js' => '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js',
                'jquery.min.js' => '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js',
            ),
        ),
Проще говоря - вот так должно быть:

Код: Выделить всё

'clientScript' => array(
            'scriptMap' => array(
                'jquery.js' => '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js',
                'jquery.min.js' => '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js',
            ),
        ),
        
'clientScript'=>array(
            'class'=>'ext.ExtendedClientScript.ExtendedClientScript',
            'combineCss'=>true,
            'compressCss'=>true,
            'combineJs'=>true,
            'compressJs'=>true,
        ), 
Ответить