This commit is contained in:
Cris
2022-09-15 10:17:33 +02:00
33 changed files with 2048 additions and 297 deletions
+2 -2
View File
@@ -7,8 +7,8 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
$config['interval_blocking_application'] = 'P1M';
// Application submission period given by start- and enddate.
$config['submit_application_start'] = '01.02.2021';
$config['submit_application_end'] = '22.02.2021';
$config['submit_application_start'] = '05.09.2022';
$config['submit_application_end'] = '22.09.2022';
// Lehrveranstaltungen with these grades will be blocked for application
$config['grades_blocking_application'] = array(
+7
View File
@@ -119,6 +119,13 @@ $config['navigation_header'] = array(
'expand' => true,
'sort' => 30,
'requiredPermissions' => 'system/issues_verwalten:r'
),
'gruppenmanagement' => array(
'link' => site_url('person/Gruppenmanagement'),
'description' => 'Gruppenmanagement',
'expand' => true,
'sort' => 40,
'requiredPermissions' => 'lehre/gruppenmanager:r'
)
)
),
@@ -45,6 +45,14 @@ class Zgv extends API_Controller
}
}
/**
* @return zgv
*/
public function getAllZgv()
{
$this->response($this->Zgv_model->getAllZgv(), REST_Controller::HTTP_OK);
}
/**
* @return void
*/
@@ -45,6 +45,14 @@ class Zgvmaster extends API_Controller
}
}
/**
* @return zgvmaster
*/
public function getAllZgvmaster()
{
$this->response($this->Zgvmaster_model->getAllZgvmaster(), REST_Controller::HTTP_OK);
}
/**
* @return void
*/
@@ -41,7 +41,7 @@ class requestAnrechnung extends Auth_Controller
// Load configs
$this->load->config('anrechnung');
// Load language phrases
$this->loadPhrases(
array(
@@ -52,59 +52,59 @@ class requestAnrechnung extends Auth_Controller
'lehre'
)
);
$this->_setAuthUID();
$this->setControllerId();
}
public function index()
{
$studiensemester_kurzbz = $this->input->get('studiensemester');
$lehrveranstaltung_id = $this->input->get('lv_id');
if (isEmptyString($lehrveranstaltung_id) || isEmptyString($studiensemester_kurzbz))
{
show_error('Missing correct parameter');
}
// Exit if user is not a student
$result = $this->StudentModel->load(array('student_uid' => $this->_uid));
if (!hasData($result))
{
show_error('Cant load user');
}
// Get Prestudent ID
$prestudent_id = getData($result)[0]->prestudent_id;
// Check if application deadline is expired
$is_expired = self::_isExpired(
$this->config->item('submit_application_start'),
$this->config->item('submit_application_end'),
$studiensemester_kurzbz
);
// Check if Lehrveranstaltung was already graded with application blocking grades
$is_blocked = self::_LVhasBlockingGrades($studiensemester_kurzbz, $lehrveranstaltung_id);
// Get Anrechung data
$anrechnungData = $this->anrechnunglib->getAnrechnungDataByLv($lehrveranstaltung_id, $studiensemester_kurzbz, $prestudent_id);
// Get Antrag data
$antragData = $this->anrechnunglib->getAntragData($prestudent_id, $studiensemester_kurzbz, $lehrveranstaltung_id);
$viewData = array(
'antragData' => $antragData,
'anrechnungData' => $anrechnungData,
'is_expired' => $is_expired,
'is_blocked' => $is_blocked
);
$this->load->view('lehre/anrechnung/requestAnrechnung.php', $viewData);
}
/**
* Apply Anrechnungsantrag and send to STGL
*/
@@ -129,35 +129,35 @@ class requestAnrechnung extends Auth_Controller
{
return $this->outputJsonError($this->p->t('ui', 'errorFelderFehlen'));
}
if (isEmptyString($bestaetigung))
{
return $this->outputJsonError($this->p->t('ui', 'errorBestaetigungFehlt'));
}
// Exit if user is not a student
$result = $this->StudentModel->load(array('student_uid' => $this->_uid));
if (!hasData($result))
{
return $this->outputJsonError('Cant load user');
}
// Get Prestudent ID
$prestudent_id = getData($result)[0]->prestudent_id;
// Exit if application already exists
if (self::_applicationExists($lehrveranstaltung_id, $studiensemester_kurzbz, $prestudent_id))
{
return $this->outputJsonError($this->p->t('anrechnung', 'antragBereitsGestellt'));
}
// Exit if application is not for actual studysemester
if (!self::_applicationIsForActualSS($studiensemester_kurzbz))
{
return $this->outputJsonError($this->p->t('anrechnung', 'antragNurImAktSS'));
}
// Upload document
$result = self::_uploadFile();
@@ -165,10 +165,10 @@ class requestAnrechnung extends Auth_Controller
{
return $this->outputJsonError($result->retval);
}
// Hold just inserted DMS ID
$lastInsert_dms_id = $result->retval['dms_id'];
// Save Anrechnung and Anrechnungstatus
$result = $this->AnrechnungModel->createAnrechnungsantrag(
$prestudent_id,
@@ -178,12 +178,12 @@ class requestAnrechnung extends Auth_Controller
$lastInsert_dms_id,
$anmerkung
);
if (isError($result))
{
$this->terminateWithJsonError(getError($result));
}
// Output to AJAX
$this->outputJsonSuccess(array(
'antragdatum' => (new DateTime())->format('d.m.Y'),
@@ -0,0 +1,254 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* Page for managing groups of which user is the manager
*/
class Gruppenmanagement extends Auth_Controller
{
private $_uid; // contains the UID of the logged user
/**
* Constructor
*/
public function __construct()
{
parent::__construct(
array(
'index' => 'lehre/gruppenmanager:r',
'showBenutzergruppe' => 'lehre/gruppenmanager:r',
'getBenutzer' => 'lehre/gruppenmanager:r',
'getAllBenutzer' => 'lehre/gruppenmanager:r',
'addBenutzer' => 'lehre/gruppenmanager:rw',
'removeBenutzer' => 'lehre/gruppenmanager:rw'
)
);
// Loads models
$this->load->model('person/benutzer_model', 'BenutzerModel');
$this->load->model('ressource/mitarbeiter_model', 'MitarbeiterModel');
$this->load->model('person/benutzergruppe_model', 'BenutzergruppeModel');
$this->load->model('system/Log_model', 'LogModel');
$this->load->library('WidgetLib');
$this->loadPhrases(
array(
'global',
'person',
'lehre',
'ui',
'filter',
'gruppenmanagement'
)
);
$this->setControllerId(); // sets the controller id
$this->_setAuthUID(); // sets property uid
}
// -----------------------------------------------------------------------------------------------------------------
// Public methods
/**
* Main page
*/
public function index()
{
$this->load->view(
'person/gruppenmanagement/gruppenmanagement.php',
array('uid' => $this->_uid)
);
}
/**
* Shows Benutzergruppe overview page.
*/
public function showBenutzergruppe()
{
$this->_setNavigationMenuShowDetails();
$gruppe_kurzbz = $this->input->get('gruppe_kurzbz');
$data[self::FHC_CONTROLLER_ID] = $this->getControllerId();
$this->load->view(
'person/gruppenmanagement/benutzergruppe.php',
array('gruppe_kurzbz' => $gruppe_kurzbz)
);
}
/**
* Gets Benutzer assigned to a Gruppe
*/
public function getBenutzer()
{
$gruppe_kurzbz = $this->input->get('gruppe_kurzbz');
$this->BenutzergruppeModel->addSelect('uid, vorname, nachname, ben.aktiv');
$this->BenutzergruppeModel->addJoin('public.tbl_benutzer ben', 'uid');
$this->BenutzergruppeModel->addJoin('public.tbl_person', 'person_id');
$benutzerRes = $this->BenutzergruppeModel->loadWhere(array('gruppe_kurzbz' => $gruppe_kurzbz));
$this->outputJson($benutzerRes);
}
/**
* Gets all Benutzer for assignment to Gruppe
*/
public function getAllBenutzer()
{
$this->BenutzerModel->addSelect('uid, vorname, nachname');
$this->BenutzerModel->addJoin('public.tbl_person', 'person_id');
$benutzerRes = $this->BenutzerModel->loadWhere(
array('tbl_benutzer.aktiv' => true)
);
$this->outputJson($benutzerRes);
}
/**
* Adds a Benutzer to Gruppe
*/
public function addBenutzer()
{
$uid = $this->input->post('uid');
$gruppe_kurzbz = $this->input->post('gruppe_kurzbz');
if (isEmptyString($uid))
$result = error('Uid missing');
else
{
$benutzerExistsRes = $this->BenutzergruppeModel->loadWhere(
array(
'uid' => $uid,
'gruppe_kurzbz' => $gruppe_kurzbz
)
);
if (isError($benutzerExistsRes))
{
$this->outputJsonError(getError($benutzerExistsRes));
return;
}
if (hasData($benutzerExistsRes))
{
$this->outputJsonError($this->p->t('gruppenmanagement', 'benutzerSchonZugewiesen'));
return;
}
$result = $this->BenutzergruppeModel->insert(
array(
'uid' => $uid,
'gruppe_kurzbz' => $gruppe_kurzbz,
'insertamum' => date('Y-m-d H:i:s'),
'insertvon' => $this->_uid
)
);
// log the group add
$lastQry = $this->db->last_query();
if (isSuccess($result))
{
$beschreibung = 'Gruppenmanagement: Nutzer zu Gruppe hinzugefügt';
$this->_writeLog($this->_uid, $beschreibung, $lastQry);
}
}
$this->outputJson($result);
}
/**
* Removes Benutzer from Gruppe
*/
public function removeBenutzer()
{
$uid = $this->input->post('uid');
$gruppe_kurzbz = $this->input->post('gruppe_kurzbz');
if (isEmptyString($uid))
$result = error('Uid missing');
else
{
$result = $this->BenutzergruppeModel->delete(
array(
'uid' => $uid,
'gruppe_kurzbz' => $gruppe_kurzbz
)
);
}
// log the group remove
$lastQry = $this->db->last_query();
if (isSuccess($result))
{
$beschreibung = 'Gruppenmanagement: Nutzer aus Gruppe entfernt';
$this->_writeLog($this->_uid, $beschreibung, $lastQry);
}
$this->outputJson($result);
}
// -----------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Define the navigation menu for the showDetails page
*/
private function _setNavigationMenuShowDetails()
{
$this->load->library('NavigationLib', array('navigation_page' => 'person/Gruppenmanagement/showBenutzergruppe'));
$link = site_url('person/Gruppenmanagement');
$this->navigationlib->setSessionMenu(
array(
'back' => $this->navigationlib->oneLevel(
'Zurück', // description
$link, // link
array(), // children
'angle-left', // icon
true, // expand
null, // subscriptDescription
null, // subscriptLinkClass
null, // subscriptLinkValue
'', // target
1 // sort
)
)
);
}
/**
* Set uid of authentificated user
*/
private function _setAuthUID()
{
$this->_uid = getAuthUID();
if (!$this->_uid) show_error('User authentification failed');
}
/**
* Writes an entry in the log table
*/
private function _writeLog($uid, $beschreibung, $lastQry)
{
$mitarbeiterResult = $this->MitarbeiterModel->load(array('mitarbeiter_uid'=>$this->_uid));
if(!isSuccess($mitarbeiterResult) || !hasData($mitarbeiterResult))
{
$uid = DUMMY_LEKTOR_UID;
$beschreibung .= ': '.$this->_uid;
$beschreibung = mb_substr($beschreibung, 0, 64);
}
$this->LogModel->insert(array(
'mitarbeiter_uid' => $uid,
'beschreibung' => $beschreibung,
'sql' => $lastQry
));
}
}
@@ -88,6 +88,12 @@ class InfoCenter extends Auth_Controller
'message' => 'Type of Document %s was updated, set to %s',
'success' => null
),
'deletedoc' => array(
'logtype' => 'Action',
'name' => 'Document deleted',
'message' => 'Document %s deleted',
'success' => null
),
);
// Name of Interessentenstatus
@@ -131,6 +137,7 @@ class InfoCenter extends Auth_Controller
'reloadZgvPruefungen' => 'infocenter:r',
'reloadMessages' => 'infocenter:r',
'reloadDoks' => 'infocenter:r',
'reloadUebersichtDoks' => 'infocenter:r',
'reloadNotizen' => array('infocenter:r', 'lehre/zgvpruefung:r'),
'reloadLogs' => 'infocenter:r',
'outputAkteContent' => array('infocenter:r', 'lehre/zgvpruefung:r'),
@@ -142,7 +149,9 @@ class InfoCenter extends Auth_Controller
'getStudienjahrEnd' => array('infocenter:r', 'lehre/zgvpruefung:r'),
'setNavigationMenuArrayJson' => 'infocenter:r',
'getAbsageData' => 'infocenter:r',
'saveAbsageForAll' => 'infocenter:rw'
'saveAbsageForAll' => 'infocenter:rw',
'deleteDoc' => 'infocenter:rw',
'getStudienartData' => 'infocenter:rw'
)
);
@@ -159,6 +168,10 @@ class InfoCenter extends Auth_Controller
$this->load->model('system/Message_model', 'MessageModel');
$this->load->model('system/Filters_model', 'FiltersModel');
$this->load->model('system/PersonLock_model', 'PersonLockModel');
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
$this->load->model('codex/Zgv_model', 'ZgvModel');
$this->load->model('codex/Zgvmaster_model', 'ZgvmasterModel');
$this->load->model('codex/Nation_model', 'NationModel');
// Loads libraries
$this->load->library('PersonLogLib');
@@ -398,6 +411,35 @@ class InfoCenter extends Auth_Controller
$this->outputJsonSuccess(array($json));
}
public function deleteDoc($person_id)
{
$akte_id = $this->input->post('akteid');
if (isset($akte_id) && isset($person_id))
{
$this->load->library('AkteLib');
$akte = $this->aktelib->get($akte_id);
if (hasData($akte))
{
$akte = getData($akte);
if ($akte->person_id === (int)$person_id)
{
$result = $this->aktelib->remove($akte_id);
if (isError($result))
{
$this->terminateWithJsonError('Error deleting document');
}
$this->_log($person_id, 'deletedoc', array($akte->bezeichnung));
$this->outputJsonSuccess('success');
}
}
}
}
/**
* Gets prestudent data for a person in json format
* @param $person_id
@@ -1074,6 +1116,17 @@ class InfoCenter extends Auth_Controller
$this->load->view('system/infocenter/dokNachzureichend.php', array('dokumente_nachgereicht' => $dokumente_nachgereicht->retval));
}
public function reloadUebersichtDoks($person_id)
{
$dokumente = $this->AkteModel->getAktenWithDokInfo($person_id, null, false);
$this->DokumentModel->addOrder('bezeichnung');
$dokumentdata = array('dokumententypen' => (getData($this->DokumentModel->load())));
$data = array_merge($dokumentdata, ['dokumente' => $dokumente->retval]);
$this->load->view('system/infocenter/dokpruefung.php', $data);
}
/**
* Outputs content of an Akte, sends appropriate headers (so the document can be downloaded)
* @param $akte_id
@@ -1932,10 +1985,13 @@ class InfoCenter extends Auth_Controller
$abwstatusgruende = $this->StatusgrundModel->getStatus(self::ABGEWIESENERSTATUS, true)->retval;
$intstatusgruende = $this->StatusgrundModel->getStatus(self::INTERESSENTSTATUS)->retval;
$studienArtBerechtigung = array_column($this->getStudienArtBerechtigung(), 'typ');
$data = array (
'zgvpruefungen' => $zgvpruefungen,
'abwstatusgruende' => $abwstatusgruende,
'intstatusgruende' => $intstatusgruende
'intstatusgruende' => $intstatusgruende,
'studienArtBerechtigung' => $studienArtBerechtigung
);
return $data;
@@ -2194,18 +2250,36 @@ class InfoCenter extends Auth_Controller
public function getAbsageData()
{
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
$studiengang_kz_all = $this->permissionlib->getSTG_isEntitledFor('infocenter');
$stg_typ = $this->StudiengangModel->getStudiengangTyp($studiengang_kz_all, ['b', 'm']);
$statusgruende = $this->StatusgrundModel->getStatus(self::ABGEWIESENERSTATUS, true)->retval;
$studienSemester = $this->variablelib->getVar('infocenter_studiensemester');
$studiengaenge = $this->StudiengangModel->getStudiengaengeWithOrgForm(['b', 'm'], $studienSemester);
if (hasData($stg_typ))
{
$stg_typ = getData($stg_typ);
$statusgruende = $this->StatusgrundModel->getStatus(self::ABGEWIESENERSTATUS, true)->retval;
$studienSemester = $this->variablelib->getVar('infocenter_studiensemester');
$studiengaenge = $this->StudiengangModel->getStudiengaengeWithOrgForm(array_column($stg_typ, 'typ'), $studienSemester);
$data = array (
'statusgruende' => $statusgruende,
'studiengaenge' => $studiengaenge->retval
);
$data = array (
'statusgruende' => $statusgruende,
'studiengaenge' => $studiengaenge->retval
);
$this->outputJsonSuccess($data);
$this->outputJsonSuccess($data);
}
else
$this->outputJsonSuccess(null);
}
public function getStudienArtBerechtigung()
{
$studiengang_kz_all = $this->permissionlib->getSTG_isEntitledFor('infocenter');
$stg_typ = $this->StudiengangModel->getStudiengangTyp($studiengang_kz_all, ['b', 'm', 'l']);
return getData($stg_typ);
}
public function getStudienartData()
{
$this->outputJsonSuccess($this->getStudienArtBerechtigung());
}
public function saveAbsageForAll()
+12 -2
View File
@@ -3,7 +3,7 @@
class Nation_model extends DB_Model
{
/**
*
*
*/
public function __construct()
{
@@ -11,4 +11,14 @@ class Nation_model extends DB_Model
$this->dbTable = 'bis.tbl_nation';
$this->pk = 'nation_code';
}
}
/**
* getAllForStyled Dropdown
*/
public function getAll()
{
$allNations = 'SELECT * FROM bis.tbl_nation ORDER BY bis.tbl_nation.langtext ASC;';
return $this->execQuery($allNations);
}
}
+12
View File
@@ -11,4 +11,16 @@ class Zgv_model extends DB_Model
$this->dbTable = 'bis.tbl_zgv';
$this->pk = 'zgv_code';
}
/**
* getAllForStyled Dropdown
*/
public function getAllZgv()
{
$allZgv = 'SELECT * FROM bis.tbl_zgv ORDER BY zgv_bez ASC;';
return $this->execQuery($allZgv);
}
}
@@ -11,4 +11,14 @@ class Zgvmaster_model extends DB_Model
$this->dbTable = 'bis.tbl_zgvmaster';
$this->pk = 'zgvmas_code';
}
/**
* getAllForStyled Dropdown
*/
public function getAllZgvmaster()
{
$allZgvMaster = 'SELECT * FROM bis.tbl_zgvmaster ORDER BY zgvmas_bez ASC;';
return $this->execQuery($allZgvMaster);
}
}
@@ -507,4 +507,14 @@ class Studiengang_model extends DB_Model
return $this->execQuery($query, array($typ, $semester));
}
public function getStudiengangTyp($studiengang_kz, $typ)
{
$query = "SELECT DISTINCT(sgt.*)
FROM tbl_studiengangstyp sgt JOIN tbl_studiengang sg on sgt.typ = sg.typ
WHERE studiengang_kz IN ? and sgt.typ IN ?";
return $this->execQuery($query, array($studiengang_kz, $typ));
}
}
@@ -0,0 +1,75 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'Benutzer in Gruppe',
'jquery' => true,
'jqueryui' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'tablesorter' => true,
'ajaxlib' => true,
'dialoglib' => true,
'navigationwidget' => true,
'phrases' => array(
'gruppenmanagement',
'ui'
),
'customCSSs' => 'public/css/sbadmin2/tablesort_bootstrap.css',
'customJSs' => array('public/js/bootstrapper.js', 'public/js/tablesort/tablesort.js', 'public/js/person/benutzergruppe.js')
)
);
?>
<body>
<div id="wrapper">
<?php echo $this->widgetlib->widget('NavigationWidget'); ?>
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">
<?php echo ucfirst($this->p->t('gruppenmanagement', 'benutzergruppe')).' '.$gruppe_kurzbz ?>
</h3>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="form-inline">
<div class="input-group" id="absgstatusgrselect_137998">
<input type="text" class="form-control" name="teilnehmerSelect" id="teilnehmerSelect">
<input type="hidden" name="teilnehmer_uid" id="teilnehmer_uid">
<input type="hidden" name="gruppe_kurzbz" id="gruppe_kurzbz" value="<?php echo $gruppe_kurzbz ?>">
<span class="input-group-btn">
<button type="button" class="btn btn-default" id="teilnehmerHinzufuegen">
<?php echo $this->p->t('gruppenmanagement', 'benutzerHinzufuegen') ?>
</button>
</span>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<table class="table table-bordered table-condensed table-responsive" id="benutzer-table">
<thead>
<th>Uid</th>
<th><?php echo ucfirst($this->p->t('person', 'vorname')); ?></th>
<th><?php echo ucfirst($this->p->t('person', 'nachname')); ?></th>
<th><?php echo ucfirst($this->p->t('gruppenmanagement', 'aktiv')); ?></th>
<th><?php echo ucfirst($this->p->t('ui', 'entfernen')); ?></th>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</body>
<?php $this->load->view('templates/FHC-Footer'); ?>
@@ -0,0 +1,46 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'Gruppenmanagement',
'jquery' => true,
'jqueryui' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'tablesorter' => true,
'ajaxlib' => true,
'filterwidget' => true,
'navigationwidget' => true,
'phrases' => array(
'ui'
),
'customCSSs' => 'public/css/sbadmin2/tablesort_bootstrap.css',
'customJSs' => array('public/js/bootstrapper.js')
)
);
?>
<body>
<div id="wrapper">
<?php echo $this->widgetlib->widget('NavigationWidget'); ?>
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">
<?php echo ucfirst($this->p->t('gruppenmanagement', 'gruppenmanagement')); ?>
</h3>
</div>
</div>
<div>
<?php $this->load->view('person/gruppenmanagement/gruppenmanagementData.php'); ?>
</div>
</div>
</div>
</div>
</body>
<?php $this->load->view('templates/FHC-Footer'); ?>
@@ -0,0 +1,66 @@
<?php
$filterWidgetArray = array(
'query' => '
SELECT gruppe_kurzbz, grp.bezeichnung AS gruppe_bezeichnung, grp.beschreibung AS gruppe_beschreibung,
studiengang_kz, UPPER(stg.typ||stg.kurzbz) AS studiengang_kurzbz, semester, sichtbar, lehre, grp.aktiv, mailgrp, generiert
FROM public.tbl_gruppe grp
JOIN public.tbl_studiengang stg USING (studiengang_kz)
JOIN public.tbl_gruppe_manager grpmgr USING (gruppe_kurzbz)
WHERE grp.aktiv = TRUE
AND grpmgr.uid = \''.$uid.'\'',
'requiredPermissions' => 'lehre/gruppenmanager',
'datasetRepresentation' => 'tablesorter',
'additionalColumns' => array('Teilnehmer'),
'columnsAliases' => array(
ucfirst($this->p->t('gruppenmanagement', 'kurzbezeichnung')),
ucfirst($this->p->t('gruppenmanagement', 'bezeichnung')),
ucfirst($this->p->t('gruppenmanagement', 'beschreibung')),
ucfirst($this->p->t('lehre', 'studiengangskennzahlLehre')),
ucfirst($this->p->t('lehre', 'studiengang')),
ucfirst($this->p->t('lehre', 'semester')),
'Sichtbar',
'Lehre',
'Aktiv',
'Mailgrp',
'Generiert'
),
'formatRow' => function($datasetRaw) {
/* NOTE: Dont use $this here for PHP Version compatibility */
$datasetRaw->{'Teilnehmer'} = sprintf(
'<a href="%s?gruppe_kurzbz=%s&origin_page=%s&fhc_controller_id=%s">'.$this->p->t('gruppenmanagement', 'zuweisenloeschen').'</a>',
site_url('person/Gruppenmanagement/showBenutzergruppe'),
$datasetRaw->{'gruppe_kurzbz'},
'index',
(isset($_GET['fhc_controller_id'])?$_GET['fhc_controller_id']:'')
);
if ($datasetRaw->{'gruppe_bezeichnung'} == null)
{
$datasetRaw->{'gruppe_bezeichnung'} = '-';
}
if ($datasetRaw->{'gruppe_beschreibung'} == null)
{
$datasetRaw->{'gruppe_beschreibung'} = '-';
}
if ($datasetRaw->{'semester'} == null)
{
$datasetRaw->{'semester'} = '-';
}
$datasetRaw->{'sichtbar'} = $datasetRaw->{'sichtbar'} == 'true' ? 'ja' : 'nein';
$datasetRaw->{'lehre'} = $datasetRaw->{'lehre'} == 'true' ? 'ja' : 'nein';
$datasetRaw->{'aktiv'} = $datasetRaw->{'aktiv'} == 'true' ? 'ja' : 'nein';
$datasetRaw->{'mailgrp'} = $datasetRaw->{'mailgrp'} == 'true' ? 'ja' : 'nein';
$datasetRaw->{'generiert'} = $datasetRaw->{'generiert'} == 'true' ? 'ja' : 'nein';
return $datasetRaw;
}
);
$filterWidgetArray['app'] = 'core';
$filterWidgetArray['datasetName'] = 'gruppenmanagement';
$filterWidgetArray['filterKurzbz'] = 'gruppenmanagement';
$filterWidgetArray['filter_id'] = $this->input->get('filter_id');
echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray);
?>
@@ -1,10 +1,11 @@
<div class="table-responsive">
<table id="doctable" class="table table-bordered">
<div class="table-responsive" id="uebersichtDoks">
<table id="doctable" class="table table-bordered table-condensed tablesorter tablesorter-default">
<thead>
<tr>
<th><?php echo ucfirst($this->p->t('global','name')) ?></th>
<th><?php echo ucfirst($this->p->t('global','typ')) ?></th>
<th><?php echo ucfirst($this->p->t('global','uploaddatum')) ?></th>
<th><?php echo ucfirst($this->p->t('ui','loeschen')) ?></th>
<th><?php echo ucfirst($this->p->t('infocenter','ausstellungsnation')) ?></th>
<?php
if (!isset($formalReadonly))
@@ -22,7 +23,7 @@
<a href="outputAkteContent/<?php echo $dokument->akte_id ?>"><?php echo isEmptyString($dokument->titel) ? $dokument->bezeichnung : $dokument->titel ?></a>
</td>
<td>
<select class="aktenid" id="aktenid_<?php echo $dokument->akte_id?>" <?php echo (isset($formalReadonly) ? 'disabled' : '') ?> autocomplete="off">
<select class="form-control aktenid" id="aktenid_<?php echo $dokument->akte_id?>" <?php echo (isset($formalReadonly) ? 'disabled' : '') ?> autocomplete="off">
<?php
foreach($dokumententypen as $dokumenttyp)
echo "<option " . ($dokumenttyp->bezeichnung === $dokument->dokument_bezeichnung ? 'selected' : '') . " value = " . $dokumenttyp->dokument_kurzbz . ">" . $dokumenttyp->bezeichnung . "</option>"
@@ -30,7 +31,7 @@
</select>
<div class="row">
<button class="nachreichungInfos hidden" id="nachreichungInfos_<?php echo $dokument->akte_id?>"><?php echo ucfirst($this->p->t('infocenter','dokumentWirdNachgereicht')) ?></button>
<button class="nachreichungInfos hidden btn btn-default" id="nachreichungInfos_<?php echo $dokument->akte_id?>"><?php echo ucfirst($this->p->t('infocenter','dokumentWirdNachgereicht')) ?></button>
</div>
<div class="nachreichungInputs hidden" id="nachreichungInputs_<?php echo $dokument->akte_id?>">
@@ -49,7 +50,7 @@
<div class="row">
<div class="col-sm-12">
<div class="btn-group pull-right">
<input type="button" value="OK" class="btn btn-primary nachreichungSpeichern" id="nachreichungSpeichern_<?php echo $dokument->akte_id?>">
<input type="button" value="OK" class="btn btn-primary nachreichungSpeichern btn-default" id="nachreichungSpeichern_<?php echo $dokument->akte_id?>">
<input type="button" value="Abbrechen" class="btn btn-default nachreichungAbbrechen" id="nachreichungAbbrechen_<?php echo $dokument->akte_id?>">
</div>
</div>
@@ -60,6 +61,7 @@
</td>
<td><?php echo date_format(date_create($dokument->erstelltam), 'd.m.Y') ?></td>
<td><input type="button" value="<?php echo ucfirst($this->p->t('ui','loeschen')); ?>" class="btn btn-default dokLoeschen" id="dokLoeschen_<?php echo $dokument->akte_id?>" <?php echo (isset($formalReadonly) ? 'disabled' : '') ?>></td>
<td><?php echo $dokument->langtext ?></td>
<?php
if (!isset($formalReadonly)) :
@@ -15,6 +15,7 @@
$AKTE_TYP = '\'identity\', \'zgv_bakk\'';
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
$ORG_NAME = '\'InfoCenter\'';
$ONLINE = '\'online\'';
$query = '
SELECT
@@ -55,10 +56,13 @@
a.dokument_kurzbz in ('.$AKTE_TYP.')
) AS "AnzahlAkte",
(
SELECT CASE WHEN sp.nachname IS NULL THEN l.insertvon ELSE sp.nachname END
SELECT CASE WHEN student.student_uid IS NULL THEN
(CASE WHEN sp.nachname IS NULL THEN l.insertvon ELSE sp.nachname END)
ELSE '. $ONLINE .' END
FROM system.tbl_log l
LEFT JOIN public.tbl_benutzer on l.insertvon = tbl_benutzer.uid
LEFT JOIN public.tbl_person sp on tbl_benutzer.person_id = sp.person_id
LEFT JOIN public.tbl_student student ON tbl_benutzer.uid = student.student_uid
WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.')
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
AND l.person_id = p.person_id
@@ -12,6 +12,7 @@
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
$ORG_NAME = '\'InfoCenter\'';
$IDENTITY = '\'identity\'';
$ONLINE = '\'online\'';
$query = '
SELECT
@@ -42,10 +43,13 @@ $query = '
LIMIT 1
) AS "LastActionType",
(
SELECT CASE WHEN sp.nachname IS NULL THEN l.insertvon ELSE sp.nachname END
SELECT CASE WHEN student.student_uid IS NULL THEN
(CASE WHEN sp.nachname IS NULL THEN l.insertvon ELSE sp.nachname END)
ELSE '. $ONLINE .' END
FROM system.tbl_log l
LEFT JOIN public.tbl_benutzer on l.insertvon = tbl_benutzer.uid
LEFT JOIN public.tbl_person sp on tbl_benutzer.person_id = sp.person_id
LEFT JOIN public.tbl_student student ON tbl_benutzer.uid = student.student_uid
WHERE l.taetigkeit_kurzbz IN('.$TAETIGKEIT_KURZBZ.')
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
AND l.person_id = p.person_id
@@ -178,7 +182,7 @@ $query = '
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
AND ps.person_id = p.person_id
AND pss.studiensemester_kurzbz = '.$STUDIENSEMESTER.'
ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC
ORDER BY rtp.teilgenommen NULLS FIRST, pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC
LIMIT 1
) AS "ReihungstestAngetreten",
(
@@ -199,7 +203,7 @@ $query = '
LIMIT 1
) AS "ReihungstestApplied",
(
SELECT CONCAT(rtp.datum, rtp.uhrzeit)
SELECT (ARRAY_TO_STRING(array_agg(DISTINCT(CONCAT(rtp.datum, \' \', to_char(rtp.uhrzeit, \'HH24:MI\'), \' \', studiengang.kurzbzlang))), \', \'))
FROM public.tbl_prestudentstatus pss
JOIN public.tbl_prestudent ps USING(prestudent_id)
LEFT JOIN (
@@ -207,14 +211,17 @@ $query = '
rt.studiensemester_kurzbz,
rtp.teilgenommen,
rt.datum,
rt.uhrzeit
rt.uhrzeit,
rt.studiengang_kz
FROM public.tbl_rt_person rtp
JOIN tbl_reihungstest rt ON(rtp.rt_id = rt.reihungstest_id)
WHERE rt.stufe = 1
) rtp ON(rtp.person_id = ps.person_id AND rtp.studiensemester_kurzbz = pss.studiensemester_kurzbz)
JOIN tbl_studiengang studiengang ON rtp.studiengang_kz = studiengang.studiengang_kz
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
AND ps.person_id = p.person_id
AND pss.studiensemester_kurzbz = '.$STUDIENSEMESTER.'
GROUP BY pss.datum, pss.insertamum, pss.ext_id
ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC
LIMIT 1
) AS "ReihungstestDate",
@@ -414,10 +421,6 @@ $query = '
{
$datasetRaw->{'ReihungstestDate'} = '-';
}
else
{
$datasetRaw->{'ReihungstestDate'} = date_format(date_create($datasetRaw->{'ReihungstestDate'}),'Y-m-d H:i');
}
if ($datasetRaw->{'ZGVNation'} == null)
{
@@ -124,6 +124,32 @@
</div>
<div id="collapse<?php echo $zgvpruefung->prestudent_id ?>"
class="panel-collapse collapse<?php echo $infoonly ? '' : ' in' ?>">
<?php
$disabled = $disabledStg = $disabledTxt = $disabledStgTxt = '';
if (isEmptyString($zgvpruefung->prestudentstatus->bewerbung_abgeschicktamum))
{
$disabled = $disabledStg = 'disabled';
$disabledTxt = $disabledStgTxt = $this->p->t('infocenter', 'bewerbungMussAbgeschickt');
}
if ($studiengangtyp !== 'b' && $studiengangtyp !== 'm')
{
$disabled = 'disabled';
$disabledTxt = $this->p->t('infocenter', 'nurBachelorMasterFreigeben');
// FIT-Lehrgänge: exceptions, can be freigegeben in Infocenter
if (!in_array($studiengang_kz, $fit_programme_studiengaenge))
{
$disabledStg = 'disabled';
$disabledStgTxt = $this->p->t('infocenter', 'nurBachelorMasterFreigeben');
}
}
if (!in_array($studiengangtyp, $studienArtBerechtigung))
$disabledPer = 'disabled';
else
$disabledPer = '';
?>
<div class="panel-body">
<form action="javascript:void(0);" class="zgvform" id="zgvform_<?php echo $zgvpruefung->prestudent_id ?>">
<input type="hidden" name="prestudentid" value="<?php echo $zgvpruefung->prestudent_id ?>" class="prestudentidinput">
@@ -318,17 +344,17 @@
<?php if (!$infoonly): ?>
<div class="row">
<div class="col-xs-8 text-left zgvBearbeitungButtons" id="zgvBearbeitungButtons_<?php echo $zgvpruefung->prestudent_id ?>">
<button type="button" class="btn btn-default zgvUebernehmen" id="zgvUebernehmen_<?php echo $zgvpruefung->prestudent_id ?>">
<button type="button" class="btn btn-default zgvUebernehmen" id="zgvUebernehmen_<?php echo $zgvpruefung->prestudent_id ?>" <?php echo $disabledPer?>>
<?php echo $this->p->t('infocenter', 'letzteZgvUebernehmen') ?>
</button>
<button class="btn btn-default zgvRueckfragen" id="zgvRueckfragen_<?php echo $zgvpruefung->prestudent_id ?>">
<button class="btn btn-default zgvRueckfragen" <?php echo $disabledStg . ' ' . $disabledPer?> id="zgvRueckfragen_<?php echo $zgvpruefung->prestudent_id ?>">
<?php echo $this->p->t('infocenter', 'zgvRueckfragen') ?>
</button>
<span class="zgvStatusText" id="zgvStatusText_<?php echo $zgvpruefung->prestudent_id ?>" <?php (!(isset($zgvpruefung->statusZGV))) ?: print_r('data-info="need"')?>>
</span>
</div>
<div class="col-xs-4 text-right">
<button type="submit" class="btn btn-default saveZgv" id="zgvSpeichern_<?php echo $zgvpruefung->prestudent_id ?>">
<button type="submit" class="btn btn-default saveZgv" id="zgvSpeichern_<?php echo $zgvpruefung->prestudent_id ?>" <?php echo $disabledPer?>>
<?php echo $this->p->t('ui', 'speichern') ?>
</button>
</div>
@@ -336,7 +362,7 @@
<?php endif; ?>
<br />
<?php
if (isset($zgvpruefung->prestudentUdfs))
if (isset($zgvpruefung->prestudentUdfs) && $studiengangtyp !== 'l')
{
echo $this->udflib->UDFWidget(
array(
@@ -362,6 +388,8 @@
<div class="form-inline">
<div class="input-group" id="absgstatusgrselect_<?php echo $zgvpruefung->prestudent_id ?>">
<select name="absgstatusgrund"
<?php echo $disabledStg ?>
<?php echo $disabledPer ?>
class="d-inline float-right"
required>
<option value="null"
@@ -373,7 +401,7 @@
</select>
<span class="input-group-btn">
<button type="button"
class="btn btn-default absageBtn" id="absagebtn_<?php echo $zgvpruefung->prestudent_id ?>">
class="btn btn-default absageBtn" <?php echo $disabledStg . ' ' . $disabledPer?> id="absagebtn_<?php echo $zgvpruefung->prestudent_id ?>">
<?php echo $this->p->t('ui', 'absagen') ?>
</button>
</span>
@@ -381,25 +409,6 @@
</div>
</div><!-- /.column-absage -->
<?php
$disabled = $disabledStg = $disabledTxt = $disabledStgTxt = '';
if (isEmptyString($zgvpruefung->prestudentstatus->bewerbung_abgeschicktamum))
{
$disabled = $disabledStg = 'disabled';
$disabledTxt = $disabledStgTxt = $this->p->t('infocenter', 'bewerbungMussAbgeschickt');
}
if ($studiengangtyp !== 'b' && $studiengangtyp !== 'm')
{
$disabled = 'disabled';
$disabledTxt = $this->p->t('infocenter', 'nurBachelorMasterFreigeben');
// FIT-Lehrgänge: exceptions, can be freigegeben in Infocenter
if (!in_array($studiengang_kz, $fit_programme_studiengaenge))
{
$disabledStg = 'disabled';
$disabledStgTxt = $this->p->t('infocenter', 'nurBachelorMasterFreigeben');
}
}
if (!$infoonly) :
?>
<div class="col-lg-8 text-right">
@@ -408,6 +417,7 @@
<select name="frgstatusgrund"
class="d-inline float-right"
<?php echo $disabledStg ?>
<?php echo $disabledPer ?>
required>
<option value="null"
selected="selected"><?php echo ucfirst($this->p->t('ui', 'freigabeart')) . '...' ?>
@@ -417,14 +427,14 @@
<?php endforeach ?>
</select>
<span class="input-group-btn">
<button class="btn btn-default freigabebtnstg" <?php echo $disabledStg ?> id="freigabebtnstg_<?php echo $zgvpruefung->prestudent_id ?>"
<button class="btn btn-default freigabebtnstg" <?php echo $disabledStg . ' ' . $disabledPer?> id="freigabebtnstg_<?php echo $zgvpruefung->prestudent_id ?>"
data-toggle="tooltip" title="<?php echo $disabledStgTxt ?>">
<?php echo $this->p->t('ui', 'freigabeAnStudiengang') ?>
</button>
</span>
</div>
<div class="input-group" id="igrfrgbtn">
<button type="button" id="freigabebtn_<?php echo $zgvpruefung->prestudent_id ?>" class="btn btn-default freigabebtn" <?php echo $disabled ?>
<button type="button" id="freigabebtn_<?php echo $zgvpruefung->prestudent_id ?>" class="btn btn-default freigabebtn" <?php echo $disabled . ' ' . $disabledPer?>
data-toggle="tooltip" title="<?php echo $disabledTxt ?>">
<?php echo $this->p->t('ui', 'freigabeZumReihungstest') ?>
</button>
@@ -489,6 +499,8 @@
<div class="col-lg-4 text-left">
<div class="input-group" id="absgstatusgrselect_<?php echo $zgvpruefung->prestudent_id ?>">
<select name="absgstatusgrund"
<?php echo $disabledStg?>
<?php echo $disabledPer?>
class="d-inline float-right"
required>
<option value="null"
@@ -500,6 +512,8 @@
</select>
<span class="input-group-btn">
<button type="button"
<?php echo $disabledStg ?>
<?php echo $disabledPer ?>
class="btn btn-default absageBtn" id="absagebtn_<?php echo $zgvpruefung->prestudent_id ?>">
<?php echo $this->p->t('ui', 'absagen') ?>
</button>
@@ -552,4 +566,3 @@
endforeach; // end foreach zgvpruefungen
?>
</div><!-- /.panel-group -->
+3
View File
@@ -258,6 +258,9 @@ define('STIP_USER_PASSWORD','password');
// Array mit Usern die nicht Kollidieren
define('KOLLISIONSFREIE_USER',serialize(array('_DummyLektor')));
// UID des Dummy Lektors
define('DUMMY_LEKTOR_UID','_DummyLektor');
// Soll der Lageplan am Infoterminal angezeigt werden (true|false)
//define('CIS_INFOSCREEN_LAGEPLAN_ANZEIGEN', true);
+54 -16
View File
@@ -335,13 +335,26 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<menulist id="student-prestudent-menulist-zgvcode" disabled="true"
datasources="<?php echo APP_ROOT ?>rdf/zgv.rdf.php?optional=true" flex="1"
ref="http://www.technikum-wien.at/zgv/alle"
xmlns:ZGV="http://www.technikum-wien.at/zgv/rdf#"
style="min-width: 130px">
<template>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/zgv/rdf#code"
label="rdf:http://www.technikum-wien.at/zgv/rdf#kurzbz"
uri="rdf:*"/>
<rule ZGV:aktiv='f'>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/zgv/rdf#code"
label="rdf:http://www.technikum-wien.at/zgv/rdf#kurzbz"
uri="rdf:*"
style="text-decoration:line-through;"
/>
</menupopup>
</rule>
<rule>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/zgv/rdf#code"
label="rdf:http://www.technikum-wien.at/zgv/rdf#kurzbz"
uri="rdf:*"
/>
</menupopup>
</rule>
</template>
</menulist>
<label value="ZGV Ort" control="student-prestudent-textbox-zgvort"/>
@@ -392,14 +405,26 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<menulist id="student-prestudent-menulist-zgvmastercode" disabled="true"
datasources="<?php echo APP_ROOT ?>rdf/zgvmaster.rdf.php?optional=true" flex="1"
ref="http://www.technikum-wien.at/zgvmaster/alle"
xmlns:ZGVMASTER="http://www.technikum-wien.at/zgvmaster/rdf#"
style="min-width: 130px" >
<template>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/zgvmaster/rdf#code"
label="rdf:http://www.technikum-wien.at/zgvmaster/rdf#kurzbz"
uri="rdf:*"
/>
</menupopup>
<rule ZGVMASTER:aktiv='f'>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/zgvmaster/rdf#code"
label="rdf:http://www.technikum-wien.at/zgvmaster/rdf#kurzbz"
uri="rdf:*"
style="text-decoration:line-through;"
/>
</menupopup>
</rule>
<rule>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/zgvmaster/rdf#code"
label="rdf:http://www.technikum-wien.at/zgvmaster/rdf#kurzbz"
uri="rdf:*"
/>
</menupopup>
</rule>
</template>
</menulist>
<label value="ZGV Master Ort" control="student-prestudent-textbox-zgvmasterort"/>
@@ -452,13 +477,26 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<label value="ZGV Doktor" control="student-prestudent-menulist-zgvdoktorcode"/>
<menulist id="student-prestudent-menulist-zgvdoktorcode" disabled="true"
datasources="<?php echo APP_ROOT ?>rdf/zgvdoktor.rdf.php?optional=true" flex="1"
ref="http://www.technikum-wien.at/zgvdoktor/alle" >
ref="http://www.technikum-wien.at/zgvdoktor/alle"
xmlns:ZGVDOKTOR="http://www.technikum-wien.at/zgvdoktor/rdf#">
<template>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/zgvdoktor/rdf#code"
label="rdf:http://www.technikum-wien.at/zgvdoktor/rdf#kurzbz"
uri="rdf:*"/>
</menupopup>
<rule ZGVDOKTOR:aktiv='f'>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/zgvdoktor/rdf#code"
label="rdf:http://www.technikum-wien.at/zgvdoktor/rdf#kurzbz"
uri="rdf:*"
style="text-decoration:line-through;"
/>
</menupopup>
</rule>
<rule>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/zgvdoktor/rdf#code"
label="rdf:http://www.technikum-wien.at/zgvdoktor/rdf#kurzbz"
uri="rdf:*"
/>
</menupopup>
</rule>
</template>
</menulist>
<label value="ZGV Doktor Ort" control="student-prestudent-textbox-zgvdoktorort"/>
+187
View File
@@ -0,0 +1,187 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Alexei Karpenko <karpenko@technikum-wien.at>.
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
class gruppemanager extends basis_db
{
public $new;
//Tabellenspalten
public $uid; // varchar(32)
public $gruppe_kurzbz; // varchar(32)
public $insertamum; // timestamp
public $insertvon; // varchar(32)
public $uids = array(); // array
/**
* Konstruktor - Laedt optional einen Gruppenmanager
* @param $uid
* @param $gruppe_kurzbz
*/
public function __construct($uid=null, $gruppe_kurzbz=null)
{
parent::__construct();
if(!is_null($gruppe_kurzbz) && !is_null($uid))
$this->load($uid, $gruppe_kurzbz);
}
/**
* Laedt die BenutzerGruppe
* @param uid, gruppe_kurzbz
* @return true wenn ok, false im Fehlerfall
*/
public function load($uid, $gruppe_kurzbz)
{
$qry = "SELECT * FROM public.tbl_gruppe_manager WHERE uid=".$this->db_add_param($uid)." AND gruppe_kurzbz=".$this->db_add_param($gruppe_kurzbz);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->uid = $row->uid;
$this->gruppe_kurzbz = $row->gruppe_kurzbz;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
return true;
}
else
{
$this->errormsg = 'Es wurde kein Datensatz gefunden';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden des Datensatzes';
return false;
}
}
/**
* Laedt die Manager einer Benutzergruppe
* @param gruppe_kurzbz
* @return true wenn ok, false im Fehlerfall
*/
public function load_uids($gruppe_kurzbz)
{
$qry = "SELECT * FROM public.tbl_gruppe_manager
WHERE gruppe_kurzbz=".$this->db_add_param($gruppe_kurzbz);
if ($this->db_query($qry))
{
if ($this->db_num_rows() == 0)
return false;
else
{
while ($row = $this->db_fetch_object())
{
$gm_obj = new gruppemanager();
$gm_obj->uid = $row->uid;
$this->uids[] = $gm_obj;
}
return true;
}
}
else
{
$this->errormsg = 'Fehler beim Laden des Datensatzes';
return false;
}
}
/**
* Prueft die Variablen vor dem Speichern
* auf Gueltigkeit.
* @return true wenn ok, false im Fehlerfall
*/
protected function validate()
{
if(mb_strlen($this->uid)>32)
{
$this->errormsg = 'UID darf nich laenger als 32 Zeichen sein';
return false;
}
if(mb_strlen($this->gruppe_kurzbz)>32)
{
$this->errormsg = 'Gruppe_kurzbz darf nicht laenger als 32 Zeichen sein';
return false;
}
if(mb_strlen($this->insertvon)>32)
{
$this->errormsg = 'Insertvon darf nicht laenger als 32 Zeichen sein';
return false;
}
return true;
}
/**
* Speichert GruppeManager in die Datenbank
* Wenn $new auf true gesetzt ist wird ein neuer Datensatz
* angelegt, ansonsten der Datensatz upgedated
* @return true wenn erfolgreich, false im Fehlerfall
*/
public function save()
{
//Variablen auf Gueltigkeit pruefen
if(!$this->validate())
return false;
$qry = 'INSERT INTO public.tbl_gruppe_manager (uid, gruppe_kurzbz, insertamum, insertvon)
VALUES('.$this->db_add_param($this->uid).','.
$this->db_add_param($this->gruppe_kurzbz).','.
$this->db_add_param($this->insertamum).','.
$this->db_add_param($this->insertvon).');';
if($this->db_query($qry))
{
//Log schreiben
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern des GruppeManagers';
return false;
}
}
/**
* Loescht eine Gruppenmanagerzuordnung
*
* @param $uid
* @param $gruppe_kurzbz
* @return boolean
*/
public function delete($uid, $gruppe_kurzbz)
{
$qry = "DELETE FROM public.tbl_gruppe_manager WHERE uid=".$this->db_add_param($uid)." AND gruppe_kurzbz=".$this->db_add_param($gruppe_kurzbz);
if($this->db_query($qry))
return true;
else
{
$this->errormsg = 'Fehler beim Loeschen der Zuteilung';
return false;
}
}
}
?>
+76
View File
@@ -2542,4 +2542,80 @@ class prestudent extends person
return false;
}
}
/**
* Prueft, ob eine Person offene Bewerbungen besitzt
* @param int $person_id ID der zu überprüfenden Person.
* @return true wenn vorhanden, false wenn nicht vorhanden
*/
public function existsOffeneBewerbung($person_id)
{
if (!is_numeric($person_id))
{
$this->errormsg = 'Person_id muss eine gueltige Zahl sein';
return false;
}
$db = new basis_db();
$qry = "SELECT
prestudent_id
FROM
tbl_prestudent ps
WHERE
person_id = ".$this->db_add_param($person_id)."
And
get_rolle_prestudent(prestudent_id, null) in ('Interessent','Bewerber','Aufgenommener','Wartender');";
if ($db->db_query($qry))
{
$num_rows = $db->db_num_rows();
if ($num_rows > 0)
{
return true;
}
else
return false;
}
else
return false;
}
/**
* Prueft, ob es sich um einen Student / Unterbrecher handelt
* @param int $person_id ID der zu überprüfenden Person.
* @return true wenn zutreffend, false wenn nicht zutreffend
*/
public function isStudent($person_id)
{
if (!is_numeric($person_id))
{
$this->errormsg = 'Person_id muss eine gueltige Zahl sein';
return false;
}
$db = new basis_db();
$qry = "SELECT
prestudent_id
FROM
tbl_prestudent ps
WHERE
person_id = ".$this->db_add_param($person_id)."
And
get_rolle_prestudent(prestudent_id, null) in ('Student','Unterbrecher');";
if ($db->db_query($qry))
{
$num_rows = $db->db_num_rows();
if ($num_rows > 0)
{
return true;
}
else
return false;
}
else
return false;
}
}
+110 -52
View File
@@ -7,58 +7,7 @@ $(document).ready(function ()
var personid = $("#hiddenpersonid").val();
//add click events to "formal geprüft" checkboxes
$(".prchbox").click(function ()
{
var boxid = this.id;
var akteid = InfocenterDetails._getPrestudentIdFromElementId(boxid);
var checked = this.checked;
DocUeberpruefung.saveFormalGeprueft(personid, akteid, checked)
});
$('select.aktenid').change(function()
{
var akteid = InfocenterDetails._getPrestudentIdFromElementId(this.id);
var typ = $(this).val();
DocUeberpruefung.saveDocTyp(personid, akteid, typ);
});
$('.nachreichungInfos').click(function()
{
var akteid = InfocenterDetails._getPrestudentIdFromElementId(this.id);
DocUeberpruefung.checkNachreichungInputs(akteid);
});
$('.nachreichungAbbrechen').click(function()
{
var akteid = InfocenterDetails._getPrestudentIdFromElementId(this.id);
DocUeberpruefung.checkNachreichungInputs(akteid);
});
$('.nachreichungSpeichern').click(function()
{
var akteid = InfocenterDetails._getPrestudentIdFromElementId(this.id);
var typ = $('#aktenid_' + akteid).val();
var nachreichungAm = $('#nachreichungAm_' + akteid).val();
var nachreichungAnmerkung = $('#nachreichungAnmerkung_' + akteid).val();
if(nachreichungAm === '')
{
FHC_DialogLib.alertError(FHC_PhrasesLib.t('infocenter', 'datumUngueltig'));
return false;
}
var regEx = /^\d{2}\.\d{2}\.(\d{2}|\d{4})$/;
if(nachreichungAm.match(regEx) === null)
{
FHC_DialogLib.alertError(FHC_PhrasesLib.t('infocenter', 'datumUngueltig'))
return false;
}
DocUeberpruefung.saveNachreichung(personid, nachreichungAm, nachreichungAnmerkung, typ);
})
DocUeberpruefung._addDocUeberpruefungEvents(personid)
});
var DocUeberpruefung = {
@@ -158,6 +107,33 @@ var DocUeberpruefung = {
);
},
deleteDoc: function(personid, akteid)
{
FHC_AjaxClient.ajaxCallPost(
CALLED_PATH + "/deleteDoc/" + encodeURIComponent(personid),
{
"akteid": akteid
},
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.isSuccess(data))
{
DocUeberpruefung._refreshUbersichtDoks();
InfocenterDetails._refreshLog();
}
else
{
FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
}
},
errorCallback: function(data)
{
FHC_DialogLib.alertWarning("Fehler beim Speichern!");
}
}
);
},
checkNachreichungInputs: function(akteid)
{
var inputs = $('#nachreichungInputs_' + akteid);
@@ -197,6 +173,19 @@ var DocUeberpruefung = {
}
},
_refreshUbersichtDoks: function()
{
var personid = $("#hiddenpersonid").val();
$("#uebersichtDoks").load(
CONTROLLER_URL + '/reloadUebersichtDoks/' + personid + '?fhc_controller_id=' + FHC_AjaxClient.getUrlParameter('fhc_controller_id'),
function () {
DocUeberpruefung._formatDocTable();
DocUeberpruefung._addDocUeberpruefungEvents(personid);
}
);
},
_refreshNachzureichendeDoks: function()
{
var personid = $("#hiddenpersonid").val();
@@ -205,10 +194,79 @@ var DocUeberpruefung = {
CONTROLLER_URL + '/reloadDoks/' + personid + '?fhc_controller_id=' + FHC_AjaxClient.getUrlParameter('fhc_controller_id'),
function () {
DocUeberpruefung._formatDocTable();
DocUeberpruefung._addDocUeberpruefungEvents(personid);
}
);
},
_addDocUeberpruefungEvents: function(personid)
{
//add click events to "formal geprüft" checkboxes
$(".prchbox").click(function ()
{
var boxid = this.id;
var akteid = InfocenterDetails._getPrestudentIdFromElementId(boxid);
var checked = this.checked;
DocUeberpruefung.saveFormalGeprueft(personid, akteid, checked)
});
$('select.aktenid').change(function()
{
var akteid = InfocenterDetails._getPrestudentIdFromElementId(this.id);
var typ = $(this).val();
DocUeberpruefung.saveDocTyp(personid, akteid, typ);
});
$('.nachreichungInfos').click(function()
{
var akteid = InfocenterDetails._getPrestudentIdFromElementId(this.id);
DocUeberpruefung.checkNachreichungInputs(akteid);
});
$('.nachreichungAbbrechen').click(function()
{
var akteid = InfocenterDetails._getPrestudentIdFromElementId(this.id);
DocUeberpruefung.checkNachreichungInputs(akteid);
});
$('.nachreichungSpeichern').click(function()
{
var akteid = InfocenterDetails._getPrestudentIdFromElementId(this.id);
var typ = $('#aktenid_' + akteid).val();
var nachreichungAm = $('#nachreichungAm_' + akteid).val();
var nachreichungAnmerkung = $('#nachreichungAnmerkung_' + akteid).val();
if(nachreichungAm === '')
{
FHC_DialogLib.alertError(FHC_PhrasesLib.t('infocenter', 'datumUngueltig'));
return false;
}
var regEx = /^\d{2}\.\d{2}\.(\d{2}|\d{4})$/;
if(nachreichungAm.match(regEx) === null)
{
FHC_DialogLib.alertError(FHC_PhrasesLib.t('infocenter', 'datumUngueltig'))
return false;
}
DocUeberpruefung.saveNachreichung(personid, nachreichungAm, nachreichungAnmerkung, typ);
})
$('.dokLoeschen').click(function()
{
var akteid = InfocenterDetails._getPrestudentIdFromElementId(this.id);
var confirmed = confirm('Wollen Sie sicher das Dokument des Dokumentypens: ' + $('#aktenid_' + akteid).find(':selected').text() + ' löschen?');
if (confirmed)
{
DocUeberpruefung.deleteDoc(personid, akteid);
}
});
},
_formatDocTable: function()
{
Tablesort.addTablesorter("doctable", [[2, 1], [1, 0]], ["zebra"]);
+46 -36
View File
@@ -34,11 +34,10 @@ var InfocenterPersonDataset = {
var auswahlStudienart =
'<select class="form-control auswahlStudienArt" style="width:auto;">' +
'<option data-id="all"> Alle </option>' +
'<option data-id="master"> Master </option>' +
'<option data-id="bachelor"> Bachelor </option>' +
'</select>';
InfocenterPersonDataset.getStudienartData(infocenter_studiengangstyp);
var auswahlAbsageToggle =
'<a class="absageToggle">Erweiterte Einstellungen</a>';
@@ -90,11 +89,9 @@ var InfocenterPersonDataset = {
"<div class='h-divider'></div><hr class='studiensemesterline'>"
);
InfocenterPersonDataset.selectStudiengangTyp(infocenter_studiengangstyp)
$('.auswahlStudienArt').change(function()
{
InfocenterPersonDataset.changeStudengangsTyp($(this).find('option:selected').attr('data-id'));
InfocenterPersonDataset.changeStudengangsTyp($(this).find('option:selected').val());
});
$("#datasetActionsBottom").append(
@@ -183,22 +180,6 @@ var InfocenterPersonDataset = {
);
},
selectStudiengangTyp: function(typ)
{
switch (typ)
{
case 'b, m' :
$('.auswahlStudienArt [data-id="all"]').attr('selected', 'selected');
break;
case 'b' :
$('.auswahlStudienArt [data-id="bachelor"]').attr('selected', 'selected');
break;
case 'm' :
$('.auswahlStudienArt [data-id="master"]').attr('selected', 'selected');
break;
}
},
/**
* sets functionality for the actions above and beneath the person table
*/
@@ -257,20 +238,12 @@ var InfocenterPersonDataset = {
});
},
changeStudengangsTyp: function($typ)
changeStudengangsTyp: function(typ)
{
switch ($typ)
{
case 'all' :
var change = 'b\', \'m';
break;
case 'bachelor' :
var change = 'b';
break;
case 'master' :
var change = 'm';
break;
}
let change = typ;
if (typ === 'all')
change = change = 'b\', \'m\', \'l';
FHC_AjaxClient.showVeil();
@@ -372,7 +345,8 @@ var InfocenterPersonDataset = {
'system/infocenter/InfoCenter/getAbsageData',
{},
{
successCallback: function(data, textStatus, jqXHR) {
successCallback: function(data, textStatus, jqXHR)
{
if (FHC_AjaxClient.hasData(data))
{
data = FHC_AjaxClient.getData(data);
@@ -397,6 +371,42 @@ var InfocenterPersonDataset = {
}
);
},
getStudienartData: function(infocenter_studiengangstyp)
{
FHC_AjaxClient.ajaxCallGet(
'system/infocenter/InfoCenter/getStudienartData',
{},
{
successCallback: function(data, textStatus, jqXHR)
{
if (FHC_AjaxClient.hasData(data))
{
data = FHC_AjaxClient.getData(data);
let all = data.map(item => item.typ).join('\',\'');
$('.auswahlStudienArt').append($("<option/>")
.val(all)
.text('Alle')
);
$.each(data, function(key, value)
{
let isSelected;
isSelected = (infocenter_studiengangstyp === value.typ && all.length !== 1) ? 'selected' : false;
$('.auswahlStudienArt').append($("<option/>")
.val(value.typ)
.text(value.bezeichnung)
.attr('selected', isSelected)
)
});
}
},
errorCallback: function(jqXHR, textStatus, errorThrown) {
FHC_DialogLib.alertError(textStatus);
}
}
);
},
/**
* initializes call to get the Studiensemester user variable
*/
+49 -44
View File
@@ -7,49 +7,6 @@ const COLOR_DANGER = '#f2dede';
$(function(){
const uploadMaxFilesize = $('#requestAnrechnung-uploadfile').data('maxsize') ; // in byte
let status_kurzbz = $('#requestAnrechnung-status_kurzbz').data('status_kurzbz');
if (status_kurzbz != ' ' && status_kurzbz != ANRECHNUNGSTATUS_APPROVED)
{
var ectsLv = parseFloat($('#ects').text());
var sumEctsSchulisch = parseFloat($('#sumEctsSchulisch').text());
var sumEctsBeruflich = parseFloat($('#sumEctsBeruflich').text());
var begruendung_id = $('#requestAnrechnung-form :input[name="begruendung"]:checked').val();
// If Begründung is 'Hochschulzeugnis', return. They are accepted without limit.
if (begruendung_id == 5)
{
exit;
}
// If max ECTS is ecceeded
if (begruendung_id == 4)
{
if ((sumEctsSchulisch + sumEctsBeruflich + ectsLv) > 90 ||
(sumEctsBeruflich + ectsLv) > 60
)
{
// Get ECTS Überschreitungs-message, depending on schulische or berufliche Qualifikation
var msgBeiEctsUeberschreitung = requestAnrechnung.getMsgBeiEctsUeberschreitung(begruendung_id, ectsLv, sumEctsSchulisch, sumEctsBeruflich);
// Add to Checkbox text
$('#requestAnrechnung-form :input[name="begruendung"]:checked').closest('label').append(msgBeiEctsUeberschreitung);
}
}
else
{
if ((sumEctsSchulisch + sumEctsBeruflich + ectsLv) > 90 ||
(sumEctsSchulisch + ectsLv) > 60
)
{
// Get ECTS Überschreitungs-message, depending on schulische or berufliche Qualifikation
var msgBeiEctsUeberschreitung = requestAnrechnung.getMsgBeiEctsUeberschreitung(begruendung_id, ectsLv, sumEctsSchulisch, sumEctsBeruflich);
// Add to Checkbox text
$('#requestAnrechnung-form :input[name="begruendung"]:checked').closest('label').append(msgBeiEctsUeberschreitung);
}
}
}
// Set status alert color
requestAnrechnung.setStatusAlertColor();
@@ -62,9 +19,12 @@ $(function(){
// Init tooltips
requestAnrechnung.initTooltips();
// // Alert message, if maximum ECTS exceeded
// Alert message, if maximum ECTS exceeded
requestAnrechnung.alertIfMaxEctsExceeded();
// Alert message inside Begruendungsbox, if maximum ECTS exceeded
requestAnrechnung.alertIfMaxEctsExceededInsideBegruendungsbox();
// Set chars counter for textarea 'Herkunft der Kenntnisse'
requestAnrechnung.setCharsCounter();
@@ -318,6 +278,51 @@ var requestAnrechnung = {
});
}
},
alertIfMaxEctsExceededInsideBegruendungsbox: function(){
let status_kurzbz = $('#requestAnrechnung-status_kurzbz').data('status_kurzbz');
if (status_kurzbz != ' ' && status_kurzbz != ANRECHNUNGSTATUS_APPROVED)
{
var ectsLv = parseFloat($('#ects').text());
var sumEctsSchulisch = parseFloat($('#sumEctsSchulisch').text());
var sumEctsBeruflich = parseFloat($('#sumEctsBeruflich').text());
var begruendung_id = $('#requestAnrechnung-form :input[name="begruendung"]:checked').val();
// If Begründung is 'Hochschulzeugnis', return. They are accepted without limit.
if (begruendung_id == 5)
{
return;
}
// If max ECTS is ecceeded
if (begruendung_id == 4)
{
if ((sumEctsSchulisch + sumEctsBeruflich + ectsLv) > 90 ||
(sumEctsBeruflich + ectsLv) > 60
)
{
// Get ECTS Überschreitungs-message, depending on schulische or berufliche Qualifikation
var msgBeiEctsUeberschreitung = requestAnrechnung.getMsgBeiEctsUeberschreitung(begruendung_id, ectsLv, sumEctsSchulisch, sumEctsBeruflich);
// Add to Checkbox text
$('#requestAnrechnung-form :input[name="begruendung"]:checked').closest('label').append(msgBeiEctsUeberschreitung);
}
}
else
{
if ((sumEctsSchulisch + sumEctsBeruflich + ectsLv) > 90 ||
(sumEctsSchulisch + ectsLv) > 60
)
{
// Get ECTS Überschreitungs-message, depending on schulische or berufliche Qualifikation
var msgBeiEctsUeberschreitung = requestAnrechnung.getMsgBeiEctsUeberschreitung(begruendung_id, ectsLv, sumEctsSchulisch, sumEctsBeruflich);
// Add to Checkbox text
$('#requestAnrechnung-form :input[name="begruendung"]:checked').closest('label').append(msgBeiEctsUeberschreitung);
}
}
}
},
getMsgBeiEctsUeberschreitung: function(begruendung_id, ects, sumEctsSchulisch, sumEctsBeruflich){
return $('<span id="sumEctsMsg"></span>')
+223
View File
@@ -0,0 +1,223 @@
/**
* Javascript file for benutzergruppe management page
*/
var Benutzergruppe = {
getBenutzer: function(gruppe_kurzbz) {
FHC_AjaxClient.ajaxCallGet(
'person/gruppenmanagement/getBenutzer',
{
gruppe_kurzbz: gruppe_kurzbz
},
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.isError(data))
{
FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
return;
}
let benutzerTable = $("#benutzer-table tbody");
benutzerTable.empty();
if (FHC_AjaxClient.hasData(data))
{
// save loaded data
let benutzerData = FHC_AjaxClient.getData(data);
// fill table with Benutzer of Gruppe
for (let i = 0; i < benutzerData.length; i++)
{
let benutzer = benutzerData[i];
benutzerTable.append(
"<tr>"+
"<td>"+benutzer.uid+"</td>"+
"<td>"+benutzer.vorname+"</td>"+
"<td>"+benutzer.nachname+"</td>"+
"<td>"+(benutzer.aktiv === true ? "Ja" : "Nein")+"</td>"+
"<td>"+
"<button class='btn btn-default benutzerLoeschen' id='"+benutzer.uid+"_benutzerLoeschen'>"+
FHC_PhrasesLib.t('ui', 'entfernen')+
"</button>"+
"</td>"+
"</tr>"
);
// add delete event to button
$("#"+benutzer.uid+"_benutzerLoeschen").click(
function() {
Benutzergruppe.removeBenutzer(benutzer.uid, gruppe_kurzbz);
}
)
}
}
// add tablesorter to benutzergruppe table
Benutzergruppe._setTablesorter();
},
errorCallback: function(jqXHR, textStatus, errorThrown) {
FHC_DialogLib.alertError(textStatus);
}
}
);
},
getAllBenutzer: function() {
FHC_AjaxClient.ajaxCallGet(
'person/gruppenmanagement/getAllBenutzer',
null,
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.isError(data))
{
FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
return;
}
if (FHC_AjaxClient.hasData(data))
{
benutzerArr = [];
// save loaded data
let benutzerData = FHC_AjaxClient.getData(data);
for (let i = 0; i < benutzerData.length; i++)
{
let ben = benutzerData[i];
benutzerArr.push(
{
vorname: ben.vorname,
nachname: ben.nachname,
uid: ben.uid,
label: ben.nachname + " " + ben.vorname + " (" + ben.uid + ")",
id: ben.uid
}
);
}
// callback for searching source mitarbeiter array correctly
let sourceCallback = function(request, response)
{
// case insensitive matcher
let matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
// match vorname nachname OR nachname vorname OR uid
response($.grep(benutzerArr, function (value) {
return matcher.test(value.nachname + ' '+value.vorname + ' ' + value.nachname)
|| matcher.test(value.uid);
}));
}
// fill autocomplete field with benutzer data
Benutzergruppe._fillAutocomplete(
'teilnehmerSelect',
'teilnehmer_uid',
sourceCallback
);
}
},
errorCallback: function(jqXHR, textStatus, errorThrown) {
FHC_DialogLib.alertError(textStatus);
}
}
);
},
addBenutzer: function(uid, gruppe_kurzbz) {
FHC_AjaxClient.ajaxCallPost(
'person/gruppenmanagement/addBenutzer',
{
uid: uid,
gruppe_kurzbz: gruppe_kurzbz
},
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.isError(data))
{
FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
return;
}
if (FHC_AjaxClient.hasData(data))
{
// load Benutzer after add to show change
Benutzergruppe.getBenutzer(gruppe_kurzbz);
}
},
errorCallback: function(jqXHR, textStatus, errorThrown) {
FHC_DialogLib.alertError(textStatus);
}
}
);
},
removeBenutzer: function(uid, gruppe_kurzbz) {
FHC_AjaxClient.ajaxCallPost(
'person/gruppenmanagement/removeBenutzer',
{
uid: uid,
gruppe_kurzbz: gruppe_kurzbz
},
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.isError(data))
{
FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
return;
}
if (FHC_AjaxClient.hasData(data))
{
// load Benutzer after remove to show change
Benutzergruppe.getBenutzer(gruppe_kurzbz);
}
},
errorCallback: function(jqXHR, textStatus, errorThrown) {
FHC_DialogLib.alertError(textStatus);
}
}
);
},
_fillAutocomplete: function(autocompleteId, idFieldId, source) {
// jQuery ui autocomplete for benutzer
$("#"+autocompleteId).autocomplete(
{
// custom matcher
source: source,
autoFocus: true,
select: function(event, ui)
{
// when autocmplete entry selected, display label text in autocomplete, fill hidden value field
$("#"+autocompleteId).val(ui.item.label);
$("#"+idFieldId).val(ui.item.id);
return false;
}
}
);
},
_setTablesorter: function() {
Tablesort.addTablesorter(
// sort by first and third column asc, show filters beggining with 2 Benutzer, exclude fifth column from filter
"benutzer-table", [[0,0], [2,0]], ["filter", "zebra"], 2, {headers: {4: {filter: false}}}
)
}
};
/**
* When JQuery is up
*/
$(document).ready(function() {
// get the group name
let gruppe_kurzbz = $("#gruppe_kurzbz").val();
// load Benutzer for autocomplete selection
Benutzergruppe.getAllBenutzer();
// load Benutzer for table
Benutzergruppe.getBenutzer(gruppe_kurzbz);
// add click event to "add Benutzer" button
$("#teilnehmerHinzufuegen").click(function(){
let uid = $("#teilnehmer_uid").val();
Benutzergruppe.addBenutzer(uid, gruppe_kurzbz);
$("#teilnehmerSelect").val('');
}
);
});
+3 -1
View File
@@ -53,6 +53,7 @@ if(isset($_GET['optional']) && $_GET['optional']=='true')
<BT:code></BT:code>
<BT:bezeichnung>-- keine Auswahl --</BT:bezeichnung>
<BT:kurzbz>-- keine Auswahl --</BT:kurzbz>
<BT:aktiv></BT:aktiv>
</RDF:Description>
</RDF:li>
';
@@ -70,6 +71,7 @@ if($db->db_query($qry))
<BT:code><![CDATA[<?php echo $row->zgv_code; ?>]]></BT:code>
<BT:bezeichnung><![CDATA[<?php echo $row->zgv_bez; ?>]]></BT:bezeichnung>
<BT:kurzbz><![CDATA[<?php echo $row->zgv_kurzbz; ?>]]></BT:kurzbz>
<BT:aktiv><![CDATA[<?php echo $row->aktiv; ?>]]></BT:aktiv>
</RDF:Description>
</RDF:li>
<?php
@@ -77,4 +79,4 @@ if($db->db_query($qry))
}
?>
</RDF:Seq>
</RDF:RDF>
</RDF:RDF>
+4 -2
View File
@@ -19,7 +19,7 @@
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
// header für no cache
// header fr no cache
header("Cache-Control: no-cache");
header("Cache-Control: post-check=0, pre-check=0",false);
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
@@ -52,6 +52,7 @@ if(isset($_GET['optional']) && $_GET['optional']=='true')
<ZGVDOKTOR:code></ZGVDOKTOR:code>
<ZGVDOKTOR:bezeichnung>-- keine Auswahl --</ZGVDOKTOR:bezeichnung>
<ZGVDOKTOR:kurzbz>-- keine Auswahl --</ZGVDOKTOR:kurzbz>
<ZGVDOKTOR:aktiv></ZGVDOKTOR:aktiv>
</RDF:Description>
</RDF:li>
';
@@ -69,6 +70,7 @@ if($db->db_query($qry))
<ZGVDOKTOR:code><![CDATA[<?php echo $row->zgvdoktor_code; ?>]]></ZGVDOKTOR:code>
<ZGVDOKTOR:bezeichnung><![CDATA[<?php echo $row->zgvdoktor_bez; ?>]]></ZGVDOKTOR:bezeichnung>
<ZGVDOKTOR:kurzbz><![CDATA[<?php echo $row->zgvdoktor_kurzbz; ?>]]></ZGVDOKTOR:kurzbz>
<ZGVDOKTOR:aktiv><![CDATA[<?php echo $row->aktiv; ?>]]></ZGVDOKTOR:aktiv>
</RDF:Description>
</RDF:li>
<?php
@@ -76,4 +78,4 @@ if($db->db_query($qry))
}
?>
</RDF:Seq>
</RDF:RDF>
</RDF:RDF>
+3 -1
View File
@@ -52,6 +52,7 @@ if(isset($_GET['optional']) && $_GET['optional']=='true')
<ZGVMASTER:code></ZGVMASTER:code>
<ZGVMASTER:bezeichnung>-- keine Auswahl --</ZGVMASTER:bezeichnung>
<ZGVMASTER:kurzbz>-- keine Auswahl --</ZGVMASTER:kurzbz>
<ZGVMASTER:aktiv></ZGVMASTER:aktiv>
</RDF:Description>
</RDF:li>
';
@@ -69,6 +70,7 @@ if($db->db_query($qry))
<ZGVMASTER:code><![CDATA[<?php echo $row->zgvmas_code; ?>]]></ZGVMASTER:code>
<ZGVMASTER:bezeichnung><![CDATA[<?php echo $row->zgvmas_bez; ?>]]></ZGVMASTER:bezeichnung>
<ZGVMASTER:kurzbz><![CDATA[<?php echo $row->zgvmas_kurzbz; ?>]]></ZGVMASTER:kurzbz>
<ZGVMASTER:aktiv><![CDATA[<?php echo $row->aktiv?>]]></ZGVMASTER:aktiv>
</RDF:Description>
</RDF:li>
<?php
@@ -76,4 +78,4 @@ if($db->db_query($qry))
}
?>
</RDF:Seq>
</RDF:RDF>
</RDF:RDF>
+156 -56
View File
@@ -6243,6 +6243,72 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht
}
}
// Creates table public.tbl_gruppe_manager if it doesn't exist and grants privileges
if (!$result = @$db->db_query('SELECT 1 FROM public.tbl_gruppe_manager LIMIT 1'))
{
$qry = 'CREATE TABLE public.tbl_gruppe_manager (
gruppe_manager_id integer,
gruppe_kurzbz varchar(32) NOT NULL,
uid varchar(32) NOT NULL,
insertamum timestamp DEFAULT NOW(),
insertvon varchar(32)
);
COMMENT ON TABLE public.tbl_gruppe_manager IS \'Table to save assignments groups to their managers.\';
COMMENT ON COLUMN public.tbl_gruppe_manager.gruppe_kurzbz IS \'Name of group\';
COMMENT ON COLUMN public.tbl_gruppe_manager.uid IS \'User id of group manager\';
CREATE SEQUENCE public.seq_gruppe_manager_gruppe_manager_id
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.tbl_gruppe_manager ALTER COLUMN gruppe_manager_id SET DEFAULT nextval(\'public.seq_gruppe_manager_gruppe_manager_id\'::regclass);
GRANT SELECT, UPDATE ON SEQUENCE public.seq_gruppe_manager_gruppe_manager_id TO vilesci;
GRANT SELECT, UPDATE ON SEQUENCE public.seq_gruppe_manager_gruppe_manager_id TO fhcomplete;
ALTER TABLE public.tbl_gruppe_manager ADD CONSTRAINT pk_gruppe_manager PRIMARY KEY (gruppe_manager_id);
ALTER TABLE public.tbl_gruppe_manager ADD CONSTRAINT fk_gruppe_manager_gruppe_kurzbz FOREIGN KEY (gruppe_kurzbz) REFERENCES public.tbl_gruppe(gruppe_kurzbz) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE public.tbl_gruppe_manager ADD CONSTRAINT fk_gruppe_manager_uid FOREIGN KEY (uid) REFERENCES public.tbl_benutzer(uid) ON UPDATE CASCADE ON DELETE RESTRICT;
ALTER TABLE public.tbl_gruppe_manager ADD CONSTRAINT uk_gruppe_manager_gruppe_kurzbz_uid UNIQUE (gruppe_kurzbz, uid);';
if (!$db->db_query($qry))
echo '<strong>public.tbl_gruppe_manager: '.$db->db_last_error().'</strong><br>';
else
echo '<br>public.tbl_gruppe_manager table created';
$qry = 'GRANT SELECT ON TABLE public.tbl_gruppe_manager TO web;';
if (!$db->db_query($qry))
echo '<strong>public.tbl_gruppe_manager: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>web</strong> on public.tbl_gruppe_manager';
$qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE public.tbl_gruppe_manager TO vilesci;';
if (!$db->db_query($qry))
echo '<strong>public.tbl_gruppe_manager: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>vilesci</strong> on public.tbl_gruppe_manager';
}
// Add permission for managing user groups
if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'lehre/gruppenmanager';"))
{
if($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('lehre/gruppenmanager', 'Manager einer Gruppe werden und die Gruppe verwalten');";
if(!$db->db_query($qry))
echo '<strong>system.tbl_berechtigung '.$db->db_last_error().'</strong><br>';
else
echo ' system.tbl_berechtigung: Added permission for lehre/gruppenmanager<br>';
}
}
// NOTE(chris): Add "Template" to "Lehrtyp"
if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_lehrtyp WHERE bezeichnung = 'Template';"))
{
@@ -6327,18 +6393,18 @@ if(!@$db->db_query("SELECT public.get_ects_summe_schulisch('', 0, 0)"))
DECLARE rec_quereinstiegs_studiensemester RECORD;
DECLARE sum_quereinstiegs_ects numeric(4, 1) := 0;
DECLARE sum_schulische_ects numeric(4, 1) := 0;
BEGIN
-- IF STUDENT IS QUEREINSTEIGER, GET ECTS SUMME OF ANGERECHNETE SEMESTER
-- Get Einstiegssemester
SELECT INTO var_einstiegsausbildungssemester , var_einstiegsstudiensemester_kurzbz, var_einstiegsorgform_kurzbz ausbildungssemester, studiensemester_kurzbz, orgform_kurzbz from public.tbl_prestudentstatus
WHERE prestudent_id = var_prestudent_id
-- Get Einstiegssemester
SELECT INTO var_einstiegsausbildungssemester , var_einstiegsstudiensemester_kurzbz, var_einstiegsorgform_kurzbz ausbildungssemester, studiensemester_kurzbz, orgform_kurzbz from public.tbl_prestudentstatus
WHERE prestudent_id = var_prestudent_id
AND status_kurzbz = \'Student\'
ORDER BY datum, insertamum, ext_id
LIMIT 1;
-- If Einstiegssemester > 1 (= Quereinsteiger)
IF (var_einstiegsausbildungssemester > 1) THEN
-- ...get all Quereinstiegssemester
@@ -6357,66 +6423,66 @@ if(!@$db->db_query("SELECT public.get_ects_summe_schulisch('', 0, 0)"))
JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id)
WHERE
tbl_studienplan.studienplan_id = (
SELECT
SELECT
studienplan_id
FROM
lehre.tbl_studienordnung
JOIN lehre.tbl_studienplan USING (studienordnung_id)
FROM
lehre.tbl_studienordnung
JOIN lehre.tbl_studienplan USING (studienordnung_id)
JOIN lehre.tbl_studienplan_semester USING (studienplan_id)
WHERE tbl_studienordnung.studiengang_kz = var_studiengang_kz
WHERE tbl_studienordnung.studiengang_kz = var_studiengang_kz
AND tbl_studienplan_semester.semester = var_einstiegsausbildungssemester - 1
AND tbl_studienplan_semester.studiensemester_kurzbz = rec_quereinstiegs_studiensemester.studiensemester_kurzbz
AND tbl_studienplan.orgform_kurzbz = var_einstiegsorgform_kurzbz
AND tbl_studienplan.orgform_kurzbz = var_einstiegsorgform_kurzbz
LIMIT 1
)
AND tbl_studienplan_lehrveranstaltung.semester = var_einstiegsausbildungssemester
AND studienplan_lehrveranstaltung_id_parent IS NULL -- auf Modulebene
AND tbl_studienplan_lehrveranstaltung.export = TRUE);
var_einstiegsausbildungssemester = var_einstiegsausbildungssemester - 1;
END LOOP;
END IF;
-- GET ECTS SUMME OF ALLE BISHER ANGERECHNETEN LEHRVERANSTALTUNGEN. ANRECHNUNGSGRUND: SCHULISCH.
SELECT INTO sum_schulische_ects COALESCE(SUM(ects), 0) FROM (
SELECT
SELECT
lehrveranstaltung_id, studiensemester_kurzbz, ects
FROM
lehre.tbl_zeugnisnote
LEFT JOIN lehre.tbl_anrechnung USING(lehrveranstaltung_id, studiensemester_kurzbz)
FROM
lehre.tbl_zeugnisnote
LEFT JOIN lehre.tbl_anrechnung USING(lehrveranstaltung_id, studiensemester_kurzbz)
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
JOIN public.tbl_student USING(student_uid)
WHERE
WHERE
tbl_zeugnisnote.note = 6
AND student_uid = var_student_uid
AND lehre.tbl_anrechnung.prestudent_id IN (tbl_student.prestudent_id, NULL)
AND begruendung_id != 5 -- universitäre ECTS nicht mitrechnen
AND begruendung_id != 4 -- berufliche ECTS nicht mitrechnen
AND (anrechnung_id IS NULL OR (anrechnung_id IS NOT NULL AND genehmigt_von IS NOT NULL )) -- Anrechnungen aus Zeit vor Anrechnungstool ODER digitale Anrechnungen mit Noteneintrag UND Genehmigung (wichtig, um zurückgenommene Genehmigungen, die in der Notentabelle noch als angerechnet eingetragen sind, rauszufiltern)
UNION
SELECT
AND begruendung_id != 4 -- berufliche ECTS nicht mitrechnen
AND (anrechnung_id IS NULL OR (anrechnung_id IS NOT NULL AND genehmigt_von IS NOT NULL )) -- Anrechnungen aus Zeit vor Anrechnungstool ODER digitale Anrechnungen mit Noteneintrag UND Genehmigung (wichtig, um zurückgenommene Genehmigungen, die in der Notentabelle noch als angerechnet eingetragen sind, rauszufiltern)
UNION
SELECT
lehrveranstaltung_id, studiensemester_kurzbz, ects
FROM
lehre.tbl_anrechnung
FROM
lehre.tbl_anrechnung
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
JOIN public.tbl_student USING(prestudent_id)
WHERE
WHERE
genehmigt_von IS NOT NULL
AND student_uid = var_student_uid
AND student_uid = var_student_uid
AND begruendung_id != 5 -- universitäre ECTS nicht mitrechnen
AND begruendung_id != 4 -- berufliche ECTS nicht mitrechnen
AND begruendung_id != 4 -- berufliche ECTS nicht mitrechnen
) lvsangerechnet;
-- BUILD ECTS SUMME OF QUEREINSTIEGSSEMESTER- + ANGERECHNETEN LVs-ECTS
-- Summe aller bisher schulisch begründet angerechneten LVs + der Quereinstiegssemester
sum_schulische_ects = sum_schulische_ects + sum_quereinstiegs_ects;
RETURN sum_schulische_ects ;
END;
$_$;
@@ -6436,40 +6502,40 @@ if(!@$db->db_query("SELECT public.get_ects_summe_beruflich('')"))
AS $_$
DECLARE var_student_uid ALIAS FOR $1;
DECLARE sum_berufliche_ects numeric(4, 1) := 0;
BEGIN
SELECT INTO sum_berufliche_ects COALESCE(SUM(ects), 0) FROM (
SELECT
SELECT
lehrveranstaltung_id, studiensemester_kurzbz, ects
FROM
lehre.tbl_zeugnisnote
LEFT JOIN lehre.tbl_anrechnung USING(lehrveranstaltung_id, studiensemester_kurzbz)
FROM
lehre.tbl_zeugnisnote
LEFT JOIN lehre.tbl_anrechnung USING(lehrveranstaltung_id, studiensemester_kurzbz)
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
JOIN public.tbl_student USING(student_uid)
WHERE
WHERE
tbl_zeugnisnote.note = 6
AND student_uid = var_student_uid
AND lehre.tbl_anrechnung.prestudent_id IN (tbl_student.prestudent_id, NULL)
AND begruendung_id = 4 -- beruflich
AND (anrechnung_id IS NULL OR (anrechnung_id IS NOT NULL AND genehmigt_von IS NOT NULL )) -- Anrechnungen aus Zeit vor Anrechnungstool ODER digitale Anrechnungen mit Noteneintrag UND Genehmigung (wichtig, um zurückgenommene Genehmigungen, die in der Notentabelle noch als angerechnet eingetragen sind, rauszufiltern)
UNION
SELECT
UNION
SELECT
lehrveranstaltung_id, studiensemester_kurzbz, ects
FROM
lehre.tbl_anrechnung
FROM
lehre.tbl_anrechnung
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
JOIN public.tbl_student USING(prestudent_id)
WHERE
WHERE
genehmigt_von is not null
AND student_uid = var_student_uid
AND student_uid = var_student_uid
AND begruendung_id = 4 -- beruflich
) lvsangerechnet;
RETURN sum_berufliche_ects;
END;
$_$;
@@ -6509,6 +6575,40 @@ if($result = @$db->db_query("SELECT 1 FROM public.tbl_dokument WHERE dokument_ku
}
}
//Spalte aktiv zu bis.tbl_zgv hinzufügen
if (!$result = @$db->db_query("SELECT aktiv FROM bis.tbl_zgv LIMIT 1"))
{
$qry = "ALTER TABLE bis.tbl_zgv ADD COLUMN aktiv BOOLEAN NOT NULL DEFAULT true;";
if(!$db->db_query($qry))
echo '<strong>bis.tbl_zgv '.$db->db_last_error().'</strong><br>';
else
echo '<br>Spalte aktiv zu bis.tbl_zgv hinzugefügt';
}
//Spalte aktiv zu bis.tbl_zgvmaster hinzufügen
if (!$result = @$db->db_query("SELECT aktiv FROM bis.tbl_zgvmaster LIMIT 1"))
{
$qry = "ALTER TABLE bis.tbl_zgvmaster ADD COLUMN aktiv BOOLEAN NOT NULL DEFAULT true;";
if(!$db->db_query($qry))
echo '<strong>bis.tbl_zgvmaster '.$db->db_last_error().'</strong><br>';
else
echo '<br>Spalte aktiv zu bis.tbl_zgvmaster hinzugefügt';
}
//Spalte aktiv zu bis.tbl_zgvdoktor hinzufügen
if (!$result = @$db->db_query("SELECT aktiv FROM bis.tbl_zgvdoktor LIMIT 1"))
{
$qry = "ALTER TABLE bis.tbl_zgvdoktor ADD COLUMN aktiv BOOLEAN NOT NULL DEFAULT true;";
if(!$db->db_query($qry))
echo '<strong>bis.tbl_zgvdoktor '.$db->db_last_error().'</strong><br>';
else
echo '<br>Spalte aktiv zu bis.tbl_zgvdoktor hinzugefügt';
}
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
@@ -6544,9 +6644,9 @@ $tabellen=array(
"bis.tbl_oehbeitrag" => array("oehbeitrag_id","studierendenbeitrag","versicherung","von_studiensemester_kurzbz","bis_studiensemester_kurzbz","insertamum","insertvon","updateamum","updatevon"),
"bis.tbl_orgform" => array("orgform_kurzbz","code","bezeichnung","rolle","bisorgform_kurzbz","bezeichnung_mehrsprachig"),
"bis.tbl_verwendung" => array("verwendung_code","verwendungbez"),
"bis.tbl_zgv" => array("zgv_code","zgv_bez","zgv_kurzbz","bezeichnung"),
"bis.tbl_zgvmaster" => array("zgvmas_code","zgvmas_bez","zgvmas_kurzbz","bezeichnung"),
"bis.tbl_zgvdoktor" => array("zgvdoktor_code", "zgvdoktor_bez", "zgvdoktor_kurzbz","bezeichnung"),
"bis.tbl_zgv" => array("zgv_code","zgv_bez","zgv_kurzbz","bezeichnung","aktiv"),
"bis.tbl_zgvmaster" => array("zgvmas_code","zgvmas_bez","zgvmas_kurzbz","bezeichnung","aktiv"),
"bis.tbl_zgvdoktor" => array("zgvdoktor_code", "zgvdoktor_bez", "zgvdoktor_kurzbz","bezeichnung","aktiv"),
"bis.tbl_zweck" => array("zweck_code","kurzbz","bezeichnung","incoming","outgoing"),
"bis.tbl_zgvgruppe" => array("gruppe_kurzbz","bezeichnung"),
"bis.tbl_zgvgruppe_zuordnung" => array("zgvgruppe_id" ,"studiengang_kz","zgv_code","zgvmas_code","gruppe_kurzbz"),
+21
View File
@@ -1112,6 +1112,27 @@ $filters = array(
}
',
'oe_kurzbz' => null
),
array(
'app' => 'core',
'dataset_name' => 'gruppenmanagement',
'filter_kurzbz' => 'gruppenmanagement',
'description' => '{Meine Gruppen}',
'sort' => 1,
'default_filter' => true,
'filter' => '
{
"name": "gruppenmanagement",
"columns": [
{"name": "gruppe_kurzbz"},
{"name": "gruppe_bezeichnung"},
{"name": "gruppe_beschreibung"},
{"name": "studiengang_kurzbz"}
],
"filters": []
}
',
'oe_kurzbz' => null,
)
);
+181 -1
View File
@@ -16238,7 +16238,7 @@ array(
'sprache' => 'German',
'text' => 'Ab dem Studienjahr 2022/23 ist der Erwerb von internationalen und interkulturellen Kompetenzen Teil des Curriculums. <br />
Auf der Grundlage der vorliegenden Maßnahmen absolvieren Sie im Laufe ihres Studiums Internationalisierungsaktivitäten, die mit unterschiedlichen ECTS-Punkten hinterlegt sind. <br />
In Summe müssen 5 ECTS erworben werden, die im 6. Semester wirksam werden. <br/>
In Summe müssen 5 ECTS erworben werden, die im 6. Semester wirksam werden. <br/>
Das Modul „International skills“ wird mit der Beurteilung „Mit Erfolg teilgenommen“ abgeschlossen. <br />
Bitte wählen Sie die für Sie in Frage kommenden Maßnahmen aus und planen Sie das entsprechende Semester. <br />
Sobald die 5 ECTS erreicht wurden, überprüft der Studiengang die von Ihnen hochgeladenen Dokumente.',
@@ -16758,6 +16758,186 @@ array(
)
)
),
array(
'app' => 'core',
'category' => 'gruppenmanagement',
'phrase' => 'benutzerSchonZugewiesen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Benutzer ist bereits der Gruppe zugewiesen",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "User is already assigned to the group",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'gruppenmanagement',
'phrase' => 'gruppenmanagement',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Gruppenmanagement",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Group management",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'gruppenmanagement',
'phrase' => 'kurzbezeichnung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Kurzbezeichnung",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Short description",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'gruppenmanagement',
'phrase' => 'bezeichnung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Bezeichnung",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Name",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'gruppenmanagement',
'phrase' => 'beschreibung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Beschreibung",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Description",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'gruppenmanagement',
'phrase' => 'zuweisenloeschen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Zuweisen/Entfernen",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Assign/Remove",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'gruppenmanagement',
'phrase' => 'benutzergruppe',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Benutzergruppe",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "User group",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'gruppenmanagement',
'phrase' => 'benutzerHinzufuegen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Benutzer hinzufügen",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Add user",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'gruppenmanagement',
'phrase' => 'aktiv',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "aktiv",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "active",
'description' => '',
'insertvon' => 'system'
)
)
)
);
+249 -7
View File
@@ -24,6 +24,7 @@ require_once('../../config/vilesci.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/studiengang.class.php');
require_once('../../include/gruppe.class.php');
require_once('../../include/gruppemanager.class.php');
require_once('../../include/person.class.php');
require_once('../../include/benutzer.class.php');
require_once('../../include/student.class.php');
@@ -82,17 +83,59 @@ if(!$rechte->isBerechtigt('lehre/gruppe', null, 's'))
<title>Gruppe-Verwaltung</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
<link rel="stylesheet" href="../../skin/jquery-ui-1.9.2.custom.min.css" type="text/css">
<?php
include('../../include/meta/jquery.php');
include('../../include/meta/jquery-tablesorter.php');
?>
<?php
// html Vorlage für ein manager span
const MANAGER_HTML = "<span class='manager-uid'>%s - %s %s&nbsp;"
."<img class='manager-delete-image' src='../../skin/images/cross.png' title='Manager entfernen' alt='Manager entfernen'>"
."<input type='hidden' name='gruppemanager[]' value='%s'>"
."</span>";
?>
<script type="text/javascript" src="../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script language="JavaScript" type="text/javascript">
function conf_del()
{
return confirm('Diese Gruppe wirklich löschen?');
}
function setManagerDeleteEvent()
{
var deleteImages = $('.manager-delete-image');
deleteImages.off("click");
deleteImages.click(function()
{
// closest manager uid parent
$(this).closest('.manager-uid').remove();
adjustManagerTableCellSize();
});
}
function showIfManagerAssignable()
{
var generiert = $("#generiert").prop('checked');
if (generiert === true)
{
$("#gruppemanager").prop("disabled", true);
$("#genGruppenManagerHinweis").removeClass("hiddenNotice");
}
else
{
$("#gruppemanager").prop("disabled", false);
$("#genGruppenManagerHinweis").addClass("hiddenNotice");
}
}
function adjustManagerTableCellSize()
{
// Tabellenzelle vergrössern wenn es Administratorelemente gibt
if ($("input[name='gruppemanager[]']").length)
$("#gruppenmanager-cell").addClass("gruppenmanager-cell");
else
$("#gruppenmanager-cell").removeClass("gruppenmanager-cell");
}
$(document).ready(function()
{
$("#t1").tablesorter(
@@ -110,11 +153,82 @@ if(!$rechte->isBerechtigt('lehre/gruppe', null, 's'))
return false;
});
$( "#mailgrp" ).click(function() {
$( "#mailgrp" ).click(function()
{
$( "#domain_text" ).toggle();
$('#gesperrt').prop('disabled', function(i, v) { return !v; });
});
// Löschen von Gruppemanager html bei Klick
setManagerDeleteEvent();
// Hinzufügen von Managern deaktiviert wenn generierte Gruppe
showIfManagerAssignable();
// autocomplete für user input Feld
$("#gruppemanager").autocomplete({
source: "einheit_autocomplete.php?work=searchUser",
minLength:3,
response: function(event, ui)
{
// Value und Label fuer die Anzeige setzen
for(i in ui.content)
{
ui.content[i].value=ui.content[i].uid;
ui.content[i].label=ui.content[i].uid+" - "+ui.content[i].vorname+" "+ui.content[i].nachname;
}
},
// bei Auswahl einer uid
select: function(event, ui)
{
// Administrator html holen und Werte ersetzen
var managerHtml = "<?php echo MANAGER_HTML ?>";
var managerHtmlValues = [ui.item.uid, ui.item.vorname, ui.item.nachname, ui.item.uid];
for (var i = 0; i < managerHtmlValues.length; i++)
{
managerHtml = managerHtml.replace(/%s/, managerHtmlValues[i]);
}
// wenn noch nicht vorhanden, Administrator unterhalb des Inputfeldes einfügen
if (!$("input[name='gruppemanager[]'][value='"+ui.item.uid+"']").length)
{
var counter = 0;
$(".manager-uid-container").children().each(
function() {
if ($(this).hasClass('manager-uid'))
counter++;
else
return false;
}
);
// nach 5 Managern in nächste Zeile springen
if (counter >= 5)
{
$(".manager-uid-container").prepend(
"<p class='manager-separator'></p>"
);
}
$(".manager-uid-container").prepend(
managerHtml
);
// Loeschen Event für neuen Administrator setzen
setManagerDeleteEvent();
// Größe der Administrator Tabellenzelle anpassen
adjustManagerTableCellSize();
}
// Feld leeren
$("#gruppemanager").val('');
return false; // prevent default, damit text nicht im Inputfeld bleibt
}
});
// Hinzufügen von Managern deaktiviert wenn Gruppe auf generiert setzen
$("#generiert").click(showIfManagerAssignable);
});
</script>
<style>
@@ -126,6 +240,35 @@ if(!$rechte->isBerechtigt('lehre/gruppe', null, 's'))
{
background-color: #d1d1d1;
}
col.first-table-column
{
width: 130px;
}
.manager-uid
{
border: 1px solid black;
padding: 2px;
margin-right: 2px;
white-space: nowrap;
}
.manager-delete-image
{
position: relative;
top: 4px;
cursor: pointer;
}
.manager-separator
{
margin: 3px;
}
.gruppenmanager-cell
{
padding-bottom: 3px;
}
.hiddenNotice
{
display: none;
}
</style>
</head>
<body>
@@ -158,8 +301,10 @@ else if (isset($_GET['type']) && $_GET['type']=='delete')
if($rechte->isBerechtigt('lehre/gruppe', $oe_studiengang, 'suid'))
{
$grp_kurzbz = $_GET['einheit_id'];
$e=new gruppe();
if(!$e->delete($_GET['einheit_id']))
if(!$e->delete($grp_kurzbz))
echo $e->errormsg;
}
else
@@ -214,6 +359,7 @@ function printDropDown()
echo '<input type="submit" value="Anzeigen" />';
echo '</form>';
}
function doSave()
{
global $rechte;
@@ -241,8 +387,10 @@ function doSave()
$e->new = false;
}
$user = get_uid();
$e->updateamum = date('Y-m-d H:i:s');
$e->updatevon = get_uid();
$e->updatevon = $user;
$e->bezeichnung = $_POST['bezeichnung'];
$e->beschreibung = $_POST['beschreibung'];
$e->studiengang_kz = $_POST['studiengang_kz'];
@@ -258,13 +406,66 @@ function doSave()
$e->sort = $_POST['sort'];
$e->content_visible = isset($_POST['content_visible']);
// gruppemanager immer array, leer wenn keine angegeben
$gruppemanager_uids = isset($_POST['gruppemanager']) && is_array($_POST['gruppemanager']) ? $_POST['gruppemanager'] : array();
// Prüfung: generierte Gruppen haben keine Manager
if (count($gruppemanager_uids) > 0 && $e->generiert === true)
{
echo "<span class='error'>Generierte Gruppen dürfen keine Administratoren haben!</span>";
return;
}
if(!$e->save())
echo $e->errormsg;
echo "<span class='error'>".$e->errormsg."</span>";
else // wenn Gruppe erfolgreich gespeichert, Gruppenmanager speichern
{
// Gruppe gemäss Konvention in Großbuchstaben
$gruppe_kurzbz = mb_strtoupper($_POST['kurzbz']);
// bestehende Gruppenmanager laden
$bestehende_gruppemanager_uids = array();
$gruppemanager_hlp = new gruppemanager();
if ($gruppemanager_hlp->load_uids($gruppe_kurzbz))
{
foreach ($gruppemanager_hlp->uids as $uid_obj)
{
$bestehende_gruppemanager_uids[] = $uid_obj->uid;
}
}
foreach ($gruppemanager_uids as $gruppemanager_uid)
{
// wenn Gruppenmanager noch nicht zugewiesen
if (!in_array($gruppemanager_uid, $bestehende_gruppemanager_uids))
{
// Gruppemanager speichern
$gruppemgr = new gruppemanager();
$gruppemgr->uid = $gruppemanager_uid;
$gruppemgr->gruppe_kurzbz = $gruppe_kurzbz;
$gruppemgr->insertamum = date('Y-m-d H:i:s');
$gruppemgr->insertvon = $user;
if(!$gruppemgr->save())
echo $gruppemgr->errormsg;
}
}
// zu löschende Gruppemanager ermitteln
$geloeschte_gruppemanager_uids = array_diff($bestehende_gruppemanager_uids, $gruppemanager_uids);
// Nicht mehr vorhandene Gruppenmanager löschen
$gruppemanager_hlp = new gruppemanager();
foreach ($geloeschte_gruppemanager_uids as $geloeschte_uid)
{
if (!$gruppemanager_hlp->delete($geloeschte_uid, $gruppe_kurzbz))
echo $gruppemanager_hlp->errormsg;
}
}
}
}
function doEdit($kurzbz,$new=false)
{
global $db, $rechte, $studiengang, $searchItems;
@@ -282,6 +483,9 @@ function doEdit($kurzbz,$new=false)
<form name="gruppe" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
<p><b>Gruppe <?php echo ($new?'hinzufügen':'bearbeiten'); ?></b><br>
<table id="newFormTable" border="0">
<colgroup>
<col span="1" class="first-table-column">
</colgroup>
<tbody>
<tr>
<td>Kurzbezeichnung</td>
@@ -341,6 +545,44 @@ function doEdit($kurzbz,$new=false)
</td>
<td></td>
</tr>
<tr>
<td>Gruppenadministrator</td>
<?php
$gruppemanagerCellClass = '';
$gruppemanager_hlp = new gruppemanager();
$gruppemanager_uids_result = $gruppemanager_hlp->load_uids($e->gruppe_kurzbz);
// richtige Tabellenzeige Grösse wenn Administratoren vorhanden
if ($gruppemanager_uids_result === true)
{
$gruppemanagerCellClass = ' class="gruppenmanager-cell"';
}
?>
<td<?php echo $gruppemanagerCellClass ?> id="gruppenmanager-cell">
<input type="text" name="gruppemanager" id="gruppemanager" autofocus="autofocus" />
<span class="hiddenNotice" id="genGruppenManagerHinweis">
Generierte Gruppen dürfen keine Administratoren haben.
</span>
<?php
echo "<div class='manager-uid-container'>";
// alle Manager der Gruppe anzeigen
if ($gruppemanager_uids_result === true)
{
$count = 1;
foreach ($gruppemanager_hlp->uids as $uid_obj)
{
$ben = new benutzer($uid_obj->uid);
// Vorlagestring durch Werte ersetzen und ausgeben
echo sprintf(MANAGER_HTML, $uid_obj->uid, $ben->vorname, $ben->nachname, $uid_obj->uid);
if ($count % 5 == 0) // neue Zeile nach 5 Elementen
echo "<p class='manager-separator'></p>";
$count++;
}
}
?>
</td>
<td>Optional, Administratoren, die Benutzer zur Gruppe entfernen/hinzufügen können</td>
</tr>
<tr>
<td>Semester</td>
<td><input type="text" name="semester" size="2" maxlength="1" value="<?php echo $e->semester ?>"></td>