Ecco Il Mio Widget Per Le News Scorrevoli

Buon pomeriggio,

dopo aver ricevuto tanto supporto dagli utenti di questo forum ho deciso di mettere anche io a disposizionie di tutti un’estensione che mi serviva e che, dopo averne provate tante ma senza nessun risultato, ho deciso di svilupparne una io da zero.

Si tratta del mio primo widget ed è veramente un widget di base, senza css, ma fa il suo lavoro.

L’ho scritto in un’oretta ed perciò non escludo la presenza di bugs e/o anomalie.

Prevedo comuque di arricchirlo appena ne avrò il tempo.

Per ora vi lascio il link.

A presto! E spero sia utile a qualcuno così come lo è per me :)

Ottima iniziativa, però attento: se vuoi scrivere codice Open Source dovresti rispettare lo standard PSR. Se vai su questo sito trovi dei documenti per i vari livelli di PSR. Se scrivi codice standard, dai nomi delle variabili, le classi, la struttura delle cartelle è meglio.

Ti ringrazio della dritta. Magari nella versione 2.x di questa estensione, quando la riscriverò, presterò più attenzione agli standard visto che, come dicevo, l’ho buttato giù veramente in pochissimo tempo ed ho pensato di condividerlo subito con la community visto che era da un sacco di tempo che cercavo qualcosa del genere.

A proposito di features: sto cercando di aggiungere la funzionalità di refresh tramite ajax in modo da avere sempre gli ultimi feeds ogni X secondi (impostabili dall’utente).

Sapresti, per caso, darmi qualche dritta su come implementare ciò? Ho chiesto nell’area International ma non sono riusciti ad essere di grande aiuto

Guarda, in genere nessuno ha voglia di scrivere il codice per gli altri. Quindi quando capita di leggere "come si fa a …" spesso (non sempre per mia fortuna) è difficile trovare chi sia disposto ad aiutare. Viene sempre più semplice, invece, risolvere problemi del tipo "come mai non funziona"? Detto questo, cerca sempre di fare un tentativo ed eventualmente di mostrare dove sei arrivato.

Io di mio, posso solo dirti di usare ajax. Jquery rende la vita semplice. E’ già incluso in Yii e devi fare davvero poco. Qual’è il tuo prossimo passo? Se vuoi puoi provare una mia estensione che potrebbe fare al caso tuo: sensorario-comments.

Dentro all’estensione trovi codice per scrivere php standard (ci sono diversi standard ed io ne ho scelto uno a caso XD). Ci sono funzionalità ajax e forse tutto quello che ti serve.

Non mi pare di averti chiesto di scrivermi del codice. Piuttosto ho chiesto di darmi qualche dritta su come procedere per un’estensione che vorrei perfezionare per metterla a disposizione della community e non per un uso mio personale.

Le soluzioni che stavo considerando (ma su cui sto avendo problemi) sono 2 (espongo soluzioni e problemi riscontrati)

Soluzione 1 (suggerita dall’utente Argent)

  1. Sposto il widget in un nuovo file



#protected/extensions/ya-simple-feed/_feed.php


<div id="feed">

    <div id="feed_widget">

        <?php 

            $this->widget(

                'ext. ya-simple-feed.YaSimpleFeed',

                array(

                'feedUrl'=>'http://rss.cnn.com/rss/cnn_topstories.rss',

                // feedSpeed must be an INT (OPTIONAL, by default is 5)

                'feedSpeed'=>7,

                // feedDirection must be a string as 'left','right,'up' or 'down' (OPTIONAL, by default is 'left')

                'feedDirection'=>'up',

                )

            ); 

        ?>

    </div>

</div>

<?php 

Yii::app()->clientScript->registerCoreScript('jquery');

Yii::app()->clientScript->registerScript('feed-updater', '

    function updater() {

        $("#feed").load("'.$this->createUrl('ajaxfeed').' #feed_widget", function(){

            setTimeout(updater, 2000);

        });

    }

    setTimeout(updater, 2000);

');



  1. aggiungo l’action actionAjaxFeed al controller:



##protected/extensions/ya-simple-feed/YaSimpleFeedController.php


class YaSimpleFeedController extends CExtController

{

	public function accessRules() 

	{

		return array(

			array('allow',

				'actions' => array('ajaxFeed'),

				'users' => array('*'),

			)

		);

	}

	

	public function actionAjaxFeed()

	{

		$this->renderPartial("_feed");

	



  1. aggiungo questa istruzione nel punto in cui voglio far apparire l’estensione



$this->renderPartial("_feed");



In questo caso il problema è che, essendo nella directory /views/layouts non riesco a richiamare correttamente il widget usando questo percorso




$this->renderPartial(Yii::app()->request->baseUrl."/protected/extensions/ya-simple-feed/_feed");



Soluzione 2

Utilizzo questo codice per far aggiornare, ad esempio, la div con id footer




Yii::app()->clientScript->registerScript('autoupdate-footer',

                "setInterval(function(){;$.fn.yiiGridView.update('footer', {

                        data: $(this).serialize()

                });

                return false;},3000);"

	);



e l’errore riscontrato è

.

Malgrado io abbia cercato questo errore con google non sono riuscito a venirne a capo.

Ed a me non mi pare di aver detto che tu lo abbia fatto. Boh.

insomma non esiste soluzioni alle mie due proposte