Vai al contenuto
  • 0

aggiornamenti di stato real time


trattore

Domanda

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

 

Link al commento
Condividi su altri siti

3 risposte a questa domanda

Messaggi raccomandati

  • 0

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
  • Like 1
Link al commento
Condividi su altri siti

  • 0

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 ^_^

Link al commento
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un membro per lasciare un commento

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora
  • Chi sta navigando   0 utenti

    • Nessun utente registrato visualizza questa pagina.
×
×
  • Crea Nuovo...

Informazioni importanti

Abbiamo inserito dei cookies nel tuo dispositivo per aiutarti a migliorare la tua esperienza su questo sito. Puoi modificare le impostazioni dei cookie, altrimenti puoi accettarli cliccando su continua. to insert a cookie message.