Nowa metoda basketUpdateCustomFields() w ShopBasketController — AJAX endpoint z walidacją required fields, przeliczaniem product_code (MD5 hash) i merge duplikatów. UI: przycisk "Edytuj personalizację" + formularz inline + JS. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
53 lines
2.7 KiB
PHP
53 lines
2.7 KiB
PHP
<? if ( $this -> custom_fields ) : ?>
|
|
<div class="custom-fields-display" data-product-code="<?= htmlspecialchars( $this->product_code ); ?>">
|
|
<? foreach ( $this -> custom_fields as $key => $val ) : ?>
|
|
<? $custom_field = ( new \Domain\Product\ProductRepository( $GLOBALS['mdb'] ) )->findCustomFieldCached( $key ); ?>
|
|
<? $field_type = !empty( $custom_field['type'] ) ? $custom_field['type'] : 'text'; ?>
|
|
|
|
<? if ( $field_type == 'text' ) : ?>
|
|
<div class="custom-field">
|
|
<div class="_name">
|
|
<?= htmlspecialchars( $custom_field['name'] ) . ':'; ?>
|
|
</div>
|
|
<div class="_text">
|
|
<?= nl2br( htmlspecialchars( $val ) );?>
|
|
</div>
|
|
</div>
|
|
<? elseif ( $field_type == 'image' && !empty( $val ) ) : ?>
|
|
<div class="custom-field">
|
|
<div class="_name">
|
|
<?= htmlspecialchars( $custom_field['name'] ) . ':'; ?>
|
|
</div>
|
|
<div class="_image">
|
|
<img src="<?= htmlspecialchars( $val );?>" alt="<?= htmlspecialchars( $custom_field['name'] );?>">
|
|
</div>
|
|
</div>
|
|
<? endif; ?>
|
|
<? endforeach; ?>
|
|
<a href="#" class="btn btn-sm btn-default btn-edit-custom-fields">Edytuj personalizację</a>
|
|
</div>
|
|
|
|
<div class="custom-fields-edit" data-product-code="<?= htmlspecialchars( $this->product_code ); ?>" style="display: none;">
|
|
<? foreach ( $this -> custom_fields as $key => $val ) : ?>
|
|
<? $custom_field = ( new \Domain\Product\ProductRepository( $GLOBALS['mdb'] ) )->findCustomFieldCached( $key ); ?>
|
|
<? $field_type = !empty( $custom_field['type'] ) ? $custom_field['type'] : 'text'; ?>
|
|
<? $is_required = !empty( $custom_field['is_required'] ) ? (int)$custom_field['is_required'] : 0; ?>
|
|
|
|
<div class="custom-field-edit-row" style="margin-bottom: 5px;">
|
|
<label>
|
|
<?= htmlspecialchars( $custom_field['name'] ); ?><?= $is_required ? ' <span style="color:red;">*</span>' : ''; ?>
|
|
</label>
|
|
<? if ( $field_type == 'text' ) : ?>
|
|
<input type="text" class="form-control form-control-sm" name="custom_field[<?= (int)$key; ?>]" value="<?= htmlspecialchars( $val ); ?>" <?= $is_required ? 'required' : ''; ?>>
|
|
<? elseif ( $field_type == 'image' ) : ?>
|
|
<input type="text" class="form-control form-control-sm" name="custom_field[<?= (int)$key; ?>]" value="<?= htmlspecialchars( $val ); ?>" placeholder="URL obrazka" <?= $is_required ? 'required' : ''; ?>>
|
|
<? endif; ?>
|
|
</div>
|
|
<? endforeach; ?>
|
|
<div style="margin-top: 5px;">
|
|
<a href="#" class="btn btn-sm btn-primary btn-save-custom-fields">Zapisz</a>
|
|
<a href="#" class="btn btn-sm btn-default btn-cancel-custom-fields">Anuluj</a>
|
|
</div>
|
|
</div>
|
|
<? endif; ?>
|