/**
  * Handle the command.
  *
  * @param Resolver  $resolver
  * @param Evaluator $evaluator
  */
 public function handle(Resolver $resolver, Evaluator $evaluator)
 {
     $evaluator->evaluate($resolver->resolve($this->builder->getOptions(), ['builder' => $this->builder]), ['builder' => $this->builder]);
     foreach ($this->builder->getOptions() as $key => $value) {
         $this->builder->setTableOption($key, $value);
     }
 }
Example #2
0
 /**
  * Handle the command.
  *
  * @param Repository $config
  * @param Resolver   $resolver
  * @param Evaluator  $evaluator
  * @param Value      $value
  * @return string
  */
 public function handle(Repository $config, Resolver $resolver, Evaluator $evaluator, Value $value)
 {
     $base = '/' . $config->get('anomaly.module.posts::paths.module');
     if (!$this->post->isLive()) {
         return $base . '/preview/' . $this->post->getStrId();
     }
     return $base . '/' . $value->make($evaluator->evaluate($resolver->resolve($config->get('anomaly.module.posts::paths.permalink'), ['post' => $this->post]), ['post' => $this->post]), $this->post);
 }
 /**
  * Handle the command.
  *
  * @param Resolver  $resolver
  * @param Evaluator $evaluator
  */
 public function handle(Resolver $resolver, Evaluator $evaluator)
 {
     $arguments = ['extension' => $this->extension];
     $widget = $this->extension->getWidget();
     $options = $this->extension->getOptions();
     $options = $resolver->resolve($options, $arguments);
     $options = $evaluator->evaluate($options, $arguments);
     foreach ($options as $key => $value) {
         $widget->setOption($key, $value);
     }
 }
 /**
  * Handle the command.
  *
  * @param Resolver  $resolver
  * @param Evaluator $evaluator
  */
 public function handle(Resolver $resolver, Evaluator $evaluator)
 {
     $arguments = ['builder' => $this->builder];
     $tree = $this->builder->getTree();
     $options = $this->builder->getOptions();
     $options = $resolver->resolve($options, $arguments);
     $options = $evaluator->evaluate($options, $arguments);
     foreach ($options as $key => $value) {
         $tree->setOption($key, $value);
     }
 }
 /**
  * Build the items.
  *
  * @param GridBuilder $builder
  */
 public function build(GridBuilder $builder)
 {
     foreach ($builder->getGridEntries() as $entry) {
         $buttons = $this->buttons->build($builder, $entry);
         $buttons = $buttons->enabled();
         $value = $this->value->make($builder, $entry);
         $id = $entry->getId();
         $item = compact('builder', 'buttons', 'entry', 'value', 'id');
         $item = $this->evaluator->evaluate($item, compact('builder', 'entry'));
         $builder->addGridItem($this->factory->make($item));
     }
 }
 /**
  * Build the items.
  *
  * @param TreeBuilder $builder
  */
 public function build(TreeBuilder $builder)
 {
     foreach ($builder->getTreeEntries() as $entry) {
         $segments = $this->segments->build($builder, $entry);
         $buttons = $this->buttons->build($builder, $entry);
         $buttons = $buttons->enabled();
         $id = $entry->getId();
         $parent = $entry->{$builder->getTreeOption('parent_segment', 'parent_id')};
         $item = compact('builder', 'segments', 'buttons', 'entry', 'parent', 'id');
         $item = $this->evaluator->evaluate($item, compact('builder', 'entry'));
         $builder->addTreeItem($this->factory->make($item));
     }
 }
