/** * Answer a gui component for this theme listing * * @param object Harmoni_Gui2_ThemeInterface $theme * @return object ComponentInterface * @access public * @since 5/7/08 */ public function getThemeListing(Harmoni_Gui2_ThemeInterface $theme) { ob_start(); try { print "\n\t<h2>" . $theme->getDisplayName() . "</h2>"; } catch (UnimplementedException $e) { print "\n\t<div style='font-style: italic'>" . _("Display-Name not available.") . "</div>"; } try { $thumb = $theme->getThumbnail(); $harmoni = Harmoni::instance(); print "\n\t<img src='" . $harmoni->request->quickUrl('gui2', 'theme_thumbnail', array('theme' => $theme->getIdString())) . "' style='float: left; width: 200px; margin-right: 10px;'/>"; } catch (UnimplementedException $e) { print "\n\t<div style='font-style: italic'>" . _("Thumbnail not available.") . "</div>"; } catch (OperationFailedException $e) { print "\n\t<div style='font-style: italic'>" . _("Thumbnail not available.") . "</div>"; } print _("Id") . ": " . $theme->getIdString(); try { print "\n\t<p>" . $theme->getDescription() . "</p>"; } catch (UnimplementedException $e) { print "\n\t<div style='font-style: italic'>" . _("Description not available.") . "</div>"; } try { $history = $theme->getHistory(); print "\n\t<h4>" . _("History") . "</h4>"; print "\n\t<ul>"; foreach ($history as $entry) { print "\n\t\t<li style='margin-left: 20px;'>"; print $entry->getDateAndTime()->ymdString(); print " - "; print $entry->getName(); print "<br/><em>" . $entry->getComment() . "</em>"; print "</li>"; } print "\n\t</ul>"; } catch (UnimplementedException $e) { print "\n\t<div style='font-style: italic'>" . _("History not available.") . "</div>"; } return new Block(ob_get_clean(), STANDARD_BLOCK); }
/** * Update the Site to use the theme passed. Any options set on the theme * will be remembered. * * @param object Harmoni_Gui2_ThemeInterface $theme * @return null * @access public * @since 5/8/08 */ public function updateTheme(Harmoni_Gui2_ThemeInterface $theme) { $element = $this->getElement(); $doc = $element->ownerDocument; // Delete any existing theme-settings $this->useDefaultTheme(); // Add our new theme $themeElement = $element->appendChild($doc->createElement('theme')); $themeElement->setAttribute('id', $theme->getIdString()); // If the theme supports settings, save them. if ($theme->supportsOptions()) { $optionsSession = $theme->getOptionsSession(); // Only Store options if not using defaults if (!$optionsSession->usesDefaults()) { $themeElement->appendChild($doc->createCDATASection($optionsSession->getOptionsValue())); } } $this->_saveXml(); }
/** * Create a copy of a theme and return the new copy. * * @param object Harmoni_Gui2_ThemeInterface $theme * @return object Harmoni_Gui2_ThemeInterface * @access public * @since 5/16/08 */ public function createCopy(Harmoni_Gui2_ThemeInterface $theme) { $newTheme = $this->createTheme(); $newTheme->updateDisplayName($theme->getDisplayName() . " " . _("copy")); $newTheme->updateDescription($theme->getDescription()); $newTheme->updateThumbnail($theme->getThumbnail()); if ($theme->supportsOptions()) { $optionsSession = $theme->getOptionsSession(); $newOptionsSession = $newTheme->getOptionsSession(); $newOptionsSession->updateOptionsDocument($optionsSession->getOptionsDocument()); } $modSess = $newTheme->getModificationSession(); $modSess->updateGlobalCss($theme->getGlobalCss()); foreach ($theme->getComponentTypes() as $type) { $modSess->updateCssForType($type, $theme->getCssForType($type)); $modSess->updateTemplateForType($type, $theme->getTemplateForType($type)); } foreach ($theme->getImages() as $image) { $path = $image->getPath(); $dir = dirname($path); $prefixPath = ''; if (preg_match('/^(?:(?:.*\\/)?images\\/)?(.+)$/', $dir, $matches)) { $prefixPath = $matches[1]; } $modSess->addImage($image, $image->getBasename(), $prefixPath); } return $newTheme; }