Jump to content
trattore

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

 

Share this post


Link to post
Share on other sites
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);});
Edited by BomAle

Share this post


Link to post
Share on other sites
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 ^_^

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Crea Nuovo...

Important Information

By using this site, you agree to our Terms of Use.