checksystem paabgabetyp default values for upload_allowed, benotbar & aktiv only on first checksystem run by checking availability of qgate2 typ; english phrasen for betreuerart, paabgabetyp & projekttyp; disable new termin for zweitbetreuer (WIP disabling serientermin); QGate1/2 Status column -> text only for now;

This commit is contained in:
Johann Hoffmann
2025-12-12 12:51:07 +01:00
parent eade9b7beb
commit 635da9f8d9
7 changed files with 706 additions and 94 deletions
@@ -122,6 +122,7 @@ class Projektarbeit_model extends DB_Model
person_id as bperson_id,
projektarbeit_id,
lehre.tbl_projekttyp.bezeichnung as projekttypbezeichnung,
lehre.tbl_projekttyp.projekttyp_kurzbz as projekttypkurzbz,
lehre.tbl_lehreinheit.studiensemester_kurzbz,
lehre.tbl_lehrveranstaltung.studiengang_kz,
public.tbl_studiengang.kurzbzlang,
@@ -48,7 +48,8 @@ export const AbgabeMitarbeiterDetail = {
speedDialItems: [{
label: Vue.computed(() => this.$p.t('abgabetool/c4newAbgabetermin')),
icon: "fa fa-plus",
command: this.openCreateNewAbgabeModal
command: this.openCreateNewAbgabeModal,
disabled: Vue.computed(() => this.projektarbeit?.betreuertyp_kurzbz == 'Zweitbegutachter')
},
{
label: Vue.computed(() => this.$p.t('abgabetool/c4benoten')),
@@ -98,7 +99,7 @@ export const AbgabeMitarbeiterDetail = {
return [closestIndex, ...additional]
},
getPlaceholderTermin(termin) {
return termin?.bezeichnung?.bezeichnung ?? this.$p.t('abgabetool/abgabetypPlaceholder')
return termin?.bezeichnung ? this.$p.t('abgabetool/c4paatyp' + termin.paabgabetyp_kurzbz) : this.$p.t('abgabetool/abgabetypPlaceholder')
},
saveTermin(termin) {
const paabgabe_id = termin.paabgabe_id
@@ -345,8 +346,8 @@ export const AbgabeMitarbeiterDetail = {
getOptionLabelSprache(option) {
return option.sprache
},
getOptionLabelAbgabetyp(option){
return option.bezeichnung
getOptionLabelAbgabetyp(option) {
return this.$p.t('abgabetool/c4paatyp' + option.paabgabetyp_kurzbz)
},
getOptionDisabled(option) {
return !option.aktiv
@@ -406,14 +407,6 @@ export const AbgabeMitarbeiterDetail = {
return `${day}.${month}.${year}`
},
getAccTabHeaderForTermin(termin) {
let tabTitle = ''
const datumFormatted = this.formatDate(termin.datum)
tabTitle += termin.bezeichnung?.bezeichnung + ' ' + datumFormatted
return tabTitle
},
openCreateNewAbgabeModal() {
if(!this.newTermin) {
const typ = this.abgabeTypeOptions.find(opt => opt.paabgabetyp_kurzbz === 'zwischen')
@@ -433,7 +426,6 @@ export const AbgabeMitarbeiterDetail = {
'insertvon': this.viewData?.uid ?? ''
}
}
console.log(this.$refs.modalContainerCreateNewAbgabe)
this.$refs.modalContainerCreateNewAbgabe.show()
},
validateTermin(termin) {
@@ -646,7 +638,7 @@ export const AbgabeMitarbeiterDetail = {
class="bootstrap-prompt"
dialogClass="bordered-modal modal-lg"
:backdrop="true"
@hideBsModal="console.log('hideBsModal'); showAutomagicModalPhrase=false;"
@hideBsModal="showAutomagicModalPhrase=false;"
>
<template v-slot:title>
<div>
@@ -742,7 +734,8 @@ export const AbgabeMitarbeiterDetail = {
</div>
<div class="row" style="margin-bottom: 12px;">
<div class="col-auto">
<button type="button" class="btn btn-primary" @click="openCreateNewAbgabeModal">
<!-- TODO : tooltip why this button is disabled as zweitbegutachter-->
<button type="button" :disabled="projektarbeit?.betreuerart_kurzbz == 'Zweitbegutachter'" class="btn btn-primary" @click="openCreateNewAbgabeModal">
<i class="fa-solid fa-plus"></i>
{{$capitalize( $p.t('abgabetool/c4newAbgabetermin') )}}
</button>
@@ -769,7 +762,7 @@ export const AbgabeMitarbeiterDetail = {
<i v-else-if="getDateStyleClass(termin) == 'beurteilungerforderlich'" v-tooltip.right="getTooltipBeurteilungerforderlich" class="fa-solid fa-list-check"></i>
</div>
<div class="col-auto text-start" style="min-width: max(150px, 20%); max-width: min(300px, 30%); transform: translateX(-30px)">
<span>{{ termin?.bezeichnung?.bezeichnung }}</span>
<span>{{ termin ? $p.t('abgabetool/c4paatyp' + termin.paabgabetyp_kurzbz) : '' }}</span>
</div>
<div class="col-auto text-start" style="min-width: 100px; transform: translateX(-30px)">
<span>{{ formatDate(termin.datum) }}</span>
@@ -181,14 +181,6 @@ export const AbgabeStudentDetail = {
const noteOpt = this.notenOptions.find(opt => opt.note == termin.note)
return noteOpt ? noteOpt.bezeichnung : ''
},
getAccTabHeaderForTermin(termin) {
let tabTitle = ''
const datumFormatted = this.formatDate(termin.datum)
tabTitle += termin.bezeichnung + ' ' + datumFormatted
return tabTitle
}
},
watch: {
projektarbeit(newVal) {
@@ -331,7 +323,7 @@ export const AbgabeStudentDetail = {
<h5>{{$capitalize( $p.t('abgabetool/c4abgabeStudentenbereich') )}}</h5>
<div class="row">
<p> {{projektarbeit?.betreuer}}</p>
<p> {{projektarbeit ? $p.t('abgabetool/c4betrart' + projektarbeit.betreuerart_kurzbz) + ' ' + projektarbeit.betreuer : ''}}</p>
<p> {{projektarbeit?.titel}}</p>
</div>
@@ -348,8 +340,8 @@ export const AbgabeStudentDetail = {
<i v-else-if="termin.dateStyle == 'abgegeben'" v-tooltip.right="getTooltipAbgegeben" class="fa-solid fa-check"></i>
<i v-else-if="termin.dateStyle == 'beurteilungerforderlich'" v-tooltip.right="getTooltipBeurteilungerforderlich" class="fa-solid fa-list-check"></i>
</div>
<div class="col-auto text-start pl-2 pr-0 pt-0 pb-0" style="min-width: max(120px, 20%); max-width: min(300px, 30%); transform: translateX(-30px)">
<span>{{ termin?.bezeichnung }}</span>
<div class="col-auto text-start pl-2 pr-0 pt-0 pb-0" style="min-width: min(300px, 30%); max-width: min(300px, 30%); transform: translateX(-30px)">
<span>{{ termin ? $p.t('abgabetool/c4paatyp' + termin.paabgabetyp_kurzbz) : '' }}</span>
</div>
<div class="col-auto text-start p-0" style="min-width: max(80px, 15%); transform: translateX(-30px)">
<span>{{ formatDate(termin.datum) }}</span>
@@ -419,7 +411,7 @@ export const AbgabeStudentDetail = {
<div class="row mt-2">
<div class="col-12 col-md-3 fw-bold align-content-center">{{$capitalize( $p.t('abgabetool/c4abgabetyp') )}}</div>
<div class="col-12 col-md-9">
{{ termin.bezeichnung }}
{{ termin ? $p.t('abgabetool/c4paatyp' + termin.paabgabetyp_kurzbz) : '' }}
</div>
</div>
@@ -111,7 +111,6 @@ export const AbgabetoolAssistenz = {
selectableCheck: this.selectionCheck,
rowHeight: 40,
renderVerticalBuffer: 2000,
responsiveLayout: true,
columns: [
{
field: 'rowSelection',
@@ -125,26 +124,24 @@ export const AbgabetoolAssistenz = {
frozen: true,
width: 40
},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4details'))), field: 'details', formatter: this.formAction, tooltip:false, responsive: 1, minWidth: 150},
// {title: 'pa_id', field: 'projektarbeit_id', visible: true},
// {title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4details'))), field: 'details', formatter: this.detailFormatter, widthGrow: 1,responsive:0, tooltip: false},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4personenkennzeichen'))), headerFilter: true, field: 'pkz', formatter: this.pkzTextFormatter,responsive:0, widthGrow: 1, tooltip: false},
// {title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4termineTimeLine'))), headerFilter: true, field: 'abgabetermine',responsive:2, formatter: this.timelineFormatter, widthGrow: 1, tooltip: false},
// {title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4kontakt'))), field: 'mail', formatter: this.mailFormatter, visible: false, widthGrow: 1, tooltip: false},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4vorname'))), field: 'student_vorname', headerFilter: true,responsive:2, formatter: this.centeredTextFormatter,widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4nachname'))), field: 'student_nachname', headerFilter: true,responsive:2, formatter: this.centeredTextFormatter, widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4studstatus'))), field: 'studienstatus', headerFilter: true,responsive:2, formatter: this.centeredTextFormatter,widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4orgform'))), field: 'orgform', headerFilter: true,responsive:2, formatter: this.centeredTextFormatter,widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4projekttyp'))), field: 'projekttyp_kurzbz', responsive:3, formatter: this.centeredTextFormatter, widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4stg'))), field: 'stg', headerFilter: true, responsive:3, formatter: this.centeredTextFormatter, widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4details'))), field: 'details', formatter: this.formAction, tooltip:false, minWidth: 150},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4personenkennzeichen'))), headerFilter: true, field: 'pkz', formatter: this.pkzTextFormatter, widthGrow: 1, tooltip: false},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4vorname'))), field: 'student_vorname', headerFilter: true, formatter: this.centeredTextFormatter,widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4nachname'))), field: 'student_nachname', headerFilter: true, formatter: this.centeredTextFormatter, widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4studstatus'))), field: 'studienstatus', headerFilter: true, formatter: this.centeredTextFormatter,widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4orgform'))), field: 'orgform', headerFilter: true, formatter: this.centeredTextFormatter,widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4projekttyp'))), field: 'projekttyp_kurzbz', formatter: this.centeredTextFormatter, widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4stg'))), field: 'stg', headerFilter: true, formatter: this.centeredTextFormatter, widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4note'))), field: 'note_bez', headerFilter: true,
responsive:3, formatter: this.centeredTextFormatter, widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4sem'))), field: 'studiensemester_kurzbz', headerFilter: true, responsive:2,formatter: this.centeredTextFormatter, widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4titel'))), field: 'titel', headerFilter: true, responsive:3, formatter: this.centeredTextFormatter, widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4erstbetreuer'))), field: 'erstbetreuer', headerFilter: true, responsive:3,formatter: this.centeredTextFormatter, widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4zweitbetreuer'))), field: 'zweitbetreuer', headerFilter: true, responsive:3,formatter: this.centeredTextFormatter, widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4prevAbgabetermin'))), headerFilter: true, field: 'prevTermin', responsive:4, formatter: this.abgabterminFormatter, widthGrow: 1, width: 220, tooltip: false},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4nextAbgabetermin'))), headerFilter: true, field: 'nextTermin', responsive:4, formatter: this.abgabterminFormatter, widthGrow: 1, width: 220, tooltip: false},
formatter: this.centeredTextFormatter, widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4sem'))), field: 'studiensemester_kurzbz', headerFilter: true, formatter: this.centeredTextFormatter, widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4titel'))), field: 'titel', headerFilter: true, formatter: this.centeredTextFormatter, widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4erstbetreuer'))), field: 'erstbetreuer', headerFilter: true, formatter: this.centeredTextFormatter, widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4zweitbetreuer'))), field: 'zweitbetreuer', headerFilter: true, formatter: this.centeredTextFormatter, widthGrow: 1},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4prevAbgabetermin'))), headerFilter: true, field: 'prevTermin', formatter: this.abgabterminFormatter, widthGrow: 1, width: 220, tooltip: false},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4nextAbgabetermin'))), headerFilter: true, field: 'nextTermin', formatter: this.abgabterminFormatter, widthGrow: 1, width: 220, tooltip: false},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4qgate1Status'))), headerFilter: true, field: 'qgate1Status', formatter: this.centeredTextFormatter, widthGrow: 1, width: 220, tooltip: false},
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4qgate2Status'))), headerFilter: true, field: 'qgate2Status', formatter: this.centeredTextFormatter, widthGrow: 1, width: 220, tooltip: false},
],
persistence: false,
persistenceID: "abgabetool_2025_12"
@@ -159,13 +156,79 @@ export const AbgabetoolAssistenz = {
]};
},
methods: {
checkQualityGateStatus(projekt) {
// TODO: might refine the representation of these states and maybe refactor code a little
const qgate1Termine = []
const qgate2Termine = []
projekt.qgate1Status = this.$p.t('abgabetool/c4keinTerminVorhanden')// 'Kein Termin vorhanden'
projekt.qgate1StatusRank = 0
projekt.qgate2Status = this.$p.t('abgabetool/c4keinTerminVorhanden')
projekt.qgate2StatusRank = 0
projekt.abgabetermine.forEach(termin => {
if(termin.paabgabetyp_kurzbz == 'qualgate1') qgate1Termine.push(termin)
if(termin.paabgabetyp_kurzbz == 'qualgate2') qgate2Termine.push(termin)
})
// calculate qgateStatusRank and display the highest order status rank of all quality gate termine until one
// counts as passed, which is just a positive note no matter if anything has been uploaded
// reuse luxon calculated diffMs (termin.datum in relation to today) from previous datestyle check
qgate1Termine.forEach(qgate => {
if(qgate.note != null && projekt.qgate1StatusRank <= 5) {
const noteOpt = this.notenOptions.find(opt => opt.note == qgate.note)
if(noteOpt.positiv) {
projekt.qgate1Status = this.$p.t('abgabetool/c4positivBenotet')
projekt.qgate1StatusRank = 5
} else {
projekt.qgate1Status = this.$p.t('abgabetool/c4negativBenotet')
projekt.qgate1StatusRank = 4
}
} else if (qgate.note == null && projekt.qgate1StatusRank <= 3) {
projekt.qgate1Status = this.$p.t('abgabetool/c4notYetGraded')
projekt.qgate1StatusRank = 3
} else if(qgate.upload_allowed == true && qgate.abgabedatum == null && projekt.qgate1StatusRank <= 2) {
projekt.qgate1Status = this.$p.t('abgabetool/c4notSubmitted')
projekt.qgate1StatusRank = 2
} else if (qgate.upload_allowed == false && diffMs <= 0 && projekt.qgate1StatusRank <= 1) {
projekt.qgate1Status = this.$p.t('abgabetool/c4notHappenedYet')
projekt.qgate1StatusRank = 1
}
})
qgate2Termine.forEach(qgate => {
if(qgate.note != null && projekt.qgate1StatusRank <= 5) {
const noteOpt = this.notenOptions.find(opt => opt.note == qgate.note)
if(noteOpt.positiv) {
projekt.qgate2Status = this.$p.t('abgabetool/c4positivBenotet')
projekt.qgate2StatusRank = 5
} else {
projekt.qgate2Status = this.$p.t('abgabetool/c4negativBenotet')
projekt.qgate2StatusRank = 4
}
} else if (qgate.note == null && projekt.qgate2StatusRank <= 3) {
projekt.qgate2Status = this.$p.t('abgabetool/c4notYetGraded')
projekt.qgate2StatusRank = 3
} else if(qgate.upload_allowed == true && qgate.abgabedatum == null && projekt.qgate2StatusRank <= 2) {
projekt.qgate2Status = this.$p.t('abgabetool/c4notSubmitted')
projekt.qgate2StatusRank = 2
} else if (qgate.upload_allowed == false && diffMs <= 0 && projekt.qgate2StatusRank <= 1) {
projekt.qgate2Status = this.$p.t('abgabetool/c4notHappenedYet')
projekt.qgate2StatusRank = 1
}
})
},
getItemBezeichnung(item){
if(!item.bezeichnung) return ''
return item?.bezeichnung?.bezeichnung ?? item?.bezeichnung
},
getItemNote(item) {
// note can be just a number if it is coming from backend
// if note was just set it is a note option
if(!item?.note) return ''
if(item.note?.bezeichnung) return item.note.bezeichnung
const notenOption = this.notenOptions.find(note => note.note == item.note)
if(!notenOption) return item.note
@@ -188,8 +251,8 @@ export const AbgabetoolAssistenz = {
// TODO: maybe check if existing synergy really works with many filters
const existing = table.getFilters().filter(f => f.field != 'studiensemester_kurzbz');
const compVal = e.value.studiensemester_kurzbz == 'Alle' ? '' : e.value.studiensemester_kurzbz
const compType = e.value.studiensemester_kurzbz == 'Alle' ? '!=' : '='
const compVal = e.value.studiensemester_kurzbz == this.$p.t('abgabetool/c4all') ? '' : e.value.studiensemester_kurzbz
const compType = e.value.studiensemester_kurzbz == this.$p.t('abgabetool/c4all') ? '!=' : '='
const newFilter = { field: "studiensemester_kurzbz", type: compType, value: compVal };
// merge and reapply
@@ -221,6 +284,9 @@ export const AbgabetoolAssistenz = {
}
}
})
// seperate check for quality gates
this.checkQualityGateStatus(projekt)
},
loadState() {
return JSON.parse(localStorage.getItem(this.abgabeTableOptions.persistenceID) || "null");
@@ -283,7 +349,7 @@ export const AbgabetoolAssistenz = {
});
const saved = this.loadState();
table.on("renderComplete", () => {
if(!this.stateRestored) {
@@ -294,12 +360,8 @@ export const AbgabetoolAssistenz = {
visible: col.visible,
// add more if needed, but keep it simple
}));
const safeLayout = layout.filter(col =>
col.field && !["rowSelection", "rowHandle", "rowNum", "zweitbetreuer"].includes(col.field)
);
table.setColumnLayout(safeLayout);
table.setColumnLayout(layout);
this.colLayoutRestored = true;
}
@@ -476,7 +538,6 @@ export const AbgabetoolAssistenz = {
projekt.prevTermin = null;
projekt.nextTermin = null;
this.checkAbgabetermineProjektarbeit(projekt)
if(this.notenOptions && projekt.note) {
@@ -796,7 +857,7 @@ export const AbgabetoolAssistenz = {
this.$api.call(ApiStudiensemester.getAllStudiensemesterAndAktOrNext()).then((res) => {
this.allSem = res.data[0]
const all = {studiensemester_kurzbz: 'Alle'}
const all = {studiensemester_kurzbz: this.$p.t('abgabetool/c4all')}
this.curSem = all // res.data[1]
this.studiensemesterOptions = [all, ...this.allSem]
@@ -213,7 +213,7 @@ export const AbgabetoolStudent = {
}
},
buildBetreuer(abgabe) {
return abgabe.betreuerart_beschreibung + ': ' + (abgabe.btitelpre ? abgabe.btitelpre + ' ' : '') + abgabe.bvorname + ' ' + abgabe.bnachname + (abgabe.btitelpost ? ' ' + abgabe.btitelpost : '')
return (abgabe.btitelpre ? abgabe.btitelpre + ' ' : '') + abgabe.bvorname + ' ' + abgabe.bnachname + (abgabe.btitelpost ? ' ' + abgabe.btitelpost : '')
},
async setupData(data){
// this.projektarbeiten = data[0]
@@ -224,7 +224,6 @@ export const AbgabetoolStudent = {
this.projektarbeiten = projektarbeiten.map(projekt => {
let mode = 'detailTermine'
return {
...projekt,
details: {
@@ -395,7 +394,7 @@ export const AbgabetoolStudent = {
<div class="row mt-2">
<div class="col-4 col-md-3 fw-bold">{{$capitalize( $p.t('abgabetool/c4betreuer') )}}</div>
<div class="col-8 col-md-9">
{{ projektarbeit.betreuer }}
{{ projektarbeit.betreuerart_kurzbz ? $p.t('abgabetool/c4betrart' + projektarbeit.betreuerart_kurzbz) : '' }}
</div>
</div>
<div class="row mt-2">
@@ -405,9 +404,9 @@ export const AbgabetoolStudent = {
</div>
</div>
<div v-if="projektarbeit.zweitbetreuer_person_id || projektarbeit.zweitbetreuer" class="row mt-2">
<div class="col-4 col-md-3 fw-bold">{{ projektarbeit.zweitbetreuer_betreuerart_kurzbz}}</div>
<div class="col-4 col-md-3 fw-bold">{{ projektarbeit.zweitbetreuer_betreuerart_kurzbz ? $p.t('abgabetool/c4betrart' + projektarbeit.zweitbetreuer_betreuerart_kurzbz) : '' }}</div>
<div class="col-8 col-md-9">
{{ projektarbeit.zweitbetreuer_betreuerart_beschreibung}}: {{ projektarbeit.zweitbetreuer?.first }}
{{ projektarbeit.zweitbetreuer?.first }}
</div>
</div>
<div class="row mt-2">
@@ -63,9 +63,9 @@ if($result = $db->db_query("SELECT 1 FROM campus.tbl_paabgabetyp WHERE paabgabet
}
// set new cols for zwischenabgabe
if($result = $db->db_query("SELECT 1 FROM campus.tbl_paabgabetyp WHERE paabgabetyp_kurzbz='zwischen'"))
if($result = $db->db_query("SELECT 1 FROM campus.tbl_paabgabetyp WHERE paabgabetyp_kurzbz='qualgate2'"))
{
if($db->db_num_rows($result) === 1)
if($db->db_num_rows($result) === 0)
{
$qry = "UPDATE campus.tbl_paabgabetyp
SET benotbar = false,
@@ -81,9 +81,9 @@ if($result = $db->db_query("SELECT 1 FROM campus.tbl_paabgabetyp WHERE paabgabet
}
// set new cols for note
if($result = $db->db_query("SELECT 1 FROM campus.tbl_paabgabetyp WHERE paabgabetyp_kurzbz='note'"))
if($result = $db->db_query("SELECT 1 FROM campus.tbl_paabgabetyp WHERE paabgabetyp_kurzbz='qualgate2'"))
{
if($db->db_num_rows($result) === 1)
if($db->db_num_rows($result) === 0)
{
$qry = "UPDATE campus.tbl_paabgabetyp
SET benotbar = false,
@@ -99,9 +99,9 @@ if($result = $db->db_query("SELECT 1 FROM campus.tbl_paabgabetyp WHERE paabgabet
}
// set new cols for abstract / entwurf
if($result = $db->db_query("SELECT 1 FROM campus.tbl_paabgabetyp WHERE paabgabetyp_kurzbz='abstract'"))
if($result = $db->db_query("SELECT 1 FROM campus.tbl_paabgabetyp WHERE paabgabetyp_kurzbz='qualgate2'"))
{
if($db->db_num_rows($result) === 1)
if($db->db_num_rows($result) === 0)
{
$qry = "UPDATE campus.tbl_paabgabetyp
SET benotbar = false,
@@ -117,9 +117,9 @@ if($result = $db->db_query("SELECT 1 FROM campus.tbl_paabgabetyp WHERE paabgabet
}
// set new cols for endabgabe / end
if($result = $db->db_query("SELECT 1 FROM campus.tbl_paabgabetyp WHERE paabgabetyp_kurzbz='end'"))
if($result = $db->db_query("SELECT 1 FROM campus.tbl_paabgabetyp WHERE paabgabetyp_kurzbz='qualgate2'"))
{
if($db->db_num_rows($result) === 1)
if($db->db_num_rows($result) === 0)
{
$qry = "UPDATE campus.tbl_paabgabetyp
SET benotbar = false,
@@ -135,9 +135,9 @@ if($result = $db->db_query("SELECT 1 FROM campus.tbl_paabgabetyp WHERE paabgabet
}
// set new cols for endabgabe im sekretariat / enda
if($result = $db->db_query("SELECT 1 FROM campus.tbl_paabgabetyp WHERE paabgabetyp_kurzbz='enda'"))
if($result = $db->db_query("SELECT 1 FROM campus.tbl_paabgabetyp WHERE paabgabetyp_kurzbz='qualgate2'"))
{
if($db->db_num_rows($result) === 1)
if($db->db_num_rows($result) === 0)
{
$qry = "UPDATE campus.tbl_paabgabetyp
SET benotbar = false,
+586 -20
View File
@@ -41091,6 +41091,26 @@ array(
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4all',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Alle",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'All',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
@@ -43857,26 +43877,6 @@ array(
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4plagiatcheck_link',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "zur Plagiatsprüfung",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Plagiarism check',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
@@ -45028,6 +45028,572 @@ array(
)
)
),
// PAABGABETYP PHRASEN BEGIN
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4paatypqualgate1',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Quality Gate 1',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Quality Gate 1",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4paatypqualgate2',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Quality Gate 2',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Quality Gate 2",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4paatypzwischen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Zwischenabgabe',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Interim submission",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4paatypnote',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Benotung',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Grading",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4paatypabstract',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Entwurf',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Design",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4paatypend',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Endupload',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Final submission",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4paatypenda',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Endabgabe im Sekretariat',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Final submission in the administrative office",
'description' => '',
'insertvon' => 'system'
)
)
),
// PAABGABETYP PHRASEN END
// PROJEKTTYP PHRASEN BEGIN
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4projtypBachelor',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Bachelorarbeit',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Bachelor's thesis",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4projtypProjekt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Projektarbeit',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Project work",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4projtypPraktikum',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Praktikum',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Internship",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4projtypPraxis',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Praxissemester',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Practical semester",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4projtypDiplom',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Masterarbeit',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Master's thesis",
'description' => '',
'insertvon' => 'system'
)
)
),
// PROJEKTTYP PHRASEN END
// BETREUERART PHRASEN BEGIN
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4betrartBegutachter',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'BegutachterIn Bachelorarbeit',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Reviewer bachelor's thesis",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4betrartErstbetreuer',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Erstbetreuer einer Diplomarbeit',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "First reviewer of a master's thesis",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4betrartErstbegutachter',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => '1. BegutachterIn Masterarbeit',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "1. reviewer master's thesis",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4betrartZweitbegutachter',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => '2. BegutachterIn Masterarbeit',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "2. reviewer master's thesis",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4betrartzweitbetreuer',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Zweitbetreuer einer Diplomarbeit',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Second reviewer of a master's thesis",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4betrartBetreuer',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'BetreuerIn Berufspraktikum oder Projektarbeit',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Reviewer of an internship or project work",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4betrartSenatsvorsitz',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Vorsitz Prüfungssenat',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Chair of examination board",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4betrartSenatsmitglied',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Mitglied Prüfungssenat',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Member of examination board",
'description' => '',
'insertvon' => 'system'
)
)
),
// BETREUERART PHRASEN END
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4qgate1Status',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Status QG1',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Status QG1",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4qgate2Status',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Status QG2',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Status QG2",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4keinTerminVorhanden',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Kein Termin vorhanden',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "No Deadline found",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4positivBenotet',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Positiv Benotet!',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Graded positive!",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4negativBenotet',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Negativ Benotet!',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Graded negative!",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4notYetGraded',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Noch nicht beurteilt',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Not graded yet",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4notSubmitted',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Noch nicht abgegeben',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Not submitted yet",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abgabetool',
'phrase' => 'c4notHappenedYet',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Noch nicht stattgefunden',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Not happened yet",
'description' => '',
'insertvon' => 'system'
)
)
),
// ABGABETOOL PHRASEN END
array(
'app' => 'core',