<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Forum posts to 'Extending and hacking'</title>
		<link>http://www.silverstripe.com/extending-hacking-silverstripe-forum/</link>
		

		
		<item>
			<title>New Photo Gallery</title>
			<link>http://www.silverstripe.com/extending-hacking-silverstripe-forum/show/80172</link>
			<description>We are putting together a new photo gallery using Dynamic Drive... http://www.dynamicdrive.com/dynamicindex4/cmotiongallery.htm&lt;br /&gt;and Slideshow2 &lt;br /&gt;http://www.electricprism.com/aeron/slideshow/&lt;br /&gt;&lt;br /&gt;You can see it here... &lt;br /&gt;http://websidedesigner.com/galley/&lt;br /&gt;&lt;br /&gt;We are using folders for the categories inside &quot;assets/Galleries/'+folder+'&quot;&lt;br /&gt;Any help and guidance???&lt;br /&gt;[b]Galleries.php:[/b]&lt;br /&gt;&lt;br /&gt;[code]&amp;lt;?php&lt;br /&gt;&lt;br /&gt;class Galleries extends Page {&lt;br /&gt;	static $db = array(&lt;br /&gt;	);&lt;br /&gt;	static $has_one = array(&lt;br /&gt;   );&lt;br /&gt;   static $icon = &quot;galleries/images/window&quot;;&lt;br /&gt;   &lt;br /&gt;  &lt;br /&gt;  function getMotionGallery($limitFolders=50,$limitImages=1){&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;   // get All the Folders that are on root&lt;br /&gt;   &lt;br /&gt;  $folders  = $this-&amp;gt;getFolders($limitFolders);&lt;br /&gt;  &lt;br /&gt;  foreach($folders as $folder){&lt;br /&gt;    &lt;br /&gt;     $folder-&amp;gt;CatName = $folder-&amp;gt;Name;&lt;br /&gt;	 $items = $this-&amp;gt;Items((string)$folder-&amp;gt;ID,$limitImages);&lt;br /&gt;	  $data = &quot;&quot;;   &lt;br /&gt;	  if($items){&lt;br /&gt;	  $i=1;&lt;br /&gt;	  $j=0;&lt;br /&gt;	  foreach($items as $item){&lt;br /&gt;	  $j++;&lt;br /&gt;	  }&lt;br /&gt;	  &lt;br /&gt;	  foreach($items as $item){&lt;br /&gt;	   if( $i == 1 ){&lt;br /&gt;	   $folder-&amp;gt;Filename =  $item-&amp;gt;Filename;&lt;br /&gt;	   }&lt;br /&gt;	   if($i &amp;lt; $j ){&lt;br /&gt;	  &lt;br /&gt;	   //$item-&amp;gt;comma =  &quot; ,&quot;;&lt;br /&gt;	   $data.= &quot;$item-&amp;gt;Name,&quot;;&lt;br /&gt;	   } else {&lt;br /&gt;	   //$item-&amp;gt;comma =  &quot; &quot;;&lt;br /&gt;	   $data.= &quot;$item-&amp;gt;Name&quot;;&lt;br /&gt;	   }&lt;br /&gt;	  $i++;&lt;br /&gt;&lt;br /&gt;	  &lt;br /&gt;	  }&lt;br /&gt;    &lt;br /&gt;	 &lt;br /&gt;	&lt;br /&gt;	}&lt;br /&gt;  $folder-&amp;gt;Dataforjavascript = $data;&lt;br /&gt;  &lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  return $folders;&lt;br /&gt;  &lt;br /&gt;  }&lt;br /&gt;  function getDefaultFolder(){&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;   &lt;br /&gt;   // get All the Folders that are on root&lt;br /&gt;   &lt;br /&gt;  $folders  = $this-&amp;gt;getFolders(1);&lt;br /&gt;  &lt;br /&gt;  foreach($folders as $folder){&lt;br /&gt;   &lt;br /&gt;     $folder-&amp;gt;ID = $folder-&amp;gt;ID; &lt;br /&gt;     $folder-&amp;gt;CatName = $folder-&amp;gt;Name;&lt;br /&gt;	 $items = $this-&amp;gt;Items((string)$folder-&amp;gt;ID,1);&lt;br /&gt;	  if($items){   &lt;br /&gt;	  foreach($items as $item){&lt;br /&gt;	  &lt;br /&gt;	   $folder-&amp;gt;Filename =  $item-&amp;gt;Filename;&lt;br /&gt;	   &lt;br /&gt;	  &lt;br /&gt;	  }&lt;br /&gt;     }&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  return $folders;&lt;br /&gt;  &lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  function getFolders($limit = 1){&lt;br /&gt;  &lt;br /&gt;   &lt;br /&gt;   $sort = &quot;`File`.`Created` DESC&quot;;&lt;br /&gt;   &lt;br /&gt;   $Galleries = DataObject::get(&quot;File&quot;, &quot;ClassName = 'Folder' AND ParentID = 0 AND  Name = 'Galleries'&quot;, $sort, &quot;&quot;, $limit);&lt;br /&gt;   foreach($Galleries as $Gallery){&lt;br /&gt;   $Gallery-&amp;gt;ID = $Gallery-&amp;gt;ID;&lt;br /&gt;   }&lt;br /&gt;   return DataObject::get(&quot;File&quot;, &quot;ClassName = 'Folder' AND ParentID = $Gallery-&amp;gt;ID &quot;, $sort, &quot;&quot;, $limit);&lt;br /&gt;  &lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  function Items( $parentID ,$limit = 1) {&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;     $sort = &quot;`File`.`Name` ASC&quot;;&lt;br /&gt;   &lt;br /&gt;     return DataObject::get(&quot;File&quot;, &quot;ClassName = 'Image' AND ParentID = $parentID &quot;, $sort, &quot;&quot;, $limit);&lt;br /&gt;	&lt;br /&gt;	}&lt;br /&gt;  &lt;br /&gt;/*function getImagesInFolder($parentID ,$limit = 1){&lt;br /&gt;    &lt;br /&gt;	$sort = &quot;`File`.`Name` ASC&quot;;&lt;br /&gt;	&lt;br /&gt;    $items = DataObject::get(&quot;File&quot;, &quot;ClassName = 'Image' AND ParentID = $parentID &quot;, $sort, &quot;&quot;, $limit);&lt;br /&gt;	  if($items){   &lt;br /&gt;	  foreach($items as $item){&lt;br /&gt;	  &lt;br /&gt;	   $item-&amp;gt;Filename1 =  $item-&amp;gt;Filename;&lt;br /&gt;	   &lt;br /&gt;	  &lt;br /&gt;	  }&lt;br /&gt;   }&lt;br /&gt;  return $items;&lt;br /&gt;&lt;br /&gt; }*/&lt;br /&gt; function getImagesInFolder($parentID = 0 ,$limit = 1){&lt;br /&gt;    &lt;br /&gt;	$sort = &quot;`File`.`Name` ASC&quot;;&lt;br /&gt;	&lt;br /&gt;  $Galleries = DataObject::get(&quot;File&quot;, &quot;ClassName = 'Folder' AND ParentID = 0 AND  Name = 'Galleries'&quot;, $sort, &quot;&quot;, $limit);&lt;br /&gt;   foreach($Galleries as $Gallery){&lt;br /&gt;   $Gallery-&amp;gt;ID = $Gallery-&amp;gt;ID;&lt;br /&gt;   }&lt;br /&gt;  $sort = &quot;`File`.`Name` ASC&quot;;&lt;br /&gt;  $folders = DataObject::get(&quot;File&quot;, &quot;ClassName = 'Folder' AND ParentID = $Gallery-&amp;gt;ID &quot;, $sort, &quot;&quot;, $limit);&lt;br /&gt;   foreach($folders as $folder){&lt;br /&gt;   $folder-&amp;gt;ID = $folder-&amp;gt;ID;&lt;br /&gt;   }&lt;br /&gt;  	&lt;br /&gt;    $items = DataObject::get(&quot;File&quot;, &quot;ClassName = 'Image' AND ParentID = $folder-&amp;gt;ID&quot;, $sort, &quot;&quot;, 100);&lt;br /&gt;	&lt;br /&gt;	if($items){   &lt;br /&gt;	  $i=1;&lt;br /&gt;	  $j=0;&lt;br /&gt;	  foreach($items as $item){&lt;br /&gt;	  $j++;&lt;br /&gt;	  }&lt;br /&gt;	  &lt;br /&gt;	  foreach($items as $item){&lt;br /&gt;	  $item-&amp;gt;Name = $item-&amp;gt;Name;&lt;br /&gt;	   if($i &amp;lt; $j ){&lt;br /&gt;	  &lt;br /&gt;	   $item-&amp;gt;comma =  &quot; ,&quot;;&lt;br /&gt;	   &lt;br /&gt;	   } else {&lt;br /&gt;	   $item-&amp;gt;comma =  &quot; &quot;;&lt;br /&gt;	   &lt;br /&gt;	   }&lt;br /&gt;	  $i++;&lt;br /&gt;	  }&lt;br /&gt;   }&lt;br /&gt;  return $items;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;class Galleries_Controller extends Page_Controller {&lt;br /&gt;	function init() {&lt;br /&gt;		parent::init();&lt;br /&gt;		&lt;br /&gt;		Requirements::themedCSS(&quot;layout&quot;);&lt;br /&gt;		Requirements::themedCSS(&quot;typography&quot;);&lt;br /&gt;		&lt;br /&gt;		Requirements::css(&quot;galleries/css/slideshow.css&quot;);&lt;br /&gt;        Requirements::javascript(&quot;galleries/javascript/mootools.js&quot;);&lt;br /&gt;		Requirements::javascript(&quot;galleries/javascript/slideshow.js&quot;);&lt;br /&gt;        &lt;br /&gt;		//Requirements::themedCSS(&quot;form&quot;);&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;?&amp;gt;[/code]&lt;br /&gt;&lt;br /&gt;[b]Galleries.ss:[/b]&lt;br /&gt;&lt;br /&gt;	[code]&amp;lt;div class=&quot;typography&quot;&amp;gt;&lt;br /&gt;	&lt;br /&gt; &amp;lt;div id=&quot;Content&quot; &amp;gt;&lt;br /&gt;		&lt;br /&gt;		&amp;lt;h2&amp;gt;$Title&amp;lt;/h2&amp;gt;&lt;br /&gt;	&lt;br /&gt;	&lt;br /&gt;		  $Content &lt;br /&gt;		  &amp;lt;div id=&quot;motioncontainer&quot; style=&quot;position:relative;overflow:hidden;&quot;&amp;gt;&lt;br /&gt;&amp;lt;div id=&quot;motiongallery&quot; style=&quot;position:absolute;left:0;top:0;white-space: nowrap;&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;nobr id=&quot;trueContainer&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;% control getMotionGallery(10,10) %&amp;gt;&lt;br /&gt;&amp;lt;a  class=&quot;highlightit&quot; href='javascript:loadSlideShow(&quot;$Dataforjavascript&quot;,&quot;$CatName&quot;);'&amp;gt;&amp;lt;img src=&quot;$Filename&quot; border=&quot;1&quot; width=&quot;100&quot; height=&quot;75&quot; title =&quot;$CatName&quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;  		&lt;br /&gt; &amp;lt;% end_control %&amp;gt;&lt;br /&gt;  &amp;lt;/nobr&amp;gt;&lt;br /&gt;  &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div style=&quot;background-image:url(http://www.silverstripe.com/galleries/images/slideshow.jpg); background-repeat:no-repeat; height:500px;&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;		&amp;lt;br&amp;gt;&lt;br /&gt;			&lt;br /&gt;&amp;lt;% control getDefaultFolder %&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;		&lt;br /&gt;	var myShow ;&lt;br /&gt;	//&amp;lt;![CDATA[&lt;br /&gt;	  &lt;br /&gt;	  window.addEvent('domready', function(){&lt;br /&gt;	    &lt;br /&gt;	    &lt;br /&gt;	     myShow = new Slideshow('my_show', data, { captions: true, controller: true, hu: 'assets/Galleries/$CatName' });&lt;br /&gt;		//Nauman: 'assets/Galleries/$folders ?? - the '/' is in the slideshow.js file - see hu on line 28&lt;br /&gt;	  });&lt;br /&gt;	//]]&amp;gt;&lt;br /&gt;	&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;&amp;lt;div id=&quot;my_show&quot; class=&quot;slideshow&quot;&amp;gt;&lt;br /&gt;    &amp;lt;img src=&quot;$Filename&quot; width=&quot;500&quot; height=&quot;390&quot;/&amp;gt;	&lt;br /&gt;	&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;% end_control %&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;var data = {&lt;br /&gt;	      &amp;lt;% control getImagesInFolder %&amp;gt;&lt;br /&gt;		  &lt;br /&gt;		  '$Name': { 'caption': '$Name' } $comma&lt;br /&gt;	      &lt;br /&gt;		  &amp;lt;% end_control %&amp;gt;&lt;br /&gt;		 &lt;br /&gt;		}&lt;br /&gt;&amp;lt;/script&amp;gt;	&lt;br /&gt;		$Form&lt;br /&gt;		$PageComments&lt;br /&gt;	&lt;br /&gt;	  &amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;function loadSlideShow(data,folder){&lt;br /&gt;&lt;br /&gt;//alert(data);&lt;br /&gt;var dataArray = explodeArray(data,&quot;,&quot;);&lt;br /&gt;//alert(dataArray.length);&lt;br /&gt;var dataString = &quot;{ &quot;;&lt;br /&gt;for(i=0;i&amp;lt;dataArray.length;i++){&lt;br /&gt;   &lt;br /&gt;    if(i == ( dataArray.length-1 ) ){&lt;br /&gt;   dataString = dataString + &quot;' &quot;+ dataArray[i]+&quot;'&quot;;&lt;br /&gt;   }else{&lt;br /&gt;   dataString = dataString + &quot;' &quot;+ dataArray[i]+&quot;',&quot;;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;dataString = dataString + &quot;}&quot;;&lt;br /&gt;var captionString =  &quot;{ controller: true, hu: 'assets/Galleries/&quot;+folder+&quot;'  }&quot;;&lt;br /&gt;alert(captionString);&lt;br /&gt;myShow.destroy(&quot;empty&quot;);&lt;br /&gt; myShow = new Slideshow('my_show', dataString, { controller: true, hu: &quot;assets/Galleries/'+folder+'&quot;  } );&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;function explodeArray(item,delimiter) { &lt;br /&gt;tempArray=new Array(1); &lt;br /&gt;var Count=0; &lt;br /&gt;var tempString=new String(item); &lt;br /&gt;&lt;br /&gt;while (tempString.indexOf(delimiter)&amp;gt;0) { &lt;br /&gt;tempArray[Count]=tempString.substr(0,tempString.indexOf(delimiter)); &lt;br /&gt;tempString=tempString.substr(tempString.indexOf(delimiter)+1,tempString.length-tempString.indexOf(delimiter)+1); &lt;br /&gt;Count=Count+1 &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;tempArray[Count]=tempString; &lt;br /&gt;return tempArray; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;[/code]&lt;br /&gt;&lt;br&gt;&lt;br&gt;Posted to: New Photo Gallery</description>
			<pubDate>Fri, 30 May 2008 16:22:31 +1200</pubDate>
			<author>Steve Nyhof</author>
			<guid>http://www.silverstripe.com/extending-hacking-silverstripe-forum/show/80172</guid>
		</item>
		

	</channel>
</rss>
