Subversion Repositories wpShopGermany4

Rev

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>