diff --git a/cis/private/profile/zeitwunsch.php b/cis/private/profile/zeitwunsch.php index ef0840c87..73ba51bf9 100644 --- a/cis/private/profile/zeitwunsch.php +++ b/cis/private/profile/zeitwunsch.php @@ -29,7 +29,10 @@ require_once('../../../include/globals.inc.php'); require_once('../../../include/functions.inc.php'); require_once('../../../include/datum.class.php'); require_once('../../../include/zeitwunsch.class.php'); +require_once('../../../include/studiensemester.class.php'); +require_once('../../../include/zeitaufzeichnung_gd.class.php'); require_once('../../../include/benutzer.class.php'); +require_once('../../../include/mitarbeiter.class.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/sprache.class.php'); @@ -46,6 +49,7 @@ $uid = get_uid(); if(!check_lektor($uid)) die($p->t('global/keineBerechtigungFuerDieseSeite')); + $PHP_SELF = $_SERVER['PHP_SELF']; if(isset($_GET['type'])) @@ -107,6 +111,36 @@ $person = new benutzer(); if(!$person->load($uid)) die($person->errormsg); +$ma = new mitarbeiter($uid); +$fixangestellt = $ma->fixangestellt; + +// Nächstes Studiensemester +$ss = new Studiensemester(); +$ss->getNextStudiensemester(); +$next_ss = $ss->studiensemester_kurzbz; + +// Erklärung zu Pausen bei geteilten Arbeitszeiten speichern +if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit'])) +{ + $selbstverwaltete_pause = ($_GET['selbstverwaltete-pause'] == 'yes') ? true : false; + + $zeitaufzeichnung_gd = new Zeitaufzeichnung_gd(); + $zeitaufzeichnung_gd->uid = $uid; + $zeitaufzeichnung_gd->studiensemester_kurzbz = $next_ss; + $zeitaufzeichnung_gd->selbstverwaltete_pause = $selbstverwaltete_pause; + $za_gd = new Zeitaufzeichnung_gd(); + $za_gd->load($uid, $next_ss); + if ($za_gd->uid) + { + echo 'Bereits eingetragen'; + } + else if (!$zeitaufzeichnung_gd->save()) + { + echo $zeitaufzeichnung_gd->errormsg; + } + +} + ?> @@ -143,8 +177,42 @@ if(!$person->load($uid)) +
+ + + + + +
+

Zustimmung zur Verplanung in geteilter Arbeitszeit

+ +
+

+ t('zeitwunsch/geteilteArbeitszeit'); + $gd = new zeitaufzeichnung_gd(); + $gd->load($uid, $next_ss); + if ( ! $gd->uid ) + { + echo '

Zustimmung für '.$next_ss.': '; + echo 'ja'; + echo 'nein'; + echo '




'; + } + else + { + $zustimmung = ($gd->selbstverwaltete_pause) ? ' erteilt' : 'abgelehnt'; + echo '

Zustimmung für '.$next_ss.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').'

'; + } + //var_dump($gd); + ?> + +

+
+

+

t('zeitwunsch/zeitwunsch');?>

@@ -206,12 +274,16 @@ if(!$person->load($uid)) ?> -
"; - echo $p->t('zeitwunsch/formularZumEintragenDerZeitsperren', array($href)); - ?> - -

t('zeitwunsch/erklärung');?>:

+ +
+ +

t('zeitwunsch/erklärung');?>:

+ + "; + echo $p->t('zeitwunsch/formularZumEintragenDerZeitsperren', array($href)); + ?> +

t('zeitwunsch/kontrollierenSieIhreZeitwuensche');?>!