Example #7
0
 /**
  * Handle the index process.
  *
  * @param EntryInterface $entry
  * @param                $config
  * @return array
  */
 public function read(EntryInterface $entry, $config)
 {
     $config = $this->evaluator->evaluate($config, compact('entry'));
     $this->setId($entry, $config);
     $this->setEnabled($entry, $config);
     $this->setStream($entry, $config);
     $this->setFields($entry, $config);
     $this->setPaths($entry, $config);
     $this->setEntry($entry, $config);
     $this->setMandatory($entry, $config);
     $this->appendExtra($entry, $config);
     return $config;
 }
 /**
  * Build the columns.
  *
  * @param  TableBuilder     $builder
  * @param                   $entry
  * @return ColumnCollection
  */
 public function build(TableBuilder $builder, $entry)
 {
     $table = $builder->getTable();
     $columns = new ColumnCollection();
     $this->input->read($builder);
     foreach ($builder->getColumns() as $column) {
         array_set($column, 'entry', $entry);
         $column = $this->evaluator->evaluate($column, compact('entry', 'table'));
         $column['value'] = $this->value->make($table, $column, $entry);
         $columns->push($this->factory->make($column));
     }
     return $columns;
 }
 /**
  * Build the rows.
  *
  * @param TableBuilder $builder
  */
 public function build(TableBuilder $builder)
 {
     foreach ($builder->getTableEntries() as $entry) {
         $columns = $this->columns->build($builder, $entry);
         $buttons = $this->buttons->build($builder, $entry);
         $buttons = $buttons->enabled();
         $row = compact('columns', 'buttons', 'entry');
         if ($entry instanceof Model) {
             $row['key'] = $entry->getKey();
         }
         $row['table'] = $builder->getTable();
         $row = $this->evaluator->evaluate($row, compact('builder', 'entry'));
         $builder->addTableRow($this->factory->make($row));
     }
 }
 /**
  * Build the buttons.
  *
  * @param TreeBuilder  $builder
  * @param              $entry
  * @return ButtonCollection
  */
 public function build(TreeBuilder $builder, $entry)
 {
     $tree = $builder->getTree();
     $buttons = new ButtonCollection();
     $this->input->read($builder, $entry);
     foreach ($builder->getButtons() as $button) {
         if (!array_get($button, 'enabled', true)) {
             continue;
         }
         $button = $this->evaluator->evaluate($button, compact('entry', 'tree'));
         $button = $this->parser->parse($button, $entry);
         $button = $this->factory->make($button);
         $buttons->push($button);
     }
     return $buttons;
 }
 /**
  * Handle the command.
  *
  * @param Repository $config
  * @param Evaluator  $evaluator
  */
 public function handle(Repository $config, Evaluator $evaluator, Translator $translator)
 {
     if (!($fields = $config->get($this->fieldType->getNamespace('config/config')))) {
         $fields = $config->get($this->fieldType->getNamespace('config'), []);
     }
     $fields = $evaluator->evaluate($fields);
     foreach ($fields as $slug => $field) {
         /**
          * Determine the field label.
          */
         $label = $this->fieldType->getNamespace('config.' . $slug . '.label');
         if (!$translator->has($label)) {
             $label = $this->fieldType->getNamespace('config.' . $slug . '.name');
         }
         $field['label'] = array_get($field, 'label', $label);
         /**
          * Determine the instructions.
          */
         $instructions = $this->fieldType->getNamespace('config.' . $slug . '.instructions');
         if ($translator->has($instructions)) {
             $field['instructions'] = $instructions;
         }
         /**
          * Determine the placeholder.
          */
         $placeholder = $this->fieldType->getNamespace('config.' . $slug . '.placeholder');
         if ($translator->has($placeholder)) {
             $field['placeholder'] = $placeholder;
         }
         /**
          * Determine the warning.
          */
         $warning = $this->fieldType->getNamespace('config.' . $slug . '.warning');
         if ($translator->has($warning)) {
             $field['warning'] = $warning;
         }
         /**
          * Set the configuration value.
          */
         $field['value'] = array_get($this->fieldType->getConfig(), $slug);
         // Prefix the slugs.
         $field['field'] = 'config.' . $slug;
         $fields['config.' . $slug] = $field;
         $this->builder->addField($field);
     }
 }
 /**
  * Build the buttons.
  *
  * @param  TableBuilder $builder
  * @param                   $entry
  * @return ButtonCollection
  */
 public function build(TableBuilder $builder, $entry)
 {
     $table = $builder->getTable();
     $buttons = new ButtonCollection();
     $this->input->read($builder);
     foreach ($builder->getButtons() as $button) {
         array_set($button, 'entry', $entry);
         $button = $this->evaluator->evaluate($button, compact('entry', 'table'));
         $button = $this->parser->parse($button, $entry);
         $button = $this->value->replace($button, $entry);
         $button = $this->factory->make($button);
         if (!$button->isEnabled()) {
             continue;
         }
         $buttons->push($button);
     }
     return $buttons;
 }
 /**
  * Build the segments.
  *
  * @param  TreeBuilder       $builder
  * @param                    $entry
  * @return SegmentCollection
  */
 public function build(TreeBuilder $builder, $entry)
 {
     $tree = $builder->getTree();
     $segments = new SegmentCollection();
     if (!$builder->getSegments()) {
         $builder->setSegments(['entry.edit_link']);
     }
     $this->input->read($builder, $entry);
     foreach ($builder->getSegments() as $segment) {
         array_set($segment, 'entry', $entry);
         $segment = $this->evaluator->evaluate($segment, compact('entry', 'tree'));
         if (array_get($segment, 'enabled', null) === false) {
             continue;
         }
         $segment['value'] = $this->value->make($tree, $segment, $entry);
         $segments->push($this->factory->make($segment));
     }
     return $segments;
 }
