mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-29 08:00:28 +01:00
90 lines
2.7 KiB
Vue
90 lines
2.7 KiB
Vue
<!--
|
|
SPDX-FileCopyrightText: 2023-2024 Andreas Palm
|
|
|
|
SPDX-License-Identifier: LicenseRef-EGPL-3.1
|
|
-->
|
|
|
|
<script setup>
|
|
import {ref, onMounted} from "vue";
|
|
import axios from "axios";
|
|
import Dialog from "primevue/dialog";
|
|
import Button from "primevue/button";
|
|
import Fluid from "primevue/fluid";
|
|
import InputText from "primevue/inputtext";
|
|
import Select from "primevue/select";
|
|
import {AlertErrorHandler} from "@res/js/ajaxErrorHandler";
|
|
|
|
|
|
const props = defineProps({
|
|
type: String,
|
|
id: String,
|
|
});
|
|
const emit = defineEmits(['save', 'close']);
|
|
|
|
const model = ref({});
|
|
const languages = ref([]);
|
|
|
|
onMounted(async () => {
|
|
if (props.id > 0) {
|
|
const url = 'index.php?module=matrixprodukt&action=translation&cmd=edit';
|
|
model.value = await axios.get(url, {
|
|
params: props
|
|
}).then(response => response.data)
|
|
}
|
|
axios.get('index.php',
|
|
{
|
|
params: {
|
|
module: 'ajax',
|
|
action: 'filter',
|
|
filtername: 'activelanguages',
|
|
object: true
|
|
}
|
|
}).then(response => {
|
|
languages.value = response.data;
|
|
});
|
|
})
|
|
|
|
async function save() {
|
|
if (!parseInt(props.id) > 0)
|
|
model.value.id = 0;
|
|
const url = 'index.php?module=matrixprodukt&action=translation&cmd=save';
|
|
await axios.post(url, {...props, ...model.value})
|
|
.catch(AlertErrorHandler)
|
|
.then(() => {emit('save')});
|
|
}
|
|
|
|
function ready() {
|
|
if (model.value.nameExternalFrom && !model.value.nameExternalTo)
|
|
return false;
|
|
return model.value.languageTo && model.value.nameFrom && model.value.nameTo;
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<Dialog visible modal header="Übersetzung anlegen/bearbeiten" style="width: 500px" @update:visible="emit('close')">
|
|
<Fluid>
|
|
<div class="grid gap-1" style="grid-template-columns: 25% 75%">
|
|
<label for="matrixProduct_nameFrom">DE Name:</label>
|
|
<InputText v-model="model.nameFrom" required autofocus />
|
|
<label for="matrixProduct_nameExternalFrom">DE Name Extern:</label>
|
|
<InputText v-model="model.nameExternalFrom" />
|
|
<label for="matrixProduct_languageTo">Sprache:</label>
|
|
<Select
|
|
v-model="model.languageTo"
|
|
:options="languages"
|
|
option-label="bezeichnung_de"
|
|
option-value="iso"
|
|
/>
|
|
<label for="matrixProduct_nameTo">Übersetzung Name:</label>
|
|
<InputText v-model="model.nameTo" required />
|
|
<label for="matrixProduct_nameTo">Übersetzung Name Extern:</label>
|
|
<InputText v-model="model.nameExternalTo" :required="model.nameExternalFrom" />
|
|
</div>
|
|
</Fluid>
|
|
<template #footer>
|
|
<Button label="ABBRECHEN" @click="emit('close')" />
|
|
<Button label="SPEICHERN" @click="save" :disabled="!ready()"/>
|
|
</template>
|
|
</Dialog>
|
|
</template>
|