From 3139f0cbcbe72105672bf1477c9e6ca03fbad6c7 Mon Sep 17 00:00:00 2001 From: Abdy Franco Date: Tue, 3 Feb 2026 09:40:35 -0600 Subject: [PATCH 1/4] Updated admin views --- views/default/admin_main.pdt | 192 +++--- views/default/admin_main_confirm.pdt | 105 ++-- views/default/admin_main_general.pdt | 180 +++--- views/default/admin_merchant_basic.pdt | 214 +++---- views/default/admin_merchant_features.pdt | 93 +-- views/default/admin_merchant_fields.pdt | 182 +++--- views/default/admin_module_basic.pdt | 315 +++++----- views/default/admin_module_features.pdt | 304 ++++++---- views/default/admin_module_fields.pdt | 450 ++++++++------ views/default/admin_nonmerchant_basic.pdt | 214 +++---- views/default/admin_nonmerchant_features.pdt | 93 +-- views/default/admin_nonmerchant_fields.pdt | 182 +++--- views/default/admin_plugin_basic.pdt | 182 +++--- views/default/admin_plugin_database.pdt | 322 +++++----- views/default/admin_plugin_integrations.pdt | 404 ++++++++----- views/default/css/styles.css | 152 ++++- views/default/js/extension-generator.js | 580 +++++++++++++++++++ views/default/partial_progress_bar.pdt | 54 +- 18 files changed, 2666 insertions(+), 1552 deletions(-) create mode 100644 views/default/js/extension-generator.js diff --git a/views/default/admin_main.pdt b/views/default/admin_main.pdt index fc4cfee..fe989c0 100644 --- a/views/default/admin_main.pdt +++ b/views/default/admin_main.pdt @@ -1,78 +1,130 @@ - Widget->clear(); - $this->Widget->create($this->_('AdminMain.index.boxtitle_extensions', true), ['id'=>'admin_main'], (isset($render_section) ? $render_section : null)); - ?> -
-
- - +// Build link buttons +$link_buttons = [ + [ + 'icon' => 'bi bi-plus-lg me-1', + 'name' => $this->_('AdminMain.index.extension_add', true), + 'attributes' => [ + 'href' => $this->base_uri . 'plugin/extension_generator/admin_main/general/' + ] + ] +]; - - - - - - - - - - - - > - - - - - - +$this->Widget->clear(); +$this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->setLinkButtons($link_buttons); +$this->Widget->create($this->_('AdminMain.index.boxtitle_extensions', true), ['id' => 'admin_main'], $render_section ?? null); +?> + + +
+
_('AdminMain.index.heading_id');?>_('AdminMain.index.heading_name');?>_('AdminMain.index.heading_type');?>_('AdminMain.index.heading_form_type');?>_('AdminMain.index.heading_code_examples');?>_('AdminMain.index.heading_date_updated');?>_('AdminMain.index.heading_options');?>
id) ? $this->Html->safe($extension->id) : null);?>name) ? $this->Html->safe($extension->name) : null);?>Html->safe((isset($types[$extension->type]) ? $types[$extension->type] : null));?>Html->safe((isset($form_types[$extension->form_type]) ? $form_types[$extension->form_type] : null));?>code_examples) ? $extension->code_examples : null) == 1 ? '' : '';?>Date->cast((isset($extension->date_updated) ? $extension->date_updated : null), 'date_time');?>
+ + + + + + + + + + + + + + + + + + + + - -
+ + _('AdminMain.index.heading_id'); ?> + + + + _('AdminMain.index.heading_name'); ?> + + + + _('AdminMain.index.heading_type'); ?> + + + + _('AdminMain.index.heading_form_type'); ?> + + + + _('AdminMain.index.heading_code_examples'); ?> + + + + _('AdminMain.index.heading_date_updated'); ?> + + _('AdminMain.index.heading_options'); ?>
Html->safe($extension->id ?? ''); ?>Html->safe($extension->name ?? ''); ?>Html->safe($types[$extension->type] ?? ''); ?>Html->safe($form_types[$extension->form_type] ?? ''); ?> - _('AdminMain.index.option_edit');?>, - Form->create($this->base_uri . 'plugin/extension_generator/admin_main/delete/'); - $this->Form->fieldHidden('id', (isset($extension->id) ? $extension->id : null)); - ?> - _('AdminMain.index.option_delete');?> - Form->end(); - ?> + code_examples ?? null) == 1) : ?> + + + + + Date->cast($extension->date_updated ?? null, 'date_time'); ?> +
+ + + + Form->create($this->base_uri . 'plugin/extension_generator/admin_main/delete/', ['class' => 'd-inline']); + $this->Form->fieldHidden('id', $extension->id ?? null); + ?> + + Form->end(); ?> +
- Pagination->build(); - } else { - ?> -
-
-
- _('AdminMain.index.extensions_no_results');?> -
-
-
- -
+ + + +
+ Pagination->build(); ?> + +
+
+ +

_('AdminMain.index.extensions_no_results'); ?>

- Widget->end(); - ?> +
+ - \ No newline at end of file + + // Initialize tooltips + if (typeof bootstrap !== 'undefined' && bootstrap.Tooltip) { + document.querySelectorAll('[data-bs-toggle="tooltip"]').forEach(function(el) { + new bootstrap.Tooltip(el); + }); + } +}); + + + diff --git a/views/default/admin_main_confirm.pdt b/views/default/admin_main_confirm.pdt index 4fa2143..b584a0a 100644 --- a/views/default/admin_main_confirm.pdt +++ b/views/default/admin_main_confirm.pdt @@ -1,55 +1,64 @@ - Widget->clear(); - $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); - $this->Widget->create($this->_('AdminMain.index.boxtitle_extension_generator', true)); - - echo (isset($progress_bar) ? $progress_bar : null); - - $this->Form->create(); - ?> -
-

_('AdminMain.confirm.heading_confirm');?>

-
-

_('AdminMain.confirm.text_generation');?>

-
    -
  • - Form->label($this->_('AdminMain.confirm.location', true), 'location', ['class' => 'inline']); - ?> - _('AppController.tooltip.text');?>
    _('AdminMain.confirm.tooltip_location');?>
    - Form->fieldSelect('location', (isset($locations) ? $locations : []), (isset($vars->location) ? $vars->location : null), ['class' => 'block', 'id' => 'location']); - ?> -
  • - -
-
-
- Form->fieldSubmit('submit', $this->_('AdminMain.confirm.generate', true), ['class' => 'btn btn-primary pull-right']);?> -
+Widget->clear(); +$this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->create($this->_('AdminMain.index.boxtitle_extension_generator', true)); + +echo $progress_bar ?? null; + +$this->Form->create(null, ['class' => 'disable-on-submit']); +?> + +
+
+ _('AdminMain.confirm.heading_confirm'); ?> +
+ +

_('AdminMain.confirm.text_generation'); ?>

+ +
+
+ Form->label($this->_('AdminMain.confirm.location', true), 'location', ['class' => 'form-label']); + ?> + + Form->fieldSelect('location', $locations ?? [], $vars->location ?? null, ['id' => 'location', 'class' => 'form-select']); + ?> +
+
+ +
+
+ Form->label($this->_('AdminMain.confirm.custom_path', true), 'custom_path', ['class' => 'form-label']); + $this->Form->fieldText('custom_path', $vars->custom_path ?? null, ['id' => 'custom_path', 'class' => 'form-control', 'placeholder' => COMPONENTDIR]); + ?>
- +
- $this->Form->end(); + - $this->Widget->end(); - ?> +Form->end(); +$this->Widget->end(); +?> + + diff --git a/views/default/admin_main_general.pdt b/views/default/admin_main_general.pdt index f553493..3afc61a 100644 --- a/views/default/admin_main_general.pdt +++ b/views/default/admin_main_general.pdt @@ -1,78 +1,128 @@ - Widget->clear(); +$this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->create($this->_('AdminMain.index.boxtitle_extension_generator', true)); + +echo $progress_bar ?? null; + +$this->Form->create(null, ['id' => 'general_extension_form', 'class' => 'disable-on-submit']); +?> - $this->Widget->clear(); - $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); - $this->Widget->create($this->_('AdminMain.index.boxtitle_extension_generator', true)); +
+ +
+ +
+ - echo (isset($progress_bar) ? $progress_bar : null); + +
+ _('AdminMain.general.type'); ?> + +
- $this->Form->create(null, ['id' => 'general_extension_form']); +
+ 'bi-box-seam', + 'plugin' => 'bi-plug', + 'merchant' => 'bi-credit-card', + 'nonmerchant' => 'bi-wallet2' + ]; + $selected_type = $vars->type ?? 'module'; + foreach ($extension_types ?? [] as $extension_type => $label) : ?> -
-

_('AdminMain.general.heading_general_settings');?>

- -
-
    -
  • - Form->label($this->_('AdminMain.general.name', true), 'name'); - $this->Form->fieldText('name', (isset($vars->name) ? $vars->name : null), ['id' => 'name', 'placeholder' => $this->_('AdminMain.general.placeholder_name', true)]); - ?> - _('AppController.tooltip.text');?>
    _('AdminMain.general.tooltip_name');?>
    -
  • -
  • -
    +
    +
    +
    + +
    Html->safe($label); ?>
    + Form->label($this->_('AdminMain.general.type', true), null, ['class' => 'inline']); + switch ($extension_type) { + case 'module': + echo $this->_('AdminMain.general.type_module_desc', true) ?: 'Provisioning & automation'; + break; + case 'plugin': + echo $this->_('AdminMain.general.type_plugin_desc', true) ?: 'Extend functionality'; + break; + case 'merchant': + echo $this->_('AdminMain.general.type_merchant_desc', true) ?: 'Credit card processing'; + break; + case 'nonmerchant': + echo $this->_('AdminMain.general.type_nonmerchant_desc', true) ?: 'Alternative payments'; + break; + } ?> - _('AppController.tooltip.text');?>
    _('AdminMain.general.tooltip_type');?>
    -
    - $label) { - $this->Form->fieldRadio('type', $extension_type, (isset($vars->type) ? $vars->type : 'module') == $extension_type, ['class' => 'inline type', 'id' => 'type_' . $extension_type]); - $this->Form->label($label, 'type_' . $extension_type, ['class' => 'inline']); - } - ?> -
  • -
  • - Form->label($this->_('AdminMain.general.form_type', true), 'form_type', ['class' => 'inline']); - ?> - _('AppController.tooltip.text');?>
    _('AdminMain.general.tooltip_form_type');?>
    - Form->fieldSelect('form_type', (isset($form_types) ? $form_types : []), (isset($vars->form_type) ? $vars->form_type : null), ['class' => 'block', 'id' => 'form_type']); - ?> -
  • -
  • - Form->fieldCheckbox('code_examples', '1', (isset($vars->code_examples) ? $vars->code_examples : '1') == '1', ['class' => 'inline', 'id' => 'code_examples']); - $this->Form->label($this->_('AdminMain.general.code_examples', true), 'code_examples', ['class' => 'inline']); - ?> - _('AppController.tooltip.text');?>
    _('AdminMain.general.tooltip_code_examples');?>
    -
  • -
-
-
- Form->fieldSubmit('submit', $this->_('AdminMain.general.basic_info', true), ['class' => 'btn btn-primary pull-right']);?> + +
+
+ +
+ + + +
+ _('AdminMain.general.heading_general_settings'); ?> +
+ +
+
+ Form->label($this->_('AdminMain.general.name', true), 'name', ['class' => 'form-label']); + ?> + + Form->fieldText('name', $vars->name ?? null, ['id' => 'name', 'class' => 'form-control', 'placeholder' => $this->_('AdminMain.general.placeholder_name', true)]); + ?>
- + Form->label($this->_('AdminMain.general.form_type', true), 'form_type', ['class' => 'form-label']); + ?> + + Form->fieldSelect('form_type', $form_types ?? [], $vars->form_type ?? null, ['id' => 'form_type', 'class' => 'form-select']); + ?> +
+
+ +
+
+ Form->fieldCheckbox('code_examples', '1', ($vars->code_examples ?? '1') == '1', ['id' => 'code_examples', 'class' => 'form-check-input']); + ?> + + +
+
+
- $this->Form->end(); + + +Form->end(); +$this->Widget->end(); +?> - $this->Widget->end(); - ?> + + diff --git a/views/default/admin_merchant_basic.pdt b/views/default/admin_merchant_basic.pdt index 8f2b247..9b7c23e 100644 --- a/views/default/admin_merchant_basic.pdt +++ b/views/default/admin_merchant_basic.pdt @@ -1,109 +1,127 @@ - Widget->clear(); - $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); - $this->Widget->create($this->_('AdminMerchant.index.boxtitle_extension_generator', true), ['id' => 'admin_merchant_basic']); +$this->Widget->clear(); +$this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->create($this->_('AdminMerchant.index.boxtitle_extension_generator', true), ['id' => 'admin_merchant_basic']); - echo (isset($progress_bar) ? $progress_bar : null); +echo $progress_bar ?? null; - $this->Form->create(null, ['id' => 'merchantbasic', 'enctype' => 'multipart/form-data']); - ?> -
-

_('AdminMerchant.basic.heading_basic');?>

-
-
    -
  • - Form->label($this->_('AdminMerchant.basic.description', true), 'description', ['class' => 'inline']); - ?> - _('AppController.tooltip.text');?>
    _('AdminMerchant.basic.tooltip_description');?>
    - Form->fieldTextarea('description', (isset($vars['description']) ? $vars['description'] : null), ['id' => 'description']); - ?> -
  • -
  • - Form->label($this->_('AdminMerchant.basic.logo', true), 'logo'); - $this->Form->fieldFile('logo', ['id' => 'logo']); - ?> - _('AppController.tooltip.text');?>
    _('AdminMerchant.basic.tooltip_logo');?>
    -
  • -
  • - Form->label($this->_('AdminMerchant.basic.signup_url', true), 'signup_url'); - $this->Form->fieldText('signup_url', (isset($vars['signup_url']) ? $vars['signup_url'] : null), ['id' => 'signup_url', 'placeholder' => $this->_('AdminMerchant.basic.placeholder_signup_url', true)]); - ?> - _('AppController.tooltip.text');?>
    _('AdminMerchant.basic.tooltip_signup_url');?>
    -
  • -
  • - Form->label($this->_('AdminMerchant.basic.currencies', true), 'currencies'); - $this->Form->fieldText('currencies', (isset($vars['currencies']) ? $vars['currencies'] : null), ['id' => 'currencies', 'placeholder' => $this->_('AdminMerchant.basic.placeholder_currencies', true)]); - ?> - _('AppController.tooltip.text');?>
    _('AdminMerchant.basic.tooltip_currencies');?>
    -
  • -
-
+$this->Form->create(null, ['id' => 'merchantbasic', 'enctype' => 'multipart/form-data', 'class' => 'disable-on-submit']); +?> -