Example #14
0
 /**
  * Return the item value.
  *
  * @param  TreeBuilder     $builder
  * @param                  $entry
  * @return View|mixed|null
  */
 public function make(TreeBuilder $builder, $entry)
 {
     $value = $builder->getTreeOption('item_value', 'entry.title');
     /*
      * If the entry is an instance of EntryInterface
      * then try getting the field value from the entry.
      */
     if ($entry instanceof EntryInterface && $entry->getField($value)) {
         if ($entry->assignmentIsRelationship($value)) {
             $value = $entry->{camel_case($value)}->getTitle();
         } else {
             $value = $entry->getFieldValue($value);
         }
     }
     /*
      * If the value matches a field with a relation
      * then parse the string using the eager loaded entry.
      */
     if (preg_match("/^entry.([a-zA-Z\\_]+)/", $value, $match)) {
         $fieldSlug = camel_case($match[1]);
         if (method_exists($entry, $fieldSlug) && $entry->{$fieldSlug}() instanceof Relation) {
             $entry = $this->decorator->decorate($entry);
             $value = data_get(compact('entry'), str_replace("entry.{$match[1]}.", 'entry.' . camel_case($match[1]) . '.', $value));
         }
     }
     /*
      * Decorate the entry object before
      * sending to decorate so that data_get()
      * can get into the presenter methods.
      */
     $entry = $this->decorator->decorate($entry);
     /*
      * If the value matches a method in the presenter.
      */
     if (preg_match("/^entry.([a-zA-Z\\_]+)/", $value, $match)) {
         if (method_exists($entry, camel_case($match[1]))) {
             $value = $entry->{camel_case($match[1])}();
         }
     }
     /*
      * By default we can just pass the value through
      * the evaluator utility and be done with it.
      */
     $value = $this->evaluator->evaluate($value, compact('builder', 'entry'));
     /*
      * Lastly, prepare the entry to be
      * parsed into the string.
      */
     if ($entry instanceof Arrayable) {
         $entry = $entry->toArray();
     } else {
         $entry = null;
     }
     /*
      * Parse the value with the entry.
      */
     $value = $this->parser->render($builder->getTreeOption('item_wrapper', '{value}'), compact('value', 'entry'));
     /*
      * If the value looks like a language
      * key then try translating it.
      */
     if (str_is('*.*.*::*', $value)) {
         $value = trans($value);
     }
     return $value;
 }
 /**
  * Evaluate the table columns.
  *
  * @param TableBuilder $builder
  */
 public function evaluate(TableBuilder $builder)
 {
     $builder->setColumns($this->evaluator->evaluate($builder->getColumns(), compact('builder')));
 }
 /**
  * Evaluate the navigation.
  *
  * @param ControlPanelBuilder $builder
  */
 public function evaluate(ControlPanelBuilder $builder)
 {
     $this->evaluator->evaluate($builder->getNavigation(), compact('builder'));
 }
 /**
  * Evaluate the form buttons.
  *
  * @param FormBuilder $builder
  */
 public function evaluate(FormBuilder $builder)
 {
     $entry = $builder->getFormEntry();
     $builder->setButtons($this->evaluator->evaluate($builder->getButtons(), compact('builder', 'entry')));
 }
 /**
  * Evaluate the form sections.
  *
  * @param FormBuilder $builder
  */
 public function evaluate(FormBuilder $builder)
 {
     $builder->setSections($this->evaluator->evaluate($builder->getSections(), compact('builder')));
 }
