/**
  * 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'));
     }
 }
 /**
  * Guess the field placeholders.
  *
  * @param FormBuilder $builder
  */
 public function guess(FormBuilder $builder)
 {
     $fields = $builder->getFields();
     $prefix = $builder->getFormOption('prefix');
     foreach ($fields as &$field) {
         array_set($field, 'prefix', array_get($field, 'prefix', $prefix));
     }
     $builder->setFields($fields);
 }
 /**
  * Authorize the table.
  *
  * @param FormBuilder $builder
  */
 public function authorize(FormBuilder $builder)
 {
     // Try the option first.
     $permission = $builder->getFormOption('permission');
     if ($permission === false) {
         return;
     }
     if (!env('INSTALLED')) {
         return;
     }
     if ($permission && !$this->authorizer->authorizeAny((array) $permission)) {
         abort(403);
     }
 }
 /**
  * Handle the command.
  *
  * @param ResponseFactory $response
  */
 public function handle(ResponseFactory $response)
 {
     $this->builder->setFormResponse($response->json(['errors' => $this->builder->getFormErrors()->getMessages(), 'redirect' => $this->builder->getFormOption('redirect', $this->builder->getFormActions()->active()->getRedirect())]));
 }
 /**
  * Handle the command.
  *
  * @return string
  */
 public function handle()
 {
     return $this->builder->getFormOption('message_view', 'anomaly.plugin.contact::email/contact');
 }
 /**
  * Handle the command.
  */
 public function handle(MessageBag $messages, Translator $translator)
 {
     // If we can't save or there are errors then skip it.
     if ($this->builder->hasFormErrors() || !$this->builder->canSave()) {
         return;
     }
     // If there is no model and there isn't anything specific to say, skip it.
     if (!$this->builder->getFormEntry() && !$this->builder->getFormOption('success_message')) {
         return;
     }
     $mode = $this->builder->getFormMode();
     // False means no message is desired.
     if ($this->builder->getFormOption('success_message') === false) {
         return;
     }
     $entry = $this->builder->getFormEntry();
     $stream = $this->builder->getFormStream();
     $parameters = ['title' => is_object($entry) ? $entry->getTitle() : null, 'name' => is_object($stream) ? $stream->getName() : null];
     // If the name doesn't exist we need to be clever.
     if (str_contains($parameters['name'], '::') && !$translator->has($parameters['name']) && $stream) {
         $parameters['name'] = ucfirst(str_singular(str_replace('_', ' ', $stream->getSlug())));
     } elseif ($parameters['name']) {
         $parameters['name'] = str_singular(trans($parameters['name']));
     } else {
         $parameters['name'] = trans('streams::entry.name');
     }
     /**
      * Set the default success message.
      */
     if ($this->builder->getFormOption('success_message') === null) {
         $this->builder->setFormOption('success_message', trans('streams::message.' . $mode . '_success', $parameters));
     }
     $messages->{$this->builder->getFormOption('success_message_type', 'success')}($this->builder->getFormOption('success_message'));
 }