_('AdminMerchant.basic.heading_authors');?>

-
- - - - - - - - - - - - - - - - - - -
_('AdminMerchant.basic.author_name');?>_('AdminMerchant.basic.author_url');?>_('AdminMerchant.basic.text_options');?>
Form->fieldText('authors[name][]', (isset($vars['authors']['name'][$i]) ? $vars['authors']['name'][$i] : null), ['class' => 'stretch', 'placeholder' => $this->_('AdminMerchant.basic.placeholder_author_name', true)]);?>Form->fieldText('authors[url][]', (isset($vars['authors']['url'][$i]) ? $vars['authors']['url'][$i] : null), ['class' => 'stretch', 'placeholder' => $this->_('AdminMerchant.basic.placeholder_author_url', true)]);?>_('AdminMerchant.basic.text_remove');?>
-
-
- Form->fieldSubmit('submit', (isset($form_type) ? $form_type : null) == 'basic' ? $this->_('AdminMerchant.basic.features', true) : $this->_('AdminMerchant.basic.fields', true), ['class' => 'btn btn-primary pull-right']);?> -
+
+ +
+ _('AdminMerchant.basic.heading_basic'); ?> +
+ +
+
+ Form->label($this->_('AdminMerchant.basic.description', true), 'description', ['class' => 'form-label']); + ?> + + Form->fieldTextarea('description', $vars['description'] ?? null, ['id' => 'description', 'class' => 'form-control', 'rows' => 3]); + ?> +
+
+ Form->label($this->_('AdminMerchant.basic.logo', true), 'logo', ['class' => 'form-label']); + ?> + + Form->fieldFile('logo', ['id' => 'logo', 'class' => 'form-control']); + ?> +
+
+ Form->label($this->_('AdminMerchant.basic.signup_url', true), 'signup_url', ['class' => 'form-label']); + ?> + + Form->fieldText('signup_url', $vars['signup_url'] ?? null, ['id' => 'signup_url', 'class' => 'form-control', 'placeholder' => $this->_('AdminMerchant.basic.placeholder_signup_url', true)]); + ?>
- Form->end(); +
+ Form->label($this->_('AdminMerchant.basic.currencies', true), 'currencies', ['class' => 'form-label']); + ?> + + Form->fieldText('currencies', $vars['currencies'] ?? null, ['id' => 'currencies', 'class' => 'form-control', 'placeholder' => $this->_('AdminMerchant.basic.placeholder_currencies', true)]); + ?> +
+
- $this->Widget->end(); - ?> - + + diff --git a/views/default/admin_merchant_features.pdt b/views/default/admin_merchant_features.pdt index d918dae..b93fcfa 100644 --- a/views/default/admin_merchant_features.pdt +++ b/views/default/admin_merchant_features.pdt @@ -1,44 +1,63 @@ - Widget->clear(); - $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); - $this->Widget->create($this->_('AdminMerchant.index.boxtitle_extension_generator', true), ['id' => 'admin_merchant_features']); - - echo (isset($progress_bar) ? $progress_bar : null); - - $this->Form->create(); - ?> -
-

_('AdminMerchant.features.heading_supported_features');?>

-
-
- $feature_settings) { - ?> -
- Form->fieldCheckbox('supported_features[' . $supported_feature . ']', 'true', (isset($vars['supported_features']) ? (isset($vars['supported_features'][$supported_feature]) ? $vars['supported_features'][$supported_feature] : null) : $feature_settings['enabled']) == 'true', ['class' => 'inline', 'id' => 'supported_features[' . $supported_feature . ']']); - $this->Form->label($feature_settings['name'], 'supported_features[' . $supported_feature . ']', ['class' => 'inline']); + - _('AppController.tooltip.text');?>
Html->safe($feature_settings['tooltip']) : null);?>
+$this->Widget->clear(); +$this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->create($this->_('AdminMerchant.index.boxtitle_extension_generator', true), ['id' => 'admin_merchant_features']); + +echo $progress_bar ?? null; + +$this->Form->create(null, ['class' => 'disable-on-submit']); +?> + +
+ +
+ _('AdminMerchant.features.heading_supported_features'); ?> +
+ +
+ $feature_settings) : ?> +
+
Form->fieldCheckbox('supported_features[' . $supported_feature . ']', 'true', $checked, ['id' => 'supported_features_' . $supported_feature, 'class' => 'form-check-input']); ?> -
- + + + +
+ +
+
-
- Form->fieldSubmit('submit', $this->_('AdminMerchant.features.confirm', true), ['class' => 'btn btn-primary pull-right']);?> -
-
- Form->end(); + + +Form->end(); +$this->Widget->end(); +?> + + - $this->Widget->end(); + diff --git a/views/default/admin_merchant_fields.pdt b/views/default/admin_merchant_fields.pdt index 0346a51..91e5efd 100644 --- a/views/default/admin_merchant_fields.pdt +++ b/views/default/admin_merchant_fields.pdt @@ -1,91 +1,113 @@ - Widget->clear(); - $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); - $this->Widget->create($this->_('AdminMerchant.index.boxtitle_extension_generator', true), ['id' => 'admin_merchant_fields']); +$this->Widget->clear(); +$this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->create($this->_('AdminMerchant.index.boxtitle_extension_generator', true), ['id' => 'admin_merchant_fields']); - echo (isset($progress_bar) ? $progress_bar : null); +echo $progress_bar ?? null; - $this->Form->create(); - ?> -
-

_('AdminMerchant.fields.heading_fields');?>

-
- - - - - - - - - - - - - - = 0 ? [] : ['disabled' => 'disabled']); - ?> - = 0 ? '' : ' style="display:none;"');?>> - - - - - - - - - -
_('AdminMerchant.fields.name');?>_('AppController.tooltip.text');?>
_('AdminMerchant.fields.tooltip_name');?>
_('AdminMerchant.fields.label');?>_('AppController.tooltip.text');?>
_('AdminMerchant.fields.tooltip_label');?>
_('AdminMerchant.fields.type');?>_('AppController.tooltip.text');?>
_('AdminMerchant.fields.tooltip_type');?>
_('AdminMerchant.fields.tooltip');?>_('AppController.tooltip.text');?>
_('AdminMerchant.fields.tooltip_tooltip');?>
_('AdminMerchant.fields.encryptable');?>_('AppController.tooltip.text');?>
_('AdminMerchant.fields.tooltip_encryptable');?>
_('AdminMerchant.fields.text_options');?>
Form->fieldText('fields[name][]', (isset($vars['fields']['name'][$i]) ? $vars['fields']['name'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminMerchant.fields.placeholder_name', true)], $disabled));?>Form->fieldText('fields[label][]', (isset($vars['fields']['label'][$i]) ? $vars['fields']['label'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminMerchant.fields.placeholder_label', true)], $disabled));?>Form->fieldSelect('fields[type][]', (isset($field_types) ? $field_types : null), (isset($vars['fields']['type'][$i]) ? $vars['fields']['type'][$i] : null), array_merge(['class' => 'stretch'], $disabled));?>Form->fieldTextarea('fields[tooltip][]', (isset($vars['fields']['tooltip'][$i]) ? $vars['fields']['tooltip'][$i] : null), array_merge(['class' => 'stretch'], $disabled));?> - Form->fieldHidden('fields[encryptable][]', (isset($vars['fields']['encryptable'][$i]) ? $vars['fields']['encryptable'][$i] : 'false'), array_merge(['class' => 'encryptable'], $disabled));?> - Form->fieldCheckbox('', 'true', (isset($vars['fields']['encryptable'][$i]) ? $vars['fields']['encryptable'][$i] : null) == 'true', array_merge(['class' => 'stretch encryptable_checkbox'], $disabled));?> - _('AdminMerchant.fields.text_remove');?>
-
-
- Form->fieldSubmit('submit', $this->_('AdminMerchant.fields.features', true), ['class' => 'btn btn-primary pull-right']);?> -
-
- Form->end(); +$this->Form->create(null, ['class' => 'disable-on-submit']); +?> - $this->Widget->end(); - ?> +
+ +
+ _('AdminMerchant.fields.heading_fields'); ?> +
- + + diff --git a/views/default/admin_module_basic.pdt b/views/default/admin_module_basic.pdt index 37980f1..70462a9 100644 --- a/views/default/admin_module_basic.pdt +++ b/views/default/admin_module_basic.pdt @@ -1,172 +1,173 @@ - Widget->clear(); - $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); - $this->Widget->create($this->_('AdminModule.index.boxtitle_extension_generator', true), ['id' => 'admin_module_basic']); +$this->Widget->clear(); +$this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->create($this->_('AdminModule.index.boxtitle_extension_generator', true), ['id' => 'admin_module_basic']); - echo (isset($progress_bar) ? $progress_bar : null); +echo $progress_bar ?? null; - $this->Form->create(null, ['id' => 'modulebasic', 'enctype' => 'multipart/form-data']); - ?> -
-

_('AdminModule.basic.heading_basic');?>

-
-
    -
  • - Form->label($this->_('AdminModule.basic.description', true), 'description', ['class' => 'inline']); - ?> - _('AppController.tooltip.text');?>
    _('AdminModule.basic.tooltip_description');?>
    - Form->fieldTextarea('description', (isset($vars['description']) ? $vars['description'] : null), ['id' => 'description']); - ?> -
  • -
  • - Form->label($this->_('AdminModule.basic.logo', true), 'logo'); - $this->Form->fieldFile('logo', ['id' => 'logo']); - ?> - _('AppController.tooltip.text');?>
    _('AdminModule.basic.tooltip_logo');?>
    -
  • -
  • - Form->label($this->_('AdminModule.basic.module_row', true), 'module_row'); - $this->Form->fieldText('module_row', (isset($vars['module_row']) ? $vars['module_row'] : null), ['id' => 'module_row', 'placeholder' => $this->_('AdminModule.basic.placeholder_module_row', true)]); - ?> - _('AppController.tooltip.text');?>
    _('AdminModule.basic.tooltip_module_row');?>
    -
  • -
  • - Form->label($this->_('AdminModule.basic.module_row_plural', true), 'module_row_plural'); - $this->Form->fieldText('module_row_plural', (isset($vars['module_row_plural']) ? $vars['module_row_plural'] : null), ['id' => 'module_row_plural', 'placeholder' => $this->_('AdminModule.basic.placeholder_module_row_plural', true)]); - ?> - _('AppController.tooltip.text');?>
    _('AdminModule.basic.tooltip_module_row_plural');?>
    -
  • -
  • - Form->label($this->_('AdminModule.basic.module_group', true), 'module_group'); - $this->Form->fieldText('module_group', (isset($vars['module_group']) ? $vars['module_group'] : null), ['id' => 'module_group', 'placeholder' => $this->_('AdminModule.basic.placeholder_module_group', true)]); - ?> - _('AppController.tooltip.text');?>
    _('AdminModule.basic.tooltip_module_group');?>
    -
  • -
  • - Form->label($this->_('AdminModule.basic.module_type', true), 'module_type', ['class' => 'inline']); - ?> - _('AppController.tooltip.text');?>
    _('AdminModule.basic.tooltip_module_type');?>
    - Form->fieldSelect('module_type', (isset($module_types) ? $module_types : []), (isset($vars['module_type']) ? $vars['module_type'] : null), ['class' => 'block', 'id' => 'module_type']); - ?> -
  • -
-
- -

_('AdminModule.basic.heading_authors');?>

-
- - - - - - - - - - - - - - - - - - -
_('AdminModule.basic.author_name');?>_('AdminModule.basic.author_url');?>_('AdminModule.basic.text_options');?>
Form->fieldText('authors[name][]', (isset($vars['authors']['name'][$i]) ? $vars['authors']['name'][$i] : null), ['class' => 'stretch', 'placeholder' => $this->_('AdminModule.basic.placeholder_author_name', true)]);?>Form->fieldText('authors[url][]', (isset($vars['authors']['url'][$i]) ? $vars['authors']['url'][$i] : null), ['class' => 'stretch', 'placeholder' => $this->_('AdminModule.basic.placeholder_author_url', true)]);?>_('AdminModule.basic.text_remove');?>
-
+$this->Form->create(null, ['id' => 'modulebasic', 'enctype' => 'multipart/form-data', 'class' => 'disable-on-submit']); +?> -
-

_('AdminModule.basic.heading_tlds');?>

-
-
    -
  • - Form->fieldCheckbox('static_tlds', '1', (isset($vars['static_tlds']) ? $vars['static_tlds'] : '1') == '1', ['class' => 'inline', 'id' => 'static_tlds']); - $this->Form->label($this->_('AdminModule.basic.static_tlds', true), 'static_tlds', ['class' => 'inline']); - ?> - _('AppController.tooltip.text');?>
    _('AdminModule.basic.tooltip_static_tlds');?>
    -
  • -
  • - Form->label($this->_('AdminModule.basic.tlds', true), 'tlds'); - $this->Form->fieldText('tlds', (isset($vars['tlds']) ? $vars['tlds'] : null), ['id' => 'tlds', 'placeholder' => $this->_('AdminModule.basic.placeholder_tlds', true)]); - ?> -
  • -
-
-
+
+ +
+ _('AdminModule.basic.heading_basic'); ?> +
-
- Form->fieldSubmit('submit', (isset($form_type) ? $form_type : null) == 'basic' ? $this->_('AdminModule.basic.confirm', true) : $this->_('AdminModule.basic.fields', true), ['class' => 'btn btn-primary pull-right']);?> -
+
+
+ Form->label($this->_('AdminModule.basic.description', true), 'description', ['class' => 'form-label']); + ?> + + Form->fieldTextarea('description', $vars['description'] ?? null, ['id' => 'description', 'class' => 'form-control', 'rows' => 3]); + ?> +
+
+ Form->label($this->_('AdminModule.basic.logo', true), 'logo', ['class' => 'form-label']); + ?> + + Form->fieldFile('logo', ['id' => 'logo', 'class' => 'form-control']); + ?>
- Form->end(); +
+ Form->label($this->_('AdminModule.basic.module_type', true), 'module_type', ['class' => 'form-label']); + ?> + + Form->fieldSelect('module_type', $module_types ?? [], $vars['module_type'] ?? null, ['id' => 'module_type', 'class' => 'form-select']); + ?> +
+
+ Form->label($this->_('AdminModule.basic.module_row', true), 'module_row', ['class' => 'form-label']); + ?> + + Form->fieldText('module_row', $vars['module_row'] ?? null, ['id' => 'module_row', 'class' => 'form-control', 'placeholder' => $this->_('AdminModule.basic.placeholder_module_row', true)]); + ?> +
+
+ Form->label($this->_('AdminModule.basic.module_row_plural', true), 'module_row_plural', ['class' => 'form-label']); + ?> + + Form->fieldText('module_row_plural', $vars['module_row_plural'] ?? null, ['id' => 'module_row_plural', 'class' => 'form-control', 'placeholder' => $this->_('AdminModule.basic.placeholder_module_row_plural', true)]); + ?> +
+
+ Form->label($this->_('AdminModule.basic.module_group', true), 'module_group', ['class' => 'form-label']); + ?> + + Form->fieldText('module_group', $vars['module_group'] ?? null, ['id' => 'module_group', 'class' => 'form-control', 'placeholder' => $this->_('AdminModule.basic.placeholder_module_group', true)]); + ?> +
+
- $this->Widget->end(); - ?> - + + diff --git a/views/default/admin_module_features.pdt b/views/default/admin_module_features.pdt index 0597bd5..6b8190d 100644 --- a/views/default/admin_module_features.pdt +++ b/views/default/admin_module_features.pdt @@ -1,141 +1,199 @@ - Widget->clear(); - $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); - $this->Widget->create($this->_('AdminModule.index.boxtitle_extension_generator', true), ['id' => 'admin_module_features']); +$this->Widget->clear(); +$this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->create($this->_('AdminModule.index.boxtitle_extension_generator', true), ['id' => 'admin_module_features']); - echo (isset($progress_bar) ? $progress_bar : null); +echo $progress_bar ?? null; - $this->Form->create(); - ?> -
-