diff --git a/config/cis.config-default.inc.php b/config/cis.config-default.inc.php index 3f75b0af3..28376a04f 100644 --- a/config/cis.config-default.inc.php +++ b/config/cis.config-default.inc.php @@ -245,4 +245,8 @@ define('CIS_LVMENUE_CUTLENGTH', 21); // Gibt an, auf welche Seite TicketIds ala #1234 im Jahresplan verlinkt werden zB zur Verlinkung in Bugtracker define('JAHRESPLAN_TICKET_LINK','https://bug.technikum-wien.at/otrs/index.pl?Action=AgentTicketZoom;TicketNumber='); + +//Gibt an ob der Block zu Verplanung in geteilter Arbeitszeit bei den Zeitwünschen angezeigt wird. Default: false +define('CIS_ZEITWUNSCH_GD', false); + ?> diff --git a/include/zeitaufzeichnung_gd.class.php b/include/zeitaufzeichnung_gd.class.php new file mode 100644 index 000000000..db678addb --- /dev/null +++ b/include/zeitaufzeichnung_gd.class.php @@ -0,0 +1,126 @@ +db_add_param($user). + ' AND studiensemester_kurzbz = ' . $this->db_add_param($sem) . + 'limit 1'; + + if(!$this->db_query($qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + if($row = $this->db_fetch_object()) + { + $this->zeitaufzeichnung_gd_id = $row->zeitaufzeichnung_gd_id; + $this->uid = $row->uid; + $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + $this->selbstverwaltete_pause = $this->db_parse_bool($row->selbstverwaltete_pause); + } + else + { + $this->errormsg = 'Es ist kein Datensatz vorhanden'; + return false; + } + } + else + { + $this->errormsg = 'Falsche Parameterübergabe'; + return false; + } + } + + /** + * Saves decision about self-managing breaks during parted working times. + * @return boolean True, if saving succeeded. + */ + public function save() + { + if (is_string($this->uid) && + is_string($this->studiensemester_kurzbz) && + is_bool($this->selbstverwaltete_pause)) + { + $qry = ' + INSERT INTO campus.tbl_zeitaufzeichnung_gd ( + uid, + studiensemester_kurzbz, + selbstverwaltete_pause, + insertvon + ) + VALUES ('. + $this->db_add_param($this->uid). ', '. + $this->db_add_param($this->studiensemester_kurzbz). ', '. + $this->db_add_param($this->selbstverwaltete_pause, FHC_BOOLEAN). ', '. + $this->db_add_param($this->uid). ' + ); + '; + + if ($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der selbstverwalteten Pause'; + return false; + } + } + else + { + $this->errormsg = 'Falsche Parameterübergabe'; + return false; + } + } +} diff --git a/locale/de-AT/zeitwunsch.php b/locale/de-AT/zeitwunsch.php index 19e188530..a84da2b0e 100644 --- a/locale/de-AT/zeitwunsch.php +++ b/locale/de-AT/zeitwunsch.php @@ -14,7 +14,7 @@ $this->phrasen['zeitwunsch/bedeutung']='Bedeutung'; $this->phrasen['zeitwunsch/hierMoechteIchUnterrichten']='Hier möchte ich unterrichten'; $this->phrasen['zeitwunsch/hierKannIchUnterrichten']='Hier kann ich unterrichten'; $this->phrasen['zeitwunsch/nurInNotfaellen']='Hier unterrichte ich nur ungern'; -$this->phrasen['zeitwunsch/hierAufGarKeinenFall']='Hier kann ich gar nicht unterrichten'; +$this->phrasen['zeitwunsch/hierAufGarKeinenFall']='Hier kann ich gar nicht unterrichten'; $this->phrasen['zeitwunsch/folgendePunkteSindZuBeachten']='Folgende Punkte sind zu beachten'; $this->phrasen['zeitwunsch/verwendenSieDenWertNur']='Verwenden Sie den Wert -2 nur, wenn Sie zu dieser Stunde wirklich nicht können, um eine bessere Optimierung zu ermöglichen.'; $this->phrasen['zeitwunsch/sperrenSieNurTermine']='Markieren Sie mit den Werten -1 und -2 bitte nur Termine, die für die Lehre an der FH nicht in Frage kommen.
Die Zeitsperren sind nicht dafür gedacht, bereits zugesagte Stunden für bestimmte Studiengänge zu reservieren.'; @@ -22,4 +22,5 @@ $this->phrasen['zeitwunsch/esSolltenFuerJedeStunde']='Es sollten für jede Stund $this->phrasen['zeitwunsch/erklaerung']='Erklärung'; $this->phrasen['zeitwunsch/beiProblemenWendenSieSichAn']='Bei Problemen wenden Sie sich bitte an die'; $this->phrasen['zeitwunsch/profil']='Profil'; -?> \ No newline at end of file +$this->phrasen['zeitwunsch/geteilteArbeitszeit']='Ich bin mit der Verplanung meiner Lehre in getrennten Blöcken am Tagesrand einverstanden.'; +?> diff --git a/locale/en-US/zeitwunsch.php b/locale/en-US/zeitwunsch.php index 9d6e32119..dd9abdc3e 100644 --- a/locale/en-US/zeitwunsch.php +++ b/locale/en-US/zeitwunsch.php @@ -14,7 +14,7 @@ $this->phrasen['zeitwunsch/bedeutung']='Meaning'; $this->phrasen['zeitwunsch/hierMoechteIchUnterrichten']='I would like to teach at this time'; $this->phrasen['zeitwunsch/hierKannIchUnterrichten']='I can teach at this time'; $this->phrasen['zeitwunsch/nurInNotfaellen']='I would prefer not to teach at this time'; -$this->phrasen['zeitwunsch/hierAufGarKeinenFall']='I can not at all teach at this time'; +$this->phrasen['zeitwunsch/hierAufGarKeinenFall']='I can not at all teach at this time'; $this->phrasen['zeitwunsch/folgendePunkteSindZuBeachten']='Please note:'; $this->phrasen['zeitwunsch/verwendenSieDenWertNur']='To make a better optimization possible, please only use the value of -2 if you really can not teach at this time.'; $this->phrasen['zeitwunsch/sperrenSieNurTermine']='Please only mark times where you are absolutely not available to teach at the UAS with the numbers 1 and 2.
Do not mark times for specific courses that you have already been assigned to teach at the UAS as unavailable.'; @@ -22,4 +22,5 @@ $this->phrasen['zeitwunsch/esSolltenFuerJedeStunde']='The amount of preferred te $this->phrasen['zeitwunsch/erklaerung']='Explanation'; $this->phrasen['zeitwunsch/beiProblemenWendenSieSichAn']='If you are having problems, please contact the '; $this->phrasen['zeitwunsch/profil']='Profile'; -?> \ No newline at end of file +$this->phrasen['zeitwunsch/geteilteArbeitszeit']='Ich bin mit der Verplanung meiner Lehre in getrennten Blöcken am Tagesrand einverstanden.'; +?> diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index ac5f5fdba..dcac98148 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -2938,6 +2938,87 @@ if(!$result = @$db->db_query("SELECT bezeichnung_mehrsprachig FROM bis.tbl_orgfo } } +// Create SEQUENCE tbl_zeitaufzeichnung_gd_id +if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'tbl_zeitaufzeichnung_gd_id_seq'")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = ' + CREATE SEQUENCE campus.tbl_zeitaufzeichnung_gd_id_seq + START WITH 1 + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + '; + if (!$db->db_query($qry)) + echo 'campus.tbl_zeitaufzeichnung_gd_id_seq '.$db->db_last_error().'
'; + else + echo '
Created sequence: campus.tbl_zeitaufzeichnung_gd_id_seq'; + + // GRANT SELECT, UPDATE ON SEQUENCE campus.tbl_zeitaufzeichnung_gd_id_seq TO web; + $qry = 'GRANT SELECT, UPDATE ON SEQUENCE campus.tbl_zeitaufzeichnung_gd_id_seq TO web;'; + if (!$db->db_query($qry)) + echo 'campus.tbl_zeitaufzeichnung_gd_id_seq '.$db->db_last_error().'
'; + else + echo '
Granted privileges to vilesci on campus.tbl_zeitaufzeichnung_gd_id_seq'; + + // GRANT SELECT, UPDATE ON SEQUENCE campus.tbl_zeitaufzeichnung_gd_id_seq TO vilesci; + $qry = 'GRANT SELECT, UPDATE ON SEQUENCE campus.tbl_zeitaufzeichnung_gd_id_seq TO vilesci;'; + if (!$db->db_query($qry)) + echo 'campus.tbl_zeitaufzeichnung_gd_id_seq '.$db->db_last_error().'
'; + else + echo '
Granted privileges to vilesci on campus.tbl_zeitaufzeichnung_gd_id_seq'; + } +} + +// Create TABLE campus.tbl_zeitaufzeichnung_gd +if(!@$db->db_query("SELECT 0 FROM campus.tbl_zeitaufzeichnung_gd WHERE 0 = 1")) { + $qry = ' + CREATE TABLE campus.tbl_zeitaufzeichnung_gd + ( + zeitaufzeichnung_gd_id integer NOT NULL DEFAULT NEXTVAL(\'campus.tbl_zeitaufzeichnung_gd_id_seq\'::regclass), + uid varchar(32) NOT NULL, + studiensemester_kurzbz varchar(16) NOT NULL, + selbstverwaltete_pause boolean NOT NULL, + insertamum TIMESTAMP DEFAULT NOW(), + insertvon varchar(32), + updateamum TIMESTAMP, + updatevon varchar(32) + ); + + ALTER TABLE campus.tbl_zeitaufzeichnung_gd ADD CONSTRAINT pk_zeitaufzeichnung_gd_zeitaufzeichnung_gd_id PRIMARY KEY (zeitaufzeichnung_gd_id); + + ALTER TABLE campus.tbl_zeitaufzeichnung_gd ADD CONSTRAINT fk_zeitaufzeichnung_gd_uid FOREIGN KEY (uid) REFERENCES public.tbl_benutzer(uid) ON UPDATE CASCADE ON DELETE RESTRICT; + ALTER TABLE campus.tbl_zeitaufzeichnung_gd ADD CONSTRAINT fk_zeitaufzeichnung_gd_studiensemester_kurzbz FOREIGN KEY (studiensemester_kurzbz) REFERENCES public.tbl_studiensemester(studiensemester_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT; + ALTER TABLE campus.tbl_zeitaufzeichnung_gd ADD CONSTRAINT uk_zeitaufzeichnung_gd_uid_stsem UNIQUE (uid, studiensemester_kurzbz); + + COMMENT ON TABLE campus.tbl_zeitaufzeichnung_gd IS \'Table to manage the lectors parted working times; gd = Geteilte Dienste\'; + COMMENT ON COLUMN campus.tbl_zeitaufzeichnung_gd.selbstverwaltete_pause IS \'Lectors (dis-)agreement to self-manage breaks\'; + + '; + if (!$db->db_query($qry)) + echo 'campus.tbl_zeitaufzeichnung_gd ' . $db->db_last_error() . '
'; + else + echo '
Created table campus.tbl_zeitaufzeichnung_gd'; + + + // GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE campus.tbl_zeitaufzeichnung_gd TO web; + $qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE campus.tbl_zeitaufzeichnung_gd TO web;'; + if (!$db->db_query($qry)) + echo 'campus.tbl_zeitaufzeichnung_gd ' . $db->db_last_error() . '
'; + else + echo '
Granted privileges to web on campus.tbl_zeitaufzeichnung_gd'; + + // GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE campus.tbl_zeitaufzeichnung_gd TO vilesci; + $qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE campus.tbl_zeitaufzeichnung_gd TO vilesci;'; + if (!$db->db_query($qry)) + echo 'campus.tbl_zeitaufzeichnung_gd ' . $db->db_last_error() . '
'; + else + echo '
Granted privileges to vilesci on campus.tbl_zeitaufzeichnung_gd'; + +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; @@ -3022,6 +3103,7 @@ $tabellen=array( "campus.tbl_veranstaltung" => array("veranstaltung_id","titel","beschreibung","veranstaltungskategorie_kurzbz","inhalt","start","ende","freigabevon","freigabeamum","updateamum","updatevon","insertamum","insertvon"), "campus.tbl_veranstaltungskategorie" => array("veranstaltungskategorie_kurzbz","bezeichnung","bild","farbe"), "campus.tbl_zeitaufzeichnung" => array("zeitaufzeichnung_id","uid","aktivitaet_kurzbz","projekt_kurzbz","start","ende","beschreibung","oe_kurzbz_1","oe_kurzbz_2","insertamum","insertvon","updateamum","updatevon","ext_id","service_id","kunde_uid"), + "campus.tbl_zeitaufzeichnung_gd" => array("zeitaufzeichnung_gd_id","uid","studiensemester_kurzbz","selbstverwaltete_pause","insertamum","insertvon","updateamum","updatevon"), "campus.tbl_zeitsperre" => array("zeitsperre_id","zeitsperretyp_kurzbz","mitarbeiter_uid","bezeichnung","vondatum","vonstunde","bisdatum","bisstunde","vertretung_uid","updateamum","updatevon","insertamum","insertvon","erreichbarkeit_kurzbz","freigabeamum","freigabevon"), "campus.tbl_zeitsperretyp" => array("zeitsperretyp_kurzbz","beschreibung","farbe"), "campus.tbl_zeitwunsch" => array("stunde","mitarbeiter_uid","tag","gewicht","updateamum","updatevon","insertamum","insertvon"),