/** {@inheritdoc} */ public function toTwig() { $flashvars = array(); foreach ($this->flashvars as $flashvar) { $flashvars[$flashvar['name']] = $flashvar['value']; } if ($this->module) { $moduleTemplate = $this->template ? $this->app->twig->loadTemplate($this->template) : null; $flashvars[$this->moduleFlashvar] = $this->module->showFront($moduleTemplate); } if (in_array("get", $this->addToFlashvars)) { ArrayHelper::extend($flashvars, $_GET); } if (in_array("post", $this->addToFlashvars)) { ArrayHelper::extend($flashvars, $_POST); } if (in_array("cookie", $this->addToFlashvars)) { ArrayHelper::extend($flashvars, $_COOKIE); } $options = array(); $options['expressInstall'] = $this->expressInstall; $options['target'] = $this->target; $options['attributes'] = count($this->attributes) ? $this->attributes : null; $options['params'] = count($this->params) ? $this->params : null; $options['flashvars'] = count($flashvars) ? $flashvars : null; $options['alternativeContent'] = $this->alternativeContent; $flashContent = FlashUtil::embed($this->method, $this->flash, $this->width, $this->height, $this->version, $options); return array('Source' => $this->flash, 'Target' => $this->target, 'AlternativeContent' => $this->alternativeContent, 'Html' => $flashContent['html'], 'Script' => $flashContent['script']); }
/** * Load configuration. * * @param string|array|null $config * @param bool $loadUserConfig * @return array */ protected static function getConfig($config, $loadUserConfig = true) { $userConfig = array(); $configPath = null; $projectPath = null; if (is_string($config)) { // Load configuration from file $configPath = realpath($config); if (!$configPath) { throw new Exception('Configuration file not found: ' . $config); } $projectPath = PathHelper::path(true, dirname($configPath), '..'); if ($loadUserConfig) { $userConfig = (require $configPath); } } else { if (is_array($config)) { // Configuration provided by array if ($loadUserConfig) { $userConfig = $config; } } else { if ($config === null || $config === false) { // Skip configuration } else { throw new Exception('Unknown configuration format.'); } } } // Attempt to find project path if (!$projectPath) { $projectPath = PathHelper::path(true, getcwd(), '..', 'cms'); } if (!$projectPath) { $projectPath = PathHelper::path(true, getcwd(), 'cms'); } // default config $config = array('startTime' => isset($_SERVER['REQUEST_TIME_FLOAT']) ? $_SERVER['REQUEST_TIME_FLOAT'] : microtime(true), 'name' => "untitled", 'baseUrl' => '/', 'adminEmail' => "*****@*****.**", 'divertOutMailToAdmin' => false, 'statistics' => false, 'applicationClass' => 'Curry\\App', 'defaultGeneratorClass' => 'Curry\\Generator\\HtmlGenerator', 'forceDomain' => false, 'revisioning' => false, 'umask' => 02, 'locale' => array('en_US.UTF-8', 'en_US.UTF8', 'UTF-8', 'UTF8'), 'liveEdit' => true, 'secret' => 'SECRET', 'errorNotification' => false, 'basePath' => PathHelper::path(true, dirname(__FILE__), '..', '..'), 'projectPath' => $projectPath, 'wwwPath' => getcwd(), 'configPath' => $configPath, 'cache' => array('method' => 'auto'), 'mail' => array('method' => 'sendmail'), 'log' => array(), 'maintenance' => array('enabled' => false), 'defaultEditor' => 'tinyMCE', 'migrationVersion' => self::MIGRATION_VERSION, 'pageCache' => true, 'autoPublish' => false, 'developmentMode' => false, 'autoUpdateIndex' => false, 'password' => array('algorithm' => PASSWORD_BCRYPT, 'options' => array('cost' => 10))); if ($loadUserConfig) { ArrayHelper::extend($config, $userConfig); } // Fix base url $config['baseUrl'] = url($config['baseUrl'])->getAbsolute(); if (!$config['projectPath']) { throw new Exception('Project path could not be found, please use a configuration file to specify the path'); } $secondaryConfig = array('vendorPath' => PathHelper::path($config['basePath'], 'vendor'), 'tempPath' => self::getTempDir($config['projectPath']), 'trashPath' => PathHelper::path($config['projectPath'], 'data', 'trash'), 'autoBackup' => $config['developmentMode'] ? 0 : 86400, 'errorReporting' => $config['developmentMode'] ? -1 : false, 'propel' => array('conf' => PathHelper::path($config['projectPath'], 'config', 'propel.php'), 'projectClassPath' => PathHelper::path($config['projectPath'], 'propel', 'build', 'classes')), 'template' => array('root' => PathHelper::path($config['projectPath'], 'templates'), 'options' => array('debug' => (bool) $config['developmentMode'], 'cache' => PathHelper::path($config['projectPath'], 'data', 'cache', 'templates'), 'base_template_class' => '\\Curry\\Twig\\Template')), 'backend' => array('basePath' => 'admin/', 'placeholderExclude' => array(), 'theme' => 'vindaloo', 'loginCookieExpire' => 31536000, 'loginTokenExpire' => 31536000), 'mail' => array('options' => array()), 'domainMapping' => array('enabled' => false, 'domains' => array()), 'sharedController' => !file_exists($config['wwwPath'] . '/shared')); $config = ArrayHelper::extend($secondaryConfig, $config); return $config; }
/** * Render a page and return content. * * @param array $vars * @param array $options * @return Response */ public function render(array $vars = array(), array $options = array()) { $twig = $this->app->twig; $prevPage = isset($this->app->page) ? $this->app->page : null; $prevPageRevision = isset($this->app->pageRevision) ? $this->app->pageRevision : null; $prevGenerator = isset($this->app->generator) ? $this->app->generator : null; $this->app->page = $this->getPage(); $this->app->pageRevision = $this->pageRevision; $this->app->generator = $this; // TODO: Rename curry to app? $appVars = $this->app->globals; if (isset($vars['curry'])) { ArrayHelper::extend($appVars, $vars['curry']); } $vars['curry'] = ArrayHelper::extend($appVars, $this->getGlobals()); foreach ($vars as $k => $v) { $twig->addGlobal($k, $v); } $moduleContent = $this->generate($options); if (isset($options['pageModuleId'])) { $pageModuleId = $options['pageModuleId']; $pageModuleWrappers = $this->getPageModuleWrappers(); if (isset($pageModuleWrappers[$pageModuleId])) { $pageModuleWrapper = $pageModuleWrappers[$pageModuleId]; return $moduleContent[$pageModuleWrapper->getTarget()]; } else { throw new \Exception('PageModule with id = ' . $pageModuleId . ' not found on page.'); } } $event = new RenderEvent($this->getTemplateObject(), $moduleContent); $this->app->dispatcher->dispatch(GeneratorEvents::RENDER, $event); $response = new Response($event->getTemplate()->render($event->getContent())); // restore app variables $this->app->page = $prevPage; $this->app->pageRevision = $prevPageRevision; $this->app->generator = $prevGenerator; return $response; }
public function setOptions(array $options) { if (isset($options['actions'])) { foreach ($options['actions'] as $name => $action) { $this->addAction($name, $action); } unset($options['actions']); } if (isset($options['columns'])) { foreach ($options['columns'] as $name => $column) { $this->addColumn($name, $column); } unset($options['columns']); } foreach ($options as $k => $v) { if (method_exists($this, 'set' . $k)) { $this->{'set' . $k}($v); } else { if (property_exists($this, $k)) { if (is_array($this->{$k})) { ArrayHelper::extend($this->{$k}, $v); } else { $this->{$k} = $v; } } else { continue; } } unset($options[$k]); } ArrayHelper::extend($this->options, $options); }
/** * Metadata form. * * @param PageRevision $pageRevision * @return Curry_Form */ public static function getMetadataForm(PageRevision $pageRevision) { $query = PageMetadataQuery::create()->joinWith('Metadata', Criteria::RIGHT_JOIN)->addJoinCondition('Metadata', 'PageMetadata.PageRevisionId = ?', $pageRevision->getPageRevisionId())->orderBy('Metadata.SortableRank'); $metadatas = $query->find(); $form = new Curry_Form(array('action' => url('', array("module", "view", "page_id")), 'method' => 'post', 'elements' => array('pid_metadata' => array('hidden')))); $typeOptions = array('textarea' => array('rows' => 6)); foreach ($metadatas as $pageMetadata) { $metadata = $pageMetadata->getMetadata(); $options = array('label' => $metadata->getDisplayName(), 'value' => $pageMetadata->getValue() !== null ? $pageMetadata->getValue() : $metadata->getDefaultValue()); if (isset($typeOptions[$metadata->getType()])) { ArrayHelper::extend($options, $typeOptions[$metadata->getType()]); } $form->addElement($metadata->getType(), $metadata->getName(), $options); } $form->addElement('submit', 'save', array('label' => 'Save')); return $form; }
protected function getFileAccessList($query = null, $formOptions = array(), $listOptions = array()) { if (!$query) { $query = FilebrowserAccessQuery::create(); } $o = array('columnElements' => array('path' => array('filebrowser', array('filebrowserOptions' => array('local' => false), 'finderOptions' => array('type' => 'folder'), 'allowEmpty' => false, 'validators' => array(array('callback', false, array('callback' => array($this, 'validatePath')))))), 'write' => array('select', array('label' => 'Access', 'multiOptions' => array('' => 'Read', '1' => 'Read / Write'))))); ArrayHelper::extend($o, $formOptions); $modelForm = new Curry_Form_ModelForm('FilebrowserAccess', $o); $modelForm->path->getValidator('callback')->setMessage("Invalid permissions to path '%value%'"); $form = new Curry_ModelView_Form($modelForm); $o = array('title' => 'File permissions', 'modelForm' => $form, 'columns' => array('write' => array('label' => 'Access', 'display' => '{{Write?"Read / Write":"Read"}}'))); ArrayHelper::extend($o, $listOptions); $list = new Curry_ModelView_List($query, $o); return $list; }