_('AdminModule.features.heading_service_tabs');?>

-
- - - - - - - - - - - - = 0 ? [] : ['disabled' => 'disabled']); - ?> - = 0 ? '' : ' style="display:none;"');?>> - - - - - - - -
_('AdminModule.features.method_name');?>_('AppController.tooltip.text');?>
_('AdminModule.features.tooltip_method_name');?>
_('AdminModule.features.label');?>_('AppController.tooltip.text');?>
_('AdminModule.features.tooltip_tab_label');?>
_('AdminModule.features.level');?>_('AppController.tooltip.text');?>
_('AdminModule.features.tooltip_level');?>
_('AdminModule.features.text_options');?>
Form->fieldText('service_tabs[method_name][]', (isset($vars['service_tabs']['method_name'][$i]) ? $vars['service_tabs']['method_name'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminModule.features.placeholder_method_name', true)], $disabled));?>Form->fieldText('service_tabs[label][]', (isset($vars['service_tabs']['label'][$i]) ? $vars['service_tabs']['label'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminModule.features.placeholder_tab_label', true)], $disabled));?>Form->fieldSelect('service_tabs[level][]', (isset($tab_levels) ? $tab_levels : null), (isset($vars['service_tabs']['level'][$i]) ? $vars['service_tabs']['level'][$i] : null), array_merge(['class' => 'stretch'], $disabled));?>_('AdminModule.features.text_remove');?>
-
-

_('AdminModule.features.heading_cron_tasks');?>

-
- - - - - - - - - - - - - - = 0 ? [] : ['disabled' => 'disabled']); - ?> - = 0 ? '' : ' style="display:none;"');?>> - - - - - - - - - -
_('AdminModule.features.name');?>_('AppController.tooltip.text');?>
_('AdminModule.features.tooltip_name');?>
_('AdminModule.features.label');?>_('AppController.tooltip.text');?>
_('AdminModule.features.tooltip_cron_label');?>
_('AdminModule.features.description');?>_('AppController.tooltip.text');?>
_('AdminModule.features.tooltip_description');?>
_('AdminModule.features.type');?>_('AppController.tooltip.text');?>
_('AdminModule.features.tooltip_type');?>
_('AdminModule.features.time');?>_('AppController.tooltip.text');?>
_('AdminModule.features.tooltip_time');?>
_('AdminModule.features.text_options');?>
Form->fieldText('cron_tasks[name][]', (isset($vars['cron_tasks']['name'][$i]) ? $vars['cron_tasks']['name'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminModule.features.placeholder_name', true)], $disabled));?>Form->fieldText('cron_tasks[label][]', (isset($vars['cron_tasks']['label'][$i]) ? $vars['cron_tasks']['label'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminModule.features.placeholder_cron_label', true)], $disabled));?>Form->fieldTextarea('cron_tasks[description][]', (isset($vars['cron_tasks']['description'][$i]) ? $vars['cron_tasks']['description'][$i] : null), array_merge(['class' => 'stretch'], $disabled));?>Form->fieldSelect('cron_tasks[type][]', (isset($task_types) ? $task_types : null), (isset($vars['cron_tasks']['type'][$i]) ? $vars['cron_tasks']['type'][$i] : null), array_merge(['class' => 'stretch'], $disabled));?>Form->fieldText('cron_tasks[time][]', (isset($vars['cron_tasks']['time'][$i]) ? $vars['cron_tasks']['time'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminModule.features.placeholder_time', true)], $disabled));?>_('AdminModule.features.text_remove');?>
-
+$this->Form->create(null, ['class' => 'disable-on-submit']); +?> -

_('AdminModule.features.heading_optional_functions');?>

-
-
+
+ +
+ _('AdminModule.features.heading_service_tabs'); ?> +
+ +
+ +
+ +
+ + + + + + + + + + $function_settings) { + $rows = 0; + if (!empty($vars['service_tabs']['method_name'])) { + $rows = count($vars['service_tabs']['method_name']); + } + for ($i = -1; $i < $rows; $i++) : + $disabled = ($i >= 0 ? [] : ['disabled' => 'disabled']); + $hidden = $i < 0 ? 'style="display:none;"' : ''; ?> -
- Form->fieldCheckbox('optional_functions[' . $optional_function . ']', 'true', (isset($vars['optional_functions']) ? (isset($vars['optional_functions'][$optional_function]) ? $vars['optional_functions'][$optional_function] : null) : $function_settings['enabled']) == 'true', ['class' => 'inline', 'id' => 'optional_functions[' . $optional_function . ']']); - $this->Form->label($optional_function, 'optional_functions[' . $optional_function . ']', ['class' => 'inline']); +
> + + + + + + + +
+ _('AdminModule.features.method_name'); ?> + + + _('AdminModule.features.label'); ?> + + + _('AdminModule.features.level'); ?> + + _('AdminModule.features.text_options'); ?>
+ Form->fieldText('service_tabs[method_name][]', $vars['service_tabs']['method_name'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminModule.features.placeholder_method_name', true)], $disabled)); ?> + + Form->fieldText('service_tabs[label][]', $vars['service_tabs']['label'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminModule.features.placeholder_tab_label', true)], $disabled)); ?> + + Form->fieldSelect('service_tabs[level][]', $tab_levels ?? [], $vars['service_tabs']['level'][$i] ?? null, array_merge(['class' => 'form-select form-select-sm'], $disabled)); ?> + + +
+
- if (!empty($function_settings['tooltip'])) { - ?> - _('AppController.tooltip.text');?>
Html->safe($function_settings['tooltip']) : null);?>
- -
+ +
+ _('AdminModule.features.heading_cron_tasks'); ?> +
+ +
+ +
+ +
+ + + + + + + + + + + + = 0 ? [] : ['disabled' => 'disabled']); + $hidden = $i < 0 ? 'style="display:none;"' : ''; ?> + > + + + + + + + + + +
+ _('AdminModule.features.name'); ?> + + + _('AdminModule.features.label'); ?> + + + _('AdminModule.features.description'); ?> + + + _('AdminModule.features.type'); ?> + + + _('AdminModule.features.time'); ?> + + _('AdminModule.features.text_options'); ?>
+ Form->fieldText('cron_tasks[name][]', $vars['cron_tasks']['name'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminModule.features.placeholder_name', true)], $disabled)); ?> + + Form->fieldText('cron_tasks[label][]', $vars['cron_tasks']['label'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminModule.features.placeholder_cron_label', true)], $disabled)); ?> + + Form->fieldTextarea('cron_tasks[description][]', $vars['cron_tasks']['description'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'rows' => 1], $disabled)); ?> + + Form->fieldSelect('cron_tasks[type][]', $task_types ?? [], $vars['cron_tasks']['type'][$i] ?? null, array_merge(['class' => 'form-select form-select-sm'], $disabled)); ?> + + Form->fieldText('cron_tasks[time][]', $vars['cron_tasks']['time'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminModule.features.placeholder_time', true)], $disabled)); ?> + + +
+
+ + +
+ _('AdminModule.features.heading_optional_functions'); ?> +
+ +
+ $function_settings) : ?> +
+
+ Form->fieldCheckbox('optional_functions[' . $optional_function . ']', 'true', $checked, ['id' => 'optional_functions_' . $optional_function, 'class' => 'form-check-input']); + ?> + + + +
+ +
+
-
- Form->fieldSubmit('submit', $this->_('AdminModule.features.confirm', true), ['class' => 'btn btn-primary pull-right']);?> -
-
- Form->end(); + - $this->Widget->end(); - ?> +Form->end(); +$this->Widget->end(); +?> + + diff --git a/views/default/admin_module_fields.pdt b/views/default/admin_module_fields.pdt index f410210..7436714 100644 --- a/views/default/admin_module_fields.pdt +++ b/views/default/admin_module_fields.pdt @@ -1,193 +1,265 @@ - Widget->clear(); - $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); - $this->Widget->create($this->_('AdminModule.index.boxtitle_extension_generator', true), ['id' => 'admin_module_fields']); - - echo (isset($progress_bar) ? $progress_bar : null); - - $this->Form->create(); - ?> -
-

_('AdminModule.fields.heading_module_row_fields');?>

-
- - - - - - - - - - - - - - = 0 ? [] : ['disabled' => 'disabled']); - ?> - = 0 ? '' : ' style="display:none;"');?>> - - - - - - - - - -
_('AdminModule.fields.name');?>_('AppController.tooltip.text');?>
_('AdminModule.fields.tooltip_name');?>
_('AdminModule.fields.label');?>_('AppController.tooltip.text');?>
_('AdminModule.fields.tooltip_label');?>
_('AdminModule.fields.type');?>_('AppController.tooltip.text');?>
_('AdminModule.fields.tooltip_type');?>
_('AdminModule.fields.tooltip');?>_('AppController.tooltip.text');?>
_('AdminModule.fields.tooltip_tooltip');?>
_('AdminModule.fields.name_key');?>_('AppController.tooltip.text');?>
_('AdminModule.fields.tooltip_name_key');?>
_('AdminModule.fields.text_options');?>
Form->fieldText('module_rows[name][]', (isset($vars['module_rows']['name'][$i]) ? $vars['module_rows']['name'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminModule.fields.placeholder_module_name', true)], $disabled));?>Form->fieldText('module_rows[label][]', (isset($vars['module_rows']['label'][$i]) ? $vars['module_rows']['label'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminModule.fields.placeholder_module_label', true)], $disabled));?>Form->fieldSelect('module_rows[type][]', (isset($field_types) ? $field_types : null), (isset($vars['module_rows']['type'][$i]) ? $vars['module_rows']['type'][$i] : null), array_merge(['class' => 'stretch'], $disabled));?>Form->fieldTextarea('module_rows[tooltip][]', (isset($vars['module_rows']['tooltip'][$i]) ? $vars['module_rows']['tooltip'][$i] : null), array_merge(['class' => 'stretch'], $disabled));?> - Form->fieldHidden('module_rows[name_key][]', (isset($vars['module_rows']['name_key'][$i]) ? $vars['module_rows']['name_key'][$i] : 'true'), array_merge(['class' => 'module_name_key'], $disabled));?> - Form->fieldRadio('module_rows_name_key_placeholder', 'true', (isset($vars['module_rows']['name_key'][$i]) ? $vars['module_rows']['name_key'][$i] : 'true') == 'true', array_merge(['class' => 'module_name_key_radio'], $disabled));?> - _('AdminModule.fields.text_remove');?>
-
-

_('AdminModule.fields.heading_package_fields');?>

-
- - - - - - - - - - - - - - = 0 ? [] : ['disabled' => 'disabled']); - ?> - = 0 ? '' : ' style="display:none;"');?>> - - - - - - - - - -
_('AdminModule.fields.name');?>_('AppController.tooltip.text');?>
_('AdminModule.fields.tooltip_name');?>
_('AdminModule.fields.label');?>_('AppController.tooltip.text');?>
_('AdminModule.fields.tooltip_label');?>
_('AdminModule.fields.type');?>_('AppController.tooltip.text');?>
_('AdminModule.fields.tooltip_type');?>
_('AdminModule.fields.tooltip');?>_('AppController.tooltip.text');?>
_('AdminModule.fields.tooltip_tooltip');?>
_('AdminModule.fields.name_key');?>_('AppController.tooltip.text');?>
_('AdminModule.fields.tooltip_name_key');?>
_('AdminModule.fields.text_options');?>
Form->fieldText('package_fields[name][]', (isset($vars['package_fields']['name'][$i]) ? $vars['package_fields']['name'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminModule.fields.placeholder_package_name', true)], $disabled));?>Form->fieldText('package_fields[label][]', (isset($vars['package_fields']['label'][$i]) ? $vars['package_fields']['label'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminModule.fields.placeholder_package_label', true)], $disabled));?>Form->fieldSelect('package_fields[type][]', (isset($field_types) ? $field_types : null), (isset($vars['package_fields']['type'][$i]) ? $vars['package_fields']['type'][$i] : null), array_merge(['class' => 'stretch'], $disabled));?>Form->fieldTextarea('package_fields[tooltip][]', (isset($vars['package_fields']['tooltip'][$i]) ? $vars['package_fields']['tooltip'][$i] : null), array_merge(['class' => 'stretch'], $disabled));?> - Form->fieldHidden('package_fields[name_key][]', (isset($vars['package_fields']['name_key'][$i]) ? $vars['package_fields']['name_key'][$i] : 'true'), array_merge(['class' => 'package_name_key'], $disabled));?> - Form->fieldRadio('package_fields_name_key_placeholder', 'true', (isset($vars['package_fields']['name_key'][$i]) ? $vars['package_fields']['name_key'][$i] : 'true') == 'true', array_merge(['class' => 'package_name_key_radio'], $disabled));?> - _('AdminModule.fields.text_remove');?>
-
-

_('AdminModule.fields.heading_service_fields');?>

