/**
  * Handle the command.
  *
  * @param ModuleCollection $modules
  * @param ThemeCollection  $themes
  */
 public function handle(ModuleCollection $modules, ThemeCollection $themes)
 {
     $theme = $themes->current();
     /*
      * Default the form view based on the request.
      */
     if (!$this->builder->getFormOption('form_view') && $this->builder->isAjax()) {
         $this->builder->setFormOption('form_view', 'streams::form/ajax');
     }
     if (!$this->builder->getFormOption('form_view') && $theme && $theme->isAdmin()) {
         $this->builder->setFormOption('form_view', 'streams::form/form');
     }
     if (!$this->builder->getFormOption('form_view') && $theme && !$theme->isAdmin()) {
         $this->builder->setFormOption('form_view', 'streams::form/standard');
     }
     if (!$this->builder->getFormOption('form_view')) {
         $this->builder->setFormOption('form_view', 'streams::form/admin/form');
     }
     /*
      * Default the form wrapper view as well.
      */
     if (!$this->builder->getFormOption('wrapper_view') && $this->builder->isAjax()) {
         $this->builder->setFormOption('wrapper_view', 'streams::ajax');
     }
     if (!$this->builder->getFormOption('wrapper_view')) {
         $this->builder->setFormOption('wrapper_view', 'streams::blank');
     }
     /*
      * If the permission is not set then
      * try and automate it.
      */
     if ($this->builder->getFormOption('permission') === null && ($module = $modules->active()) && ($stream = $this->builder->getFormStream())) {
         $this->builder->setFormOption('permission', $module->getNamespace($stream->getSlug() . '.write'));
     }
 }
예제 #2
0
 /**
  * Handle the command.
  *
  * @param Dispatcher $events
  */
 public function handle(Dispatcher $events)
 {
     $this->builder->fire('posting', ['builder' => $this->builder]);
     $this->builder->fireFieldEvents('form_posting');
     $this->dispatch(new LoadFormValues($this->builder));
     /**
      * Multiple form builders do not get
      * validated here.. in fact:
      *
      * @todo: Decouple validation into it's own method like multiple form builders
      */
     if (!$this->builder instanceof MultipleFormBuilder) {
         $this->dispatch(new ValidateForm($this->builder));
     }
     $this->dispatch(new RemoveSkippedFields($this->builder));
     $this->dispatch(new HandleForm($this->builder));
     $this->dispatch(new SetSuccessMessage($this->builder));
     $this->dispatch(new SetActionResponse($this->builder));
     if ($this->builder->isAjax()) {
         $this->dispatch(new SetJsonResponse($this->builder));
     }
     $this->builder->fire('posted', ['builder' => $this->builder]);
     $this->builder->fireFieldEvents('form_posted');
     $events->fire(new FormWasPosted($this->builder));
 }
 /**
  * Handle the command.
  *
  * @param Request    $request
  * @param MessageBag $messages
  * @param Translator $translator
  */
 public function handle(Request $request, MessageBag $messages, Translator $translator)
 {
     if ($this->builder->isAjax()) {
         return;
     }
     $errors = $this->builder->getFormErrors();
     $messages->error($errors->all());
     if ($request->segment(1) == 'admin' && ($stream = $this->builder->getFormStream()) && $stream->isTrashable()) {
         /* @var AssignmentInterface $assignment */
         foreach ($stream->getUniqueAssignments() as $assignment) {
             if ($this->builder->hasFormError($assignment->getFieldSlug())) {
                 $messages->warning($translator->trans('streams::validation.unique_trash', ['attribute' => '"' . $translator->trans($assignment->getFieldName()) . '"']));
             }
         }
     }
 }
예제 #4
0
 /**
  * Handle the command.
  *
  * @param Dispatcher $events
  */
 public function handle(Dispatcher $events)
 {
     $this->builder->fire('posting', ['builder' => $this->builder]);
     $this->builder->fireFieldEvents('form_posting');
     $this->dispatch(new LoadFormValues($this->builder));
     $this->dispatch(new ValidateForm($this->builder));
     $this->dispatch(new RemoveSkippedFields($this->builder));
     $this->dispatch(new HandleForm($this->builder));
     $this->dispatch(new SetSuccessMessage($this->builder));
     $this->dispatch(new SetActionResponse($this->builder));
     if ($this->builder->isAjax() && !$this->builder->getFormResponse()) {
         $this->dispatch(new SetJsonResponse($this->builder));
     }
     $this->builder->fire('posted', ['builder' => $this->builder]);
     $this->builder->fireFieldEvents('form_posted');
     $events->fire(new FormWasPosted($this->builder));
 }