Rev 8394 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php
declare(strict_types=1);
/**
* Template für die Anzeige der Produktcodes
* @author: Daniel Schmitzer (daschmi@daschmi.de)
* @date: 24.04.23
* @time: 13:16
*/
namespace wpsg;
?>
<div class="general-panel-block">
<div class="general-panel-general">
<?php echo wpsg_drawForm_AdminboxStart(__('Productcodes', 'wpsg')); ?>
<?php if (intval($this->view['data']['id']) > 0) {
/** @var \wpsg_product $oProduct */
$oProduct = \wpsg_product::getInstance(intval($this->view['data']['id']));
$arData = [];
foreach (\wpsg_product::getProductCodeConfig() as $code_key => $code_data) {
$product_code = $oProduct->getMeta($code_key, false, '');
$arData[$code_key] = [
'label' => $code_data['label'],
'code_key' => $code_key,
'code' => trim($product_code),
'set' => trim($product_code) !== ''
];
}
?>
<div id="wpsg_mod_productcodes_app">
<template v-if="codeKeyNotSet.length > 0">
<div class="form-group form-group-sm has-feedback">
<label class="col-sm-6 control-label" for="metaean">Code hinzufügen</label>
<div class="col-sm-6">
<div class="wpsg_field_wrap">
<select class="form-control input-sm" v-model="add_code_key">
<option v-for="(code_key, i) of codeKeyNotSet" :value="code_key">{{data[code_key].label}}</option>
</select>
<a @click.stop.prevent="add()" href="#" class="glyphicon glyphicon glyphicon-plus form-control-feedback" aria-hidden="true" style="pointer-events: auto;"></a>
</div>
</div>
<div class="clearfix wpsg_clear"></div>
</div>
<hr />
</template>
<div class="code_wrap">
<template v-for="(code, i) of data">
<div class="form-group form-group-sm has-feedback" v-if="code.set === true">
<label class="col-sm-6 control-label" for="metaean">{{code.label}}</label>
<div class="col-sm-6">
<div class="wpsg_field_wrap">
<input type="text" class="form-control input-sm" :value="code.code" :name="'meta[' + code.code_key + ']'" />
<a @click.stop.prevent="remove(code.code_key)" href="#" class="glyphicon glyphicon glyphicon-trash form-control-feedback" aria-hidden="true" style="pointer-events: auto;"></a>
</div>
</div>
<div class="clearfix wpsg_clear"></div>
</div>
<input v-else type="hidden" value="" :name="'meta[' + code.code_key + ']'" />
</template>
</div>
</div>
<script type="module">
import { ref, createApp, onMounted, computed } from '<?php echo plugin_dir_url(__FILE__); ?>/../../js/vue.esm-browser.js';
document.addEventListener('DOMContentLoaded', function() {
const app = createApp({
setup() {
const data = ref(<?php echo json_encode($arData); ?>);
const add_code_key = ref(undefined);
const codeKeyNotSet = computed(() => {
let r = [];
for (let c of Object.values(data.value)) {
if (c.set !== true) r.push(c.code_key);
}
return r;
});
const add = () => {
if (add_code_key.value !== undefined && codeKeyNotSet.value.includes(add_code_key.value)) {
data.value[add_code_key.value].set = true;
}
};
const remove = (code_key) => {
data.value[code_key].set = false;
};
return {
data, add_code_key,
codeKeyNotSet,
add, remove
};
}
}).mount('#wpsg_mod_productcodes_app');
});
</script>
<br />
<p class="wpsg_hinweis">
<?php if (\wpsg_ShopController::getShop()->hasMod('wpsg_mod_productvariants')) { ?>
Ist das Produkt ein Variantenprodukt, können die Codes unter Produktvarianten für einzelne Variationen überschrieben werden.<br />
<?php } ?>
Änderungen müssen mit speichern bestätigt werden.
</p>
<?php } else { ?>
<p><?php echo __('Bitte Produkt erst speichern.', 'wpsg'); ?></p>
<?php } ?>
<?php echo wpsg_drawForm_AdminboxEnd(); ?>
</div>
</div>