-
- - - - - - - - - - - - - - = 0 ? [] : ['disabled' => 'disabled']); - ?> - = 0 ? '' : ' style="display:none;"');?>> - - - - - - - - - -
_('AdminModule.fields.name');?>_('AppController.tooltip.text');?>
_('AdminModule.fields.tooltip_name');?>
_('AdminModule.fields.label');?>_('AppController.tooltip.text');?>
_('AdminModule.fields.tooltip_label');?>
_('AdminModule.fields.type');?>_('AppController.tooltip.text');?>
_('AdminModule.fields.tooltip_type');?>
_('AdminModule.fields.tooltip');?>_('AppController.tooltip.text');?>
_('AdminModule.fields.tooltip_tooltip');?>
_('AdminModule.fields.name_key');?>_('AppController.tooltip.text');?>
_('AdminModule.fields.tooltip_name_key');?>
_('AdminModule.fields.text_options');?>
Form->fieldText('service_fields[name][]', (isset($vars['service_fields']['name'][$i]) ? $vars['service_fields']['name'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminModule.fields.placeholder_service_name', true)], $disabled));?>Form->fieldText('service_fields[label][]', (isset($vars['service_fields']['label'][$i]) ? $vars['service_fields']['label'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminModule.fields.placeholder_service_label', true)], $disabled));?>Form->fieldSelect('service_fields[type][]', (isset($field_types) ? $field_types : null), (isset($vars['service_fields']['type'][$i]) ? $vars['service_fields']['type'][$i] : null), array_merge(['class' => 'stretch'], $disabled));?>Form->fieldTextarea('service_fields[tooltip][]', (isset($vars['service_fields']['tooltip'][$i]) ? $vars['service_fields']['tooltip'][$i] : null), array_merge(['class' => 'stretch'], $disabled));?> - Form->fieldHidden('service_fields[name_key][]', ($vars['service_fields']['name_key'][$i] ?? 'false'), array_merge(['class' => 'service_name_key'], $disabled));?> - Form->fieldRadio('service_fields_name_key_placeholder', 'true', ($vars['service_fields']['name_key'][$i] ?? 'true') == 'true', array_merge(['class' => 'service_name_key_radio'], $disabled));?> - _('AdminModule.fields.text_remove');?>
-
-
- Form->fieldSubmit('submit', $this->_('AdminModule.fields.features', true), ['class' => 'btn btn-primary pull-right']);?> -
-
- Form->end(); - - $this->Widget->end(); - ?> +Widget->clear(); +$this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->create($this->_('AdminModule.index.boxtitle_extension_generator', true), ['id' => 'admin_module_fields']); + +echo $progress_bar ?? null; + +$this->Form->create(null, ['class' => 'disable-on-submit']); +?> + +
+ +
+ _('AdminModule.fields.heading_module_row_fields'); ?> +
+ +
+ +
+ +
+ + + + + + + + + + + + + = 0 ? [] : ['disabled' => 'disabled']); + $hidden = $i < 0 ? 'style="display:none;"' : ''; + ?> + > + + + + + + + + + +
+ _('AdminModule.fields.name'); ?> + + + _('AdminModule.fields.label'); ?> + + + _('AdminModule.fields.type'); ?> + + + _('AdminModule.fields.tooltip'); ?> + + + _('AdminModule.fields.name_key'); ?> + + _('AdminModule.fields.text_options'); ?>
+ Form->fieldText('module_rows[name][]', $vars['module_rows']['name'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminModule.fields.placeholder_module_name', true)], $disabled)); ?> + + Form->fieldText('module_rows[label][]', $vars['module_rows']['label'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminModule.fields.placeholder_module_label', true)], $disabled)); ?> + + Form->fieldSelect('module_rows[type][]', $field_types ?? [], $vars['module_rows']['type'][$i] ?? null, array_merge(['class' => 'form-select form-select-sm'], $disabled)); ?> + + Form->fieldTextarea('module_rows[tooltip][]', $vars['module_rows']['tooltip'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'rows' => 1], $disabled)); ?> + + Form->fieldHidden('module_rows[name_key][]', $vars['module_rows']['name_key'][$i] ?? 'true', array_merge(['class' => 'name-key-value'], $disabled)); ?> + Form->fieldRadio('module_rows_name_key_placeholder', 'true', ($vars['module_rows']['name_key'][$i] ?? 'true') == 'true', array_merge(['class' => 'form-check-input name-key-radio', 'data-field-type' => 'module'], $disabled)); ?> + + +
+
+ + +
+ _('AdminModule.fields.heading_package_fields'); ?> +
+ +
+ +
+ +
+ + + + + + + + + + + + + = 0 ? [] : ['disabled' => 'disabled']); + $hidden = $i < 0 ? 'style="display:none;"' : ''; + ?> + > + + + + + + + + + +
+ _('AdminModule.fields.name'); ?> + + + _('AdminModule.fields.label'); ?> + + + _('AdminModule.fields.type'); ?> + + + _('AdminModule.fields.tooltip'); ?> + + + _('AdminModule.fields.name_key'); ?> + + _('AdminModule.fields.text_options'); ?>
+ Form->fieldText('package_fields[name][]', $vars['package_fields']['name'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminModule.fields.placeholder_package_name', true)], $disabled)); ?> + + Form->fieldText('package_fields[label][]', $vars['package_fields']['label'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminModule.fields.placeholder_package_label', true)], $disabled)); ?> + + Form->fieldSelect('package_fields[type][]', $field_types ?? [], $vars['package_fields']['type'][$i] ?? null, array_merge(['class' => 'form-select form-select-sm'], $disabled)); ?> + + Form->fieldTextarea('package_fields[tooltip][]', $vars['package_fields']['tooltip'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'rows' => 1], $disabled)); ?> + + Form->fieldHidden('package_fields[name_key][]', $vars['package_fields']['name_key'][$i] ?? 'true', array_merge(['class' => 'name-key-value'], $disabled)); ?> + Form->fieldRadio('package_fields_name_key_placeholder', 'true', ($vars['package_fields']['name_key'][$i] ?? 'true') == 'true', array_merge(['class' => 'form-check-input name-key-radio', 'data-field-type' => 'package'], $disabled)); ?> + + +
+
+ + +
+ _('AdminModule.fields.heading_service_fields'); ?> +
+ +
+ +
+ +
+ + + + + + + + + + + + + = 0 ? [] : ['disabled' => 'disabled']); + $hidden = $i < 0 ? 'style="display:none;"' : ''; + ?> + > + + + + + + + + + +
+ _('AdminModule.fields.name'); ?> + + + _('AdminModule.fields.label'); ?> + + + _('AdminModule.fields.type'); ?> + + + _('AdminModule.fields.tooltip'); ?> + + + _('AdminModule.fields.name_key'); ?> + + _('AdminModule.fields.text_options'); ?>
+ Form->fieldText('service_fields[name][]', $vars['service_fields']['name'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminModule.fields.placeholder_service_name', true)], $disabled)); ?> + + Form->fieldText('service_fields[label][]', $vars['service_fields']['label'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminModule.fields.placeholder_service_label', true)], $disabled)); ?> + + Form->fieldSelect('service_fields[type][]', $field_types ?? [], $vars['service_fields']['type'][$i] ?? null, array_merge(['class' => 'form-select form-select-sm'], $disabled)); ?> + + Form->fieldTextarea('service_fields[tooltip][]', $vars['service_fields']['tooltip'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'rows' => 1], $disabled)); ?> + + Form->fieldHidden('service_fields[name_key][]', $vars['service_fields']['name_key'][$i] ?? 'false', array_merge(['class' => 'name-key-value'], $disabled)); ?> + Form->fieldRadio('service_fields_name_key_placeholder', 'true', ($vars['service_fields']['name_key'][$i] ?? 'true') == 'true', array_merge(['class' => 'form-check-input name-key-radio', 'data-field-type' => 'service'], $disabled)); ?> + + +
+
+
+ + + +Form->end(); +$this->Widget->end(); +?> + + diff --git a/views/default/admin_nonmerchant_basic.pdt b/views/default/admin_nonmerchant_basic.pdt index f8f4cf7..39c7f16 100644 --- a/views/default/admin_nonmerchant_basic.pdt +++ b/views/default/admin_nonmerchant_basic.pdt @@ -1,109 +1,127 @@ - Widget->clear(); - $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); - $this->Widget->create($this->_('AdminNonmerchant.index.boxtitle_extension_generator', true), ['id' => 'admin_nonmerchant_basic']); +$this->Widget->clear(); +$this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->create($this->_('AdminNonmerchant.index.boxtitle_extension_generator', true), ['id' => 'admin_nonmerchant_basic']); - echo (isset($progress_bar) ? $progress_bar : null); +echo $progress_bar ?? null; - $this->Form->create(null, ['id' => 'nonmerchantbasic', 'enctype' => 'multipart/form-data']); - ?> -
-

_('AdminNonmerchant.basic.heading_basic');?>

-
-
    -
  • - Form->label($this->_('AdminNonmerchant.basic.description', true), 'description', ['class' => 'inline']); - ?> - _('AppController.tooltip.text');?>
    _('AdminNonmerchant.basic.tooltip_description');?>
    - Form->fieldTextarea('description', (isset($vars['description']) ? $vars['description'] : null), ['id' => 'description']); - ?> -
  • -
  • - Form->label($this->_('AdminNonmerchant.basic.logo', true), 'logo'); - $this->Form->fieldFile('logo', ['id' => 'logo']); - ?> - _('AppController.tooltip.text');?>
    _('AdminNonmerchant.basic.tooltip_logo');?>
    -
  • -
  • - Form->label($this->_('AdminNonmerchant.basic.signup_url', true), 'signup_url'); - $this->Form->fieldText('signup_url', (isset($vars['signup_url']) ? $vars['signup_url'] : null), ['id' => 'signup_url', 'placeholder' => $this->_('AdminNonmerchant.basic.placeholder_signup_url', true)]); - ?> - _('AppController.tooltip.text');?>
    _('AdminNonmerchant.basic.tooltip_signup_url');?>
    -
  • -
  • - Form->label($this->_('AdminNonmerchant.basic.currencies', true), 'currencies'); - $this->Form->fieldText('currencies', (isset($vars['currencies']) ? $vars['currencies'] : null), ['id' => 'currencies', 'placeholder' => $this->_('AdminNonmerchant.basic.placeholder_currencies', true)]); - ?> - _('AppController.tooltip.text');?>
    _('AdminNonmerchant.basic.tooltip_currencies');?>
    -
  • -
-
+$this->Form->create(null, ['id' => 'nonmerchantbasic', 'enctype' => 'multipart/form-data', 'class' => 'disable-on-submit']); +?> -

_('AdminNonmerchant.basic.heading_authors');?>

-
- - - - - - - - - - - - - - - - - - -
_('AdminNonmerchant.basic.author_name');?>_('AdminNonmerchant.basic.author_url');?>_('AdminNonmerchant.basic.text_options');?>
Form->fieldText('authors[name][]', (isset($vars['authors']['name'][$i]) ? $vars['authors']['name'][$i] : null), ['class' => 'stretch', 'placeholder' => $this->_('AdminNonmerchant.basic.placeholder_author_name', true)]);?>Form->fieldText('authors[url][]', (isset($vars['authors']['url'][$i]) ? $vars['authors']['url'][$i] : null), ['class' => 'stretch', 'placeholder' => $this->_('AdminNonmerchant.basic.placeholder_author_url', true)]);?>_('AdminNonmerchant.basic.text_remove');?>
-
-
- Form->fieldSubmit('submit', (isset($form_type) ? $form_type : null) == 'basic' ? $this->_('AdminNonmerchant.basic.confirm', true) : $this->_('AdminNonmerchant.basic.fields', true), ['class' => 'btn btn-primary pull-right']);?> -
+
+ +
+ _('AdminNonmerchant.basic.heading_basic'); ?> +
+ +
+
+ Form->label($this->_('AdminNonmerchant.basic.description', true), 'description', ['class' => 'form-label']); + ?> + + Form->fieldTextarea('description', $vars['description'] ?? null, ['id' => 'description', 'class' => 'form-control', 'rows' => 3]); + ?> +
+
+ Form->label($this->_('AdminNonmerchant.basic.logo', true), 'logo', ['class' => 'form-label']); + ?> + + Form->fieldFile('logo', ['id' => 'logo', 'class' => 'form-control']); + ?> +
+
+ Form->label($this->_('AdminNonmerchant.basic.signup_url', true), 'signup_url', ['class' => 'form-label']); + ?> + + Form->fieldText('signup_url', $vars['signup_url'] ?? null, ['id' => 'signup_url', 'class' => 'form-control', 'placeholder' => $this->_('AdminNonmerchant.basic.placeholder_signup_url', true)]); + ?>
- Form->end(); +
+ Form->label($this->_('AdminNonmerchant.basic.currencies', true), 'currencies', ['class' => 'form-label']); + ?> + + Form->fieldText('currencies', $vars['currencies'] ?? null, ['id' => 'currencies', 'class' => 'form-control', 'placeholder' => $this->_('AdminNonmerchant.basic.placeholder_currencies', true)]); + ?> +
+
- $this->Widget->end(); - ?> - + + diff --git a/views/default/admin_nonmerchant_features.pdt b/views/default/admin_nonmerchant_features.pdt index 74c15a2..6ac6570 100644 --- a/views/default/admin_nonmerchant_features.pdt +++ b/views/default/admin_nonmerchant_features.pdt @@ -1,44 +1,63 @@ - Widget->clear(); - $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); - $this->Widget->create($this->_('AdminNonmerchant.index.boxtitle_extension_generator', true), ['id' => 'admin_nonmerchant_features']); - - echo (isset($progress_bar) ? $progress_bar : null); - - $this->Form->create(); - ?> -
-

_('AdminNonmerchant.features.heading_optional_functions');?>

-
-
- $function_settings) { - ?> -
- Form->fieldCheckbox('optional_functions[' . $optional_function . ']', 'true', (isset($vars['optional_functions']) ? (isset($vars['optional_functions'][$optional_function]) ? $vars['optional_functions'][$optional_function] : null) : $function_settings['enabled']) == 'true', ['class' => 'inline', 'id' => 'optional_functions[' . $optional_function . ']']); - $this->Form->label($optional_function, 'optional_functions[' . $optional_function . ']', ['class' => 'inline']); + - _('AppController.tooltip.text');?>
Html->safe($function_settings['tooltip']) : null);?>
+$this->Widget->clear(); +$this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->create($this->_('AdminNonmerchant.index.boxtitle_extension_generator', true), ['id' => 'admin_nonmerchant_features']); + +echo $progress_bar ?? null; + +$this->Form->create(null, ['class' => 'disable-on-submit']); +?> + +
+ +
+ _('AdminNonmerchant.features.heading_optional_functions'); ?> +
+ +
+ $function_settings) : ?> +
+
Form->fieldCheckbox('optional_functions[' . $optional_function . ']', 'true', $checked, ['id' => 'optional_functions_' . $optional_function, 'class' => 'form-check-input']); ?> -
- + + + +
+ +
+
-
- Form->fieldSubmit('submit', $this->_('AdminNonmerchant.features.confirm', true), ['class' => 'btn btn-primary pull-right']);?> -
-
- Form->end(); + + +Form->end(); +$this->Widget->end(); +?> + + - $this->Widget->end(); + diff --git a/views/default/admin_nonmerchant_fields.pdt b/views/default/admin_nonmerchant_fields.pdt index 9fc41c5..b0613f1 100644 --- a/views/default/admin_nonmerchant_fields.pdt +++ b/views/default/admin_nonmerchant_fields.pdt @@ -1,91 +1,113 @@ - Widget->clear(); - $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); - $this->Widget->create($this->_('AdminNonmerchant.index.boxtitle_extension_generator', true), ['id' => 'admin_nonmerchant_fields']); +$this->Widget->clear(); +$this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->create($this->_('AdminNonmerchant.index.boxtitle_extension_generator', true), ['id' => 'admin_nonmerchant_fields']); - echo (isset($progress_bar) ? $progress_bar : null); +echo $progress_bar ?? null; - $this->Form->create(); - ?> -
-

