Vai al contenuto
trattore

3.4 aggiornamenti di stato real time

Recommended Posts

trattore

Ciao a tutti, sono qui perche spero mi aiutate a implementare una modifica, infatti vorrei che gli aggiornamenti di stato fossero automatici , scorressero nella lista im modo automatiko o meglio ancora con un bottone che ti informa il mumero degli aggiornamenti, lo premi e ti da la lista degli stati senza fare il load dell intera pagina, ho provato in giro per l web acercare un  script , ma ho trovato ben poco, esistono degli script  ke lavorano con jquery ke ti permettono di aggiornare un div in tempo reale ogni tot di secondi...solo ke non riesco a usarli il div il pezzo di kodice da richiamare è

    <div id='_sbcollapsable'>        <div id="status_wrapper">            <div id="status_wrapper_inside">{parse template="statusUpdates" group="boards" params="$updates, 1, 1"}</div>            <div class="short">                        <div class="status_ll">                <a class="ipsButton_secondary" href='{parse url="app=members&module=profile&section=status&type=all" seotitle="true" template="members_status_all" base="public"}'>{$this->lang->words['viewallupdates']}</a>            </div>                         </div>        </div>    </div></div>

Grz in anticipo di un eventuale aiuto

 

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

ciao, ricordi per la pagina in ip.content sugli stati?

se si, dovresti magari aggiungere una piccola parte sotto:

/* Fetch */$updates = $this->registry->getClass('memberStatus')->fetch( $this->memberData, array( 'limit' => intval( 20 ), 'status_is_latest' => 1, 'ownerOnly' => true ) );

(quindi sostituisci intval( 20 ) con ($_GET['debug'] ? intval(1) : intval(20) ) )

che è:

if($_GET['debug']){	$classToLoad = IPSLib::loadLibrary( IPS_KERNEL_PATH . 'classAjax.php', 'classAjax' );	$ajax = new $classToLoad();	$ajax->returnJsonArray( $updates, true );}

perchè oltre questo risparmi con le pagine php...

 

Una volta configurata la pagina php dovresti trovare uno script che ad un intervallo di 10-20 secondi fa un check alla pagina degli stati con "http://tuosito.com/page/stati_trattore?debug=1" e in caso l'id del primo stato ricavato dal php è diverso dal primo nel blocco allora lo aggiorna...

var stati_check, ultimo_stato;_ccsjQ('document').ready(function(){stati_check = setInterval(function(){    ultimo_stato = _ccsjQ('#status_wrapper_inside ul.status_list').first().attr('id').match('statusWrap-([0-9]+)')[1];    _ccsjQ.ajax({        url: 'http://tuosito.com/page/stati_trattore?debug=1',        type: 'POST',        //Options to tell jQuery not to process data or worry about content-type.        cache: false,        contentType: false,        processData: false,        //Ajax events       success: function(t) {          try{               //t = JSON.parse(t);               Debug.write(t);               (Object.keys(t)[0] != ultimo_stato) ? _ccsjQ("<p style='text-align:center'>UN NUOVO AGGIORNAMENTO DI STATO È PRESENTE</p>").prependTo('#status_wrapper_inside').hide().fadeIn(2000) : '';               (Object.keys(t)[0] != ultimo_stato) ? clearInterval(stati_check) : '';          }          catch(e){Debug.write(e);}       },       error: function(jqXHR, textStatus, errorMessage) {          Debug.write(jqXHR, textStatus, errorMessage); // Optional       },    });}, 10000);});
Modificato da BomAle

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
trattore

ciao ale, holetto quello che hai postato e ho tentato di seguire questa procedura.

su /admin/applications/members/modules_public/profile sul file status.php ho aggiunto sotto

/* Fetch */

questo come hai scritto

	/* Fetch */		$statuses = $this->registry->getClass('memberStatus')->fetch( $this->memberData, $filters );		$count    = $this->registry->getClass('memberStatus')->getStatusCount();		$updates = $this->registry->getClass('memberStatus')->fetch( $this->memberData, array( 'limit' => intval($_GET['debug'] ? intval(1) : intval(20) ), 'status_is_latest' => 1, 'ownerOnly' => true ) );		/* Add canonical */

poi ho inserito l if da te riportato sempre sul file status

		/* Add canonical */  if($_GET['debug']){	$classToLoad = IPSLib::loadLibrary( IPS_KERNEL_PATH . 'classAjax.php', 'classAjax' );	$ajax = new $classToLoad();	$ajax->returnJsonArray( $updates, true );}?>

poi sul global template ho inserito questo.

<script>var stati_check, ultimo_stato;_ccsjQ('document').ready(function(){stati_check = setInterval(function(){    ultimo_stato = _ccsjQ('#status_wrapper_inside ul.status_list').first().attr('id').match('statusWrap-([0-9]+)')[1];    _ccsjQ.ajax({        url: 'http://tuosito.com/page/stati_trattore?debug=1',        type: 'POST',        //Options to tell jQuery not to process data or worry about content-type.        cache: false,        contentType: false,        processData: false,        //Ajax events       success: function(t) {          try{               //t = JSON.parse(t);               Debug.write(t);               (Object.keys(t)[0] != ultimo_stato) ? _ccsjQ("<p style='text-align:center'>UN NUOVO AGGIORNAMENTO DI STATO È PRESENTE</p>").prependTo('#status_wrapper_inside').hide().fadeIn(2000) : '';               (Object.keys(t)[0] != ultimo_stato) ? clearInterval(stati_check) : '';          }          catch(e){Debug.write(e);}       },       error: function(jqXHR, textStatus, errorMessage) {          Debug.write(jqXHR, textStatus, errorMessage); // Optional       },    });}, 10000);});</script>

ma nn mi funziona =( la procedura e giusta? nn mi serve su ip.content ^_^

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

You need to be a member in order to leave a comment

Crea un account

Iscriviti per un nuovo account nella nostra comunità. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora

×