diff --git a/.gitignore b/.gitignore
index 3d4ae8085..a2fdf2444 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,9 @@
.htaccess
/nbproject/
+/vendor/*
+!/vendor/easyui
/.idea/
documents/
.settings
.project
-.buildpath
\ No newline at end of file
+.buildpath
diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php
index e9f34ea68..680a79ac7 100755
--- a/cis/private/tools/zeitaufzeichnung.php
+++ b/cis/private/tools/zeitaufzeichnung.php
@@ -415,76 +415,89 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
{
if (mb_detect_encoding(fgets($handle), 'UTF-8', true))
{
- set_time_limit(0);
- $anzahl = 0;
- $importtage_array = array();
- $ende_vorher = date('Y-m-d H:i:s');
- while(($data = fgetcsv($handle, 1000, ';', '"')) !== FALSE)
- {
- if($data[0] == $user)
+ set_time_limit(0);
+ $anzahl = 0;
+ $importtage_array = array();
+ $ende_vorher = date('Y-m-d H:i:s');
+ while(($data = fgetcsv($handle, 1000, ';', '"')) !== FALSE)
{
- if ($datum->formatDatum($data[2], $format='Y-m-d H:i:s') < $sperrdatum)
- echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum ('.$data[2].')
';
- else
- {
- $zeit->new = true;
- $zeit->insertamum = date('Y-m-d H:i:s');
- $zeit->updateamum = date('Y-m-d H:i:s');
- $zeit->updatevon = $user;
- $zeit->insertvon = $user;
- $zeit->uid = $data[0];
- $zeit->aktivitaet_kurzbz = $data[1];
- $zeit->start = $datum->formatDatum($data[2], $format='Y-m-d H:i:s');
- $zeit->ende = $datum->formatDatum($data[3], $format='Y-m-d H:i:s');
- $zeit->beschreibung = $data[4];
- $tag = $datum->formatDatum($data[2], $format='Y-m-d');
-
-
- if(!in_array($tag, $importtage_array))
- {
- $importtage_array[] = $tag;
- $zeit->deleteEntriesForUser($user, $tag);
- $tag_aktuell = $tag;
- }
- else
- {
- if ($ende_vorher < $zeit->start)
+ if($data[0] == $user)
+ {
+ if ($datum->formatDatum($data[2], $format='Y-m-d H:i:s') < $sperrdatum)
+ echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum ('.$data[2].')
';
+ else
+ {
+ $zeit->new = true;
+ $zeit->insertamum = date('Y-m-d H:i:s');
+ $zeit->updateamum = date('Y-m-d H:i:s');
+ $zeit->updatevon = $user;
+ $zeit->insertvon = $user;
+ $zeit->uid = $data[0];
+ $zeit->aktivitaet_kurzbz = $data[1];
+ $zeit->start = $datum->formatDatum($data[2], $format='Y-m-d H:i:s');
+ $zeit->ende = $datum->formatDatum($data[3], $format='Y-m-d H:i:s');
+ $zeit->beschreibung = $data[4];
+ $tag = $datum->formatDatum($data[2], $format='Y-m-d');
+
+
+
+ if(!in_array($tag, $importtage_array))
{
- $pause = new zeitaufzeichnung();
- $pause->new = true;
- $pause->insertamum = date('Y-m-d H:i:s');
- $pause->updateamum = date('Y-m-d H:i:s');
- $pause->updatevon = $user;
- $pause->insertvon = $user;
- $pause->uid = $user;
- $pause->aktivitaet_kurzbz = 'Pause';
- $pause->start = $ende_vorher;
- $pause->ende = $zeit->start;
- $zeit->beschreibung = '';
- if(!$pause->save())
+ $importtage_array[] = $tag;
+ $zeit->deleteEntriesForUser($user, $tag);
+ $tag_aktuell = $tag;
+ }
+ else
+ {
+ if ($ende_vorher < $zeit->start)
{
- echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$pause->errormsg.'';
+ $pause = new zeitaufzeichnung();
+ $pause->new = true;
+ $pause->insertamum = date('Y-m-d H:i:s');
+ $pause->updateamum = date('Y-m-d H:i:s');
+ $pause->updatevon = $user;
+ $pause->insertvon = $user;
+ $pause->uid = $user;
+ $pause->aktivitaet_kurzbz = 'Pause';
+ $pause->start = $ende_vorher;
+ $pause->ende = $zeit->start;
+ $zeit->beschreibung = '';
+ if(!$pause->save())
+ {
+ echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$pause->errormsg.'';
+ }
}
}
- }
-
- if($data[2] != $data[3])
- {
- if(!$zeit->save())
- {
- echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'('.$zeit->start.')';
+
+ $ende_vorher = $zeit->ende;
+ if($data[2] != $data[3])
+ {
+ if ($data[1] == 'LehreExtern')
+ {
+ $zeit->start = date('Y-m-d H:i:s', strtotime('+2 seconds', strtotime($data[2])));
+ $zeit->ende = date('Y-m-d H:i:s', strtotime('-2 seconds', strtotime($data[3])));
+ }
+ if(!$zeit->save())
+ {
+ echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'('.$zeit->start.')';
+ }
+ else
+ $anzahl++;
}
else
- $anzahl++;
+ $anzahl++;
+
}
- else
- $anzahl++;
- $ende_vorher = $zeit->ende;
}
}
- }
- if($anzahl>0)
- echo ''.$p->t("global/datenWurdenGespeichert").' ('.$anzahl.')';
+ if($anzahl>0)
+ {
+ echo ''.$p->t("global/datenWurdenGespeichert").' ('.$anzahl.')';
+ foreach ($importtage_array as $ptag)
+ {
+ $zeit->cleanPausenForUser($user, $ptag);
+ }
+ }
}
else
echo 'Datei konnte nicht importiert werden. Encoding ist nicht UTF-8!';
diff --git a/composer.json b/composer.json
new file mode 100644
index 000000000..0e40231b4
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,27 @@
+{
+ "require": {
+ "components/jquery": "2.1.4",
+ "components/angular.js": "1.3.16",
+ "components/bootstrap": "3.3.5"
+
+ },
+
+
+
+
+
+
+
+
+ "_comment":
+ {
+ "um GIT-Repos zu inkludieren, muss die url zuerst zu 'repositories' hinzugefügt werden. Anschließend kann es bei 'require' wie üblich mit angegeben werden:":{
+ "repositories": [
+ {"type": "git", "url": "https://github.com/BEISPIEL/BEISPIEL.git"}
+ ],
+ "require": {
+ "BEISPIEL/BEISPIEL": "x.x.x"
+ }
+ }
+ }
+}
diff --git a/composer.lock b/composer.lock
new file mode 100755
index 000000000..0cd476cb6
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,433 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+ "This file is @generated automatically"
+ ],
+ "hash": "6f613635b131d66244b30d0ee702a36b",
+ "content-hash": "60c05e7e5b04118d51a1bc59c4877b8d",
+ "packages": [
+ {
+ "name": "components/angular.js",
+ "version": "1.3.16",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/components/angular.js.git",
+ "reference": "84d0420402cf02b559d210b7286bd9a30655ca33"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/components/angular.js/zipball/84d0420402cf02b559d210b7286bd9a30655ca33",
+ "reference": "84d0420402cf02b559d210b7286bd9a30655ca33",
+ "shasum": ""
+ },
+ "type": "component",
+ "extra": {
+ "component": {
+ "name": "angularjs",
+ "scripts": [
+ "angular.js"
+ ],
+ "files": [
+ "angular-animate.js",
+ "angular-animate.min.js",
+ "angular-animate.min.js.map",
+ "angular-cookies.js",
+ "angular-cookies.min.js",
+ "angular-cookies.min.js.map",
+ "angular-csp.css",
+ "angular-loader.js",
+ "angular-loader.min.js",
+ "angular-loader.min.js.map",
+ "angular-mocks.js",
+ "angular-resource.js",
+ "angular-resource.min.js",
+ "angular-resource.min.js.map",
+ "angular-route.js",
+ "angular-route.min.js",
+ "angular-route.min.js.map",
+ "angular-sanitize.js",
+ "angular-sanitize.min.js",
+ "angular-sanitize.min.js.map",
+ "angular-scenario.js",
+ "angular-touch.js",
+ "angular-touch.min.js",
+ "angular-touch.min.js.map",
+ "angular.min.js",
+ "angular.min.js.map",
+ "i18n/angular-locale_af-na.js",
+ "i18n/angular-locale_af-za.js",
+ "i18n/angular-locale_af.js",
+ "i18n/angular-locale_am-et.js",
+ "i18n/angular-locale_am.js",
+ "i18n/angular-locale_ar-001.js",
+ "i18n/angular-locale_ar-ae.js",
+ "i18n/angular-locale_ar-bh.js",
+ "i18n/angular-locale_ar-dz.js",
+ "i18n/angular-locale_ar-eg.js",
+ "i18n/angular-locale_ar-iq.js",
+ "i18n/angular-locale_ar-jo.js",
+ "i18n/angular-locale_ar-kw.js",
+ "i18n/angular-locale_ar-lb.js",
+ "i18n/angular-locale_ar-ly.js",
+ "i18n/angular-locale_ar-ma.js",
+ "i18n/angular-locale_ar-om.js",
+ "i18n/angular-locale_ar-qa.js",
+ "i18n/angular-locale_ar-sa.js",
+ "i18n/angular-locale_ar-sd.js",
+ "i18n/angular-locale_ar-sy.js",
+ "i18n/angular-locale_ar-tn.js",
+ "i18n/angular-locale_ar-ye.js",
+ "i18n/angular-locale_ar.js",
+ "i18n/angular-locale_bg-bg.js",
+ "i18n/angular-locale_bg.js",
+ "i18n/angular-locale_bn-bd.js",
+ "i18n/angular-locale_bn-in.js",
+ "i18n/angular-locale_bn.js",
+ "i18n/angular-locale_ca-ad.js",
+ "i18n/angular-locale_ca-es.js",
+ "i18n/angular-locale_ca.js",
+ "i18n/angular-locale_cs-cz.js",
+ "i18n/angular-locale_cs.js",
+ "i18n/angular-locale_da-dk.js",
+ "i18n/angular-locale_da.js",
+ "i18n/angular-locale_de-at.js",
+ "i18n/angular-locale_de-be.js",
+ "i18n/angular-locale_de-ch.js",
+ "i18n/angular-locale_de-de.js",
+ "i18n/angular-locale_de-li.js",
+ "i18n/angular-locale_de-lu.js",
+ "i18n/angular-locale_de.js",
+ "i18n/angular-locale_el-cy.js",
+ "i18n/angular-locale_el-gr.js",
+ "i18n/angular-locale_el.js",
+ "i18n/angular-locale_en-as.js",
+ "i18n/angular-locale_en-au.js",
+ "i18n/angular-locale_en-bb.js",
+ "i18n/angular-locale_en-be.js",
+ "i18n/angular-locale_en-bm.js",
+ "i18n/angular-locale_en-bw.js",
+ "i18n/angular-locale_en-bz.js",
+ "i18n/angular-locale_en-ca.js",
+ "i18n/angular-locale_en-dsrt-us.js",
+ "i18n/angular-locale_en-dsrt.js",
+ "i18n/angular-locale_en-fm.js",
+ "i18n/angular-locale_en-gb.js",
+ "i18n/angular-locale_en-gu.js",
+ "i18n/angular-locale_en-gy.js",
+ "i18n/angular-locale_en-hk.js",
+ "i18n/angular-locale_en-ie.js",
+ "i18n/angular-locale_en-in.js",
+ "i18n/angular-locale_en-iso.js",
+ "i18n/angular-locale_en-jm.js",
+ "i18n/angular-locale_en-mh.js",
+ "i18n/angular-locale_en-mp.js",
+ "i18n/angular-locale_en-mt.js",
+ "i18n/angular-locale_en-mu.js",
+ "i18n/angular-locale_en-na.js",
+ "i18n/angular-locale_en-nz.js",
+ "i18n/angular-locale_en-ph.js",
+ "i18n/angular-locale_en-pk.js",
+ "i18n/angular-locale_en-pr.js",
+ "i18n/angular-locale_en-pw.js",
+ "i18n/angular-locale_en-sg.js",
+ "i18n/angular-locale_en-tc.js",
+ "i18n/angular-locale_en-tt.js",
+ "i18n/angular-locale_en-um.js",
+ "i18n/angular-locale_en-us.js",
+ "i18n/angular-locale_en-vg.js",
+ "i18n/angular-locale_en-vi.js",
+ "i18n/angular-locale_en-za.js",
+ "i18n/angular-locale_en-zw.js",
+ "i18n/angular-locale_en.js",
+ "i18n/angular-locale_es-419.js",
+ "i18n/angular-locale_es-ar.js",
+ "i18n/angular-locale_es-bo.js",
+ "i18n/angular-locale_es-cl.js",
+ "i18n/angular-locale_es-co.js",
+ "i18n/angular-locale_es-cr.js",
+ "i18n/angular-locale_es-do.js",
+ "i18n/angular-locale_es-ea.js",
+ "i18n/angular-locale_es-ec.js",
+ "i18n/angular-locale_es-es.js",
+ "i18n/angular-locale_es-gq.js",
+ "i18n/angular-locale_es-gt.js",
+ "i18n/angular-locale_es-hn.js",
+ "i18n/angular-locale_es-ic.js",
+ "i18n/angular-locale_es-mx.js",
+ "i18n/angular-locale_es-ni.js",
+ "i18n/angular-locale_es-pa.js",
+ "i18n/angular-locale_es-pe.js",
+ "i18n/angular-locale_es-pr.js",
+ "i18n/angular-locale_es-py.js",
+ "i18n/angular-locale_es-sv.js",
+ "i18n/angular-locale_es-us.js",
+ "i18n/angular-locale_es-uy.js",
+ "i18n/angular-locale_es-ve.js",
+ "i18n/angular-locale_es.js",
+ "i18n/angular-locale_et-ee.js",
+ "i18n/angular-locale_et.js",
+ "i18n/angular-locale_eu-es.js",
+ "i18n/angular-locale_eu.js",
+ "i18n/angular-locale_fa-af.js",
+ "i18n/angular-locale_fa-ir.js",
+ "i18n/angular-locale_fa.js",
+ "i18n/angular-locale_fi-fi.js",
+ "i18n/angular-locale_fi.js",
+ "i18n/angular-locale_fil-ph.js",
+ "i18n/angular-locale_fil.js",
+ "i18n/angular-locale_fr-be.js",
+ "i18n/angular-locale_fr-bf.js",
+ "i18n/angular-locale_fr-bi.js",
+ "i18n/angular-locale_fr-bj.js",
+ "i18n/angular-locale_fr-bl.js",
+ "i18n/angular-locale_fr-ca.js",
+ "i18n/angular-locale_fr-cd.js",
+ "i18n/angular-locale_fr-cf.js",
+ "i18n/angular-locale_fr-cg.js",
+ "i18n/angular-locale_fr-ch.js",
+ "i18n/angular-locale_fr-ci.js",
+ "i18n/angular-locale_fr-cm.js",
+ "i18n/angular-locale_fr-dj.js",
+ "i18n/angular-locale_fr-fr.js",
+ "i18n/angular-locale_fr-ga.js",
+ "i18n/angular-locale_fr-gf.js",
+ "i18n/angular-locale_fr-gn.js",
+ "i18n/angular-locale_fr-gp.js",
+ "i18n/angular-locale_fr-gq.js",
+ "i18n/angular-locale_fr-km.js",
+ "i18n/angular-locale_fr-lu.js",
+ "i18n/angular-locale_fr-mc.js",
+ "i18n/angular-locale_fr-mf.js",
+ "i18n/angular-locale_fr-mg.js",
+ "i18n/angular-locale_fr-ml.js",
+ "i18n/angular-locale_fr-mq.js",
+ "i18n/angular-locale_fr-ne.js",
+ "i18n/angular-locale_fr-re.js",
+ "i18n/angular-locale_fr-yt.js",
+ "i18n/angular-locale_fr.js",
+ "i18n/angular-locale_gl-es.js",
+ "i18n/angular-locale_gl.js",
+ "i18n/angular-locale_gsw-ch.js",
+ "i18n/angular-locale_gsw.js",
+ "i18n/angular-locale_gu-in.js",
+ "i18n/angular-locale_gu.js",
+ "i18n/angular-locale_he-il.js",
+ "i18n/angular-locale_he.js",
+ "i18n/angular-locale_hi-in.js",
+ "i18n/angular-locale_hi.js",
+ "i18n/angular-locale_hr-hr.js",
+ "i18n/angular-locale_hr.js",
+ "i18n/angular-locale_hu-hu.js",
+ "i18n/angular-locale_hu.js",
+ "i18n/angular-locale_id-id.js",
+ "i18n/angular-locale_id.js",
+ "i18n/angular-locale_in.js",
+ "i18n/angular-locale_is-is.js",
+ "i18n/angular-locale_is.js",
+ "i18n/angular-locale_it-it.js",
+ "i18n/angular-locale_it-sm.js",
+ "i18n/angular-locale_it.js",
+ "i18n/angular-locale_iw.js",
+ "i18n/angular-locale_ja-jp.js",
+ "i18n/angular-locale_ja.js",
+ "i18n/angular-locale_kn-in.js",
+ "i18n/angular-locale_kn.js",
+ "i18n/angular-locale_ko-kr.js",
+ "i18n/angular-locale_ko.js",
+ "i18n/angular-locale_ln-cd.js",
+ "i18n/angular-locale_ln.js",
+ "i18n/angular-locale_lt-lt.js",
+ "i18n/angular-locale_lt.js",
+ "i18n/angular-locale_lv-lv.js",
+ "i18n/angular-locale_lv.js",
+ "i18n/angular-locale_ml-in.js",
+ "i18n/angular-locale_ml.js",
+ "i18n/angular-locale_mr-in.js",
+ "i18n/angular-locale_mr.js",
+ "i18n/angular-locale_ms-my.js",
+ "i18n/angular-locale_ms.js",
+ "i18n/angular-locale_mt-mt.js",
+ "i18n/angular-locale_mt.js",
+ "i18n/angular-locale_nl-cw.js",
+ "i18n/angular-locale_nl-nl.js",
+ "i18n/angular-locale_nl-sx.js",
+ "i18n/angular-locale_nl.js",
+ "i18n/angular-locale_no.js",
+ "i18n/angular-locale_or-in.js",
+ "i18n/angular-locale_or.js",
+ "i18n/angular-locale_pl-pl.js",
+ "i18n/angular-locale_pl.js",
+ "i18n/angular-locale_pt-br.js",
+ "i18n/angular-locale_pt-pt.js",
+ "i18n/angular-locale_pt.js",
+ "i18n/angular-locale_ro-ro.js",
+ "i18n/angular-locale_ro.js",
+ "i18n/angular-locale_ru-ru.js",
+ "i18n/angular-locale_ru.js",
+ "i18n/angular-locale_sk-sk.js",
+ "i18n/angular-locale_sk.js",
+ "i18n/angular-locale_sl-si.js",
+ "i18n/angular-locale_sl.js",
+ "i18n/angular-locale_sq-al.js",
+ "i18n/angular-locale_sq.js",
+ "i18n/angular-locale_sr-cyrl-rs.js",
+ "i18n/angular-locale_sr-latn-rs.js",
+ "i18n/angular-locale_sr.js",
+ "i18n/angular-locale_sv-se.js",
+ "i18n/angular-locale_sv.js",
+ "i18n/angular-locale_sw-tz.js",
+ "i18n/angular-locale_sw.js",
+ "i18n/angular-locale_ta-in.js",
+ "i18n/angular-locale_ta.js",
+ "i18n/angular-locale_te-in.js",
+ "i18n/angular-locale_te.js",
+ "i18n/angular-locale_th-th.js",
+ "i18n/angular-locale_th.js",
+ "i18n/angular-locale_tl.js",
+ "i18n/angular-locale_tr-tr.js",
+ "i18n/angular-locale_tr.js",
+ "i18n/angular-locale_uk-ua.js",
+ "i18n/angular-locale_uk.js",
+ "i18n/angular-locale_ur-pk.js",
+ "i18n/angular-locale_ur.js",
+ "i18n/angular-locale_vi-vn.js",
+ "i18n/angular-locale_vi.js",
+ "i18n/angular-locale_zh-cn.js",
+ "i18n/angular-locale_zh-hans-cn.js",
+ "i18n/angular-locale_zh-hk.js",
+ "i18n/angular-locale_zh-tw.js",
+ "i18n/angular-locale_zh.js",
+ "i18n/angular-locale_zu-za.js",
+ "i18n/angular-locale_zu.js"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Shim repository for Angular.js",
+ "homepage": "http://angularjs.org",
+ "time": "2015-06-07 20:10:38"
+ },
+ {
+ "name": "components/bootstrap",
+ "version": "3.3.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/components/bootstrap.git",
+ "reference": "d71c2a234c61f53f1109a26ba8155902a51f8ca5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/components/bootstrap/zipball/d71c2a234c61f53f1109a26ba8155902a51f8ca5",
+ "reference": "d71c2a234c61f53f1109a26ba8155902a51f8ca5",
+ "shasum": ""
+ },
+ "require": {
+ "components/jquery": ">=1.9.1 <3.0"
+ },
+ "suggest": {
+ "components/bootstrap-default": "Provide a theme for Bootstrap as components/bootstrap only provides the CSS as file assets"
+ },
+ "type": "component",
+ "extra": {
+ "component": {
+ "scripts": [
+ "js/bootstrap.js"
+ ],
+ "files": [
+ "js/*.js",
+ "css/*.css",
+ "css/*.map",
+ "fonts/*",
+ "less/mixins/*.less",
+ "less/*.less"
+ ],
+ "shim": {
+ "deps": [
+ "jquery"
+ ]
+ }
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jacob Thornton",
+ "email": "jacobthornton@gmail.com"
+ },
+ {
+ "name": "Mark Otto",
+ "email": "markdotto@gmail.com"
+ }
+ ],
+ "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
+ "homepage": "http://getbootstrap.com",
+ "keywords": [
+ "css",
+ "framework",
+ "front-end",
+ "less",
+ "mobile-first",
+ "responsive",
+ "web"
+ ],
+ "time": "2015-06-17 06:08:09"
+ },
+ {
+ "name": "components/jquery",
+ "version": "2.1.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/components/jquery.git",
+ "reference": "7b1d1104656a092423fbfba13c5920e9bbba290c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/components/jquery/zipball/7b1d1104656a092423fbfba13c5920e9bbba290c",
+ "reference": "7b1d1104656a092423fbfba13c5920e9bbba290c",
+ "shasum": ""
+ },
+ "type": "component",
+ "extra": {
+ "component": {
+ "scripts": [
+ "jquery.js"
+ ],
+ "files": [
+ "jquery.min.js",
+ "jquery.min.map",
+ "jquery-migrate.js",
+ "jquery-migrate.min.js"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "John Resig",
+ "email": "jeresig@gmail.com"
+ }
+ ],
+ "description": "jQuery JavaScript Library",
+ "homepage": "http://jquery.com",
+ "time": "2015-05-08 05:04:47"
+ }
+ ],
+ "packages-dev": [],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": [],
+ "platform-dev": []
+}
diff --git a/include/foerdervertrag.class.php b/include/foerdervertrag.class.php
new file mode 100644
index 000000000..4e78d2bfa
--- /dev/null
+++ b/include/foerdervertrag.class.php
@@ -0,0 +1,238 @@
+
+ */
+/**
+ * Klasse Reihungstest
+ * @create 10-01-2007
+ */
+require_once(dirname(__FILE__).'/basis_db.class.php');
+
+class foerdervertrag extends basis_db
+{
+ public $new; // boolean
+ public $result = array();
+
+ //Tabellenspalten
+ public $foerdervertag_id;// integer
+ public $studiengang_kz; // integer
+ public $foerdergeber; // string
+ public $foerdersatz; // integer
+ public $foerdergruppe; // string
+ public $gueltigvon; // string
+ public $gueltigbis; // string
+ public $erlaeuterungen; // string
+ public $insertamum; // timestamp
+ public $insertvon; // bigint
+ public $updateamum; // timestamp
+ public $updatevon; // bigint
+
+ /**
+ * Konstruktor
+ * @param $reihungstest_id ID der Adresse die geladen werden soll (Default=null)
+ */
+ public function __construct($foerdervertag_id=null)
+ {
+ parent::__construct();
+
+ if(!is_null($foerdervertag_id))
+ $this->load($foerdervertag_id);
+ }
+
+ /**
+ * Laedt den Fördervertrag mit der ID $foerdervertag_id
+ * @param $foerdervertag_id ID des zu ladenden Fördervertrags
+ * @return true wenn ok, false im Fehlerfall
+ */
+ public function load($foerdervertag_id)
+ {
+ if(!is_numeric($foerdervertag_id))
+ {
+ $this->errormsg = 'Foerdervertag_id ist ungueltig';
+ return false;
+ }
+
+ $qry = "SELECT * FROM public.tbl_foerdervertrag WHERE foerdervertag_id=".$this->db_add_param($foerdervertag_id, FHC_INTEGER, false);
+
+ if($this->db_query($qry))
+ {
+ if($row = $this->db_fetch_object())
+ {
+ $this->foerdervertag_id = $row->foerdervertag_id;
+ $this->studiengang_kz = $row->studiengang_kz;
+ $this->foerdergeber = $row->foerdergeber;
+ $this->foerdersatz = $row->foerdersatz;
+ $this->foerdergruppe = $row->foerdergruppe;
+ $this->gueltigvon = $row->gueltigvon;
+ $this->gueltigbis = $row->gueltigbis;
+ $this->erlaeuterungen = $row->erlaeuterungen;
+ $this->insertamum = $row->insertamum;
+ $this->insertvon = $row->insertvon;
+ $this->updateamum = $row->updateamum;
+ $this->updatevon = $row->updatevon;
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Foerdervertrag existiert nicht';
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Reihungstests';
+ return false;
+ }
+ }
+
+ /**
+ * Liefert alle Förderverträge
+ */
+ public function getAll($stg_kz=null)
+ {
+ $qry = "SELECT * FROM public.tbl_foerdervertrag ";
+ if($stg_kz!=null)
+ $qry.=" WHERE studiengang_kz=".$this->db_add_param($stg_kz);
+ $qry.=";";
+
+ if($this->db_query($qry))
+ {
+ while($row = $this->db_fetch_object())
+ {
+ $obj = new foerdervertrag();
+
+ $obj->foerdervertrag_id = $row->foerdervertrag_id;
+ $obj->studiengang_kz = $row->studiengang_kz;
+ $obj->foerdergeber = $row->foerdergeber;
+ $obj->foerdersatz = $row->foerdersatz;
+ $obj->foerdergruppe = $row->foerdergruppe;
+ $obj->gueltigvon = $row->gueltigvon;
+ $obj->gueltigbis = $row->gueltigbis;
+ $obj->erlaeuterungen = $row->erlaeuterungen;
+ $obj->insertamum = $row->insertamum;
+ $obj->insertvon = $row->insertvon;
+ $obj->updateamum = $row->updateamum;
+ $obj->updatevon = $row->updatevon;
+
+ $this->result[] = $obj;
+ }
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Förderverträge.';
+ return false;
+ }
+ }
+
+ /**
+ * Prueft die Variablen auf Gueltigkeit
+ * @return true wenn ok, false im Fehlerfall
+ */
+ private function validate()
+ {
+ //Zahlenfelder pruefen
+ if(!is_numeric($this->studiengang_kz))
+ {
+ $this->errormsg='studiengang_kz enthaelt ungueltige Zeichen';
+ return false;
+ }
+
+ $this->errormsg = '';
+ return true;
+ }
+
+ /**
+ * Speichert den aktuellen Datensatz in die Datenbank
+ * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt
+ * andernfalls wird der Datensatz mit der ID in $reihungstest_id aktualisiert
+ * @return true wenn ok, false im Fehlerfall
+ */
+ public function save()
+ {
+ if(!$this->validate())
+ return false;
+
+ if($this->new)
+ {
+ //Neuen Datensatz einfuegen
+
+ $qry='BEGIN; INSERT INTO public.tbl_foerdervertrag (studiengang_kz, foerdergeber, foerdersatz, foerdergruppe, gueltigvon, gueltigbis, erlaeuterungen,
+ insertamum, insertvon) VALUES('.
+ $this->db_add_param($this->studiengang_kz, FHC_INTEGER).', '.
+ $this->db_add_param($this->foerdergeber).', '.
+ $this->db_add_param($this->foerdersatz).', '.
+ $this->db_add_param($this->foerdergruppe).', '.
+ $this->db_add_param($this->gueltigvon).', '.
+ $this->db_add_param($this->gueltigbis).', '.
+ $this->db_add_param($this->erlaeuterungen).', now(),'.
+ $this->db_add_param($this->insertvon).');';
+ }
+ else
+ {
+// $qry='UPDATE public.tbl_reihungstest SET '.
+// 'studiengang_kz='.$this->db_add_param($this->studiengang_kz, FHC_INTEGER).', '.
+// 'ort_kurzbz='.$this->db_add_param($this->ort_kurzbz).', '.
+// 'anmerkung='.$this->db_add_param($this->anmerkung).', '.
+// 'datum='.$this->db_add_param($this->datum).', '.
+// 'uhrzeit='.$this->db_add_param($this->uhrzeit).', '.
+// 'updateamum= now(), '.
+// 'updatevon='.$this->db_add_param($this->updatevon).', '.
+// 'max_teilnehmer='.$this->db_add_param($this->max_teilnehmer).', '.
+// 'oeffentlich='.$this->db_add_param($this->oeffentlich, FHC_BOOLEAN).', '.
+// 'freigeschaltet='.$this->db_add_param($this->freigeschaltet, FHC_BOOLEAN).', '.
+// 'studiensemester_kurzbz='.$this->db_add_param($this->studiensemester_kurzbz).' '.
+// 'WHERE reihungstest_id='.$this->db_add_param($this->reihungstest_id, FHC_INTEGER, false).';';
+ }
+
+ if($this->db_query($qry))
+ {
+ if($this->new)
+ {
+ $qry = "SELECT currval('public.seq_foerdervertrag_foerdervertrag_id') as id";
+ if($this->db_query($qry))
+ {
+ if($row = $this->db_fetch_object())
+ {
+ $this->foerdervertrag_id = $row->id;
+ $this->db_query('COMMIT');
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Auslesen der Sequence';
+ $this->db_query('ROLLBACK');
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Auslesen der Sequence';
+ $this->db_query('ROLLBACK');
+ return false;
+ }
+ }
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Speichern der Daten';
+ return false;
+ }
+ }
+}
diff --git a/include/meta/easyui.php b/include/meta/easyui.php
new file mode 100644
index 000000000..247a02c57
--- /dev/null
+++ b/include/meta/easyui.php
@@ -0,0 +1,35 @@
+
+ */
+//require_once('/config/vilesci.config.inc.php'); Muss vor dieser Datei eingebunden werden!
+
+
+
+//Originaldateien des herstellers
+echo '';
+echo '';
+
+echo '';
+echo '';
+
+
+//Anpassungen
+echo '';
+echo '';
+
diff --git a/include/reihungstest.class.php b/include/reihungstest.class.php
index b9ba63a8e..bcfef7f53 100644
--- a/include/reihungstest.class.php
+++ b/include/reihungstest.class.php
@@ -46,6 +46,7 @@ class reihungstest extends basis_db
public $freigeschaltet=false; // boolean
public $oeffentlich=false; // boolean
public $max_teilnehmer; // integer
+ public $studiensemester_kurzbz; //string
/**
* Konstruktor
@@ -92,6 +93,7 @@ class reihungstest extends basis_db
$this->max_teilnehmer = $row->max_teilnehmer;
$this->oeffentlich = $this->db_parse_bool($row->oeffentlich);
$this->freigeschaltet = $this->db_parse_bool($row->freigeschaltet);
+ $this->studiensemester_kurzbz =$row->studiensemester_kurzbz;
return true;
}
else
@@ -139,6 +141,7 @@ class reihungstest extends basis_db
$obj->max_teilnehmer = $row->max_teilnehmer;
$obj->oeffentlich = $this->db_parse_bool($row->oeffentlich);
$obj->freigeschaltet = $this->db_parse_bool($row->freigeschaltet);
+ $obj->studiensemester_kurzbz =$row->studiensemester_kurzbz;
$this->result[] = $obj;
}
@@ -195,7 +198,7 @@ class reihungstest extends basis_db
//Neuen Datensatz einfuegen
$qry='BEGIN; INSERT INTO public.tbl_reihungstest (studiengang_kz, ort_kurzbz, anmerkung, datum, uhrzeit,
- insertamum, insertvon, updateamum, updatevon, max_teilnehmer, oeffentlich, freigeschaltet) VALUES('.
+ insertamum, insertvon, updateamum, updatevon, max_teilnehmer, oeffentlich, freigeschaltet, studiensemester_kurzbz) VALUES('.
$this->db_add_param($this->studiengang_kz, FHC_INTEGER).', '.
$this->db_add_param($this->ort_kurzbz).', '.
$this->db_add_param($this->anmerkung).', '.
@@ -205,7 +208,8 @@ class reihungstest extends basis_db
$this->db_add_param($this->updatevon).','.
$this->db_add_param($this->max_teilnehmer).','.
$this->db_add_param($this->oeffentlich, FHC_BOOLEAN).','.
- $this->db_add_param($this->freigeschaltet, FHC_BOOLEAN).');';
+ $this->db_add_param($this->freigeschaltet, FHC_BOOLEAN).','.
+ $this->db_add_param($this->studiensemester_kurzbz).');';
}
else
{
@@ -219,10 +223,11 @@ class reihungstest extends basis_db
'updatevon='.$this->db_add_param($this->updatevon).', '.
'max_teilnehmer='.$this->db_add_param($this->max_teilnehmer).', '.
'oeffentlich='.$this->db_add_param($this->oeffentlich, FHC_BOOLEAN).', '.
- 'freigeschaltet='.$this->db_add_param($this->freigeschaltet, FHC_BOOLEAN).' '.
+ 'freigeschaltet='.$this->db_add_param($this->freigeschaltet, FHC_BOOLEAN).', '.
+ 'studiensemester_kurzbz='.$this->db_add_param($this->studiensemester_kurzbz).' '.
'WHERE reihungstest_id='.$this->db_add_param($this->reihungstest_id, FHC_INTEGER, false).';';
}
-
+
if($this->db_query($qry))
{
if($this->new)
@@ -266,12 +271,18 @@ class reihungstest extends basis_db
* @param $order (optional)
* @return true wenn ok, sonst false
*/
- public function getReihungstest($studiengang_kz,$order=null)
+ public function getReihungstest($studiengang_kz,$order=null,$studiensemester_kurzbz=null)
{
$qry = "SELECT * FROM public.tbl_reihungstest WHERE studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER, false);
+ if ($studiensemester_kurzbz!=null)
+ $qry .=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz, FHC_STRING, false);
+
if ($order!=null)
- $qry .=" ORDER BY ".$order.";";
+ $qry .=" ORDER BY ".$order;
+
+
+ $qry.= ";";
if($this->db_query($qry))
{
@@ -293,6 +304,7 @@ class reihungstest extends basis_db
$obj->max_teilnehmer = $row->max_teilnehmer;
$obj->oeffentlich = $this->db_parse_bool($row->oeffentlich);
$obj->freigeschaltet = $this->db_parse_bool($row->freigeschaltet);
+ $obj->studiensemester_kurzbz =$row->studiensemester_kurzbz;
$this->result[] = $obj;
}
@@ -341,6 +353,7 @@ class reihungstest extends basis_db
$obj->max_teilnehmer = $row->max_teilnehmer;
$obj->oeffentlich = $this->db_parse_bool($row->oeffentlich);
$obj->freigeschaltet = $this->db_parse_bool($row->freigeschaltet);
+ $obj->studiensemester_kurzbz =$row->studiensemester_kurzbz;
$this->result[] = $obj;
}
@@ -381,6 +394,7 @@ class reihungstest extends basis_db
$obj->max_teilnehmer = $row->max_teilnehmer;
$obj->oeffentlich = $this->db_parse_bool($row->oeffentlich);
$obj->freigeschaltet = $this->db_parse_bool($row->freigeschaltet);
+ $obj->studiensemester_kurzbz =$row->studiensemester_kurzbz;
$this->result[] = $obj;
}
diff --git a/include/vendor_custom/easyui/easyui.css b/include/vendor_custom/easyui/easyui.css
new file mode 100644
index 000000000..586eb7cb7
--- /dev/null
+++ b/include/vendor_custom/easyui/easyui.css
@@ -0,0 +1,17 @@
+.panel-body {
+ overflow: auto;
+ border-top-width: 0;
+ padding: 0;
+}
+.panel-body-noheader {
+ border-top-width: 1px;
+}
+.panel-header,
+.panel-body {
+ border-color: #888;
+}
+.panel-body {
+ background-color: #EEE;
+ color: #333;
+ font-size: 12px;
+}
diff --git a/include/vendor_custom/easyui/icon.css b/include/vendor_custom/easyui/icon.css
new file mode 100755
index 000000000..0b15469c2
--- /dev/null
+++ b/include/vendor_custom/easyui/icon.css
@@ -0,0 +1,12 @@
+.icon-fhc-chart{
+ background:url('../../../skin/images/Graphs_clip_art.svg') no-repeat center center;
+ background-size: 16px 16px;
+}
+.icon-fhc-report{
+ background:url('../../../skin/images/x-office-presentation.svg') no-repeat center center;
+ background-size: 16px 16px;
+}
+.icon-fhc-statistik{
+ background:url('../../../skin/images/x-office-spreadsheet.svg') no-repeat center center;
+ background-size: 16px 16px;
+}
diff --git a/include/zeitaufzeichnung.class.php b/include/zeitaufzeichnung.class.php
index 7bca0a777..b036ec3ee 100755
--- a/include/zeitaufzeichnung.class.php
+++ b/include/zeitaufzeichnung.class.php
@@ -439,6 +439,40 @@ class zeitaufzeichnung extends basis_db
}
}
+ /**
+ * Löscht Pauseneinträge eines Users für einen Tag, die außerhalb der Arbeitszeit liegen
+ * Löscht Pauseneinträge an Tagen ohne Arbeitszeit
+ * @param string $user
+ * @param string $tag Y-m-d
+ */
+ public function cleanPausenForUser($user, $tag)
+ {
+ $where = "uid=".$this->db_add_param($user);
+
+ $qry = "
+ delete from campus.tbl_zeitaufzeichnung where aktivitaet_kurzbz = 'Pause' and start::date = '$tag' and $where and
+(
+start::time >=
+(SELECT max(ende::time) as endzeit from campus.tbl_zeitaufzeichnung where $where and start::date = '$tag' AND (aktivitaet_kurzbz != 'LehreExtern' or aktivitaet_kurzbz is null ) and aktivitaet_kurzbz != 'Pause')
+or
+ende::time<=
+(SELECT min(start::time) as startzeit from campus.tbl_zeitaufzeichnung where $where and start::date = '$tag' AND (aktivitaet_kurzbz != 'LehreExtern' or aktivitaet_kurzbz is null ) and aktivitaet_kurzbz != 'Pause')
+or not exists
+(select 1 from campus.tbl_zeitaufzeichnung where aktivitaet_kurzbz != 'LehreExtern' and aktivitaet_kurzbz != 'Pause' and start::date = '$tag' and $where )
+)
+ ";
+
+ if($result = $this->db_query($qry))
+ {
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
+
/**
* Holt alle ZA-Einträge Typ LehreIntern und LehreExtern eines Users
* für das laufende Studienjahr und gibt die Summen in einem Array zurück
@@ -470,7 +504,7 @@ class zeitaufzeichnung extends basis_db
$where = "mitarbeiter_uid=".$this->db_add_param($user);
$where_sem = "l.studiensemester_kurzbz=".$this->db_add_param($sem);
$qry = "
- select sum(m.semesterstunden) from lehre.tbl_lehreinheitmitarbeiter m, lehre.tbl_lehreinheit l where $where and $where_sem and l.lehreinheit_id = m.lehreinheit_id
+ select sum(m.semesterstunden) from lehre.tbl_lehreinheitmitarbeiter m, lehre.tbl_lehreinheit l where $where and $where_sem and l.lehreinheit_id = m.lehreinheit_id and m.stundensatz*m.semesterstunden > 0
";
if($result = $this->db_query($qry))
diff --git a/locale/de-SFU/fas.dtd b/locale/de-SFU/fas.dtd
index 3608b4536..f817e1bea 100644
--- a/locale/de-SFU/fas.dtd
+++ b/locale/de-SFU/fas.dtd
@@ -258,6 +258,9 @@
+
+
+
diff --git a/skin/images/Graphs_clip_art.svg b/skin/images/Graphs_clip_art.svg
new file mode 100644
index 000000000..00a7f9e76
--- /dev/null
+++ b/skin/images/Graphs_clip_art.svg
@@ -0,0 +1,2043 @@
+
+
+
diff --git a/skin/images/x-office-presentation.svg b/skin/images/x-office-presentation.svg
new file mode 100644
index 000000000..179e0e41d
--- /dev/null
+++ b/skin/images/x-office-presentation.svg
@@ -0,0 +1,567 @@
+
+
+
diff --git a/skin/images/x-office-spreadsheet.svg b/skin/images/x-office-spreadsheet.svg
new file mode 100644
index 000000000..cbc4df2e8
--- /dev/null
+++ b/skin/images/x-office-spreadsheet.svg
@@ -0,0 +1,704 @@
+
+
+
diff --git a/system/checksystem.php b/system/checksystem.php
index e81a1402b..d8f77ac09 100644
--- a/system/checksystem.php
+++ b/system/checksystem.php
@@ -20,10 +20,11 @@
*
* Beschreibung:
* Dieses Skript prueft die gesamte Systemumgebung und sollte nach jedem Update gestartet werden.
- * Geprueft wird: - die Datenbank auf aktualitaet, dabei werden fehlende Attribute angelegt.
+ * Geprueft wird: die Datenbank per "dbupdate_VERSION.php" auf aktualitaet, dabei werden fehlende Attribute angelegt.
*/
require_once('../config/system.config.inc.php');
require_once('../include/basis_db.class.php');
+require_once('../version.php');
// Datenbank Verbindung
$db = new basis_db();
@@ -4129,6 +4130,14 @@ if (!$result=@$db->db_query($sql_query))
if($error==false)
echo '
Gegenpruefung fehlerfrei';
+echo '