/** * 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); } }
/** * 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)); } }
/** * 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; }
/** * 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'))); }
/** * 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(); }