Compare commits

..
9 changed files with 215 additions and 76 deletions
-3
View File
@@ -74,9 +74,6 @@ $config['tabs'] =
],
],
],
'hiddenFields' => [
'uhrzeit'
]
],
'exemptions' => [
//if true, Anrechnungen can be added and edited in tab Anrechnungen
@@ -239,8 +239,6 @@ class LvMenu extends FHCAPI_Controller
$this->fhc_menu_anrechnungLector($menu, $angezeigtes_stsem);
$this->fhc_menu_anwesenheitslisten($menu, $is_lector, $studiengang_kz, $semester, $lvid, $studiensemester_kurzbz);
// Addons Menu Logic
// ##########################################################################################
@@ -552,24 +550,4 @@ class LvMenu extends FHCAPI_Controller
);
}
}
private function fhc_menu_anwesenheitslisten(&$menu, $is_lector, $stg_kz, $sem, $lvid, $stsem)
{
if (
!$is_lector ||
(defined('CIS_LEHRVERANSTALTUNG_LEISTUNGSUEBERSICHT_ANZEIGEN') && !CIS_LEHRVERANSTALTUNG_LEISTUNGSUEBERSICHT_ANZEIGEN)
) {
return;
}
$menu[]=array
(
'id' => 'core_menu_anwesenheitslisten',
'position' => '40',
'phrase' => 'lehre/anwesenheitsUndNotenlisten',
'c4_icon' => base_url('skin/images/button_kreuzerltool.png'),
'c4_icon2' => 'fa-solid fa-graduation-cap',
'c4_link' => base_url('cis.php/Cis/Compat/legacy/cis/private/lehre/anwesenheitsliste.php?stg_kz=' . urlencode($stg_kz) . '&sem=' . urlencode($sem) . '&lvid=' . urlencode($lvid) . '&stsem=' . urlencode($stsem)),
);
}
}
@@ -315,7 +315,6 @@ 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'],
@@ -388,7 +387,6 @@ 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);
return this.widgets.filter(widget => widget.allowed).map(widget => ({ ...widget, permitted: true }));
},
sizeLimits() {
return Object.fromEntries(this.widgets.map(({ setup, widget_id: type }) => {
@@ -6,10 +6,16 @@ export default {
BsModal,
WidgetIcon,
},
props: [
"widgets",
"hiddenWidgets"
],
props: {
widgets: {
type: [ Array, null ],
required: true
},
hiddenWidgets: {
type: Array,
default: []
}
},
data: () => ({
callbacks: {}
}),
@@ -56,8 +56,7 @@ export default {
anmerkung: null,
protokoll: null,
note: null,
link: null,
uhrzeit: null
link: null
},
statusNew: true,
arrTypen: [],
@@ -311,7 +310,6 @@ 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;
@@ -413,7 +411,6 @@ 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));
@@ -530,7 +527,6 @@ 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;
@@ -624,7 +620,7 @@ export default {
);
}
});
}
},
},
created() {
this.$api
@@ -719,6 +715,7 @@ 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>
@@ -919,22 +916,6 @@ 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"
@@ -998,7 +979,7 @@ export default {
:cisRoot="cisRoot"
@linkGenerated="printDocument"
></abschlusspruefung-dropdown>
</Teleport>
</Teleport>
</div>
`
}
+34
View File
@@ -0,0 +1,34 @@
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,3 +62,7 @@ function splitWordsInCamelCase(string) {
splitWords.push(string.slice(lastUpperCaseLetterIndex));
return splitWords;
}
export function isString(str) {
return typeof str === 'string' || str instanceof String;
}
+162 -21
View File
@@ -2153,6 +2153,46 @@ $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',
@@ -44966,27 +45006,6 @@ In the list:
)
)
),
array(
'app' => 'core',
'category' => 'lehre',
'phrase' => 'anwesenheitsUndNotenlisten',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Anwesenheits- und Notenlisten',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Attendance and grade list',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'lehre',
@@ -67391,6 +67410,128 @@ 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',