protected function getContainer()
 {
     if (isset($this->app->memcache)) {
         $cache_key = sprintf('PinholeMetaDataGadget.getContainer.%s', $this->app->session->isLoggedIn() ? 'private' : 'public');
         $container = $this->app->memcache->getNs('photos', $cache_key);
         if ($container !== false) {
             return $container;
         }
     }
     $sections = $this->getMetaDataSections();
     $values = $this->getMetaDataValues();
     $locale = SwatI18NLocale::get();
     $container = new SwatContainer();
     foreach ($sections as $section) {
         $disclosure = new SwatDisclosure();
         $disclosure->title = $section->title;
         $disclosure->open = false;
         ob_start();
         echo '<ul>';
         foreach ($values as $value) {
             if ($value->meta_data == $section->id) {
                 echo '<li class="clearfix"><div>';
                 $a_tag = new SwatHtmlTag('a');
                 $a_tag->href = sprintf('%stag?meta.%s=%s', $this->app->config->pinhole->path, $section->shortname, PinholePhotoMetaDataBinding::escapeValue($value->value));
                 $a_tag->setContent(PinholePhotoMetaDataBinding::getFormattedValue($section->shortname, $value->value));
                 $a_tag->display();
                 echo ' <span>' . $locale->formatNumber($value->photo_count) . '</span>';
                 echo '</div></li>';
             }
         }
         echo '</ul>';
         $content = new SwatContentBlock();
         $content->content_type = 'text/xml';
         $content->content = ob_get_clean();
         $disclosure->add($content);
         $container->add($disclosure);
     }
     if (isset($this->app->memcache)) {
         $this->app->memcache->setNs('photos', $cache_key, $container);
     }
     return $container;
 }
 protected function buildMetaData(SwatDetailsView $view)
 {
     $photo_meta_data = $this->photo->meta_data;
     $field = $view->getField('meta_data');
     if (count($photo_meta_data) == 0) {
         $field->visible = false;
     }
     $camera = null;
     foreach ($this->photo->meta_data as $meta_data) {
         if ($meta_data->shortname == 'model') {
             $camera = $meta_data->value;
         }
     }
     $camera_renderer = $field->getRenderer('meta_data_camera');
     if ($camera === null) {
         $camera_renderer->visible = false;
     } else {
         $camera_renderer->text = sprintf(Pinhole::_('Taken with a %s'), $camera) . ' | ';
     }
     $renderer = $field->getRenderer('meta_data_widget');
     $widget = $renderer->getPrototypeWidget();
     $meta_data_view = $widget->getChild('meta_data_disclosure')->getChild('meta_data_view');
     foreach ($photo_meta_data as $meta_data) {
         $field = new SwatDetailsViewField();
         $field->title = $meta_data->title;
         if ($meta_data->machine_tag) {
             $renderer = new SwatLinkCellRenderer();
             $renderer->link = sprintf('%stag?%s', $this->app->config->pinhole->path, $meta_data->getURI());
         } else {
             $renderer = new SwatTextCellRenderer();
         }
         $renderer->text = PinholePhotoMetaDataBinding::getFormattedValue($meta_data->shortname, $meta_data->value);
         $meta_data_view->appendField($field);
         $field->addRenderer($renderer);
     }
 }
Example #3
0
 /**
  * Gets the title of this meta tag
  *
  * @return string the title of this meta tag.
  */
 public function getTitle()
 {
     return sprintf(Pinhole::_('%s: %s'), $this->meta_data->title, PinholePhotoMetaDataBinding::getFormattedValue($this->getName(), $this->getValue()));
 }