mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-16 22:42:16 +00:00
Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7f91e20d03 | |||
| 233a6e8b89 | |||
| 9b114c5fb1 | |||
| 2228b4d683 | |||
| 32fc029bd3 | |||
| f4e0516d89 | |||
| d98b7fd67a | |||
| 7169cb68a2 | |||
| f8da0b0915 | |||
| 6ec4737b22 | |||
| 1d8c4b7159 | |||
| 3d1aef617f |
@@ -19,6 +19,8 @@
|
||||
if (!defined('BASEPATH'))
|
||||
exit('No direct script access allowed');
|
||||
|
||||
use CI3_Events as Events;
|
||||
|
||||
class Setup extends FHCAPI_Controller
|
||||
{
|
||||
private $_ci;
|
||||
@@ -65,6 +67,11 @@ class Setup extends FHCAPI_Controller
|
||||
'component' => absoluteJsImportUrl('public/js/components/LVVerwaltung/Tabs/Notiz.js'),
|
||||
'config' => []
|
||||
);
|
||||
|
||||
Events::trigger('lvv_conf_tabs', function & () use (&$tabs) {
|
||||
return $tabs;
|
||||
});
|
||||
|
||||
$this->terminateWithSuccess($tabs);
|
||||
}
|
||||
|
||||
|
||||
@@ -470,12 +470,12 @@ class Stundenplan_model extends DB_Model
|
||||
}
|
||||
foreach($studentlehrverbaende[$sem_date] as $key=>$lehrverband)
|
||||
{
|
||||
$query .= "((sp.studiengang_kz = ".$this->escape($lehrverband->studiengang_kz)." AND sp.semester = ".$this->escape($lehrverband->semester)." AND sp.verband = ".$this->escape($lehrverband->verband)." AND sp.gruppe = ".$this->escape($lehrverband->gruppe)." AND sp.datum BETWEEN ".$this->escape($sem_date_range->start)." AND ".$this->escape($sem_date_range->ende).")";
|
||||
$query .= "(((sp.studiengang_kz = ".$this->escape($lehrverband->studiengang_kz)." AND sp.semester = ".$this->escape($lehrverband->semester)." AND sp.verband = ".$this->escape($lehrverband->verband)." AND sp.gruppe = ".$this->escape($lehrverband->gruppe)." AND sp.datum BETWEEN ".$this->escape($sem_date_range->start)." AND ".$this->escape($sem_date_range->ende).")";
|
||||
// Eintraege fuer den ganzen Verband
|
||||
$query .= "OR (sp.studiengang_kz = ".$this->escape($lehrverband->studiengang_kz)." AND sp.semester = ".$this->escape($lehrverband->semester)." AND sp.verband = ".$this->escape($lehrverband->verband)." AND (sp.gruppe is null OR sp.gruppe='') AND sp.datum BETWEEN ".$this->escape($sem_date_range->start)." AND ".$this->escape($sem_date_range->ende).")";
|
||||
// Eintraege fuer das ganze Semester
|
||||
$query .= "OR (sp.studiengang_kz = ".$this->escape($lehrverband->studiengang_kz)." AND sp.semester = ".$this->escape($lehrverband->semester)." AND (sp.verband is null OR sp.verband='') AND sp.datum BETWEEN ".$this->escape($sem_date_range->start)
|
||||
." AND ".$this->escape($sem_date_range->ende).")". $stringGroupLv. ")";
|
||||
." AND ".$this->escape($sem_date_range->ende).")) AND gruppe_kurzbz is null)";
|
||||
|
||||
$query .="OR";
|
||||
}
|
||||
|
||||
@@ -581,14 +581,14 @@ if($frage->frage_id!='')
|
||||
else
|
||||
$value=$p->t('testtool/blaettern').' >>';
|
||||
|
||||
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&frage_id=$nextfrage' class='Item'>$value</a>";
|
||||
echo "<a href='$PHP_SELF?gebiet_id=$gebiet_id&frage_id=$nextfrage' class='Item' style='padding-left: 5px'>$value</a>";
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!$demo)
|
||||
{
|
||||
//Wenns der letzte Eintrag ist, wieder zum ersten springen
|
||||
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id' class='Item'>".$p->t('testtool/blaettern')." >></a>";
|
||||
echo "<a href='$PHP_SELF?gebiet_id=$gebiet_id' class='Item' style='padding-left: 5px'>".$p->t('testtool/blaettern')." >></a>";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+20
-7
@@ -340,13 +340,26 @@ else
|
||||
}
|
||||
}
|
||||
|
||||
if ((isset($_SESSION['prestudent_id']) && !isset($_SESSION['pruefling_id']) &&
|
||||
!isset($_SESSION['confirmation_needed']) && !isset($_SESSION['confirmed_code'])) ||
|
||||
(isset($_SESSION['confirmation_needed']) && $_SESSION['confirmation_needed'] === true &&
|
||||
isset($_SESSION['confirmed_code']) && $_SESSION['confirmed_code'] === true &&
|
||||
isset($_SESSION['externe_ueberwachung']) && $_SESSION['externe_ueberwachung'] === true &&
|
||||
isset($_SESSION['externe_ueberwachung_verified']) && $_SESSION['externe_ueberwachung_verified'] === true &&
|
||||
isset($_SESSION['prestudent_id']) && !isset($_SESSION['pruefling_id'])))
|
||||
if (
|
||||
(
|
||||
isset($_SESSION['prestudent_id']) && !isset($_SESSION['pruefling_id']) &&
|
||||
!isset($_SESSION['confirmation_needed']) && !isset($_SESSION['confirmed_code']) &&
|
||||
!isset($_SESSION['externe_ueberwachung']) && !isset($_SESSION['externe_ueberwachung_verified'])
|
||||
)
|
||||
||
|
||||
(
|
||||
isset($_SESSION['confirmation_needed']) && $_SESSION['confirmation_needed'] === true &&
|
||||
isset($_SESSION['confirmed_code']) && $_SESSION['confirmed_code'] === true &&
|
||||
isset($_SESSION['prestudent_id']) && !isset($_SESSION['pruefling_id'])
|
||||
)
|
||||
||
|
||||
(
|
||||
isset($_SESSION['externe_ueberwachung']) && $_SESSION['externe_ueberwachung'] === true &&
|
||||
isset($_SESSION['externe_ueberwachung_verified']) && $_SESSION['externe_ueberwachung_verified'] === true &&
|
||||
isset($_SESSION['prestudent_id']) && !isset($_SESSION['pruefling_id'])
|
||||
)
|
||||
|
||||
)
|
||||
{
|
||||
$pruefling = new pruefling();
|
||||
|
||||
|
||||
@@ -41,6 +41,12 @@ else
|
||||
$user = get_uid();
|
||||
loadVariables($user);
|
||||
|
||||
if (isset($_GET['studiensemester_kurzbz']))
|
||||
{
|
||||
if (check_stsem($_GET['studiensemester_kurzbz']))
|
||||
$semester_aktuell = $_GET['studiensemester_kurzbz'];
|
||||
}
|
||||
|
||||
//Studiengang laden
|
||||
$studiengang = new studiengang($studiengang_kz);
|
||||
|
||||
|
||||
@@ -50,6 +50,12 @@ else
|
||||
$user = get_uid();
|
||||
loadVariables($user);
|
||||
|
||||
if (isset($_GET['studiensemester_kurzbz']))
|
||||
{
|
||||
if (check_stsem($_GET['studiensemester_kurzbz']))
|
||||
$semester_aktuell = $_GET['studiensemester_kurzbz'];
|
||||
}
|
||||
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($user);
|
||||
|
||||
|
||||
@@ -345,6 +345,7 @@ class gebiet extends basis_db
|
||||
}
|
||||
|
||||
//Pruefen ob jede Fragen mindestens 2 Vorschlaege hat
|
||||
//Angepasst am 28.01.2026 auf ein Warning.
|
||||
$qry = "SELECT frage_id, nummer FROM testtool.tbl_frage
|
||||
WHERE (SELECT count(*) as anzahl FROM testtool.tbl_vorschlag WHERE frage_id=tbl_frage.frage_id)<2
|
||||
AND gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND NOT demo;";
|
||||
@@ -352,7 +353,7 @@ class gebiet extends basis_db
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->errormsg .= "Frage Nummer $row->nummer (ID: $row->frage_id) hat weniger als 2 Vorschlaege.\n";
|
||||
$this->warningmsg .= "Frage Nummer $row->nummer (ID: $row->frage_id) hat weniger als 2 Vorschlaege.\n";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -448,6 +449,52 @@ class gebiet extends basis_db
|
||||
}
|
||||
}
|
||||
|
||||
//Pruefen ob es leere Fragen (ohne Text, Bild oder Audio) gibt
|
||||
$qry = "SELECT
|
||||
fr.frage_id,
|
||||
fr.nummer,
|
||||
fs.sprache
|
||||
FROM
|
||||
testtool.tbl_frage fr
|
||||
JOIN testtool.tbl_frage_sprache fs
|
||||
USING (frage_id)
|
||||
WHERE
|
||||
(fs.text IS NULL
|
||||
OR fs.text = '')
|
||||
AND fs.bild IS NULL
|
||||
AND fs.audio IS NULL
|
||||
AND demo = false
|
||||
AND gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
|
||||
AND EXISTS (
|
||||
SELECT
|
||||
1
|
||||
FROM
|
||||
testtool.tbl_frage fr2
|
||||
JOIN testtool.tbl_frage_sprache fs2
|
||||
USING (frage_id)
|
||||
WHERE
|
||||
fs2.sprache = fs.sprache
|
||||
AND fr2.gebiet_id = fr.gebiet_id
|
||||
AND fr2.frage_id != fr.frage_id
|
||||
AND (
|
||||
(fs2.text IS NOT NULL
|
||||
AND fs2.text != '')
|
||||
OR fs2.bild IS NOT NULL
|
||||
OR fs2.audio IS NOT NULL
|
||||
)
|
||||
AND demo = false
|
||||
)
|
||||
ORDER BY
|
||||
fs.sprache,
|
||||
fr.nummer;";
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->warningmsg .= "Frage Nummer $row->nummer (ID: $row->frage_id), Sprache $row->sprache hat keinen Text, Bild oder Audio.\n";
|
||||
}
|
||||
}
|
||||
|
||||
if($this->errormsg=='')
|
||||
return true;
|
||||
else
|
||||
|
||||
@@ -8,7 +8,6 @@ import LvTabs from "./Setup/Tabs.js";
|
||||
|
||||
import ApiDetails from "../../api/lehrveranstaltung/details.js";
|
||||
import ApiLektor from "../../api/lehrveranstaltung/lektor.js";
|
||||
import ApiGruppe from "../../api/lehrveranstaltung/gruppe.js";
|
||||
import ApiStudiengangTree from "../../api/lehrveranstaltung/studiengangtree.js";
|
||||
import ApiSearchbar from "../../api/factory/searchbar.js";
|
||||
|
||||
@@ -205,6 +204,21 @@ export default {
|
||||
this.$router.push({ name: routeName, params: newParams });
|
||||
this.selected = [];
|
||||
},
|
||||
isDisabled(item)
|
||||
{
|
||||
if (!item?.requires?.length)
|
||||
return false;
|
||||
|
||||
const values = {
|
||||
stg: this.stg,
|
||||
emp: this.emp,
|
||||
studiensemester: this.selectedStudiensemester,
|
||||
semester: this.semester
|
||||
};
|
||||
|
||||
return item.requires.some(req => !values[req]);
|
||||
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.$p.loadCategory(['lehre', 'person', 'global'])
|
||||
@@ -239,6 +253,74 @@ export default {
|
||||
})
|
||||
.catch(this.$fhcAlert.handleSystemError);
|
||||
},
|
||||
computed:
|
||||
{
|
||||
appMenuExtraItems()
|
||||
{
|
||||
let extraItems = [];
|
||||
|
||||
const studiengang_kz = this.stg || '';
|
||||
const studiensemester = this.selectedStudiensemester;
|
||||
const semester = this.semester || '';
|
||||
const uid = this.emp || '';
|
||||
|
||||
|
||||
extraItems.push(
|
||||
{
|
||||
description: 'lehre/berichte',
|
||||
requires: ['stg'],
|
||||
children: [
|
||||
{
|
||||
link: FHC_JS_DATA_STORAGE_OBJECT.app_root
|
||||
+ 'content/statistik/lvplanung.xls.php'
|
||||
+ '?studiengang_kz=' + studiengang_kz
|
||||
+ '&studiensemester_kurzbz=' + studiensemester
|
||||
+ '&semester=' + semester,
|
||||
description: 'lehre/lvplanung',
|
||||
requires: ['stg']
|
||||
},
|
||||
{
|
||||
link: FHC_JS_DATA_STORAGE_OBJECT.app_root
|
||||
+ 'content/statistik/lehrauftragsliste_gst.xls.php'
|
||||
+ '?studiengang_kz=' + studiengang_kz
|
||||
+ '&studiensemester_kurzbz=' + studiensemester
|
||||
+ '&semester=' + semester,
|
||||
description: 'lehre/lehrauftragsliste',
|
||||
requires: ['stg']
|
||||
},
|
||||
{
|
||||
link: FHC_JS_DATA_STORAGE_OBJECT.app_root
|
||||
+ 'content/pdfExport.php?xml=lehrauftrag.xml.php'
|
||||
+ '&xsl=Lehrauftrag'
|
||||
+ '&stg_kz=' + studiengang_kz
|
||||
+ '&ss=' + studiensemester,
|
||||
description: 'lehre/lehrauftraege',
|
||||
requires: ['stg']
|
||||
},
|
||||
{
|
||||
link: FHC_JS_DATA_STORAGE_OBJECT.app_root
|
||||
+ 'content/pdfExport.php?xml=lehrauftrag.xml.php'
|
||||
+ '&xsl=Lehrauftrag'
|
||||
+ '&stg_kz=' + studiengang_kz
|
||||
+ '&ss=' + studiensemester
|
||||
+ '&uid=' + uid,
|
||||
description: 'lehre/lehrauftragslisteemp',
|
||||
requires: ['emp']
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
link: FHC_JS_DATA_STORAGE_OBJECT.app_root
|
||||
+ 'vilesci/lehre/lehrveranstaltung.php'
|
||||
+ '?stg_kz=' + studiengang_kz,
|
||||
description: 'lehre/extrakvverwaltung',
|
||||
requires: ['stg']
|
||||
}
|
||||
);
|
||||
|
||||
return extraItems;
|
||||
}
|
||||
},
|
||||
|
||||
template: /* html */`
|
||||
<div class="stv">
|
||||
@@ -278,7 +360,40 @@ export default {
|
||||
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" :aria-label="$p.t('ui/schliessen')"></button>
|
||||
</div>
|
||||
<div class="offcanvas-body">
|
||||
<app-menu app-identifier="lvv" />
|
||||
<app-menu app-identifier="lvv">
|
||||
<template v-for="(item, key) in appMenuExtraItems" :key="key">
|
||||
<li v-if="item.children" class="dropend">
|
||||
<a
|
||||
class="dropdown-toggle"
|
||||
href="#"
|
||||
role="button"
|
||||
data-bs-toggle="dropdown"
|
||||
aria-expanded="false"
|
||||
data-bs-popper-config='{"strategy":"fixed"}'
|
||||
>
|
||||
{{ $p.t(item.description) }}
|
||||
</a>
|
||||
<ul class="dropdown-menu p-0">
|
||||
<li
|
||||
v-for="(child, childKey) in item.children"
|
||||
:key="childKey"
|
||||
>
|
||||
<a class="dropdown-item" :href="child.link" target="_blank" :class="{ disabled: isDisabled(child) }">
|
||||
{{ $p.t(child.description) }}
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li v-else>
|
||||
<a
|
||||
:href="item.link"
|
||||
target="_blank"
|
||||
:class="{ disabled: isDisabled(item) }">
|
||||
{{ $p.t(item.description) }}
|
||||
</a>
|
||||
</li>
|
||||
</template>
|
||||
</app-menu>
|
||||
</div>
|
||||
</aside>
|
||||
<nav id="sidebarMenu" class="bg-light offcanvas offcanvas-start col-md p-md-0 h-100">
|
||||
|
||||
@@ -158,7 +158,7 @@ export default {
|
||||
</form>
|
||||
|
||||
<message-modal
|
||||
v-if="tablebuilt"
|
||||
v-if="tablebuilt || id.length > 1"
|
||||
ref="modalMsg"
|
||||
:type-id="typeId"
|
||||
:id="id"
|
||||
@@ -172,7 +172,7 @@ export default {
|
||||
<!--in same page-->
|
||||
<div v-if="isVisibleDiv" class="overflow-auto m-3" style="max-height: 500px; border: 1px solid #ccc;">
|
||||
<form-only
|
||||
v-if="tablebuilt"
|
||||
v-if="tablebuilt || id.length > 1"
|
||||
ref="templateNewDivMessage"
|
||||
:type-id="typeId"
|
||||
:id="id"
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 41 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 88 KiB |
@@ -19087,6 +19087,27 @@ array(
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'kvp',
|
||||
'phrase' => 'error.opproject_does_not_exists',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Es ist kein Openproject Projekt verknüpft.",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "No Openproject project is linked.",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
//******************* KVP end
|
||||
array(
|
||||
'app' => 'international',
|
||||
'category' => 'international',
|
||||
@@ -48828,6 +48849,126 @@ array(
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'lehre',
|
||||
'phrase' => 'berichte',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Berichte',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Reports',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'lehre',
|
||||
'phrase' => 'lvplanung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'LV-Planung',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Course Planning',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'lehre',
|
||||
'phrase' => 'lehrauftragsliste',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Lehrauftragsliste',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Teaching Assignments',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'lehre',
|
||||
'phrase' => 'lehrauftraege',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Lehraufträge',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Lectureships',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'lehre',
|
||||
'phrase' => 'lehrauftragslisteemp',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Lehrauftrag Lehrende',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Teaching Assignment Lecturers',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'lehre',
|
||||
'phrase' => 'extrakvverwaltung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Lehrveranstaltung Verwaltung',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Course Management',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
// feature-55614 end
|
||||
array(
|
||||
'app' => 'softwarebereitstellung',
|
||||
|
||||
Reference in New Issue
Block a user