_('AdminNonmerchant.fields.heading_fields');?>

-
- - - - - - - - - - - - - - = 0 ? [] : ['disabled' => 'disabled']); - ?> - = 0 ? '' : ' style="display:none;"');?>> - - - - - - - - - -
_('AdminNonmerchant.fields.name');?>_('AppController.tooltip.text');?>
_('AdminNonmerchant.fields.tooltip_name');?>
_('AdminNonmerchant.fields.label');?>_('AppController.tooltip.text');?>
_('AdminNonmerchant.fields.tooltip_label');?>
_('AdminNonmerchant.fields.type');?>_('AppController.tooltip.text');?>
_('AdminNonmerchant.fields.tooltip_type');?>
_('AdminNonmerchant.fields.tooltip');?>_('AppController.tooltip.text');?>
_('AdminNonmerchant.fields.tooltip_tooltip');?>
_('AdminNonmerchant.fields.encryptable');?>_('AppController.tooltip.text');?>
_('AdminMerchant.fields.tooltip_encryptable');?>
_('AdminNonmerchant.fields.text_options');?>
Form->fieldText('fields[name][]', (isset($vars['fields']['name'][$i]) ? $vars['fields']['name'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminNonmerchant.fields.placeholder_name', true)], $disabled));?>Form->fieldText('fields[label][]', (isset($vars['fields']['label'][$i]) ? $vars['fields']['label'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminNonmerchant.fields.placeholder_label', true)], $disabled));?>Form->fieldSelect('fields[type][]', (isset($field_types) ? $field_types : null), (isset($vars['fields']['type'][$i]) ? $vars['fields']['type'][$i] : null), array_merge(['class' => 'stretch'], $disabled));?>Form->fieldTextarea('fields[tooltip][]', (isset($vars['fields']['tooltip'][$i]) ? $vars['fields']['tooltip'][$i] : null), array_merge(['class' => 'stretch'], $disabled));?> - Form->fieldHidden('fields[encryptable][]', (isset($vars['fields']['encryptable'][$i]) ? $vars['fields']['encryptable'][$i] : 'false'), array_merge(['class' => 'encryptable'], $disabled));?> - Form->fieldCheckbox('', 'true', (isset($vars['fields']['encryptable'][$i]) ? $vars['fields']['encryptable'][$i] : null) == 'true', array_merge(['class' => 'stretch encryptable_checkbox'], $disabled));?> - _('AdminNonmerchant.fields.text_remove');?>
-
-
- Form->fieldSubmit('submit', $this->_('AdminNonmerchant.fields.features', true), ['class' => 'btn btn-primary pull-right']);?> -
-
- Form->end(); +$this->Form->create(null, ['class' => 'disable-on-submit']); +?> - $this->Widget->end(); - ?> +
+ +
+ _('AdminNonmerchant.fields.heading_fields'); ?> +
- + + diff --git a/views/default/admin_plugin_basic.pdt b/views/default/admin_plugin_basic.pdt index 587c801..d5c9773 100644 --- a/views/default/admin_plugin_basic.pdt +++ b/views/default/admin_plugin_basic.pdt @@ -1,95 +1,109 @@ - Widget->clear(); - $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); - $this->Widget->create($this->_('AdminPlugin.index.boxtitle_extension_generator', true), ['id' => 'admin_plugin_basic']); +$this->Widget->clear(); +$this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->create($this->_('AdminPlugin.index.boxtitle_extension_generator', true), ['id' => 'admin_plugin_basic']); - echo (isset($progress_bar) ? $progress_bar : null); +echo $progress_bar ?? null; - $this->Form->create(null, ['id' => 'pluginbasic', 'enctype' => 'multipart/form-data']); - ?> -
-

_('AdminPlugin.basic.heading_basic');?>

-
-
    -
  • - Form->label($this->_('AdminPlugin.basic.description', true), 'description', ['class' => 'inline']); - ?> - _('AppController.tooltip.text');?>
    _('AdminPlugin.basic.tooltip_description');?>
    - Form->fieldTextarea('description', (isset($vars['description']) ? $vars['description'] : null), ['id' => 'description']); - ?> -
  • -
  • - Form->label($this->_('AdminPlugin.basic.logo', true), 'logo'); - $this->Form->fieldFile('logo', ['id' => 'logo']); - ?> - _('AppController.tooltip.text');?>
    _('AdminPlugin.basic.tooltip_logo');?>
    -
  • -
-
+$this->Form->create(null, ['id' => 'pluginbasic', 'enctype' => 'multipart/form-data', 'class' => 'disable-on-submit']); +?> -

_('AdminPlugin.basic.heading_authors');?>

-
- - - - - - - - - - - - - - - - - - -
_('AdminPlugin.basic.author_name');?>_('AdminPlugin.basic.author_url');?>_('AdminPlugin.basic.text_options');?>
Form->fieldText('authors[name][]', (isset($vars['authors']['name'][$i]) ? $vars['authors']['name'][$i] : null), ['class' => 'stretch', 'placeholder' => $this->_('AdminPlugin.basic.placeholder_author_name', true)]);?>Form->fieldText('authors[url][]', (isset($vars['authors']['url'][$i]) ? $vars['authors']['url'][$i] : null), ['class' => 'stretch', 'placeholder' => $this->_('AdminPlugin.basic.placeholder_author_url', true)]);?>_('AdminPlugin.basic.text_remove');?>
-
-
- Form->fieldSubmit('submit', (isset($form_type) ? $form_type : null) == 'basic' ? $this->_('AdminPlugin.basic.confirm', true) : $this->_('AdminPlugin.basic.database', true), ['class' => 'btn btn-primary pull-right']);?> -
+
+ +
+ _('AdminPlugin.basic.heading_basic'); ?> +
+ +
+
+ Form->label($this->_('AdminPlugin.basic.description', true), 'description', ['class' => 'form-label']); + ?> + + Form->fieldTextarea('description', $vars['description'] ?? null, ['id' => 'description', 'class' => 'form-control', 'rows' => 3]); + ?> +
+
+ Form->label($this->_('AdminPlugin.basic.logo', true), 'logo', ['class' => 'form-label']); + ?> + + Form->fieldFile('logo', ['id' => 'logo', 'class' => 'form-control']); + ?>
- Form->end(); +
- $this->Widget->end(); - ?> - + + diff --git a/views/default/admin_plugin_database.pdt b/views/default/admin_plugin_database.pdt index d1de35e..c29ca8a 100644 --- a/views/default/admin_plugin_database.pdt +++ b/views/default/admin_plugin_database.pdt @@ -1,196 +1,160 @@ +Widget->clear(); +$this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->create($this->_('AdminPlugin.index.boxtitle_extension_generator', true), ['id' => 'admin_plugin_database']); + +echo $progress_bar ?? null; + +$this->Form->create(null, ['id' => 'plugindatabase', 'enctype' => 'multipart/form-data', 'class' => 'disable-on-submit']); +?> + +
+ +
+ _('AdminPlugin.database.heading_database'); ?> + + _('AdminPlugin.database.heading_more_info'); ?> + +
+ +
+ _('AdminPlugin.database.text_more_info'); ?> +
+ +
+ +
+ +
Widget->clear(); - $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); - $this->Widget->create($this->_('AdminPlugin.index.boxtitle_extension_generator', true), ['id' => 'admin_plugin_database']); - - echo (isset($progress_bar) ? $progress_bar : null); - - $this->Form->create(null, ['id' => 'plugindatabase', 'enctype' => 'multipart/form-data']); + $tables = 0; + if (!empty($vars['tables'])) { + $tables = count($vars['tables']); + } + for ($i = -1; $i < $tables; $i++) : + $disabled = ($i >= 0 ? [] : ['disabled' => 'disabled']); + $hidden = $i < 0 ? 'style="display:none;"' : ''; ?> -
-

_('AdminPlugin.database.heading_database');?> - _('AdminPlugin.database.heading_more_info');?>

- -
-
- - Form->end(); - - $this->Widget->end(); - ?> - + + diff --git a/views/default/admin_plugin_integrations.pdt b/views/default/admin_plugin_integrations.pdt index 28281ae..d4a591d 100644 --- a/views/default/admin_plugin_integrations.pdt +++ b/views/default/admin_plugin_integrations.pdt @@ -1,164 +1,248 @@ - Widget->clear(); - $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); - $this->Widget->create($this->_('AdminPlugin.index.boxtitle_extension_generator', true), ['id' => 'admin_plugin_integrations']); - - echo (isset($progress_bar) ? $progress_bar : null); - - $this->Form->create(); - ?> -
-

_('AdminPlugin.integrations.heading_actions');?> - _('AdminPlugin.integrations.heading_more_info');?>

- -
- - - - - - - - - - - - - = 0 ? [] : ['disabled' => 'disabled']); - ?> - = 0 ? '' : ' style="display:none;"');?>> - - - - - - - - -
_('AdminPlugin.integrations.location');?>_('AppController.tooltip.text');?>
_('AdminPlugin.integrations.tooltip_location');?>
_('AdminPlugin.integrations.controller');?>_('AppController.tooltip.text');?>
_('AdminPlugin.integrations.tooltip_controller');?>
_('AdminPlugin.integrations.action');?>_('AppController.tooltip.text');?>
_('AdminPlugin.integrations.tooltip_action');?>
_('AdminPlugin.integrations.name');?>_('AppController.tooltip.text');?>
_('AdminPlugin.integrations.tooltip_name');?>
_('AdminPlugin.integrations.text_options');?>
Form->fieldSelect('actions[location][]', (isset($action_locations) ? $action_locations : null), (isset($vars['actions']['location'][$i]) ? $vars['actions']['location'][$i] : null), array_merge(['class' => 'stretch'], $disabled));?>Form->fieldText('actions[controller][]', (isset($vars['actions']['controller'][$i]) ? $vars['actions']['controller'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminPlugin.integrations.placeholder_controller', true)], $disabled));?>Form->fieldText('actions[action][]', (isset($vars['actions']['action'][$i]) ? $vars['actions']['action'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminPlugin.integrations.placeholder_action', true)], $disabled));?>Form->fieldText('actions[name][]', (isset($vars['actions']['name'][$i]) ? $vars['actions']['name'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminPlugin.integrations.placeholder_name', true)], $disabled));?>_('AdminPlugin.integrations.text_remove');?>
-
-

_('AdminPlugin.integrations.heading_events');?> - _('AdminPlugin.integrations.heading_more_info');?>

- -
- - - - - - - - - - - = 0 ? [] : ['disabled' => 'disabled']); - ?> - = 0 ? '' : ' style="display:none;"');?>> - - - - - - -
_('AdminPlugin.integrations.event');?>_('AppController.tooltip.text');?>
_('AdminPlugin.integrations.tooltip_event');?>
_('AdminPlugin.integrations.event_callback');?>_('AppController.tooltip.text');?>
_('AdminPlugin.integrations.tooltip_event_callback');?>
_('AdminPlugin.integrations.text_options');?>
Form->fieldText('events[event][]', (isset($vars['events']['event'][$i]) ? $vars['events']['event'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminPlugin.integrations.placeholder_event', true)], $disabled));?>Form->fieldText('events[callback][]', (isset($vars['events']['callback'][$i]) ? $vars['events']['callback'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminPlugin.integrations.placeholder_event_callback', true)], $disabled));?>_('AdminPlugin.integrations.text_remove');?>
-
-

_('AdminPlugin.integrations.heading_cards');?> - _('AdminPlugin.integrations.heading_more_info');?>

