public function initialize($context, $moduleName, $actionName, $viewName) { $this->nameSuffix = sfSmartphoneViewToolKit::getViewNameSuffixFromUA($this, $context, $moduleName, $actionName, $viewName, false); if ($this->nameSuffix) { $this->enableNameSuffix = sfSmartphoneViewToolKit::getViewNameSuffixFromUA($this, $context, $moduleName, $actionName, $viewName); } parent::initialize($context, $moduleName, $actionName, $viewName . sfInflector::camelize($this->enableNameSuffix)); }
public function initialize($context, $moduleName, $actionName, $viewName) { parent::initialize($context, $moduleName, $actionName, sfSmartphoneViewToolKit::getViewNameFromUA($this, $context, $moduleName, $actionName, $viewName)); }
/** * Execute this configuration handler. * * @param array $configFiles * @return string * @see sfViewConfigHandler::execute() */ public function execute($configFiles) { // parse the yaml $this->yamlConfig = self::getConfiguration($configFiles); // init our data array $data = array(); $generalSmartphoneSuffix = '_' . sfSmartphoneViewToolKit::getGeneralSmartphoneSuffix(); $data[] = "\$response = \$this->context->getResponse();\n\n"; $data[] = "\$viewNameSuffix = \$this->enableNameSuffix ? '_'.\$this->enableNameSuffix : '';\n\n"; $first = true; $data[] = "\$un = false;\n"; if ($this->getConfigValue('use_smartphone_view', '')) { $data[] = "\$un = true;\n"; } foreach ($this->yamlConfig as $viewName => $values) { if ('all' == $viewName || 0 === strpos($viewName, '_')) { continue; } $data[] = ($first ? '' : 'else ') . "if (\$templateName.\$this->viewName == '{$viewName}')\n" . "{\n"; if ($this->getConfigValue('use_smartphone_view', $viewName)) { $data[] = " \$un = true;\n"; } else { $data[] = " \$un = false;\n"; } $first = false; $data[] = "}\n"; } $data[] = "if(\$un)\n{\n"; $data[] = " \$viewNameSuffix = \$this->nameSuffix ? '_'.\$this->nameSuffix : '';\n"; $data[] = "}\n"; $tmp = $this->yamlConfig; unset($this->yamlConfig['all']); $data[] = "\$o = true;\n"; if (isset($this->yamlConfig[$generalSmartphoneSuffix])) { $data[] = "if (\$viewNameSuffix)\n{\n"; $data[] = " \$o = false;\n"; $data[] = $this->addLayout($generalSmartphoneSuffix); $data[] = $this->addComponentSlots($generalSmartphoneSuffix); $data[] = $this->addHtmlHead($generalSmartphoneSuffix); $data[] = $this->addEscaping($generalSmartphoneSuffix); $data[] = $this->addHtmlAsset($generalSmartphoneSuffix); $data[] = "}\n"; unset($this->yamlConfig['_' . $generalSmartphoneSuffix]); } $first = true; foreach ($this->yamlConfig as $viewName => $values) { if ('_another' == $viewName || $generalSmartphoneSuffix == $viewName || 0 !== strpos($viewName, '_')) { continue; } $data[] = ($first ? '' : 'else ') . "if (\$viewNameSuffix == '{$viewName}')\n" . "{\n"; $data[] = $this->addLayout($viewName); $data[] = $this->addComponentSlots($viewName); $data[] = $this->addHtmlHead($viewName); $data[] = $this->addEscaping($viewName); $data[] = $this->addHtmlAsset($viewName); $data[] = "}\n"; $first = false; } if (isset($this->yamlConfig['_another'])) { $data[] = ($first ? 'if' : 'elseif') . "(\$o)\n{\n"; $data[] = $this->addLayout('_another'); $data[] = $this->addComponentSlots('_another'); $data[] = $this->addHtmlHead('_another'); $data[] = $this->addEscaping('_another'); $data[] = $this->addHtmlAsset('_another'); $data[] = "}\n"; } $this->yamlConfig = $tmp; // first pass: iterate through all view names to determine the real view name $first = true; foreach ($this->yamlConfig as $viewName => $values) { if ('all' == $viewName || 0 === strpos($viewName, '_')) { continue; } $data[] = ($first ? '' : 'else ') . "if (\$this->actionName.\$this->viewName == '{$viewName}')\n" . "{\n"; $data[] = $this->addTemplate($viewName); $data[] = "}\n"; $first = false; } // general view configuration $data[] = ($first ? '' : "else\n{") . "\n"; $data[] = $this->addTemplate($viewName); $data[] = ($first ? '' : "}") . "\n\n"; // second pass: iterate through all real view names $first = true; foreach ($this->yamlConfig as $viewName => $values) { if ('all' == $viewName || 0 === strpos($viewName, '_')) { continue; } $data[] = ($first ? '' : 'else ') . "if (\$templateName.\$this->viewName == '{$viewName}')\n" . "{\n"; $data[] = $this->addLayout($viewName); $data[] = $this->addComponentSlots($viewName); $data[] = $this->addHtmlHead($viewName); $data[] = $this->addEscaping($viewName); $data[] = $this->addHtmlAsset($viewName); $data[] = "}\n"; $first = false; } // general view configuration $data[] = ($first ? '' : "else\n{") . "\n"; $data[] = $this->addLayout(); $data[] = $this->addComponentSlots(); $data[] = $this->addHtmlHead(); $data[] = $this->addEscaping(); $data[] = $this->addHtmlAsset(); $data[] = ($first ? '' : "}") . "\n"; // compile data $retval = sprintf("<?php\n" . "// auto-generated by sfSmartphoneViewConfigHandler\n" . "// date: %s\n%s\n", date('Y/m/d H:i:s'), implode('', $data)); return $retval; }