*/ /** * This implements the ChipX86.com arctic theme. * * @package GalleryTheme * @subpackage Theme */ class ArcticTheme extends GalleryTheme { /** * Constructor */ function ArcticTheme() { global $gallery; $this->setId('arctic'); $this->setName($gallery->i18n('Arctic')); $this->setDescription($gallery->i18n('Style for ChipX86.com')); $this->setVersion('1.0.0'); $this->setRequiredCoreApi(array(6, 5)); $this->setRequiredThemeApi(array(2, 1)); $this->setStandardSettings( array('showImageOwner' => 0, 'sidebarBlocks' => serialize(array( array('search.SearchBlock', array('showAdvancedLink' => true)), array('core.PeerList', array()), array('imageblock.ImageBlock', array()))), 'albumBlocks' => serialize(array( array('comment.ViewComments', array()))), 'photoBlocks' => serialize(array( array('exif.ExifInfo', array()), array('comment.ViewComments', array()))))); } /** * @see GalleryTheme::showAlbumPage */ function showAlbumPage(&$template, $item, $params, $childIds) { $ret = $this->loadCommonTemplateData( $template, $item, $params, array('owner', 'viewCount', 'childCount', 'descendentCount', 'parents', 'systemLinks', 'itemLinks', 'itemSummaries', 'permissions', 'thumbnails', 'pageNavigator', 'jumpRange'), $childIds); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } /* Add in our extra stuff */ $theme =& $template->getVariableByReference('theme'); $theme['params']['groupByYear'] = !$item->getParentId(); /* Find the thumbnail size for this album */ $theme['params']['thumbnailSize'] = 150; list ($ret, $preferences) = GalleryCoreApi::fetchDerivativePreferencesForItem($item->getId()); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } foreach ($preferences as $preference) { if ($preference['derivativeType'] == DERIVATIVE_TYPE_IMAGE_THUMBNAIL && preg_match('/thumbnail\|(\d+)/', $preference['derivativeOperations'], $matches)) { $theme['params']['thumbnailSize'] = $matches[1]; break; } } /* Add our header and styles */ return array(GalleryStatus::success(), 'theme.tpl'); } /** * @see GalleryTheme::showPhotoPage */ function showPhotoPage(&$template, $item, $params) { $dataTypes = array('owner', 'parents', 'systemLinks', 'itemLinks', 'permissions', 'itemLinksDetailed', 'itemNavigator', 'imageViews'); if (!empty($params['showMicroThumbs'])) { $dataTypes[] = 'navThumbnails'; } $ret = $this->loadCommonTemplateData($template, $item, $params, $dataTypes); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } return array(GalleryStatus::success(), 'theme.tpl'); } /** * @see GalleryTheme::showModulePage */ function showModulePage(&$template, $item, $params, $templateFile) { $ret = $this->loadCommonTemplateData( $template, $item, $params, array('parents', 'systemLinks')); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } return array(GalleryStatus::success(), 'theme.tpl'); } /** * @see GalleryTheme::showAdminPage */ function showAdminPage(&$template, $item, $params, $templateFile) { $ret = $this->loadCommonTemplateData( $template, $item, $params, array('parents', 'systemLinks')); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } return array(GalleryStatus::success(), 'theme.tpl'); } /** * @see GalleryTheme::showErrorPage */ function showErrorPage(&$template) { return array(GalleryStatus::success(), 'error.tpl'); } /** * @see GalleryTheme::showProgressBarPage */ function showProgressBarPage(&$template, $item, $params) { $ret = $this->loadCommonTemplateData( $template, $item, $params, array('parents', 'systemLinks')); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } return array(GalleryStatus::success(), 'theme.tpl'); } /** * @see GalleryTheme::getSettings() */ function getSettings($itemId=null) { list ($ret, $settings) = parent::getSettings($itemId); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } list ($ret, $params) = $this->fetchParameters($itemId); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } /* Add in our custom settings */ $params = array_merge(array('contentWidth' => 700), $params); $settings[] = array('key' => 'contentWidth', 'name' => $this->translate('Width of page content in pixels'), 'type' => 'text-field', 'typeParams' => array('size' => 2), 'value' => $params['contentWidth']); return array(GalleryStatus::success(), $settings); } /** * @see GalleryTheme::validateSettings */ function validateSettings($settings) { $error = parent::validateSettings($settings); if (!is_numeric($settings['contentWidth'])) { $error['contentWidth'] = $this->translate('You must enter a number'); } return $error; } } ?>