Example #19
0
 /**
  * Make a value from the parameters and entry.
  *
  * @param               $parameters
  * @param               $payload
  * @param  array        $payload
  * @return mixed|string
  */
 public function make($parameters, $entry, $term = 'entry', $payload = [])
 {
     $payload[$term] = $entry;
     /*
      * If a flat value was sent in
      * then convert it to an array.
      */
     if (!is_array($parameters)) {
         $parameters = ['value' => $parameters];
     }
     $value = array_get($parameters, 'value');
     /*
      * If the value is a view path then return a view.
      */
     if ($view = array_get($parameters, 'view')) {
         return view($view, ['value' => $value, $term => $entry]);
     }
     /*
      * If the value uses a template then parse it.
      */
     if ($template = array_get($parameters, 'template')) {
         return $this->template->render($template, ['value' => $value, $term => $entry]);
     }
     /*
      * If the entry is an instance of EntryInterface
      * then try getting the field value from the entry.
      */
     if ($entry instanceof EntryInterface && $entry->getField($value)) {
         /* @var EntryInterface $relation */
         if ($entry->assignmentIsRelationship($value) && ($relation = $entry->{camel_case($value)})) {
             if ($relation instanceof EloquentModel) {
                 $value = $relation->getTitle();
             }
         } else {
             $value = $entry->getFieldValue($value);
         }
     }
     /*
      * Decorate the entry object before
      * sending to decorate so that data_get()
      * can get into the presenter methods.
      */
     $payload[$term] = $entry = $this->decorator->decorate($entry);
     /*
      * If the value matches a dot notation
      * then parse it as a template.
      */
     if (is_string($value) && preg_match("/^{$term}.([a-zA-Z\\_]+)/", $value, $match)) {
         $value = $this->template->render("{{ {$value}|raw }}", $payload);
     }
     /*
      * If the value matches a method in the presenter.
      */
     if (is_string($value) && preg_match("/^{$term}.([a-zA-Z\\_]+)/", $value, $match)) {
         if (method_exists($entry, camel_case($match[1]))) {
             $value = $entry->{camel_case($match[1])}();
         }
     }
     $payload[$term] = $entry;
     /*
      * By default we can just pass the value through
      * the evaluator utility and be done with it.
      */
     $value = $this->evaluator->evaluate($value, $payload);
     /*
      * Lastly, prepare the entry to be
      * parsed into the string.
      */
     if ($entry instanceof Arrayable) {
         $entry = $entry->toArray();
     }
     /*
      * Parse the value with the entry.
      */
     if ($wrapper = array_get($parameters, 'wrapper')) {
         $value = $this->parser->parse($wrapper, ['value' => $value, $term => $entry]);
     }
     /*
      * Parse the value with the value too.
      */
     if (is_string($value)) {
         $value = $this->parser->parse($value, ['value' => $value, $term => $entry]);
     }
     /*
      * If the value looks like a language
      * key then try translating it.
      */
     if (is_string($value) && str_is('*.*.*::*', $value)) {
         $value = trans($value);
     }
     /*
      * If the value looks like a render-able
      * string then render it.
      */
     if (is_string($value) && str_contains($value, '{{')) {
         $value = $this->template->render($value, [$term => $entry]);
     }
     return $value;
 }
 /**
  * Get the input HTML.
  *
  * @return string
  */
 public function getInput()
 {
     $this->resolver->resolve($this->getOptions(), ['filter' => $this]);
     return app(SelectFieldType::class)->setPlaceholder($this->getPlaceholder())->setField('filter_' . $this->getSlug())->setPrefix($this->getPrefix())->setValue($this->getValue())->mergeConfig(['options' => $this->evaluator->evaluate($this->getOptions(), ['filter' => $this])])->getFilter();
 }