Exemple #1
0
 /**
  * loadGlobalProvider
  *
  * @return  Data
  */
 public static function loadGlobalProvider()
 {
     if (static::$data) {
         return static::$data;
     }
     $event = new Event('loadGlobalProvider');
     $event['data'] = new Data();
     Ioc::getDispatcher()->triggerEvent($event);
     return static::$data = $event['data'];
 }
 /**
  * getForm
  *
  * @param string|FieldDefinitionInterface $definition
  * @param string                          $control
  * @param bool|mixed                      $loadData
  *
  * @return Form
  */
 public function getForm($definition = null, $control = null, $loadData = false)
 {
     $form = new Form($control);
     if (is_string($definition)) {
         $definition = $this->getFieldDefinition($definition);
     }
     $form->defineFormFields($definition);
     if ($loadData === true) {
         $form->bind($this->getFormDefaultData());
     } elseif ($loadData) {
         $form->bind($loadData);
     }
     $renderer = $this->get('field.renderer', $this->formRenderer);
     if (class_exists($renderer)) {
         $form->setRenderer(new $renderer());
     }
     Ioc::getDispatcher()->triggerEvent('onModelAfterGetForm', array('form' => $form, 'model' => $this, 'control' => $control, 'definition' => $definition));
     return $form;
 }
Exemple #3
0
 /**
  * doExecute
  *
  * @return  integer
  */
 protected function doExecute()
 {
     DateTimeHelper::setDefaultTimezone();
     $this->out()->out('Vaseman generator')->out('-----------------------------')->out()->out('<comment>Start generating site</comment>')->out();
     $controller = new GetController();
     $event = new Event('onBeforeRenderFiles');
     $event['config'] = $this->app->getConfig();
     $event['controller'] = $controller;
     $event['io'] = $this->io;
     Ioc::getDispatcher()->triggerEvent($event);
     $dataRoot = $this->app->get('project.path.data', WINDWALKER_ROOT);
     $folders = $this->app->get('folders', array());
     $controller->setPackage(PackageHelper::getPackage('vaseman'));
     $controller->setApplication($this->app);
     $assets = array();
     $processors = array();
     foreach ($folders as $folder) {
         $files = Filesystem::files($dataRoot . '/' . $folder, true);
         foreach ($files as $file) {
             $asset = new Asset($file, $dataRoot . '/' . $folder);
             $layout = Path::clean($asset->getPath(), '/');
             $input = new Input(array('paths' => explode('/', $layout)));
             $config = $controller->getConfig();
             $config->set('layout.path', $asset->getRoot());
             $config->set('layout.folder', $folder);
             $controller->setInput($input)->execute();
             $processors[] = $controller->getProcessor();
         }
     }
     $event->setName('onAfterRenderFiles');
     $event['processors'] = $processors;
     Ioc::getDispatcher()->triggerEvent($event);
     $event->setName('onBeforeWriteFiles');
     Ioc::getDispatcher()->triggerEvent($event);
     $dir = $this->getOption('dir');
     $dir = $dir ?: $this->app->get('outer_project') ? "" : 'output';
     $dir = $this->app->get('project.path.root') . '/' . $dir;
     /** @var AbstractFileProcessor $processor */
     foreach ($processors as $processor) {
         $file = Path::clean($dir . '/' . $processor->getTarget());
         $this->out('<info>Write file</info>: ' . $file);
         Folder::create(dirname($file));
         file_put_contents($file, $processor->getOutput());
     }
     $event->setName('onAfterWriteFiles');
     Ioc::getDispatcher()->triggerEvent($event);
     $this->out()->out('<info>Complete</info>')->out();
     return 0;
 }
Exemple #4
0
 /**
  * loadExtensions
  *
  * @param \Twig_Environment $twig
  *
  * @return  Event
  */
 protected function loadExtensions(\Twig_Environment $twig)
 {
     // @ loadExtensions event
     $event = new Event('loadExtensions');
     $event['twig'] = $twig;
     return Ioc::getDispatcher()->triggerEvent($event);
 }
 /**
  * extractConfig
  *
  * @param string $template
  *
  * @return  string
  */
 public function prepareData($template)
 {
     $template = explode('---', $template, 3);
     if (!trim($template[0])) {
         array_shift($template);
         $template = implode('---', $template);
         $template = explode('---', $template, 2);
     }
     try {
         $config = Yaml::parse($template[0]);
         if ($config) {
             array_shift($template);
         }
         $this->config->loadArray($config);
         $this->config->merge(Ioc::getConfig());
         $this->getData()->bind(array('config' => $this->config->toArray()));
         // Target permalink
         if ($this->config['permalink']) {
             $this->target = rtrim($this->config['permalink'], '/');
             if (substr($this->target, -5) != '.html') {
                 $this->target .= '/index.html';
             }
             $this->data->uri['base'] = ProcessorHelper::getBackwards($this->target) ?: './';
             $this->data->uri['media'] = ProcessorHelper::getBackwards($this->target) . 'media/';
         } else {
             $this->target = $this->getTarget();
         }
         $template = implode('---', $template);
     } catch (ParseException $e) {
         $template = implode('---', $template);
     }
     $event = new Event('loadProvider');
     $event['data'] = $this->data;
     $event['processor'] = $this;
     $dispatcher = Ioc::getDispatcher();
     $dispatcher->triggerEvent($event);
     return $template;
 }