Ho creato il mio primo widget
Tutto abbastanza bene tranne un fatto. viene messo tra gli assets anche il sorgente in php
Io ho:
/public_html/assets/a57a8820/simpleJCarouselLite.php
/public_html/assets/a57a8820/lib/jCarouselLite.js
/public_html/assets/a57a8820/lib/jquery.easing.js
/public_html/assets/a57a8820/lib/jquery.mousewheel.js
quando invece dovrei avere solo i file JS tra gli assets
I sorgenti sono in:
/public_html/protected/extensions/simpleJCarouselLite/simpleJCarouselLite.php
/public_html/protected/extensions/simpleJCarouselLite/lib/jCarouselLite.js
/public_html/protected/extensions/simpleJCarouselLite/lib/jquery.easing.js
/public_html/protected/extensions/simpleJCarouselLite/lib/jquery.mousewheel.js
La mia view è:
<?php
$this->widget('ext.simpleJCarouselLite.simpleJCarouselLite',array(
'classDiv'=>'carosello',
'btnNext'=>'next',
'btnPrev'=>'prev',
'mouseWheel'=>'true',
'circular'=>'false',
'visible'=>'1',
'scroll'=>'1',
'lang'=>'it',
'theme'=>'default',
'onClick'=>'',
'ajaxUrl' => '/p/',
'onClick'=>'
var id = $(this).attr("src");
alert(id);
$("#footer").hide();
'
));
?>
mentre il widget:
<?php
/**
* Description of simpleJCarouselLite
*
* @author Marco
*/
class simpleJCarouselLite extends CInputWidget {
private $baseUrl;
public $ajaxUrl;
public $id = 'simpleJCarousel_widget';
public $classDiv = 'anyClass';
public $btnNext = ".next";
public $btnPrev = ".prev";
public $mouseWheel = true;
public $circular = false;
public $visible = 1;
public $scroll = 1;
public $lang = 'it';
public $theme = 'default';
public $onClick;
public function run()
{
$clientScript = Yii::app()->getClientScript();
$clientScript->registerCoreScript('jquery');
$clientScript->registerCoreScript('jquery-ui');
$dir = dirname(__FILE__);
$this->baseUrl = Yii::app()->getAssetManager()->publish($dir);
$clientScript->registerScriptFile($this->baseUrl . '/lib/jCarouselLite.js', CClientScript::POS_HEAD);
$clientScript->registerScriptFile($this->baseUrl . '/lib/jquery.easing.js', CClientScript::POS_HEAD);
$clientScript->registerScriptFile($this->baseUrl . '/lib/jquery.mousewheel.js', CClientScript::POS_HEAD);
$clientScript->registerScript('CaroselloSerie',
'$(function() {
$(".'.$this->classDiv.'").jCarouselLite({
btnNext: "'.$this->classDiv.'-'.$this->btnNext.'",
btnPrev: "'.$this->classDiv.'-'.$this->btnPrev.'",
mouseWheel: '.$this->mouseWheel.',
circular: '.$this->circular.',
visible: '.$this->visible.',
scroll: '.$this->scroll.'
});
$(".'.$this->classDiv.' div ul li img").click(function() {
'.$this->onClick.'
});
});');
echo '
<div class="'.$this->classDiv.'">
<div class="'.$this->classDiv.'-controls">
<button class="'.$this->classDiv.'-'.$this->btnPrev.'"><<</button>
<button class="'.$this->classDiv.'-'.$this->btnNext.'">>></button>
</div>
<div class="'.$this->classDiv.'-image">
<ul>
<!--li><img src="someimage" alt="" width="100" height="100" ></li-->
'.self::imgSerie().'
</ul>
</div>
</div>
';
}
private function imgSerie()
{
$sImgSerie = '';
$objModel = new ArchProdotti();
$objRecords = $objModel->findAll();
foreach ($objRecords AS $k => $aRecord)
{
$sImgSerie .= '<li><img id="'.$aRecord->Id.'" src="'.IMGS.'/'.$aRecord->Img.'" alt="" width="150" height="100" ></li>'."\n";
}
return $sImgSerie;
}
}
?>
Sorvoliamo su imgSerie che va riscritta. Quel che non capisco è come mai mi metta il file php tra gli assets pubblici
Che passaggio sbaglio?
Grazie