Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Widgets

Discuss SilverStripe Widgets.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Flickr Widget


Reply

6 Posts   2006 Views

Avatar
mhull

8 August 2009 at 10:42pm Community Member, 79 Posts

I am having trouble getting the Flickr widget to work, I have the Flickr module up and working, but the Flickr widget isn't showing in the blog module widgets section. Does anyone have this working? anyone have any advice?

Avatar
joshy

9 August 2009 at 5:41am Community Member, 57 Posts

Hiya,

Do you have other widgets working?
Have you selected the widget to appear in the Blog?
Are you calling $WidgetArea or whatever you have associated?

Josh

Avatar
mhull

9 August 2009 at 6:02am Community Member, 79 Posts

I have the youtube widget working, and the other standard ones that come with the blog. The Flickr one just isn't showing up in the admin screen under blog>widget at all.

Anyone have this working? Or can anyone pinpoint why this isnt working for me?

Avatar
mhull

9 August 2009 at 8:08am (Last edited: 9 August 2009 9:46am), Community Member, 79 Posts

Anyone got any ideas?
This just doesn't seem to be working for me. Not showing up in the widget tab at all

Avatar
mhull

12 August 2009 at 2:18am Community Member, 79 Posts

I have now tried a new install of the Blog module, the Flickr module, and a fresh install of Silverstripe, and still the Flickr widget isnt showing up in the Blog window.

I have also tried making it a seperate widget in the root install, tried adding it into the Blog, and still it isn't working. Does anyone have it working?

Avatar
mhull

13 August 2009 at 4:48am Community Member, 79 Posts

So I finally think I have found the answer to getting the Flickr Widget working, and I will post it here just in case anyone else has the same problem.

I was looking over the Widget Documentation at: http://doc.silverstripe.org/doku.php?id=widgets

Which uses the Flickr Widget as an example, by pasting in this code instead of the one that comes with the Module, I managed to get it working. However, I did have to put back in some of the code from the module, as it was referencing the wrong files for the lightwindow.

See the code below for the working Flickr Widget.

FlickrWidget.php

<?php

class FlickrWidget extends Widget {
   static $db = array(
      "User" => "Varchar",
      "Photoset" => "Varchar",
      "Tags" => "Varchar",
      "NumberToShow" => "Int"
   );
   

   static $defaults = array(
      "NumberToShow" => 8
   );
   

   static $title = "Photos";
   static $cmsTitle = "Flickr Photos";
   static $description = "Shows flickr photos.";
   
   function Photos() {
      Requirements::javascript("flickrservice/javascript/prototype.js");
       Requirements::javascript("flickrservice/javascript/effects.js");
       Requirements::javascript("flickrservice/javascript/lightwindow.js");
       
       Requirements::css("flickrservice/css/FlickrGallery.css");
      Requirements::css("flickrservice/css/lightwindow.css");

   if( $pos = strpos($_SERVER['HTTP_USER_AGENT'],'MSIE')) {
      $version = substr( $_SERVER['HTTP_USER_AGENT'], $pos + 5, 3 );
      if( $version < 7 ) {
               Requirements::css("flickrservice/css/lightwindowIE6.css");
      }
   }
      
      $flickr = new FlickrService();
      if($this->Photoset == "") {
         $photos = $flickr->getPhotos($this->Tags, $this->User, $this->NumberToShow, 1);
      } else {
         $photos = $flickr->getPhotoSet($this->Photoset, $this->User, $this->NumberToShow, 1);
      }
      
      $output = new DataObjectSet();
      foreach($photos->PhotoItems as $photo) {
         $output->push(new ArrayData(array(
            "Title" => $photo->title,
            "Link" => "http://farm1.static.flickr.com/" . $photo->image_path .".jpg",
            "Image" => "http://farm1.static.flickr.com/" .$photo->image_path. "_s.jpg"
         )));
      }
      
      return $output;
   }

   function getCMSFields() {
      return new FieldSet(
         new TextField("User", "User"),
         new TextField("PhotoSet", "Photo Set"),
         new TextField("Tags", "Tags"),
         new NumericField("NumberToShow", "Number to Show")
      );
   }
}

?>