diff --git a/application/config/abgabe.php b/application/config/abgabe.php
index 64cffbd30..b897e92e0 100644
--- a/application/config/abgabe.php
+++ b/application/config/abgabe.php
@@ -17,4 +17,7 @@ $config['URL_MITARBEITER'] = 'index.ci.php/Cis/Abgabetool/Mitarbeiter';
$config['ALLOWED_ABGABETYPEN_BETREUER'] = ['Zwischenabgabe', 'Quality Gate 1', 'Quality Gate 2'];
$config['ALLOWED_NOTEN_ABGABETOOL'] = ['Bestanden', 'Nicht bestanden'];
-$config['beurteilung_link_fallback'] = 'addons/fhtw/content/projektbeurteilung/projektbeurteilungDocumentExport.php?projektarbeit_id=?&betreuerart_kurzbz=?&person_id=?';
\ No newline at end of file
+$config['beurteilung_link_fallback'] = 'addons/fhtw/content/projektbeurteilung/projektbeurteilungDocumentExport.php?projektarbeit_id=?&betreuerart_kurzbz=?&person_id=?';
+
+$config['PROJEKTARBEITSBEURTEILUNG_MAIL_BASELINK_ERSTBEGUTACHTER'] = 'index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/ProjektarbeitsbeurteilungErstbegutachter';
+$config['PROJEKTARBEITSBEURTEILUNG_MAIL_BASELINK_ZWEITBEGUTACHTER'] = 'index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/ProjektarbeitsbeurteilungErstbegutachter';
\ No newline at end of file
diff --git a/application/controllers/api/frontend/v1/Abgabe.php b/application/controllers/api/frontend/v1/Abgabe.php
index 4a0e6dea7..8b6afef11 100644
--- a/application/controllers/api/frontend/v1/Abgabe.php
+++ b/application/controllers/api/frontend/v1/Abgabe.php
@@ -114,15 +114,22 @@ class Abgabe extends FHCAPI_Controller
$this->terminateWithError($this->p->t('global','projektarbeitNichtGefunden'), 'general');
}
- $paIsCurrent = $this->ProjektarbeitModel->projektarbeitIsCurrent($projektarbeit_id);
+// $paIsCurrent = $this->ProjektarbeitModel->projektarbeitIsCurrent($projektarbeit_id);
+ $projektarbeitIsCurrent = false;
+ $returnFunc = function ($result) use (&$projektarbeitIsCurrent) {
+ $projektarbeitIsCurrent = $result;
+ };
+ Events::trigger('projektarbeit_is_current', $projektarbeit_id, $returnFunc);
+// $this->addMeta('isCurrent', $projektarbeitIsCurrent);
+
$ret = $this->ProjektarbeitModel->getProjektarbeitAbgabetermine($projektarbeit_id);
foreach($ret->retval as $termin) {
$this->checkAbgabeSignatur($termin, $projektarbeit);
}
- $this->terminateWithSuccess(array($ret, $paIsCurrent));
+ $this->terminateWithSuccess(array($ret, $projektarbeitIsCurrent));
}
/**
@@ -415,6 +422,22 @@ class Abgabe extends FHCAPI_Controller
$projektarbeiten = $this->ProjektarbeitModel->getMitarbeiterProjektarbeiten(getAuthUID(), $showAllBool);
+
+ forEach($projektarbeiten->retval as $pa) {
+
+ $oldLink = ''; // show this when paIsCurrent == false -> moodle course template
+ $newLink = ''; // get curated path for betreuer type
+ $returnFunc = function ( $resultOld, $resultNew) use (&$oldLink, &$newLink) {
+ $newLink = $resultNew;
+ $oldLink = $resultOld;
+ };
+
+ Events::trigger('projektbeurteilung_formular_link', $pa->betreuerart_kurzbz, APP_ROOT, $returnFunc);
+ $pa->beurteilungLinkNew = $newLink;
+ $pa->beurteilungLinkOld = $oldLink;
+ }
+
+
$this->terminateWithSuccess(array($projektarbeiten, DOMAIN));
}
@@ -958,8 +981,16 @@ class Abgabe extends FHCAPI_Controller
} else {
$this->terminateWithError($this->p->t('global','projektarbeitNichtGefunden'), 'general');
}
-
- $projektarbeitIsCurrent = $this->ProjektarbeitModel->projektarbeitIsCurrent($projektarbeit_id);
+
+ $projektarbeitIsCurrent = false;
+ $returnFunc = function ($result) use (&$projektarbeitIsCurrent) {
+ $projektarbeitIsCurrent = $result;
+ };
+
+ Events::trigger('projektarbeit_is_current', $projektarbeit_id, $returnFunc);
+ $this->addMeta('isCurrent', $projektarbeitIsCurrent);
+
+// $projektarbeitIsCurrent = $this->ProjektarbeitModel->projektarbeitIsCurrent($projektarbeit_id);
if(!$projektarbeitIsCurrent) {
$this->terminateWithError($this->p->t('abgabetool','c4fehlerAktualitaetProjektarbeit'), 'general');
}
@@ -983,7 +1014,8 @@ class Abgabe extends FHCAPI_Controller
$studentUser = $this->ProjektarbeitModel->getProjektarbeitBenutzer($student_uid)->retval[0];
// 1. Begutachter mail ohne Token
- $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/ProjektarbeitsbeurteilungErstbegutachter";
+ $mail_baselink = APP_ROOT.$this->config->item('PROJEKTARBEITSBEURTEILUNG_MAIL_BASELINK_ERSTBEGUTACHTER');
+// $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/ProjektarbeitsbeurteilungErstbegutachter";
$mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$studentUser->uid;
$projekttyp_kurzbz = $projektarbeit->projekttyp_kurzbz;
$subject = $projektarbeit->projekttyp_kurzbz == 'Diplom' ? 'Masterarbeitsbetreuung' : 'Bachelorarbeitsbetreuung';
diff --git a/application/models/education/Projektarbeit_model.php b/application/models/education/Projektarbeit_model.php
index 361fd71b0..e1b800673 100644
--- a/application/models/education/Projektarbeit_model.php
+++ b/application/models/education/Projektarbeit_model.php
@@ -437,113 +437,7 @@ class Projektarbeit_model extends DB_Model
return $this->execReadOnlyQuery($new_qry, array($studiengang_kz));
}
-
- /**
- * Holt sich Version der Projektarbeit.
- * Liefert auch mit, ob die Version die aktuellste ist.
- * z.B.: Masterarbeiten waren ab der Änderung zur Gewichtung der Punkte aktuell,
- * Bachelorarbeiten waren ab dem Umstieg auf das Online Beurteilungsformular aktuell.
- * @param $projektarbeit_id
- * @return objekt mit Versionsinfo, null im Fehlerfall
- */
- private function getVersion($projektarbeit_id) {
- $_versions_query = array(
- 'Diplom' => array(
- 'SS2025',
- 'SS2023',
- 'SS2022'
- ),
- 'Others' => array(
- 'SS2025',
- 'SS2022',
- )
- );
-
- $_versions_check = array(
- 'Diplom' => array(
- 'SS2025' => 3,
- 'SS2023' => 2,
- 'SS2022' => 1
- ),
- 'Others' => array(
- 'SS2025' => 2,
- 'SS2022' => 1
- )
- );
-
- // paarbeit sollte nur ab einem Studiensemester online bewertet werden
- $qry="
- SELECT
- CASE
- WHEN semesters_diplom.studiensemester_kurzbz IS NOT NULL
- THEN semesters_diplom.studiensemester_kurzbz
- ELSE semesters.studiensemester_kurzbz
- END AS version_studiensemester_kurzbz,
- pa.projekttyp_kurzbz
- FROM
- lehre.tbl_projektarbeit pa
- JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
- JOIN public.tbl_studiensemester sem USING(studiensemester_kurzbz)
- LEFT JOIN (
- SELECT
- start, studiensemester_kurzbz
- FROM
- public.tbl_studiensemester
- WHERE
- studiensemester_kurzbz IN ?
- ) semesters ON sem.start >= semesters.start AND pa.projekttyp_kurzbz <> 'Diplom'
- LEFT JOIN (
- SELECT
- start, studiensemester_kurzbz
- FROM
- public.tbl_studiensemester
- WHERE
- studiensemester_kurzbz IN ?
- ) semesters_diplom ON sem.start >= semesters_diplom.start AND pa.projekttyp_kurzbz = 'Diplom'
- WHERE
- projektarbeit_id = ?
- ORDER BY
- semesters.start DESC, semesters_diplom.start DESC
- LIMIT 1";
-
- $resultociniBambini = $this->execReadOnlyQuery($qry, array($_versions_query['Others'], $_versions_query['Diplom'], $projektarbeit_id));
-
- if(hasData($resultociniBambini)) {
- $data = getData($resultociniBambini);
- if(count($data) > 0) {
- $row = $data[0];
-
- // known project types
- if (isset($_versions_check[$row->projekttyp_kurzbz][$row->version_studiensemester_kurzbz]))
- {
- $row->versionNumber = $_versions_check[$row->projekttyp_kurzbz][$row->version_studiensemester_kurzbz];
- $row->isCurrent =
- $_versions_check[$row->projekttyp_kurzbz][$row->version_studiensemester_kurzbz]
- == max($_versions_check[$row->projekttyp_kurzbz]);
-
- }
- elseif (isset($_versions_check['Others'][$row->version_studiensemester_kurzbz]))
- {
- $row->versionNumber = $_versions_check['Others'][$row->version_studiensemester_kurzbz];
- $row->isCurrent =
- $_versions_check['Others'][$row->version_studiensemester_kurzbz]
- == max($_versions_check['Others']);
- }
- else
- {
- $row->isCurrent = false;
- $row->versionNumber = 0;
- }
- return $row;
-
- } else {
- return null;
- }
- } else {
- return null;
- }
- }
-
+
/**
*
* @param
diff --git a/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js b/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js
index e1ca760ed..2f85b78c5 100644
--- a/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js
+++ b/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js
@@ -364,17 +364,36 @@ export const AbgabeMitarbeiterDetail = {
const link = this.turnitin_link
window.open(link, '_blank')
},
- openBenotung() {
+ async openBenotung() {
// old link check ?
- if(this.getSemesterBenotbar && this.projektarbeit?.abgabetermine.find(termin => termin.paabgabetyp_kurzbz == 'end' && termin.abgabedatum !== null)) {
- // TODO: shouldnt be hardcoded here, at least config in abgabetool -> ideally event sourced from projektarbeitsbeurteilung
-
- const path = this.projektarbeit?.betreuerart_kurzbz == 'Zweitbegutachter' ? 'ProjektarbeitsbeurteilungZweitbegutachter' : 'ProjektarbeitsbeurteilungErstbegutachter'
- const link = FHC_JS_DATA_STORAGE_OBJECT.app_root + 'index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/' + path
+ if(this.getSemesterBenotbar && this.projektarbeit?.abgabetermine.find(termin => termin.paabgabetyp_kurzbz == 'end' && termin.abgabedatum !== null) && this.projektarbeit?.beurteilungLinkNew) {
+ const link = this.projektarbeit?.beurteilungLinkNew
+ window.open(link, '_blank')
+ } else if(this.projektarbeit?.abgabetermine.find(termin => termin.paabgabetyp_kurzbz == 'end' && termin.abgabedatum !== null) && this.projektarbeit?.beurteilungLinkOld) {
+ if(await this.$fhcAlert.confirm({
+ message: this.$p.t('abgabetool/c4aeltereParbeitBenoten'),
+ acceptLabel: this.$capitalize(this.$p.t('abgabetool/c4AcceptAndProceed')),
+ acceptClass: 'btn btn-danger',
+ rejectLabel: this.$capitalize(this.$p.t('abgabetool/c4Cancel')),
+ rejectClass: 'btn btn-outline-secondary'
+ }) === false) {
+ return false
+ }
+
+ const link = this.projektarbeit?.beurteilungLinkOld
window.open(link, '_blank')
} else {
- window.open(this.old_abgabe_beurteilung_link, '_blank')
+ // show info text that no endupload with abgabe has been found
+ if(await this.$fhcAlert.confirm({
+ message: this.$p.t('abgabetool/c4keinEnduploadErfolgt'),
+ acceptLabel: this.$capitalize(this.$p.t('abgabetool/c4AcceptAndProceed')),
+ acceptClass: 'btn btn-danger',
+ rejectLabel: this.$capitalize(this.$p.t('abgabetool/c4Cancel')),
+ rejectClass: 'btn btn-outline-secondary'
+ }) === false) {
+ return false
+ }
}
},
formatDate(dateParam) {
diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php
index bf5267e1c..47402ba32 100644
--- a/system/phrasesupdate.php
+++ b/system/phrasesupdate.php
@@ -42885,13 +42885,33 @@ array(
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => 'Projektarbeit für älteres Semester, bitte Word-Formular zur Benotung verwenden!',
+ 'text' => 'Projektarbeit für älteres Semester, bitte Word-Formular in Moodle zur Benotung verwenden!',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
- 'text' => 'Thesis handed in for older semester, please use word form for assessment!',
+ 'text' => 'Thesis handed in for older semester, please use word form in moodle for assessment!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'abgabetool',
+ 'phrase' => 'c4keinEnduploadErfolgt',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Endupload ist noch nicht erfolgt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Final version not uploaded yet',
'description' => '',
'insertvon' => 'system'
)