Aide - Recherche - Membres - Calendrier
Version complète : Rajouter des news RSS dans Widget
Forums MacBidouille > Général > Programmation > Les Langages Du Web
InDaTrance
salut a tous,

on realise un widget pour un site (adnpc.net) et le flux RSS n'importe que les 6 denieres news dans le widget, or on voudrait que ce nombre soit étendue a 12.

Si qqun peut nous aider ce serait très sympa smile.gif

Merci d'avance.

au fait le fichier code en javascript du widget est celui ci :

CODE
if(window.widget)
{
widget.onshow = onshow;
}

function onshow()
{
updateNews();
}

function updateNews()
{
var news = document.getElementById('news');
var url = 'http://www.adnpc.net/export/news_rss_light.php';
var xml_request = new XMLHttpRequest();
xml_request.onload = function(e) {xml_loaded(e, xml_request);}
xml_request.overrideMimeType("text/xml");
xml_request.open("GET", url);
xml_request.setRequestHeader("Cache-Control", "no-cache");
xml_request.send(null);
}

function wrapURL (theURL)
{
    if (window.widget)
 {
         theURL = "javascript:widget.openURL('" + theURL + "');";
    }
    return theURL;
}

function findChild (element, nodeName)
{
var child;

for (child = element.firstChild; child != null; child = child.nextSibling)
{
 if (child.nodeName == nodeName)
  return child;
}

return null;
}


function xml_loaded (event, request)
{
if (request.responseXML)
{
 var rssTag = findChild (request.responseXML, "rss");  

 if(rssTag)
 {
  var channelTag = findChild (rssTag, "channel");

  if(channelTag)
  {
document.getElementById('news').innerText="";

   var childCounter = 0;
   for (var child = channelTag.firstChild; child != null && childCounter<6; child = child.nextSibling)
   {
    if (child.nodeName == "item")
    {
     childCounter++;

     var title = findChild (child, "title");
     var link = findChild (child, "link");
     
     var pTag = document.createElement('p');
     pTag.setAttribute("class","anews");
     
     var aTag = document.createElement('a');
     aTag.setAttribute("href",wrapURL(link.firstChild.data));
     pTag.appendChild(aTag);
     aTag.innerText = title.firstChild.data;
     
     document.getElementById('news').appendChild(pTag);
       
    }
   }
  }
 }
}
}

/*********************************/
// HIDING AND SHOWING PREFERENCES
/*********************************/

// showPrefs() is called when the preferences flipper is clicked upon.  It freezes the front of the widget,
// hides the front div, unhides the back div, and then flips the widget over.

function showPrefs()
{
var front = document.getElementById("front");
var back = document.getElementById("back");

if (window.widget)
 widget.prepareForTransition("ToBack");  // freezes the widget so that you can change it without the user noticing

front.style.display="none";  // hide the front
back.style.display="block";  // show the back

if (window.widget)
 setTimeout ('widget.performTransition();', 0);  // and flip the widget over

document.getElementById('fliprollie').style.display = 'none';  // clean up the front side - hide the circle behind the info button

}


// hidePrefs() is called by the done button on the back side of the widget.  It performs the opposite transition
// as showPrefs() does.

function hidePrefs()
{
var front = document.getElementById("front");
var back = document.getElementById("back");

if (window.widget)
 widget.prepareForTransition("ToFront");  // freezes the widget and prepares it for the flip back to the front

back.style.display="none";   // hide the back
front.style.display="block";  // show the front

if (window.widget)
 setTimeout ('widget.performTransition();', 0);  // and flip the widget back to the front
}


// PREFERENCE BUTTON ANIMATION (- the pref flipper fade in/out)

var flipShown = false;  // a flag used to signify if the flipper is currently shown or not.


// A structure that holds information that is needed for the animation to run.
var animation = {duration:0, starttime:0, to:1.0, now:0.0, from:0.0, firstElement:null, timer:null};


// mousemove() is the event handle assigned to the onmousemove property on the front div of the widget.
// It is triggered whenever a mouse is moved within the bounds of your widget.  It prepares the
// preference flipper fade and then calls animate() to performs the animation.

function mousemove (event)
{
if (!flipShown)   // if the preferences flipper is not already showing...
{
 if (animation.timer != null)   // reset the animation timer value, in case a value was left behind
 {
  clearInterval (animation.timer);
  animation.timer  = null;
 }
 
 var starttime = (new Date).getTime() - 13;   // set it back one frame
 
 animation.duration = 500;            // animation time, in ms
 animation.starttime = starttime;          // specify the start time
 animation.firstElement = document.getElementById ('flip');  // specify the element to fade
 animation.timer = setInterval ("animate();", 13);      // set the animation function
 animation.from = animation.now;           // beginning opacity (not ness. 0)
 animation.to = 1.0;              // final opacity
 animate();                // begin animation
 flipShown = true;              // mark the flipper as animated
}
}

// mouseexit() is the opposite of mousemove() in that it preps the preferences flipper
// to disappear.  It adds the appropriate values to the animation data structure and sets the animation in motion.

function mouseexit (event)
{
if (flipShown)
{
 // fade in the flip widget
 if (animation.timer != null)
 {
  clearInterval (animation.timer);
  animation.timer  = null;
 }
 
 var starttime = (new Date).getTime() - 13;
 
 animation.duration = 500;
 animation.starttime = starttime;
 animation.firstElement = document.getElementById ('flip');
 animation.timer = setInterval ("animate();", 13);
 animation.from = animation.now;
 animation.to = 0.0;
 animate();
 flipShown = false;
}
}


// animate() performs the fade animation for the preferences flipper. It uses the opacity CSS property to simulate a fade.

function animate()
{
var T;
var ease;
var time = (new Date).getTime();
 

T = limit_3(time-animation.starttime, 0, animation.duration);

if (T >= animation.duration)
{
 clearInterval (animation.timer);
 animation.timer = null;
 animation.now = animation.to;
}
else
{
 ease = 0.5 - (0.5 * Math.cos(Math.PI * T / animation.duration));
 animation.now = computeNextFloat (animation.from, animation.to, ease);
}

animation.firstElement.style.opacity = animation.now;
}


// these functions are utilities used by animate()

function limit_3 (a, b, c)
{
   return a < b ? b : (a > c ? c : a);
}

function computeNextFloat (from, to, ease)
{
   return from + (to - from) * ease;
}

// these functions are called when the info button itself receives onmouseover and onmouseout events

function enterflip(event)
{
document.getElementById('fliprollie').style.display = 'block';
}

function exitflip(event)
{
document.getElementById('fliprollie').style.display = 'none';
}
Ifmy
essaye de mettre à la place de for (var child = channelTag.firstChild; child != null && childCounter<6; child = child.nextSibling)

for (var child = channelTag.firstChild; child != null && childCounter<12; child = child.nextSibling)

je garentie rien biggrin.gif j'ai juste parcouru d'un oeil le code smile.gif
InDaTrance
ca ne change rien !

merci quand mm
InDaTrance
bon c'est résolu, ta solution était la bonne... j'avais déjà essayé mais le problème venait de la cache de Safari...

Merci à toi..a++
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2009 Invision Power Services, Inc.