Merge remote-tracking branch 'origin/master'

This commit is contained in:
Manfred Kindl
2018-01-08 19:15:35 +01:00
21 changed files with 1274 additions and 671 deletions
@@ -8,6 +8,10 @@ class InfoCenter extends VileSci_Controller
{
parent::__construct();
//
$this->load->model('system/Filters_model', 'FiltersModel');
//
$this->load->library('WidgetLib');
}
@@ -16,17 +20,12 @@ class InfoCenter extends VileSci_Controller
*/
public function index()
{
$listFiltersSent = array(
'Sent 1' => 100,
'Sent 2' => 200,
'Sent 3' => 300
);
$listFiltersSent = array();
$listFiltersNotSent = array();
$listFiltersNotSent = array(
'Not Sent 1' => 400,
'Not Sent 2' => 500,
'Not Sent 3' => 600
);
$listFiltersSent = $this->_getFilterList('%InfoCenterSentApplication%');
$listFiltersNotSent = $this->_getFilterList('%InfoCenterNotSentApplication%');
$this->load->view(
'system/infocenter/infocenter.php',
@@ -36,4 +35,38 @@ class InfoCenter extends VileSci_Controller
)
);
}
/**
*
*/
private function _getFilterList($filter_kurzbz)
{
$listFilters = array();
$personActionsArray = array(
'app' => 'aufnahme',
'dataset_name' => 'PersonActions',
'person_id' => null,
'default_filter' => false,
'array_length(description, 1) >' => 0
);
$this->FiltersModel->resetQuery();
$this->FiltersModel->addSelect('filter_id, description');
$this->FiltersModel->addOrder('sort', 'ASC');
$personActionsArray['filter_kurzbz ILIKE'] = $filter_kurzbz;
$filters = $this->FiltersModel->loadWhere($personActionsArray);
if (hasData($filters))
{
for ($filtersCounter = 0; $filtersCounter < count($filters->retval); $filtersCounter++)
{
$filter = $filters->retval[$filtersCounter];
$listFilters[$filter->filter_id] = $filter->description[0];
}
}
return $listFilters;
}
}
@@ -2,8 +2,15 @@
if (! defined("BASEPATH")) exit("No direct script access allowed");
/**
* Class InfocenterDetails
* shows aufnahme-related data for a person and its prestudents, enables document and zgv checks,
* displays and saves Notizen for a person, logs aufnahme-related actions for a person
*/
class InfocenterDetails extends VileSci_Controller
{
//app name for logging
const APP = 'aufnahme';
/**
* constructor
@@ -11,20 +18,13 @@ class InfocenterDetails extends VileSci_Controller
public function __construct()
{
parent::__construct();
// Load models
$this->load->model('person/person_model', 'PersonModel');
$this->load->model('person/kontakt_model', 'KontaktModel');
$this->load->model('person/adresse_model', 'AdresseModel');
$this->load->model('person/notiz_model', 'NotizModel');
$this->load->model('person/notizzuordnung_model', 'NotizzuordnungModel');
$this->load->model('crm/prestudent_model', 'PrestudentModel');
$this->load->model('crm/prestudentstatus_model', 'PrestudentstatusModel');
$this->load->model('crm/akte_model', 'AkteModel');
$this->load->model('crm/statusgrund_model', 'StatusgrundModel');
$this->load->model('codex/nation_model', 'NationModel');
$this->load->model('codex/zgv_model', 'ZgvModel');
$this->load->model('codex/zgvmaster_model', 'ZgvmasterModel');
$this->load->model('organisation/studiengang_model', 'StudiengangModel');
$this->load->library('DmsLib');
$this->load->library('WidgetLib');
@@ -33,53 +33,27 @@ class InfocenterDetails extends VileSci_Controller
$this->load->helper('fhcauth');
$this->load->helper('url');
$this->app = 'aufnahme';
$this->uid = getAuthUID();
if(!$this->uid)
show_error('user authentification failed');
}
public function index()
{
//TODO error page
}
/**
* loads all necessary Person data: Stammdaten (name, svnr, contact, ...), Dokumente, Logs and Notizen
* @param $person_id
* @return array
*/
private function __loadPersonData($person_id)
{
$person = $this->PersonModel->load($person_id);
$stammdaten = $this->PersonModel->getPersonStammdaten($person_id);
if ($person->error)
if ($stammdaten->error)
{
show_error($person->retval);
show_error($stammdaten->retval);
}
$staatsbuergerschaft = $this->NationModel->load($person->retval[0]->staatsbuergerschaft);
if ($staatsbuergerschaft->error)
{
show_error($staatsbuergerschaft->retval);
}
$geburtsnation = $this->NationModel->load($person->retval[0]->geburtsnation);
if ($geburtsnation->error)
{
show_error($geburtsnation->retval);
}
$this->KontaktModel->addDistinct();
$this->KontaktModel->addSelect('kontakttyp, kontakt');
$kontakte = $this->KontaktModel->loadWhere(array('person_id' => $person_id));
if ($kontakte->error)
{
show_error($kontakte->retval);
}
$adresse = $this->AdresseModel->loadWhere(array('person_id' => $person_id));
if ($adresse->error)
{
show_error($adresse->retval);
}
if(!isset($stammdaten->retval))
return null;
$dokumente = $this->AkteModel->loadWhere(array('person_id' => $person_id));
@@ -88,41 +62,30 @@ class InfocenterDetails extends VileSci_Controller
show_error($dokumente->retval);
}
$logs = $this->personloglib->getLogs($person_id, $this->app);
$logs = $this->personloglib->getLogs($person_id, $this::APP);
foreach($logs as $log)
$log->logdata = json_decode($log->logdata);
$notizen = $this->NotizModel->getNotiz($person_id);
$this->NotizzuordnungModel->addSelect('notiz_id');
$notizzuordnung = $this->NotizzuordnungModel->loadWhere(array('person_id' => $person_id));
if ($notizzuordnung->error)
if ($notizen->error)
{
show_error($notizzuordnung->retval);
}
$notizen = array();
foreach ($notizzuordnung->retval as $notiz_id)
{
$notiz = $this->NotizModel->load($notiz_id->notiz_id);
$notizen[] = $notiz->retval[0];
show_error($notizen->retval);
}
$data = array (
'person' => $person->retval[0],
'staatsbuergerschaft' => $staatsbuergerschaft->retval[0],
'geburtsnation' => $geburtsnation->retval[0],
'kontakte' => $kontakte->retval,
'adresse' => isset($adresse->retval[0]) ? $adresse->retval[0] : null,
'stammdaten' => $stammdaten->retval,
'dokumente' => $dokumente->retval,
'logs' => $logs,
'notizen' => $notizen
'notizen' => $notizen->retval
);
return $data;
}
/**
* loads all necessary Prestudent data: Zgv data, Statusgruende
* @param $person_id
* @return array
*/
private function __loadPrestudentData($person_id)
{
$zgvpruefungen = [];
@@ -136,117 +99,14 @@ class InfocenterDetails extends VileSci_Controller
foreach ($prestudenten->retval as $prestudent)
{
$zgvpruefung = new stdClass();
$zgvpruefung->prestudent_id = $prestudent->prestudent_id;
$prestudent = $this->PrestudentModel->getPrestudentWithZgv($prestudent->prestudent_id);
//Prestudentstatus
$lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent->prestudent_id);
if ($lastStatus->error)
if ($prestudent->error)
{
show_error($lastStatus->retval);
show_error($prestudent->retval);
}
$zgvpruefung->prestudentstatus = $lastStatus->retval[0];
// Studiengang
$this->StudiengangModel->addSelect('kurzbzlang, bezeichnung, typ');//TODO need bezeichnung?
$studiengang = $this->StudiengangModel->load($prestudent->studiengang_kz);
if ($studiengang->error)
{
show_error($studiengang->retval);
}
$zgvpruefung->studiengang = $studiengang->retval[0]->kurzbzlang;
$zgvpruefung->studiengangtyp = $studiengang->retval[0]->typ;
// Zgv
if (isset($prestudent->zgv_code))
{
$this->ZgvModel->addSelect('zgv_code, zgv_bez');
$zgv = $this->ZgvModel->load($prestudent->zgv_code);
if ($zgv->error)
{
show_error($zgv->retval);
}
$zgvpruefung->zgv_code = $zgv->retval[0]->zgv_code;
$zgvpruefung->zgv_bez = $zgv->retval[0]->zgv_bez;
}
else
{
$zgvpruefung->zgv_code = null;
$zgvpruefung->zgv_bez = null;
}
$zgvpruefung->zgvort = $prestudent->zgvort;
$zgvpruefung->zgvdatum = $prestudent->zgvdatum;
// Zgv Nation
if (isset($prestudent->zgvnation))
{
$this->NationModel->addSelect('nation_code, kurztext');
$zgvnation = $this->NationModel->load($prestudent->zgvnation);
if ($zgvnation->error)
{
show_error($zgvnation->retval);
}
$zgvpruefung->zgvnation_code = $zgvnation->retval[0]->nation_code;
$zgvpruefung->zgvnation_bez = $zgvnation->retval[0]->kurztext;
}
else
{
$zgvnation = null;
$zgvpruefung->zgvnation_code = null;
$zgvpruefung->zgvnation_bez = null;
}
// Zgv Master
if (isset($prestudent->zgvmas_code))
{
$this->ZgvmasterModel->addSelect('zgvmas_code, zgvmas_bez');
$zgvmas = $this->ZgvmasterModel->load($prestudent->zgvmas_code);
if ($zgvmas->error)
{
show_error($zgvmas->retval);
}
$zgvpruefung->zgvmas_code = $zgvmas->retval[0]->zgvmas_code;
$zgvpruefung->zgvmas_bez = $zgvmas->retval[0]->zgvmas_bez;
}
else
{
$zgvpruefung->zgvmas_code = null;
$zgvpruefung->zgvmas_bez = null;
}
$zgvpruefung->zgvmaort = $prestudent->zgvmaort;
$zgvpruefung->zgvmadatum = $prestudent->zgvmadatum;
// Zgv Master Nation
if (isset($prestudent->zgvmanation))
{
$this->NationModel->addSelect('nation_code, kurztext');
$zgvmanation = $this->NationModel->load($prestudent->zgvmanation);
if ($zgvmanation->error)
{
show_error($zgvmanation->retval);
}
$zgvpruefung->zgvmanation_code = $zgvmanation->retval[0]->nation_code;
$zgvpruefung->zgvmanation_bez = $zgvmanation->retval[0]->kurztext;
}
else
{
$zgvmanation = null;
$zgvpruefung->zgvmanation_code = null;
$zgvpruefung->zgvmanation_bez = null;
}
$zgvpruefungen[] = $zgvpruefung;
$zgvpruefungen[] = $prestudent->retval[0];
}
//TODO replace with widget
@@ -260,19 +120,33 @@ class InfocenterDetails extends VileSci_Controller
return $data;
}
/**
* initialization function, gets person and prestudent data and loads the view with the data
* @param $person_id
*/
public function showDetails($person_id)
{
if(!is_numeric($person_id))
show_error('person id is not numeric!');
$persondata = $this->__loadPersonData($person_id);
if(!isset($persondata))
show_error('person does not exist!');
$prestudentdata = $this->__loadPrestudentData($person_id);
$this->load->view('system/infocenter/infocenterDetails.php', array_merge($persondata, $prestudentdata));
}
/**
* saves if a document has been formal geprueft. saves current timestamp if checked as geprueft, or null if not.
*/
public function saveFormalGeprueft()
{
$akte_id = $this->input->get('akte_id');
$formalgeprueft = $this->input->get('formal_geprueft');
$person_id = $this->input->get('person_id');
if(!isset($akte_id) || !isset($formalgeprueft) || !isset($person_id))
show_error('Parameters not set!');
$akte = $this->AkteModel->load($akte_id);
if ($akte->error)
@@ -280,23 +154,28 @@ class InfocenterDetails extends VileSci_Controller
show_error($akte->retval);
}
$timestamp = (isset($formalgeprueft) && $formalgeprueft === 'true')? date('Y-m-d H:i:s') : null;
$this->AkteModel->update($akte_id, array('formal_geprueft_amum' => $timestamp));
$timestamp = ($formalgeprueft === 'true') ? date('Y-m-d H:i:s') : null;
$result = $this->AkteModel->update($akte_id, array('formal_geprueft_amum' => $timestamp));
if ($result->error)
{
show_error($result->retval);
}
//write person log
$this->personloglib->log($person_id, 'Action', array('name' => 'Dokument formal geprüft', 'message' => 'Dokument'.$akte->titel.' formal geprüft, gesetzt auf '.(is_null($timestamp) ? 'NULL' : $timestamp), 'success' => 'true'), $this->app, null, $this->uid);
redirect('/system/infocenter/InfocenterDetails/showDetails/'.$person_id);
$this->personloglib->log($person_id, 'Action', array('name' => 'Dokument formal geprüft', 'message' => 'Dokument '.$akte->titel.' formal geprüft, gesetzt auf '.(is_null($timestamp) ? 'NULL' : $timestamp), 'success' => 'true'), $this::APP, null, $this->uid);
//redirect to start page
redirect('/system/infocenter/InfocenterDetails/showDetails/'.$person_id.'#DokPruef');
}
/**
* saves a zgv for a prestudent. includes Ort, Datum, Nation for bachelor and master.
* @param $prestudent_id
*/
public function saveZgvPruefung($prestudent_id)
{
// prestudentdata
$studiensemester = $this->input->post('studiensemester') === 'null' ? null : $this->input->post('studiensemester');
$ausbildungssemester = $this->input->post('ausbildungssemester');
// zgvdata
$zgv_code = $this->input->post('zgv') === 'null' ? null : $this->input->post('zgv');
$zgv_code = $this->input->post('zgv') === 'null' ? null : $this->input->post('zgv');//check for string null, in case dropdown changed to default value
$zgvort = $this->input->post('zgvort');
$zgvdatum = $this->input->post('zgvdatum');
$zgvdatum = empty($zgvdatum) ? null : date_format(date_create($zgvdatum), 'Y-m-d');
@@ -309,20 +188,6 @@ class InfocenterDetails extends VileSci_Controller
$zgvmadatum = empty($zgvmadatum) ? null : date_format(date_create($zgvmadatum), 'Y-m-d');
$zgvmanation_code = $this->input->post('zgvmanation') === 'null' ? null : $this->input->post('zgvmanation');
$lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id);
if ($lastStatus->error)
{
show_error($lastStatus->retval);
}
$result = $this->PrestudentstatusModel->update(array('prestudent_id' => $prestudent_id, 'studiensemester_kurzbz' => $lastStatus->retval[0]->studiensemester_kurzbz, 'ausbildungssemester' => $lastStatus->retval[0]->ausbildungssemester), array('studiensemester_kurzbz' => $studiensemester, 'ausbildungssemester' => $ausbildungssemester));
if ($result->error)
{
show_error($result->retval);
}
$result = $this->PrestudentModel->update($prestudent_id, array('zgv_code' => $zgv_code, 'zgvort' => $zgvort, 'zgvdatum' => $zgvdatum, 'zgvnation' => $zgvnation_code,
'zgvmas_code' => $zgvmas_code, 'zgvmaort' => $zgvmaort, 'zgvmadatum' => $zgvmadatum, 'zgvmanation' => $zgvmanation_code));
@@ -331,15 +196,22 @@ class InfocenterDetails extends VileSci_Controller
show_error($result->retval);
}
//get extended Prestudent data for logging
$logdata = $this->__getPersonAndStudiengangFromPrestudent($prestudent_id);
$this->personloglib->log($logdata['person_id'], 'Action', array('name' => 'Zgv gespeichert', 'message' => 'Zgv für Studiengang '.$logdata['studiengang_kurzbz'].' wurde gespeichert ', 'success' => 'true'), $this->app, null, $this->uid);
$this->personloglib->log($logdata['person_id'], 'Action', array('name' => 'Zgv gespeichert', 'message' => 'Zgv für Studiengang '.$logdata['studiengang_kurzbz'].' wurde gespeichert', 'success' => 'true'), $this::APP, null, $this->uid);
$this->__redirectToStart($prestudent_id);
$this->__redirectToStart($prestudent_id, 'ZgvPruef');
}
/**
* saves Absage for Prestudent including the reason for the Absage (statusgrund).
* inserts Studiensemester and Ausbildungssemester for the new Absage of (chronologically) last status.
* @param $prestudent_id
*/
public function saveAbsage($prestudent_id)
{
//TODO email messaging
$statusgrund = $this->input->post('statusgrund');
$lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id);
@@ -358,11 +230,16 @@ class InfocenterDetails extends VileSci_Controller
$logdata = $this->__getPersonAndStudiengangFromPrestudent($prestudent_id);
$this->personloglib->log($logdata['person_id'], 'Processstate', array('name' => 'Interessent abgewiesen', 'message' => 'Interessent wurde für Studiengang '.$logdata['studiengang_kurzbz'].' abgewiesen', 'success' => 'true'), $this->app, null, $this->uid);
$this->personloglib->log($logdata['person_id'], 'Processstate', array('name' => 'Interessent abgewiesen', 'message' => 'Interessent wurde für Studiengang '.$logdata['studiengang_kurzbz'].' abgewiesen', 'success' => 'true'), $this::APP, null, $this->uid);
$this->__redirectToStart($prestudent_id);
$this->__redirectToStart($prestudent_id, 'ZgvPruef');
}
/**
* saves Freigabe of a Prestudent to the Studiengang.
* updates bestaetigtam and bestaetigtvon fields of the last status
* @param $prestudent_id
*/
public function saveFreigabe($prestudent_id)
{
$lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id);
@@ -382,11 +259,15 @@ class InfocenterDetails extends VileSci_Controller
$logdata = $this->__getPersonAndStudiengangFromPrestudent($prestudent_id);
$this->personloglib->log($logdata['person_id'], 'Processstate', array('name' => 'Interessent freigegeben', 'message' => 'Interessent wurde für Studiengang '.$logdata['studiengang_kurzbz'].' freigegeben', 'success' => 'true'), $this->app, null, $this->uid);
$this->personloglib->log($logdata['person_id'], 'Processstate', array('name' => 'Interessent freigegeben', 'message' => 'Interessent wurde für Studiengang '.$logdata['studiengang_kurzbz'].' freigegeben', 'success' => 'true'), $this::APP, null, $this->uid);
$this->__redirectToStart($prestudent_id);
$this->__redirectToStart($prestudent_id, 'ZgvPruef');
}
/**
* saves a new Notiz for a person
* @param $person_id
*/
public function saveNotiz($person_id)
{
$titel = $this->input->post('notiztitel');
@@ -395,11 +276,15 @@ class InfocenterDetails extends VileSci_Controller
$this->NotizModel->addNotizForPerson($person_id, $titel, $text, $erledigt, $this->uid);
$this->personloglib->log($person_id, 'Action', array('name' => 'Notiz hinzugefügt', 'message' => 'Notiz mit Titel '.$titel.' wurde hinzugefügt', 'success' => 'true'), $this->app, null, $this->uid);
$this->personloglib->log($person_id, 'Action', array('name' => 'Notiz hinzugefügt', 'message' => 'Notiz mit Titel '.$titel.' wurde hinzugefügt', 'success' => 'true'), $this::APP, null, $this->uid);
redirect('/system/infocenter/InfocenterDetails/showDetails/'.$person_id);
redirect('/system/infocenter/InfocenterDetails/showDetails/'.$person_id.'#NotizAkt');
}
/**
* Outputs content of an Akte, sends appropriate headers (so the document can be downloaded)
* @param $akte_id
*/
public function outputAkteContent($akte_id)
{
$akte = $this->AkteModel->load($akte_id);
@@ -416,22 +301,34 @@ class InfocenterDetails extends VileSci_Controller
show_error($aktecontent->retval);
}
header("Content-type: ".$akte->retval[0]->mimetype);
header('Content-Disposition: attachment; filename="'.$akte->retval[0]->titel.'"');
echo $aktecontent->retval;
$this->output
->set_status_header(200)
->set_content_type($akte->retval[0]->mimetype, 'utf-8')
->set_header('Content-Disposition: attachment; filename="'.$akte->retval[0]->titel.'"')
->set_output($aktecontent->retval)
->_display();
}
private function __redirectToStart($prestudent_id)
/**
* helper function for redirecting to initial page for person from a prestudent-specific page
* @param $prestudent_id
* @param $section optional section of the page to go to
*/
private function __redirectToStart($prestudent_id, $section = '')
{
$this->PrestudentModel->addSelect('person_id');
$person_id = $this->PrestudentModel->load($prestudent_id)->retval[0]->person_id;
redirect('/system/infocenter/InfocenterDetails/showDetails/'.$person_id);
redirect('/system/infocenter/InfocenterDetails/showDetails/'.$person_id.'#'.$section);
}
/**
* helper function retrieves personid and studiengang kurzbz from a prestudent id
* @param $prestudent_id
* @return array
*/
private function __getPersonAndStudiengangFromPrestudent($prestudent_id)
{
$this->PrestudentModel->addSelect('person_id, studiengang_kz');
$prestudent = $this->PrestudentModel->load($prestudent_id);
$prestudent = $this->PrestudentModel->getPrestudentWithZgv($prestudent_id);
if ($prestudent->error)
{
@@ -439,16 +336,7 @@ class InfocenterDetails extends VileSci_Controller
}
$person_id = $prestudent->retval[0]->person_id;
$this->StudiengangModel->addSelect('kurzbzlang');//TODO need bezeichnung?
$studiengang = $this->StudiengangModel->load($prestudent->retval[0]->studiengang_kz);
if ($studiengang->error)
{
show_error($studiengang->retval);
}
$studiengang_kurzbz = $studiengang->retval[0]->kurzbzlang;
$studiengang_kurzbz = $prestudent->retval[0]->studiengang;
return array('person_id' => $person_id, 'studiengang_kurzbz' => $studiengang_kurzbz);
}
+18 -2
View File
@@ -46,7 +46,8 @@ class PersonLogLib
}
/**
* Gets Logs for a Person, filtered by Parameters
* Gets Logs for a Person, filtered by parameters.
* Requirements for retrieving log: name is set
* @param int $person_id ID of the Person.
* @param string $app Name of the App.
* @param string $oe_kurzbz Organisations Unit.
@@ -55,8 +56,23 @@ class PersonLogLib
public function getLogs($person_id, $app = null, $oe_kurzbz = null)
{
$result = $this->ci->PersonLogModel->filterLog($person_id, $app, $oe_kurzbz);
if (isSuccess($result))
return $result->retval;
{
$decoded_logs = array();
//decode logs
foreach ($result->retval as $log)
{
$log->logdata = json_decode($log->logdata);
//requirement - logname not null
if (isset($log->logdata->name))
{
$decoded_logs[] = $log;
}
}
return $decoded_logs;
}
else
show_error($result->retval);
}
@@ -192,4 +192,38 @@ class Prestudent_model extends DB_Model
return $this->execQuery(sprintf($query, is_array($prestudent_id) ? 'IN' : '='), array($prestudent_id));
}
/**
* gets extended zgv data (with bezeichnung) for a prestudent
* includes last status, Studiengang, zgv, zgv master
* @param $prestudent_id
*/
public function getPrestudentWithZgv($prestudent_id)
{
$this->addSelect('tbl_prestudent.*, tbl_studiengang.kurzbzlang as studiengang, tbl_studiengang.typ as studiengangtyp, tbl_zgv.zgv_code, tbl_zgv.zgv_bez,
tbl_prestudent.zgvort, tbl_prestudent.zgvdatum, tbl_prestudent.zgvnation as zgvnation_code,
tbl_zgvmaster.zgvmas_code, tbl_zgvmaster.zgvmas_bez, tbl_prestudent.zgvmaort, tbl_prestudent.zgvmadatum, tbl_prestudent.zgvmanation as zgvmanation_code');
$this->addJoin('public.tbl_studiengang', 'studiengang_kz', 'LEFT');
$this->addJoin('bis.tbl_zgv', 'zgv_code', 'LEFT');
$this->addJoin('bis.tbl_zgvmaster', 'zgvmas_code', 'LEFT');
$prestudent = $this->load($prestudent_id);
if($prestudent->error)
return error($prestudent->retval);
//Prestudentstatus
$this->load->model('crm/prestudentstatus_model', 'PrestudentstatusModel');
$lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id);
if ($lastStatus->error)
{
return error($lastStatus->retval);
}
$prestudent->retval[0]->prestudentstatus = $lastStatus->retval[0];
return success($prestudent->retval);
}
}
+14 -1
View File
@@ -131,5 +131,18 @@ class Notiz_model extends DB_Model
return $result;
}
/**
* gets all Notizen for a person
* @param $person_id
*/
public function getNotiz($person_id)
{
// Join with the table public.tbl_notizzuordnung using notiz_id
$this->addJoin('public.tbl_notizzuordnung', 'notiz_id');
return $this->loadWhere(array('person_id' => $person_id));
}
// ------------------------------------------------------------------------------------------------------
}
}
@@ -152,4 +152,46 @@ class Person_model extends DB_Model
return $result;
}
/**
* gets Stammdaten for a person, including contactdata in textform from other tables
* nation, kontakt, adresse
* @param $person_id
* @return array
*/
public function getPersonStammdaten($person_id)
{
$this->addSelect('tbl_person.*, s.kurztext as staatsbuergerschaft, g.kurztext as geburtsnation');
$this->addJoin('bis.tbl_nation s', 'tbl_person.staatsbuergerschaft = s.nation_code', 'LEFT');
$this->addJoin('bis.tbl_nation g', 'tbl_person.geburtsnation = g.nation_code', 'LEFT');
$person = $this->load($person_id);
if($person->error)
return error($person->retval);
//return null if not found
if(count($person->retval) < 1)
return success(null);
$this->load->model('person/kontakt_model', 'KontaktModel');
$this->load->model('person/adresse_model', 'AdresseModel');
$this->KontaktModel->addDistinct();
$this->KontaktModel->addSelect('kontakttyp, anmerkung, kontakt, zustellung');
$this->KontaktModel->addOrder('kontakttyp');
$kontakte = $this->KontaktModel->loadWhere(array('person_id' => $person_id));
if($kontakte->error)
return error($kontakte->retval);
$adressen = $this->AdresseModel->loadWhere(array('person_id' => $person_id));
if($adressen->error)
return error($adressen->retval);
$stammdaten = $person->retval[0];
$stammdaten->kontakte = $kontakte->retval;
$stammdaten->adressen = $adressen->retval;
return success($stammdaten);
}
}
@@ -1,27 +1,71 @@
<?php
$filterWidgetArray = array(
'query' => '
SELECT *
FROM (
SELECT p.person_id AS "PersonId",
p.nachname AS "Nachname",
p.vorname AS "Vorname",
k.kontakt AS "Email",
p.aktiv AS "Aktiv",
k.updateamum AS "UpdateDate"
FROM public.tbl_person p INNER JOIN public.tbl_kontakt k USING(person_id)
p.nachname AS "Nachname",
p.gebdatum AS "Gebdatum",
(SELECT zeitpunkt
FROM system.tbl_log
WHERE app = \'aufnahme\'
AND person_id = p.person_id
ORDER BY zeitpunkt DESC
LIMIT 1) AS "LastAction",
(SELECT insertvon
FROM system.tbl_log
WHERE app = \'aufnahme\'
AND person_id = p.person_id
ORDER BY zeitpunkt DESC
LIMIT 1) AS "User/Operator",
(SELECT pss.studiensemester_kurzbz
FROM public.tbl_prestudentstatus pss
INNER JOIN public.tbl_prestudent ps USING(prestudent_id)
WHERE pss.status_kurzbz = \'Interessent\'
AND pss.bestaetigtam IS NULL
AND pss.bestaetigtvon IS NULL
AND ps.person_id = p.person_id
ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC
LIMIT 1) AS "Studiensemester",
(SELECT pss.bewerbung_abgeschicktamum
FROM public.tbl_prestudentstatus pss
INNER JOIN public.tbl_prestudent ps USING(prestudent_id)
WHERE pss.status_kurzbz = \'Interessent\'
AND pss.bestaetigtam IS NULL
AND pss.bestaetigtvon IS NULL
AND ps.person_id = p.person_id
ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC
LIMIT 1) AS "SendDate"
FROM public.tbl_person p
WHERE p.aktiv = TRUE
AND p.person_id = k.person_id
AND k.kontakttyp = \'email\'
AND p.person_id < 1000
AND p.person_id IN (
SELECT person_id
FROM public.tbl_prestudent
INNER JOIN public.tbl_prestudentstatus USING(prestudent_id)
WHERE status_kurzbz = \'Interessent\'
AND bestaetigtam IS NULL
AND bestaetigtvon IS NULL)
GROUP BY 1, 2, 4, 5, 6, 7
ORDER BY "LastAction" DESC
) tbl_infocenter
WHERE "Studiensemester" IN (
SELECT studiensemester_kurzbz
FROM public.tbl_studiensemester
WHERE (NOW() >= start AND NOW() <= ende)
OR start > NOW()
)
',
'hideHeader' => true,
'hideSave' => true,
'hideHeader' => false,
'hideSave' => false,
'additionalColumns' => array('Details'),
'formatRaw' => function($fieldName, $fieldValue, $datasetRaw) {
$link = '<a href="%s%s" target="_blank">Details</a>';
if ($fieldName == 'Details')
{
$link = '<a href="%s%s" target="_blank">Details</a>';
$datasetRaw->{$fieldName} = sprintf(
$link,
base_url('index.ci.php/system/infocenter/infocenterDetails/showDetails/'),
@@ -29,6 +73,30 @@
);
}
if ($fieldName == 'SendDate')
{
if ($datasetRaw->{$fieldName} == '1970.01.01 01:00:00')
{
$datasetRaw->{$fieldName} = 'Not sent';
}
}
if ($fieldName == 'LastAction')
{
if ($datasetRaw->{$fieldName} == '1970.01.01 01:00:00')
{
$datasetRaw->{$fieldName} = 'Not logged';
}
}
if ($fieldName == 'User/Operator')
{
if ($datasetRaw->{$fieldName} == '')
{
$datasetRaw->{$fieldName} = 'NA';
}
}
return $datasetRaw;
}
);
@@ -41,9 +109,9 @@
}
else
{
$filterWidgetArray['app'] = 'core';
$filterWidgetArray['datasetName'] = 'kontakts';
$filterWidgetArray['filterKurzbz'] = 'This filter filters';
$filterWidgetArray['app'] = 'aufnahme';
$filterWidgetArray['datasetName'] = 'PersonActions';
$filterWidgetArray['filterKurzbz'] = 'InfoCenterNotSentApplicationAll';
}
echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray);
@@ -1,269 +1,499 @@
<?php
$this->load->view('templates/header', array('title' => 'InfocenterDetails', 'datepicker' => true, 'datepickerclass' => 'dateinput'/*, 'tablesort' => true, 'tableid' => 't1'*/));
$this->load->view('templates/FHC-Header', array('title' => 'InfocenterDetails', 'jquery3' => true, 'jqueryui' => true, 'bootstrap' => true, 'fontawesome' => true, 'datatables' => true, 'customCSSs' => 'vendor/BlackrockDigital/startbootstrap-sb-admin-2/dist/css/sb-admin-2.min.css'/*, 'datepickerclass' => 'dateinput'*/));
?>
<body>
<h2>Infocenter - Person Details</h2>
<fieldset>
<legend>Stammdaten</legend>
<table>
<tr>
<td>Vorname: <?php echo $person->vorname ?></td>
</tr>
<tr>
<td>Nachname: <?php echo $person->nachname ?></td>
</tr>
<div id="page-wrapper">
<div class="row">
<div class="col-md-12">
<h3 class="page-header">Infocenter - Person Details</h3>
</div>
</div>
<section>
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading text-center"><h4>Stammdaten</h4></div>
<div class="panel-body">
<!-- </div>
<div class="row">-->
<div class="col-md-6">
<table class="table">
<tr>
<td><strong>Vorname</strong></td>
<td><?php echo $stammdaten->vorname ?></td>
</tr>
<tr>
<td><strong>Nachname</strong></td>
<td>
<?php echo $stammdaten->nachname ?></td>
</tr>
<tr>
<td><strong>Geburtsdatum</strong></td>
<td>
<?php echo date_format(date_create($stammdaten->gebdatum), 'd.m.Y') ?></td>
</tr>
<tr>
<td><strong>Sozialversicherungsnr</strong></td>
<td>
<?php echo $stammdaten->svnr ?></td>
<tr>
<td><strong>Staatsb&uuml;rgerschaft</strong></td>
<td>
<?php echo $stammdaten->staatsbuergerschaft ?></td>
<tr>
<td><strong>Geschlecht</strong></td>
<td>
<?php echo $stammdaten->geschlecht ?></td>
<tr>
<td><strong>Geburtsnation</strong></td>
<td>
<?php echo $stammdaten->geburtsnation ?></td>
<tr>
<td><strong>Geburtsort</strong></td>
<td><?php echo $stammdaten->gebort ?></td>
</table>
</div>
<tr>
<td>Geburtsdatum: <?php echo date_format(date_create($person->gebdatum), 'd.m.Y') ?></td>
</tr>
<tr>
<td>Sozialversicherungsnr: <?php echo $person->svnr ?></td>
</tr>
<tr>
<td>Staatsb&uuml;rgerschaft: <?php echo $staatsbuergerschaft->kurztext ?></td>
</tr>
<tr>
<td>Geschlecht: <?php echo $person->geschlecht ?></td>
</tr>
<tr>
<td>Geburtsnation: <?php echo $geburtsnation->kurztext ?></td>
</tr>
<tr>
<td>Geburtsort: <?php echo $person->gebort ?></td>
</tr>
<tr>
<td align="center">Kontaktdaten</td>
</tr>
<?php
foreach ($kontakte as $kontakt):
?>
<tr>
<td><?php
echo ucfirst($kontakt->kontakttyp).': ';
if ($kontakt->kontakttyp == 'email'):
?>
<a href="mailto:<?php echo $kontakt->kontakt; ?>" target="_top">
<?php
endif;
echo $kontakt->kontakt;
if ($kontakt->kontakttyp == 'email'):
?>
</a>
<?php endif; ?>
</td>
</tr>
<?php
endforeach
?>
<tr>
<td>
Adresse: <?php echo isset($adresse) ? $adresse->strasse.", ".$adresse->plz." ".$adresse->ort : "" ?>
</td>
</tr>
</table>
</fieldset>
<fieldset>
<legend>Dokumentenprüfung</legend>
<table border="1"><!-- id="t1" class = "tablesorter"-->
<thead>
<th>Name</th>
<th>Typ</th>
<th>Uploaddatum</th>
<th>formal geprüft</th>
</thead>
<tbody>
<?php
foreach ($dokumente as $dokument):
$geprueft = (isset($dokument->formal_geprueft_amum)) ? "checked" : "";
?>
<tr>
<td><a href="../outputAkteContent/<?php echo $dokument->akte_id ?>"><?php echo $dokument->titel ?></a>
</td>
<td><?php echo $dokument->dokument_kurzbz ?></td>
<td><?php echo date_format(date_create($dokument->erstelltam), 'd.m.Y') ?></td>
<td>
<input type="checkbox" <?php echo $geprueft ?>
onclick="onFormalGeprueftChange(this.checked, <?php echo $dokument->akte_id ?>, <?php echo $person->person_id ?>)"/>
<?php
echo $dokument->formal_geprueft_amum;
?>
</td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</fieldset>
<?php foreach ($zgvpruefungen as $zgvpruefung): ?>
<form method="post" action="../saveZgvPruefung/<?php echo $zgvpruefung->prestudent_id ?>">
<fieldset>
<legend>ZGV Prüfung - Studiengang <?php echo $zgvpruefung->studiengang ?></legend>
<table>
<tr>
<td>
<label>Letzter Status: </label>
<?php echo $zgvpruefung->prestudentstatus->status_kurzbz?>
</td>
<td>
<label>Freigegeben an Studiengang: </label>
<?php echo isset($zgvpruefung->prestudentstatus->bestaetigtam) ? "ja" : "nein" ?>
</td>
<td>
<label>Studiensemester: </label>
<?php echo $this->widgetlib->widget(
'Studiensemester_widget',
array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->prestudentstatus->studiensemester_kurzbz),
array('name' => 'studiensemester', 'id' => 'studiensemester')
); ?>
</td>
<td>
<label>Ausbildungssemester: </label>
<input type="text" name="ausbildungssemester" value="<?php echo $zgvpruefung->prestudentstatus->ausbildungssemester ?>"
<?php echo $zgvpruefung->prestudentstatus->ausbildungssemester ?>
</td>
</tr>
<tr>
<td>
<label>ZGV: </label>
<?php echo $this->widgetlib->widget(
'Zgv_widget',
array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgv_code),
array('name' => 'zgv', 'id' => 'zgv')
); ?>
</td>
<td>
<label>ZGV Ort: </label>
<input type="text" value="<?php echo $zgvpruefung->zgvort ?>" name="zgvort">
</td>
<td>
<label>ZGV Datum: </label>
<input type="text" class="dateinput"
value="<?php echo empty($zgvpruefung->zgvdatum) ? "" : date_format(date_create($zgvpruefung->zgvdatum), 'd.m.Y') ?>"
name="zgvdatum">
</td>
<td>
<label>ZGV Nation: </label>
<?php echo $this->widgetlib->widget(
'Nation_widget',
array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvnation_code),
array('name' => 'zgvnation', 'id' => 'zgvnation')
); ?>
</td>
</tr>
<?php if($zgvpruefung->studiengangtyp === 'm') :?>
<tr>
<td>
<label>ZGV Master: </label>
<?php echo $this->widgetlib->widget(
'Zgvmaster_widget',
array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvmas_code),
array('name' => 'zgvmas', 'id' => 'zgvmas')
); ?>
</td>
<td>
<label>ZGV Master Ort: </label>
<input type="text" value="<?php echo $zgvpruefung->zgvmaort ?>" name="zgvmaort">
</td>
<td>
<label>ZGV Master Datum: </label>
<input type="text" class="dateinput"
value="<?php echo empty($zgvpruefung->zgvmadatum) ? "" : date_format(date_create($zgvpruefung->zgvmadatum), 'd.m.Y') ?>"
name="zgvmadatum">
</td>
<td>
<label>ZGV Master Nation: </label>
<?php echo $this->widgetlib->widget(
'Nation_widget',
array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvmanation_code),
array('name' => 'zgvmanation', 'id' => 'zgvmanation')
); ?>
</td>
</tr>
<?php endif; ?>
<tr>
<td>
<input type="submit" value="Speichern"/>
</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
</tr>
</table>
</fieldset>
</form>
<!--<br />
Berufstätigkeit:-->
<div class="col-md-6">
<table class="table table-bordered">
<thead>
<tr>
<th colspan="4" class="text-center">Kontakte</th>
</tr>
<tr>
<th class="text-center">Typ</th>
<th class="text-center">Kontakt</th>
<th class="text-center">Zustellung</th>
<th class="text-center">Anmerkung</th>
</tr>
</thead>
<tbody>
<?php foreach ($stammdaten->kontakte as $kontakt): ?>
<?php /*echo $this->widgetlib->widget(
'Statusgrund_widget',
array(),
array('name' => 'absage', 'id' => 'absage')
); */
//Prestudenten cannot be abgewiesen or freigegeben if already done
if(!isset($zgvpruefung->prestudentstatus->bestaetigtam) && $zgvpruefung->prestudentstatus->status_kurzbz != 'Abgewiesener') :
?>
<form method="post" action="../saveAbsage/<?php echo $zgvpruefung->prestudent_id ?>">
<label>Absagegrund:</label>
<select name="statusgrund">
<?php foreach ($statusgruende as $statusgrund): ?>
<option value="<?php echo $statusgrund->statusgrund_id ?>"><?php echo $statusgrund->bezeichnung_mehrsprachig[0] ?></option>
<?php endforeach ?>
</select>
<button type="submit">Absage</button>
</form>
<a href="../saveFreigabe/<?php echo $zgvpruefung->prestudent_id ?>">
<button>Freigabe an Studiengang</button>
</a>
<?php endif; ?>
<?php endforeach ?>
<table border="1">
<thead>
<th>Datum</th>
<th>Aktivität</th>
<th>User</th>
</thead>
<tbody>
<?php foreach ($logs as $log): ?>
<tr>
<td><?php echo date_format(date_create($log->zeitpunkt), 'd.m.Y H:i:s') ?></td>
<td><?php echo $log->logdata->name ?></td>
<td><?php echo $log->insertvon ?></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
<tr>
<td><?php echo ucfirst($kontakt->kontakttyp); ?></td>
<td>
<?php if ($kontakt->kontakttyp === 'email'): ?>
<a href="mailto:<?php echo $kontakt->kontakt; ?>" target="_top">
<?php
endif;
echo $kontakt->kontakt;
if ($kontakt->kontakttyp === 'email'):
?>
</a>
<?php endif; ?>
</td>
<td class="text-center"><?php echo $kontakt->zustellung === true ? 'X' : ''; ?></td>
<td><?php echo $kontakt->anmerkung; ?></td>
</tr>
<?php endforeach; ?>
<?php foreach ($stammdaten->adressen as $adresse): ?>
<tr>
<td>
Adresse
</td>
<td>
<?php echo isset($adresse) ? $adresse->strasse.', '.$adresse->plz.' '.$adresse->ort : '' ?>
</td>
<td class="text-center">
<?php echo $adresse->zustelladresse === true ? 'X' : '' ?>
</td>
<td>
<?php echo ($adresse->heimatadresse === true ? 'Heimatadresse' : '').($adresse->heimatadresse === true && $adresse->rechnungsadresse === true ? ', ' : '').($adresse->rechnungsadresse === true ? 'Rechnungsadresse' : ''); ?>
</td>
<tr/>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</section>
<section>
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<table border="1">
<thead>
<th>Datum</th>
<th>Notiz</th>
<th>User</th>
</thead>
<tbody>
<a name="DokPruef"></a>
<div class="panel-heading text-center"><h4>Dokumentenpr&uuml;fung</h4></div>
<div class="panel-body">
<div class="col-md-12">
<table id="doctable" class="table table-striped table-bordered">
<thead>
<th>Name</th>
<th>Typ</th>
<th>Uploaddatum</th>
<th>formal gepr&uuml;ft</th>
<th>nachzureichen</th>
<th>nachgereicht am</th>
</thead>
<tbody>
<?php
foreach ($dokumente as $dokument):
$geprueft = isset($dokument->formal_geprueft_amum) ? "checked" : "";
?>
<tr>
<td>
<a href="../outputAkteContent/<?php echo $dokument->akte_id ?>"><?php echo empty($dokument->titel) ? $dokument->bezeichnung : $dokument->titel ?></a>
</td>
<td><?php echo $dokument->dokument_kurzbz ?></td>
<td><?php echo date_format(date_create($dokument->erstelltam), 'd.m.Y') ?></td>
<td>
<input type="checkbox"
id="prchkbx<?php echo $dokument->akte_id ?>" <?php echo $geprueft ?> />
<?php echo isset($dokument->formal_geprueft_amum) ? date_format(date_create($dokument->formal_geprueft_amum), 'd.m.Y') : ''; ?>
</td>
<td class="text-center">
<?php echo $dokument->nachgereicht === true ? 'X' : ''; ?>
</td>
<td>
<?php echo isset($dokument->nachgereicht_am) ? date_format(date_create($dokument->nachgereicht_am), 'd.m.Y') : ''; ?>
</td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</section>
<section>
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading text-center">
<a name="ZgvPruef"></a>
<h4>ZGV-Pr&uuml;fung</h4>
</div>
<div class="panel-body">
<div class="panel-group">
<?php
foreach ($zgvpruefungen as $zgvpruefung): ?>
<?php foreach ($notizen as $notiz): ?>
<tr>
<td><?php echo date_format(date_create($notiz->insertamum), 'd.m.Y H:i:s') ?></td>
<td><?php echo $notiz->titel ?></td>
<td><?php echo $notiz->verfasser_uid ?></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
<form method="post" action="../saveNotiz/<?php echo $person->person_id ?>">
<label>Notiz:</label>
<br />
Titel: <input type="text" name="notiztitel" />
<br />
Text: <textarea name="notiz" rows="10" cols="32"></textarea>
<button type="submit">Speichern</button>
</form>
<div class="panel panel-default">
<div class="panel-heading">
Studiengang <?php echo $zgvpruefung->studiengang ?>
</div>
<div class="panel-body">
<form method="post"
action="../saveZgvPruefung/<?php echo $zgvpruefung->prestudent_id ?>">
<div class="row">
<div class="col-md-5">
<div class="form-group">
<label>Freigegeben an Studiengang: </label>
<?php echo isset($zgvpruefung->prestudentstatus->bestaetigtam) ? "ja" : "nein" ?>
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label>Letzter Status: </label>
<?php echo $zgvpruefung->prestudentstatus->status_kurzbz ?>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label>Studiensemester: </label>
<?php echo $zgvpruefung->prestudentstatus->studiensemester_kurzbz ?>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label>Ausbildungssemester: </label>
<?php echo $zgvpruefung->prestudentstatus->ausbildungssemester ?>
</div>
</div>
</div>
<div class="row">
<div class="col-md-5">
<div class="form-group">
<label>ZGV: </label>
<?php echo $this->widgetlib->widget(
'Zgv_widget',
array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgv_code),
array('name' => 'zgv', 'id' => 'zgv', 'class' => 'form-control')
); ?>
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label>ZGV Ort: </label>
<input type="text" class="form-control"
value="<?php echo $zgvpruefung->zgvort ?>"
name="zgvort">
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label>ZGV Datum: </label>
<input type="text" class="dateinput form-control"
value="<?php echo empty($zgvpruefung->zgvdatum) ? "" : date_format(date_create($zgvpruefung->zgvdatum), 'd.m.Y') ?>"
name="zgvdatum">
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label>ZGV Nation: </label>
<?php echo $this->widgetlib->widget(
'Nation_widget',
array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvnation_code),
array('name' => 'zgvnation', 'id' => 'zgvnation')
); ?>
</div>
</div>
</div>
<!-- show only master zgv if master studiengang - start -->
<?php if ($zgvpruefung->studiengangtyp === 'm') : ?>
<div class="row">
<div class="col-md-5">
<div class="form-group"><label>ZGV Master: </label>
<?php echo $this->widgetlib->widget(
'Zgvmaster_widget',
array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvmas_code),
array('name' => 'zgvmas', 'id' => 'zgvmas')
); ?>
</div>
</div>
<div class="col-md-3">
<div class="form-group"><label>ZGV Master Ort: </label>
<input type="text" class="form-control"
value="<?php echo $zgvpruefung->zgvmaort ?>"
name="zgvmaort">
</div>
</div>
<div class="col-md-2">
<div class="form-group"><label>ZGV Master Datum: </label>
<input type="text" class="dateinput form-control"
value="<?php echo empty($zgvpruefung->zgvmadatum) ? "" : date_format(date_create($zgvpruefung->zgvmadatum), 'd.m.Y') ?>"
name="zgvmadatum">
</div>
</div>
<div class="col-md-2">
<div class="form-group"><label>ZGV Master Nation: </label>
<?php echo $this->widgetlib->widget(
'Nation_widget',
array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvmanation_code),
array('name' => 'zgvmanation', 'id' => 'zgvmanation')
); ?>
</div>
</div>
</div>
<!-- show only master zgv if master studiengang - end -->
<?php endif; ?>
<div class="row">
<div class="col-md-12">
<button type="submit" class="btn btn-default">Speichern</button>
</div>
</div>
</form>
</body>
<?php
//Prestudenten cannot be abgewiesen or freigegeben if already done
if (!isset($zgvpruefung->prestudentstatus->bestaetigtam) && $zgvpruefung->prestudentstatus->status_kurzbz != 'Abgewiesener') :
?>
<br/>
<div class="row">
<form method="post"
action="../saveAbsage/<?php echo $zgvpruefung->prestudent_id ?>">
<div class="col-md-12">
<div class="form-group">
<label class="d-inline float-left">Absagegrund:</label>
<select name="statusgrund" class="d-inline float-right">
<?php foreach ($statusgruende as $statusgrund): ?>
<option value="<?php echo $statusgrund->statusgrund_id ?>"><?php echo $statusgrund->bezeichnung_mehrsprachig[0] ?></option>
<?php endforeach ?>
</select>
</div>
<button class="d-inline btn btn-default" type="submit">
Absage
</button>
<a href="../saveFreigabe/<?php echo $zgvpruefung->prestudent_id ?>">
<button class="btn btn-default">Freigabe an
Studiengang
</button>
</a>
</div>
</form>
</div>
<?php endif; ?>
</div>
</div>
<?php endforeach // end foreach zgvpruefungen?>
</div>
</div>
</div>
</div>
</div>
</section>
<section>
<a name="NotizAkt"></a>
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading text-center">
<h4 class="text-center">Notizen &amp; Aktivit&auml;ten</h4>
</div>
<div class="panel-body">
<div class="col-md-6">
<form method="post" action="../saveNotiz/<?php echo $stammdaten->person_id ?>">
<div class="form-group">
<div class="text-center">
<label>Notiz hinzuf&uuml;gen</label>
</div>
<div class="form-group">
<label>Titel: </label><input type="text" class="form-control"
name="notiztitel"/>
</div>
<div class="form-group">
<label>Text: </label><textarea name="notiz" class="form-control" rows="10"
cols="32"></textarea>
</div>
<button type="submit" class="btn btn-default">Speichern</button>
</div>
</form>
<table id="notiztable" class="table table-bordered table-hover">
<thead>
<th>Datum</th>
<th>Notiz</th>
<th>User</th>
</thead>
<tbody>
<?php foreach ($notizen as $notiz): ?>
<tr>
<td><?php echo date_format(date_create($notiz->insertamum), 'd.m.Y H:i:s') ?></td>
<td><?php echo $notiz->titel ?></td>
<td><?php echo $notiz->verfasser_uid ?></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</div>
<div class="col-md-6">
<table id="logtable" class="table table-bordered table-hover">
<thead>
<th>Datum</th>
<th>Aktivit&auml;t</th>
<th>User</th>
</thead>
<tbody>
<?php foreach ($logs as $log): ?>
<tr>
<td><?php echo date_format(date_create($log->zeitpunkt), 'd.m.Y H:i:s') ?></td>
<td><?php echo isset($log->logdata->name) ? $log->logdata->name : '' ?></td>
<td><?php echo $log->insertvon ?></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</section>
</div>
<script>
function onFormalGeprueftChange(formal_geprueft, akte_id, person_id)
{
window.location = "../saveFormalGeprueft?akte_id=" + akte_id + "&formal_geprueft=" + formal_geprueft + "&person_id=" + person_id;
}
$(document).ready(function ()
{
//language for datatables
/* var german =
{
"sEmptyTable": "Keine Daten in der Tabelle vorhanden",
"sInfo": "_START_ bis _END_ von _TOTAL_ Einträgen",
"sInfoEmpty": "0 bis 0 von 0 Einträgen",
"sInfoFiltered": "(gefiltert von _MAX_ Einträgen)",
"sInfoPostFix": "",
"sInfoThousands": ".",
"sLengthMenu": "_MENU_ Einträge anzeigen",
"sLoadingRecords": "Wird geladen...",
"sProcessing": "Bitte warten...",
"sSearch": "Suchen",
"sZeroRecords": "Keine Einträge vorhanden.",
"oPaginate": {
"sFirst": "Erste",
"sPrevious": "Zurück",
"sNext": "Nächste",
"sLast": "Letzte"
},
"oAria": {
"sSortAscending": ": aktivieren, um Spalte aufsteigend zu sortieren",
"sSortDescending": ": aktivieren, um Spalte absteigend zu sortieren"
},
select: {
rows: {
_: '%d Zeilen ausgewählt',
0: 'Zum Auswählen auf eine Zeile klicken',
1: '1 Zeile ausgewählt'
}
}
};*/
var german = "//cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/German.json";
//hack for disabling table pagination if only one page
var drawCallback = function (settings)
{
var pagination = $(this).closest('.dataTables_wrapper').find('.dataTables_paginate');
pagination.toggle(this.api().page.info().pages > 1);
};
//format for sorting dates in tables
$.fn.dataTable.moment("DD.MM.YYYY");
$.fn.dataTable.moment("DD.MM.YYYY HH:mm:ss");
//initialise datatables and datepicker
$("#doctable").DataTable({
"language": {"url": german},
"responsive": true,
"paging": false,
"searching": false,
"info": false,
"order": [[2, "desc"]]
});
$("#logtable").DataTable({
"language": {"url": german},
"responsive": true,
"lengthChange": false,
"info": false,
"pageLength": 25,
"order": [[0, "desc"]],
"drawCallback": drawCallback
});
$("#notiztable").DataTable({
"language": {"url": german},
"responsive": true,
"lengthChange": false,
"info": false,
"pageLength": 13,
"order": [[0, "desc"], [2, "asc"]],
"drawCallback": drawCallback
});
$(".dateinput").datepicker({
"dateFormat": "dd.mm.yy"
});
//javascript hack - not nice!
$("select").addClass('form-control');
//add click events to "formal geprüft" checkboxes
<?php foreach($dokumente as $dokument): ?>
if ($("#prchkbx<?php echo $dokument->akte_id; ?>"))
{
$("#prchkbx<?php echo $dokument->akte_id; ?>").click(function ()
{
window.location = "../saveFormalGeprueft?akte_id=<?php echo $dokument->akte_id; ?>&formal_geprueft=" + this.checked + "&person_id=<?php echo $stammdaten->person_id ?>";
});
}
<?php endforeach ?>
}
);
</script>
</body>
<?php $this->load->view('templates/FHC-Footer'); ?>
@@ -1,11 +1,11 @@
<?php
function _printLists($listFilters)
{
foreach ($listFilters as $name => $filterId)
foreach ($listFilters as $filterId => $description)
{
$toPrint = '<div><a href="%s=%s">%s</a></div>';
echo sprintf($toPrint, base_url('index.ci.php/system/infocenter/InfoCenter?filterId'), $filterId, $name).PHP_EOL;
echo sprintf($toPrint, base_url('index.ci.php/system/infocenter/InfoCenter?filterId'), $filterId, $description).PHP_EOL;
}
}
+30 -6
View File
@@ -9,6 +9,10 @@ $customJSs = isset($customJSs) ? $customJSs : null;
// By default set the parameters to false
$jquery3 = isset($jquery3) ? $jquery3 : false;
$jqueryui = isset($jqueryui) ? $jqueryui : false;
$bootstrap = isset($bootstrap) ? $bootstrap : false;
$fontawesome = isset($fontawesome) ? $fontawesome : false;
$datatables = isset($datatables) ? $datatables : false;
$tablesorter = isset($tablesorter) ? $tablesorter : false;
/**
@@ -80,24 +84,44 @@ function _generateJSsInclude($JSs)
<meta charset="UTF-8">
<link rel="shortcut icon" type="image/x-icon" href="<?php echo base_url('skin/images/Vilesci.ico'); ?>" />
<link rel="stylesheet" type="text/css" href="<?php echo base_url('skin/vilesci.css'); ?>" />
<?php
// --------------------------------------------------------------------------------------------------------
// CSS
// Eventually required CSS
_generateCSSsInclude($customCSSs); // Eventually required CSS
// jQuery UI CSS
if ($jqueryui === true) _generateCSSsInclude('vendor/components/jqueryui/themes/base/jquery-ui.min.css');
// bootstrap CSS
if ($bootstrap === true) _generateCSSsInclude('vendor/components/bootstrap/css/bootstrap.min.css');
// font awesome CSS
if ($fontawesome === true) _generateCSSsInclude('vendor/components/font-awesome/css/font-awesome.min.css');
// datatables CSS
if ($datatables === true)
{
_generateCSSsInclude('vendor/datatables/datatables/media/css/dataTables.bootstrap.min.css');
}
// Table sorter CSS
if ($tablesorter === true) _generateCSSsInclude('skin/tablesort.css');
// Eventually required CSS
_generateCSSsInclude($customCSSs); // Eventually required CSS
// --------------------------------------------------------------------------------------------------------
// Javascripts
// JQuery V3
if ($jquery3 === true) _generateJSsInclude('vendor/components/jquery/jquery.min.js');
// JQuery UI
if ($jqueryui === true) _generateJSsInclude('vendor/components/jqueryui/jquery-ui.min.js');
// bootstrap JS
if ($bootstrap === true) _generateJSsInclude('vendor/components/bootstrap/js/bootstrap.min.js');
// datatables JS
if ($datatables === true)
{
_generateJSsInclude('vendor/datatables/datatables/media/js/jquery.dataTables.js');
_generateJSsInclude('vendor/datatables/datatables/media/js/dataTables.bootstrap.min.js');
_generateJSsInclude('vendor/moment/moment/min/moment.min.js');
_generateJSsInclude('vendor/datatables/plugins/sorting/datetime-moment.js');
}
// Table sorter JS
if ($tablesorter === true) _generateJSsInclude('vendor/christianbach/tablesorter/jquery.tablesorter.min.js');
+83 -52
View File
@@ -51,6 +51,8 @@ class FilterWidget extends Widget
const OP_IS_FALSE = 'false';
const OP_CONTAINS = 'contains';
const OP_NOT_CONTAINS = 'ncontains';
const OP_SET = 'set';
const OP_NOT_SET = 'nset';
const OPT_DAYS = 'days';
const OPT_MONTHS = 'months';
@@ -96,7 +98,20 @@ class FilterWidget extends Widget
public function display($widgetData)
{
//
$this->_loadFilter();
$filterSessionArray = $this->session->userdata(self::SESSION_NAME);
//
if ($this->filterId == null && isset($filterSessionArray[self::FILTER_ID]))
{
$this->filterId = $filterSessionArray[self::FILTER_ID];
}
//
if ($filterSessionArray[self::FILTER_ID] != $this->filterId)
{
//
$this->_loadFilter();
}
//
$this->_setSessionFilterData();
@@ -276,6 +291,8 @@ class FilterWidget extends Widget
<span>
<select name="%s" class="select-filter-operation">
<option value="'.self::OP_LESS_THAN.'" '.($activeFilterOperationValue == self::OP_LESS_THAN ? 'selected' : '').'>less than</option>
<option value="'.self::OP_SET.'" '.($activeFilterOperationValue == self::OP_SET ? 'selected' : '').'>is set</option>
<option value="'.self::OP_NOT_SET.'" '.($activeFilterOperationValue == self::OP_NOT_SET ? 'selected' : '').'>is not set</option>
</select>
</span>
<span>
@@ -487,6 +504,11 @@ class FilterWidget extends Widget
$filterSessionArray[self::ADDITIONAL_COLUMNS] = array();
}
if (!isset($filterSessionArray[self::FILTER_ID]))
{
$filterSessionArray[self::FILTER_ID] = -1;
}
$this->session->set_userdata(self::SESSION_NAME, $filterSessionArray);
}
@@ -957,6 +979,8 @@ class FilterWidget extends Widget
$filterSessionArray[self::ACTIVE_FILTERS_OPTION]
);
$filterSessionArray[self::FILTER_ID] = $this->filterId;
$this->session->set_userdata(self::SESSION_NAME, $filterSessionArray);
}
@@ -996,61 +1020,68 @@ class FilterWidget extends Widget
foreach ($activeFilters as $field => $activeFilterValue)
{
if (trim($activeFilterValue) != '')
if ($first)
{
if ($first)
$first = false;
}
else
{
$where .= ' AND ';
}
if (isset($activeFiltersOperation[$field]))
{
$where .= '"'.$field.'"';
$condition = '';
switch ($activeFiltersOperation[$field])
{
$first = false;
}
else
{
$where .= ' AND ';
case self::OP_EQUAL:
if (!is_numeric($activeFilterValue)) $activeFilterValue = 0;
$condition = ' = '.$activeFilterValue;
break;
case self::OP_NOT_EQUAL:
if (!is_numeric($activeFilterValue)) $activeFilterValue = 0;
$condition = ' != '.$activeFilterValue;
break;
case self::OP_GREATER_THAN:
if (!is_numeric($activeFilterValue)) $activeFilterValue = 0;
$condition = ' > '.$activeFilterValue;
break;
case self::OP_LESS_THAN:
if (!is_numeric($activeFilterValue)) $activeFilterValue = 0;
if (isset($activeFiltersOption[$field])
&& ($activeFiltersOption[$field] == self::OPT_DAYS
|| $activeFiltersOption[$field] == self::OPT_MONTHS))
{
$condition = ' < (NOW() - \''.$activeFilterValue.' '.$activeFiltersOption[$field].'\'::interval)';
}
else
{
$condition = ' < '.$activeFilterValue;
}
break;
case self::OP_CONTAINS:
$condition = ' ILIKE \'%'.$activeFilterValue.'%\'';
break;
case self::OP_NOT_CONTAINS:
$condition = ' NOT ILIKE \'%'.$activeFilterValue.'%\'';
break;
case self::OP_IS_TRUE:
$condition = ' IS TRUE';
break;
case self::OP_IS_FALSE:
$condition = ' IS FALSE';
break;
case self::OP_SET:
$condition = ' IS NOT NULL';
break;
case self::OP_NOT_SET:
$condition = ' IS NULL';
break;
}
if (isset($activeFiltersOperation[$field]))
{
$where .= '"'.$field.'"';
$condition = '';
switch ($activeFiltersOperation[$field])
{
case self::OP_EQUAL:
$condition = ' = '.$activeFilterValue;
break;
case self::OP_NOT_EQUAL:
$condition = ' != '.$activeFilterValue;
break;
case self::OP_GREATER_THAN:
$condition = ' > '.$activeFilterValue;
break;
case self::OP_LESS_THAN:
if (isset($activeFiltersOption[$field])
&& ($activeFiltersOption[$field] == self::OPT_DAYS
|| $activeFiltersOption[$field] == self::OPT_MONTHS))
{
$condition = ' < (NOW() - \''.$activeFilterValue.' '.$activeFiltersOption[$field].'\'::interval)';
}
else
{
$condition = ' < '.$activeFilterValue;
}
break;
case self::OP_CONTAINS:
$condition = ' ILIKE \'%'.$activeFilterValue.'%\'';
break;
case self::OP_NOT_CONTAINS:
$condition = ' NOT ILIKE \'%'.$activeFilterValue.'%\'';
break;
case self::OP_IS_TRUE:
$condition = ' IS TRUE';
break;
case self::OP_IS_FALSE:
$condition = ' IS FALSE';
break;
}
$where .= $condition;
}
$where .= $condition;
}
}
+2 -2
View File
@@ -13,8 +13,8 @@ class Nation_widget extends DropdownWidget
$this->setElementsArray(
$this->NationModel->load(),
true,
'Select a nation...',
'No nation found'
'Nation wählen...',
'keine Nation gefunden'
);
$this->loadDropDownView($widgetData);
+2 -2
View File
@@ -13,8 +13,8 @@ class Zgv_widget extends DropdownWidget
$this->setElementsArray(
$this->ZgvModel->load(),
true,
'Select a zgv...',
'No zgv found'
'Zgv wählen...',
'keine Zgv gefunden'
);
$this->loadDropDownView($widgetData);
+2 -2
View File
@@ -13,8 +13,8 @@ class Zgvmaster_widget extends DropdownWidget
$this->setElementsArray(
$this->ZgvmasterModel->load(),
true,
'Select a zgv...',
'No zgv found'
'Zgv wählen...',
'keine Zgv gefunden'
);
$this->loadDropDownView($widgetData);
+10 -7
View File
@@ -45,6 +45,9 @@ require_once('../../../include/benutzerberechtigung.class.php');
$sprache = getSprache();
$p=new phrasen($sprache);
$sprache_obj = new sprache();
$sprache_obj->load($sprache);
$sprache_index=$sprache_obj->index;
if (!$db = new basis_db())
die($p->t("global/fehlerBeimOeffnenDerDatenbankverbindung"));
@@ -726,7 +729,7 @@ if($projekt->getProjekteMitarbeiter($user, true))
<a href='".$_SERVER['PHP_SELF']."?csvexport=1' style='font-size: larger;'>CSV Export</a>";
if($anzprojekte > 0)
echo "<a style='font-size: larger; text-decoration: none; cursor: default'> | </a><a href='".$_SERVER['PHP_SELF']."?projektexport=1' style='font-size: larger;'>Projektexport</a>";
echo "<a style='font-size: larger; text-decoration: none; cursor: default'> | </a><a href='".$_SERVER['PHP_SELF']."?projektexport=1' style='font-size: larger;'>".$p->t("zeitaufzeichnung/projektexport")."</a>";
echo "</td>
<td class='menubox' height='10px'>";
if ($p->t("dms_link/handbuchZeitaufzeichnung")!='')
@@ -753,15 +756,15 @@ if($projekt->getProjekteMitarbeiter($user, true))
$jahreanz = 3;
echo '<form action="'.$projektexpurl.'" method="GET">';
echo '<tr><td colspan="4"><hr></td></tr>';
echo '<tr><td>Projektexport</td>';
echo '<td align="center">Monat: <select id="projexpmonat" name="projexpmonat">';
echo '<tr><td>'.$p->t('zeitaufzeichnung/projektexport').'</td>';
echo '<td align="center">'.$p->t('zeitaufzeichnung/monat').' <select id="projexpmonat" name="projexpmonat">';
for($i=1;$i<13;$i++)
{
$selected = ($i == $aktmonat)?'selected = "selected"':'';
echo '<option value="'.$i.'" '.$selected.'>'.$monatsname[1][$i - 1].'</option>';
echo '<option value="'.$i.'" '.$selected.'>'.$monatsname[$sprache_index][$i - 1].'</option>';
}
echo '</select></td>';
echo '<td align="center">Jahr: <select id="projexpjahr" name="projexpjahr">';
echo '<td align="center">'.$p->t('zeitaufzeichnung/jahr').' <select id="projexpjahr" name="projexpjahr">';
for(;$jahreanz>0;$jahreanz--)
{
echo '<option value="'.$aktjahr.'">'.$aktjahr.'</option>';
@@ -795,8 +798,8 @@ if($projekt->getProjekteMitarbeiter($user, true))
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="POST" onsubmit="return checkdatumCSVExp(\'exp_von_datum\', \'exp_bis_datum\')">';
echo '<tr><td colspan="4"><hr></td></tr>';
echo '<tr><td>CSV-Export</td>';
echo '<td>Startdatum: <input class="datepicker_datum" id="exp_von_datum" name="exp_von_datum" size="9" type="text" value="'.date('d.m.Y', strtotime('first day of previous month')).'" /></td>';
echo '<td align="right">Enddatum: <input class="datepicker_datum" id="exp_bis_datum" name="exp_bis_datum" size="9" type="text" value="'.date('d.m.Y', strtotime('last day of previous month')).'" /></td>';
echo '<td>'.$p->t('zeitaufzeichnung/startdatum').' <input class="datepicker_datum" id="exp_von_datum" name="exp_von_datum" size="9" type="text" value="'.date('d.m.Y', strtotime('first day of previous month')).'" /></td>';
echo '<td align="right">'.$p->t('zeitaufzeichnung/enddatum').' <input class="datepicker_datum" id="exp_bis_datum" name="exp_bis_datum" size="9" type="text" value="'.date('d.m.Y', strtotime('last day of previous month')).'" /></td>';
echo '<td align="right"><input type="submit" value="Export" name="export"></td></tr>';
echo '<tr><td></td><td colspan="3"></td></tr>';
echo '<tr><td colspan="4"><hr></td></tr>';
@@ -38,6 +38,12 @@ if (!isset($_GET['projexpmonat']))
if (!isset($_GET['projexpjahr']))
die("Parameter jahr fehlt");
$sprache = getSprache();
$p = new phrasen($sprache);
$sprache_obj = new sprache();
$sprache_obj->load($sprache);
$sprache_index = $sprache_obj->index;
$uid = get_uid();
$benutzer = new benutzer();
if (!$benutzer->load($uid))
@@ -46,7 +52,7 @@ if (!$benutzer->load($uid))
$month = $_GET['projexpmonat'];
$year = $_GET['projexpjahr'];
$monthtext = $monatsname[1][$month - 1];
$monthtext = $monatsname[$sprache_index][$month - 1];
$username = $benutzer->vorname." ".$benutzer->nachname;
$mitarbeiter = new mitarbeiter();
$mitarbeiter->load($uid);
@@ -66,7 +72,7 @@ $toignore = ['Pause', 'LehreExtern'];
$ztaufdata = $ztauf->result;
$monthsums = [0 => 0.00];
//sprt list by startdate ascending (if not already done in zeitaufzeichnung class)
//sort list by startdate ascending (if not already done in zeitaufzeichnung class)
usort($ztaufdata, function ($ztaufa, $ztaufb)
{
$date = new datum();
@@ -75,9 +81,12 @@ usort($ztaufdata, function ($ztaufa, $ztaufb)
);
//fill projectlines with data
for ($i = 0; $i < sizeof($ztaufdata); $i++)
for ($i = 0; $i < count($ztaufdata); $i++)
{
$ztaufrow = $ztaufdata[$i];
//make sure dates are in correct format
$ztaufrow->start = $date->formatDatum($ztaufrow->start, $format = 'Y-m-d H:i:s');
$ztaufrow->ende = $date->formatDatum($ztaufrow->ende, $format = 'Y-m-d H:i:s');
$day = intval($date->formatDatum($ztaufrow->ende, 'd'));
//first entry for a day
$isFirstEntry = !isset($projectlines[$day]);
@@ -95,16 +104,16 @@ for ($i = 0; $i < sizeof($ztaufdata); $i++)
$tosubtract[] = $subtraction;
//save all pause ranges
if($ztaufrow->aktivitaet_kurzbz == $toignore[0])
if ($ztaufrow->aktivitaet_kurzbz == $toignore[0])
{
$prevpause = null;
if(sizeof($allpauseranges)>0)
if (count($allpauseranges) > 0)
{
$prevpause = $allpauseranges[sizeof($allpauseranges) - 1];
$prevpause = $allpauseranges[count($allpauseranges) - 1];
}
//first pause or no overlap to previous pause - add pauserange
if( is_null($prevpause ) || $prevpause->ende <= $ztaufrow->start )
if (is_null($prevpause) || $prevpause->ende <= $ztaufrow->start)
{
$pauserange = new stdClass();
$pauserange->start = $ztaufrow->start;
@@ -112,16 +121,17 @@ for ($i = 0; $i < sizeof($ztaufdata); $i++)
$allpauseranges[] = $pauserange;
}
//pause overlap - change pause ende
elseif($prevpause->ende > $ztaufrow->start )
elseif ($prevpause->ende > $ztaufrow->start)
{
$allpauseranges[sizeof($allpauseranges) - 1]->ende = $ztaufrow->ende;
$allpauseranges[count($allpauseranges) - 1]->ende = $ztaufrow->ende;
}
}
}
if (($dayStart == '' || $date->mktime_fromtimestamp($date->formatDatum($dayStart, $format = 'Y-m-d H:i:s')) > $date->mktime_fromtimestamp($date->formatDatum($ztaufrow->start, $format = 'Y-m-d H:i:s'))) && $ztaufrow->aktivitaet_kurzbz != $toignore[1])
//save new dayStart (if earlier) or dayEnd (if later)
if (($dayStart == '' || $dayStart > $ztaufrow->start) && $ztaufrow->aktivitaet_kurzbz != $toignore[1])
$dayStart = $ztaufrow->start;
if (($dayEnd == '' || $date->mktime_fromtimestamp($date->formatDatum($dayEnd, $format = 'Y-m-d H:i:s')) < $date->mktime_fromtimestamp($date->formatDatum($ztaufrow->ende, $format = 'Y-m-d H:i:s'))) && $ztaufrow->aktivitaet_kurzbz != $toignore[1])
if (($dayEnd == '' || $dayEnd < $ztaufrow->ende) && $ztaufrow->aktivitaet_kurzbz != $toignore[1])
$dayEnd = $ztaufrow->ende;
if ($isFirstEntry)
@@ -141,7 +151,7 @@ for ($i = 0; $i < sizeof($ztaufdata); $i++)
$toadd = 0.00;
//case 1: there is no overlap, just add project time difference
if ($date->mktime_fromtimestamp($ztaufrow->start) > $date->mktime_fromtimestamp($lastende))
if ($ztaufrow->start >= $lastende)
{
$toadd = $date->convertTimeStringToHours($ztaufrow->diff);
$laststart = $ztaufrow->start;
@@ -152,13 +162,13 @@ for ($i = 0; $i < sizeof($ztaufdata); $i++)
$projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->alleZeiten[] = $newprojecttime;
}
//case 2: overlap - add only part of the time
elseif ($date->mktime_fromtimestamp($ztaufrow->start) < $date->mktime_fromtimestamp($lastende) && $date->mktime_fromtimestamp($ztaufrow->ende) > $date->mktime_fromtimestamp($lastende))
elseif ($ztaufrow->start < $lastende && $ztaufrow->ende > $lastende)
{
$toadd = ($date->mktime_fromtimestamp($ztaufrow->ende) - $date->mktime_fromtimestamp($lastende)) / 3600;
$lastende = $ztaufrow->ende;
$alleZeiten =& $projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->alleZeiten;
$index = count($alleZeiten);
$alleZeiten[$index-1]->ende = $ztaufrow->ende;
$alleZeiten[$index - 1]->ende = $ztaufrow->ende;
}
$projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->stunden += $toadd;
@@ -201,14 +211,14 @@ for ($i = 0; $i < sizeof($ztaufdata); $i++)
if ($isLastEntry)
{
$worktime_unix = $date->mktime_fromtimestamp($date->formatDatum($dayEnd, $format = 'Y-m-d H:i:s')) - $date->mktime_fromtimestamp($date->formatDatum($dayStart, $format = 'Y-m-d H:i:s'));
$worktime_unix = $date->mktime_fromtimestamp($dayEnd) - $date->mktime_fromtimestamp($dayStart);
$worktimehours = $worktime_unix / 3600;
$projectlines[$day]->arbeitszeit = $worktimehours;
$pauseSubtracted = 0.00;
$lehreExternExists = false;
//subtract Pauses and LehreExtern
//subtract pauses and LehreExtern from total worktime
foreach ($tosubtract as $subtraction)
{
if ($subtraction->typ == $toignore[0])
@@ -223,32 +233,33 @@ for ($i = 0; $i < sizeof($ztaufdata); $i++)
}
}
//subtract pauses from Project worktimes
foreach($allpauseranges as $pauserange)
//subtract pauses from project worktimes
foreach ($allpauseranges as $pauserange)
{
foreach($projectlines[$day]->projekte as $name => $project)
foreach ($projectlines[$day]->projekte as $name => $project)
{
foreach($projectlines[$day]->projekte[$name]->alleZeiten as $zeit)
foreach ($projectlines[$day]->projekte[$name]->alleZeiten as $zeit)
{
if($pauserange->start >= $zeit->start && $pauserange->ende <= $zeit->ende)
//pause between project start and end
if ($pauserange->start >= $zeit->start && $pauserange->ende <= $zeit->ende)
{
$projectlines[$day]->projekte[$name]->stunden -= ($date->mktime_fromtimestamp($pauserange->ende) - $date->mktime_fromtimestamp($pauserange->start)) / 3600;
break;
}
elseif($pauserange->start < $zeit->ende && $pauserange->start > $zeit->start)
//pause and project time overlap at project time end
elseif ($pauserange->start < $zeit->ende && $pauserange->start > $zeit->start)
{
$projectlines[$day]->projekte[$name]->stunden -= ($date->mktime_fromtimestamp($zeit->ende) - $date->mktime_fromtimestamp($pauserange->start)) / 3600;
//break;
}
elseif($pauserange->ende > $zeit->start && $pauserange->ende< $zeit->ende)
//pause and project time overlap at project time start
elseif ($pauserange->ende > $zeit->start && $pauserange->ende < $zeit->ende)
{
$projectlines[$day]->projekte[$name]->stunden -= ($date->mktime_fromtimestamp($pauserange->ende) - $date->mktime_fromtimestamp($zeit->start)) / 3600;
//break;
}
}
}
}
//worktime with no break greater 6 -> compulsory break of half an hour
if ($pauseSubtracted < 0.5 && !$lehreExternExists)
{
@@ -262,7 +273,7 @@ for ($i = 0; $i < sizeof($ztaufdata); $i++)
$projectlines[$day]->arbeitszeit = floor($projectlines[$day]->arbeitszeit * 100) / 100;
foreach($projectlines[$day]->projekte as $name => $project)
foreach ($projectlines[$day]->projekte as $name => $project)
{
$projecthours =& $projectlines[$day]->projekte[$name]->stunden;
$projecthours = floor($projecthours * 100) / 100;
@@ -283,10 +294,10 @@ $workbook = new Spreadsheet_Excel_Writer();
$workbook->setVersion(8);
// sending HTTP headers
$workbook->send("Projektliste_".$month."_".$year.".xls");
$workbook->send('Projektliste_'.$month.'_'.$year.'.xls');
// Creating a worksheet
$worksheet =& $workbook->addWorksheet("Projektliste");
$worksheet =& $workbook->addWorksheet($p->t('zeitaufzeichnung/projektliste'));
$worksheet->setInputEncoding('utf-8');
// Define formats
@@ -309,6 +320,12 @@ $format_heading_right_bottomline->setAlign('right');
$format_heading_right_bottomline->setRight(2);
$format_heading_right_bottomline->setBottom(2);
$format_heading_bottomline =& $workbook->addFormat();
$format_heading_bottomline->setBottom(2);
$format_heading_topline =& $workbook->addFormat();
$format_heading_topline->setTop(2);
$format_bold_centered_toprightline =& $workbook->addFormat();
$format_bold_centered_toprightline->setBorder(1);
$format_bold_centered_toprightline->setBold();
@@ -349,7 +366,9 @@ $format_cell_centered->setAlign('center');
$format_cell_centered->setVAlign('vcenter');
$format_cell_centered_leftline =& $workbook->addFormat();
$format_cell_centered_leftline->setBorder(1);
$format_cell_centered_leftline->setRight(1);
$format_cell_centered_leftline->setLeft(1);
$format_cell_centered_leftline->setBottom(1);
$format_cell_centered_leftline->setAlign('center');
$format_cell_centered_leftline->setVAlign('vcenter');
$format_cell_centered_leftline->setLeft(2);
@@ -382,9 +401,9 @@ $format_cell_centered_alllines->setAlign('center');
$format_cell_centered_alllines->setVAlign('vcenter');
//define column widths
$nrProjects = sizeof($projectnames);
$nrProjects = count($projectnames);
$daywidth = 4;
$totalworktimewidth = 10;
$totalworktimewidth = 13;
$worktimewidth = 8;
$worksheet->setColumn(0, 1, $daywidth);
$worksheet->setColumn(2, 2, $totalworktimewidth);
@@ -412,35 +431,48 @@ foreach ($projectcolumnwidths as $projectname => $width)
//calculating spaces for centering global header texts
$numberspaces = ($maxwidthprojects - 10 - strlen($username));
$spacesstringFirst = "";
$spacesstringFirst = '';
while ($numberspaces > 0)
{
$spacesstringFirst .= " ";
$spacesstringFirst .= ' ';
$numberspaces--;
}
$numberspaces = ($maxwidthprojects - 14 - strlen($persnr));
$spacesstringSecond = "";
$spacesstringSecond = '';
while ($numberspaces > 0)
{
$spacesstringSecond .= " ";
$spacesstringSecond .= ' ';
$numberspaces--;
}
$spalte = $zeile = 0;
//write global header
$lastspalte = ($nrProjects > 0) ? 2 + sizeof($projectnames) * 2 : 14;
$worksheet->setMerge($zeile, $spalte, $zeile + 1, $spalte + 2);
$worksheet->write($zeile, $spalte, $monthtext." ".$year, $format_heading_left);
$worksheet->write($zeile + 1, $spalte, "", $format_heading_left);
//set language options
$decpoint = $sprache_index === '2' ? '.' : ',';
$thousandsep = $sprache_index === '2' ? ',' : '.';
//write global header
$lastspalte = ($nrProjects > 0) ? 2 + count($projectnames) * 2 : 14;
$worksheet->setMerge($zeile, $spalte, $zeile + 1, $spalte + 2);
$worksheet->write($zeile, $spalte, $monthtext.' '.$year, $format_heading_left);
$worksheet->write($zeile + 1, $spalte, $monthtext.' '.$year, $format_heading_left);
for ($i = 1; $i < 3; $i++)
{
$worksheet->write($zeile, $spalte + $i, '', $format_heading_topline);
$worksheet->write($zeile + 1, $spalte + $i, '', $format_heading_bottomline);
}
$worksheet->setMerge($zeile, $spalte + 3, $zeile, $lastspalte);
$worksheet->setMerge($zeile + 1, $spalte + 3, $zeile + 1, $lastspalte);
$worksheet->write($zeile, $spalte + 3, "Projektliste gedruckt am:".$spacesstringFirst.$username, $format_heading_right);
$worksheet->write($zeile, $spalte + 3, $p->t('zeitaufzeichnung/projektlistegedruckt').$spacesstringFirst.$username, $format_heading_right);
for ($i = 4; $i < $lastspalte; $i++)
{
$worksheet->write($zeile, $i, '', $format_heading_topline);
$worksheet->write($zeile + 1, $i, '', $format_heading_bottomline);
}
$worksheet->write($zeile, $lastspalte, '', $format_heading_right);
$worksheet->write($zeile + 1, $spalte + 3, date('d.m.Y H:i').$spacesstringSecond.'Personal-Nr.:'.$persnr, $format_heading_right_bottomline);
$worksheet->write($zeile + 1, $spalte + 3, date('d.m.Y H:i').$spacesstringSecond.$p->t('zeitaufzeichnung/personalnr').$persnr, $format_heading_right_bottomline);
$worksheet->write($zeile + 1, $lastspalte, '', $format_heading_right_bottomline);
$zeile += 3;
@@ -451,20 +483,22 @@ $worksheet->hideScreenGridlines();
//write table header
$worksheet->setMerge($zeile, $spalte, $zeile + 1, $spalte + 1);
$worksheet->write($zeile, $spalte, "Tag", $format_bold_centered_alllines);
$worksheet->write($zeile + 1, $spalte++, "", $format_bold_centered_alllines);
$worksheet->write($zeile, $spalte, $p->t('zeitaufzeichnung/tag'), $format_bold_centered_alllines);
$worksheet->write($zeile + 1, $spalte, '', $format_bold_centered_alllines);
$worksheet->write($zeile, $spalte + 1, $p->t('zeitaufzeichnung/tag'), $format_bold_centered_alllines);
$worksheet->write($zeile + 1, ++$spalte, '', $format_bold_centered_alllines);
$worksheet->setMerge($zeile, ++$spalte, $zeile + 1, $spalte);
$worksheet->write($zeile, $spalte, "Arbeitszeit", $format_bold_centered_alllines);
$worksheet->write($zeile + 1, $spalte, "", $format_bold_centered_alllines);
$worksheet->write($zeile, $spalte, $p->t('zeitaufzeichnung/arbeitszeit'), $format_bold_centered_alllines);
$worksheet->write($zeile + 1, $spalte, '', $format_bold_centered_alllines);
$spalte++;
foreach ($projectnames as $project)
{
$worksheet->setMerge($zeile, $spalte, $zeile, $spalte + 1);
$worksheet->write($zeile, $spalte, $project, $format_bold_centered_toprightline);
$worksheet->write($zeile, $spalte + 1, "", $format_bold_centered_toprightline);
$worksheet->write($zeile + 1, $spalte, "Stunden", $format_bold_centered_bottomline);
$worksheet->write($zeile + 1, $spalte + 1, "tigkeit", $format_bold_centered_bottomrightline);
$worksheet->write($zeile, $spalte + 1, '', $format_bold_centered_toprightline);
$worksheet->write($zeile + 1, $spalte, $p->t('zeitaufzeichnung/stunden'), $format_bold_centered_bottomline);
$worksheet->write($zeile + 1, $spalte + 1, $p->t('zeitaufzeichnung/taetigkeit'), $format_bold_centered_bottomrightline);
$spalte += 2;
}
$zeile += 2;
@@ -477,14 +511,14 @@ for ($daysnmbr = 1; $daysnmbr <= $daysinmonth; $daysnmbr++)
$monthstr = ($month < 10) ? '0'.$month : $month;
$daystr = ($daysnmbr < 10) ? '0'.$daysnmbr : $daysnmbr;
$datestring = $year.'-'.$monthstr.'-'.$daystr;
$weekday = substr($tagbez[1][$date->formatDatum($datestring, 'N')], 0, 2);
$weekday = substr($tagbez[$sprache_index][$date->formatDatum($datestring, 'N')], 0, 2);
$worksheet->write($zeile, $spalte++, $weekday, $format_cell_centered_leftline);
$worksheet->write($zeile, $spalte++, $daysnmbr, $format_cell_centered_rightline);
if (array_key_exists($daysnmbr, $projectlines))
{
//write worktime
$worksheet->write($zeile, $spalte++, number_format($projectlines[$daysnmbr]->arbeitszeit, 2, ",", "."), $format_cell_centered_rightline);
$worksheet->writeString($zeile, $spalte++, number_format($projectlines[$daysnmbr]->arbeitszeit, 2, $decpoint, $thousandsep), $format_cell_centered_rightline);
$spaltetemp = $spalte;
//write projects
foreach ($projectnames as $project)
@@ -492,7 +526,7 @@ for ($daysnmbr = 1; $daysnmbr <= $daysinmonth; $daysnmbr++)
if (array_key_exists($project, $projectlines[$daysnmbr]->projekte))
{
$worksheet->setColumn($spalte, $spalte, $worktimewidth);
$worksheet->write($zeile, $spalte++, number_format($projectlines[$daysnmbr]->projekte[$project]->stunden, 2, ",", "."), $format_cell_centered_leftline);
$worksheet->writeString($zeile, $spalte++, number_format($projectlines[$daysnmbr]->projekte[$project]->stunden, 2, $decpoint, $thousandsep), $format_cell_centered_leftline);
$worksheet->setColumn($spalte, $spalte, $projectcolumnwidths[$project]);
$worksheet->write($zeile, $spalte++, $projectlines[$daysnmbr]->projekte[$project]->beschreibung, $format_cell_rightline);
}
@@ -505,15 +539,16 @@ for ($daysnmbr = 1; $daysnmbr <= $daysinmonth; $daysnmbr++)
}
else
{
//write empty cells
$worksheet->write($zeile, $spalte, '0,00', $format_cell_centered_rightline);
$toskip = sizeof($projectnames) * 2;
//write empty cells until end of table
$worksheet->writeString($zeile, $spalte, number_format(0, 2, $decpoint, $thousandsep), $format_cell_centered_leftline);
$toskip = count($projectnames) * 2;
for ($i = 0; $i <= $toskip; $i++)
{
if ($i % 2 == 0)
$worksheet->write($zeile, $spalte++, '', $format_cell_centered_rightline);
$worksheet->write($zeile, $spalte, '', $format_cell_centered_rightline);
else
$worksheet->write($zeile, $spalte++, '', $format_cell_centered);
$worksheet->write($zeile, $spalte, '', $format_cell_centered);
$spalte++;
}
}
$zeile++;
@@ -523,22 +558,21 @@ if ($nrProjects < 1)
//no projects - merge all cells and write notice
{
$worksheet->setMerge(3, 3, 4 + $daysinmonth, $lastspalte);
$worksheet->write(3, 3, "keine Projekte vorhanden", $format_bold_centered_alllines);
$worksheet->write(3, $lastspalte, "", $format_bold_centered_alllines);
$worksheet->write(3, 3, $p->t('zeitaufzeichnung/keineprojekte'), $format_bold_centered_alllines);
$worksheet->write(3, $lastspalte, '', $format_bold_centered_alllines);
}
//write monthly sums
$spalte = 0;
$worksheet->setMerge($zeile, $spalte, $zeile, $spalte + 1);
$worksheet->write($zeile, $spalte, 'Summe:', $format_bold_centered_alllines);
$worksheet->write($zeile, $spalte, $p->t('zeitaufzeichnung/summe'), $format_bold_centered_alllines);
$worksheet->write($zeile, $spalte + 1, '', $format_bold_centered_alllines);
$spalte += 2;
$worksheet->write($zeile, $spalte++, number_format($monthsums[0], 2, ",", "."), $format_cell_centered_alllines);
$worksheet->writeString($zeile, $spalte++, number_format($monthsums[0], 2, $decpoint, $thousandsep), $format_cell_centered_alllines);
foreach ($projectnames as $project)
{
$worksheet->write($zeile, $spalte++, number_format($monthsums[$project], 2, ",", "."), $format_cell_centered_topbottomleftline);
$worksheet->write($zeile, $spalte++, "", $format_cell_centered_topbottomrightline);
$worksheet->writeString($zeile, $spalte++, number_format($monthsums[$project], 2, $decpoint, $thousandsep), $format_cell_centered_topbottomleftline);
$worksheet->write($zeile, $spalte++, '', $format_cell_centered_topbottomrightline);
}
$worksheet->fitToPages(1, 1);
$workbook->close();
+30 -1
View File
@@ -185,6 +185,30 @@
"reference": "b15ea33268b587d986371c0b6f215c36ffbb860c"
}
}
},
{
"type": "package",
"package": {
"name": "datatables/plugins",
"version": "3.3.7",
"source": {
"url": "https://github.com/DataTables/Plugins.git",
"type": "git",
"reference": "master"
}
}
},
{
"type": "package",
"package": {
"name": "BlackrockDigital/startbootstrap-sb-admin-2",
"version": "3.3.7",
"source": {
"url": "https://github.com/BlackrockDigital/startbootstrap-sb-admin-2.git",
"type": "git",
"reference": "master"
}
}
}
],
"require": {
@@ -222,7 +246,12 @@
"jquery/sizzle": "^1.0",
"tomazdragar/SimpleCropper": "^1.0",
"nicolaskruchten/pivottable": "^2.15.0",
"jquery-archive/jquery-metadata": "^1.0"
"jquery-archive/jquery-metadata": "^1.0",
"BlackrockDigital/startbootstrap-sb-admin-2": "^3.3",
"components/font-awesome": "^4.7",
"moment/moment": "^2.20",
"datatables/datatables": "^1.10",
"datatables/plugins": "^3.3"
},
"require-dev": {
"squizlabs/php_codesniffer": "2.*"
Generated
+145 -13
View File
@@ -4,9 +4,19 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "e528bc5e31312080d7db9b1b3ae4033b",
"content-hash": "69612123f7b612e61cf1e0368e01ee27",
"hash": "28942746c1b00b590a3d3cb43cd21606",
"content-hash": "2c99452d2bf338a1d1e3462197ab25b7",
"packages": [
{
"name": "BlackrockDigital/startbootstrap-sb-admin-2",
"version": "3.3.7",
"source": {
"type": "git",
"url": "https://github.com/BlackrockDigital/startbootstrap-sb-admin-2.git",
"reference": "master"
},
"type": "library"
},
{
"name": "alvaro-prieto/colResizable",
"version": "1.6",
@@ -462,6 +472,41 @@
],
"time": "2015-06-17 06:08:09"
},
{
"name": "components/font-awesome",
"version": "4.7.0",
"source": {
"type": "git",
"url": "https://github.com/components/font-awesome.git",
"reference": "885308b939369d147bec93174722786bc2c4eedd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/components/font-awesome/zipball/885308b939369d147bec93174722786bc2c4eedd",
"reference": "885308b939369d147bec93174722786bc2c4eedd",
"shasum": ""
},
"type": "component",
"extra": {
"component": {
"styles": [
"css/font-awesome.css"
],
"files": [
"css/font-awesome.min.css",
"css/font-awesome.css.map",
"fonts/*"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT",
"OFL-1.1"
],
"description": "The iconic font designed for use with Twitter Bootstrap.",
"time": "2016-10-25 10:56:23"
},
{
"name": "components/jquery",
"version": "2.1.4",
@@ -635,6 +680,39 @@
"description": "jQuery UI is a curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library. Whether you're building highly interactive web applications or you just need to add a date picker to a form control, jQuery UI is the perfect choice.",
"time": "2016-09-16 05:47:55"
},
{
"name": "datatables/datatables",
"version": "1.10.16",
"source": {
"type": "git",
"url": "https://github.com/DataTables/DataTables.git",
"reference": "75a665f64f02982c0f4666b15a25c4670e5e6b18"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/DataTables/DataTables/zipball/75a665f64f02982c0f4666b15a25c4670e5e6b18",
"reference": "75a665f64f02982c0f4666b15a25c4670e5e6b18",
"shasum": ""
},
"type": "library",
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "DataTables is a plug-in for the jQuery Javascript library. It is a highly flexible tool, based upon the foundations of progressive enhancement, which will add advanced interaction controls to any HTML table.",
"homepage": "http://www.datatables.net/",
"time": "2017-08-31 13:52:17"
},
{
"name": "datatables/plugins",
"version": "3.3.7",
"source": {
"type": "git",
"url": "https://github.com/DataTables/Plugins.git",
"reference": "master"
},
"type": "library"
},
{
"name": "easyrdf/easyrdf",
"version": "0.9.1",
@@ -1198,6 +1276,60 @@
],
"time": "2016-10-10 08:57:56"
},
{
"name": "moment/moment",
"version": "2.20.1",
"source": {
"type": "git",
"url": "https://github.com/moment/moment.git",
"reference": "03073778ec18ee38e179208cd1af899e8d1848dc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/moment/moment/zipball/03073778ec18ee38e179208cd1af899e8d1848dc",
"reference": "03073778ec18ee38e179208cd1af899e8d1848dc",
"shasum": ""
},
"require": {
"robloach/component-installer": "*"
},
"type": "component",
"extra": {
"component": {
"scripts": [
"moment.js"
],
"files": [
"min/*.js",
"locale/*.js"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Tim Wood",
"email": "washwithcare@gmail.com"
}
],
"description": "Parse, validate, manipulate, and display dates in JavaScript.",
"homepage": "https://github.com/moment/moment",
"keywords": [
"date",
"ender",
"format",
"i18n",
"l10n",
"moment",
"parse",
"time",
"validate"
],
"time": "2017-12-19 04:36:30"
},
{
"name": "netcarver/textile",
"version": "v3.6.0",
@@ -1840,16 +1972,16 @@
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.5.0",
"version": "v1.6.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803"
"reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7c8fae0ac1d216eb54349e6a8baa57d515fe8803",
"reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296",
"reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296",
"shasum": ""
},
"require": {
@@ -1861,7 +1993,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.5-dev"
"dev-master": "1.6-dev"
}
},
"autoload": {
@@ -1895,7 +2027,7 @@
"portable",
"shim"
],
"time": "2017-06-14 15:44:48"
"time": "2017-10-11 12:05:26"
},
{
"name": "symfony/process",
@@ -2008,16 +2140,16 @@
},
{
"name": "tinymce/tinymce",
"version": "4.7.1",
"version": "4.7.2",
"source": {
"type": "git",
"url": "https://github.com/tinymce/tinymce-dist.git",
"reference": "4fd91026d3765fee9b148b5e684b014a8e18ead1"
"reference": "2639396a6d5eb8db7457ed4f6de6f5d15303ef52"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/tinymce/tinymce-dist/zipball/4fd91026d3765fee9b148b5e684b014a8e18ead1",
"reference": "4fd91026d3765fee9b148b5e684b014a8e18ead1",
"url": "https://api.github.com/repos/tinymce/tinymce-dist/zipball/2639396a6d5eb8db7457ed4f6de6f5d15303ef52",
"reference": "2639396a6d5eb8db7457ed4f6de6f5d15303ef52",
"shasum": ""
},
"type": "component",
@@ -2050,7 +2182,7 @@
"tinymce",
"wysiwyg"
],
"time": "2017-10-09 13:17:31"
"time": "2017-11-07 12:44:31"
},
{
"name": "tomazdragar/SimpleCropper",
+15 -2
View File
@@ -41,7 +41,20 @@ $this->phrasen['zeitaufzeichnung/alleEintraege']='Alle Einträge';
$this->phrasen['zeitaufzeichnung/summeEintraege']='Summe Einträge';
$this->phrasen['zeitaufzeichnung/arbeitszeit']='Arbeitszeit';
$this->phrasen['zeitaufzeichnung/pause']='Pausen';'inkl. 30 min. Pflichtpause';
$this->phrasen['zeitaufzeichnung/inklusivePflichtpause']='inkl. 30 min. Pflichtpause';
$this->phrasen['zeitaufzeichnung/handbuchZeitaufzeichnung']='Arbeitszeitaufzeichnung Leitfaden';
$this->phrasen['zeitaufzeichnung/inklusivePflichtpause']='inkl. 30 min. Pflichtpause';
$this->phrasen['zeitaufzeichnung/handbuchZeitaufzeichnung']='Arbeitszeitaufzeichnung Leitfaden';
$this->phrasen['zeitaufzeichnung/fiktiveNormalarbeitszeit']='Vereinbarung der fiktiven Normalarbeitszeit';
$this->phrasen['zeitaufzeichnung/projektexport']='Projektexport';
$this->phrasen['zeitaufzeichnung/projektliste']='Projektliste';
$this->phrasen['zeitaufzeichnung/projektlistegedruckt']='Projektliste gedruckt am:';
$this->phrasen['zeitaufzeichnung/personalnr']='Personal-Nr.:';
$this->phrasen['zeitaufzeichnung/jahr']='Jahr:';
$this->phrasen['zeitaufzeichnung/monat']='Monat:';
$this->phrasen['zeitaufzeichnung/tag']='Tag';
$this->phrasen['zeitaufzeichnung/startdatum']='Startdatum:';
$this->phrasen['zeitaufzeichnung/enddatum']='Enddatum:';
$this->phrasen['zeitaufzeichnung/stunden']='Stunden';
$this->phrasen['zeitaufzeichnung/taetigkeit']='Tätigkeit';
$this->phrasen['zeitaufzeichnung/keineprojekte']='keine Projekte vorhanden';
$this->phrasen['zeitaufzeichnung/summe']='Summe:';
?>
+15 -2
View File
@@ -41,7 +41,20 @@ $this->phrasen['zeitaufzeichnung/alleEintraege']='All entries';
$this->phrasen['zeitaufzeichnung/summeEintraege']='Total';
$this->phrasen['zeitaufzeichnung/arbeitszeit']='Working time';
$this->phrasen['zeitaufzeichnung/pause']='Breaks';
$this->phrasen['zeitaufzeichnung/inklusicePlichtpause']='incl. 30 min. lunch break';
$this->phrasen['zeitaufzeichnung/handbuchZeitaufzeichnung']='Timesheet howto';
$this->phrasen['zeitaufzeichnung/inklusicePlichtpause']='incl. 30 min. lunch break';
$this->phrasen['zeitaufzeichnung/handbuchZeitaufzeichnung']='Timesheet howto';
$this->phrasen['zeitaufzeichnung/fiktiveNormalarbeitszeit']='Vereinbarung der fiktiven Normalarbeitszeit';
$this->phrasen['zeitaufzeichnung/projektexport']='Projectexport';
$this->phrasen['zeitaufzeichnung/projektliste']='Projectlist';
$this->phrasen['zeitaufzeichnung/projektlistegedruckt']='Projectlist printed on:';
$this->phrasen['zeitaufzeichnung/personalnr']='staff number ';
$this->phrasen['zeitaufzeichnung/jahr']='Year:';
$this->phrasen['zeitaufzeichnung/monat']='Month:';
$this->phrasen['zeitaufzeichnung/tag']='Day';
$this->phrasen['zeitaufzeichnung/startdatum']='Startdate:';
$this->phrasen['zeitaufzeichnung/enddatum']='Enddate:';
$this->phrasen['zeitaufzeichnung/stunden']='Hours';
$this->phrasen['zeitaufzeichnung/taetigkeit']='Activity';
$this->phrasen['zeitaufzeichnung/keineprojekte']='no projects exist';
$this->phrasen['zeitaufzeichnung/summe']='Sum:';
?>
+6 -6
View File
@@ -125,8 +125,8 @@ function loadStudienordnung()
$("#studienplan").html("Bitte wählen Sie zuerst eine Studienordnung aus!");
drawStudienordnungen(data.result);
//jqUi( "#menueLinks" ).accordion("option","active",1);
}
neueStudienordnung();
}
neueStudienordnung();
});
}
@@ -138,12 +138,12 @@ function drawStudienordnungen(data)
{
var obj='<a href="#Neu" onclick="neueStudienordnung();return false;">Neue Studienordnung</a><ul style="padding-left: 15px">';
for(i in data)
for(i in data)
{
if(data[i].studienordnung_id !== null)
{
obj = obj + '<li>'
+' <a style="white-space:nowrap" href="#Load'+data[i].studienordnung_id+'" onclick="loadStudienplanSTO('+data[i].studienordnung_id+','+data[i].studienplan_id+',\''+data[i].bezeichnung+'\',);return false;">'+data[i].bezeichnung+'</a>&nbsp;'
+' <a style="white-space:nowrap" href="#Load'+data[i].studienordnung_id+'" onclick="loadStudienplanSTO('+data[i].studienordnung_id+','+data[i].studienplan_id+',\''+data[i].bezeichnung+'\');return false;">'+data[i].bezeichnung+'</a>&nbsp;'
+' <a href="#Copy'+data[i].studienordnung_id+'" onclick="copyStudienordnung('+data[i].studienordnung_id+');return false;"><img title="Studienordnung kopieren" src="../../skin/images/copy.png"></a>&nbsp;&nbsp;&nbsp;'
+' <a href="../../content/pdfExport.php?xml=studienordnung.rdf.php&xsl=Studienordnung&studienordnung_id='+data[i].studienordnung_id+'&stg_kz=0&output=doc"><img style="cursor:pointer; height: 16px;" title="Studienordnung als Word-Dokument exportieren" src="../../skin/images/doc_icon.png"></a>'
+' <a href="../../content/pdfExport.php?xml=studienordnung.rdf.php&xsl=Studienordnung&studienordnung_id='+data[i].studienordnung_id+'&stg_kz=0&output=pdf"><img style="cursor:pointer; height: 16px;" title="Studienordnung als PDF-Dokument exportieren" src="../../skin/images/pdf_icon.png"></a>'
@@ -174,7 +174,7 @@ function loadStudienplanSTO(neue_studienordnung_id, studienplan_id,bezeichnung)
"typ": "json",
"class": "studienplan",
"method": "loadStudienplanSTO",
"parameter_0": global_studienordnung_id
"parameter_0": global_studienordnung_id
},
error: loadError
}).success(function(data)
@@ -1455,7 +1455,7 @@ function writeOverallSum(root)
*/
function semesterSTPLZuordnung()
{
drawHeader('Neue Studienplan Zuordnung');
drawHeader('Neue Studienplan Zuordnung');
$("#data").load('studienordnung.inc.php?method=semesterSTPLZuordnung&studienplan_id='+global_studienplan_id);
}