getUidFromMatrikelnummer($matrikelnummer))
+ if (!$student->checkIfValidStudentUID($matrikelnummer))
{
- $response.="\n".$p->t('benotungstool/studentMitMatrikelnummerExistiertNicht',array($matrikelnummer));
- continue;
+ //UID ermitteln
+ if(!$student_uid = $student->getUidFromMatrikelnummer($matrikelnummer))
+ {
+ $response.="\n".$p->t('benotungstool/studentMitMatrikelnummerExistiertNicht',array($matrikelnummer));
+ continue;
+ }
+ }
+ else
+ {
+ $student_uid = $matrikelnummer;
}
// Hole Zeugnisnote wenn schon eine eingetragen ist
diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php
index 52668d565..1cfa4a4e2 100644
--- a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php
+++ b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php
@@ -803,6 +803,7 @@ if (defined('CIS_ANWESENHEITSLISTE_NOTENLISTE_ANZEIGEN') && CIS_ANWESENHEITSLIST
{
$hrefpath = "../notenliste.xls.php?stg=$stg_obj->studiengang_kz&lvid=$lvid&stsem=$stsem";
echo " " . $p->t('benotungstool/notenlisteImport') . "";
+
}
// eingetragene lv-gesamtnoten freigeben
diff --git a/cis/private/lehre/fotoliste.pdf.php b/cis/private/lehre/fotoliste.pdf.php
index 018ef6d7e..353f3a2ad 100644
--- a/cis/private/lehre/fotoliste.pdf.php
+++ b/cis/private/lehre/fotoliste.pdf.php
@@ -103,6 +103,7 @@ $gruppen_string = '';
$gruppen_string_arr = array();
$stg_typ = $stg->typ;
$stg_bezeichnung = $stg->bezeichnung;
+$lv_bezeichnung = '';
//structure overall lehrveranstaltungs data
if ($result = $db->db_query($qry)) {
@@ -154,6 +155,7 @@ $qry = 'SELECT DISTINCT ON
(nachname, vorname, person_id)
vorname,
nachname,
+ wahlname,
matrikelnr,
tbl_studentlehrverband.semester,
tbl_studentlehrverband.verband,
@@ -238,6 +240,16 @@ if ($result = $db->db_query($qry)) {
if ($row->stg_kz_student == $a_o_kz) //Außerordentliche Studierende
$zusatz .= '(a.o.)';
+ //wenn Wahlname vorhanden, wird dieser anstelle des Vornamens angezeigt
+ if ($row->wahlname != '')
+ {
+ $vorname = $row->wahlname;
+ }
+ else
+ {
+ $vorname = $row->vorname;
+ }
+
//allow admin and assistenz to see ALL fotos (even if locked by user)
if ($show_all_fotos)
$row->foto_sperre = 'f';
@@ -272,7 +284,7 @@ if ($result = $db->db_query($qry)) {
//add studierenden data for XML
$data[] = array('studierende' => array(
- 'vorname' => $row->vorname,
+ 'vorname' => $vorname,
'nachname' => mb_strtoupper($row->nachname, 'UTF-8'),
'personenkennzeichen' => trim($row->matrikelnr),
'geschlecht' => $row->geschlecht,
diff --git a/cis/private/lehre/lesson.php b/cis/private/lehre/lesson.php
index ac0425e88..756572ae7 100644
--- a/cis/private/lehre/lesson.php
+++ b/cis/private/lehre/lesson.php
@@ -102,6 +102,7 @@ if (isset($_GET["handbuch"])){
+
diff --git a/cis/private/lehre/notenliste.php b/cis/private/lehre/notenliste.php
index 6cec560cf..59eafde95 100644
--- a/cis/private/lehre/notenliste.php
+++ b/cis/private/lehre/notenliste.php
@@ -136,7 +136,7 @@ if (! check_student($user))
}
else
{
- $qry = "SELECT vw_student.vorname, vw_student.nachname, vw_student.prestudent_id, tbl_studiengang.studiengang_kz
+ $qry = "SELECT vw_student.vorname, vw_student.nachname, vw_student.wahlname, vw_student.prestudent_id, tbl_studiengang.studiengang_kz
FROM public.tbl_studiengang JOIN campus.vw_student USING (studiengang_kz)
WHERE campus.vw_student.uid = " . $db->db_add_param($user) . ";";
@@ -148,6 +148,7 @@ else
$vorname = $row->vorname;
$nachname = $row->nachname;
+ $wahlname = $row->wahlname;
$prestudent_id = $row->prestudent_id;
$stg_obj = new studiengang();
$stg_obj->load($row->studiengang_kz);
@@ -313,7 +314,7 @@ else
// Noten ohne Wert werden entfernen
if(isset($notenarr[$row->note]['notenwert']))
{
- $notenSummenArray[$row->lehrveranstaltung_id]['notenwert'] = $notenarr[$row->note]['notenwert'];
+ $notenSummenArray[$row->lehrveranstaltung_id]['notenwert'] = $notenarr[$row->note]['notenwert'];
$notenSummenArray[$row->lehrveranstaltung_id]['ects'] = $row->ects;
}
}
diff --git a/cis/private/lehre/notenliste.xls.php b/cis/private/lehre/notenliste.xls.php
index ad25a6bc2..74cb7e7c1 100644
--- a/cis/private/lehre/notenliste.xls.php
+++ b/cis/private/lehre/notenliste.xls.php
@@ -167,7 +167,7 @@ else
//Lektoren ermitteln
$qry = "SELECT
- distinct vorname, nachname
+ distinct vorname, nachname, wahlname
FROM
campus.vw_benutzer, lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter
WHERE
@@ -211,7 +211,7 @@ else
$qry = "
SELECT
distinct on(nachname, vorname, person_id)
- vorname, nachname, matrikelnr, person_id, tbl_student.student_uid as uid,
+ vorname, nachname, wahlname, matrikelnr, person_id, tbl_student.student_uid as uid,
tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe,
(SELECT status_kurzbz
FROM public.tbl_prestudentstatus
@@ -277,6 +277,8 @@ else
$worksheet->write($lines,1,$elem->uid);
$worksheet->write($lines,2,$elem->nachname.$inc);
$worksheet->write($lines,3,$elem->vorname);
+ //wenn Wahlname vorhanden überschreibt dieser den Vornamen
+ $worksheet->write($lines,3,$elem->wahlname);
$worksheet->write($lines,4,'="'.$elem->semester.$elem->verband.$elem->gruppe.'"');
$worksheet->write($lines,5,'="'.trim($elem->matrikelnr).'"',$format_highlight);
$worksheet->write($lines,6, $note, $format_highlightright);
diff --git a/cis/private/profile/freebusy.php b/cis/private/profile/freebusy.php
index f009e76fb..3d84307bb 100644
--- a/cis/private/profile/freebusy.php
+++ b/cis/private/profile/freebusy.php
@@ -19,7 +19,7 @@
*/
/*
* GUI fuer die FreeBusy Verwaltung
- *
+ *
* Mit diesem Tool koennen FreeBusy URLs aus verschiedenen Quellen zu einer
* FreeBusy URL zusammengefasst werden
*/
@@ -32,7 +32,7 @@ require_once('../../../include/benutzerberechtigung.class.php');
if (!$db = new basis_db())
die('Fehler beim Oeffnen der Datenbankverbindung');
-
+
$user = get_uid();
$sprache = getSprache();
$p = new phrasen($sprache);
@@ -60,23 +60,23 @@ echo '
'.$p->t('freebusy/titel').'
-
+
-
+
';
+echo '';
//Anpassungen
-echo '';
+echo '';
?>
diff --git a/include/meta/angular.php b/include/meta/angular.php
index 8cf159b3e..e82eaf0f3 100644
--- a/include/meta/angular.php
+++ b/include/meta/angular.php
@@ -17,10 +17,7 @@
*
* Authors: Andreas Moik
*/
-
-$dr = isset($_SERVER['CONTEXT_PREFIX']) ? $_SERVER["CONTEXT_PREFIX"].'/' : '/';
-
//Originaldateien des Herstellers
-echo '';
+echo '';
?>
diff --git a/include/meta/easyui.php b/include/meta/easyui.php
index 1689b7778..18b1a6911 100644
--- a/include/meta/easyui.php
+++ b/include/meta/easyui.php
@@ -17,19 +17,16 @@
*
* Authors: Andreas Moik
*/
-
-$dr = isset($_SERVER['CONTEXT_PREFIX']) ? $_SERVER["CONTEXT_PREFIX"].'/' : '/';
-
//Originaldateien des Herstellers
-echo '';
-echo '';
+echo '';
+echo '';
-echo '';
-echo '';
+echo '';
+echo '';
//Anpassungen
-echo '';
-echo '';
+echo '';
+echo '';
?>
diff --git a/include/meta/jquery-tablesorter.php b/include/meta/jquery-tablesorter.php
index 04fd9451e..ee7ac8d39 100644
--- a/include/meta/jquery-tablesorter.php
+++ b/include/meta/jquery-tablesorter.php
@@ -17,15 +17,13 @@
*
* Authors: Andreas Moik
*/
-
-$dr = isset($_SERVER['CONTEXT_PREFIX']) ? $_SERVER["CONTEXT_PREFIX"].'/' : '/';
-
+
//Originaldateien des Herstellers
-echo '';
-echo '';
-echo '';
+echo '';
+echo '';
+echo '';
//Anpassungen
-echo '';
+echo '';
?>
diff --git a/include/meta/jquery.php b/include/meta/jquery.php
index 2ebaea9b7..166e79330 100644
--- a/include/meta/jquery.php
+++ b/include/meta/jquery.php
@@ -17,10 +17,7 @@
*
* Authors: Andreas Moik
*/
-
-$dr = isset($_SERVER['CONTEXT_PREFIX']) ? $_SERVER["CONTEXT_PREFIX"].'/' : '/';
-
//Originaldateien des Herstellers
-echo '';
+echo '';
?>
diff --git a/include/meta/jsoneditor.php b/include/meta/jsoneditor.php
index 55bb68837..b84fe0d15 100644
--- a/include/meta/jsoneditor.php
+++ b/include/meta/jsoneditor.php
@@ -17,11 +17,8 @@
*
* Authors: Andreas Moik
*/
-
-$dr = isset($_SERVER['CONTEXT_PREFIX']) ? $_SERVER["CONTEXT_PREFIX"].'/' : '/';
-
//Originaldateien des Herstellers
-echo '';
-echo '';
+echo '';
+echo '';
?>
diff --git a/include/mitarbeiter.class.php b/include/mitarbeiter.class.php
index ac67c1ce5..b7511a5ad 100644
--- a/include/mitarbeiter.class.php
+++ b/include/mitarbeiter.class.php
@@ -319,7 +319,7 @@ class mitarbeiter extends benutzer
*/
public function getMitarbeiter($lektor=true,$fixangestellt=null,$stg_kz=null)
{
- $sql_query='SELECT DISTINCT campus.vw_mitarbeiter.uid, titelpre, titelpost, vorname, vornamen, nachname, gebdatum, gebort, gebzeit, anmerkung, aktiv,
+ $sql_query='SELECT DISTINCT campus.vw_mitarbeiter.uid, titelpre, titelpost, vorname, vornamen, wahlname, nachname, gebdatum, gebort, gebzeit, anmerkung, aktiv,
homepage, campus.vw_mitarbeiter.updateamum, campus.vw_mitarbeiter.updatevon, personalnummer, kurzbz, lektor, fixangestellt, standort_id, telefonklappe FROM campus.vw_mitarbeiter
LEFT OUTER JOIN public.tbl_benutzerfunktion USING (uid)
WHERE TRUE';
@@ -364,6 +364,7 @@ class mitarbeiter extends benutzer
$l->titelpre=$row->titelpre;
$l->titelpost=$row->titelpost;
$l->vorname=$row->vorname;
+ $l->wahlname=$row->wahlname;
$l->vornamen=$row->vornamen;
$l->nachname=$row->nachname;
$l->gebdatum=$row->gebdatum;
@@ -475,6 +476,7 @@ class mitarbeiter extends benutzer
$l->titelpre=$row->titelpre;
$l->titelpost=$row->titelpost;
$l->vorname=$row->vorname;
+ $l->wahlname=$row->wahlname;
$l->vornamen=$row->vornamen;
$l->nachname=$row->nachname;
$l->gebdatum=$row->gebdatum;
@@ -601,7 +603,7 @@ class mitarbeiter extends benutzer
return false;
}
- $qry = "SELECT uid, vorname, vornamen, nachname, titelpre, titelpost, kurzbz FROM lehre.tbl_lehreinheitmitarbeiter, campus.vw_mitarbeiter, lehre.tbl_lehreinheit
+ $qry = "SELECT uid, vorname, wahlname, vornamen, nachname, titelpre, titelpost, kurzbz FROM lehre.tbl_lehreinheitmitarbeiter, campus.vw_mitarbeiter, lehre.tbl_lehreinheit
WHERE lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)." AND mitarbeiter_uid=uid AND tbl_lehreinheitmitarbeiter.lehreinheit_id=tbl_lehreinheit.lehreinheit_id;";
if($this->db_query($qry))
@@ -616,6 +618,7 @@ class mitarbeiter extends benutzer
$obj->titelpre = $row->titelpre;
$obj->titelpost = $row->titelpost;
$obj->kurzbz = $row->kurzbz;
+ $obj->wahlname = $row->wahlname;
$obj->vornamen = $row->vornamen;
$this->result[] = $obj;
@@ -752,6 +755,7 @@ class mitarbeiter extends benutzer
$obj->titelpre = $row->titelpre;
$obj->nachname = $row->nachname;
$obj->vorname = $row->vorname;
+ $obj->wahlname = $row->wahlname;
$obj->vornamen = $row->vornamen;
$obj->gebdatum = $row->gebdatum;
$obj->gebort = $row->gebort;
@@ -833,7 +837,12 @@ class mitarbeiter extends benutzer
*/
public function getMitarbeiterFilter($filter)
{
- $qry = "SELECT * FROM campus.vw_mitarbeiter WHERE lower(nachname) ~* lower(".$this->db_add_param($filter).") OR uid ~* ".$this->db_add_param($filter);
+ $qry = "SELECT * FROM campus.vw_mitarbeiter
+ WHERE lower(nachname) ~* lower(".$this->db_add_param($filter).")
+ OR lower(wahlname) ~* lower(".$this->db_add_param($filter).")
+ --OR lower(wahlname || ' ' || nachname) like lower(".$this->db_add_param($filter).")
+ --OR lower(nachname || ' ' || wahlname) like lower(".$this->db_add_param($filter).")
+ OR uid ~* ".$this->db_add_param($filter);
$qry .= " ORDER BY nachname, vorname, kurzbz;";
if($this->db_query($qry))
@@ -849,6 +858,7 @@ class mitarbeiter extends benutzer
$obj->titelpost = $row->titelpost;
$obj->kurzbz = $row->kurzbz;
$obj->vornamen = $row->vornamen;
+ $obj->wahlname = $row->wahlname;
$obj->aktiv =$this->db_parse_bool($row->aktiv);
$obj->fixangestellt = $this->db_parse_bool($row->fixangestellt);
@@ -871,14 +881,17 @@ class mitarbeiter extends benutzer
*/
public function search($filter, $limit=null, $aktiv=true, $positivePersonalnr=false)
{
- $qry = "SELECT vorname, nachname, titelpre, titelpost, kurzbz, vornamen, uid
+ $qry = "SELECT vorname, nachname, titelpre, titelpost, kurzbz, vornamen, wahlname, uid
FROM campus.vw_mitarbeiter
WHERE
lower(nachname) like lower('%".$this->db_escape($filter)."%')
OR lower(uid) like lower('%".$this->db_escape($filter)."%')
OR lower(vorname) like lower('%".$this->db_escape($filter)."%')
+ OR lower(wahlname) like lower('%".$this->db_escape($filter)."%')
OR lower(vorname || ' ' || nachname) like lower('%".$this->db_escape($filter)."%')
OR lower(nachname || ' ' || vorname) like lower('%".$this->db_escape($filter)."%')
+ OR lower(wahlname || ' ' || nachname) like lower('%".$this->db_escape($filter)."%')
+ OR lower(nachname || ' ' || wahlname) like lower('%".$this->db_escape($filter)."%')
ORDER BY nachname, vorname";
if(!is_null($limit) && is_numeric($limit))
@@ -897,6 +910,7 @@ class mitarbeiter extends benutzer
$obj->titelpost = $row->titelpost;
$obj->kurzbz = $row->kurzbz;
$obj->vornamen = $row->vornamen;
+ $obj->wahlname = $row->wahlname;
$this->result[] = $obj;
}
@@ -931,6 +945,8 @@ class mitarbeiter extends benutzer
JOIN public.tbl_person USING(person_id)
WHERE lower(COALESCE(nachname,'') ||' '|| COALESCE(vorname,'')) ~* lower(".$this->db_add_param($searchItems_string).") OR
lower(COALESCE(vorname,'') ||' '|| COALESCE(nachname,'')) ~* lower(".$this->db_add_param($searchItems_string).") OR
+ lower(COALESCE(wahlname,'') ||' '|| COALESCE(nachname,'')) ~* lower(".$this->db_add_param($searchItems_string).") OR
+ lower(COALESCE(nachname,'') ||' '|| COALESCE(wahlname,'')) ~* lower(".$this->db_add_param($searchItems_string).") OR
uid ~* ".$this->db_add_param($filter)." ";
if(is_numeric($filter))
$qry.="OR personalnummer = ".$this->db_add_param($filter)." OR svnr = ".$this->db_add_param($filter).";";
@@ -950,6 +966,7 @@ class mitarbeiter extends benutzer
$obj->titelpre = $row->titelpre;
$obj->nachname = $row->nachname;
$obj->vorname = $row->vorname;
+ $obj->wahlname = $row->wahlname;
$obj->vornamen = $row->vornamen;
$obj->gebdatum = $row->gebdatum;
$obj->gebort = $row->gebort;
@@ -1509,6 +1526,7 @@ class mitarbeiter extends benutzer
$obj->titelpre = $row->titelpre;
$obj->nachname = $row->nachname;
$obj->vorname = $row->vorname;
+ $obj->wahlname = $row->wahlname;
$obj->vornamen = $row->vornamen;
$obj->gebdatum = $row->gebdatum;
$obj->gebort = $row->gebort;
diff --git a/include/person.class.php b/include/person.class.php
index 8295a76e1..95230ef3e 100644
--- a/include/person.class.php
+++ b/include/person.class.php
@@ -66,6 +66,7 @@ class person extends basis_db
public $matr_nr; //varchar(32)
public $bpk; //varchar(255)
public $udf_values; //json
+ public $wahlname;
/**
* Konstruktor - Uebergibt die Connection und laedt optional eine Person
@@ -95,7 +96,7 @@ class person extends basis_db
gebdatum, gebort, gebzeit, foto, anmerkung, homepage, svnr, ersatzkennzeichen,
familienstand, anzahlkinder, aktiv, insertamum, insertvon, updateamum, updatevon, ext_id,
geschlecht, staatsbuergerschaft, geburtsnation, kurzbeschreibung, zugangscode, foto_sperre,
- matr_nr, bpk";
+ matr_nr, bpk, wahlname";
if ($hasUDF = $udf->personHasUDF())
$qry .= ", udf_values ";
@@ -142,6 +143,7 @@ class person extends basis_db
$this->foto_sperre = $this->db_parse_bool($row->foto_sperre);
$this->matr_nr = $row->matr_nr;
$this->bpk = $row->bpk;
+ $this->wahlname = $row->wahlname;
if ($hasUDF)
{
$this->udf_values = $row->udf_values;
@@ -441,7 +443,7 @@ class person extends basis_db
gebdatum, gebort, gebzeit, foto, anmerkung, homepage, svnr, ersatzkennzeichen,
familienstand, anzahlkinder, aktiv, insertamum, insertvon, updateamum, updatevon,
geschlecht, geburtsnation, staatsbuergerschaft, kurzbeschreibung, zugangscode,
- foto_sperre, matr_nr, bpk)
+ foto_sperre, matr_nr, bpk, wahlname)
VALUES('.$this->db_add_param($this->sprache).','.
$this->db_add_param($this->anrede).','.
$this->db_add_param($this->titelpost).','.
@@ -471,7 +473,8 @@ class person extends basis_db
$this->db_add_param($this->zugangscode).','.
$this->db_add_param($this->foto_sperre, FHC_BOOLEAN).','.
$this->db_add_param($this->matr_nr).','.
- $this->db_add_param($this->bpk).');';
+ $this->db_add_param($this->bpk).','.
+ $this->db_add_param($this->wahlname).');';
}
else
{
@@ -510,7 +513,8 @@ class person extends basis_db
' foto_sperre='.$this->db_add_param($this->foto_sperre, FHC_BOOLEAN).','.
' zugangscode='.$this->db_add_param($this->zugangscode).','.
' matr_nr ='.$this->db_add_param($this->matr_nr).','.
- ' bpk = '.$this->db_add_param($this->bpk).
+ ' bpk = '.$this->db_add_param($this->bpk).','.
+ ' wahlname = '.$this->db_add_param($this->wahlname).
' WHERE person_id='.$this->person_id.';';
}
@@ -568,6 +572,8 @@ class person extends basis_db
UPPER (vorname) ~* UPPER(".$this->db_add_param($filter).") OR
UPPER (nachname || ' ' || vorname) ~* UPPER(".$this->db_add_param($filter).") OR
UPPER (vorname || ' ' || nachname) ~* UPPER(".$this->db_add_param($filter).") OR
+ UPPER (nachname || ' ' || wahlname) ~* UPPER(".$this->db_add_param($filter).") OR
+ UPPER (wahlname || ' ' || nachname) ~* UPPER(".$this->db_add_param($filter).") OR
uid=".$this->db_add_param($filter);
}
@@ -611,6 +617,7 @@ class person extends basis_db
$l->foto_sperre = $this->db_parse_bool($row->foto_sperre);
$l->matr_nr = $row->matr_nr;
$l->bpk = $row->bpk;
+ $l->wahlname = $row->wahlname;
$this->personen[] = $l;
}
}
@@ -684,6 +691,7 @@ class person extends basis_db
$adrObj->nachname = $row->nachname;
$adrObj->vorname = $row->vorname;
$adrObj->vornamen = $row->vornamen;
+ $adrObj->wahlname = $row->wahlname;
$adrObj->gebdatum = $row->gebdatum;
$adrObj->gebort = $row->gebort;
$adrObj->gebzeit = $row->gebzeit;
@@ -868,6 +876,7 @@ class person extends basis_db
$this->foto_sperre = $this->db_parse_bool($row->foto_sperre);
$this->matr_nr = $row->matr_nr;
$this->bpk = $row->bpk;
+ $this->wahlname = $row->wahlname;
}
else
{
@@ -986,6 +995,7 @@ class person extends basis_db
$this->updateaktivam = $row->updateaktivam;
$this->aktivierungscode = $row->aktivierungscode;
$this->bpk = $row->bpk;
+ $this->wahlname = $row->wahlname;
return true;
}
else
diff --git a/include/prestudent.class.php b/include/prestudent.class.php
index a958120cb..d357a323e 100644
--- a/include/prestudent.class.php
+++ b/include/prestudent.class.php
@@ -2542,4 +2542,80 @@ class prestudent extends person
return false;
}
}
+
+ /**
+ * Prueft, ob eine Person offene Bewerbungen besitzt
+ * @param int $person_id ID der zu überprüfenden Person.
+ * @return true wenn vorhanden, false wenn nicht vorhanden
+ */
+ public function existsOffeneBewerbung($person_id)
+ {
+ if (!is_numeric($person_id))
+ {
+ $this->errormsg = 'Person_id muss eine gueltige Zahl sein';
+ return false;
+ }
+
+ $db = new basis_db();
+
+ $qry = "SELECT
+ prestudent_id
+ FROM
+ tbl_prestudent ps
+ WHERE
+ person_id = ".$this->db_add_param($person_id)."
+ And
+ get_rolle_prestudent(prestudent_id, null) in ('Interessent','Bewerber','Aufgenommener','Wartender');";
+
+ if ($db->db_query($qry))
+ {
+ $num_rows = $db->db_num_rows();
+ if ($num_rows > 0)
+ {
+ return true;
+ }
+ else
+ return false;
+ }
+ else
+ return false;
+ }
+
+ /**
+ * Prueft, ob es sich um einen Student / Unterbrecher handelt
+ * @param int $person_id ID der zu überprüfenden Person.
+ * @return true wenn zutreffend, false wenn nicht zutreffend
+ */
+ public function isStudent($person_id)
+ {
+ if (!is_numeric($person_id))
+ {
+ $this->errormsg = 'Person_id muss eine gueltige Zahl sein';
+ return false;
+ }
+
+ $db = new basis_db();
+
+ $qry = "SELECT
+ prestudent_id
+ FROM
+ tbl_prestudent ps
+ WHERE
+ person_id = ".$this->db_add_param($person_id)."
+ And
+ get_rolle_prestudent(prestudent_id, null) in ('Student','Unterbrecher');";
+
+ if ($db->db_query($qry))
+ {
+ $num_rows = $db->db_num_rows();
+ if ($num_rows > 0)
+ {
+ return true;
+ }
+ else
+ return false;
+ }
+ else
+ return false;
+ }
}
diff --git a/include/statistik.class.php b/include/statistik.class.php
index eab9f930d..15624de26 100644
--- a/include/statistik.class.php
+++ b/include/statistik.class.php
@@ -524,6 +524,14 @@ class statistik extends basis_db
}
foreach($_REQUEST as $name=>$value)
{
+ // Inputs, die in eckigen Klammern stehen, werden als Array interpretiert
+ if (substr($value, 0, 1) == '[' && substr($value, -1) == ']')
+ {
+ //Eckige Klammern entfernen und String aufsplitten
+ $value = substr($value, 1);
+ $value = substr($value, 0, -1);
+ $value = explode(',', $value);
+ }
if (is_array($value))
{
$in = $this->db_implode4SQL($value);
@@ -532,7 +540,6 @@ class statistik extends basis_db
else
$sql = str_replace('$'.$name,$this->db_add_param($value),$sql);
}
-
if($this->data = $this->db_query($sql))
{
$this->html.= '
';
diff --git a/include/student.class.php b/include/student.class.php
index 55733dd94..cfea879a9 100644
--- a/include/student.class.php
+++ b/include/student.class.php
@@ -531,6 +531,33 @@ class student extends benutzer
}
}
+ /**
+ * Check, ob inputparameter gültige studenten_id ist
+ * @param matrikelnummer oder student_uid
+ * @return ok, wenn gültige Id, sonst false
+ */
+ public function checkIfValidStudentUID($uid)
+ {
+ $qry = "SELECT student_uid FROM public.tbl_student WHERE student_uid=".$this->db_add_param($uid);
+
+ if($this->db_query($qry))
+ {
+ if($row = $this->db_fetch_object())
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
+
/**
* Laedt die UID anhand der Matrikelnummer
* @param matrikelnummer
diff --git a/include/studienplan.class.php b/include/studienplan.class.php
index 7e9963c0a..f180733fe 100644
--- a/include/studienplan.class.php
+++ b/include/studienplan.class.php
@@ -952,21 +952,34 @@ class studienplan extends basis_db
/**
* Laedt die Studienplaene zu denen eine Lehrveranstaltung zugeordnet ist
*/
- public function getStudienplanLehrveranstaltung($lehrveranstaltung_id, $studiensemester_kurzbz)
+ public function getStudienplanLehrveranstaltung($lehrveranstaltung_id, $studiensemester_kurzbz = null)
{
$qry= "
SELECT
- distinct tbl_studienplan.*
+ DISTINCT tbl_studienplan.*
FROM
- lehre.tbl_studienplan
- JOIN lehre.tbl_studienplan_lehrveranstaltung USING(studienplan_id)
+ lehre.tbl_studienplan
+ JOIN lehre.tbl_studienplan_lehrveranstaltung
+ USING(studienplan_id)
WHERE
- tbl_studienplan_lehrveranstaltung.lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
- AND EXISTS (
- SELECT 1 FROM lehre.tbl_studienplan_semester
- WHERE studienplan_id=tbl_studienplan.studienplan_id
- AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
- AND semester = tbl_studienplan_lehrveranstaltung.semester)
+ tbl_studienplan_lehrveranstaltung.lehrveranstaltung_id IN (
+ SELECT
+ lv.lehrveranstaltung_id
+ FROM
+ lehre.tbl_lehrveranstaltung AS lv
+ LEFT JOIN lehre.tbl_lehrveranstaltung AS t ON t.lehrveranstaltung_id=lv.lehrveranstaltung_template_id
+ WHERE
+ lv.lehrtyp_kurzbz<>'tpl'
+ AND (lv.lehrveranstaltung_id=" . $this->db_add_param($lehrveranstaltung_id, FHC_INTEGER) . " OR (lv.lehrveranstaltung_template_id=" . $this->db_add_param($lehrveranstaltung_id, FHC_INTEGER) . " AND t.lehrtyp_kurzbz='tpl'))
+ )
+ AND EXISTS (
+ SELECT 1
+ FROM
+ lehre.tbl_studienplan_semester
+ WHERE studienplan_id=tbl_studienplan.studienplan_id".
+ ($studiensemester_kurzbz != null ? "
+ AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz) : "")."
+ AND semester = tbl_studienplan_lehrveranstaltung.semester)
ORDER BY bezeichnung";
if($result = $this->db_query($qry))
diff --git a/include/zeitaufzeichnung.class.php b/include/zeitaufzeichnung.class.php
index fd007d1ad..7f46d763a 100644
--- a/include/zeitaufzeichnung.class.php
+++ b/include/zeitaufzeichnung.class.php
@@ -940,7 +940,7 @@ or not exists
$tagessaldo = $tagessaldo - $pausesumme;
//check if blocking error
- if (($tagessaldo > 19800 && $pausesumme < 1800) || ($tagessaldo > 18000 && $tagessaldo < 19800 && $pausesumme < $tagessaldo - 18000))
+ if (($tagessaldo >= 19800 && $pausesumme < 1800) || ($tagessaldo > 18000 && $tagessaldo < 19800 && $pausesumme < $tagessaldo - 18000))
{
$blockingError = true;
}
diff --git a/locale/de-AT/benotungstool.php b/locale/de-AT/benotungstool.php
index e8ef6d8d6..3c8063936 100644
--- a/locale/de-AT/benotungstool.php
+++ b/locale/de-AT/benotungstool.php
@@ -170,7 +170,7 @@ $this->phrasen['benotungstool/eingetrageneNoten']='Eingetragene Noten';
$this->phrasen['benotungstool/zeunis']='Zeugnis';
$this->phrasen['benotungstool/handbuch']='Handbuch';
$this->phrasen['benotungstool/punkte']='Punkte';
-$this->phrasen['benotungstool/importAnweisung']='Kopieren Sie die Spalten Personenkennzeichen und Note aus der Notenliste und fügen Sie diese in folgendes Feld ein';
+$this->phrasen['benotungstool/importAnweisung']='Kopieren Sie die Spalten Personenkennzeichen und Note aus der Notenliste (bzw. StudentenUid und Note aus dem MoodleExport) und fügen Sie diese in folgendes Feld ein';
$this->phrasen['benotungstool/pruefung']='Prüfung';
$this->phrasen['benotungstool/notenlisteImport']='Notenliste für den LV-Noten-Import (Excel)';
$this->phrasen['benotungstool/bearbeitetvon']='Bearbeitet von';
diff --git a/locale/de-AT/freebusy.php b/locale/de-AT/freebusy.php
index dfe9b89ca..2e06ab5c3 100644
--- a/locale/de-AT/freebusy.php
+++ b/locale/de-AT/freebusy.php
@@ -6,6 +6,8 @@ $this->phrasen['freebusy/aktiv']='Aktiv';
$this->phrasen['freebusy/PfadZuFreebusyUrl']='Ihre Freebusy URL ist unter folgendem Link erreichbar:';
$this->phrasen['freebusy/LVPlanBezeichnung']='Persönlicher LVPlan';
$this->phrasen['freebusy/LVPlanTyp']='LVPlan';
+$this->phrasen['freebusy/ZeitsperrenBezeichnung']='Meine Zeitsperren';
+$this->phrasen['freebusy/ZeitsperrenTyp']='Zeitsperren';
$this->phrasen['freebusy/neuerEintrag']='Neuen Eintrag hinzufügen';
$this->phrasen['freebusy/beschreibungstext1']='Auf dieser Seite können Sie verschiedene externe FreeBusy Informationen zu Ihrer persönlichen FreeBusy URL zusammenfassen.
Diese wird z.B. für das hausinterne "Coodle" herangezogen.
diff --git a/locale/de-AT/global.php b/locale/de-AT/global.php
index 7104a83a5..4d16e40bf 100644
--- a/locale/de-AT/global.php
+++ b/locale/de-AT/global.php
@@ -71,6 +71,7 @@ $this->phrasen['global/aenderungenZuruecksetzen']= "Änderungen zurücks
$this->phrasen['global/username']='Username';
$this->phrasen['global/vorname']='Vorname';
$this->phrasen['global/nachname']='Nachname';
+$this->phrasen['global/wahlname']='Wahlname';
$this->phrasen['global/anrede']='Anrede';
$this->phrasen['global/name']='Name';
$this->phrasen['global/uid']='UID';
diff --git a/locale/en-US/benotungstool.php b/locale/en-US/benotungstool.php
index 94b0e7891..17f78d2ba 100644
--- a/locale/en-US/benotungstool.php
+++ b/locale/en-US/benotungstool.php
@@ -169,7 +169,7 @@ $this->phrasen['benotungstool/eingetrageneNoten']='Submitted Grades';
$this->phrasen['benotungstool/zeunis']='Transcript';
$this->phrasen['benotungstool/handbuch']='Handbook';
$this->phrasen['benotungstool/punkte']='Points';
-$this->phrasen['benotungstool/importAnweisung']='Copy the columns "personal identifier" and "grade" from the grade list and insert them in the following field';
+$this->phrasen['benotungstool/importAnweisung']='Copy the columns "personal identifier" and "grade" from the grade list (or "student ID number" and "grade" from the moodle export file) and insert them in the following field';
$this->phrasen['benotungstool/pruefung']='Examination';
$this->phrasen['benotungstool/notenlisteImport']='Grade list for the subject grade import (Excel)';
$this->phrasen['benotungstool/geaenderteNotenVorhanden']='There are changed grades. Please send the changes to the assistant by clicking "Approval"';
diff --git a/locale/en-US/freebusy.php b/locale/en-US/freebusy.php
index 657f31333..f504a3ab0 100644
--- a/locale/en-US/freebusy.php
+++ b/locale/en-US/freebusy.php
@@ -6,13 +6,15 @@ $this->phrasen['freebusy/aktiv']='Active';
$this->phrasen['freebusy/PfadZuFreebusyUrl']='Your Freebusy URL can be accessed at:';
$this->phrasen['freebusy/LVPlanBezeichnung']='Personal schedule';
$this->phrasen['freebusy/LVPlanTyp']='Schedule';
+$this->phrasen['freebusy/ZeitsperrenBezeichnung']='My Planned Absences';
+$this->phrasen['freebusy/ZeitsperrenTyp']='Absences';
$this->phrasen['freebusy/neuerEintrag']='Add a new Entry';
$this->phrasen['freebusy/beschreibungstext1']='On this page you can combine different external FreeBusy information to create your personal FreeBusy URL.
- This is used for example for the in-house "Coodle".
+ This is used for example for the in-house "Coodle".
FreeBusy is a function that allows you to see when others are free or busy (without revealing sensitive details such as the appointment titles or content).
- This tool allows you and your colleagues to efficiently schedule meetings.
+ This tool allows you and your colleagues to efficiently schedule meetings.
To effectively use your FreeBusy URL it is necessary to carefully enter and update your calendar data.
- In general, you can enter the times that you are available or busy in a web calendar for both entire calendars as well as individual appointments.
+ In general, you can enter the times that you are available or busy in a web calendar for both entire calendars as well as individual appointments.
Examples:If I enter the vacations of my colleagues, it makes sense to add them to a separate calendar that is not included in MY availability.
Any notes that I add to my personal calendar should also be marked as "available", unless I am actually busy for that time period. ';
diff --git a/locale/en-US/global.php b/locale/en-US/global.php
index 97f5cfe26..d62a264c6 100644
--- a/locale/en-US/global.php
+++ b/locale/en-US/global.php
@@ -70,6 +70,7 @@ $this->phrasen['global/aenderungenZuruecksetzen']= "Reset changes";
$this->phrasen['global/username']='Username';
$this->phrasen['global/vorname']='First Name';
$this->phrasen['global/nachname']='Last Name';
+$this->phrasen['global/wahlname']='Name of Choice';
$this->phrasen['global/anrede']='Title';
$this->phrasen['global/name']='Name';
$this->phrasen['global/uid']='UID';
diff --git a/public/css/FilterComponent.css b/public/css/components/FilterComponent.css
similarity index 67%
rename from public/css/FilterComponent.css
rename to public/css/components/FilterComponent.css
index e549ad263..cd0b33a48 100644
--- a/public/css/FilterComponent.css
+++ b/public/css/components/FilterComponent.css
@@ -1,32 +1,27 @@
.filter-header-title {
- font-weight: bold;
- font-size: 16px;
- text-decoration: none;
- color: #333;
- font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
- padding-top: 0.75rem !important;
+ text-align: right;
+}
+
+.filter-header-title-span-filter {
+ margin-right: 7px;
+}
+
+.filter-header-title-span-icon {
+ margin-right: 3px;
cursor: pointer;
}
-.filter-filter-options {
- margin-bottom: 30px;
-}
-
.filter-options-div {
- margin-bottom: 12px;
- padding-bottom: 12px;
- border-bottom-style: solid;
- border-bottom-color: rgba(0, 0, 0, 0.125);
- border-bottom-width: 1px;
+ padding: 10px;
}
-.filter-dnd-area {
+.filter-fields-area {
height: 50px;
padding: 3px;
margin-bottom: 10px;
}
-.filter-dnd-object {
+.filter-fields-field {
height: 100%;
margin-left: 7px;
padding: 11px;
@@ -37,7 +32,7 @@
border-width: 1px;
border-radius: 7px;
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
- cursor: move;
+ cursor: pointer;
}
.filter-filter-fields {
@@ -65,3 +60,7 @@
border-right: 2px solid #428bca;
}
+.filter-table-dataset {
+ margin-top: 20px;
+}
+
diff --git a/public/css/NavigationComponent.css b/public/css/components/NavigationComponent.css
similarity index 92%
rename from public/css/NavigationComponent.css
rename to public/css/components/NavigationComponent.css
index 3e2273b67..2d64d9cdc 100644
--- a/public/css/NavigationComponent.css
+++ b/public/css/components/NavigationComponent.css
@@ -55,6 +55,14 @@
border-bottom: none !important;
}
+.left-side-menu-second-level span {
+ display: inline-flex;
+}
+
+.remove-custom-filter {
+ font-size: 10px !important;
+}
+
.left-side-menu-link-entry {
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
font-size: 14px;
diff --git a/public/css/infocenter/infocenterDetails.css b/public/css/infocenter/infocenterDetails.css
index 2f2debc00..cf81d073b 100644
--- a/public/css/infocenter/infocenterDetails.css
+++ b/public/css/infocenter/infocenterDetails.css
@@ -104,3 +104,7 @@
display: inline-block
}
}
+
+.gesperrtoption {
+ color: gray;
+}
\ No newline at end of file
diff --git a/public/js/components/filter/API.js b/public/js/components/filter/API.js
index 9c208a08c..ff09c452d 100644
--- a/public/js/components/filter/API.js
+++ b/public/js/components/filter/API.js
@@ -40,6 +40,22 @@ export const CoreFilterAPIs = {
}
);
},
+ /**
+ *
+ */
+ removeCustomFilter: function(wsParams) {
+ return CoreRESTClient.post(
+ 'components/Filter/removeCustomFilter',
+ {
+ filterUniqueId: wsParams.filterUniqueId,
+ filterType: wsParams.filterType,
+ filterId: wsParams.filterId
+ },
+ {
+ timeout: CORE_FILTER_CMPT_TIMEOUT
+ }
+ );
+ },
/**
*
*/
@@ -72,38 +88,6 @@ export const CoreFilterAPIs = {
}
);
},
- /**
- *
- */
- addSelectedField: function(wsParams) {
- return CoreRESTClient.post(
- 'components/Filter/addSelectedField',
- {
- filterUniqueId: wsParams.filterUniqueId,
- filterType: wsParams.filterType,
- selectedField: wsParams.selectedField
- },
- {
- timeout: CORE_FILTER_CMPT_TIMEOUT
- }
- );
- },
- /**
- *
- */
- removeSelectedField: function(wsParams) {
- return CoreRESTClient.post(
- 'components/Filter/removeSelectedField',
- {
- filterUniqueId: wsParams.filterUniqueId,
- filterType: wsParams.filterType,
- selectedField: wsParams.selectedField
- },
- {
- timeout: CORE_FILTER_CMPT_TIMEOUT
- }
- );
- },
/**
*
*/
diff --git a/public/js/components/filter/Filter.js b/public/js/components/filter/Filter.js
index 0deb57941..87100a00c 100644
--- a/public/js/components/filter/Filter.js
+++ b/public/js/components/filter/Filter.js
@@ -19,6 +19,10 @@ import {CoreFilterAPIs} from './API.js';
import {CoreRESTClient} from '../../RESTClient.js';
import {CoreFetchCmpt} from '../../components/Fetch.js';
+//
+const FILTER_COMPONENT_NEW_FILTER = 'Filter Component New Filter';
+const FILTER_COMPONENT_NEW_FILTER_TYPE = 'Filter Component New Filter Type';
+
/**
*
*/
@@ -28,6 +32,11 @@ export const CoreFilterCmpt = {
CoreFetchCmpt
},
props: {
+ title: String,
+ sideMenu: {
+ type: Boolean,
+ default: true
+ },
filterType: {
type: String,
required: true
@@ -38,19 +47,24 @@ export const CoreFilterCmpt = {
data: function() {
return {
// FilterCmpt properties
+ filterName: null,
fields: null,
dataset: null,
datasetMetadata: null,
selectedFields: null,
notSelectedFields: null,
filterFields: null,
- notFilterFields: null,
+ columnsAlias: null,
+
+ availableFilters: null,
// FetchCmpt binded properties
fetchCmptRefresh: false,
fetchCmptApiFunction: null,
fetchCmptApiFunctionParams: null,
- fetchCmptDataFetched: null
+ fetchCmptDataFetched: null,
+
+ tabulator: null
};
},
created: function() {
@@ -100,19 +114,23 @@ export const CoreFilterCmpt = {
// If the column has to be displayed or not
selectedFields.indexOf(columns[i].field) >= 0 ? columns[i].visible = true : columns[i].visible = false;
- if( columns[i].hasOwnProperty('resizable') ) {
- columns[i].visible ? columns[i].resizable = true : columns[i].resizable = false;
+ if (columns[i].hasOwnProperty('resizable'))
+ {
+ columns[i].visible ? columns[i].resizable = true : columns[i].resizable = false;
}
}
}
+ this.columnsAlias = columns;
+
// Define a default tabulator options in case it was not provided
let tabulatorOptions = {
height: 500,
layout: "fitColumns",
+ movableColumns: true,
+ reactiveData: true,
columns: columns,
- data: JSON.parse(JSON.stringify(this.dataset)),
- reactiveData: true
+ data: JSON.parse(JSON.stringify(this.dataset))
};
// If it was provided
@@ -120,14 +138,15 @@ export const CoreFilterCmpt = {
{
// Then copy it...
tabulatorOptions = this.tabulatorOptions;
- // ...and overwrite the properties data, reactiveData and columns
+ // ...and overwrite the properties data, reactiveData, movableColumns and columns
tabulatorOptions.data = JSON.parse(JSON.stringify(this.dataset));
- tabulatorOptions.reactiveData = true;
tabulatorOptions.columns = columns;
+ tabulatorOptions.reactiveData = true;
+ tabulatorOptions.movableColumns = true;
}
// Start the tabulator with the buid options
- let tabulator = new Tabulator(
+ this.tabulator = new Tabulator(
"#filterTableDataset",
tabulatorOptions
);
@@ -138,7 +157,7 @@ export const CoreFilterCmpt = {
// Attach all the provided event handlers to the started tabulator
for (let i = 0; i < this.tabulatorEvents.length; i++)
{
- tabulator.on(this.tabulatorEvents[i].event, this.tabulatorEvents[i].handler);
+ this.tabulator.on(this.tabulatorEvents[i].event, this.tabulatorEvents[i].handler);
}
}
},
@@ -158,17 +177,17 @@ export const CoreFilterCmpt = {
if (CoreRESTClient.hasData(response))
{
let data = CoreRESTClient.getData(response);
+ this.filterName = data.filterName;
this.dataset = data.dataset;
this.datasetMetadata = data.datasetMetadata;
this.fields = data.fields;
this.selectedFields = data.selectedFields;
this.notSelectedFields = this.fields.filter(x => this.selectedFields.indexOf(x) === -1);
-
this.filterFields = [];
- let tmpFilterFields = [];
+
for (let i = 0; i < data.datasetMetadata.length; i++)
{
- for (let j = 0; j< data.filters.length; j++)
+ for (let j = 0; j < data.filters.length; j++)
{
if (data.datasetMetadata[i].name == data.filters[j].name)
{
@@ -176,14 +195,20 @@ export const CoreFilterCmpt = {
filter.type = data.datasetMetadata[i].type;
this.filterFields.push(filter);
- tmpFilterFields.push(filter.name);
break;
}
}
}
- this.notFilterFields = this.fields.filter(x => tmpFilterFields.indexOf(x) === -1);
- this.setSideMenu(data);
+ // If the side menu is active
+ if (this.sideMenu === true)
+ {
+ this.setSideMenu(data);
+ }
+ else // otherwise use the dropdown in the filter options
+ {
+ this.setDropDownMenu(data);
+ }
}
else
{
@@ -212,6 +237,26 @@ export const CoreFilterCmpt = {
};
}
+ for (let filtersCount = 0; filtersCount < personalFilters.length; filtersCount++)
+ {
+ let link = personalFilters[filtersCount].link;
+
+ if (link == null) link = '#';
+
+ filtersArray[filtersArray.length] = {
+ link: link + personalFilters[filtersCount].filter_id,
+ description: personalFilters[filtersCount].desc,
+ subscriptDescription: personalFilters[filtersCount].subscriptDescription,
+ subscriptLinkClass: personalFilters[filtersCount].subscriptLinkClass,
+ subscriptLinkValue: personalFilters[filtersCount].subscriptLinkValue,
+ sort: filtersCount,
+ onClickCall: this.handlerGetFilterById,
+ onClickSubscriptCall: this.handlerRemoveCustomFilter
+ };
+ }
+
+ this.availableFilters = filtersArray;
+
this.$emit(
'nwNewEntry',
{
@@ -222,6 +267,40 @@ export const CoreFilterCmpt = {
}
);
},
+ /**
+ * Set the drop down menu
+ */
+ setDropDownMenu: function(data) {
+ let filters = data.sideMenu.filters;
+ let personalFilters = data.sideMenu.personalFilters;
+ let filtersArray = [];
+
+ for (let filtersCount = 0; filtersCount < filters.length; filtersCount++)
+ {
+ let link = filters[filtersCount].link;
+
+ if (link == null) link = '#';
+
+ filtersArray[filtersArray.length] = {
+ option: filters[filtersCount].filter_id,
+ description: filters[filtersCount].desc
+ };
+ }
+
+ for (let filtersCount = 0; filtersCount < personalFilters.length; filtersCount++)
+ {
+ let link = personalFilters[filtersCount].link;
+
+ if (link == null) link = '#';
+
+ filtersArray[filtersArray.length] = {
+ option: personalFilters[filtersCount].filter_id,
+ description: personalFilters[filtersCount].desc
+ };
+ }
+
+ this.availableFilters = filtersArray;
+ },
/**
* Used to start/refresh the FetchCmpt
*/
@@ -261,52 +340,72 @@ export const CoreFilterCmpt = {
this.getFilter
);
},
+ /**
+ *
+ */
+ handlerRemoveCustomFilter: function(event) {
+ //
+ this.startFetchCmpt(
+ CoreFilterAPIs.removeCustomFilter,
+ {
+ filterId: event.currentTarget.getAttribute("href").substring(1)
+ },
+ this.getFilter
+ );
+ },
/**
*
*/
handlerApplyFilterFields: function(event) {
let filterFields = [];
- let filterFieldDivs = document.getElementById('filterFields').getElementsByTagName('div');
+ let filterFieldDivRows = document.getElementById('filterFields').getElementsByClassName('row');
- for (let i = 0; i< filterFieldDivs.length; i++)
+ for (let i = 0; i< filterFieldDivRows.length; i++)
{
let filterField = {};
- for (let j = 0; j< filterFieldDivs[i].children.length; j++)
+ for (let j = 0; j< filterFieldDivRows[i].children.length; j++)
{
- if (filterFieldDivs[i].children[j].name != null)
+ let filterColumn = filterFieldDivRows[i].children[j];
+ let filterColumnElement = filterColumn.children[0];
+
+ // If the first column then search for the fields dropdown
+ if (j == 0) filterColumnElement = filterColumnElement.querySelector('select[name=fieldName]');
+
+ // If the filter name is _not_ null and it is _not_ a new filter
+ if (filterColumnElement.name != null && filterColumnElement.name != FILTER_COMPONENT_NEW_FILTER)
{
// Condition
- if (filterFieldDivs[i].children[j].name == 'condition' && filterFieldDivs[i].children[j].value == "")
+ if (filterColumnElement.name == 'condition' && filterColumnElement.value == "")
{
alert("Please fill all the filter options");
return;
}
// Name
- if (filterFieldDivs[i].children[j].name == 'fieldName')
+ if (filterColumnElement.name == 'fieldName')
{
- filterField.name = filterFieldDivs[i].children[j].value;
+ filterField.name = filterColumnElement.value;
}
// Operation
- if (filterFieldDivs[i].children[j].name == 'operation')
+ if (filterColumnElement.name == 'operation')
{
- filterField.operation = filterFieldDivs[i].children[j].value;
+ filterField.operation = filterColumnElement.value;
}
// Condition
- if (filterFieldDivs[i].children[j].name == 'condition')
+ if (filterColumnElement.name == 'condition')
{
- filterField.condition = filterFieldDivs[i].children[j].value;
+ filterField.condition = filterColumnElement.value;
}
// Option
- if (filterFieldDivs[i].children[j].name == 'option')
+ if (filterColumnElement.name == 'option')
{
- filterField.option = filterFieldDivs[i].children[j].value;
+ filterField.option = filterColumnElement.value;
}
}
}
- filterFields.push(filterField);
+ if (Object.entries(filterField).length > 0) filterFields.push(filterField);
}
//
@@ -321,41 +420,66 @@ export const CoreFilterCmpt = {
/**
*
*/
- handlerAddFilterField: function(event) {
- //
- this.startFetchCmpt(
- CoreFilterAPIs.addFilterField,
+ handlerChangeFilterField: function(oldValue, newValue) {
+
+ // If an old filter has been changed
+ if (oldValue != "")
+ {
+ for (let i = 0; i < this.filterFields.length; i++)
{
- filterField: event.currentTarget.value
- },
- this.getFilter
- );
+ if (this.filterFields[i].name == oldValue)
+ {
+ this.filterFields.splice(i, 1);
+ break;
+ }
+ }
+ }
+
+ // Then add the new filter
+ for (let i = 0; i < this.datasetMetadata.length; i++)
+ {
+ if (this.datasetMetadata[i].name == newValue)
+ {
+ let filter = {
+ name: this.datasetMetadata[i].name,
+ type: this.datasetMetadata[i].type
+ };
+
+ this.filterFields.push(filter);
+ break;
+ }
+ }
},
/**
*
*/
- handlerAddSelectedField: function(event) {
- //
- this.startFetchCmpt(
- CoreFilterAPIs.addSelectedField,
- {
- selectedField: event.currentTarget.value
- },
- this.getFilter
- );
+ handlerAddNewFilter: function(event) {
+ // Adds a new empty filter
+ this.filterFields.push({
+ name: FILTER_COMPONENT_NEW_FILTER,
+ type: FILTER_COMPONENT_NEW_FILTER_TYPE
+ });
},
- /**
+ /*
*
*/
- handlerRemoveSelectedField: function(event) {
- //
- this.startFetchCmpt(
- CoreFilterAPIs.removeSelectedField,
- {
- selectedField: event.currentTarget.getAttribute('field-to-remove')
- },
- this.getFilter
- );
+ handlerToggleSelectedField: function(event) {
+
+ // If it is a selected field
+ if (this.selectedFields.indexOf(event.target.innerText) != -1)
+ {
+ // then hide it
+ this.tabulator.hideColumn(event.target.innerText);
+ // and remove it from the this.selectedFields property
+ this.selectedFields.splice(this.selectedFields.indexOf(event.target.innerText), 1);
+ }
+ else // otherwise
+ {
+ // show it
+ this.tabulator.showColumn(event.target.innerText);
+ // and add it to the this.selectedFields property
+ this.selectedFields.push(event.target.innerText);
+ }
},
/**
*
@@ -374,51 +498,30 @@ export const CoreFilterCmpt = {
*
*/
handlerGetFilterById: function(event) {
- //
+
+ let filterId = null;
+
+ // Get the attribute href if side menu is rendered
+ let attr = event.currentTarget.getAttribute("href");
+
+ // Otherwise get the value of the drop down menu
+ if (attr == null)
+ {
+ filterId = event.currentTarget.value;
+ }
+ else
+ {
+ filterId = attr.substring(1);
+ }
+
+ // Ajax call
this.startFetchCmpt(
CoreFilterAPIs.getFilterById,
{
- filterId: event.currentTarget.getAttribute("href").substring(1)
+ filterId: filterId
},
this.render
);
- },
- handlerDragOver: function(event) {
- let draggedFieldToDisplay = event.currentTarget;
- let fieldsToDisplayDivs = document.getElementsByClassName('filter-dnd-object');
- let filterFilterOptions = document.getElementsByClassName('filter-filter-options')[0];
-
- // For each draggable element
- for (let i = 0; i < fieldsToDisplayDivs.length; i++)
- {
- let fieldToDisplayDiv = fieldsToDisplayDivs[i]; //
-
- // If the dragged element is not the same element in the loop
- if (draggedFieldToDisplay != fieldToDisplayDiv)
- {
- fieldToDisplayDiv.classList.remove("selection-after");
- fieldToDisplayDiv.classList.remove("selection-before");
-
- let fieldToDisplayDivCenter = (filterFilterOptions.offsetLeft + fieldToDisplayDiv.offsetLeft + fieldToDisplayDiv.offsetWidth) / 2;
-
- if (event.pageX > filterFilterOptions.offsetLeft + fieldToDisplayDiv.offsetLeft
- && event.pageX < filterFilterOptions.offsetLeft + fieldToDisplayDiv.offsetLeft + fieldToDisplayDiv.offsetWidth)
- {
- if (event.pageX > fieldToDisplayDivCenter)
- {
- fieldToDisplayDiv.classList.add("selection-after");
- fieldToDisplayDiv.classList.remove("selection-before");
- }
- else if (event.pageX < fieldToDisplayDivCenter)
- {
- fieldToDisplayDiv.classList.add("selection-before");
- fieldToDisplayDiv.classList.remove("selection-after");
- }
- }
- }
- }
- },
- handlerOnDrop: function() {
}
},
template: `
@@ -430,130 +533,192 @@ export const CoreFilterCmpt = {
@data-fetched="fetchCmptDataFetched">
-