mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-14 05:23:21 +00:00
205 lines
6.4 KiB
HTML
205 lines
6.4 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
|
<html>
|
|
<head>
|
|
|
|
|
|
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
|
<title>Using Ajax for deferred loading of items</title>
|
|
|
|
<style type="text/css">
|
|
/*margin and padding on body element
|
|
can introduce errors in determining
|
|
element position and are not recommended;
|
|
we turn them off as a foundation for YUI
|
|
CSS treatments. */
|
|
body {
|
|
margin:0;
|
|
padding:0;
|
|
}
|
|
</style>
|
|
|
|
<link rel="stylesheet" type="text/css" href="../../build/fonts/fonts-min.css" />
|
|
<link rel="stylesheet" type="text/css" href="../../build/carousel/assets/skins/sam/carousel.css" />
|
|
<script type="text/javascript" src="../../build/yahoo-dom-event/yahoo-dom-event.js"></script>
|
|
<script type="text/javascript" src="../../build/connection/connection-min.js"></script>
|
|
<script type="text/javascript" src="../../build/element/element-min.js"></script>
|
|
<script type="text/javascript" src="../../build/carousel/carousel-min.js"></script>
|
|
|
|
|
|
<!--begin custom header content for this example-->
|
|
<style type="text/css">
|
|
/* Style the spotlight container */
|
|
#spotlight {
|
|
border: 1px solid #ccc;
|
|
height: 240px;
|
|
margin: 10px auto;
|
|
padding: 1px;
|
|
text-align: center;
|
|
width: 240px;
|
|
}
|
|
|
|
#carousel {
|
|
margin: 0;
|
|
}
|
|
|
|
#container {
|
|
margin: 0 auto;
|
|
}
|
|
|
|
.yui-skin-sam .yui-carousel-nav ul,
|
|
.yui-skin-sam .yui-carousel-nav select {
|
|
display: none;
|
|
}
|
|
/* Always be sure to give your carousel items a width and a height */
|
|
.yui-carousel-element li {
|
|
height: 75px;
|
|
width: 75px;
|
|
}
|
|
</style>
|
|
|
|
<!--end custom header content for this example-->
|
|
|
|
</head>
|
|
|
|
<body class="yui-skin-sam">
|
|
|
|
|
|
<h1>Using Ajax for deferred loading of items</h1>
|
|
|
|
<div class="exampleIntro">
|
|
<p>
|
|
This example showcases the dynamic loading capabilities of the <a href="http://developer.yahoo.com/yui/carousel/">YUI Carousel Control</a>. The YUI Carousel Control exposes an event called <code>loadItems</code>. This
|
|
event is fired whenever the Carousel needs items to be loaded into it for
|
|
display. Subscribing to this event makes it easy to dynamically load
|
|
the next set of images.
|
|
</p>
|
|
|
|
</div>
|
|
|
|
<!--BEGIN SOURCE CODE FOR EXAMPLE =============================== -->
|
|
|
|
<!-- The Carousel container -->
|
|
<div id="container">
|
|
<ol id="carousel"></ol>
|
|
</div>
|
|
<!-- The spotlight container -->
|
|
<div id="spotlight"></div>
|
|
<script>
|
|
var curpos, items = [];
|
|
|
|
function getImageTag(img) {
|
|
return "<img src=\"" + img + "\" height=\"75\" width=\"75\">";
|
|
}
|
|
|
|
function getImages() {
|
|
var carousel = this;
|
|
|
|
YAHOO.util.Connect.asyncRequest("GET", "assets/php/getimages.php?pos="+curpos,
|
|
{
|
|
success: function (o) {
|
|
var i = curpos,
|
|
j = 0,
|
|
r = eval('(' + o.responseText + ')');
|
|
|
|
curpos += r.length;
|
|
|
|
while (i < curpos) {
|
|
if (r[j]) {
|
|
carousel.addItem(getImageTag(r[j]));
|
|
} else {
|
|
break;
|
|
}
|
|
i++;
|
|
j++;
|
|
}
|
|
|
|
carousel.set("selectedItem", carousel.get("firstVisible"));
|
|
},
|
|
|
|
failure: function (o) {
|
|
alert("Ajax request failed!");
|
|
}
|
|
});
|
|
}
|
|
|
|
// Get the image link from within its (parent) container.
|
|
function getLargeImage(parent) {
|
|
var el = parent.firstChild;
|
|
|
|
while (el) { // walk through till as long as there's an element
|
|
if (el.nodeName.toUpperCase() == "IMG") { // found an image
|
|
// flickr uses "_s" suffix for small, and "_m" for big
|
|
// images respectively
|
|
return el.src.replace(/_s\.jpg$/, "_m.jpg");
|
|
}
|
|
el = el.nextSibling;
|
|
}
|
|
|
|
return "";
|
|
}
|
|
|
|
YAHOO.util.Event.onDOMReady(function (ev) {
|
|
var carousel, spotlight = YAHOO.util.Dom.get("spotlight");
|
|
|
|
carousel = new YAHOO.widget.Carousel("container", {
|
|
|
|
/* Setting numItems is required for dynamic loading. This property lets Carousel
|
|
know how many total items it will ever be populated with (statically and/or dynamically).
|
|
Not to be confused with numVisible: the number of items shown to a
|
|
user per page. In this example, we don't specify numVisible and Carousel
|
|
defaults to 3 items visible per page. */
|
|
|
|
numItems: 17
|
|
});
|
|
|
|
YAHOO.util.Connect.asyncRequest("GET", "assets/php/getimages.php", {
|
|
success: function (o) {
|
|
var i, r = eval('(' + o.responseText + ')');
|
|
|
|
curpos = r.length;
|
|
|
|
for (i = 0; i < curpos; i++) {
|
|
items.push(r[i]);
|
|
}
|
|
|
|
// check if the Carousel widget is available
|
|
if (typeof carousel != "undefined") {
|
|
for (i = 0; i < curpos; i++) {
|
|
// if so, shove the elements into it
|
|
carousel.addItem(getImageTag(items[i]));
|
|
}
|
|
carousel.set("selectedItem", 0);
|
|
items = [];
|
|
}
|
|
},
|
|
|
|
failure: function (o) {
|
|
alert("Ajax request failed!");
|
|
}
|
|
});
|
|
|
|
carousel.on("loadItems", function (o) {
|
|
// more items available?
|
|
getImages.call(this);
|
|
});
|
|
|
|
carousel.on("itemSelected", function (index) {
|
|
// item has the reference to the Carousel's item
|
|
var item = carousel.getElementForItem(index);
|
|
|
|
if (item) {
|
|
spotlight.innerHTML = "<img src=\""+getLargeImage(item)+"\">";
|
|
}
|
|
});
|
|
|
|
carousel.render();
|
|
carousel.show();
|
|
});
|
|
|
|
</script>
|
|
|
|
<!--END SOURCE CODE FOR EXAMPLE =============================== -->
|
|
|
|
</body>
|
|
</html>
|