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); } }
/** * 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())); }