protected function resolveStyleFile(View $view)
 {
     $stylePath = sprintf('%s/%s', $view->getTemplatePath(), self::PATH_STYLE);
     if (!is_dir($stylePath)) {
         return false;
     }
     $assetPath = $this->publishStyle($stylePath);
     $assetStyleFile = sprintf('%s/%s', $assetPath, self::FILENAME_STYLE);
     return $assetStyleFile;
 }
 protected function getDependents(View $view)
 {
     $widgetsIds = array();
     foreach (array_reverse($view->getWidgets()) as $widgetClass => $widgets) {
         /** @var Widget $widget */
         foreach ($widgets as $widget) {
             $scriptFile = sprintf('%s%s', $widget->getView()->getTemplatePath(), self::EXTENSION_SCRIPT);
             $isAppend = $this->appendScriptFile($widget->getView()->getId(), $scriptFile);
             $isAppend && ($widgetsIds[$widget->getName()] = array('name' => $widget->getView()->getId(), 'params' => $widget->getView()->getJsParams(), 'dependents' => $this->getDependents($widget->getView())));
         }
     }
     return $widgetsIds;
 }
Esempio n. 3
0
 public function renderFile($context, $sourceFile, $params, $isReturn)
 {
     $templatePath = $this->resolveTemplatePath($sourceFile);
     $viewId = $this->generateViewId($templatePath);
     $view = new View($viewId, $context);
     $view->setTemplatePath($templatePath);
     $view->setParams($params);
     $isContextWidget = $this->isContextWidget($context) && $context->setView($view);
     $isAjaxRequest = !$isContextWidget && $this->isAjaxRequest();
     $responseParams = array();
     foreach ($this->getViewProcessorsClasses() as $viewProcessorClass) {
         /** @var \PetrGrishin\View\ViewProcessor\BaseViewProcessor $viewProcessor */
         $viewProcessor = new $viewProcessorClass($view);
         $viewProcessor->setIsAjaxMode($isAjaxRequest);
         $viewProcessor->processView();
         $responseParams = array_merge($responseParams, $viewProcessor->getParams());
     }
     if ($isReturn) {
         return $this->renderResponse($responseParams, $isAjaxRequest);
     }
     echo $this->renderResponse($responseParams, $isAjaxRequest);
 }