Compare commits

..
9 changed files with 94 additions and 215 deletions
+3
View File
@@ -74,6 +74,9 @@ $config['tabs'] =
],
],
],
'hiddenFields' => [
'uhrzeit'
]
],
'exemptions' => [
//if true, Anrechnungen can be added and edited in tab Anrechnungen
@@ -280,6 +280,47 @@ class LvMenu extends FHCAPI_Controller
},
$params
);
if (intval(substr($studiensemester_kurzbz, -2)) > 25 && $studiensemester_kurzbz !== "SS2026") {
$menu = array_filter(
$menu,
function ($menuItem) {
return $menuItem['id'] !== 'addon_lvevaluierung_menu_lvevaluierung';
}
);
} else if (intval(substr($studiensemester_kurzbz, -2)) < 25) {
$menu = array_filter(
$menu,
function ($menuItem) {
return $menuItem['id'] !== 'extension_lvevaluierung_menu_initiierung';
}
);
} else {
$oldEval = current(array_filter(
$menu,
function ($menuItem) {
return $menuItem['id'] === 'addon_lvevaluierung_menu_lvevaluierung';
}
));
$newEval = current(array_filter(
$menu,
function ($menuItem) {
return $menuItem['id'] === 'extension_lvevaluierung_menu_initiierung';
}
));
if ($oldEval && $newEval) {
$this->load->library('PhrasesLib');
$p = $this->p;
$menu = array_map(
function ($menuItem) use ($p) {
if ($menuItem['id'] === 'addon_lvevaluierung_menu_lvevaluierung') {
$menuItem['name'] .= ' (' . $p->t('global', 'old') . ')';
}
return $menuItem;
},
$menu
);
}
}
// Menu sortieren
// ##########################################################################################
@@ -315,6 +315,7 @@ class Abschlusspruefung extends FHCAPI_Controller
'abschlussbeurteilung_kurzbz' => $formData['abschlussbeurteilung_kurzbz'],
'datum' => $formData['datum'], //TODO(Manu) check if minute format like FAS
'sponsion' => $formData['sponsion'],
'uhrzeit' => $formData['uhrzeit'],
'pruefer1' => $formData['pruefer1'],
'pruefer2' => $formData['pruefer2'],
'pruefer3' => $formData['pruefer3'],
@@ -387,6 +388,7 @@ class Abschlusspruefung extends FHCAPI_Controller
'abschlussbeurteilung_kurzbz' => $formData['abschlussbeurteilung_kurzbz'],
'datum' => $datum,
'sponsion' => $sponsion,
'uhrzeit' => $formData['uhrzeit'],
'pruefer1' => $pruefer1,
'pruefer2' => $pruefer2,
'pruefer3' => $pruefer3,
@@ -22,7 +22,7 @@ export default {
},
computed: {
pickerWidgets() {
return this.widgets.filter(widget => widget.allowed).map(widget => ({ ...widget, permitted: true }));
return this.widgets.filter(widget => widget.allowed);
},
sizeLimits() {
return Object.fromEntries(this.widgets.map(({ setup, widget_id: type }) => {
@@ -6,16 +6,10 @@ export default {
BsModal,
WidgetIcon,
},
props: {
widgets: {
type: [ Array, null ],
required: true
},
hiddenWidgets: {
type: Array,
default: []
}
},
props: [
"widgets",
"hiddenWidgets"
],
data: () => ({
callbacks: {}
}),
@@ -56,7 +56,8 @@ export default {
anmerkung: null,
protokoll: null,
note: null,
link: null
link: null,
uhrzeit: null
},
statusNew: true,
arrTypen: [],
@@ -310,6 +311,7 @@ export default {
this.formData.pruefungstyp_kurzbz = data.pruefungstyp_kurzbz;
this.formData.datum = data.datum;
this.formData.uhrzeit = data.uhrzeit;
this.formData.sponsion = data.sponsion;
this.formData.akadgrad_id = data.akadgrad_id;
this.formData.pruefungsantritt_kurzbz = data.pruefungsantritt_kurzbz;
@@ -411,6 +413,7 @@ export default {
pruefer3_label: this.selectedPruefer3?.label || null,
akadgrad_id: this.formData.akadgrad_id,
datum: this.formData.datum,
uhrzeit: this.formData.uhrzeit || null,
sponsion: this.formData.sponsion
};
localStorage.setItem(STORAGE_KEY, JSON.stringify(stored));
@@ -527,6 +530,7 @@ export default {
this.formData.abschlussbeurteilung_kurzbz = null;
this.formData.datum = null;
this.formData.sponsion = null;
this.formData.uhrzeit = null;
this.formData.pruefer1 = null;
this.formData.pruefer2 = null;
this.formData.pruefer3 = null;
@@ -620,7 +624,7 @@ export default {
);
}
});
},
}
},
created() {
this.$api
@@ -715,7 +719,6 @@ export default {
</template>
<form-form ref="formFinalExam" @submit.prevent>
<legend>{{this.$p.t('global','details')}}</legend>
<p v-if="statusNew">[{{$p.t('ui', 'neu')}}]</p>
@@ -916,6 +919,22 @@ export default {
</form-input>
</div>
<div v-if="!config.hiddenFields?.includes('uhrzeit')" class="row mb-3">
<form-input
container-class="col-6 stv-details-uhrzeit"
:label="$p.t('global', 'uhrzeit')"
type="DatePicker"
v-model="formData.uhrzeit"
model-type="HH:mm:ss"
time-picker
text-input
name="uhrzeit"
:teleport="true"
:cancel-text="$p.t('ui', 'abbrechen')"
:select-text="$p.t('ui', 'ok')"
/>
</div>
<div class="row mb-3">
<form-input
container-class="col-6 stv-details-abschlusspruefung-sponsion"
@@ -979,7 +998,7 @@ export default {
:cisRoot="cisRoot"
@linkGenerated="printDocument"
></abschlusspruefung-dropdown>
</Teleport>
</Teleport>
</div>
`
}
-34
View File
@@ -1,34 +0,0 @@
function loadCss(path) {
if (!document.head) {
return new Promise((resolve, reject) => {
window.addEventListener('load', () => loadCss(path).then(resolve).catch(reject));
});
}
if (path.match(/^\/[^\/]/))
path = FHC_JS_DATA_STORAGE_OBJECT.app_root.replace(/\/$/, "") + path;
if (document.querySelector('link[href="' + path + '"]'))
return Promise.resolve();
return new Promise((resolve, reject) => {
const link = document.createElement('link');
link.rel = 'stylesheet';
link.type = 'text/css';
link.onload = resolve;
link.onerror = reject;
link.href = path;
document.head.append(link);
});
}
export {
loadCss,
};
export default {
loadCss,
};
-4
View File
@@ -62,7 +62,3 @@ function splitWordsInCamelCase(string) {
splitWords.push(string.slice(lastUpperCaseLetterIndex));
return splitWords;
}
export function isString(str) {
return typeof str === 'string' || str instanceof String;
}
+20 -162
View File
@@ -2153,46 +2153,6 @@ $phrases = array(
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'aborted_by_user',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Abbruch durch Benutzer',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Aborted by the user',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'no_preview_available',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Keine Vorschau verfügbar',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'No preview available',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
@@ -67410,128 +67370,6 @@ I have been informed that I am under no obligation to consent to the transmissio
)
),
// ### Phrases Dashboard Studstatus Widget END
// ### Phrases Dashboard OpenProject Widget START
array(
'app' => 'core',
'category' => 'dashboard',
'phrase' => 'widget_openproject_login',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'In OpenProject anmelden',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Login to OpenProject',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'dashboard',
'phrase' => 'widget_openproject_title_listWpOpen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Offene WorkPackages',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Open WorkPackages',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'dashboard',
'phrase' => 'widget_openproject_title_listWpOverdue',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Überfällige WorkPackages',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Overdue WorkPackages',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'dashboard',
'phrase' => 'widget_openproject_title_listWpNew',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Neue WorkPackages',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'New WorkPackages',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'dashboard',
'phrase' => 'widget_openproject_title_listMentioned',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Erwähnungen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Mentions',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'dashboard',
'phrase' => 'widget_openproject_select_endpoint',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Anzeigen:',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Show:',
'description' => '',
'insertvon' => 'system'
)
)
),
// ### Phrases Dashboard OpenProject Widget END
//******************* CORE/reservierung
array(
'app' => 'core',
@@ -68361,6 +68199,26 @@ I have been informed that I am under no obligation to consent to the transmissio
)
),
// Zeitsperren Sancho Subjects end
array(
'app' => 'core',
'category' => 'global',
'phrase' => 'old',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'alt',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'old',
'description' => '',
'insertvon' => 'system'
)
)
),
);