/** * The Config Class. * * @var Config * @since 3.2.0 */ protected Config $config; /** * The Placeholder Class. * * @var Placeholder * @since 3.2.0 */ protected Placeholder $placeholder; /** * The Fieldset Class. * * @var Language * @since 3.2.0 */ protected Language $language; /** * The EventInterface Class. * * @var Event * @since 3.2.0 */ protected Event $event; /** * The Permission Class. * * @var Permission * @since 3.2.0 */ protected Permission $permission; /** * The FieldDynamic Class. * * @var FieldDynamic * @since 3.2.0 */ protected FieldDynamic $fielddynamic; /** * The FieldNames Class. * * @var FieldNames * @since 3.2.0 */ protected FieldNames $fieldnames; /** * The AccessSwitch Class. * * @var AccessSwitch * @since 3.2.0 */ protected AccessSwitch $accessswitch; /** * The MetaData Class. * * @var MetaData * @since 3.2.0 */ protected MetaData $metadata; /** * The Layout Class. * * @var Layout * @since 3.2.0 */ protected Layout $layout; /** * The Counter Class. * * @var Counter * @since 3.2.0 */ protected Counter $counter; /** * Constructor. * * @param Config $config The Config Class. * @param Placeholder $placeholder The Placeholder Class. * @param Language $language The Fieldset Class. * @param Event $event The EventInterface Class. * @param Permission $permission The Permission Class. * @param FieldDynamic $fielddynamic The FieldDynamic Class. * @param FieldNames $fieldnames The FieldNames Class. * @param AccessSwitch $accessswitch The AccessSwitch Class. * @param MetaData $metadata The MetaData Class. * @param Layout $layout The Layout Class. * @param Counter $counter The Counter Class. * * @since 3.2.0 */ public function __construct(Config $config, Placeholder $placeholder, Language $language, Event $event, Permission $permission, FieldDynamic $fielddynamic, FieldNames $fieldnames, AccessSwitch $accessswitch, MetaData $metadata, Layout $layout, Counter $counter) { $this->config = $config; $this->placeholder = $placeholder; $this->language = $language; $this->event = $event; $this->permission = $permission; $this->fielddynamic = $fielddynamic; $this->fieldnames = $fieldnames; $this->accessswitch = $accessswitch; $this->metadata = $metadata; $this->layout = $layout; $this->counter = $counter; } /** * Get a fieldset * * @param array $view The view data * @param string $component The component name * @param string $nameSingleCode The single view name * @param string $nameListCode The list view name * * @return string The fields set as a string or empty string if no field found. * @since 3.2.0 */ public function get(array $view, string $component, string $nameSingleCode, string $nameListCode): string { // setup the fieldset language values of this view if (!isset($view['settings']->fields) || !ArrayHelper::check($view['settings']->fields)) { return ''; } // add metadata to the view $metadata = false; if (isset($view['metadata']) && $view['metadata']) { $metadata = true; } // add access to the view $access = false; if (isset($view['access']) && $view['access']) { $access = true; } // main lang prefix $lang_view = $this->config->lang_prefix . '_' . $this->placeholder->get('VIEW'); $lang_views = $this->config->lang_prefix . '_' . $this->placeholder->get('VIEWS'); $name_single = $view['settings']->name_single ?? 'Error'; $name_list = $view['settings']->name_list ?? 'Error'; $lang_target = $this->config->lang_target ?? 'both'; // load the language values $this->language->set( $access, $metadata, $lang_target, $lang_view, $lang_views, $name_single, $name_list, $nameSingleCode, $nameListCode ); // set the read only $read_only = false; if ($view['settings']->type == 2) { $read_only = Indent::_(3) . 'readonly="true"' . PHP_EOL . Indent::_( 3 ) . 'disabled="true"'; } // start adding dynamic fields $dynamic_fields = ''; // set the custom table key $dbkey = 'g'; // for plugin event TODO change event api signatures $placeholders = $this->placeholder->active; $component_context = $this->config->component_context; // Trigger Event: jcb_ce_onBeforeBuildFields $this->event->trigger( 'jcb_ce_onBeforeBuildFields', array(&$component_context, &$dynamic_fields, &$read_only, &$dbkey, &$view, &$component, &$nameSingleCode, &$nameListCode, &$placeholders, &$lang_view, &$lang_views) ); unset($placeholders); // TODO we should add the global and local view switch if field for front end foreach ($view['settings']->fields as $field) { $dynamic_fields .= $this->fielddynamic->get( $field, $view, $view['settings']->type, $lang_view, $nameSingleCode, $nameListCode, $this->placeholder->active, $dbkey, true ); } // for plugin event TODO change event api signatures $placeholders = $this->placeholder->active; // Trigger Event: jcb_ce_onAfterBuildFields $this->event->trigger( 'jcb_ce_onAfterBuildFields', array(&$component_context, &$dynamic_fields, &$read_only, &$dbkey, &$view, &$component, &$nameSingleCode, &$nameListCode, &$placeholders, &$lang_view, &$lang_views) ); unset($placeholders); // set the default fields $field_set = array(); $field_set[] = '
"; // check if metadata is added to this view if ($this->metadata->isString($nameSingleCode)) { if (!$this->fieldnames->isString($nameSingleCode . '.robots') || !$this->fieldnames->isString($nameSingleCode . '.rights') || !$this->fieldnames->isString($nameSingleCode . '.author')) { $field_set[] = PHP_EOL . Indent::_(1) . ""; $field_set[] = Indent::_(1) . "