- -
- - - - - - - - - - - - - = 0 ? [] : ['disabled' => 'disabled']); - ?> - = 0 ? '' : ' style="display:none;"');?>> - - - - - - - - -
_('AdminPlugin.integrations.level');?>_('AppController.tooltip.text');?>
_('AdminPlugin.integrations.tooltip_name');?>
_('AdminPlugin.integrations.card_callback');?>_('AppController.tooltip.text');?>
_('AdminPlugin.integrations.tooltip_card_callback');?>
_('AdminPlugin.integrations.label');?>_('AppController.tooltip.text');?>
_('AdminPlugin.integrations.tooltip_label');?>
_('AdminPlugin.integrations.link');?>_('AppController.tooltip.text');?>
_('AdminPlugin.integrations.tooltip_link');?>
_('AdminPlugin.integrations.text_options');?>
Form->fieldSelect('cards[level][]', (isset($card_levels) ? $card_levels : null), (isset($vars['cards']['level'][$i]) ? $vars['cards']['level'][$i] : null), array_merge(['class' => 'stretch'], $disabled));?>Form->fieldText('cards[callback][]', (isset($vars['cards']['callback'][$i]) ? $vars['cards']['callback'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminPlugin.integrations.placeholder_card_callback', true)], $disabled));?>Form->fieldText('cards[label][]', (isset($vars['cards']['label'][$i]) ? $vars['cards']['label'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminPlugin.integrations.placeholder_label', true)], $disabled));?>Form->fieldText('cards[link][]', (isset($vars['cards']['link'][$i]) ? $vars['cards']['link'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminPlugin.integrations.placeholder_link', true)], $disabled));?>_('AdminPlugin.integrations.text_remove');?>
-
-
- Form->fieldSubmit('submit', $this->_('AdminPlugin.integrations.features', true), ['class' => 'btn btn-primary pull-right']);?> -
-
- Form->end(); - - $this->Widget->end(); - ?> +Widget->clear(); +$this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->create($this->_('AdminPlugin.index.boxtitle_extension_generator', true), ['id' => 'admin_plugin_integrations']); + +echo $progress_bar ?? null; + +$this->Form->create(null, ['class' => 'disable-on-submit']); +?> + +
+ +
+ _('AdminPlugin.integrations.heading_actions'); ?> + + _('AdminPlugin.integrations.heading_more_info'); ?> + +
+ +
+ _('AdminPlugin.integrations.text_actions_more_info'); ?> +
+ +
+ +
+ +
+ + + + + + + + + + + + = 0 ? [] : ['disabled' => 'disabled']); + $hidden = $i < 0 ? 'style="display:none;"' : ''; + ?> + > + + + + + + + + +
+ _('AdminPlugin.integrations.location'); ?> + + + _('AdminPlugin.integrations.controller'); ?> + + + _('AdminPlugin.integrations.action'); ?> + + + _('AdminPlugin.integrations.name'); ?> + + _('AdminPlugin.integrations.text_options'); ?>
+ Form->fieldSelect('actions[location][]', $action_locations ?? [], $vars['actions']['location'][$i] ?? null, array_merge(['class' => 'form-select form-select-sm'], $disabled)); ?> + + Form->fieldText('actions[controller][]', $vars['actions']['controller'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminPlugin.integrations.placeholder_controller', true)], $disabled)); ?> + + Form->fieldText('actions[action][]', $vars['actions']['action'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminPlugin.integrations.placeholder_action', true)], $disabled)); ?> + + Form->fieldText('actions[name][]', $vars['actions']['name'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminPlugin.integrations.placeholder_name', true)], $disabled)); ?> + + +
+
+ + +
+ _('AdminPlugin.integrations.heading_events'); ?> + + _('AdminPlugin.integrations.heading_more_info'); ?> + +
+ +
+ _('AdminPlugin.integrations.text_events_more_info'); ?> +
+ +
+ +
+ +
+ + + + + + + + + + = 0 ? [] : ['disabled' => 'disabled']); + $hidden = $i < 0 ? 'style="display:none;"' : ''; + ?> + > + + + + + + +
+ _('AdminPlugin.integrations.event'); ?> + + + _('AdminPlugin.integrations.event_callback'); ?> + + _('AdminPlugin.integrations.text_options'); ?>
+ Form->fieldText('events[event][]', $vars['events']['event'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminPlugin.integrations.placeholder_event', true)], $disabled)); ?> + + Form->fieldText('events[callback][]', $vars['events']['callback'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminPlugin.integrations.placeholder_event_callback', true)], $disabled)); ?> + + +
+
+ + +
+ _('AdminPlugin.integrations.heading_cards'); ?> + + _('AdminPlugin.integrations.heading_more_info'); ?> + +
+ +
+ _('AdminPlugin.integrations.text_cards_more_info'); ?> +
+ +
+ +
+ +
+ + + + + + + + + + + + = 0 ? [] : ['disabled' => 'disabled']); + $hidden = $i < 0 ? 'style="display:none;"' : ''; + ?> + > + + + + + + + + +
+ _('AdminPlugin.integrations.level'); ?> + + + _('AdminPlugin.integrations.card_callback'); ?> + + + _('AdminPlugin.integrations.label'); ?> + + + _('AdminPlugin.integrations.link'); ?> + + _('AdminPlugin.integrations.text_options'); ?>
+ Form->fieldSelect('cards[level][]', $card_levels ?? [], $vars['cards']['level'][$i] ?? null, array_merge(['class' => 'form-select form-select-sm'], $disabled)); ?> + + Form->fieldText('cards[callback][]', $vars['cards']['callback'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminPlugin.integrations.placeholder_card_callback', true)], $disabled)); ?> + + Form->fieldText('cards[label][]', $vars['cards']['label'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminPlugin.integrations.placeholder_label', true)], $disabled)); ?> + + Form->fieldText('cards[link][]', $vars['cards']['link'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminPlugin.integrations.placeholder_link', true)], $disabled)); ?> + + +
+
+
+ + + +Form->end(); +$this->Widget->end(); +?> + + diff --git a/views/default/css/styles.css b/views/default/css/styles.css index c91935c..f4550f0 100644 --- a/views/default/css/styles.css +++ b/views/default/css/styles.css @@ -1,34 +1,140 @@ -/* Extension Generator plugin */ -.node-progress-container { - padding: 10px 10% 30px; +/** + * Extension Generator - Custom Styles + * Bootstrap 5 / Paradigm Theme Compatible + */ + +/* Extension Type Selection Cards */ +.extension-type-card { + cursor: pointer; + transition: all 0.2s ease; + border: 2px solid var(--border-color, #dee2e6); + background-color: var(--bg-secondary, #f8f9fa); +} + +.extension-type-card:hover { + border-color: var(--accent-color, #0d6efd); + transform: translateY(-2px); +} + +.extension-type-card.active { + border-color: var(--accent-color, #0d6efd); + background-color: rgba(var(--accent-color-rgb, 13, 110, 253), 0.05); +} + +.extension-type-card .card-body { + padding: 1.5rem; +} + +.extension-type-card .bi { + font-size: 2.5rem; + margin-bottom: 0.75rem; + display: block; } -.node-progress-bar-container { - position: relative; +.extension-type-card h6 { + margin-bottom: 0.25rem; + font-weight: 600; } -.node-progress-bar { - display: inline-block; - width: 100%; - height: 3px; - border: 2px solid #c3c3c3; +.extension-type-card small { + font-size: 0.75rem; } -.node-progress-node-container { - position: absolute; - top: 0px; +/* Light theme overrides */ +[data-theme="light"] .extension-type-card { + border-color: #dee2e6; + background-color: #f8f9fa; } -.node-progress-node { - display: inline-block; - width: 20px; - height: 20px; - margin-left: -10px; - border: 2px solid #a0a0a0; - border-radius: 15px; - background-color: white; +[data-theme="light"] .extension-type-card:hover, +[data-theme="light"] .extension-type-card.active { + border-color: #0d6efd; } -.node-progress-node-container p { - margin-left: -50%; +[data-theme="light"] .extension-type-card.active { + background-color: rgba(13, 110, 253, 0.05); +} + +/* Dark theme overrides */ +[data-theme="dark"] .extension-type-card { + border-color: #495057; + background-color: #2b3035; +} + +[data-theme="dark"] .extension-type-card:hover, +[data-theme="dark"] .extension-type-card.active { + border-color: #0d6efd; +} + +[data-theme="dark"] .extension-type-card.active { + background-color: rgba(13, 110, 253, 0.1); +} + +/* Database table sections */ +.table-section { + border: 1px solid var(--border-color, #dee2e6); + border-radius: 0.375rem; + padding: 1rem; + margin-bottom: 1rem; + background-color: var(--bg-secondary, #f8f9fa); +} + +[data-theme="dark"] .table-section { + border-color: #495057; + background-color: #2b3035; +} + +/* Form improvements */ +.form-section-header { + display: flex; + align-items: center; + font-weight: 600; + margin-bottom: 1rem; + padding-bottom: 0.5rem; + border-bottom: 1px solid var(--border-color, #dee2e6); +} + +.form-section-header .bi { + margin-right: 0.5rem; + color: var(--accent-color, #0d6efd); +} + +/* Compact table inputs */ +.table .form-control-sm, +.table .form-select-sm { + font-size: 0.8125rem; +} + +/* Remove button styling */ +.btn-remove-row { + padding: 0.25rem 0.5rem; +} + +/* Info box styling */ +.info-box { + background-color: var(--bg-tertiary, #e9ecef); + border-radius: 0.375rem; + padding: 1rem; + margin-bottom: 1rem; +} + +[data-theme="dark"] .info-box { + background-color: #343a40; +} + +/* Responsive adjustments for wizard steps on mobile */ +@media (max-width: 576px) { + .form-wizard-step-label { + font-size: 0.75rem; + } + + .form-wizard-step-icon { + width: 36px; + height: 36px; + font-size: 0.875rem; + } + + .form-wizard-step-line { + width: 40px; + } } diff --git a/views/default/js/extension-generator.js b/views/default/js/extension-generator.js new file mode 100644 index 0000000..ce95fbd --- /dev/null +++ b/views/default/js/extension-generator.js @@ -0,0 +1,580 @@ +/** + * Extension Generator - Vanilla JS Utilities + * Bootstrap 5 / Paradigm Theme Compatible + */ +(function() { + 'use strict'; + + var ExtensionGenerator = { + /** + * Initialize all dynamic row handlers + */ + init: function() { + this.initDynamicRows(); + this.initTypeSelection(); + this.initLocationToggle(); + this.initDatabaseTable(); + this.initEncryptableCheckboxes(); + this.initNameKeyRadios(); + this.initColumnTypeHandlers(); + this.initInfoToggles(); + this.initModuleTypeToggle(); + this.initStaticTldsToggle(); + this.initTypeWarning(); + }, + + /** + * Generic dynamic row handler using templates + * @param {string} containerSelector - Container element selector + * @param {string} templateId - Template element ID + * @param {string} addBtnSelector - Add button selector + * @param {string} removeBtnSelector - Remove button selector + * @param {number} minRows - Minimum rows to keep (default 0) + * @param {function} onAdd - Callback after adding row + * @param {function} onRemove - Callback after removing row + */ + initDynamicRowHandler: function(options) { + var container = document.querySelector(options.containerSelector); + var template = document.getElementById(options.templateId); + var addBtn = document.querySelector(options.addBtnSelector); + + if (!container || !addBtn) return; + + var rowCounter = container.querySelectorAll(options.rowSelector || 'tr').length; + var minRows = options.minRows || 0; + + // Add row handler + addBtn.addEventListener('click', function(e) { + e.preventDefault(); + + var newRow; + if (template) { + newRow = template.content.cloneNode(true).firstElementChild; + } else if (options.cloneSelector) { + var source = container.querySelector(options.cloneSelector); + if (!source) return; + newRow = source.cloneNode(true); + newRow.style.display = ''; + // Enable any disabled fields + newRow.querySelectorAll('[disabled]').forEach(function(el) { + el.removeAttribute('disabled'); + }); + // Clear values + newRow.querySelectorAll('input[type="text"], textarea').forEach(function(el) { + el.value = ''; + }); + newRow.querySelectorAll('select').forEach(function(el) { + el.selectedIndex = 0; + }); + newRow.querySelectorAll('input[type="checkbox"], input[type="radio"]').forEach(function(el) { + el.checked = false; + }); + } + + if (!newRow) return; + + // Update field names with new index if needed + if (options.indexedFields) { + newRow.querySelectorAll('[name]').forEach(function(el) { + el.name = el.name.replace(/\[\d*\]/, '[' + rowCounter + ']'); + }); + } + + container.appendChild(newRow); + rowCounter++; + + if (options.onAdd) { + options.onAdd(newRow); + } + }); + + // Remove row handler using event delegation + container.addEventListener('click', function(e) { + var removeBtn = e.target.closest(options.removeBtnSelector); + if (!removeBtn) return; + + e.preventDefault(); + var row = removeBtn.closest(options.rowSelector || 'tr'); + var rows = container.querySelectorAll(options.rowSelector || 'tr'); + + // Check if visible rows > minRows + var visibleRows = Array.from(rows).filter(function(r) { + return r.style.display !== 'none'; + }); + + if (visibleRows.length > minRows && row) { + row.remove(); + if (options.onRemove) { + options.onRemove(); + } + } + }); + }, + + /** + * Initialize all dynamic row sections + */ + initDynamicRows: function() { + var self = this; + + // Author rows (module, plugin, merchant, nonmerchant basic pages) + this.initDynamicRowHandler({ + containerSelector: '#authors-table tbody', + addBtnSelector: '.author-row-add', + removeBtnSelector: '.remove-row', + cloneSelector: 'tr.author-row', + rowSelector: 'tr.author-row', + minRows: 1 + }); + + // Module row fields + this.initDynamicRowHandler({ + containerSelector: '#module-rows-table tbody', + addBtnSelector: '.module-row-add', + removeBtnSelector: '.remove-row', + cloneSelector: 'tr.module-row:first-child', + rowSelector: 'tr.module-row', + minRows: 1, + onRemove: function() { + self.ensureNameKeySelected('module'); + } + }); + + // Package fields + this.initDynamicRowHandler({ + containerSelector: '#package-fields-table tbody', + addBtnSelector: '.package-row-add', + removeBtnSelector: '.remove-row', + cloneSelector: 'tr.package-row:first-child', + rowSelector: 'tr.package-row', + minRows: 0 + }); + + // Service fields + this.initDynamicRowHandler({ + containerSelector: '#service-fields-table tbody', + addBtnSelector: '.service-row-add', + removeBtnSelector: '.remove-row', + cloneSelector: 'tr.service-row:first-child', + rowSelector: 'tr.service-row', + minRows: 0 + }); + + // Service tabs (module and plugin features) + this.initDynamicRowHandler({ + containerSelector: '#service-tabs-table tbody', + addBtnSelector: '.service-tab-row-add', + removeBtnSelector: '.remove-row', + cloneSelector: 'tr.service-tab-row:first-child', + rowSelector: 'tr.service-tab-row', + minRows: 0 + }); + + // Cron tasks + this.initDynamicRowHandler({ + containerSelector: '#cron-tasks-table tbody', + addBtnSelector: '.cron-task-row-add', + removeBtnSelector: '.remove-row', + cloneSelector: 'tr.cron-task-row:first-child', + rowSelector: 'tr.cron-task-row', + minRows: 0 + }); + + // Gateway fields + this.initDynamicRowHandler({ + containerSelector: '#fields-table tbody', + addBtnSelector: '.field-row-add', + removeBtnSelector: '.remove-row', + cloneSelector: 'tr.field-row:first-child', + rowSelector: 'tr.field-row', + minRows: 0 + }); + + // Plugin actions + this.initDynamicRowHandler({ + containerSelector: '#actions-table tbody', + addBtnSelector: '.action-row-add', + removeBtnSelector: '.remove-row', + cloneSelector: 'tr.action-row:first-child', + rowSelector: 'tr.action-row', + minRows: 0 + }); + + // Plugin events + this.initDynamicRowHandler({ + containerSelector: '#events-table tbody', + addBtnSelector: '.event-row-add', + removeBtnSelector: '.remove-row', + cloneSelector: 'tr.event-row:first-child', + rowSelector: 'tr.event-row', + minRows: 0 + }); + + // Plugin cards + this.initDynamicRowHandler({ + containerSelector: '#cards-table tbody', + addBtnSelector: '.card-row-add', + removeBtnSelector: '.remove-row', + cloneSelector: 'tr.card-row:first-child', + rowSelector: 'tr.card-row', + minRows: 0 + }); + }, + + /** + * Initialize extension type card selection + */ + initTypeSelection: function() { + var cards = document.querySelectorAll('.extension-type-card'); + var hiddenInput = document.getElementById('extension-type-input'); + + if (!cards.length || !hiddenInput) return; + + cards.forEach(function(card) { + card.addEventListener('click', function() { + // Remove active from all cards + cards.forEach(function(c) { + c.classList.remove('active'); + }); + // Add active to clicked card + card.classList.add('active'); + // Update hidden input + hiddenInput.value = card.dataset.type; + }); + }); + }, + + /** + * Initialize location toggle for custom path + */ + initLocationToggle: function() { + var locationSelect = document.getElementById('location'); + var customPathSection = document.getElementById('custom-path-section'); + + if (!locationSelect || !customPathSection) return; + + function toggleCustomPath() { + if (locationSelect.value === 'custom') { + customPathSection.classList.remove('d-none'); + } else { + customPathSection.classList.add('d-none'); + } + } + + locationSelect.addEventListener('change', toggleCustomPath); + toggleCustomPath(); + }, + + /** + * Initialize database table management for plugins + */ + initDatabaseTable: function() { + var container = document.getElementById('database-tables'); + var addTableBtn = document.querySelector('.table-row-add'); + + if (!container || !addTableBtn) return; + + var self = this; + var tableCounter = container.querySelectorAll('.table-section').length; + + // Add table handler + addTableBtn.addEventListener('click', function(e) { + e.preventDefault(); + + var template = container.querySelector('.table-section[data-table="-1"]'); + if (!template) return; + + var newTable = template.cloneNode(true); + newTable.style.display = ''; + tableCounter++; + + // Update data attribute + newTable.dataset.table = tableCounter; + + // Update field names + var html = newTable.innerHTML; + html = html.replace(/-1/g, tableCounter); + newTable.innerHTML = html; + + // Enable fields + newTable.querySelectorAll('[disabled]').forEach(function(el) { + el.removeAttribute('disabled'); + }); + + container.appendChild(newTable); + + // Initialize tooltips if available + if (typeof bootstrap !== 'undefined' && bootstrap.Tooltip) { + newTable.querySelectorAll('[data-bs-toggle="tooltip"]').forEach(function(el) { + new bootstrap.Tooltip(el); + }); + } + }); + + // Event delegation for dynamic elements + container.addEventListener('click', function(e) { + // Remove table + if (e.target.closest('.table-row-remove')) { + e.preventDefault(); + var tableSection = e.target.closest('.table-section'); + if (tableSection) { + tableSection.remove(); + } + return; + } + + // Add column + if (e.target.closest('.column-row-add')) { + e.preventDefault(); + var tableSection = e.target.closest('.table-section'); + var tbody = tableSection.querySelector('tbody'); + var lastRow = tbody.querySelector('tr.column-row:last-child'); + + if (!lastRow) return; + + var newRow = lastRow.cloneNode(true); + var colNum = parseInt(lastRow.dataset.column || 0) + 1; + newRow.dataset.column = colNum; + + // Update field names + var html = newRow.innerHTML; + var tableNum = tableSection.dataset.table; + html = html.replace(new RegExp('c' + (colNum - 1), 'g'), 'c' + colNum); + newRow.innerHTML = html; + + // Clear values and enable fields + newRow.querySelectorAll('input[type="text"], textarea').forEach(function(el) { + el.value = ''; + el.removeAttribute('disabled'); + }); + newRow.querySelectorAll('select').forEach(function(el) { + el.selectedIndex = 0; + el.removeAttribute('disabled'); + }); + newRow.querySelectorAll('input[type="checkbox"], input[type="radio"]').forEach(function(el) { + el.checked = false; + el.removeAttribute('disabled'); + }); + + tbody.appendChild(newRow); + return; + } + + // Remove column + if (e.target.closest('.column-row-remove')) { + e.preventDefault(); + var tbody = e.target.closest('tbody'); + var rows = tbody.querySelectorAll('tr.column-row'); + + if (rows.length > 1) { + e.target.closest('tr').remove(); + + // Ensure primary key is selected + var checkedPrimary = tbody.querySelector('.primary-key:checked'); + if (!checkedPrimary) { + var lastPrimary = tbody.querySelector('tr:last-child .primary-key'); + if (lastPrimary) { + lastPrimary.checked = true; + } + } + } + return; + } + + // Primary key selection + if (e.target.closest('.primary-key')) { + var tbody = e.target.closest('tbody'); + tbody.querySelectorAll('.primary-key').forEach(function(el) { + el.checked = false; + }); + e.target.checked = true; + } + }); + }, + + /** + * Initialize encryptable checkbox handlers + */ + initEncryptableCheckboxes: function() { + document.addEventListener('change', function(e) { + if (!e.target.classList.contains('encryptable-checkbox')) return; + + var hiddenInput = e.target.closest('td').querySelector('.encryptable-value'); + if (hiddenInput) { + hiddenInput.value = e.target.checked ? 'true' : 'false'; + } + }); + }, + + /** + * Initialize name key radio handlers + */ + initNameKeyRadios: function() { + document.addEventListener('click', function(e) { + if (!e.target.classList.contains('name-key-radio')) return; + + var table = e.target.closest('table'); + var fieldType = e.target.dataset.fieldType; + + // Update all hidden inputs in this table + table.querySelectorAll('.name-key-value').forEach(function(el) { + el.value = 'false'; + }); + + // Set clicked one to true + var hiddenInput = e.target.closest('td').querySelector('.name-key-value'); + if (hiddenInput) { + hiddenInput.value = 'true'; + } + }); + }, + + /** + * Ensure at least one name key is selected + * @param {string} fieldType - Type of field (module, package, service) + */ + ensureNameKeySelected: function(fieldType) { + var table = document.getElementById(fieldType + '-rows-table'); + if (!table) return; + + var checkedRadio = table.querySelector('.name-key-radio:checked'); + if (!checkedRadio) { + var lastRadio = table.querySelector('tbody tr:last-child .name-key-radio'); + if (lastRadio) { + lastRadio.checked = true; + var hiddenInput = lastRadio.closest('td').querySelector('.name-key-value'); + if (hiddenInput) { + hiddenInput.value = 'true'; + } + } + } + }, + + /** + * Initialize column type change handlers for database tables + */ + initColumnTypeHandlers: function() { + var defaultLengths = { + 'INT': 10, + 'TINYINT': 1, + 'VARCHAR': 64, + 'DATETIME': '', + 'TEXT': '', + 'ENUM': "'a','b','c'" + }; + var noLengthTypes = ['DATETIME', 'TEXT']; + + document.addEventListener('change', function(e) { + if (!e.target.classList.contains('column-type-select')) return; + + var row = e.target.closest('tr'); + var lengthInput = row.querySelector('.column-length'); + var primaryInput = row.querySelector('.primary-key'); + var type = e.target.value; + + if (lengthInput) { + lengthInput.value = defaultLengths[type] || ''; + lengthInput.disabled = noLengthTypes.indexOf(type) !== -1; + } + + if (primaryInput) { + primaryInput.disabled = noLengthTypes.indexOf(type) !== -1; + } + }); + }, + + /** + * Initialize info section toggles + */ + initInfoToggles: function() { + document.querySelectorAll('[data-toggle-info]').forEach(function(trigger) { + trigger.addEventListener('click', function(e) { + e.preventDefault(); + var targetId = trigger.dataset.toggleInfo; + var target = document.getElementById(targetId); + if (target) { + target.classList.toggle('d-none'); + } + }); + }); + }, + + /** + * Initialize module type toggle for TLDs section + */ + initModuleTypeToggle: function() { + var moduleTypeSelect = document.getElementById('module_type'); + var tldsSection = document.getElementById('static-tlds-section'); + + if (!moduleTypeSelect || !tldsSection) return; + + function toggleTldsSection() { + if (moduleTypeSelect.value === 'registrar') { + tldsSection.classList.remove('d-none'); + } else { + tldsSection.classList.add('d-none'); + } + } + + moduleTypeSelect.addEventListener('change', toggleTldsSection); + toggleTldsSection(); + }, + + /** + * Initialize static TLDs checkbox toggle + */ + initStaticTldsToggle: function() { + var staticTldsCheckbox = document.getElementById('static_tlds'); + var tldsFields = document.getElementById('static-tlds-fields'); + + if (!staticTldsCheckbox || !tldsFields) return; + + function toggleTldsFields() { + if (staticTldsCheckbox.checked) { + tldsFields.classList.remove('d-none'); + } else { + tldsFields.classList.add('d-none'); + } + } + + staticTldsCheckbox.addEventListener('change', toggleTldsFields); + toggleTldsFields(); + }, + + /** + * Initialize type change warning + */ + initTypeWarning: function() { + var typeCards = document.querySelectorAll('.extension-type-card'); + var typeWarning = document.getElementById('type-warning'); + var originalType = document.getElementById('original-type'); + + if (!typeCards.length || !typeWarning || !originalType) return; + + typeCards.forEach(function(card) { + card.addEventListener('click', function() { + var currentType = card.dataset.type; + var savedType = originalType.value; + + if (savedType && currentType !== savedType) { + typeWarning.classList.remove('d-none'); + } else { + typeWarning.classList.add('d-none'); + } + }); + }); + } + }; + + // Initialize when DOM is ready + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', function() { + ExtensionGenerator.init(); + }); + } else { + ExtensionGenerator.init(); + } + + // Expose globally if needed + window.ExtensionGenerator = ExtensionGenerator; +})(); diff --git a/views/default/partial_progress_bar.pdt b/views/default/partial_progress_bar.pdt index 802a22b..9b2caf6 100644 --- a/views/default/partial_progress_bar.pdt +++ b/views/default/partial_progress_bar.pdt @@ -1,26 +1,32 @@ - -
-
-
- $node) { - ?> -
- -
- -
-
-
-

-
- + +
+ $node) : ?> +
+ + +
+ +
+
+ +
+
-
+ +
+ +
+ +
Html->safe($node); ?>
+ +
+ + +
From d9fc08e6601c626322f6bb3b30b9d84f3b8e6187 Mon Sep 17 00:00:00 2001 From: Abdy Franco Date: Tue, 3 Feb 2026 12:13:09 -0600 Subject: [PATCH 2/4] Updated admin views --- views/default/admin_main.pdt | 10 +- views/default/admin_main_confirm.pdt | 3 + views/default/admin_main_create.pdt | 4 +- views/default/admin_main_general.pdt | 5 +- views/default/admin_merchant_basic.pdt | 3 + views/default/admin_merchant_features.pdt | 3 + views/default/admin_merchant_fields.pdt | 3 + views/default/admin_module_basic.pdt | 3 + views/default/admin_module_features.pdt | 3 + views/default/admin_module_fields.pdt | 3 + views/default/admin_nonmerchant_basic.pdt | 3 + views/default/admin_nonmerchant_features.pdt | 3 + views/default/admin_nonmerchant_fields.pdt | 3 + views/default/admin_plugin_basic.pdt | 3 + views/default/admin_plugin_database.pdt | 3 + views/default/admin_plugin_features.pdt | 347 ++++++++++++------- views/default/admin_plugin_integrations.pdt | 3 + views/default/css/styles.css | 9 - views/default/partial_progress_bar.pdt | 5 +- 19 files changed, 278 insertions(+), 141 deletions(-) diff --git a/views/default/admin_main.pdt b/views/default/admin_main.pdt index fe989c0..b7b34d2 100644 --- a/views/default/admin_main.pdt +++ b/views/default/admin_main.pdt @@ -1,3 +1,5 @@ + + Widget->create($this->_('AdminMain.index.boxtitle_extensions', true), ['i
Pagination->build(); ?> -
-
- -

_('AdminMain.index.extensions_no_results'); ?>

-
+
+ +

_('AdminMain.index.extensions_no_results'); ?>

diff --git a/views/default/admin_main_confirm.pdt b/views/default/admin_main_confirm.pdt index b584a0a..c48fafc 100644 --- a/views/default/admin_main_confirm.pdt +++ b/views/default/admin_main_confirm.pdt @@ -1,8 +1,11 @@ + + Widget->clear(); $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->setBodyWrapper(false); $this->Widget->create($this->_('AdminMain.index.boxtitle_extension_generator', true)); echo $progress_bar ?? null; diff --git a/views/default/admin_main_create.pdt b/views/default/admin_main_create.pdt index 35d4e07..9230935 100644 --- a/views/default/admin_main_create.pdt +++ b/views/default/admin_main_create.pdt @@ -1,4 +1,6 @@ - + +Widget->clear(); diff --git a/views/default/admin_main_general.pdt b/views/default/admin_main_general.pdt index 3afc61a..151e29f 100644 --- a/views/default/admin_main_general.pdt +++ b/views/default/admin_main_general.pdt @@ -1,8 +1,11 @@ + + Widget->clear(); $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->setBodyWrapper(false); $this->Widget->create($this->_('AdminMain.index.boxtitle_extension_generator', true)); echo $progress_bar ?? null; @@ -18,7 +21,7 @@ $this->Form->create(null, ['id' => 'general_extension_form', 'class' => 'disable -
+
_('AdminMain.general.type'); ?>
diff --git a/views/default/admin_merchant_basic.pdt b/views/default/admin_merchant_basic.pdt index 9b7c23e..3466fd2 100644 --- a/views/default/admin_merchant_basic.pdt +++ b/views/default/admin_merchant_basic.pdt @@ -1,8 +1,11 @@ + + Widget->clear(); $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->setBodyWrapper(false); $this->Widget->create($this->_('AdminMerchant.index.boxtitle_extension_generator', true), ['id' => 'admin_merchant_basic']); echo $progress_bar ?? null; diff --git a/views/default/admin_merchant_features.pdt b/views/default/admin_merchant_features.pdt index b93fcfa..c292467 100644 --- a/views/default/admin_merchant_features.pdt +++ b/views/default/admin_merchant_features.pdt @@ -1,8 +1,11 @@ + + Widget->clear(); $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->setBodyWrapper(false); $this->Widget->create($this->_('AdminMerchant.index.boxtitle_extension_generator', true), ['id' => 'admin_merchant_features']); echo $progress_bar ?? null; diff --git a/views/default/admin_merchant_fields.pdt b/views/default/admin_merchant_fields.pdt index 91e5efd..5804928 100644 --- a/views/default/admin_merchant_fields.pdt +++ b/views/default/admin_merchant_fields.pdt @@ -1,8 +1,11 @@ + + Widget->clear(); $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->setBodyWrapper(false); $this->Widget->create($this->_('AdminMerchant.index.boxtitle_extension_generator', true), ['id' => 'admin_merchant_fields']); echo $progress_bar ?? null; diff --git a/views/default/admin_module_basic.pdt b/views/default/admin_module_basic.pdt index 70462a9..567ce6b 100644 --- a/views/default/admin_module_basic.pdt +++ b/views/default/admin_module_basic.pdt @@ -1,8 +1,11 @@ + + Widget->clear(); $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->setBodyWrapper(false); $this->Widget->create($this->_('AdminModule.index.boxtitle_extension_generator', true), ['id' => 'admin_module_basic']); echo $progress_bar ?? null; diff --git a/views/default/admin_module_features.pdt b/views/default/admin_module_features.pdt index 6b8190d..93b5c19 100644 --- a/views/default/admin_module_features.pdt +++ b/views/default/admin_module_features.pdt @@ -1,8 +1,11 @@ + + Widget->clear(); $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->setBodyWrapper(false); $this->Widget->create($this->_('AdminModule.index.boxtitle_extension_generator', true), ['id' => 'admin_module_features']); echo $progress_bar ?? null; diff --git a/views/default/admin_module_fields.pdt b/views/default/admin_module_fields.pdt index 7436714..6ef234c 100644 --- a/views/default/admin_module_fields.pdt +++ b/views/default/admin_module_fields.pdt @@ -1,8 +1,11 @@ + + Widget->clear(); $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->setBodyWrapper(false); $this->Widget->create($this->_('AdminModule.index.boxtitle_extension_generator', true), ['id' => 'admin_module_fields']); echo $progress_bar ?? null; diff --git a/views/default/admin_nonmerchant_basic.pdt b/views/default/admin_nonmerchant_basic.pdt index 39c7f16..562bc78 100644 --- a/views/default/admin_nonmerchant_basic.pdt +++ b/views/default/admin_nonmerchant_basic.pdt @@ -1,8 +1,11 @@ + + Widget->clear(); $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->setBodyWrapper(false); $this->Widget->create($this->_('AdminNonmerchant.index.boxtitle_extension_generator', true), ['id' => 'admin_nonmerchant_basic']); echo $progress_bar ?? null; diff --git a/views/default/admin_nonmerchant_features.pdt b/views/default/admin_nonmerchant_features.pdt index 6ac6570..f557d9a 100644 --- a/views/default/admin_nonmerchant_features.pdt +++ b/views/default/admin_nonmerchant_features.pdt @@ -1,8 +1,11 @@ + + Widget->clear(); $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->setBodyWrapper(false); $this->Widget->create($this->_('AdminNonmerchant.index.boxtitle_extension_generator', true), ['id' => 'admin_nonmerchant_features']); echo $progress_bar ?? null; diff --git a/views/default/admin_nonmerchant_fields.pdt b/views/default/admin_nonmerchant_fields.pdt index b0613f1..f7cf4ef 100644 --- a/views/default/admin_nonmerchant_fields.pdt +++ b/views/default/admin_nonmerchant_fields.pdt @@ -1,8 +1,11 @@ + + Widget->clear(); $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->setBodyWrapper(false); $this->Widget->create($this->_('AdminNonmerchant.index.boxtitle_extension_generator', true), ['id' => 'admin_nonmerchant_fields']); echo $progress_bar ?? null; diff --git a/views/default/admin_plugin_basic.pdt b/views/default/admin_plugin_basic.pdt index d5c9773..59a04b9 100644 --- a/views/default/admin_plugin_basic.pdt +++ b/views/default/admin_plugin_basic.pdt @@ -1,8 +1,11 @@ + + Widget->clear(); $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->setBodyWrapper(false); $this->Widget->create($this->_('AdminPlugin.index.boxtitle_extension_generator', true), ['id' => 'admin_plugin_basic']); echo $progress_bar ?? null; diff --git a/views/default/admin_plugin_database.pdt b/views/default/admin_plugin_database.pdt index c29ca8a..1386e22 100644 --- a/views/default/admin_plugin_database.pdt +++ b/views/default/admin_plugin_database.pdt @@ -1,8 +1,11 @@ + + Widget->clear(); $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->setBodyWrapper(false); $this->Widget->create($this->_('AdminPlugin.index.boxtitle_extension_generator', true), ['id' => 'admin_plugin_database']); echo $progress_bar ?? null; diff --git a/views/default/admin_plugin_features.pdt b/views/default/admin_plugin_features.pdt index ae80edd..6f8a345 100644 --- a/views/default/admin_plugin_features.pdt +++ b/views/default/admin_plugin_features.pdt @@ -1,142 +1,241 @@ - Widget->clear(); - $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); - $this->Widget->create($this->_('AdminPlugin.index.boxtitle_extension_generator', true), ['id' => 'admin_plugin_features']); - - echo (isset($progress_bar) ? $progress_bar : null); - - $this->Form->create(); - ?> -
-

_('AdminPlugin.features.heading_service_tabs');?>

-
- - - - - - - - - - - - = 0 ? [] : ['disabled' => 'disabled']); - ?> - = 0 ? '' : ' style="display:none;"');?>> - - - - - - - -
_('AdminPlugin.features.method_name');?>_('AppController.tooltip.text');?>
_('AdminPlugin.features.tooltip_method_name');?>
_('AdminPlugin.features.label');?>_('AppController.tooltip.text');?>
_('AdminPlugin.features.tooltip_tab_label');?>
_('AdminPlugin.features.level');?>_('AppController.tooltip.text');?>
_('AdminPlugin.features.tooltip_level');?>
_('AdminPlugin.features.text_options');?>
Form->fieldText('service_tabs[method_name][]', (isset($vars['service_tabs']['method_name'][$i]) ? $vars['service_tabs']['method_name'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminPlugin.features.placeholder_method_name', true)], $disabled));?>Form->fieldText('service_tabs[label][]', (isset($vars['service_tabs']['label'][$i]) ? $vars['service_tabs']['label'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminPlugin.features.placeholder_tab_label', true)], $disabled));?>Form->fieldSelect('service_tabs[level][]', (isset($tab_levels) ? $tab_levels : null), (isset($vars['service_tabs']['level'][$i]) ? $vars['service_tabs']['level'][$i] : null), array_merge(['class' => 'stretch'], $disabled));?>_('AdminPlugin.features.text_remove');?>
-
-

_('AdminPlugin.features.heading_cron_tasks');?>

-
- - - - - - - - - - - - - - = 0 ? [] : ['disabled' => 'disabled']); - ?> - = 0 ? '' : ' style="display:none;"');?>> - - - - - - - - - -
_('AdminPlugin.features.name');?>_('AppController.tooltip.text');?>
_('AdminPlugin.features.tooltip_name');?>
_('AdminPlugin.features.label');?>_('AppController.tooltip.text');?>
_('AdminPlugin.features.tooltip_cron_label');?>
_('AdminPlugin.features.description');?>_('AppController.tooltip.text');?>
_('AdminPlugin.features.tooltip_description');?>
_('AdminPlugin.features.type');?>_('AppController.tooltip.text');?>
_('AdminPlugin.features.tooltip_type');?>
_('AdminPlugin.features.time');?>_('AppController.tooltip.text');?>
_('AdminPlugin.features.tooltip_time');?>
_('AdminPlugin.features.text_options');?>
Form->fieldText('cron_tasks[name][]', (isset($vars['cron_tasks']['name'][$i]) ? $vars['cron_tasks']['name'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminPlugin.features.placeholder_name', true)], $disabled));?>Form->fieldText('cron_tasks[label][]', (isset($vars['cron_tasks']['label'][$i]) ? $vars['cron_tasks']['label'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminPlugin.features.placeholder_cron_label', true)], $disabled));?>Form->fieldTextarea('cron_tasks[description][]', (isset($vars['cron_tasks']['description'][$i]) ? $vars['cron_tasks']['description'][$i] : null), array_merge(['class' => 'stretch'], $disabled));?>Form->fieldSelect('cron_tasks[type][]', (isset($task_types) ? $task_types : null), (isset($vars['cron_tasks']['type'][$i]) ? $vars['cron_tasks']['type'][$i] : null), array_merge(['class' => 'stretch'], $disabled));?>Form->fieldText('cron_tasks[time][]', (isset($vars['cron_tasks']['time'][$i]) ? $vars['cron_tasks']['time'][$i] : null), array_merge(['class' => 'stretch', 'placeholder' => $this->_('AdminPlugin.features.placeholder_time', true)], $disabled));?>_('AdminPlugin.features.text_remove');?>
-
-

_('AdminPlugin.features.heading_optional_functions');?>

-
-
+ + +Widget->clear(); +$this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->setBodyWrapper(false); +$this->Widget->create($this->_('AdminPlugin.index.boxtitle_extension_generator', true), ['id' => 'admin_plugin_features']); + +echo $progress_bar ?? null; + +$this->Form->create(null, ['class' => 'disable-on-submit']); +?> + +
+ +
+ _('AdminPlugin.features.heading_service_tabs'); ?> +
+ +
+ +
+ +
+ + + + + + + + + + $function_settings) { + $rows = 0; + if (!empty($vars['service_tabs']['method_name'])) { + $rows = count($vars['service_tabs']['method_name']); + } + for ($i = -1; $i < $rows; $i++) : + $disabled = ($i >= 0 ? [] : ['disabled' => 'disabled']); + $hidden = $i < 0 ? 'style="display:none;"' : ''; ?> -
- Form->fieldCheckbox('optional_functions[' . $optional_function . ']', 'true', (isset($vars['optional_functions']) ? (isset($vars['optional_functions'][$optional_function]) ? $vars['optional_functions'][$optional_function] : null) : $function_settings['enabled']) == 'true', ['class' => 'inline', 'id' => 'optional_functions[' . $optional_function . ']']); - $this->Form->label($optional_function, 'optional_functions[' . $optional_function . ']', ['class' => 'inline']); +
> + + + + + + + +
+ _('AdminPlugin.features.method_name'); ?> + + + _('AdminPlugin.features.label'); ?> + + + _('AdminPlugin.features.level'); ?> + + _('AdminPlugin.features.text_options'); ?>
+ Form->fieldText('service_tabs[method_name][]', $vars['service_tabs']['method_name'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminPlugin.features.placeholder_method_name', true)], $disabled)); ?> + + Form->fieldText('service_tabs[label][]', $vars['service_tabs']['label'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminPlugin.features.placeholder_tab_label', true)], $disabled)); ?> + + Form->fieldSelect('service_tabs[level][]', $tab_levels ?? [], $vars['service_tabs']['level'][$i] ?? null, array_merge(['class' => 'form-select form-select-sm'], $disabled)); ?> + + +
+
- if (!empty($function_settings['tooltip'])) { - ?> - _('AppController.tooltip.text');?>
Html->safe($function_settings['tooltip']) : null);?>
- -
+ +
+ _('AdminPlugin.features.heading_cron_tasks'); ?> +
+ +
+ +
+ +
+ + + + + + + + + + + + = 0 ? [] : ['disabled' => 'disabled']); + $hidden = $i < 0 ? 'style="display:none;"' : ''; ?> + > + + + + + + + + + +
+ _('AdminPlugin.features.name'); ?> + + + _('AdminPlugin.features.label'); ?> + + + _('AdminPlugin.features.description'); ?> + + + _('AdminPlugin.features.type'); ?> + + + _('AdminPlugin.features.time'); ?> + + _('AdminPlugin.features.text_options'); ?>
+ Form->fieldText('cron_tasks[name][]', $vars['cron_tasks']['name'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminPlugin.features.placeholder_name', true)], $disabled)); ?> + + Form->fieldText('cron_tasks[label][]', $vars['cron_tasks']['label'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminPlugin.features.placeholder_cron_label', true)], $disabled)); ?> + + Form->fieldTextarea('cron_tasks[description][]', $vars['cron_tasks']['description'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'rows' => 1], $disabled)); ?> + + Form->fieldSelect('cron_tasks[type][]', $task_types ?? [], $vars['cron_tasks']['type'][$i] ?? null, array_merge(['class' => 'form-select form-select-sm'], $disabled)); ?> + + Form->fieldText('cron_tasks[time][]', $vars['cron_tasks']['time'][$i] ?? null, array_merge(['class' => 'form-control form-control-sm', 'placeholder' => $this->_('AdminPlugin.features.placeholder_time', true)], $disabled)); ?> + + +
+
+ + +
+ _('AdminPlugin.features.heading_optional_functions'); ?> +
+ +
+ $function_settings) : ?> +
+
+ Form->fieldCheckbox('optional_functions[' . $optional_function . ']', 'true', $checked, ['id' => 'optional_functions_' . $optional_function, 'class' => 'form-check-input']); + ?> + + + +
+ +
+
-
- Form->fieldSubmit('submit', $this->_('AdminPlugin.features.confirm', true), ['class' => 'btn btn-primary pull-right']);?> -
-
- Form->end(); + - $this->Widget->end(); - ?> +Form->end(); +$this->Widget->end(); +?> + + \ No newline at end of file diff --git a/views/default/admin_plugin_integrations.pdt b/views/default/admin_plugin_integrations.pdt index d4a591d..be6fe3e 100644 --- a/views/default/admin_plugin_integrations.pdt +++ b/views/default/admin_plugin_integrations.pdt @@ -1,8 +1,11 @@ + + Widget->clear(); $this->Widget->setStyleSheet($this->view_dir . 'css/styles.css'); +$this->Widget->setBodyWrapper(false); $this->Widget->create($this->_('AdminPlugin.index.boxtitle_extension_generator', true), ['id' => 'admin_plugin_integrations']); echo $progress_bar ?? null; diff --git a/views/default/css/styles.css b/views/default/css/styles.css index f4550f0..676120d 100644 --- a/views/default/css/styles.css +++ b/views/default/css/styles.css @@ -85,15 +85,6 @@ } /* Form improvements */ -.form-section-header { - display: flex; - align-items: center; - font-weight: 600; - margin-bottom: 1rem; - padding-bottom: 0.5rem; - border-bottom: 1px solid var(--border-color, #dee2e6); -} - .form-section-header .bi { margin-right: 0.5rem; color: var(--accent-color, #0d6efd); diff --git a/views/default/partial_progress_bar.pdt b/views/default/partial_progress_bar.pdt index 9b2caf6..1a982e3 100644 --- a/views/default/partial_progress_bar.pdt +++ b/views/default/partial_progress_bar.pdt @@ -1,8 +1,10 @@ + + -
+
$node) : ?>
@@ -30,3 +32,4 @@ $step = 0; endforeach; ?>
+
From 158d90f7c9a5664862b3eea3a4a52e0fe0108bde Mon Sep 17 00:00:00 2001 From: Abdy Franco Date: Tue, 3 Feb 2026 12:13:52 -0600 Subject: [PATCH 3/4] Update config.json --- config.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config.json b/config.json index 6ceba82..f489b91 100644 --- a/config.json +++ b/config.json @@ -1,7 +1,8 @@ { - "version": "2.1.2", + "version": "3.0.0", "name": "ExtensionGeneratorPlugin.name", "description": "ExtensionGeneratorPlugin.description", + "icon": "bi bi-puzzle-fill", "authors": [ { "name": "Phillips Data, Inc.", From f4d8376565d93fbdf9715081d22a898bf8f97183 Mon Sep 17 00:00:00 2001 From: Abdy Franco Date: Tue, 3 Feb 2026 16:54:51 -0600 Subject: [PATCH 4/4] Update admin_main.pdt --- views/default/admin_main.pdt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/views/default/admin_main.pdt b/views/default/admin_main.pdt index b7b34d2..403872c 100644 --- a/views/default/admin_main.pdt +++ b/views/default/admin_main.pdt @@ -93,7 +93,15 @@ $this->Widget->create($this->_('AdminMain.index.boxtitle_extensions', true), ['i
- Pagination->build(); ?> + Pagination) && $this->Pagination->hasPages()) { + ?> + +