Merge branch 'master' into feature-5490/Cronjobs_Priorisierung

This commit is contained in:
Manfred Kindl
2020-02-20 20:48:40 +01:00
103 changed files with 12348 additions and 10010 deletions
+15 -27
View File
@@ -127,37 +127,25 @@ define('EMAIL_CONFIG_INDEX', 'mail');
| Messaging system constants
|--------------------------------------------------------------------------
*/
// Email kontakt type
define('EMAIL_KONTAKT_TYPE', 'email');
// tbl_msg_recipient->sentInfo separator
define('SENT_INFO_NEWLINE', '\n');
// Message statuses
define('MSG_STATUS_UNREAD', 0);
define('MSG_STATUS_READ', 1);
define('MSG_STATUS_ARCHIVED', 2);
define('MSG_STATUS_DELETED', 3);
// Priority
define('PRIORITY_LOW', 1);
define('PRIORITY_NORMAL', 2);
define('PRIORITY_HIGH', 3);
define('PRIORITY_URGENT', 4);
// Message priorities
define('MSG_PRIORITY_LOW', 1);
define('MSG_PRIORITY_NORMAL', 2);
define('MSG_PRIORITY_HIGH', 3);
define('MSG_PRIORITY_URGENT', 4);
define('MSG_ERR_SUBJECT_EMPTY', 40);
define('MSG_ERR_BODY_EMPTY', 41);
define('MSG_ERR_TEMPLATE_NOT_FOUND', 42);
define('MSG_ERR_DELIVERY_MESSAGE', 43);
define('MSG_ERR_CONTACT_NOT_FOUND', 44);
define('MSG_ERR_OU_CONTACTS_NOT_FOUND', 45);
define('MSG_ERR_INVALID_USER_ID', 100);
define('MSG_ERR_INVALID_MSG_ID', 101);
define('MSG_ERR_INVALID_THREAD_ID', 102);
define('MSG_ERR_INVALID_STATUS_ID', 103);
define('MSG_ERR_INVALID_SENDER_ID', 104);
define('MSG_ERR_INVALID_RECIPIENTS', 105);
define('MSG_ERR_INVALID_RECEIVER_ID', 106);
define('MSG_ERR_INVALID_OU', 107);
define('MSG_ERR_INVALID_TEMPLATE', 108);
define('MSG_ERR_INVALID_TOKEN', 109);
// Message error status
define('MSG_ERR_INVALID_SUBJECT', 40);
define('MSG_ERR_INVALID_BODY', 41);
define('MSG_ERR_INVALID_TEMPLATE', 42);
define('MSG_ERR_INVALID_MSG_ID', 43);
define('MSG_ERR_INVALID_STATUS_ID', 44);
define('MSG_ERR_INVALID_SENDER', 45);
define('MSG_ERR_INVALID_RECIPIENTS', 46);
define('MSG_ERR_INVALID_OU', 47);
define('MSG_ERR_INVALID_TOKEN', 48);
+3
View File
@@ -29,3 +29,6 @@ $config['wrapchars'] = 76; // Character count to wrap at.
$config['mailtype'] = 'html'; // html or text
$config['priority'] = 3; // Email Priority. 1 = highest. 5 = lowest. 3 = normal
$config['validate'] = false; // If true then the email address will be validated
// If enabled will be logged info about emails in Codeigniter error logs
$config['enable_debug'] = false;
+11 -5
View File
@@ -7,13 +7,19 @@ $config['send_immediately'] = false;
$config['msg_delivery'] = true; // Default true
$config['system_person_id'] = 1; // Dummy sender, used for sending messages from the system
$config['redirect_view_message_url'] = '/Redirect/redirectByToken/';
$config['message_html_view_url'] = '/ViewMessage/toHTML/';
$config['redirect_view_message_url'] = '/system/messages/ViewMessage/redirectByToken/';
$config['message_html_view_url'] = '/system/messages/ViewMessage/toHTML/';
// Change this to CIS Server (https://cis.example.com/index.ci.php) if you are sending Messages from Vilesci
$config['message_server'] = site_url();
$config['assistent_function'] = 'ass';
// Organization unit function that are allowed to read messages for the organisation unit
$config['ou_receivers'] = array('ass');
// Organization units that will never receive notice emails
$config['ou_receivers_no_notice'] = array('infocenter');
// Organization units that will not send the notice email to the internal account, but to the private one
$config['ou_receivers_private'] = array('eac', 'ewu', 'scs');
$config['message_redirect_url'] = array();
$config['message_redirect_url']['fallback'] = site_url('ViewMessage/writeReply');
// $config['message_redirect_url']['OE_ROOT'] = 'https://SERVER-NAME/addons/aufnahme/OE_ROOT/cis/index.php';
$config['message_redirect_url']['fallback'] = site_url('system/messages/ViewMessage/writeReply');
// $config['message_redirect_url']['OE_ROOT_1'] = 'https://<server name>/addons/aufnahme/OE_ROOT/cis/index.php';
// $config['message_redirect_url']['OE_ROOT_2'] = 'https://<server name>/<where ever you like to land to a message reply page>';
-87
View File
@@ -1,87 +0,0 @@
<?php
/**
* FH-Complete
*
* @package FHC-API
* @author FHC-Team
* @copyright Copyright (c) 2016, fhcomplete.org
* @license GPLv3
* @link http://fhcomplete.org
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Redirect extends FHC_Controller
{
/**
* API constructor
*/
public function __construct()
{
parent::__construct();
// Loads model MessageTokenModel
$this->load->model('system/MessageToken_model', 'MessageTokenModel');
}
/**
* redirectByToken
*
* - Loads the message using a token
* - Loads the root of the organisation unit tree using the oe_kurzbz present in the message
* - Redirect to the aufnahme related to the found organisation unit
*/
public function redirectByToken($token)
{
$msg = $this->MessageTokenModel->getMessageByToken($token);
if (isError($msg))
{
show_error(getError($msg));
}
$oe_kurzbz = null;
if (hasData($msg)) $oe_kurzbz = getData($msg)[0]->oe_kurzbz;
if ($oe_kurzbz != null && $oe_kurzbz != '')
{
$organisationRoot = null;
$getOERoot = $this->MessageTokenModel->getOERoot($oe_kurzbz);
if (isSuccess($getOERoot)) // If no errors occurred
{
$organisationRoot = getData($getOERoot);
}
else
{
show_error('No organisation unit present in the message');
}
$addonAufnahmeUrls = $this->config->item('message_redirect_url');
if(!isset($addonAufnahmeUrls[$organisationRoot]))
$organisationRoot = 'fallback';
if (isset($token)
&& hasData($msg)
&& is_array($addonAufnahmeUrls)
&& $organisationRoot != null
&& isset($addonAufnahmeUrls[$organisationRoot]))
{
redirect($addonAufnahmeUrls[$organisationRoot] . '?token=' . $token);
}
}
else
{
$addonAufnahmeUrls = $this->config->item('message_redirect_url');
if (isset($token)
&& hasData($msg)
&& is_array($addonAufnahmeUrls)
&& isset($addonAufnahmeUrls['fallback']))
{
redirect($addonAufnahmeUrls['fallback'] . '?token=' . $token);
}
}
}
}
-150
View File
@@ -1,150 +0,0 @@
<?php
/**
* FH-Complete
*
* @package FHC-API
* @author FHC-Team
* @copyright Copyright (c) 2016, fhcomplete.org
* @license GPLv3
* @link http://fhcomplete.org
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
* Handles sending messages with token
* NOTE: in this controller is not possible to include/call everything
* that automatically call the authentication system, like the most of models or libraries
*/
class ViewMessage extends FHC_Controller
{
/**
* API constructor
*/
public function __construct()
{
parent::__construct();
// Loading config file message
$this->config->load('message');
// Load model MessageToken_model, not calling the authentication system
$this->load->model('system/MessageToken_model', 'MessageTokenModel');
$this->load->model('CL/Messages_model', 'CLMessagesModel');
}
/**
* Using the MessageTokenModel instead of MessageLib to allow
* viewing the message without prompting the login
*/
public function toHTML($token)
{
$msg = $this->MessageTokenModel->getMessageByToken($token);
if (isError($msg))
{
show_error(getError($msg));
}
if (is_array(getData($msg)) && count(getData($msg)) > 0)
{
$setReadMessageStatusByToken = $this->MessageTokenModel->setReadMessageStatusByToken($token);
if (isError($setReadMessageStatusByToken))
{
show_error(getError($setReadMessageStatusByToken));
}
$sender_id = getData($msg)[0]->sender_id;
$receiver_id = getData($msg)[0]->receiver_id;
$sender = $this->MessageTokenModel->getSenderData($sender_id);
// To decide how to change the redirection
$isEmployee = $this->MessageTokenModel->isEmployee($receiver_id);
if (isError($isEmployee))
{
show_error(getError($isEmployee));
}
if($this->config->item('redirect_view_message_url') != '')
$href = $this->config->item('message_server').$this->config->item('redirect_view_message_url').$token;
else
$href = '';
$data = array (
'sender_id' => $sender_id,
'sender' => getData($sender)[0],
'message' => getData($msg)[0],
'isEmployee' => hasData($isEmployee),
'href' => $href
);
$this->load->view('system/messages/messageHTML.php', $data);
}
}
/**
* write the reply
*/
public function writeReply()
{
$token = $this->input->get('token');
if (isEmptyString($token))
{
show_error('No token supplied');
}
$msg = null;
// Get message data if possible
$msg = $this->MessageTokenModel->getMessageByToken($token);
if (!hasData($msg))
{
show_error('No message found');
}
$msg = getData($msg)[0];
// Get variables
$receiverData = $this->MessageTokenModel->getPersonData($msg->sender_id);
if (!hasData($receiverData))
{
show_error('No sender found');
}
$data = array (
'receivers' => getData($receiverData),
'message' => $msg,
'token' => $token
);
$this->load->view('system/messages/messageWriteReply', $data);
}
/**
* Send a reply
*/
public function sendReply()
{
$subject = $this->input->post('subject');
$body = $this->input->post('body');
$persons = $this->input->post('persons');
$relationmessage_id = $this->input->post('relationmessage_id');
$token = $this->input->post('token');
if (!isset($relationmessage_id) || $relationmessage_id == '' || !isset($token) || $token == '')
{
show_error('Error while sending reply');
}
$sendReply = $this->CLMessagesModel->sendReply($subject, $body, $persons, $relationmessage_id, $token);
if (isError($sendReply))
{
show_error(getError($sendReply));
}
$this->load->view('system/messages/messageReplySent');
}
}
+267 -267
View File
@@ -1,267 +1,267 @@
<?php
/**
* FH-Complete
*
* @package FHC-API
* @author FHC-Team
* @copyright Copyright (c) 2016, fhcomplete.org
* @license GPLv3
* @link http://fhcomplete.org
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Person extends APIv1_Controller
{
/**
* Person API constructor.
*/
public function __construct()
{
parent::__construct(array('Person' => 'basis/person:rw', 'CheckBewerbung' => 'basis/person:r'));
// Load model PersonModel
$this->load->model('person/person_model', 'PersonModel');
}
/**
* @return void
*/
public function getPerson()
{
$person_id = $this->get('person_id');
$code = $this->get('code');
$email = $this->get('email');
if (isset($code) || isset($email) || isset($person_id))
{
if (isset($code) && isset($email))
{
$result = $this->PersonModel->getPersonKontaktByZugangscode($code, $email);
}
else
{
$parametersArray = array();
if (isset($code))
{
$parametersArray['zugangscode'] = $code;
}
else
{
$parametersArray['person_id'] = $person_id;
}
$result = $this->PersonModel->loadWhere($parametersArray);
}
$this->response($result, REST_Controller::HTTP_OK);
}
else
{
$this->response();
}
}
/**
* @return void
*/
public function getCheckBewerbung()
{
$email = $this->get('email');
$studiensemester_kurzbz = $this->get('studiensemester_kurzbz');
if (isset($email))
{
$result = $this->PersonModel->checkBewerbung($email, $studiensemester_kurzbz);
$this->response($result, REST_Controller::HTTP_OK);
}
else
{
$this->response();
}
}
/**
* @return void
*/
public function postPerson()
{
$person = $this->post();
$validation = $this->_validate($person);
if (isSuccess($validation))
{
if(isset($person['person_id']) && !(is_null($person['person_id'])) && ($person['person_id'] != ''))
{
$result = $this->PersonModel->updatePerson($person);
}
else
{
$result = $this->PersonModel->insert($person);
}
$this->response($result, REST_Controller::HTTP_OK);
}
else
{
$this->response($validation, REST_Controller::HTTP_OK);
}
}
private function _validate($person)
{
// If $person is consistent
if (!isset($person) || (isset($person) && !is_array($person)))
{
return error('Any parameters posted');
}
// Trim all the values
foreach($person as $key => $value)
{
if (gettype($value) == 'string')
{
$person[$key] = trim($value);
}
}
if (isset($person['sprache']) && mb_strlen($person['sprache']) > 16)
{
return error('Sprache darf nicht laenger als 16 Zeichen sein');
}
if (isset($person['anrede']) && mb_strlen($person['anrede']) > 16)
{
return error('Anrede darf nicht laenger als 16 Zeichen sein');
}
if (isset($person['titelpost']) && mb_strlen($person['titelpost']) > 32)
{
return error('Titelpost darf nicht laenger als 32 Zeichen sein');
}
if (isset($person['titelpre']) && mb_strlen($person['titelpre']) > 64)
{
return error('Titelpre darf nicht laenger als 64 Zeichen sein');
}
if (isset($person['nachname']) && mb_strlen($person['nachname']) > 64)
{
return error('Nachname darf nicht laenger als 64 Zeichen sein');
}
if (isset($person['nachname']) && ($person['nachname'] == '' || is_null($person['nachname'])))
{
return error('Nachname muss eingegeben werden');
}
if (isset($person['vorname']) && mb_strlen($person['vorname']) > 32)
{
return error('Vorname darf nicht laenger als 32 Zeichen sein');
}
if (isset($person['vornamen']) && mb_strlen($person['vornamen']) > 128)
{
return error('Vornamen darf nicht laenger als 128 Zeichen sein');
}
if (isset($person['gebort']) && mb_strlen($person['gebort']) > 128)
{
return error('Geburtsort darf nicht laenger als 128 Zeichen sein');
}
if (isset($person['homepage']) && mb_strlen($person['homepage']) > 256)
{
return error('Homepage darf nicht laenger als 256 Zeichen sein');
}
if (isset($person['matr_nr']) && mb_strlen($person['matr_nr']) > 32)
{
return error('Matrikelnummer darf nicht laenger als 32 Zeichen sein');
}
if (isset($person['ersatzkennzeichen']) && mb_strlen($person['ersatzkennzeichen']) > 10)
{
return error('Ersatzkennzeichen darf nicht laenger als 10 Zeichen sein');
}
if (isset($person['familienstand']) && mb_strlen($person['familienstand']) > 1)
{
return error('Familienstand ist ungueltig');
}
if (isset($person['anzahlkinder']) && $person['anzahlkinder'] != '' && !is_numeric($person['anzahlkinder']))
{
return error('Anzahl der Kinder ist ungueltig');
}
if (!isset($person['aktiv']) || (isset($person['aktiv']) && $person['aktiv'] !== true && $person['aktiv'] !== false))
{
return error('Aktiv ist ungueltig');
}
if (!isset($person['person_id']) && isset($person['insertvon']) && mb_strlen($person['insertvon']) > 32)
{
return error('Insertvon darf nicht laenger als 32 Zeichen sein');
}
if (isset($person['updatevon']) && mb_strlen($person['updatevon']) > 32)
{
return error('Updatevon darf nicht laenger als 32 Zeichen sein');
}
if (isset($person['geburtsnation']) && mb_strlen($person['geburtsnation']) > 3)
{
return error('Geburtsnation darf nicht laenger als 3 Zeichen sein');
}
if (isset($person['staatsbuergerschaft']) && mb_strlen($person['staatsbuergerschaft']) > 3)
{
return error('Staatsbuergerschaft darf nicht laenger als 3 Zeichen sein');
}
if (!isset($person['geschlecht']) || (isset($person['geschlecht']) && mb_strlen($person['geschlecht']) > 1))
{
return error('Geschlecht darf nicht laenger als 1 Zeichen sein');
}
if (isset($person['geschlecht']) && $person['geschlecht'] != 'm' && $person['geschlecht'] != 'w' && $person['geschlecht'] != 'u')
{
return error('Geschlecht muss w, m oder u sein!');
}
if (isset($person['svnr']))
{
if ($person['svnr'] != '' && mb_strlen($person['svnr']) != 16
&& mb_strlen($person['svnr']) != 12 && mb_strlen($person['svnr']) != 10)
{
return error('SVNR muss 10, 12 oder 16 Zeichen lang sein');
}
if (mb_strlen($person['svnr']) == 10 || mb_strlen($person['svnr']) == 12)
{
//SVNR mit Pruefziffer pruefen
//Die 4. Stelle in der SVNR ist die Pruefziffer
//(Summe von (gewichtung[i]*svnr[i])) modulo 11 ergibt diese Pruefziffer
//Falls nicht, ist die SVNR ungueltig
$gewichtung = array(3, 7, 9, 0, 5, 8, 4, 2, 1, 6);
$erg = 0;
$tmpSvnr = substr($person['svnr'], 0, 10);
//Quersumme bilden
for ($i = 0; $i < 10; $i++)
{
$erg += $gewichtung[$i] * $tmpSvnr{$i};
}
if ($tmpSvnr{3} != ($erg % 11)) //Vergleichen der Pruefziffer mit Quersumme Modulo 11
{
return error('SVNR ist ungueltig');
}
if (mb_strlen($person['svnr']) == 12)
{
$last = substr($person['svnr'], 10, 12);
if ($last{0} != 'v' || !is_numeric($last{1}))
{
return error('SVNR ist ungueltig');
}
}
}
//Pruefen ob das Geburtsdatum mit der SVNR uebereinstimmt.
if (isset($person['gebdatum']) && $person['svnr'] != '' && $person['gebdatum'] != '')
{
if (!mb_ereg('([0-9]{1,2}).([0-9]{1,2}).([0-9]{4})', $person['gebdatum'])
&& !mb_ereg('([0-9]{4})-([0-9]{2})-([0-9]{2})', $person['gebdatum']))
{
return error('Format des Geburtsdatums ist ungueltig');
}
}
}
return success('Input data are valid');
}
}
<?php
/**
* FH-Complete
*
* @package FHC-API
* @author FHC-Team
* @copyright Copyright (c) 2016, fhcomplete.org
* @license GPLv3
* @link http://fhcomplete.org
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Person extends APIv1_Controller
{
/**
* Person API constructor.
*/
public function __construct()
{
parent::__construct(array('Person' => 'basis/person:rw', 'CheckBewerbung' => 'basis/person:r'));
// Load model PersonModel
$this->load->model('person/person_model', 'PersonModel');
}
/**
* @return void
*/
public function getPerson()
{
$person_id = $this->get('person_id');
$code = $this->get('code');
$email = $this->get('email');
if (isset($code) || isset($email) || isset($person_id))
{
if (isset($code) && isset($email))
{
$result = $this->PersonModel->getPersonKontaktByZugangscode($code, $email);
}
else
{
$parametersArray = array();
if (isset($code))
{
$parametersArray['zugangscode'] = $code;
}
else
{
$parametersArray['person_id'] = $person_id;
}
$result = $this->PersonModel->loadWhere($parametersArray);
}
$this->response($result, REST_Controller::HTTP_OK);
}
else
{
$this->response();
}
}
/**
* @return void
*/
public function getCheckBewerbung()
{
$email = $this->get('email');
$studiensemester_kurzbz = $this->get('studiensemester_kurzbz');
if (isset($email))
{
$result = $this->PersonModel->checkBewerbung($email, $studiensemester_kurzbz);
$this->response($result, REST_Controller::HTTP_OK);
}
else
{
$this->response();
}
}
/**
* @return void
*/
public function postPerson()
{
$person = $this->post();
$validation = $this->_validate($person);
if (isSuccess($validation))
{
if(isset($person['person_id']) && !(is_null($person['person_id'])) && ($person['person_id'] != ''))
{
$result = $this->PersonModel->updatePerson($person);
}
else
{
$result = $this->PersonModel->insert($person);
}
$this->response($result, REST_Controller::HTTP_OK);
}
else
{
$this->response($validation, REST_Controller::HTTP_OK);
}
}
private function _validate($person)
{
// If $person is consistent
if (!isset($person) || (isset($person) && !is_array($person)))
{
return error('Any parameters posted');
}
// Trim all the values
foreach($person as $key => $value)
{
if (gettype($value) == 'string')
{
$person[$key] = trim($value);
}
}
if (isset($person['sprache']) && mb_strlen($person['sprache']) > 16)
{
return error('Sprache darf nicht laenger als 16 Zeichen sein');
}
if (isset($person['anrede']) && mb_strlen($person['anrede']) > 16)
{
return error('Anrede darf nicht laenger als 16 Zeichen sein');
}
if (isset($person['titelpost']) && mb_strlen($person['titelpost']) > 32)
{
return error('Titelpost darf nicht laenger als 32 Zeichen sein');
}
if (isset($person['titelpre']) && mb_strlen($person['titelpre']) > 64)
{
return error('Titelpre darf nicht laenger als 64 Zeichen sein');
}
if (isset($person['nachname']) && mb_strlen($person['nachname']) > 64)
{
return error('Nachname darf nicht laenger als 64 Zeichen sein');
}
if (isset($person['nachname']) && ($person['nachname'] == '' || is_null($person['nachname'])))
{
return error('Nachname muss eingegeben werden');
}
if (isset($person['vorname']) && mb_strlen($person['vorname']) > 32)
{
return error('Vorname darf nicht laenger als 32 Zeichen sein');
}
if (isset($person['vornamen']) && mb_strlen($person['vornamen']) > 128)
{
return error('Vornamen darf nicht laenger als 128 Zeichen sein');
}
if (isset($person['gebort']) && mb_strlen($person['gebort']) > 128)
{
return error('Geburtsort darf nicht laenger als 128 Zeichen sein');
}
if (isset($person['homepage']) && mb_strlen($person['homepage']) > 256)
{
return error('Homepage darf nicht laenger als 256 Zeichen sein');
}
if (isset($person['matr_nr']) && mb_strlen($person['matr_nr']) > 32)
{
return error('Matrikelnummer darf nicht laenger als 32 Zeichen sein');
}
if (isset($person['ersatzkennzeichen']) && mb_strlen($person['ersatzkennzeichen']) > 10)
{
return error('Ersatzkennzeichen darf nicht laenger als 10 Zeichen sein');
}
if (isset($person['familienstand']) && mb_strlen($person['familienstand']) > 1)
{
return error('Familienstand ist ungueltig');
}
if (isset($person['anzahlkinder']) && $person['anzahlkinder'] != '' && !is_numeric($person['anzahlkinder']))
{
return error('Anzahl der Kinder ist ungueltig');
}
if (!isset($person['aktiv']) || (isset($person['aktiv']) && $person['aktiv'] !== true && $person['aktiv'] !== false))
{
return error('Aktiv ist ungueltig');
}
if (!isset($person['person_id']) && isset($person['insertvon']) && mb_strlen($person['insertvon']) > 32)
{
return error('Insertvon darf nicht laenger als 32 Zeichen sein');
}
if (isset($person['updatevon']) && mb_strlen($person['updatevon']) > 32)
{
return error('Updatevon darf nicht laenger als 32 Zeichen sein');
}
if (isset($person['geburtsnation']) && mb_strlen($person['geburtsnation']) > 3)
{
return error('Geburtsnation darf nicht laenger als 3 Zeichen sein');
}
if (isset($person['staatsbuergerschaft']) && mb_strlen($person['staatsbuergerschaft']) > 3)
{
return error('Staatsbuergerschaft darf nicht laenger als 3 Zeichen sein');
}
if (!isset($person['geschlecht']) || (isset($person['geschlecht']) && mb_strlen($person['geschlecht']) > 1))
{
return error('Geschlecht darf nicht laenger als 1 Zeichen sein');
}
if (isset($person['geschlecht']) && $person['geschlecht'] != 'm' && $person['geschlecht'] != 'w' && $person['geschlecht'] != 'u')
{
return error('Geschlecht muss w, m oder u sein!');
}
if (isset($person['svnr']))
{
if ($person['svnr'] != '' && mb_strlen($person['svnr']) != 16
&& mb_strlen($person['svnr']) != 12 && mb_strlen($person['svnr']) != 10)
{
return error('SVNR muss 10, 12 oder 16 Zeichen lang sein');
}
if (mb_strlen($person['svnr']) == 10 || mb_strlen($person['svnr']) == 12)
{
//SVNR mit Pruefziffer pruefen
//Die 4. Stelle in der SVNR ist die Pruefziffer
//(Summe von (gewichtung[i]*svnr[i])) modulo 11 ergibt diese Pruefziffer
//Falls nicht, ist die SVNR ungueltig
$gewichtung = array(3, 7, 9, 0, 5, 8, 4, 2, 1, 6);
$erg = 0;
$tmpSvnr = substr($person['svnr'], 0, 10);
//Quersumme bilden
for ($i = 0; $i < 10; $i++)
{
$erg += $gewichtung[$i] * $tmpSvnr{$i};
}
if ($tmpSvnr{3} != ($erg % 11)) //Vergleichen der Pruefziffer mit Quersumme Modulo 11
{
return error('SVNR ist ungueltig');
}
if (mb_strlen($person['svnr']) == 12)
{
$last = substr($person['svnr'], 10, 12);
if ($last{0} != 'v' || !is_numeric($last{1}))
{
return error('SVNR ist ungueltig');
}
}
}
//Pruefen ob das Geburtsdatum mit der SVNR uebereinstimmt.
if (isset($person['gebdatum']) && $person['svnr'] != '' && $person['gebdatum'] != '')
{
if (!mb_ereg('([0-9]{1,2}).([0-9]{1,2}).([0-9]{4})', $person['gebdatum'])
&& !mb_ereg('([0-9]{4})-([0-9]{2})-([0-9]{2})', $person['gebdatum']))
{
return error('Format des Geburtsdatums ist ungueltig');
}
}
}
return success('Input data are valid');
}
}
@@ -144,26 +144,26 @@ class Message extends APIv1_Controller
*/
public function postMessage()
{
$validation = $this->_validatePostMessage($this->post());
$postMessage = $this->_validatePostMessage($this->post());
if (isSuccess($validation))
if (isSuccess($postMessage))
{
$result = $this->messagelib->sendMessage(
isset($this->post()['person_id']) ? $this->post()['person_id'] : null,
isset($this->post()['receiver_id']) ? $this->post()['receiver_id'] : null,
$this->post()['subject'],
$this->post()['body'],
PRIORITY_NORMAL,
isset($this->post()['relationmessage_id']) ? $this->post()['relationmessage_id'] : null,
isset($this->post()['oe_kurzbz']) ? $this->post()['oe_kurzbz'] : null, // Sender organisation unit
isset($this->post()['multiPartMime']) ? $this->post()['multiPartMime'] : true
$result = $this->messagelib->sendMessageUser(
$this->post()['receiver_id']), // receiverPersonId
$this->post()['subject'], // subject
$this->post()['body'], // body
$this->post()['person_id']) ? $this->post()['person_id'] : null, // sender_id
isset($this->post()['oe_kurzbz']) ? $this->post()['oe_kurzbz'] : null, // senderOU
isset($this->post()['relationmessage_id']) ? $this->post()['relationmessage_id'] : null, // relationmessage_id
MSG_PRIORITY_NORMAL, // priority
isset($this->post()['multiPartMime']) ? $this->post()['multiPartMime'] : true // multiPartMime
);
$this->response($result, REST_Controller::HTTP_OK);
}
else
{
$this->response($validation, REST_Controller::HTTP_OK);
$this->response($postMessage, REST_Controller::HTTP_OK);
}
}
@@ -172,26 +172,27 @@ class Message extends APIv1_Controller
*/
public function postMessageVorlage()
{
$validation = $this->_validatePostMessageVorlage($this->post());
$postMessage = $this->_validatePostMessageVorlage($this->post());
if (isSuccess($validation))
if (isSuccess($postMessage))
{
$result = $this->messagelib->sendMessageVorlage(
isset($this->post()['sender_id']) ? $this->post()['sender_id'] : null,
isset($this->post()['receiver_id']) ? $this->post()['receiver_id'] : null,
$this->post()['vorlage_kurzbz'],
isset($this->post()['oe_kurzbz']) ? $this->post()['oe_kurzbz'] : null, // Sender organisation unit
$this->post()['data'],
isset($this->post()['relationmessage_id']) ? $this->post()['relationmessage_id'] : null,
isset($this->post()['orgform_kurzbz']) ? $this->post()['orgform_kurzbz'] : null,
isset($this->post()['multiPartMime']) ? $this->post()['multiPartMime'] : true
$result = $this->messagelib->sendMessageUserTemplate(
isset($this->post()['receiver_id']) ? $this->post()['receiver_id'] : null, // receiversPersonId
$this->post()['vorlage_kurzbz'], // vorlage
$this->post()['data'], // parseData
isset($this->post()['orgform_kurzbz']) ? $this->post()['orgform_kurzbz'] : null, // orgform
isset($this->post()['sender_id']) ? $this->post()['sender_id'] : null, // sender_id
isset($this->post()['oe_kurzbz']) ? $this->post()['oe_kurzbz'] : null, // senderOU
isset($this->post()['relationmessage_id']) ? $this->post()['relationmessage_id'] : null, // relationmessage_id
MSG_PRIORITY_NORMAL, // priority
isset($this->post()['multiPartMime']) ? $this->post()['multiPartMime'] : true // multiPartMime
);
$this->response($result, REST_Controller::HTTP_OK);
}
else
{
$this->response($validation, REST_Controller::HTTP_OK);
$this->response($postMessage, REST_Controller::HTTP_OK);
}
}
@@ -220,26 +221,26 @@ class Message extends APIv1_Controller
/**
* _validatePostMessage
*/
private function _validatePostMessage($message = null)
private function _validatePostMessage($post = null)
{
if (!isset($message))
if (!isset($post))
{
return error('Parameter is null');
}
if (!isset($message['subject']))
if (!isset($post['subject']))
{
return error('subject is not set');
}
if( !isset($message['body']))
if (!isset($post['body']))
{
return error('body is not set');
}
if (!isset($message['receiver_id']) && !isset($message['oe_kurzbz']))
if (!isset($post['receiver_id']))
{
return error('If a receiver_id is not given a oe_kurzbz must be specified');
return error('receiver_id is not set');
}
return success('Input data are valid');
return success();
}
/**
@@ -14,22 +14,25 @@
if (!defined("BASEPATH")) exit("No direct script access allowed");
class MailJob extends Auth_Controller
class MailJob extends CLI_Controller
{
/**
* API constructor
*/
public function __construct()
{
// An empty array as parameter will ensure that this controller is ONLY callable from command line
parent::__construct(array());
parent::__construct();
// Loads MessageLib
$this->load->library('MessageLib');
}
public function sendMessages($numberToSent = null, $numberPerTimeRange = null, $email_time_range = null, $email_from_system = null)
/**
* Send all not sent messages
* Parameters are used to overrride messages and mail configuration
*/
public function sendMessages($numberToSent = null, $numberPerTimeRange = null, $emailTimeRange = null, $emailFromSystem = null)
{
$this->messagelib->sendAll($numberToSent, $numberPerTimeRange, $email_time_range, $email_from_system);
$this->messagelib->sendAllNotices($numberToSent, $numberPerTimeRange, $emailTimeRange, $emailFromSystem);
}
}
@@ -1,191 +0,0 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
class FASMessages extends Auth_Controller
{
/**
*
*/
public function __construct()
{
parent::__construct(
array(
'write' => 'basis/message:rw',
'writeReply' => 'basis/message:rw'
)
);
// Loads the message library
$this->load->library('MessageLib');
// Loads the widget library
$this->load->library('WidgetLib');
$this->loadPhrases(
array(
'global',
'ui'
)
);
}
// -----------------------------------------------------------------------------------------------------------------
// Public methods
/**
* Write a new message
*/
public function write($sender_id)
{
$prestudent_id = $this->input->post('prestudent_id'); // recipients prestudend_id(s)
if (!is_numeric($sender_id))
{
show_error('The current logged user person_id is not defined');
}
$msgVarsData = $this->_getMsgVarsData($prestudent_id);
// Retrieves message vars for a person from view view vw_msg_vars_person
$variablesArray = $this->_getMessageVarsPerson();
// Organisation units used to get the templates
$oe_kurzbz = $this->_getOeKurzbz($sender_id);
// Admin or commoner?
$isAdmin = $this->_getIsAdmin($sender_id);
$data = array(
'recipients' => getData($msgVarsData),
'variables' => $variablesArray,
'oe_kurzbz' => $oe_kurzbz, // used to get the templates
'isAdmin' => $isAdmin
);
$this->load->view('system/messages/messageWrite', $data);
}
/**
* Write a reply
*/
public function writeReply($sender_id, $msg_id, $receiver_id)
{
$prestudent_id = $this->input->post('prestudent_id'); // recipients prestudend_id(s)
if (!is_numeric($sender_id))
{
show_error('The current logged user person_id is not defined');
}
if (!is_numeric($msg_id))
{
show_error('The msg_id must be a number');
}
if (!is_numeric($receiver_id))
{
show_error('The receiver_id must be a number');
}
$msg = $this->_getMessage($msg_id, $receiver_id);
$msgVarsData = $this->_getMsgVarsData($prestudent_id);
// Retrieves message vars for a person from view view vw_msg_vars_person
$variablesArray = $this->_getMessageVarsPerson();
// Organisation units used to get the templates
$oe_kurzbz = $this->_getOeKurzbz($sender_id);
// Admin or commoner?
$isAdmin = $this->_getIsAdmin($sender_id);
$data = array(
'recipients' => getData($msgVarsData),
'message' => $msg,
'variables' => $variablesArray,
'oe_kurzbz' => $oe_kurzbz, // used to get the templates
'isAdmin' => $isAdmin
);
$this->load->view('system/messages/messageWrite', $data);
}
// -----------------------------------------------------------------------------------------------------------------
// Private methods
/**
*
*/
private function _getMessage($msg_id, $receiver_id)
{
$msg = $this->messagelib->getMessage($msg_id, $receiver_id);
if (isError($msg))
{
show_error(getError($msg));
}
elseif (!hasData($msg))
{
show_error('The selected message does not exist');
}
else
{
$msg = getData($msg)[0];
}
return $msg;
}
/**
* Retrieves message vars from view vw_msg_vars
*/
private function _getMsgVarsData($prestudent_id)
{
$this->load->model('system/Message_model', 'MessageModel');
$msgVarsData = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudent_id);
if (isError($msgVarsData))
{
show_error(getError($msgVarsData));
}
return $msgVarsData;
}
/**
* Wrapper method to call messagelib->getMessageVarsPerson
*/
private function _getMessageVarsPerson()
{
$variables = $this->messagelib->getMessageVarsPerson();
if (isError($variables)) show_error(getError($variables));
return getData($variables);
}
/**
* Wrapper method to call messagelib->getOeKurzbz
*/
private function _getOeKurzbz($sender_id)
{
$oe_kurzbz = $this->messagelib->getOeKurzbz($sender_id);
if (isError($oe_kurzbz)) show_error(getError($oe_kurzbz));
return getData($oe_kurzbz);
}
/**
* Wrapper method to call messagelib->getIsAdmin
*/
private function _getIsAdmin($sender_id)
{
$isAdmin = $this->messagelib->getIsAdmin($sender_id);
if (isError($isAdmin)) show_error(getError($isAdmin));
return getData($isAdmin);
}
}
-210
View File
@@ -1,210 +0,0 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
class Messages extends Auth_Controller
{
/**
*
*/
public function __construct()
{
parent::__construct(
array(
'write' => array('basis/message:rw', 'infocenter:rw'),
'send' => array('basis/message:rw', 'infocenter:rw'),
'sendJson' => array('basis/message:rw', 'infocenter:rw'),
'getVorlage' => array('basis/message:r', 'infocenter:r'),
'parseMessageText' => array('basis/message:r', 'infocenter:r'),
'getMessageFromIds' => array('basis/message:r', 'infocenter:r')
)
);
// Loads the message library
$this->load->library('MessageLib');
// Loads the widget library
$this->load->library('WidgetLib');
$this->load->model('system/Message_model', 'MessageModel');
$this->load->model('CL/Messages_model', 'CLMessagesModel');
$this->loadPhrases(
array(
'global',
'ui'
)
);
}
// -----------------------------------------------------------------------------------------------------------------
// Public methods
/**
* Write a new message
*/
public function write()
{
$person_id = $this->input->post('person_id');
$sender_id = null;
$authUser = $this->CLMessagesModel->getAuthUser();
if (isError($authUser))
{
show_error(getError($authUser));
}
else
{
$sender_id = getData($authUser)[0]->person_id;
}
$msgVarsData = $this->MessageModel->getMsgVarsDataByPersonId($person_id);
if (isError($msgVarsData)) show_error(getError($msgVarsData));
// Retrieves message vars for a person from view view vw_msg_vars_person
$variables = $this->messagelib->getMessageVarsPerson();
if (isError($variables)) show_error(getError($variables));
// Organisation units used to get the templates
$oe_kurzbz = $this->messagelib->getOeKurzbz($sender_id);
if (isError($oe_kurzbz)) show_error(getError($oe_kurzbz));
// Admin or commoner?
$isAdmin = $this->messagelib->getIsAdmin($sender_id);
if (isError($isAdmin)) show_error(getError($isAdmin));
$data = array (
'recipients' => getData($msgVarsData),
'variables' => getData($variables),
'oe_kurzbz' => getData($oe_kurzbz), // used to get the templates
'isAdmin' => getData($isAdmin)
);
$this->load->view('system/messages/messageWrite', $data);
}
/**
* Send message
*/
public function send()
{
$persons = $this->input->post('persons');
$relationmessage_id = $this->input->post('relationmessage_id');
$msgVarsData = $this->MessageModel->getMsgVarsDataByPersonId($persons);
$send = $this->CLMessagesModel->send($msgVarsData, $relationmessage_id);
$this->load->view('system/messages/messageSent', array('success' => isSuccess($send)));
}
/**
* Send message, response is in JSON format
*/
public function sendJson()
{
$prestudents = $this->input->post('prestudents');
$vorlage_kurzbz = $this->input->post('vorlage_kurzbz');
$oe_kurzbz = $this->input->post('oe_kurzbz');
$msgVars = $this->input->post('msgvars');
$msgVarsData = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudents);
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
$prestudentsData = $this->PrestudentModel->getOrganisationunits($prestudents);
// Adds the organisation unit to each prestudent
if (isEmptyString($oe_kurzbz) && hasData($msgVarsData) && hasData($prestudentsData))
{
$this->CLMessagesModel->addOeToPrestudents($msgVarsData, $prestudentsData);
}
$send = $this->CLMessagesModel->send($msgVarsData, null, $oe_kurzbz, $vorlage_kurzbz, $msgVars);
if (isError($send))
{
$this->outputJsonError(getError($send));
}
else
{
$this->outputJsonSuccess(getData($send));
}
}
/**
* getVorlage
*/
public function getVorlage()
{
$vorlage_kurzbz = $this->input->get('vorlage_kurzbz');
$result = null;
if (!isEmptyString($vorlage_kurzbz))
{
$this->load->model('system/Vorlagestudiengang_model', 'VorlagestudiengangModel');
$this->VorlagestudiengangModel->addOrder('version','DESC');
$result = $this->VorlagestudiengangModel->loadWhere(array('vorlage_kurzbz' => $vorlage_kurzbz));
}
else
{
$result = error('The given vorlage_kurzbz is not valid');
}
if (isError($result) || !hasData($result))
{
$this->outputJsonError(getError($result));
}
else
{
$this->outputJsonSuccess(getData($result));
}
}
/**
* parseMessageText
*/
public function parseMessageText()
{
$person_id = $this->input->get('person_id');
$text = $this->input->get('text');
$parsedText = '';
$data = null;
if (is_numeric($person_id))
{
$data = $this->MessageModel->getMsgVarsDataByPersonId($person_id);
}
else
{
$data = error('The given person_id is not a valid number');
}
if (isError($data) || !hasData($data))
{
$this->outputJsonError(getError($data));
}
else
{
$parsedText = $this->messagelib->parseMessageText($text, $this->CLMessagesModel->replaceKeys((array)getData($data)[0]));
$this->outputJsonSuccess($parsedText);
}
}
/**
* Outputs message data for a message (identified my msg id and receiver id) in JSON format
* @param $msg_id
* @param $receiver_id
*/
public function getMessageFromIds()
{
$msg_id = $this->input->get('msg_id');
$receiver_id = $this->input->get('receiver_id');
$msg = $this->messagelib->getMessage($msg_id, $receiver_id);
$this->output
->set_content_type('application/json')
->set_output(json_encode(array(getData($msg)[0])));
}
}
+1 -1
View File
@@ -269,7 +269,7 @@ class Vorlage extends Auth_Controller
show_error(getError($vorlagetext));
$data = array(
'text' => $this->vorlagelib->parseVorlagetext($vorlagetext->retval[0]->text, $jsonDecodedForm)
'text' => parseText($vorlagetext->retval[0]->text, $jsonDecodedForm)
);
$this->load->view('system/vorlage/templatetextPreview', $data);
@@ -649,7 +649,7 @@ class InfoCenter extends Auth_Controller
public function reloadMessages($person_id)
{
$messages = $this->MessageModel->getMessagesOfPerson($person_id, 1);
$this->load->view('system/messages/messageList.php', array('messages' => $messages->retval));
$this->load->view('system/infocenter/messageList.php', array('messages' => $messages->retval));
}
/**
@@ -0,0 +1,60 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
class FASMessages extends Auth_Controller
{
/**
*
*/
public function __construct()
{
parent::__construct(
array(
'writeTemplate' => 'basis/message:rw',
'writeReplyTemplate' => 'basis/message:rw'
)
);
// Loads model CLMessagesModel which contains the GUI logic
$this->load->model('CL/Messages_model', 'CLMessagesModel');
// Phrases used in loaded views
$this->loadPhrases(
array(
'global',
'ui'
)
);
}
/**
* Writes a new message to a prestudent using templates
*/
public function writeTemplate()
{
$prestudents = $this->input->post('prestudent_id'); // recipients prestudend_id(s)
// Loads the view to write a new message with a template
$this->load->view(
'system/messages/htmlWriteTemplate',
$this->CLMessagesModel->prepareHtmlWriteTemplatePrestudents($prestudents)
);
}
/**
* Writes a reply to a message identified by parameters $message_id and $recipient_id
* The recipient is a prestudent
* Uses templates
*/
public function writeReplyTemplate($message_id, $recipient_id)
{
$prestudents = $this->input->post('prestudent_id'); // recipients prestudend_id(s)
// Loads the view to write a new message with a template
$this->load->view(
'system/messages/htmlWriteTemplate',
$this->CLMessagesModel->prepareHtmlWriteTemplatePrestudents($prestudents, $message_id, $recipient_id)
);
}
}
@@ -0,0 +1,112 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* NOTE: MessageClient extends FHC_Controller and NOT Auth_Controller to be able to use
* the authentication system without the need to load the permissions system
*/
class MessageClient extends FHC_Controller
{
public function __construct()
{
parent::__construct();
// Loads authentication library and starts authentication
// NOTE: it is loaded here because the controller extends FHC_Controller and NOT Auth_Controller
$this->load->library('AuthLib');
// Loads model CLMessagesModel which contains the GUI logic
$this->load->model('CL/Messages_model', 'CLMessagesModel');
// Phrases used in loaded views
$this->loadPhrases(
array(
'global',
'ui'
)
);
}
/**
* Starts the GUI used to read all the personal messages
*/
public function read()
{
// Loads the view to read messages
$this->load->view('system/messages/ajaxRead');
}
/**
* Starts the GUI used to write a personal message to an organisation unit
*/
public function write()
{
// Loads the view to write a message
$this->load->view('system/messages/ajaxWrite', $this->CLMessagesModel->prepareAjaxWrite());
}
/**
* Starts the GUI used to reply to a received personal message
*/
public function writeReply()
{
$token = $this->input->get('token');
// Loads the view to reply to a message
$this->load->view('system/messages/ajaxWriteReply', $this->CLMessagesModel->prepareAjaxWriteReply($token));
}
/**
* Returns JSON that that contains all the received messages by the currently logged user
*/
public function listReceivedMessages()
{
$this->outputJson($this->CLMessagesModel->prepareAjaxReadReceived());
}
/**
* Returns JSON that that contains all the sent messages by the currently logged user
*/
public function listSentMessages()
{
$this->outputJson($this->CLMessagesModel->prepareAjaxReadSent());
}
/**
* Sends a message to an organisation unit
*/
public function sendMessageToOU()
{
$receiverOU = $this->input->post('receiverOU');
$subject = $this->input->post('subject');
$body = $this->input->post('body');
$this->outputJson($this->CLMessagesModel->sendToOrganisationUnit($receiverOU, $subject, $body));
}
/**
* Sends a message to an organisation unit
*/
public function sendMessageReply()
{
$receiver_id = $this->input->post('receiver_id');
$relationmessage_id = $this->input->post('relationmessage_id');
$token = $this->input->post('token');
$subject = $this->input->post('subject');
$body = $this->input->post('body');
$this->outputJson($this->CLMessagesModel->sendReply($receiver_id, $subject, $body, $relationmessage_id, $token));
}
/**
* Set a message as read
*/
public function setMessageRead()
{
$message_id = $this->input->post('message_id');
$statusPersonId = $this->input->post('statusPersonId');
$this->outputJson($this->CLMessagesModel->setMessageRead($message_id, $statusPersonId));
}
}
@@ -0,0 +1,144 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
class Messages extends Auth_Controller
{
public function __construct()
{
parent::__construct(
array(
'writeTemplate' => array('basis/message:rw', 'infocenter:rw'),
'sendImplicitTemplate' => array('basis/message:rw', 'infocenter:rw'),
'sendExplicitTemplateJson' => array('basis/message:rw', 'infocenter:rw'),
'getVorlage' => array('basis/message:r', 'infocenter:r'),
'parseMessageText' => array('basis/message:r', 'infocenter:r'),
'getMessageFromIds' => array('basis/message:r', 'infocenter:r')
)
);
// Loads model CLMessagesModel which contains the GUI logic
$this->load->model('CL/Messages_model', 'CLMessagesModel');
// Phrases used in loaded views
$this->loadPhrases(
array(
'global',
'ui'
)
);
}
// -----------------------------------------------------------------------------------------------------------------
// Methods with HTML output
/**
* Initialize all the parameters used by view system/messages/htmlWriteTemplate
* to build a GUI used to write a messate to user/s using a template
*/
public function writeTemplate()
{
$persons = $this->input->post('person_id');
// Loads the view to write a new message with a template
$this->load->view(
'system/messages/htmlWriteTemplate',
$this->CLMessagesModel->prepareHtmlWriteTemplatePersons($persons)
);
}
/**
* Send a new message or reply to user/s
* If a relationmessage_id this message is a reply to another one
* Body is a template and will be parsed using information present in persons parameter
*/
public function sendImplicitTemplate()
{
$subject = $this->input->post('subject');
$body = $this->input->post('body');
$recipients_ids = $this->input->post('recipients_ids');
$relationmessage_id = $this->input->post('relationmessage_id');
$type = $this->input->post('type');
$sendImplicitTemplate = $this->CLMessagesModel->sendImplicitTemplate($type, $recipients_ids, $subject, $body, $relationmessage_id);
if (isSuccess($sendImplicitTemplate))
{
$this->load->view('system/messages/htmlMessageSentSuccess');
}
else
{
$this->load->view('system/messages/htmlMessageSentError');
}
}
// -----------------------------------------------------------------------------------------------------------------
// Methods with JSON output called by this controller and FASMessages (view system/messages/htmlWriteTemplate)
/**
* Returns an object that represent a template store in database
* If no templates are found with the given parameter or the given parameter is an empty string,
* then an error is returned
*/
public function getVorlage()
{
$vorlage_kurzbz = $this->input->get('vorlage_kurzbz');
$this->outputJson($this->CLMessagesModel->getVorlage($vorlage_kurzbz));
}
/**
* Parse the given given text using data from the given user
* Use the CI parser which performs simple text substitution for pseudo-variable
*/
public function parseMessageText()
{
$receiver_id = $this->input->get('receiver_id');
$text = $this->input->get('text');
$type = $this->input->get('type');
if ($type == Messages_model::TYPE_PERSONS)
{
$this->outputJson($this->CLMessagesModel->parseMessageTextPerson($receiver_id, $text));
}
elseif ($type == Messages_model::TYPE_PRESTUDENTS)
{
$this->outputJson($this->CLMessagesModel->parseMessageTextPrestudent($receiver_id, $text));
}
else
{
$this->outputJsonError('Not a person nor a prestudent was provided');
}
}
// -----------------------------------------------------------------------------------------------------------------
// Methods with JSON output called by infocenter
/**
* Outputs message data for a message (identified my msg id and receiver id) in JSON format
*/
public function getMessageFromIds()
{
$message_id = $this->input->get('msg_id');
$receiver_id = $this->input->get('receiver_id');
$this->outputJson($this->CLMessagesModel->getMessageFromIds($message_id, $receiver_id));
}
/**
* Send a new message
* - The recipients are prestudents
* - An email template with message var may be provided
* - A global organisation unit may be provided, otherwise is used the prestudent one
* - A template is explicitly specified
*/
public function sendExplicitTemplateJson()
{
$prestudents = $this->input->post('prestudents');
$oe_kurzbz = $this->input->post('oe_kurzbz');
$vorlage_kurzbz = $this->input->post('vorlage_kurzbz');
$msgVars = $this->input->post('msgvars');
$sendExplicitTemplate = $this->CLMessagesModel->sendExplicitTemplate($prestudents, $oe_kurzbz, $vorlage_kurzbz, $msgVars);
$this->outputJson(getData($sendExplicitTemplate));
}
}
@@ -0,0 +1,134 @@
<?php
/**
* FH-Complete
*
* @package FHC-API
* @author FHC-Team
* @copyright Copyright (c) 2016, fhcomplete.org
* @license GPLv3
* @link http://fhcomplete.org
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
* Handles sending messages with token
* NOTE: it extends FHC_Controller instead of Auth_Controller because authentication is not needed
*/
class ViewMessage extends FHC_Controller
{
public function __construct()
{
parent::__construct();
// Loading config file message
$this->config->load('message');
// Load model MessageToken_model, not calling the authentication system
$this->load->model('CL/Messages_model', 'CLMessagesModel');
// Phrases used in loaded views
$this->loadPhrases(
array(
'global',
'ui'
)
);
}
/**
* Display a message in read mode only using the specified token
*/
public function toHTML($token)
{
// Loads the view to read a received message using its token as identifier
$this->load->view('system/messages/htmlRead', $this->CLMessagesModel->prepareHtmlRead($token));
}
/**
* Write a reply message to a received one using its token as identifier
*/
public function writeReply()
{
$token = $this->input->get('token'); // gets received message token
// Loads the view to write a reply message
$this->load->view('system/messages/htmlWriteReply', $this->CLMessagesModel->prepareHtmlWriteReply($token));
}
/**
* Send a reply message (no templates are used)
*/
public function sendReply()
{
$subject = $this->input->post('subject');
$body = $this->input->post('body');
$receiver_id = $this->input->post('receiver_id');
$relationmessage_id = $this->input->post('relationmessage_id');
$token = $this->input->post('token');
$sendReply = $this->CLMessagesModel->sendReply($receiver_id, $subject, $body, $relationmessage_id, $token);
if (isSuccess($sendReply))
{
$this->load->view('system/messages/htmlMessageSentSuccess');
}
else
{
$this->load->view('system/messages/htmlMessageSentError');
}
}
/**
* With the given token redirects the user to reply page configured in the config/message.php file
*/
public function redirectByToken($token)
{
// Loads model MessageTokenModel
$this->load->model('system/MessageToken_model', 'MessageTokenModel');
// Retrieves the single message data using the given token
$msg = $this->MessageTokenModel->getMessageByToken($token);
// If it is an error or it does not contain data show an error
if (!hasData($msg)) show_error('MSG-ERR-0001: An error occurred while redirecting, please contact the administrator');
// else
$oe_kurzbz = getData($msg)[0]->oe_kurzbz;
$organisationRoot = null; // by default is null
// If an organisation unit is present in the message tries to retrieve the root organisation unit
// from the one found in the message
if (!isEmptyString($oe_kurzbz))
{
// Retrieves the root organisation unit from the one found in the message
$getOERoot = $this->MessageTokenModel->getOERoot($oe_kurzbz);
// If it is an error or it does not contain data show an error
if (!hasData($getOERoot)) show_error('MSG-ERR-0002: An error occurred while redirecting, please contact the administrator');
// else
$organisationRoot = getData($getOERoot)[0]->oe_kurzbz;
}
// Retrieves the possible redirecting URLs array from configs
$messageRedirectUrls = $this->config->item('message_redirect_url');
// If it is not a valid array then show an error
if (isEmptyArray($messageRedirectUrls)) show_error('MSG-ERR-0003: An error occurred while redirecting, please contact the administrator');
// If this organisation unit root is not configured as an entry in the possible redirecting URLs array,
// then tries to use the default one...
if (!isset($messageRedirectUrls[$organisationRoot]))
{
$organisationRoot = 'fallback';
// ...if even the default one is not present show an error
if (!isset($messageRedirectUrls[$organisationRoot]))
{
show_error('MSG-ERR-0004: An error occurred while redirecting, please contact the administrator');
}
}
// Finally if everything was right then the user can be redirected
redirect($messageRedirectUrls[$organisationRoot] . '?token=' . $token);
}
}
@@ -20,7 +20,6 @@ function getAuthPersonId()
return isLogged() ? ($ci->authlib->getAuthObj())->{AuthLib::AO_PERSON_ID} : null;
}
/**
* If the user is NOT logged then a null value is returned.
* If the user is alredy logged, then it is possible to access to the authentication object
+84 -23
View File
@@ -24,39 +24,54 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
// ------------------------------------------------------------------------
/**
* generateToken() - generates a new token for diffent use
* - reading Messages from external
* - forgotten Password
*
* @return string
* Generates a new token for diffent use cases. Default token length is 64
* - Reading messages
* - Forgotten password
* - etc
* Returns null on failure
*/
function generateToken($length = 64)
{
$token = null;
$firstGeneratedToken = null;
// For PHP 7 you can use random_bytes()
if (function_exists('random_bytes'))
{
$token = base64_encode(random_bytes($length));
//base64 is about 33% longer, so we need to truncate the result
return strtr(substr($token, 0, $length), '+/=', '-_,');
try
{
$firstGeneratedToken = random_bytes($length); // try to generates cryptographically secure pseudo-random bytes...
}
catch (Exception $e) { $firstGeneratedToken = null; } // if fails $firstGeneratedToken is set to null
}
// for PHP >=5.3 and <7
if (function_exists('openssl_random_pseudo_bytes'))
// For PHP >= 5.3 and < 7 and openssl is available
elseif (function_exists('openssl_random_pseudo_bytes'))
{
$token = base64_encode(openssl_random_pseudo_bytes($length, $strong));
// is the token strong enough?
if($strong == true)
return strtr(substr($token, 0, $length), '+/=', '-_,');
$firstGeneratedToken = openssl_random_pseudo_bytes($length, $strong);
// If the token generation ended with errors OR the generated token is NOT strong enough
if ($firstGeneratedToken == false || $strong == false) $firstGeneratedToken = null; // $firstGeneratedToken is set to null
}
//fallback to mt_rand if php < 5.3 or no openssl available
$characters = '0123456789';
$characters .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/+';
$charactersLength = strlen($characters)-1;
$token = '';
//select some random characters
for ($i = 0; $i < $length; $i++)
$token .= $characters[mt_rand(0, $charactersLength)];
if ($firstGeneratedToken != null) // If everything was fine
{
// base64 is about 33% longer, so we need to truncate the result
$token = strtr(substr(base64_encode($firstGeneratedToken), 0, $length), '+/=', '-_,');
}
// Fallback to mt_rand if:
// php < 5.3
// OR no openssl is available
// OR openssl_random_pseudo_bytes used an algorithm that is cryptographically NOT strong
// OR one of the previous methods failed
if ($token == null)
{
$token = ''; // set $token as an empty string
$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/+';
$charactersLength = strlen($characters) - 1;
// Select some random characters
for ($i = 0; $i < $length; $i++) $token .= $characters[mt_rand(0, $charactersLength)];
}
return $token;
}
@@ -225,6 +240,52 @@ function isDateWorkingDay($date, $days = null)
}
}
/**
* Parse the given text using the given data parameter
* Use the CI parser which performs simple text substitution for pseudo-variable
*/
function parseText($text, $data)
{
$ci =& get_instance(); // get CI instance
$ci->load->library('parser'); // Loads CI parser library
return $ci->parser->parse_string($text, $data, true);
}
/**
* Parse the given template using the given data parameter
* Use the CI parser which performs simple text substitution for pseudo-variable
*/
function parseTemplate($template, $data)
{
$ci =& get_instance(); // get CI instance
$ci->load->library('parser'); // Loads CI parser library
return $ci->parser->parse($template, $data, true);
}
/**
* Terminate immediately the execution of the current script.
* If message parameter is given then:
* - logs the given message in CI logs
* - prints the given message to standard output
* Otherwise terminate with the generic error
*/
function terminateWithError($message = null)
{
if (!isEmptyString($message))
{
$ci =& get_instance(); // get CI instance
$ci->load->library('LogLib'); // Loads LogLib
$ci->loglib->logError($message);
exit($message);
}
exit(EXIT_ERROR);
}
/**
* Checks if the current user is logged by checking that the AuthLib is loaded and
* it is present the authentication object in session
+1 -3
View File
@@ -98,9 +98,7 @@ function _parseMailContent($vorlage_kurzbz, $vorlage_data)
!isEmptyString($result->retval[0]->text))
{
// Parses template text
$parsedText = $ci->vorlagelib->parseVorlagetext($result->retval[0]->text, $vorlage_data);
return $parsedText;
return parseText($result->retval[0]->text, $vorlage_data);
}
}
}
+54 -43
View File
@@ -7,6 +7,8 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
*/
class MailLib
{
const ENABLE_DEBUG = 'enable_debug';
private $sended; // Sended email counter
// Properties for storing the configuration
@@ -15,6 +17,8 @@ class MailLib
private $email_time_range;
private $email_from_system;
private $_ci; // Codeigniter instance
/**
* Class constructor
*/
@@ -24,16 +28,16 @@ class MailLib
$this->sended = 0;
// Get CI instance
$this->ci =& get_instance();
$this->_ci =& get_instance();
// The second parameter is used to avoiding name collisions in the config array
$this->ci->config->load('mail', true);
$this->_ci->config->load('mail', true);
// CI Email library
$this->ci->load->library('email');
$this->_ci->load->library('email');
// Initializing email library with the loaded configurations
$this->ci->email->initialize($this->ci->config->config['mail']);
$this->_ci->email->initialize($this->_ci->config->config['mail']);
// Set the configuration properties with the standard configuration values
$this->email_number_to_sent = $this->getEmailCfgItem('email_number_to_sent');
@@ -48,6 +52,22 @@ class MailLib
*/
public function send($from, $to, $subject, $message, $alias = '', $cc = null, $bcc = null, $altMessage = '', $bulk = false, $autogenerated = false)
{
// If it is configured then log mail info into the CI error logs
if ($this->getEmailCfgItem(self::ENABLE_DEBUG) === true)
{
$this->_ci->load->library('LogLib'); // Loads logging library
// Log them all!
$this->_ci->loglib->logError('From: '.$from);
$this->_ci->loglib->logError('To: '.$to);
$this->_ci->loglib->logError('Subject: '.$subject);
$this->_ci->loglib->logError('Message: '.$message);
$this->_ci->loglib->logError('Alias: '.$alias);
$this->_ci->loglib->logError('CC: '.$cc);
$this->_ci->loglib->logError('BCC: '.$bcc);
$this->_ci->loglib->logError('Alternative message: '.$altMessage);
}
// If from is not specified then use the standard one
if (is_null($from) || $from == '')
{
@@ -67,7 +87,7 @@ class MailLib
}
}
$this->ci->email->from($from, $alias);
$this->_ci->email->from($from, $alias);
// Check if the email address of the debug recipient is a valid one
$recipient = $to;
@@ -83,20 +103,20 @@ class MailLib
$recipientBCC = MAIL_DEBUG;
}
$this->ci->email->to($recipient);
if (!is_null($recipientCC)) $this->ci->email->cc($recipientCC);
if (!is_null($recipientBCC)) $this->ci->email->bcc($recipientBCC);
$this->ci->email->subject($subject);
$this->ci->email->message($message);
if (!isEmptyString($altMessage)) $this->ci->email->set_alt_message($altMessage);
$this->_ci->email->to($recipient);
if (!is_null($recipientCC)) $this->_ci->email->cc($recipientCC);
if (!is_null($recipientBCC)) $this->_ci->email->bcc($recipientBCC);
$this->_ci->email->subject($subject);
$this->_ci->email->message($message);
if (!isEmptyString($altMessage)) $this->_ci->email->set_alt_message($altMessage);
if($bulk)
$this->ci->email->set_header('Precedence', 'bulk');
$this->_ci->email->set_header('Precedence', 'bulk');
if($autogenerated)
$this->ci->email->set_header('Auto-Submitted', 'auto-generated');
$this->_ci->email->set_header('Auto-Submitted', 'auto-generated');
// Avoid printing on standard output ugly error messages
$result = @$this->ci->email->send();
$result = @$this->_ci->email->send();
// If the email was succesfully sended then increment the counter
// and checks if it has to wait until the sending of the next
@@ -110,43 +130,34 @@ class MailLib
}
/**
* To ovveride the configurations
* Overrides configuration parameters
* If the given parameters are not null or empty strings then they are used to override
* the following properties of this object:
* - email_number_to_sent
* - email_number_per_time_range
* - email_time_range
* - email_from_system
*/
public function overrideConfigs($cfg)
public function overrideConfigs($numberToSent, $numberPerTimeRange, $emailTimeRange, $emailFromSystem)
{
if (!is_null($cfg))
if (is_numeric($numberToSent)) $this->email_number_to_sent = $numberToSent;
if (is_numeric($numberPerTimeRange)) $this->email_number_per_time_range = $numberPerTimeRange;
if (is_numeric($emailTimeRange)) $this->email_time_range = $emailTimeRange;
if (!isEmptyString($emailFromSystem) && filter_var($emailFromSystem, FILTER_VALIDATE_EMAIL))
{
if (isset($cfg->email_number_to_sent) && is_numeric($cfg->email_number_to_sent))
{
$this->email_number_to_sent = $cfg->email_number_to_sent;
}
if (isset($cfg->email_number_per_time_range) && is_numeric($cfg->email_number_per_time_range))
{
$this->email_number_per_time_range = $cfg->email_number_per_time_range;
}
if (isset($cfg->email_time_range) && is_numeric($cfg->email_time_range))
{
$this->email_time_range = $cfg->email_time_range;
}
if (isset($cfg->email_from_system) && filter_var($cfg->email_from_system, FILTER_VALIDATE_EMAIL))
{
$this->email_from_system = $cfg->email_from_system;
}
$this->email_from_system = $emailFromSystem;
}
}
/**
* Returns the current configuration
* Returns value of property email_number_to_sent
*/
public function getConfigs()
public function getEmailNumberToSent()
{
$cfg = new stdClass();
$cfg->email_number_to_sent = $this->email_number_to_sent;
$cfg->email_number_per_time_range = $this->email_number_per_time_range;
$cfg->email_time_range = $this->email_time_range;
$cfg->email_from_system = $this->email_from_system;
return $cfg;
return $this->email_number_to_sent;
}
/**
@@ -180,6 +191,6 @@ class MailLib
*/
private function getEmailCfgItem($itemName)
{
return $this->ci->config->item($itemName, EMAIL_CONFIG_INDEX);
return $this->_ci->config->item($itemName, EMAIL_CONFIG_INDEX);
}
}
File diff suppressed because it is too large Load Diff
+1 -11
View File
@@ -165,16 +165,6 @@ class PhrasesLib
}
/**
* parseVorlagetext() - will parse a Vorlagetext.
*/
public function parseVorlagetext($text, $data = array())
{
if (isEmptyString($text)) return error('Not a valid text');
return $this->_ci->parser->parse_string($text, $data, true);
}
/**
* Retrieves a phrases from the the property _phrases with the given parameters
* It also replace parameters inside the phrase if they are provided
* @param string $category Category name which is used to categorize the phrase.
@@ -201,7 +191,7 @@ class PhrasesLib
{
if (!is_array($parameters)) $parameters = array(); // if params is not an array
return $this->_ci->parser->parse_string($_phrase->text, $parameters, true); // parsing
return parseText($_phrase->text, $parameters); // parsing
}
}
}
-14
View File
@@ -188,18 +188,4 @@ class VorlageLib
$vorlagetext = $this->ci->VorlageStudiengangModel->update($vorlagestudiengang_id, $data);
return $vorlagetext;
}
/**
* parseVorlagetext() - will parse a Vorlagetext.
*
* @param string $text REQUIRED
* @param array $data REQUIRED
* @return string
*/
public function parseVorlagetext($text, $data = array())
{
if (isEmptyString($text)) return error('Not a valid text');
return $this->ci->parser->parse_string($text, $data, true);
}
}
+757 -112
View File
@@ -1,11 +1,31 @@
<?php
/**
* This model extends CI_Model because here is just implemented logic
* It does not represent a resource (ex. like models that extend DB_Model)
* Messages GUI logic
* - This model extends CI_Model because here is just implemented logic
* - It does not represent a resource (ex. like models that extend DB_Model)
*/
class Messages_model extends CI_Model
{
const REPLY_SUBJECT_PREFIX = 'Re: '; // reply subject prefix
// To quote a reply body message
const REPLY_BODY_FORMAT = '<br>
<br>
<blockquote>
<i>
On %s %s %s wrote:
</i>
</blockquote>
<blockquote style="border-left:2px solid; padding-left: 8px">
%s
</blockquote>';
const NO_AUTH_UID = 'online'; // hard coded uid if no authentication is performed
// Recipients types
const TYPE_PERSONS = 'persons';
const TYPE_PRESTUDENTS = 'prestudents';
/**
* Constructor
*/
@@ -14,159 +34,617 @@ class Messages_model extends CI_Model
parent::__construct();
// Loads the message library
$this->load->library('MessageLib');
$this->load->library('MessageLib'); // MessageModel loaded here!
// Loads the person log library
$this->load->library('PersonLogLib');
// Loads the widget library
$this->load->library('WidgetLib');
// Loads model MessageToken_model
$this->load->model('system/MessageToken_model', 'MessageTokenModel');
// Loads model Benutzerrolle_model
$this->load->model('system/Benutzerrolle_model', 'BenutzerrolleModel');
// Loads model Prestudent_model
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
}
//------------------------------------------------------------------------------------------------------------------
// Public methods
/**
* Executes message sending
* @param $sender_id
* @return array wether execution was successfull - error or success
* Set a message as read by its id ($message_id + $person_id)
*/
public function send($msgVarsData, $relationmessage_id = null, $oe_kurzbz = null, $vorlage_kurzbz = null, $msgVars = null)
public function setMessageRead($message_id, $person_id)
{
$subject = $this->input->post('subject');
$body = $this->input->post('body');
// Checks parameters
if (!is_numeric($message_id) || !is_numeric($person_id)) return error('Invalid setMessageRead parameters');
$authUser = $this->getAuthUser();
// Loads needed models
$this->load->model('system/MsgStatus_model', 'MsgStatusModel');
if (isError($authUser)) return $authUser;
$statuResult = $this->MsgStatusModel->loadWhere(
array(
'message_id' => $message_id,
'person_id' => $person_id,
'status' => MSG_STATUS_READ
)
);
$sender_id = getData($authUser)[0]->person_id;
// Send message(s)
if (hasData($msgVarsData))
if (isError($statuResult)) return $statuResult;
if (!hasData($statuResult))
{
for ($i = 0; $i < count(getData($msgVarsData)); $i++)
{
$parsedText = "";
$msgVarsDataArray = $this->replaceKeys((array)getData($msgVarsData)[$i]); // replaces array keys
// Send without vorlage
if (isEmptyString($vorlage_kurzbz))
{
$parsedText = $this->messagelib->parseMessageText($body, $msgVarsDataArray);
$msg = $this->messagelib->sendMessage($sender_id, $msgVarsDataArray['person_id'], $subject, $parsedText, PRIORITY_NORMAL, $relationmessage_id, $oe_kurzbz);
}
// Send with vorlage
else
{
if (is_array($msgVars))
{
// Additional message variables
foreach ($msgVars as $key => $msgvar)
{
$msgVarsDataArray[$key] = $msgvar;
}
}
$msg = $this->messagelib->sendMessageVorlage($sender_id, $msgVarsDataArray['person_id'], $vorlage_kurzbz, $oe_kurzbz, $msgVarsDataArray);
}
if (isError($msg)) return $msg;
// Write log entry
$personLog = $this->personloglib->log(
$msgVarsDataArray['person_id'],
'Action',
array(
'name' => 'Message sent',
'message' => 'Message sent from person '.$sender_id.' to '.$msgVarsDataArray['person_id'].', messageid '.getData($msg),
'success' => 'true'
),
'kommunikation',
'core',
null,
getAuthUID()
);
if (isError($personLog)) return $personLog;
}
return success('Messages sent successfully');
// Set date used to insert
return $this->MsgStatusModel->insert(
array(
'message_id' => $message_id,
'person_id' => $person_id,
'status' => MSG_STATUS_READ,
'insertvon' => getAuthUID()
)
); // insert and return result
}
else
{
return $msgVarsData;
return success('Already set as read');
}
}
/**
* Send a reply
* Prepares data for the view system/messages/ajaxWrite
*/
public function sendReply($subject, $body, $persons, $relationmessage_id, $token)
public function prepareAjaxWrite()
{
$relationmsg = $this->MessageTokenModel->getMessageByToken($token);
if (!hasData($relationmsg) || $relationmessage_id !== getData($relationmsg)[0]->message_id)
{
show_error('Error while sending reply');
}
$ouResult = $this->PrestudentModel->getOrganisationunitsByPersonId(getAuthPersonId());
// Get sender (receiver of previous msg)
$sender_id = getData($relationmsg)[0]->receiver_id;
if (isError($ouResult)) show_error('An error occurred while loading this page, please contact the site administrator');
// Get message data of persons
$data = $this->MessageTokenModel->getPersonData($persons);
if (hasData($data))
$ouOptions = '<option value="0">Select...</option>';
if (hasData($ouResult))
{
for ($i = 0; $i < count(getData($data)); $i++)
foreach (getData($ouResult) as $ou)
{
$dataArray = (array)getData($data)[$i];
$msg = $this->messagelib->sendMessage($sender_id, $dataArray['person_id'], $subject, $body, PRIORITY_NORMAL, $relationmessage_id, null);
if (isError($msg)) return $msg;
// Logs person data
$personLog = $this->personloglib->log(
$sender_id,
'Action',
array(
'name' => 'Message sent',
'message' => 'Message sent from person '.$sender_id.' to '.$dataArray['person_id'].', messageid '.getData($msg),
'success' => 'true'
),
'kommunikation',
'core',
null,
'online'
$ouOptions .= sprintf(
"\n".'<option value="%s">%s</option>',
is_numeric($ou->prestudent_id) ? $ou->oe_kurzbz : MessageLib::ALT_OE,
$ou->bezeichnung . (is_numeric($ou->prestudent_id) ? '' : ' *')
);
// Unpark bewerber after he sends message
$personLog = $this->personloglib->unPark($sender_id);
if (isError($personLog)) return $personLog;
}
}
return success('Reply sent');
return array('organisationUnitOptions' => $ouOptions);
}
/**
*
* Prepares data for the view system/messages/ajaxWriteReply
*/
public function getAuthUser()
public function prepareAjaxWriteReply($token)
{
$sender_id = null;
if (isEmptyString($token)) show_error('The given token is not valid');
$this->load->model('person/Person_model', 'PersonModel');
$authUser = $this->PersonModel->getByUid(getAuthUID());
// Retrieves message using the given token
$messageResult = $this->MessageTokenModel->getMessageByToken($token);
if (isError($messageResult)) show_error('An error occurred while loading this page, please contact the site administrator');
if (!hasData($authUser)) $authUser = error('The current logged user person_id is not defined');
if (hasData($messageResult))
{
$message = getData($messageResult)[0]; // Found message data
return $authUser;
// Retrieves message sender information
$senderResult = $this->MessageTokenModel->getSenderData($message->sender_id);
if (isError($senderResult)) show_error('An error occurred while loading this page, please contact the site administrator');
if (hasData($senderResult))
{
$sender = getData($senderResult)[0]; // Found sender data
$replySubject = self::REPLY_SUBJECT_PREFIX.$message->subject;
$replyBody = $this->_getReplyBody($message->body, $sender->vorname, $sender->nachname, $message->sent);
return array (
'receiver' => $sender->vorname.' '.$sender->nachname, // yep! the sender of the sent message is the receiver of the reply message
'subject' => $replySubject,
'body' => $replyBody,
'receiver_id' => $message->sender_id,
'relationmessage_id' => $message->message_id,
'token' => $token
);
}
}
}
/**
*
* Prepares data for the view system/messages/ajaxRead
* If everything is fine returns a list of received messages (objects)
*/
public function replaceKeys($data)
public function prepareAjaxReadReceived()
{
// Retrieves received messages for the logged user and its organisation units
$receivedMessagesResult = $this->RecipientModel->getReceivedMessages(
getAuthPersonId(),
$this->config->item(MessageLib::CFG_OU_RECEIVERS)
);
// If an error occurred return it
if (isError($receivedMessagesResult)) return $receivedMessagesResult;
// If data were found
if (hasData($receivedMessagesResult))
{
$jsonArray = array(); // array that contains all the received messages
// Collect'em all in the array $jsonArray
foreach (getData($receivedMessagesResult) as $receivedMessage)
{
$jsonRecord = new stdClass();
$jsonRecord->message_id = $receivedMessage->message_id;
$jsonRecord->subject = $receivedMessage->subject;
$jsonRecord->body = $receivedMessage->body;
$jsonRecord->from = $receivedMessage->vorname.' '.$receivedMessage->nachname;
$sentDate = new DateTime($receivedMessage->sent);
$jsonRecord->sent = $sentDate->format('d/m/Y H:i:s');
$jsonRecord->status = $receivedMessage->status;
$jsonRecord->statusPersonId = $receivedMessage->statuspersonid;
$jsonRecord->token = $receivedMessage->token;
$jsonArray[] = $jsonRecord;
}
return success(json_encode($jsonArray)); // return as an json encoded string
}
return success('No messages were found'); // NOT a blocking error
}
/**
* Prepares data for the view system/messages/ajaxRead
* If everything is fine returns a list of sent messages (objects)
*/
public function prepareAjaxReadSent()
{
// Retrieves sent messages from the logged user
$sentMessagesResult = $this->RecipientModel->getSentMessages(getAuthPersonId());
if (isError($sentMessagesResult)) return $sentMessagesResult; // If an error occurred return it
if (hasData($sentMessagesResult))
{
$jsonArray = array();// array that contains all the sent messages
// Collect'em all in the array $jsonArray
foreach (getData($sentMessagesResult) as $sentMessage)
{
$jsonRecord = new stdClass();
$jsonRecord->message_id = $sentMessage->message_id;
$jsonRecord->subject = $sentMessage->subject;
$jsonRecord->body = $sentMessage->body;
$sentDate = new DateTime($sentMessage->sent);
$jsonRecord->sent = $sentDate->format('d/m/Y H:i:s');
$jsonRecord->status = $sentMessage->status;
$jsonRecord->statusPersonId = $sentMessage->statuspersonid;
$jsonRecord->token = $sentMessage->token;
if ($sentMessage->person_id == $this->config->item(MessageLib::CFG_SYSTEM_PERSON_ID))
{
$jsonRecord->to = $sentMessage->oe;
}
else
{
$jsonRecord->to = $sentMessage->vorname.' '.$sentMessage->nachname;
}
$jsonArray[] = $jsonRecord;
}
return success(json_encode($jsonArray)); // return as an json encoded string
}
return success('No messages were found'); // NOT a blocking error
}
/**
* Prepares data for the view system/messages/htmlRead using a token that identifies a single message
*/
public function prepareHtmlRead($token)
{
if (isEmptyString($token)) show_error('The given token is not valid');
// Retrieves message using the given token
$messageResult = $this->MessageTokenModel->getMessageByToken($token);
if (isError($messageResult)) show_error(getError($messageResult));
if (!hasData($messageResult)) show_error('No message found with the given token');
$message = getData($messageResult)[0]; // Found message data
// Set message as read
$srmsbtResult = $this->MessageTokenModel->setReadMessageStatusByToken($token);
if (isError($srmsbtResult)) show_error(getError($srmsbtResult));
// Retrieves message sender information
$senderResult = $this->MessageTokenModel->getSenderData($message->sender_id);
if (isError($senderResult)) show_error(getError($senderResult));
if (!hasData($senderResult)) show_error('No sender information found');
$sender = getData($senderResult)[0]; // Found sender data
// Check if the receiver is an employee
$isEmployee = false; // not by default
$isEmployeeResult = $this->MessageTokenModel->isEmployee($message->receiver_id);
if (isError($isEmployeeResult)) show_error(getError($isEmployeeResult));
if (hasData($isEmployeeResult)) $isEmployee = true;
// If the sender is not an employee and are present configurations to reply
$hrefReply = '';
if (!$isEmployee && !isEmptyString($this->config->item(MessageLib::CFG_REDIRECT_VIEW_MESSAGE_URL)))
{
$hrefReply = $this->config->item(MessageLib::CFG_MESSAGE_SERVER).
$this->config->item(MessageLib::CFG_REDIRECT_VIEW_MESSAGE_URL).
$token;
}
return array (
'sender' => $sender,
'message' => $message,
'hrefReply' => $hrefReply
);
}
/**
* Prepares data for the view system/messages/htmlWriteReply using a token that identifies a single message
*/
public function prepareHtmlWriteReply($token)
{
if (isEmptyString($token)) show_error('The given token is not valid');
// Retrieves message using the given token
$messageResult = $this->MessageTokenModel->getMessageByToken($token);
if (isError($messageResult)) show_error(getError($messageResult));
if (!hasData($messageResult)) show_error('No message found with the given token');
$message = getData($messageResult)[0]; // Found message data
// Retrieves message sender information
$senderResult = $this->MessageTokenModel->getSenderData($message->sender_id);
if (isError($senderResult)) show_error(getError($senderResult));
if (!hasData($senderResult)) show_error('No sender information found');
$sender = getData($senderResult)[0]; // Found sender data
$replySubject = self::REPLY_SUBJECT_PREFIX.$message->subject;
$replyBody = $this->_getReplyBody($message->body, $sender->vorname, $sender->nachname, $message->sent);
return array (
'receiver' => $sender->vorname.' '.$sender->nachname, // yep! the sender of the sent message is the receiver of the reply message
'subject' => $replySubject,
'body' => $replyBody,
'receiver_id' => $message->sender_id,
'relationmessage_id' => $message->message_id,
'token' => $token
);
}
/**
* Prepares data for the view system/messages/htmlWriteTemplate using person ids as main parameter
* Wrap method to _prepareHtmlWriteTemplate
*/
public function prepareHtmlWriteTemplatePersons($persons, $message_id = null, $recipient_id = null)
{
// Retrieves persons information
$msgVarsData = $this->MessageModel->getMsgVarsDataByPersonId($persons);
return $this->_prepareHtmlWriteTemplate($msgVarsData, $message_id, $recipient_id);
}
/**
* Prepares data for the view system/messages/htmlWriteTemplate using prestudent ids as main parameter
* Wrap method to _prepareHtmlWriteTemplate
*/
public function prepareHtmlWriteTemplatePrestudents($prestudents, $message_id = null, $recipient_id = null)
{
// Retrieves prestudents information
$msgVarsData = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudents);
return $this->_prepareHtmlWriteTemplate($msgVarsData, $message_id, $recipient_id);
}
/**
* Sends a new message or a reply to a message (if $relationmessage_id is given)
* using the template stored in the subject and body
*/
public function sendImplicitTemplate($type, $recipients_ids, $subject, $body, $relationmessage_id = null)
{
// Retrieves the sender id
$sender_id = getAuthPersonId();
if (!is_numeric($sender_id)) show_error('The current logged user person_id is not defined');
$msgVarsData = error('No persons nor prestudents were provided');
// Retrieves message vars data for the given user/s
if ($type == self::TYPE_PERSONS) // if persons were given
{
$msgVarsData = $this->MessageModel->getMsgVarsDataByPersonId($recipients_ids);
}
elseif ($type == self::TYPE_PRESTUDENTS) // otherwise prestudents were given
{
$msgVarsData = $this->MessageModel->getMsgVarsDataByPrestudentId($recipients_ids);
// Retrieve organisation unit for the recipients
$organisationUnitsResult = $this->PrestudentModel->getOrganisationunits($recipients_ids);
if (isError($organisationUnitsResult)) return $organisationUnitsResult;
if (hasData($organisationUnitsResult)) $senderOUArray = getData($organisationUnitsResult);
}
if (isError($msgVarsData)) show_error(getError($msgVarsData));
if (!hasData($msgVarsData)) show_error('No recipients were given');
$senderOU = null; // sender organisation unit only for presetudents
$receiversCounter = 0; // a counter
// Looping on receivers data
foreach (getData($msgVarsData) as $receiver)
{
$msgVarsDataArray = $this->_lowerReplaceSpaceArrayKeys((array)$receiver); // replaces array keys
$parsedSubject = parseText($subject, $msgVarsDataArray);
$parsedBody = parseText($body, $msgVarsDataArray);
// If exist an organisation unit for this prestudent and it is valid
if (isset($senderOUArray[$receiversCounter])
&& isset($senderOUArray[$receiversCounter]->oe_kurzbz)
&& !isEmptyString($senderOUArray[$receiversCounter]->oe_kurzbz))
{
$senderOU = $senderOUArray[$receiversCounter]->oe_kurzbz;
}
else
{
$senderOU = null;
}
$message = $this->messagelib->sendMessageUser(
$msgVarsDataArray['person_id'], // receiverPersonId
$parsedSubject, // subject
$parsedBody, // body
$sender_id, // sender_id
$senderOU, // senderOU
$relationmessage_id, // relationmessage_id
MSG_PRIORITY_NORMAL // priority
);
if (isError($message)) return $message;
if (!hasData($message)) return error('No messages were saved in database');
// Write log entry only if persons were given
if ($type == self::TYPE_PERSONS)
{
$personLog = $this->_personLog($sender_id, $msgVarsDataArray['person_id'], getData($message)[0]);
if (isError($personLog)) return $personLog;
}
$receiversCounter++; // increment the counter
}
return success('Messages sent successfully');
}
/**
* Sends a new message using the given template and information present in parameter prestudents
* Extra variables can be added using parameter $msgVars
*/
public function sendExplicitTemplate($prestudents, $oe_kurzbz, $vorlage_kurzbz, $msgVars)
{
// Retrieves the sender id
$sender_id = getAuthPersonId();
if (!is_numeric($sender_id)) show_error('The current logged user person_id is not defined');
// Retrieves message vars data for the given user/s
$msgVarsData = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudents);
if (isError($msgVarsData)) show_error(getError($msgVarsData));
if (!hasData($msgVarsData)) show_error('No recipients were given');
$prestudentsData = $this->PrestudentModel->getOrganisationunits($prestudents);
// Adds the organisation unit to each prestudent
if (isEmptyString($oe_kurzbz) && hasData($msgVarsData) && hasData($prestudentsData))
{
$this->CLMessagesModel->_addOeToPrestudents($msgVarsData, $prestudentsData);
}
foreach (getData($msgVarsData) as $receiver)
{
$msgVarsDataArray = $this->_lowerReplaceSpaceArrayKeys((array)$receiver); // replaces array keys
// Additional message variables
if (is_array($msgVars)) $msgVarsDataArray = array_merge($msgVarsDataArray, $msgVars);
$message = $this->messagelib->sendMessageUserTemplate(
$msgVarsDataArray['person_id'], // receiversPersonId
$vorlage_kurzbz, // vorlage
$msgVarsDataArray, // parseData
null, // orgform
$sender_id, // sender_id
$oe_kurzbz // senderOU
);
if (isError($message)) return $message;
// Write log entry
$personLog = $this->_personLog($sender_id, $msgVarsDataArray['person_id'], getData($message)[0]);
if (isError($personLog)) return $personLog;
}
return success('Messages sent successfully');
}
/**
* Send a reply to a single recipient for a message identified by a token (no templates are used)
* NOTE: this method could be also called from not authenticated controllers
*/
public function sendReply($receiver_id, $subject, $body, $relationmessage_id, $token)
{
// Retrieves message sender information
$senderResult = $this->MessageTokenModel->getSenderData($receiver_id);
if (isError($senderResult)) show_error(getError($senderResult));
if (!hasData($senderResult)) show_error('No sender information found');
$sender = getData($senderResult)[0]; // Found sender data
$messageResult = $this->MessageTokenModel->getMessageByToken($token);
if (isError($messageResult)) show_error(getError($messageResult));
// Security check! It is possible to reply only to a received message!!
if (!hasData($messageResult) || $relationmessage_id != getData($messageResult)[0]->message_id)
{
show_error('An error occurred while sending your message, please contact the site administrator');
}
// If the user is logged then use its person id as sender id, otherwise get the receiver id of the previous message
$sender_id = isLogged() ? getAuthPersonId() : getData($messageResult)[0]->receiver_id;
if (!is_numeric($sender_id)) return error('The sender id is not valid');
$message = $this->messagelib->sendMessageUser(
$receiver_id, // receiverPersonId
$subject, // subject
$body, // body
$sender_id, // sender_id, the receiver of the previous message is the sender of the current one
null, // senderOU
$relationmessage_id, // relationmessage_id
MSG_PRIORITY_NORMAL // priority
);
if (isError($message)) return $message;
if (!hasData($message)) return error('No messages were saved in database');
// Write log entry
$personLog = $this->_personLog($sender_id, $receiver_id, getData($message)[0]);
if (isError($personLog)) return $personLog;
return success('Messages sent successfully');
}
/**
* Send a message to an organisation unit
*/
public function sendToOrganisationUnit($receiverOU, $subject, $body)
{
if (isEmptyString($receiverOU)) return error('Not a valid organisation unit');
if (isEmptyString($subject)) return error('Subject is an empty string');
if (isEmptyString($body)) return error('Body is an empty string');
$sender_id = getAuthPersonId();
if (!is_numeric($sender_id)) return error('The current logged user person_id is not defined');
$message = $this->messagelib->sendMessageOU(
$receiverOU, // receiverPersonId
$subject, // subject
$body, // body
$sender_id // sender_id
);
if (isError($message)) return $message;
if (!hasData($message)) return error('No messages were saved in database');
// Write log entry
$personLog = $this->_personLog($sender_id, $this->config->item(MessageLib::CFG_SYSTEM_PERSON_ID), getData($message)[0], $receiverOU);
if (isError($personLog)) return $personLog;
return success('Messages sent successfully');
}
//------------------------------------------------------------------------------------------------------------------
// Public methods called by controller system/messages/Messages
/**
* Returns an object that represent a template store in database
* If no templates are found with the given parameter or the given parameter is an empty string,
* then an error is returned
*/
public function getVorlage($vorlage_kurzbz)
{
$getVorlage = error('The given vorlage_kurzbz is not valid');
if (!isEmptyString($vorlage_kurzbz))
{
$this->load->model('system/Vorlagestudiengang_model', 'VorlagestudiengangModel');
$this->VorlagestudiengangModel->addOrder('version','DESC');
$getVorlage = $this->VorlagestudiengangModel->loadWhere(array('vorlage_kurzbz' => $vorlage_kurzbz));
}
return $getVorlage;
}
/**
* Parse the given given text using data from the given user
* Use the CI parser which performs simple text substitution for pseudo-variable
*/
public function parseMessageTextPerson($person_id, $text)
{
$parseMessageText = error('The given person_id is not a valid number');
if (is_numeric($person_id)) $parseMessageText = $this->MessageModel->getMsgVarsDataByPersonId($person_id);
if (hasData($parseMessageText))
{
$parseMessageText = success(
parseText(
$text,
$this->_lowerReplaceSpaceArrayKeys((array)getData($parseMessageText)[0])
)
);
}
return $parseMessageText;
}
/**
* Parse the given given text using data from the given user
* Use the CI parser which performs simple text substitution for pseudo-variable
*/
public function parseMessageTextPrestudent($prestudent_id, $text)
{
$parseMessageText = error('The given prestudent_id is not a valid number');
if (is_numeric($prestudent_id)) $parseMessageText = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudent_id);
if (hasData($parseMessageText))
{
$parseMessageText = success(
parseText(
$text,
$this->_lowerReplaceSpaceArrayKeys((array)getData($parseMessageText)[0])
)
);
}
return $parseMessageText;
}
/**
* Outputs message data for a message (identified my msg id and receiver id) in JSON format
*/
public function getMessageFromIds($message_id, $receiver_id)
{
$getMessageFromIds = error('The given message id or receiver id are not valid');
if (is_numeric($message_id) && is_numeric($receiver_id))
{
$getMessageFromIds = $this->messagelib->getMessage($message_id, $receiver_id);
}
if (isError($getMessageFromIds) || !hasData($getMessageFromIds))
{
return array();
}
else
{
return array(getData($getMessageFromIds)[0]);
}
}
//------------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Replaces data array keys to a lowercase string with underscores instead of spaces
*/
private function _lowerReplaceSpaceArrayKeys($data)
{
$tmpData = array();
// Replaces data array keys to a lowercase without spaces string
foreach ($data as $key => $val)
{
$tmpData[str_replace(' ', '_', strtolower($key))] = $val;
@@ -176,9 +654,9 @@ class Messages_model extends CI_Model
}
/**
*
* Add organisation unit to an array of prestudents (objects)
*/
public function addOeToPrestudents(&$msgVarsData, $prestudentsData)
private function _addOeToPrestudents(&$msgVarsData, $prestudentsData)
{
for ($i = 0; $i < count(getData($msgVarsData)); $i++)
{
@@ -192,4 +670,171 @@ class Messages_model extends CI_Model
}
}
}
/**
* Perform a person log after a message is sent
*/
private function _personLog($sender_id, $receiver_id, $message_id, $receiverOU = null)
{
// In case the message is accessed via ViewMessage controller -> no authentication
// If no authentication is performed then use a hard coded uid
$loggedUserUID = isLogged() ? getAuthUID() : self::NO_AUTH_UID;
$message = 'Message sent from person '.$sender_id.' to '.$receiver_id.', message id: '.$message_id;
if (!isEmptyString($receiverOU)) $message .= ', receiverOU: '.$receiverOU;
return $this->personloglib->log(
$receiver_id,
'Action',
array(
'name' => 'Message sent',
'message' => $message,
'success' => 'true'
),
'kommunikation',
'core',
null,
$loggedUserUID
);
}
/**
* Quotes the previous message body
*/
private function _getReplyBody($body, $receiverName, $receiverSurname, $sentDate)
{
return sprintf(
self::REPLY_BODY_FORMAT,
date_format(date_create($sentDate), 'd.m.Y H:i'), $receiverName, $receiverSurname, $body
);
}
/**
* Prepares data for the view system/messages/htmlWriteTemplate using the given parameters
*/
private function _prepareHtmlWriteTemplate($info, $message_id, $recipient_id)
{
// Checks that info parameter is valid
if (isError($info)) show_error(getError($info));
if (!hasData($info)) show_error('No recipients were given');
// If the message id and recipient id are given, then both they must be valid numbers
if ((is_numeric($message_id) && !is_numeric($recipient_id))
|| (!is_numeric($message_id) && is_numeric($recipient_id)))
{
show_error('If given, message id and recipient id both must be valid numbers');
}
// ---------------------------------------------------------------------------------------
// Retrieves the recipients information and builds:
// - recipientsArray: an array that contains objects with id (person_id) and description (Vorname + Nachname) of recipient
// - recipientsList: a string that contains all the recipients descriptions (Vorname + Nachname) separated by ;
// - persons: a string that contains HTML input hidden with alla the receivers id (person_id)
$recipientsArray = array();
$recipientsList = '';
$recipients_ids = '';
foreach (getData($info) as $receiver)
{
$id = 0;
$recipient = new stdClass();
$recipient->description = $receiver->Vorname.' '.$receiver->Nachname;
$recipientsList .= $receiver->Vorname.' '.$receiver->Nachname.'; ';
// If it is a prestudent then
if (isset($receiver->prestudent_id) && is_numeric($receiver->prestudent_id))
{
$recipient->id = $receiver->prestudent_id;
$id = $receiver->prestudent_id;
}
else // otherwise it is a person
{
$recipient->id = $receiver->person_id;
$id = $receiver->person_id;
}
$recipients_ids .= '<input type="hidden" name="recipients_ids[]" value="'.$id.'">'."\n";
$recipientsArray[] = $recipient;
}
// ---------------------------------------------------------------------------------------
// Retrieves the message to reply to, if it is specified by parameters $message_id and $recipient_id
$replySubject = ''; // message reply subject
$replyBody = ''; // message reply body
$relationmessage = ''; // input hidden that contains the message id to be replied to
// If both are given and they are valid
if (is_numeric($message_id) && is_numeric($recipient_id))
{
// Retrieves a received message from tbl_msg_recipient
$messageResult = $this->messagelib->getMessage($message_id, $recipient_id);
if (isError($messageResult)) show_error(getError($messageResult));
if (!hasData($messageResult)) show_error('The selected message does not exist');
$message = getData($messageResult)[0];
$replySubject = self::REPLY_SUBJECT_PREFIX.$message->subject;
$replyBody = $this->_getReplyBody($message->body, $receiver->Vorname, $receiver->Nachname, $message->sent);
$relationmessage = '<input type="hidden" name="relationmessage_id" value="'.$message_id.'">';
}
// ---------------------------------------------------------------------------------------
// Retrieves message vars from database view vw_msg_vars/vw_msg_vars_person
$variablesResult = null;
$type = '';
// If data contains a prestudent id
// NOTE:
// - info is checked at the beginning of this method so it is safe to use getData($info)[0]
// - the provided data inside info are all persons or all prestudents, so it is safe to check only the first one
if (isset(getData($info)[0]->prestudent_id) && is_numeric(getData($info)[0]->prestudent_id))
{
$variablesResult = $this->messagelib->getMessageVarsPrestudent();
$type = '<input type="hidden" id="type" name="type" value="'.self::TYPE_PRESTUDENTS.'">';
}
else
{
$variablesResult = $this->messagelib->getMessageVarsPerson();
$type = '<input type="hidden" id="type" name="type" value="'.self::TYPE_PERSONS.'">';
}
if (isError($variablesResult)) show_error(getError($variablesResult));
// Then builds an array that contains objects with id (person_id) and description (Vorname + Nachname) of recipient
$variables = array();
foreach (getData($variablesResult) as $id => $description)
{
$tmpVar = new stdClass();
$tmpVar->id = $id;
$tmpVar->description = $description;
$variables[] = $tmpVar;
}
// ---------------------------------------------------------------------------------------
// Retrieves the sender id
$sender_id = getAuthPersonId();
if (!is_numeric($sender_id)) show_error('The current logged user person_id is not defined');
// ---------------------------------------------------------------------------------------
// Organisation units and a boolean (true if the sender is administrator) are used to get the templates
$organisationUnits = $this->messagelib->getOeKurzbz($sender_id);
if (isError($organisationUnits)) show_error(getError($organisationUnits));
$senderIsAdmin = $this->BenutzerrolleModel->isAdminByPersonId($sender_id);
if (isError($senderIsAdmin)) show_error(getError($senderIsAdmin));
// ---------------------------------------------------------------------------------------
// Returns data as an array
return array (
'recipientsList' => $recipientsList,
'subject' => $replySubject,
'body' => $replyBody,
'variables' => $variables,
'organisationUnits' => getData($organisationUnits),
'senderIsAdmin' => getData($senderIsAdmin),
'recipientsArray' => $recipientsArray,
'recipients_ids' => $recipients_ids,
'relationmessage_id' => $relationmessage,
'type' => $type
);
}
}
@@ -521,4 +521,35 @@ class Prestudent_model extends DB_Model
}
}
}
/**
* Get organisation units for all the prestudents of a person
*/
public function getOrganisationunitsByPersonId($person_id)
{
$query = 'SELECT o.oe_kurzbz,
o.bezeichnung,
(CASE
WHEN sg.typ = \'b\' THEN ps.prestudent_id
WHEN sg.typ = \'m\' THEN p.prestudent_id
ELSE NULL
END) AS prestudent_id
FROM public.tbl_prestudent p
JOIN public.tbl_studiengang sg USING(studiengang_kz)
JOIN public.tbl_organisationseinheit o USING(oe_kurzbz)
LEFT JOIN (
SELECT prestudent_id
FROM public.tbl_prestudentstatus
WHERE status_kurzbz = \'Bewerber\'
) ps USING(prestudent_id)
WHERE p.person_id = ?
GROUP BY o.oe_kurzbz,
o.bezeichnung,
sg.typ,
ps.prestudent_id,
p.prestudent_id
ORDER BY o.bezeichnung';
return $this->execQuery($query, array($person_id));
}
}
@@ -18,4 +18,19 @@ class Benutzer_model extends DB_Model
return $this->loadWhere(array('person_id' => $person_id, 'aktiv' => true));
}
/**
*
*/
public function getActiveUserByPersonIdAndOrganisationUnit($person_id, $oe_kurzbz)
{
$sql = 'SELECT b.uid
FROM public.tbl_benutzer b
JOIN public.tbl_prestudent ps USING (person_id)
JOIN public.tbl_studiengang sg USING (studiengang_kz)
WHERE ps.person_id = ?
AND sg.oe_kurzbz = ?
AND b.aktiv = TRUE';
return $this->execQuery($sql, array($person_id, $oe_kurzbz));
}
}
+28 -13
View File
@@ -8,17 +8,17 @@ class Kontakt_model extends DB_Model
public function __construct()
{
parent::__construct();
$this->dbTable = "public.tbl_kontakt";
$this->pk = "kontakt_id";
$this->dbTable = 'public.tbl_kontakt';
$this->pk = 'kontakt_id';
}
public function getWholeKontakt($kontakt_id, $person_id = null, $kontakttyp = null)
{
$result = null;
$this->addJoin("public.tbl_standort", "standort_id", "LEFT");
$this->addJoin("public.tbl_firma", "firma_id", "LEFT");
$this->addJoin('public.tbl_standort', 'standort_id', 'LEFT');
$this->addJoin('public.tbl_firma', 'firma_id', 'LEFT');
if (isset($kontakt_id))
{
$result = $this->load($kontakt_id);
@@ -26,22 +26,37 @@ class Kontakt_model extends DB_Model
else
{
$parametersArray = array();
if (!is_null($person_id))
{
$parametersArray["person_id"] = $person_id;
$parametersArray['person_id'] = $person_id;
}
if (!is_null($kontakttyp))
{
$parametersArray["kontakttyp"] = $kontakttyp;
$parametersArray['kontakttyp'] = $kontakttyp;
}
if (count($parametersArray) > 0)
{
$result = $this->loadWhere($parametersArray);
}
}
return $result;
}
}
/**
*
*/
public function getContactByPersonId($person_id, $kontakttyp)
{
$sql = 'SELECT kontakt
FROM public.tbl_kontakt
WHERE zustellung = TRUE
AND person_id = ?
AND kontakttyp = ?
ORDER BY updateamum, insertamum';
return $this->execQuery($sql, array($person_id, $kontakttyp));
}
}
@@ -136,24 +136,6 @@ class MessageToken_model extends DB_Model
return $this->execQuery($sql, array($person_id));
}
/**
* Get data of a person
*/
public function getPersonData($person_id)
{
$sql = 'SELECT person_id,
vorname as "Vorname",
nachname as "Nachname",
anrede as "Anrede",
titelpost as "TitelPost",
titelpre as "TitelPre",
vornamen as "Vornamen"
FROM public.tbl_person
WHERE person_id %s ?';
return $this->execQuery(sprintf($sql, is_array($person_id) ? 'IN' : '='), array($person_id));
}
/**
* Searchs for a person by its person_id and checks if it is an employee
*/
+148 -20
View File
@@ -25,7 +25,8 @@ class Recipient_model extends DB_Model
ks.kontakt,
p.nachname,
p.vorname,
b.uid
b.uid,
mr.sent
FROM public.tbl_msg_recipient mr INNER JOIN public.tbl_msg_message mm USING (message_id)
INNER JOIN public.tbl_person p ON (mm.person_id = p.person_id)
LEFT JOIN public.tbl_benutzer b ON (mr.person_id = b.person_id)
@@ -56,11 +57,13 @@ class Recipient_model extends DB_Model
m.oe_kurzbz,
s.status,
s.statusinfo,
s.insertamum as statusamum
s.insertamum as statusamum,
b.uid
FROM public.tbl_msg_recipient r JOIN public.tbl_msg_message m USING (message_id)
JOIN (
SELECT * FROM public.tbl_msg_status WHERE status < ? ORDER BY insertamum DESC, status DESC
) s ON (r.message_id = s.message_id AND r.person_id = s.person_id)
) s ON (r.message_id = s.message_id AND r.person_id = s.person_id),
LEFT JOIN public.tbl_benutzer b USING(person_id)
WHERE r.token = ?
LIMIT 1';
@@ -205,7 +208,7 @@ class Recipient_model extends DB_Model
* @param limit specifies the number of messages to get
* @param message_id specifies a single message
*/
public function getMessages($kontaktType, $sent, $limit = null, $message_id = null)
public function getMessages($kontaktType, $message_id = null, $limit = 1)
{
$query = 'SELECT mm.message_id,
ks.kontakt as sender,
@@ -216,13 +219,14 @@ class Recipient_model extends DB_Model
mr.token,
mm.subject,
mm.body,
mr.sentinfo
mr.sentinfo,
mr.oe_kurzbz
FROM public.tbl_msg_recipient mr INNER JOIN public.tbl_msg_message mm USING (message_id)
LEFT JOIN (
SELECT person_id, kontakt FROM public.tbl_kontakt WHERE kontakttyp = ?
SELECT person_id, kontakt FROM public.tbl_kontakt WHERE zustellung = true AND kontakttyp = ?
) ks ON (ks.person_id = mm.person_id)
LEFT JOIN (
SELECT person_id, kontakt FROM public.tbl_kontakt WHERE kontakttyp = ?
SELECT person_id, kontakt FROM public.tbl_kontakt WHERE zustellung = true AND kontakttyp = ?
) kr ON (kr.person_id = mr.person_id)
LEFT JOIN (
SELECT b.person_id,
@@ -235,21 +239,12 @@ class Recipient_model extends DB_Model
m.mitarbeiter_uid
FROM public.tbl_benutzer b INNER JOIN public.tbl_mitarbeiter m ON(b.uid = m.mitarbeiter_uid)
WHERE b.aktiv = TRUE
) ms ON (ms.person_id = mm.person_id)';
) ms ON (ms.person_id = mm.person_id)
WHERE mr.sent IS NULL';
$parametersArray = array($kontaktType, $kontaktType);
if (is_null($sent) || $sent == '')
{
$query .= ' WHERE mr.sent IS NULL';
}
else
{
array_push($parametersArray, $sent);
$query .= ' WHERE mr.sent = ?';
}
if (!is_null($message_id))
if (is_numeric($message_id))
{
array_push($parametersArray, $message_id);
$query .= ' AND mm.message_id = ?';
@@ -257,7 +252,7 @@ class Recipient_model extends DB_Model
$query .= ' ORDER BY mr.insertamum ASC';
if (!is_null($limit))
if (is_numeric($limit))
{
$query .= ' LIMIT ?';
array_push($parametersArray, $limit);
@@ -307,4 +302,137 @@ class Recipient_model extends DB_Model
return $this->execQuery($sql, $parametersArray);
}
/**
* - Gets the directly recieved messages using the given person id
* - Gets the recieved messages from an organisation unit where this person plays a role given by the parameter functions
*/
public function getReceivedMessages($person_id, $functions)
{
$sql = '-- Messages sent directly to the person
SELECT mr.message_id,
mm.relationmessage_id,
mm.subject,
mm.body,
mm.insertamum AS sent,
p.vorname,
p.nachname,
MAX(ms.status) AS status,
ms.person_id AS statusPersonId,
mr.token
FROM public.tbl_msg_recipient mr
JOIN public.tbl_msg_message mm ON (mm.message_id = mr.message_id)
JOIN public.tbl_msg_status ms ON (ms.message_id = mr.message_id AND ms.person_id = mr.person_id)
JOIN public.tbl_person p ON (p.person_id = mm.person_id)
WHERE mr.person_id = ?
GROUP BY mr.message_id,
mm.relationmessage_id,
mm.subject,
mm.body,
mm.insertamum,
p.vorname,
p.nachname,
ms.person_id,
mr.token
UNION
-- Messages sent to a person that belongs to the recipient organisation unit
SELECT mrou.message_id,
mm.relationmessage_id,
mm.subject,
mm.body,
mm.insertamum AS sent,
pr.vorname,
pr.nachname,
MAX(ms.status) AS status,
ms.person_id AS statusPersonId,
mrou.token
FROM public.tbl_person p
JOIN public.tbl_benutzer b ON (b.person_id = p.person_id)
JOIN (
SELECT uid, oe_kurzbz
FROM public.tbl_benutzerfunktion
WHERE (datum_von IS NULL OR datum_von <= NOW())
AND (datum_bis IS NULL OR datum_bis >= NOW())
AND funktion_kurzbz IN ?
) bf ON (bf.uid = b.uid)
JOIN public.tbl_msg_recipient mrou ON (mrou.oe_kurzbz = bf.oe_kurzbz)
JOIN public.tbl_msg_message mm ON (mm.message_id = mrou.message_id)
JOIN public.tbl_msg_status ms ON (ms.message_id = mrou.message_id AND ms.person_id = mrou.person_id)
JOIN public.tbl_person pr ON (pr.person_id = mm.person_id)
WHERE p.person_id = ?
GROUP BY mrou.message_id,
mm.relationmessage_id,
mm.subject,
mm.body,
mm.insertamum,
pr.vorname,
pr.nachname,
ms.person_id,
mrou.token
ORDER BY sent DESC';
return $this->execQuery($sql, array($person_id, $functions, $person_id));
}
/**
* Gets all the sent message by the given person
*/
public function getSentMessages($person_id)
{
$sql = 'SELECT mm.message_id,
mm.relationmessage_id,
mm.subject,
mm.body,
mm.insertamum AS sent,
p.person_id,
p.vorname,
p.nachname,
MAX(ms.status) AS status,
ms.person_id AS statusPersonId,
oe.bezeichnung AS oe,
mr.token
FROM public.tbl_msg_message mm
JOIN public.tbl_msg_recipient mr ON (mr.message_id = mm.message_id)
JOIN public.tbl_msg_status ms ON (ms.message_id = mm.message_id AND ms.person_id = mr.person_id)
JOIN public.tbl_person p ON (p.person_id = mr.person_id)
LEFT JOIN public.tbl_organisationseinheit oe ON (oe.oe_kurzbz = mr.oe_kurzbz)
WHERE mm.person_id = ?
GROUP BY mm.message_id,
mm.relationmessage_id,
mm.subject,
mm.body,
mm.insertamum,
p.person_id,
p.vorname,
p.nachname,
ms.person_id,
oe.bezeichnung,
mr.token
ORDER BY sent DESC';
return $this->execQuery($sql, array($person_id));
}
/**
*
*/
public function getMessagesById($messageIds)
{
$sql = 'SELECT mm.message_id,
mm.person_id AS sender_id,
mm.subject,
mm.body,
mm.relationmessage_id,
mm.oe_kurzbz AS sender_ou,
mr.person_id AS receiver_id,
mr.token,
mr.sent,
mr.sentinfo,
mr.oe_kurzbz AS receiver_ou
FROM public.tbl_msg_message mm
JOIN public.tbl_msg_recipient mr ON (mr.message_id = mm.message_id)
WHERE mm.message_id IN ?';
return $this->execQuery($sql, array($messageIds));
}
}
+89 -89
View File
@@ -1,89 +1,89 @@
<?php
$this->load->view('templates/header', array('title' => 'StatusEdit'));
$s = $status;
?>
<div class="row">
<div class="span4">
<h2>Status: <?php echo $s->status_kurzbz; ?></h2>
<form method="post" action="../saveStatus">
<table>
<tr>
<td colspan="2">
beschreibung:<br/><br/>
<input type="text" name="beschreibung" value="<?php echo $s->beschreibung; ?>" /><br/>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2">
Anmerkung:<br/><br/>
<textarea name="anmerkung"><?php echo $s->anmerkung; ?></textarea><br/>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2">
Bezeichnung mehrsprachig:<br/><br/>
<?php
$val = '';
$i = 0;
?>
<?php foreach ($sprache as $sp): ?>
<?php echo $sp->sprache; ?>:<br/>
<?php
if (!isset($s->bezeichnung_mehrsprachig[$i]))
{
$val = '';
}
else
{
$val = $s->bezeichnung_mehrsprachig[$i];
}
$i++;
?>
<input type="text" name="bezeichnung_mehrsprachig[]" value="<?php echo $val; ?>" /><br/>
<?php endforeach ?>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2" align="center">
<button type="submit">Save</button>
</td>
</tr>
</table>
<input type="hidden" name="status_kurzbz" value="<?php echo $s->status_kurzbz; ?>" />
</form>
</div>
</div>
</body>
<?php
if (!is_null($update))
{
?>
<script>
parent.document.getElementById("StatusgrundLeft").contentWindow.location.reload(true);
</script>
<?php
}
?>
</html>
<?php
$this->load->view('templates/header', array('title' => 'StatusEdit'));
$s = $status;
?>
<div class="row">
<div class="span4">
<h2>Status: <?php echo $s->status_kurzbz; ?></h2>
<form method="post" action="../saveStatus">
<table>
<tr>
<td colspan="2">
beschreibung:<br/><br/>
<input type="text" name="beschreibung" value="<?php echo $s->beschreibung; ?>" /><br/>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2">
Anmerkung:<br/><br/>
<textarea name="anmerkung"><?php echo $s->anmerkung; ?></textarea><br/>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2">
Bezeichnung mehrsprachig:<br/><br/>
<?php
$val = '';
$i = 0;
?>
<?php foreach ($sprache as $sp): ?>
<?php echo $sp->sprache; ?>:<br/>
<?php
if (!isset($s->bezeichnung_mehrsprachig[$i]))
{
$val = '';
}
else
{
$val = $s->bezeichnung_mehrsprachig[$i];
}
$i++;
?>
<input type="text" name="bezeichnung_mehrsprachig[]" value="<?php echo $val; ?>" /><br/>
<?php endforeach ?>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2" align="center">
<button type="submit">Save</button>
</td>
</tr>
</table>
<input type="hidden" name="status_kurzbz" value="<?php echo $s->status_kurzbz; ?>" />
</form>
</div>
</div>
</body>
<?php
if (!is_null($update))
{
?>
<script>
parent.document.getElementById("StatusgrundLeft").contentWindow.location.reload(true);
</script>
<?php
}
?>
</html>
+32 -32
View File
@@ -1,32 +1,32 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<html lang="de_AT">
<head>
<title>VileSci - Statusgrund</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<frameset cols="30%, *">
<frame src="Statusgrund/listStatus" id="StatusgrundLeft" name="StatusgrundLeft" frameborder="1" />
<noframes>
<body bgcolor="#FFFFFF">
This application works only with a frames-enabled browser.<br />
</body>
</noframes>
<frameset rows="30%, *">
<frame src="" id="StatusgrundTop" name="StatusgrundTop" frameborder="1" />
<noframes>
<body bgcolor="#FFFFFF">
This application works only with a frames-enabled browser.<br />
</body>
</noframes>
<frame src="" id="StatusgrundBottom" name="StatusgrundBottom" frameborder="1" />
<noframes>
<body bgcolor="#FFFFFF">
This application works only with a frames-enabled browser.<br />
</body>
</noframes>
</frameset>
</frameset>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<html lang="de_AT">
<head>
<title>VileSci - Statusgrund</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<frameset cols="30%, *">
<frame src="Statusgrund/listStatus" id="StatusgrundLeft" name="StatusgrundLeft" frameborder="1" />
<noframes>
<body bgcolor="#FFFFFF">
This application works only with a frames-enabled browser.<br />
</body>
</noframes>
<frameset rows="30%, *">
<frame src="" id="StatusgrundTop" name="StatusgrundTop" frameborder="1" />
<noframes>
<body bgcolor="#FFFFFF">
This application works only with a frames-enabled browser.<br />
</body>
</noframes>
<frame src="" id="StatusgrundBottom" name="StatusgrundBottom" frameborder="1" />
<noframes>
<body bgcolor="#FFFFFF">
This application works only with a frames-enabled browser.<br />
</body>
</noframes>
</frameset>
</frameset>
</html>
+107 -107
View File
@@ -1,107 +1,107 @@
<?php
$this->load->view('templates/header', array('title' => 'StatusgrundEdit'));
$sg = $statusgrund;
?>
<div class="row">
<div class="span4">
<h2>Statusgrund: <?php echo $sg->status_kurzbz; ?></h2>
<form method="post" action="<?php echo site_url("crm/Statusgrund/saveGrund"); ?>">
<table>
<tr>
<td colspan="2">
Bezeichnung mehrsprachig:<br/><br/>
<?php
$i = 0;
$val = "";
?>
<?php foreach ($sprache as $s): ?>
<?php echo $s->sprache; ?>:<br/>
<?php
if (!isset($sg->bezeichnung_mehrsprachig[$i]))
{
$val = "";
}
else
{
$val = $sg->bezeichnung_mehrsprachig[$i];
}
$i++;
?>
<input type="text" name="bezeichnung_mehrsprachig[]" value="<?php echo $val; ?>" /><br/>
<?php endforeach ?>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2">
Beschreibung:<br/><br/>
<?php
$i = 0;
$val = "";
?>
<?php foreach ($sprache as $s): ?>
<?php echo $s->sprache; ?>:<br/>
<?php
if (!isset($sg->beschreibung[$i]))
{
$val = "";
}
else
{
$val = $sg->beschreibung[$i];
}
$i++;
?>
<textarea name="beschreibung[]"><?php echo $val; ?></textarea><br/>
<?php endforeach ?>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td>
Aktiv:
</td>
<td>
<input type="checkbox" name="aktiv" <?php echo isset($sg->aktiv) && $sg->aktiv === true ? "checked" : ""; ?> />
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2" align="center">
<button type="submit">Save</button>
</td>
</tr>
</table>
<input type="hidden" name="statusgrund_id" value="<?php echo isset($sg->statusgrund_id) ? $sg->statusgrund_id : ""; ?>" />
</form>
</div>
</div>
</body>
<?php
if (!is_null($update))
{
?>
<script>
parent.document.getElementById("StatusgrundTop").contentWindow.location.reload(true);
</script>
<?php
}
?>
</html>
<?php
$this->load->view('templates/header', array('title' => 'StatusgrundEdit'));
$sg = $statusgrund;
?>
<div class="row">
<div class="span4">
<h2>Statusgrund: <?php echo $sg->status_kurzbz; ?></h2>
<form method="post" action="<?php echo site_url("crm/Statusgrund/saveGrund"); ?>">
<table>
<tr>
<td colspan="2">
Bezeichnung mehrsprachig:<br/><br/>
<?php
$i = 0;
$val = "";
?>
<?php foreach ($sprache as $s): ?>
<?php echo $s->sprache; ?>:<br/>
<?php
if (!isset($sg->bezeichnung_mehrsprachig[$i]))
{
$val = "";
}
else
{
$val = $sg->bezeichnung_mehrsprachig[$i];
}
$i++;
?>
<input type="text" name="bezeichnung_mehrsprachig[]" value="<?php echo $val; ?>" /><br/>
<?php endforeach ?>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2">
Beschreibung:<br/><br/>
<?php
$i = 0;
$val = "";
?>
<?php foreach ($sprache as $s): ?>
<?php echo $s->sprache; ?>:<br/>
<?php
if (!isset($sg->beschreibung[$i]))
{
$val = "";
}
else
{
$val = $sg->beschreibung[$i];
}
$i++;
?>
<textarea name="beschreibung[]"><?php echo $val; ?></textarea><br/>
<?php endforeach ?>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td>
Aktiv:
</td>
<td>
<input type="checkbox" name="aktiv" <?php echo isset($sg->aktiv) && $sg->aktiv === true ? "checked" : ""; ?> />
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2" align="center">
<button type="submit">Save</button>
</td>
</tr>
</table>
<input type="hidden" name="statusgrund_id" value="<?php echo isset($sg->statusgrund_id) ? $sg->statusgrund_id : ""; ?>" />
</form>
</div>
</div>
</body>
<?php
if (!is_null($update))
{
?>
<script>
parent.document.getElementById("StatusgrundTop").contentWindow.location.reload(true);
</script>
<?php
}
?>
</html>
+66 -66
View File
@@ -1,66 +1,66 @@
<?php
$this->load->view('templates/header', array('title' => 'StatusgrundNew'));
?>
<div class="row">
<div class="span4">
<h2>Neuer Statusgrund</h2>
<form method="post" action="<?php echo site_url("crm/Statusgrund/insGrund"); ?>">
<table>
<tr>
<td colspan="2">
Bezeichnung mehrsprachig:<br/><br/>
<?php foreach ($sprache as $s): ?>
<?php echo $s->sprache; ?>:<br/>
<input type="text" name="bezeichnung_mehrsprachig[]" value="" /><br/>
<?php endforeach ?>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2">
Beschreibung:<br/><br/>
<?php foreach ($sprache as $s): ?>
<?php echo $s->sprache; ?>:<br/>
<textarea name="beschreibung[]"></textarea><br/>
<?php endforeach ?>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td>
Aktiv:
</td>
<td>
<input type="checkbox" name="aktiv" />
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2" align="center">
<button type="submit">Save</button>
</td>
</tr>
</table>
<input type="hidden" name="status_kurzbz" value="<?php echo $status_kurzbz; ?>" />
</form>
</div>
</div>
</body>
</html>
<?php
$this->load->view('templates/header', array('title' => 'StatusgrundNew'));
?>
<div class="row">
<div class="span4">
<h2>Neuer Statusgrund</h2>
<form method="post" action="<?php echo site_url("crm/Statusgrund/insGrund"); ?>">
<table>
<tr>
<td colspan="2">
Bezeichnung mehrsprachig:<br/><br/>
<?php foreach ($sprache as $s): ?>
<?php echo $s->sprache; ?>:<br/>
<input type="text" name="bezeichnung_mehrsprachig[]" value="" /><br/>
<?php endforeach ?>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2">
Beschreibung:<br/><br/>
<?php foreach ($sprache as $s): ?>
<?php echo $s->sprache; ?>:<br/>
<textarea name="beschreibung[]"></textarea><br/>
<?php endforeach ?>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td>
Aktiv:
</td>
<td>
<input type="checkbox" name="aktiv" />
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2" align="center">
<button type="submit">Save</button>
</td>
</tr>
</table>
<input type="hidden" name="status_kurzbz" value="<?php echo $status_kurzbz; ?>" />
</form>
</div>
</div>
</body>
</html>
+150 -150
View File
@@ -1,150 +1,150 @@
<?php $this->load->view("templates/header", array("title" => "UDF", "widgetsCSS" => true)); ?>
<body style="background-color: #eff0f1;">
<?php
if ($result != null)
{
if (isSuccess($result))
{
?>
<div style="color: black;">
Saved!
</div>
<br>
<?php
}
else
{
?>
<div style="color: red;">
Error while saving!
</div>
<br>
<div style="color: red;">
<?php
$errors = $result->retval;
if(is_array($errors))
{
foreach ($errors as $error)
{
foreach ($error as $fieldError)
{
echo $fieldError->code . ': ' . $fieldError->retval . '<br>';
}
}
}
else
echo $result->retval;
?>
</div>
<br>
<br>
<br>
<?php
}
}
?>
<form action="<?php echo site_url('system/FAS_UDF/saveUDF'); ?>" method="POST">
<div class="div-table">
<div class="div-row">
<div class="div-cell" style="font-size: 20px; font-weight: bold;">
Zusatzfelder
</div>
</div>
<div class="div-row">
<div class="div-cell">
&nbsp;
</div>
</div>
<div class="div-row">
<?php
if (isset($personUdfs))
{
?>
<div class="div-cell">
<?php
echo $this->udflib->UDFWidget(
array(
UDFLib::SCHEMA_ARG_NAME => 'public',
UDFLib::TABLE_ARG_NAME => 'tbl_person',
UDFLib::UDFS_ARG_NAME => $personUdfs
)
);
?>
</div>
<div class="div-cell" style="width: 40px;">
&nbsp;
</div>
<?php
}
?>
<?php
if (isset($prestudentUdfs))
{
?>
<div class="div-cell">
<?php
echo $this->udflib->UDFWidget(
array(
UDFLib::SCHEMA_ARG_NAME => 'public',
UDFLib::TABLE_ARG_NAME => 'tbl_prestudent',
UDFLib::UDFS_ARG_NAME => $prestudentUdfs
)
);
?>
</div>
<?php
}
?>
</div>
<div class="div-row">
<div class="div-cell">
&nbsp;
</div>
</div>
<div class="div-row halign-right">
<?php
if (isset($personUdfs) && isset($prestudentUdfs))
{
?>
<div class="div-cell">
&nbsp;
</div>
<div class="div-cell">
&nbsp;
</div>
<?php
}
?>
<div class="div-cell halign-right">
<input type="submit" value="&nbsp;Speichern&nbsp;">
</div>
</div>
</div>
<?php
if (isset($personUdfs))
{
?>
<input type="hidden" name="person_id" value="<?php echo $personUdfs['person_id']; ?>">
<?php
}
?>
<?php
if (isset($prestudentUdfs))
{
?>
<input type="hidden" name="prestudent_id" value="<?php echo $prestudentUdfs['prestudent_id']; ?>">
<?php
}
?>
</form>
</body>
<?php $this->load->view("templates/footer"); ?>
<?php $this->load->view("templates/header", array("title" => "UDF", "widgetsCSS" => true)); ?>
<body style="background-color: #eff0f1;">
<?php
if ($result != null)
{
if (isSuccess($result))
{
?>
<div style="color: black;">
Saved!
</div>
<br>
<?php
}
else
{
?>
<div style="color: red;">
Error while saving!
</div>
<br>
<div style="color: red;">
<?php
$errors = $result->retval;
if(is_array($errors))
{
foreach ($errors as $error)
{
foreach ($error as $fieldError)
{
echo $fieldError->code . ': ' . $fieldError->retval . '<br>';
}
}
}
else
echo $result->retval;
?>
</div>
<br>
<br>
<br>
<?php
}
}
?>
<form action="<?php echo site_url('system/FAS_UDF/saveUDF'); ?>" method="POST">
<div class="div-table">
<div class="div-row">
<div class="div-cell" style="font-size: 20px; font-weight: bold;">
Zusatzfelder
</div>
</div>
<div class="div-row">
<div class="div-cell">
&nbsp;
</div>
</div>
<div class="div-row">
<?php
if (isset($personUdfs))
{
?>
<div class="div-cell">
<?php
echo $this->udflib->UDFWidget(
array(
UDFLib::SCHEMA_ARG_NAME => 'public',
UDFLib::TABLE_ARG_NAME => 'tbl_person',
UDFLib::UDFS_ARG_NAME => $personUdfs
)
);
?>
</div>
<div class="div-cell" style="width: 40px;">
&nbsp;
</div>
<?php
}
?>
<?php
if (isset($prestudentUdfs))
{
?>
<div class="div-cell">
<?php
echo $this->udflib->UDFWidget(
array(
UDFLib::SCHEMA_ARG_NAME => 'public',
UDFLib::TABLE_ARG_NAME => 'tbl_prestudent',
UDFLib::UDFS_ARG_NAME => $prestudentUdfs
)
);
?>
</div>
<?php
}
?>
</div>
<div class="div-row">
<div class="div-cell">
&nbsp;
</div>
</div>
<div class="div-row halign-right">
<?php
if (isset($personUdfs) && isset($prestudentUdfs))
{
?>
<div class="div-cell">
&nbsp;
</div>
<div class="div-cell">
&nbsp;
</div>
<?php
}
?>
<div class="div-cell halign-right">
<input type="submit" value="&nbsp;Speichern&nbsp;">
</div>
</div>
</div>
<?php
if (isset($personUdfs))
{
?>
<input type="hidden" name="person_id" value="<?php echo $personUdfs['person_id']; ?>">
<?php
}
?>
<?php
if (isset($prestudentUdfs))
{
?>
<input type="hidden" name="prestudent_id" value="<?php echo $prestudentUdfs['prestudent_id']; ?>">
<?php
}
?>
</form>
</body>
<?php $this->load->view("templates/footer"); ?>
@@ -22,7 +22,7 @@
'customJSs' => array(
'public/js/bootstrapper.js',
'public/js/tablesort/tablesort.js',
'public/js/messaging/messageList.js',
'public/js/infocenter/messageList.js',
'public/js/infocenter/infocenterDetails.js'
),
'phrases' => array(
@@ -154,7 +154,7 @@
<div class="panel-body">
<div class="row" id="messagelist">
<?php
$this->load->view('system/messages/messageList.php', $messages);
$this->load->view('system/infocenter/messageList.php', $messages);
?>
</div>
</div>
+18 -18
View File
@@ -1,19 +1,19 @@
<table id="logtable" class="table table-bordered table-hover">
<thead>
<tr>
<th><?php echo ucfirst($this->p->t('global', 'datum')) ?></th>
<th><?php echo ucfirst($this->p->t('global', 'aktivitaet')) ?></th>
<th>User</th>
</tr>
</thead>
<tbody>
<?php foreach ($logs as $log): ?>
<tr data-toggle="tooltip"
title="<?php echo isset($log->logdata->message) ? $log->logdata->message : '' ?>">
<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 id="logtable" class="table table-bordered table-hover">
<thead>
<tr>
<th><?php echo ucfirst($this->p->t('global', 'datum')) ?></th>
<th><?php echo ucfirst($this->p->t('global', 'aktivitaet')) ?></th>
<th>User</th>
</tr>
</thead>
<tbody>
<?php foreach ($logs as $log): ?>
<tr data-toggle="tooltip"
title="<?php echo isset($log->logdata->message) ? $log->logdata->message : '' ?>">
<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>
@@ -1,37 +1,37 @@
<?php
$msgExists = count($messages) > 0;
$widthColumn = $msgExists === true ? 8 : 12;
?>
<div class="col-lg-<?php echo $widthColumn ?>">
<table id="msgtable" class="table table-bordered table-condensed tablesort-hover tablesort-active">
<thead>
<tr>
<th><?php echo ucfirst($this->p->t('global','gesendetAm')) ?></th>
<th><?php echo ucfirst($this->p->t('global','sender')) ?></th>
<th><?php echo ucfirst($this->p->t('global','empfaenger')) ?></th>
<th><?php echo ucfirst($this->p->t('global','betreff')) ?></th>
<th><?php echo ucfirst($this->p->t('global','gelesenAm')) ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($messages as $message): ?>
<tr id="<?php echo $message->message_id.'_'.$message->repersonid ?>" style="cursor: pointer">
<td><?php echo isset($message->insertamum) ? date_format(date_create($message->insertamum), 'd.m.Y H:i:s') : '' ?></td>
<td><?php echo $message->sevorname.' '.$message->senachname ?></td>
<td><?php echo $message->revorname.' '.$message->renachname ?></td>
<td><?php echo $message->subject ?></td>
<td><?php echo isset($message->statusamum) ? date_format(date_create($message->statusamum), 'd.m.Y H:i:s') : '' ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php if ($msgExists === true): ?>
<div class="col-lg-4">
<br>
<div class="text-center"><label for="msgbody" id="msgsubject"></label></div>
<div>
<textarea id="msgbody"></textarea>
</div>
</div>
<?php endif; ?>
<?php
$msgExists = count($messages) > 0;
$widthColumn = $msgExists === true ? 8 : 12;
?>
<div class="col-lg-<?php echo $widthColumn ?>">
<table id="msgtable" class="table table-bordered table-condensed tablesort-hover tablesort-active">
<thead>
<tr>
<th><?php echo ucfirst($this->p->t('global','gesendetAm')) ?></th>
<th><?php echo ucfirst($this->p->t('global','sender')) ?></th>
<th><?php echo ucfirst($this->p->t('global','empfaenger')) ?></th>
<th><?php echo ucfirst($this->p->t('global','betreff')) ?></th>
<th><?php echo ucfirst($this->p->t('global','gelesenAm')) ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($messages as $message): ?>
<tr id="<?php echo $message->message_id.'_'.$message->repersonid ?>" style="cursor: pointer">
<td><?php echo isset($message->insertamum) ? date_format(date_create($message->insertamum), 'd.m.Y H:i:s') : '' ?></td>
<td><?php echo $message->sevorname.' '.$message->senachname ?></td>
<td><?php echo $message->revorname.' '.$message->renachname ?></td>
<td><?php echo $message->subject ?></td>
<td><?php echo isset($message->statusamum) ? date_format(date_create($message->statusamum), 'd.m.Y H:i:s') : '' ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php if ($msgExists === true): ?>
<div class="col-lg-4">
<br>
<div class="text-center"><label for="msgbody" id="msgsubject"></label></div>
<div>
<textarea id="msgbody"></textarea>
</div>
</div>
<?php endif; ?>
+19 -19
View File
@@ -1,20 +1,20 @@
<table id="notiztable" class="table table-bordered table-hover">
<thead>
<tr>
<th><?php echo ucfirst($this->p->t('global', 'datum')) ?></th>
<th><?php echo ucfirst($this->p->t('global', 'notiz')) ?></th>
<th>User</th>
</tr>
</thead>
<tbody>
<?php foreach ($notizen as $notiz): ?>
<tr data-toggle="tooltip"
title="<?php echo isset($notiz->text) ? html_escape($notiz->text) : '' ?>" style="cursor: pointer">
<td><?php echo date_format(date_create($notiz->insertamum), 'd.m.Y H:i:s') ?></td>
<td><?php echo html_escape($notiz->titel) ?></td>
<td><?php echo $notiz->verfasser_uid ?></td>
<td style="display: none" class="hiddennotizid"><?php echo $notiz->notiz_id ?></td>
</tr>
<?php endforeach ?>
</tbody>
<table id="notiztable" class="table table-bordered table-hover">
<thead>
<tr>
<th><?php echo ucfirst($this->p->t('global', 'datum')) ?></th>
<th><?php echo ucfirst($this->p->t('global', 'notiz')) ?></th>
<th>User</th>
</tr>
</thead>
<tbody>
<?php foreach ($notizen as $notiz): ?>
<tr data-toggle="tooltip"
title="<?php echo isset($notiz->text) ? html_escape($notiz->text) : '' ?>" style="cursor: pointer">
<td><?php echo date_format(date_create($notiz->insertamum), 'd.m.Y H:i:s') ?></td>
<td><?php echo html_escape($notiz->titel) ?></td>
<td><?php echo $notiz->verfasser_uid ?></td>
<td style="display: none" class="hiddennotizid"><?php echo $notiz->notiz_id ?></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
@@ -113,7 +113,7 @@
</table>
<div class="row">
<div class="col-xs-6">
<form id="sendmsgform" method="post" action="<?php echo site_url('/system/Messages/write'); ?>" target="_blank">
<form id="sendmsgform" method="post" action="<?php echo site_url('/system/messages/Messages/writeTemplate'); ?>" target="_blank">
<input type="hidden" name="person_id" value="<?php echo $stammdaten->person_id ?>">
<a id="sendmsglink" href="javascript:void(0);">
<i class="fa fa-envelope"></i>&nbsp;<?php echo $this->p->t('ui','nachrichtSenden'); ?>
@@ -0,0 +1,61 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'Read personal messages',
'jquery' => true,
'jqueryui' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'momentjs' => true,
'tabulator' => true,
'ajaxlib' => true,
'dialoglib' => true,
'tinymce' => true,
'phrases' => array('global', 'ui'),
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/message.css'),
'customJSs' => array('public/js/bootstrapper.js', 'public/js/messaging/read.js')
)
);
?>
<body>
<fieldset>
<span id="toggleMessages" class="toggle">
<input type="radio" name="toggleMessages" id="received" checked>
<label for="received">
<?php echo $this->p->t('global', 'received'); ?>
</label>
<input type="radio" name="toggleMessages" id="sent">
<label for="sent">
<?php echo ucfirst($this->p->t('global', 'gesendet')); ?>
</label>
</span>
<span class="buttonsSpacer"></span>
<span>
<input id="writeMessage" type="button" value="<?php echo $this->p->t('ui', 'nachrichtSenden'); ?>">
<input id="replyMessage" type="button" value="<?php echo $this->p->t('global', 'reply'); ?>">
</span>
</fieldset>
<div id="lstMessagesPanel"></div>
<div id="readMessagePanel"></div>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
@@ -0,0 +1,100 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'Write a new message',
'jquery' => true,
'jqueryui' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'ajaxlib' => true,
'dialoglib' => true,
'tinymce' => true,
'phrases' => array('global', 'ui'),
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/message.css'),
'customJSs' => array('public/js/bootstrapper.js', 'public/js/messaging/write.js')
)
);
?>
<body>
<div id="wrapper">
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">
<?php echo $this->p->t('ui', 'nachrichtSenden'); ?>
</h3>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfieldcol-left">
<label>
<?php echo $this->p->t('global', 'empfaenger'); ?>:
</label>
</div>
<div class="col-lg-11 msgfieldcol-right">
<select id="organisationUnit">
<?php echo $organisationUnitOptions; ?>
</select>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfield msgfieldcol-left">
<label>
<?php echo $this->p->t('global', 'betreff'); ?>:
</label>
</div>
&nbsp;
<div class="col-lg-7">
<input id="subject" class="form-control" type="text" value="">
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-lg-12">
<label>
<?php echo $this->p->t('global', 'nachricht'); ?>:
</label>
<textarea id="body"></textarea>
<br>
<div>
<?php echo $this->p->t('ui', 'altRecipientNote'); ?>
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-lg-12 text-right">
<button id="sendButton" class="btn btn-default" type="button">
<?php echo $this->p->t('ui', 'senden'); ?>
</button>
</div>
</div>
</div>
</div>
</div>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
@@ -0,0 +1,101 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'Reply to a message',
'jquery' => true,
'jqueryui' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'ajaxlib' => true,
'dialoglib' => true,
'tinymce' => true,
'phrases' => array('global', 'ui'),
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/message.css'),
'customJSs' => array('public/js/bootstrapper.js', 'public/js/messaging/writeReply.js')
)
);
?>
<body>
<div id="wrapper">
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">
<?php echo $this->p->t('ui', 'nachrichtSenden'); ?>
</h3>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfieldcol-left">
<label>
<?php echo ucfirst($this->p->t('global', 'empfaenger')); ?>:
</label>
</div>
<div class="col-lg-11 msgfieldcol-right">
<?php echo $receiver; ?>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfield msgfieldcol-left">
<label>
<?php echo ucfirst($this->p->t('global', 'betreff')); ?>:
</label>
</div>
&nbsp;
<div class="col-lg-7">
<input id="subject" name="subject" type="text" value="<?php echo $subject; ?>">
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-lg-12">
<label>
<?php echo ucfirst($this->p->t('global', 'nachricht')); ?>:
</label>
<textarea id="body">
<?php echo $body; ?>
</textarea>
</div>
</div>
<br>
<div class="row">
<div class="col-lg-12 text-right">
<input id="receiver_id" type="hidden" value="<?php echo $receiver_id; ?>">
<input id="relationmessage_id" type="hidden" value="<?php echo $relationmessage_id; ?>">
<input id="token" type="hidden" value="<?php echo $token; ?>">
<button id="sendButton" class="btn btn-default" type="button">
<?php echo $this->p->t('ui', 'senden'); ?>
</button>
</div>
</div>
</div>
</div>
</div>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
@@ -2,12 +2,12 @@
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'MessageSent',
'title' => 'Message sent failure - Fehler beim Senden der Nachricht',
'jquery' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/messageSent.css')
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/message.css')
)
);
?>
@@ -20,47 +20,31 @@
<div class="row">
<div class="col-xs-6">
<h3 class="page-header text-right">Thank you for getting in touch!</h3>
<h3 class="page-header text-right"></h3>
</div>
<div class="col-xs-6">
<h3 class="page-header">Danke für die Kontaktaufnahme!</h3>
<h3 class="page-header"></h3>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="panel panel-success">
<div class="panel-heading">
<div class="row">
<div class="col-xs-6 text-right">
Message sent successfully!
An error occurred while sending your message, please try later.
</div>
<div class="col-xs-6">
Nachricht erfolgreich versandt!
Beim Senden Ihrer Nachricht ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut.
</div>
</div>
</div>
<div class="panel-body">
<div class="row">
<div class="col-xs-6 text-right">
<span class="rwd-line">
Thank you for your message.
</span>
<span class="rwd-line">
We will get back to you shortly.
</span>
</div>
<div class="col-xs-6">
<span class="rwd-line">
Herzlichen Dank für Ihre Nachricht.
</span>
<span class="rwd-line">
Wir werden uns schnellstmöglich um Ihr Anliegen kümmern.
</span>
</div>
</div>
<br>
@@ -72,18 +56,12 @@
Sie können dieses Fenster schließen.
</div>
</div>
<br>
<div class="row">
<div class="col-xs-6 text-right">
Your InfoCenter@FHTW Team
</div>
<div class="col-xs-6">
Ihr InfoCenter@FHTW Team
</div>
</div>
<br>
</div>
</div>
<div class="row">
<div class="col-xs-12 text-center">
<p class="signatureblock">
@@ -93,6 +71,7 @@
</p>
</div>
</div>
</div>
</div>
</div>
@@ -2,12 +2,12 @@
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'MessageSent',
'title' => 'Message sent successfully - Nachricht erfolgreich versandt!',
'jquery' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/messageSent.css')
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/message.css')
)
);
?>
@@ -17,11 +17,6 @@
<div id="page-wrapper">
<div class="container-fluid">
<?php
if ($success)
{
?>
<div class="row">
<div class="col-xs-6">
@@ -79,11 +74,6 @@
</div>
</div>
<?php
}
?>
</div>
</div>
</div>
@@ -1,75 +1,104 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'MessageSent',
'jquery' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/messageReply.css')
)
);
?>
<body>
<div id="wrapper">
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-xs-12">
<h3 class="page-header text-center">You have a new message</h3>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<div class="panel panel-success">
<div class="panel-heading text-center">
<?php echo $message->subject; ?>
</div>
<div class="panel-body">
<table class="table table-condensed table-bordered" id="msgtable" align="center">
<tr>
<td width="80px">
<b>From:</b>
</td>
<td>
<?php echo $sender->vorname.' '.$sender->nachname; ?>
</td>
</tr>
<tr>
<td width="80px">
<b>Subject:</b>
</td>
<td>
<?php echo $message->subject; ?>
</td>
</tr>
<tr>
<td width="80px">
<b>Message:</b>
</td>
<td>
<?php echo $message->body; ?>
</td>
</tr>
</table>
</div>
<div class="panel-footer">
<div class="row">
<div class="col-xs-12 text-center">
<?php if ($isEmployee === false && $href != ''): ?>
<button class="btn btn-default" id="replybutton" onclick="location.href='<?php echo $href; ?>';">
<i class="fa fa-reply"></i>&nbsp;Reply
</button>
<?php endif; ?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'Read message - Lies die Nachricht',
'jquery' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/message.css')
)
);
?>
<body>
<div id="wrapper">
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-xs-12">
<h3 class="page-header text-center">
<?php echo ucfirst($this->p->t('ui', 'newMessage')); ?>:
</h3>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<div class="panel panel-success">
<div class="panel-heading text-center">
<?php echo $message->subject; ?>
</div>
<div class="panel-body">
<table class="table table-condensed table-bordered" id="msgtable" align="center">
<tr>
<td width="80px">
<b>
<?php echo ucfirst($this->p->t('ui', 'from')); ?>:
</b>
</td>
<td>
<?php echo $sender->vorname.' '.$sender->nachname; ?>
</td>
</tr>
<tr>
<td width="80px">
<b>
<?php echo ucfirst($this->p->t('global', 'betreff')); ?>:
</b>
</td>
<td>
<?php echo $message->subject; ?>
</td>
</tr>
<tr>
<td width="80px">
<b>
<?php echo ucfirst($this->p->t('global', 'nachricht')); ?>:
</b>
</td>
<td>
<?php echo $message->body; ?>
</td>
</tr>
</table>
</div>
<div class="panel-footer">
<div class="row">
<div class="col-xs-12 text-center">
<?php if (!isEmptyString($hrefReply)): ?>
<button class="btn btn-default" id="replybutton" onclick="location.href='<?php echo $hrefReply; ?>';">
<i class="fa fa-reply"></i>&nbsp;<?php echo ucfirst($this->p->t('global', 'reply')); ?>
</button>
<?php endif; ?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
@@ -0,0 +1,93 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'Reply to a message',
'jquery' => true,
'bootstrap' => true,
'fontawesome' => true,
'tinymce' => true,
'sbadmintemplate' => true,
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/message.css'),
'customJSs' => array('public/js/bootstrapper.js', 'public/js/messaging/messageWriteReply.js')
)
);
?>
<body>
<div id="wrapper">
<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('ui', 'nachrichtSenden')); ?>
</h3>
</div>
</div>
<form id="sendForm" method="post" action="<?php echo site_url('system/messages/ViewMessage/sendReply'); ?>">
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfieldcol-left">
<label>
<?php echo ucfirst($this->p->t('global', 'empfaenger')); ?>:
</label>
</div>
<div class="col-lg-11 msgfieldcol-right">
<?php echo $receiver; ?>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfield msgfieldcol-left">
<label>
<?php echo ucfirst($this->p->t('global', 'betreff')); ?>:
</label>
</div>
&nbsp;
<div class="col-lg-7">
<input id="subject" class="form-control" type="text" value="<?php echo $subject; ?>" name="subject">
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-lg-12">
<label>
<?php echo ucfirst($this->p->t('global', 'nachricht')); ?>:
</label>
<textarea id="bodyTextArea" name="body"><?php echo $body; ?></textarea>
</div>
</div>
<br>
<div class="row">
<div class="col-lg-12 text-right">
<button id="sendButton" class="btn btn-default" type="button">
<?php echo $this->p->t('ui', 'senden'); ?>
</button>
</div>
</div>
<input type="hidden" name="receiver_id" value="<?php echo $receiver_id; ?>">
<input type="hidden" name="relationmessage_id" value="<?php echo $relationmessage_id; ?>">
<input type="hidden" name="token" value="<?php echo $token; ?>">
</form>
</div>
</div>
</div>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
@@ -0,0 +1,175 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'Write a new message or reply using templates',
'jquery' => true,
'jqueryui' => true,
'bootstrap' => true,
'ajaxlib' => true,
'fontawesome' => true,
'tinymce' => true,
'sbadmintemplate' => true,
'dialoglib' => true,
'widgets' => true,
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/message.css'),
'customJSs' => array('public/js/bootstrapper.js', 'public/js/messaging/messageWrite.js')
)
);
?>
<body>
<div id="wrapper">
<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('ui', 'nachrichtSenden')); ?>
</h3>
</div>
</div>
<form id="sendForm" method="post" action="<?php echo site_url('/system/messages/Messages/sendImplicitTemplate'); ?>">
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfieldcol-left">
<label>
<?php echo ucfirst($this->p->t('global', 'empfaenger')); ?>:
</label>
</div>
<div class="col-lg-11 msgfieldcol-right">
<?php echo $recipientsList; ?>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfield msgfieldcol-left">
<label>
<?php echo ucfirst($this->p->t('global', 'betreff')); ?>:
</label>
</div>
&nbsp;
<div class="col-lg-7">
<input id="subject" class="form-control" type="text" value="<?php echo $subject; ?>" name="subject">
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-lg-10">
<label>
<?php echo ucfirst($this->p->t('global', 'nachricht')); ?>:
</label>
<textarea id="bodyTextArea" name="body">
<?php echo $body; ?>
</textarea>
</div>
<div class="col-lg-2">
<div class="form-group">
<label>
<?php echo ucfirst($this->p->t('ui', 'felder')); ?>:
</label>
<?php
echo $this->widgetlib->widget(
'MultipleDropdown_widget',
array('elements' => success($variables)),
array(
'name' => 'variables[]',
'id' => 'variables',
'size' => 14,
'multiple' => true
)
);
?>
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-xs-3">
<?php
echo $this->widgetlib->widget(
'Vorlage_widget',
array('oe_kurzbz' => $organisationUnits, 'isAdmin' => $senderIsAdmin),
array('name' => 'vorlage', 'id' => 'vorlageDnD')
);
?>
</div>
<div class="col-lg-7 col-xs-9 text-right">
<button id="sendButton" class="btn btn-default" type="button">
<?php echo $this->p->t('ui', 'senden'); ?>
</button>
</div>
</div>
<hr>
<div class="row">
<div class="col-lg-12">
<label>
<?php echo ucfirst($this->p->t('global', 'vorschau')); ?>:
</label>
</div>
</div>
<div class="well">
<div class="row">
<div class="col-lg-3">
<div class="form-grop form-inline">
<?php
echo $this->widgetlib->widget(
'Dropdown_widget',
array('elements' => success($recipientsArray), 'emptyElement' => 'Select...'),
array(
'title' => ucfirst($this->p->t('global', 'empfaenger')).': ',
'name' => 'recipients[]',
'id' => 'recipients'
)
);
?>
</div>
</div>
<div class="col-lg-1 valign-middle">
<strong>
<a href="#" id="refresh">
<?php echo ucfirst($this->p->t('ui', 'refresh')); ?>
</a>
</strong>
</div>
</div>
<br>
<textarea id="tinymcePreview"></textarea>
</div>
<?php echo $recipients_ids; ?>
<?php echo $relationmessage_id; ?>
<?php echo $type; ?>
</form>
</div>
</div>
</div>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
@@ -1,81 +0,0 @@
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfieldcol-left">
<label>Receiver:</label>
</div>
<div class="col-lg-11 msgfieldcol-right">
<?php
for ($i = 0; $i < count($receivers); $i++)
{
$receiver = $receivers[$i];
// Every 10 recipients a new line
if ($i > 1 && $i % 10 == 0)
{
echo '<br>';
}
echo $receiver->Vorname." ".$receiver->Nachname."; ";
}
?>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfield msgfieldcol-left">
<label>Subject:</label>
</div>&nbsp;
<?php
$subject = '';
if (isset($message))
{
$subject = 'Re: '.$message->subject;
}
?>
<div class="col-lg-7">
<input id="subject" class="form-control" type="text" value="<?php echo $subject; ?>"
name="subject">
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-lg-<?php echo isset($variables) ? 10 : 12 ?>">
<label>Message:</label>
<?php
$body = '';
if (isset($message))
{
if (isset($receivers[0]))
$body .= '<p></p><p></p><blockquote><i>On '.date_format(date_create($message->sent), 'd.m.Y H:i').' '.$receivers[0]->Vorname.' '.$receivers[0]->Nachname.' wrote:'.'</i></blockquote>';
$body .= '<blockquote style="border-left:2px solid; padding-left: 8px">';
$body .= $message->body.'</blockquote>';
}
?>
<textarea id="bodyTextArea" name="body"><?php echo $body; ?></textarea>
</div>
<?php
if (isset($variables)):
?>
<div class="col-lg-2">
<div class="form-group">
<label>Fields:</label>
<select id="variables" class="form-control" size="14" multiple="multiple">
<?php
foreach ($variables as $key => $val)
{
?>
<option value="<?php echo $key; ?>"><?php echo $val; ?></option>
<?php
}
?>
</select>
</div>
</div>
<?php endif; ?>
</div>
<br>
<div class="row">
<div class="col-lg-<?php echo isset($variables) ? 10 : 12 ?> text-right">
<button id="sendButton" class="btn btn-default" type="button">Send</button>
</div>
</div>
@@ -1,183 +0,0 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'Write a message',
'jquery' => true,
'jqueryui' => true,
'bootstrap' => true,
'ajaxlib' => true,
'fontawesome' => true,
'tinymce' => true,
'sbadmintemplate' => true,
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/messageWrite.css'),
'customJSs' => array('public/js/bootstrapper.js', 'public/js/messaging/messageWrite.js')
)
);
?>
<body>
<div id="wrapper">
<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('ui', 'nachrichtSenden')); ?></h3>
</div>
</div>
<form id="sendForm" method="post" action="<?php echo site_url('/system/Messages/send'); ?>">
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfieldcol-left">
<label><?php echo ucfirst($this->p->t('global', 'empfaenger')).':'; ?></label>
</div>
<div class="col-lg-11 msgfieldcol-right">
<?php
for ($i = 0; $i < count($recipients); $i++)
{
$receiver = $recipients[$i];
// Every 10 recipients a new line
if ($i > 1 && $i % 10 == 0)
{
echo '<br>';
}
echo $receiver->Vorname." ".$receiver->Nachname."; ";
}
?>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfield msgfieldcol-left">
<label><?php echo ucfirst($this->p->t('global', 'betreff')).':'; ?></label>
</div>&nbsp;
<?php
$subject = '';
if (isset($message))
{
$subject = 'Re: '.$message->subject;
}
?>
<div class="col-lg-7">
<input id="subject" class="form-control" type="text" value="<?php echo $subject; ?>" name="subject">
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-lg-10">
<label><?php echo ucfirst($this->p->t('global', 'nachricht')).':'; ?></label>
<?php
$body = '';
if (isset($message))
{
$body = $message->body;
}
?>
<textarea id="bodyTextArea" name="body"><?php echo $body; ?></textarea>
</div>
<?php
if (isset($variables))
{
?>
<div class="col-lg-2">
<div class="form-group">
<label><?php echo ucfirst($this->p->t('ui', 'felder')).':'; ?></label>
<select id="variables" class="form-control" size="14" multiple="multiple">
<?php
foreach ($variables as $key => $val)
{
?>
<option value="<?php echo $key; ?>"><?php echo $val; ?></option>
<?php
}
?>
</select>
</div>
</div>
<?php
}
?>
</div>
<br>
<div class="row">
<div class="col-xs-3">
<?php
echo $this->widgetlib->widget(
'Vorlage_widget',
array('oe_kurzbz' => $oe_kurzbz, 'isAdmin' => $isAdmin),
array('name' => 'vorlage', 'id' => 'vorlageDnD')
);
?>
</div>
<div class="col-lg-7 col-xs-9 text-right">
<button id="sendButton" class="btn btn-default" type="button"><?php echo $this->p->t('ui', 'senden'); ?></button>
</div>
</div>
<?php
if (isset($recipients) && count($recipients) > 0)
{
?>
<hr>
<div class="row">
<div class="col-lg-12">
<label><?php echo ucfirst($this->p->t('global', 'vorschau')).':'; ?></label>
</div>
</div>
<div class="well">
<div class="row">
<div class="col-lg-5">
<div class="form-grop form-inline">
<label><?php echo ucfirst($this->p->t('global', 'empfaenger')).': '; ?></label>
<select id="recipients">
<?php
if (count($recipients) > 1) echo '<option value="-1">Select...</option>';
foreach ($recipients as $receiver)
{
?>
<option value="<?php echo $receiver->person_id; ?>">
<?php echo $receiver->Vorname." ".$receiver->Nachname; ?>
</option>
<?php
}
?>
</select>
&nbsp;
<strong><a href="#" id="refresh">Refresh</a></strong>
</div>
</div>
<div class="col-lg-2">
</div>
</div>
<br>
<textarea id="tinymcePreview"></textarea>
</div>
<?php
}
?>
<?php
foreach ($recipients as $receiver)
{
echo '<input type="hidden" name="persons[]" value="'.$receiver->person_id.'">'."\n";
}
?>
<?php
if (isset($message))
{
?>
<input type="hidden" name="relationmessage_id" value="<?php echo $message->message_id; ?>">
<?php
}
?>
</form>
</div>
</div>
</div>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
@@ -1,63 +0,0 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'MessageReply',
'jquery' => true,
'bootstrap' => true,
'fontawesome' => true,
'tinymce' => true,
'sbadmintemplate' => true,
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/messageWrite.css'),
'customJSs' => array('public/js/bootstrapper.js', 'public/js/messaging/messageWriteReply.js')
)
);
?>
<body>
<?php
$href = site_url('/ViewMessage/sendReply');
?>
<div id="wrapper">
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">Send message</h3>
</div>
</div>
<form id="sendForm" method="post" action="<?php echo $href; ?>">
<?php
$this->load->view('system/messages/messageForm.php');
for ($i = 0; $i < count($receivers); $i++)
{
$receiver = $receivers[$i];
$receiverid = $receiver->person_id;
$fieldname = 'persons[]';
echo '<input type="hidden" name="'.$fieldname.'" value="'.$receiverid.'">'."\n";
}
?>
<?php
if (isset($message))
{
?>
<input type="hidden" name="relationmessage_id" value="<?php echo $message->message_id; ?>">
<?php
}
if (isset($token))
{
?>
<input type="hidden" name="token" value="<?php echo $token; ?>">
<?php
}
?>
</form>
</div>
</div>
</div>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
+20 -20
View File
@@ -1,20 +1,20 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<html lang="de_AT">
<head>
<title>VileSci - Phrasen</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<frameset rows="30%,*">
<frame src="Phrases/table" id="PhrasesTop" name="PhrasesTop" frameborder="0" />
<frame src="Phrases/edit" id="PhrasesBottom" name="PhrasesBottom" frameborder="0" />
<noframes>
<body bgcolor="#FFFFFF">
This application works only with a frames-enabled browser.<br />
<a href="PhrasesList">Use without frames</a>
</body>
</noframes>
</frameset>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<html lang="de_AT">
<head>
<title>VileSci - Phrasen</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<frameset rows="30%,*">
<frame src="Phrases/table" id="PhrasesTop" name="PhrasesTop" frameborder="0" />
<frame src="Phrases/edit" id="PhrasesBottom" name="PhrasesBottom" frameborder="0" />
<noframes>
<body bgcolor="#FFFFFF">
This application works only with a frames-enabled browser.<br />
<a href="PhrasesList">Use without frames</a>
</body>
</noframes>
</frameset>
</html>
@@ -1,17 +1,17 @@
<?php
$this->load->view('templates/header', array('title' => 'PhrasesEdit'));
?>
<div class="row">
<div class="span4">
<h2>Phrase: <?php echo $phrase->phrase_id; ?></h2>
<form method="post" action="../save">
Bezeichnung: <input type="text" name="phrase" value="<?php echo $phrase->phrase; ?>" />
<input type="hidden" name="phrase_id" value="<?php echo $phrase->phrase_id; ?>" />
<button type="submit">Save</button>
</form>
</div>
</div>
</body>
</html>
<?php
$this->load->view('templates/header', array('title' => 'PhrasesEdit'));
?>
<div class="row">
<div class="span4">
<h2>Phrase: <?php echo $phrase->phrase_id; ?></h2>
<form method="post" action="../save">
Bezeichnung: <input type="text" name="phrase" value="<?php echo $phrase->phrase; ?>" />
<input type="hidden" name="phrase_id" value="<?php echo $phrase->phrase_id; ?>" />
<button type="submit">Save</button>
</form>
</div>
</div>
</body>
</html>
@@ -1,54 +1,54 @@
<?php
$this->load->view('templates/header', array('title' => 'PhrasenInhaltList', 'tablesort' => true, 'tableid' => 't1', 'headers' => '5:{sorter:false}'));
?>
<div class="row">
<div class="span4">
<h2>Phrase Inhalt - <?php echo $phrase; ?></h2>
<form method="post" action="../newText" target="PhrasesBottom">
<input type="hidden" name="phrase_id" value="<?php echo $phrase_id; ?>"/>
<button type="submit">Neu</button>
</form>
<table id="t1" class="tablesorter">
<thead>
<tr><th class='table-sortable:default'>ID</th>
<th class='table-sortable:default'>Sprache</th>
<th class='table-sortable:default'>OrgEinheit</th>
<th class='table-sortable:default'>OrgForm</th>
<th class='table-sortable:default'>Text</th>
<th>Beschreibung</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<?php foreach ($phrase_inhalt as $v): ?>
<tr><td><a href="../editText/<?php echo $v->phrasentext_id; ?>" target="PhrasesBottom"><?php echo $v->phrasentext_id; ?></a></td>
<td><?php echo $v->sprache; ?></td>
<td><?php echo $v->orgeinheit_kurzbz; ?></td>
<td><?php echo $v->orgform_kurzbz; ?></td>
<td><?php echo $v->text; ?></td>
<td><?php echo $v->description; ?></td>
<td><a href="../editText/<?php echo $v->phrasentext_id; ?>" target="PhrasesBottom">edit</a></td>
<td>
<a href="javascript:void(0);" onclick="delPhrasentext(<?php echo $v->phrasentext_id; ?>, <?php echo $phrase_id; ?>)">delete</a>
</td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</div>
</div>
<script>
function delPhrasentext(id,pid)
{
var c = confirm("Wirklich löschen?");
if (c == true)
window.location.href = "../deltext/"+id+"/"+pid;
}
</script>
<?php
$this->load->view('templates/footer');
?>
<?php
$this->load->view('templates/header', array('title' => 'PhrasenInhaltList', 'tablesort' => true, 'tableid' => 't1', 'headers' => '5:{sorter:false}'));
?>
<div class="row">
<div class="span4">
<h2>Phrase Inhalt - <?php echo $phrase; ?></h2>
<form method="post" action="../newText" target="PhrasesBottom">
<input type="hidden" name="phrase_id" value="<?php echo $phrase_id; ?>"/>
<button type="submit">Neu</button>
</form>
<table id="t1" class="tablesorter">
<thead>
<tr><th class='table-sortable:default'>ID</th>
<th class='table-sortable:default'>Sprache</th>
<th class='table-sortable:default'>OrgEinheit</th>
<th class='table-sortable:default'>OrgForm</th>
<th class='table-sortable:default'>Text</th>
<th>Beschreibung</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<?php foreach ($phrase_inhalt as $v): ?>
<tr><td><a href="../editText/<?php echo $v->phrasentext_id; ?>" target="PhrasesBottom"><?php echo $v->phrasentext_id; ?></a></td>
<td><?php echo $v->sprache; ?></td>
<td><?php echo $v->orgeinheit_kurzbz; ?></td>
<td><?php echo $v->orgform_kurzbz; ?></td>
<td><?php echo $v->text; ?></td>
<td><?php echo $v->description; ?></td>
<td><a href="../editText/<?php echo $v->phrasentext_id; ?>" target="PhrasesBottom">edit</a></td>
<td>
<a href="javascript:void(0);" onclick="delPhrasentext(<?php echo $v->phrasentext_id; ?>, <?php echo $phrase_id; ?>)">delete</a>
</td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</div>
</div>
<script>
function delPhrasentext(id,pid)
{
var c = confirm("Wirklich löschen?");
if (c == true)
window.location.href = "../deltext/"+id+"/"+pid;
}
</script>
<?php
$this->load->view('templates/footer');
?>
+20 -20
View File
@@ -1,20 +1,20 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<html lang="de_AT">
<head>
<title>VileSci - Vorlage</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<frameset rows="30%,*">
<frame src="Vorlage/table" id="VorlageTop" name="VorlageTop" frameborder="0" />
<frame src="Vorlage/edit" id="VorlageBottom" name="VorlageBottom" frameborder="0" />
<noframes>
<body bgcolor="#FFFFFF">
This application works only with a frames-enabled browser.<br />
<a href="VorlageList">Use without frames</a>
</body>
</noframes>
</frameset>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<html lang="de_AT">
<head>
<title>VileSci - Vorlage</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<frameset rows="30%,*">
<frame src="Vorlage/table" id="VorlageTop" name="VorlageTop" frameborder="0" />
<frame src="Vorlage/edit" id="VorlageBottom" name="VorlageBottom" frameborder="0" />
<noframes>
<body bgcolor="#FFFFFF">
This application works only with a frames-enabled browser.<br />
<a href="VorlageList">Use without frames</a>
</body>
</noframes>
</frameset>
</html>
@@ -1,3 +1,3 @@
<?php
echo $text;
<?php
echo $text;
?>
+12 -17
View File
@@ -34,6 +34,7 @@
$tablewidget = isset($tablewidget) ? $tablewidget : false;
$tabulator = isset($tabulator) ? $tabulator : false;
$tinymce = isset($tinymce) ? $tinymce : false;
$widgets = isset($widgets) ? $widgets : false;
?>
<!-- Header start -->
@@ -63,6 +64,9 @@
// Font Awesome CSS
if ($fontawesome === true) generateCSSsInclude('vendor/components/font-awesome/css/font-awesome.min.css');
// PivotUI CSS
if ($pivotui === true) generateCSSsInclude('vendor/nicolaskruchten/pivottable/dist/pivot.min.css');
// SB Admin 2 template CSS
if ($sbadmintemplate === true)
{
@@ -73,12 +77,6 @@
// Securimage CSS
if ($captcha === true) generateCSSsInclude('vendor/dapphp/securimage/securimage.css');
// PivotUI CSS
if ($pivotui === true)
{
generateCSSsInclude('vendor/nicolaskruchten/pivottable/dist/pivot.min.css');
}
// Table sorter CSS
if ($tablesorter === true)
{
@@ -93,6 +91,9 @@
generateCSSsInclude('public/css/Tabulator.css');
}
// Tinymce CSS
if ($tinymce === true) generateCSSsInclude('public/css/TinyMCE.css');
// --------------------------------------------------------------------------------------------------------
// From public folder
@@ -108,11 +109,12 @@
// NavigationWidget CSS
if ($navigationwidget === true) generateCSSsInclude('public/css/NavigationWidget.css');
// HTML Widget CSS
if ($widgets === true) generateCSSsInclude('public/css/Widgets.css');
// Eventually required CSS
generateCSSsInclude($customCSSs); // Eventually required CSS
// CSS End
// --------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------
// Javascripts
@@ -140,11 +142,7 @@
// jQuery checkboxes
// NOTE: keep it after jQuery includes
if ($jquerycheckboxes === true)
{
generateJSsInclude('vendor/rmariuzzo/jquery-checkboxes/dist/jquery.checkboxes-1.0.7.min.js');
}
if ($jquerycheckboxes === true) generateJSsInclude('vendor/rmariuzzo/jquery-checkboxes/dist/jquery.checkboxes-1.0.7.min.js');
// jQuery treetable
// NOTE: keep it after jQuery includes
if ($jquerytreetable === true) generateJSsInclude('vendor/ludo/jquery-treetable/jquery.treetable.js');
@@ -173,10 +171,7 @@
}
// PivotUI JS
if ($pivotui === true)
{
generateJSsInclude('vendor/nicolaskruchten/pivottable/dist/pivot.min.js');
}
if ($pivotui === true) generateJSsInclude('vendor/nicolaskruchten/pivottable/dist/pivot.min.js');
// Table sorter JS
if ($tablesorter === true)
+3 -3
View File
@@ -1,12 +1,12 @@
<html>
<head>
<title>This is not the email template, this is a tribute</title>
<title>Notification of personal message reception</title>
</head>
<body>
<div class="container">
<h2>Neue Nachricht vorhanden</h2>
<h2>A new message is available</h2>
<div class="body">
<a href="{href}">Klicken Sie hier, um die Nachricht anzuzeigen</a>
<a href="{href}">Click here to view the message</a>
</div>
</div>
</body>
+6 -2
View File
@@ -1,3 +1,7 @@
Follow the following link to read the message.
Notification of personal message reception
{href}
A new message is available
Click here to view the message
{href}
+41 -41
View File
@@ -1,42 +1,42 @@
<!doctype html>
<html>
<head>
<title><?php echo $this->template->title->default("Default title"); ?></title>
<meta charset="utf-8">
<meta name="description" content="<?php echo $this->template->description; ?>">
<meta name="author" content="">
<?php echo $this->template->meta; ?>
<?php echo $this->template->stylesheet; ?>
</head>
<body>
<?php
// This is an example to show that you can load stuff from inside the template file
echo $this->template->widget("navigation", array('title' => 'Project name'));
?>
<div class="container" style="margin-top: 60px;">
<?php
// This is the main content partial
echo $this->template->content;
?>
<hr>
<footer>
<p>
<?php
// Show the footer partial, and prepend copyright message
echo $this->template->footer->prepend("&copy; Special Company 2012 - ");
?>
</p>
</footer>
</div>
<script src="//code.jquery.com/jquery-latest.min.js"></script>
<?php echo $this->template->javascript; ?>
</body>
<!doctype html>
<html>
<head>
<title><?php echo $this->template->title->default("Default title"); ?></title>
<meta charset="utf-8">
<meta name="description" content="<?php echo $this->template->description; ?>">
<meta name="author" content="">
<?php echo $this->template->meta; ?>
<?php echo $this->template->stylesheet; ?>
</head>
<body>
<?php
// This is an example to show that you can load stuff from inside the template file
echo $this->template->widget("navigation", array('title' => 'Project name'));
?>
<div class="container" style="margin-top: 60px;">
<?php
// This is the main content partial
echo $this->template->content;
?>
<hr>
<footer>
<p>
<?php
// Show the footer partial, and prepend copyright message
echo $this->template->footer->prepend("&copy; Special Company 2012 - ");
?>
</p>
</footer>
</div>
<script src="//code.jquery.com/jquery-latest.min.js"></script>
<?php echo $this->template->javascript; ?>
</body>
</html>
+3 -3
View File
@@ -37,11 +37,11 @@
<?php
$elements = ${DropdownWidget::WIDGET_DATA_ELEMENTS_ARRAY_NAME};
$selectedElements = ${DropdownWidget::SELECTED_ELEMENT};
foreach($elements as $element)
{
$selected = '';
if (is_array($selectedElements))
{
foreach($selectedElements as $selectedElement)
@@ -71,4 +71,4 @@
</div>
</div>
<?php HTMLWidget::printEndBlock(${HTMLWidget::HTML_ARG_NAME}); ?>
<?php HTMLWidget::printEndBlock(${HTMLWidget::HTML_ARG_NAME}); ?>
+19
View File
@@ -0,0 +1,19 @@
<?php
class Dropdown_widget extends DropdownWidget
{
public function display($widgetData)
{
$elements = $widgetData['elements'];
$emptyElement = $widgetData['emptyElement'];
$this->setElementsArray(
$elements,
true,
$emptyElement,
'No data present'
);
$this->loadDropDownView($widgetData);
}
}
@@ -0,0 +1,20 @@
<?php
class MultipleDropdown_widget extends DropdownWidget
{
public function display($widgetData)
{
$elements = $widgetData['elements'];
$this->setElementsArray(
$elements,
false,
'',
'No data present'
);
$this->setMultiple();
$this->loadDropDownView($widgetData);
}
}
+21 -21
View File
@@ -1,21 +1,21 @@
<?php
class Nation_widget extends DropdownWidget
{
public function display($widgetData)
{
// Nation
$this->load->model('codex/Nation_model', 'NationModel');
$this->NationModel->addOrder('nation_code');
$this->addSelectToModel($this->NationModel, 'nation_code', 'kurztext');
$this->setElementsArray(
$this->NationModel->load(),
true,
$this->p->t('ui', 'bitteEintragWaehlen')
);
$this->loadDropDownView($widgetData);
}
}
<?php
class Nation_widget extends DropdownWidget
{
public function display($widgetData)
{
// Nation
$this->load->model('codex/Nation_model', 'NationModel');
$this->NationModel->addOrder('nation_code');
$this->addSelectToModel($this->NationModel, 'nation_code', 'kurztext');
$this->setElementsArray(
$this->NationModel->load(),
true,
$this->p->t('ui', 'bitteEintragWaehlen')
);
$this->loadDropDownView($widgetData);
}
}
+21 -21
View File
@@ -1,21 +1,21 @@
<?php
class Zgv_widget extends DropdownWidget
{
public function display($widgetData)
{
// Zgv
$this->load->model('codex/Zgv_model', 'ZgvModel');
$this->ZgvModel->addOrder('zgv_bez');
$this->addSelectToModel($this->ZgvModel, 'zgv_code', 'zgv_bez');
$this->setElementsArray(
$this->ZgvModel->load(),
true,
$this->p->t('ui', 'bitteEintragWaehlen')
);
$this->loadDropDownView($widgetData);
}
}
<?php
class Zgv_widget extends DropdownWidget
{
public function display($widgetData)
{
// Zgv
$this->load->model('codex/Zgv_model', 'ZgvModel');
$this->ZgvModel->addOrder('zgv_bez');
$this->addSelectToModel($this->ZgvModel, 'zgv_code', 'zgv_bez');
$this->setElementsArray(
$this->ZgvModel->load(),
true,
$this->p->t('ui', 'bitteEintragWaehlen')
);
$this->loadDropDownView($widgetData);
}
}
+2 -2
View File
@@ -337,10 +337,10 @@ function writePruefungsTable(e, data, anmeldung)
{
var row = "";
var teilnehmer = "";
var button = "";
row += "<tr><td>"+e.organisationseinheit+"</td><td style='cursor: pointer; text-decoration: underline;' onclick='showPruefungsDetails(\""+e.pruefung.pruefung_id+"\",\""+e.lehrveranstaltung[0].lehrveranstaltung_id+"\");'>"+e.lehrveranstaltung[0].bezeichnung+" <br>("+e.lehrveranstaltung[0].lehrform_kurzbz+", "+e.lehrveranstaltung[0].ects+" ECTS, "+e.pruefung.mitarbeiter_uid+")</td><td>";
e.pruefung.termine.forEach(function(d){
var storno = false;
var button = "";
var storno = false;
var anmeldung_id = null;
data.result.anmeldungen.forEach(function(anmeldung){
if((anmeldung.pruefungstermin_id === d.pruefungstermin_id) && (anmeldung.lehrveranstaltung_id === e.lehrveranstaltung[0].lehrveranstaltung_id))
+13
View File
@@ -186,6 +186,7 @@ if (isset($_POST['speichern']))
$gebiet->zufallvorschlag = isset($_POST['zufallvorschlag']);
$gebiet->levelgleichverteilung = isset($_POST['levelgleichverteilung']);
$gebiet->maxpunkte = $_POST['maxpunkte'];
$gebiet->offsetpunkte = $_POST['offsetpunkte'];
$gebiet->maxfragen = $_POST['maxfragen'];
$gebiet->level_start = $_POST['level_start'];
$gebiet->level_sprung_auf = $_POST['level_sprung_auf'];
@@ -257,6 +258,18 @@ if ($gebiet_id != '')
$hinweis = '';
echo '<td>Maximale Punkteanzahl</td><td><input type="text" size="5" maxlength="5" name="maxpunkte" value="'.$gebiet->maxpunkte.'">'.$hinweis.'</td>';
echo '</tr><tr>';
// empfohlene offsetpunkte berechnen und anzeigen
$offsethinweis = '';
$offsetpunkte = $gebiet->berechneOffsetpunkte($gebiet_id);
if ($offsetpunkte)
{
$offsetwarnung = strlen($gebiet->errormsg) > 0 ? ' (HINWEIS: '.$gebiet->errormsg.')' : '';
$offsethinweis = ' <span class="error">empfohlene Offsetpunkteanzahl: '.round($offsetpunkte).(round($offsetpunkte) != $offsetpunkte ? ' ('.$offsetpunkte.' gerundet)' : '').'</span>';
$offsethinweis .= '<span class="error">'.$offsetwarnung.'</span>';
}
echo '<td>Offsetpunkte (minimale Punkteanzahl)</td><td><input type="text" size="5" maxlength="5" name="offsetpunkte" value="'.$gebiet->offsetpunkte.'">'.$offsethinweis.'</td>';
echo '</tr><tr>';
echo '<td>Maximale Fragenanzahl</td><td><input type="text" size="5" maxlength="5" name="maxfragen" value="'.$gebiet->maxfragen.'"></td>';
echo '</tr><tr>';
echo '<td>Antworten pro Zeile</td><td><input type="text" size="5" maxlength="2" name="antwortenprozeile" value="'.$gebiet->antwortenprozeile.'" required></td>';
+30 -5
View File
@@ -35,7 +35,7 @@ if (!$db = new basis_db())
<title>Testool Fragen Übersicht</title>
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
</head>
<body>
<body style="padding: 10px">
<?php
$user = get_uid();
$rechte = new benutzerberechtigung();
@@ -47,7 +47,8 @@ if(!$rechte->isBerechtigt('basis/testtool', null, 's'))
$gebiet = new gebiet();
$gebiet->getAll();
$sprache = (isset($_REQUEST['Sprache'])?$_REQUEST['Sprache']:'German');
$Auswahlgebiet = (isset($_REQUEST['AuswahlGebiet'])?$_REQUEST['AuswahlGebiet']:'');
$Auswahlgebiet = (isset($_REQUEST['AuswahlGebiet'])?$_REQUEST['AuswahlGebiet']:'');
$loesungen = (isset($_REQUEST['loesungen']) && $_REQUEST['loesungen'] != '' ? true:false);
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post" name="TesttoolUebersicht">
<table>
@@ -76,6 +77,13 @@ else
echo'</select>
</td>
</tr>
<tr>
<td>
Mit Lösungen
</td>
<td><input type="checkbox" name="loesungen" '.($loesungen ? 'checked':'').'></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Anzeigen"></td></tr>
</table><br>';
@@ -208,8 +216,17 @@ if(isset($_REQUEST['AuswahlGebiet']))
$vorschlag = new vorschlag();
$vorschlag->loadVorschlagSprache($vor->vorschlag_id, $sprache);
if($vorschlag->bild =='')
echo '<tr><td align="right"><b>'.$vor->punkte.'</b></td><td style="border-left:1px solid;">&nbsp;'.$vorschlag->text.'</td></tr>';
if($vorschlag->bild == '')
{
if ($loesungen)
{
echo '<tr><td style="border-right:1px solid;">'.$vor->nummer.'</td></td><td align="right"><b>'.$vor->punkte.'</b></td><td style="border-left:1px solid;">&nbsp;'.$vorschlag->text.'</td></tr>';
}
else
{
echo '<tr><td style="border-right:1px solid;">'.$vor->nummer.'</td><td>&nbsp;'.$vorschlag->text.'</td></tr>';
}
}
if($vorschlag->bild!='')
{
// zeilenumbruch nach 4 bilder
@@ -217,7 +234,15 @@ if(isset($_REQUEST['AuswahlGebiet']))
echo "</tr>";
echo "<td>";
echo "<img class='testtoolvorschlag' src='../bild.php?src=vorschlag&amp;vorschlag_id=$vor->vorschlag_id&amp;sprache=".$sprache."' /><br/>";
echo "<br>".$vor->punkte."</td>";
if ($loesungen)
{
echo "<br>".$vor->punkte."</td>";
}
else
{
echo "</td>";
}
$anzahlBild++;
}
if($vorschlag->audio!='')
+1 -1
View File
@@ -1266,7 +1266,7 @@ function MessageNew()
{
var prestudentIdArray = getMultipleTreeCellText(tree, 'student-treecol-prestudent_id');
var action = '<?php echo APP_ROOT ?>index.ci.php/system/FASMessages/write/' + <?php echo $benutzer->person_id; ?>;
var action = '<?php echo APP_ROOT ?>index.ci.php/system/messages/FASMessages/writeTemplate/' + <?php echo $benutzer->person_id; ?>;
openWindowPostArray(action, 'prestudent_id', prestudentIdArray);
}
+2 -2
View File
@@ -104,7 +104,7 @@ function MessagesNewMessage()
{
var prestudentIdArray = getMultipleTreeCellText(tree, 'student-treecol-prestudent_id');
var action = '<?php echo APP_ROOT ?>index.ci.php/system/FASMessages/write/' + MessageSenderPersonID;
var action = '<?php echo APP_ROOT ?>index.ci.php/system/messages/FASMessages/writeTemplate';
openWindowPostArray(action, 'prestudent_id', prestudentIdArray);
}
@@ -128,7 +128,7 @@ function MessagesSendAnswer()
var RecipientID = getTreeCellText(messagesTree, 'messages-tree-recipient_id', messagesTree.currentIndex);
var prestudentIdArray = new Array(getTreeCellText(studentsTree, 'student-treecol-prestudent_id', studentsTree.currentIndex));
var action = '<?php echo APP_ROOT ?>index.ci.php/system/FASMessages/writeReply/' + MessageSenderPersonID + '/' + MessageId + '/' + RecipientID;
var action = '<?php echo APP_ROOT ?>index.ci.php/system/messages/FASMessages/writeReplyTemplate/' + MessageId + '/' + RecipientID;
openWindowPostArray(action, 'prestudent_id', prestudentIdArray);
}
@@ -125,15 +125,15 @@ $format_colored =& $workbook->addFormat();
$format_colored->setFgColor(10);
$format_number_colored =& $workbook->addFormat();
$format_number_colored->setNumFormat('0, 0.00');
$format_number_colored->setNumFormat('0,0.00');
//$format_number_colored->setNumFormat('0.00');
$format_number_colored->setFgColor(10);
$format_number =& $workbook->addFormat();
$format_number->setNumFormat('0, 0.00');
$format_number->setNumFormat('0,0.00');
$format_number_bold =& $workbook->addFormat();
$format_number_bold->setNumFormat('0, 0.00');
$format_number_bold->setNumFormat('0,0.00');
//$format_number_bold->setNumFormat('0.00');
$format_number_bold->setBold();
+500 -495
View File
@@ -1,496 +1,501 @@
<?php
/* Copyright (C) 2015 fhcomplete.org
*
* 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: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
*/
require_once('../../config/vilesci.config.inc.php');
?>
// ********** FUNKTIONEN ********** //
var AufnahmeterminePrestudentID='';
var AufnahmeTermineStudienplanID='';
var AufnahmeTermineStudiengang='';
// ****
// * Laedt die Trees
// ****
function loadAufnahmeTermine(prestudent_id)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
AufnahmeTerminePrestudentID = prestudent_id;
AufnahmeTermineLoadTree();
document.getElementById('aufnahmetermine-textbox-gesamtpunkte').disabled=false;
document.getElementById('aufnahmetermine-button-savegesamtpunkte').disabled=false;
document.getElementById('aufnahmetermine-button-calculatetotal').disabled=false;
// Gruppen DropDown laden
var aufnahmegruppemenulist = document.getElementById('aufnahmetermine-menulist-aufnahmegruppe');
if(aufnahmegruppemenulist)
{
var url="<?php echo APP_ROOT ?>rdf/gruppen.rdf.php?aufnahmegruppe=true&optional=true";
//Alte DS entfernen
var oldDatasources = aufnahmegruppemenulist.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
aufnahmegruppemenulist.database.RemoveDataSource(oldDatasources.getNext());
}
//Refresh damit die entfernten DS auch wirklich entfernt werden
aufnahmegruppemenulist.builder.rebuild();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
var myDatasource = rdfService.GetDataSourceBlocking(url);
aufnahmegruppemenulist.database.AddDataSource(myDatasource);
aufnahmegruppemenulist.builder.rebuild();
}
// Gesamtpunkte laden und anzeigen
var url = '<?php echo APP_ROOT ?>rdf/student.rdf.php?prestudent_id='+prestudent_id+'&'+gettimestamp();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var dsource = rdfService.GetDataSourceBlocking(url);
var subject = rdfService.GetResource("http://www.technikum-wien.at/student/" + prestudent_id);
var predicateNS = "http://www.technikum-wien.at/student/rdf";
punkte = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#punkte" ));
var person_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#person_id" ));
AufnahmeTermineStudiengang = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studiengang_kz" ));
reihungstestangetreten = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#reihungstestangetreten" ));
var aufnahmegruppe_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#aufnahmegruppe_kurzbz" ));
document.getElementById('aufnahmetermine-textbox-gesamtpunkte').value=punkte;
if(reihungstestangetreten=='true')
document.getElementById('aufnahmetermine-checkbox-reihungstestangetreten').checked=true;
else
document.getElementById('aufnahmetermine-checkbox-reihungstestangetreten').checked=false;
document.getElementById('aufnahmetermine-menulist-aufnahmegruppe').value = aufnahmegruppe_kurzbz;
AufnahmeTermineStudienplanID = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studienplan_id" ));
// ReihungstestDropDown laden
var reihungstestmenulist = document.getElementById('aufnahmetermine-menulist-reihungstest');
var url="<?php echo APP_ROOT ?>rdf/reihungstest.rdf.php?optional=true&prestudent_id="+AufnahmeTerminePrestudentID;
//Alte DS entfernen
var oldDatasources = reihungstestmenulist.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
reihungstestmenulist.database.RemoveDataSource(oldDatasources.getNext());
}
//Refresh damit die entfernten DS auch wirklich entfernt werden
reihungstestmenulist.builder.rebuild();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
var myDatasource = rdfService.GetDataSourceBlocking(url);
reihungstestmenulist.database.AddDataSource(myDatasource);
reihungstestmenulist.builder.rebuild();
// Studienplan DropDown laden
var studienplanmenulist = document.getElementById('aufnahmetermine-menulist-studienplan');
var url="<?php echo APP_ROOT ?>rdf/studienplan.rdf.php?person_id="+person_id;
//Alte DS entfernen
var oldDatasources = studienplanmenulist.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
studienplanmenulist.database.RemoveDataSource(oldDatasources.getNext());
}
//Refresh damit die entfernten DS auch wirklich entfernt werden
studienplanmenulist.builder.rebuild();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
var myDatasource = rdfService.GetDataSourceBlocking(url);
studienplanmenulist.database.AddDataSource(myDatasource);
studienplanmenulist.builder.rebuild();
}
/**
* Laedt den Tree mit den Terminen
*/
function AufnahmeTermineLoadTree()
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
//Termine laden
url = "<?php echo APP_ROOT; ?>rdf/aufnahmetermine.rdf.php?prestudent_id="+AufnahmeTerminePrestudentID+"&ts="+gettimestamp();
var treeAufnahmeTermine=document.getElementById('aufnahmetermine-tree');
//Alte DS entfernen
var oldDatasources = treeAufnahmeTermine.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
treeAufnahmeTermine.database.RemoveDataSource(oldDatasources.getNext());
}
treeAufnahmeTermine.builder.rebuild();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
var AufnahmeTerminTreeDatasource = rdfService.GetDataSource(url);
AufnahmeTerminTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
treeAufnahmeTermine.database.AddDataSource(AufnahmeTerminTreeDatasource);
}
/**
* Speichert die Gesamtpunkte
*/
function AufnahmeTermineSaveGesamtpunkte()
{
var punkte = document.getElementById('aufnahmetermine-textbox-gesamtpunkte').value;
var aufnahmegruppe_kurzbz = document.getElementById('aufnahmetermine-menulist-aufnahmegruppe').value;
var reihungstestangetreten = document.getElementById('aufnahmetermine-checkbox-reihungstestangetreten').checked;
var url = '<?php echo APP_ROOT ?>content/student/studentDBDML.php';
var req = new phpRequest(url,'','');
req.add('type', 'AufnahmeTermineSaveGesamtpunkte');
req.add('prestudent_id', AufnahmeTerminePrestudentID);
req.add('punkte', punkte);
req.add('reihungstestangetreten',reihungstestangetreten);
req.add('aufnahmegruppe_kurzbz',aufnahmegruppe_kurzbz);
var response = req.executePOST();
var val = new ParseReturnValue(response);
if (!val.dbdml_return)
{
if(val.dbdml_errormsg=='')
alert(response)
else
alert(val.dbdml_errormsg)
return false;
}
else
{
return true;
}
}
function AufnahmeTermineCalculateTotal()
{
var url = '<?php echo APP_ROOT ?>content/student/studentDBDML.php';
var req = new phpRequest(url,'','');
req.add('type', 'AufnahmeTermineBerechneGesamtpunkte');
req.add('prestudent_id', AufnahmeTerminePrestudentID);
var response = req.executePOST();
var val = new ParseReturnValue(response);
if (!val.dbdml_return)
{
if(val.dbdml_errormsg=='')
alert(response)
else
alert(val.dbdml_errormsg)
return false;
}
else
{
document.getElementById('aufnahmetermine-textbox-gesamtpunkte').value=val.dbdml_data;
return true;
}
}
/**
* Laedt die Details bei Auswahl eines Eintrages aus dem Tree
*/
function AufnahmeTermineAuswahl()
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var tree = document.getElementById('aufnahmetermine-tree');
if (tree.currentIndex==-1) return;
AufnahmeTermineDisableFields(false);
AufnahmeTermineReihungstestDropDownRefresh(true);
//Ausgewaehlten Eintrag holen
var rt_person_id = getTreeCellText(tree, 'aufnahmetermine-tree-rt_person_id', tree.currentIndex);
//Daten holen
var url = '<?php echo APP_ROOT ?>rdf/aufnahmetermine.rdf.php?rt_person_id='+rt_person_id+'&'+gettimestamp();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var dsource = rdfService.GetDataSourceBlocking(url);
var subject = rdfService.GetResource("http://www.technikum-wien.at/aufnahmetermine/"+rt_person_id);
var predicateNS = "http://www.technikum-wien.at/aufnahmetermine/rdf";
//Daten holen
var person_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#person_id" ));
var rt_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#rt_id" ));
var anmeldedatum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmeldedatum" ));
var teilgenommen = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#teilgenommen" ));
var punkte = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#punkte" ));
var studienplan_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studienplan_id" ));
var endpunkte_inkl_gebiete = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#endpunkte_inkl_gebiete" ));
var endpunkte_exkl_gebiete = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#endpunkte_exkl_gebiete" ));
var typ = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#typ" ));
document.getElementById('aufnahmetermine-textbox-rt_person_id').value=rt_person_id;
document.getElementById('aufnahmetermine-textbox-person_id').value=person_id;
document.getElementById('aufnahmetermine-checkbox-neu').checked=false;
document.getElementById('aufnahmetermine-textbox-anmeldungreihungstest').value=anmeldedatum;
MenulistSelectItemOnValue('aufnahmetermine-menulist-reihungstest', rt_id);
if(teilgenommen=='Ja')
document.getElementById('aufnahmetermine-checkbox-teilgenommen').checked=true;
else
document.getElementById('aufnahmetermine-checkbox-teilgenommen').checked=false;
document.getElementById('aufnahmetermine-textbox-punkte').value=punkte;
document.getElementById('aufnahmetermine-menulist-studienplan').value=studienplan_id;
document.getElementById('aufnahmetermine-textbox-endpunkte-inkl-gebiete').value = endpunkte_inkl_gebiete;
document.getElementById('aufnahmetermine-textbox-endpunkte-exkl-gebiete').value = endpunkte_exkl_gebiete;
// Sichtbarkeit der RT-Vergleichsergebnispunkte (ohne Quereinsteiger)
var basisgebiet_punkte_anzeigen = <?php echo (defined('FAS_REIHUNGSTEST_PUNKTE_BASISGEBIET_ANZEIGEN') && FAS_REIHUNGSTEST_PUNKTE_BASISGEBIET_ANZEIGEN) ? 'true' : 'false' ?>;
// * Generell Anzeige nur wenn über config-Datei gesetzt ist
if (basisgebiet_punkte_anzeigen)
{
// * für Bachelor-Studiengänge anzeigen
if (typ == 'b')
{
document.getElementById('aufnahmetermine-groupbox-vergleich-endpunkte').hidden = false;
}
// * für Master-Studiengänge verstecken
else if (typ == 'm')
{
document.getElementById('aufnahmetermine-groupbox-vergleich-endpunkte').hidden = true;
}
}
}
function AufnahmeTermineNeu()
{
AufnahmeTermineDisableFields(false);
AufnahmeTermineResetFields();
AufnahmeTermineReihungstestDropDownRefresh(true);
}
/**
* Loescht einen Aufnahmetermin
*/
function AufnahmeTermineDelete()
{
var rt_person_id = document.getElementById('aufnahmetermine-textbox-rt_person_id').value;
if(!confirm("Wollen Sie diesen Eintrag wirklich löschen?"))
return;
var url = '<?php echo APP_ROOT ?>content/student/studentDBDML.php';
var req = new phpRequest(url,'','');
req.add('type', 'AufnahmeTermineDelete');
req.add('rt_person_id', rt_person_id);
var response = req.executePOST();
var val = new ParseReturnValue(response);
if (!val.dbdml_return)
{
if(val.dbdml_errormsg=='')
alert(response)
else
alert(val.dbdml_errormsg)
return false;
}
else
{
AufnahmeTermineLoadTree();
return true;
}
}
function AufnahemTermineReihungstestPunkteTransmit()
{
var reihungstest_id = document.getElementById('aufnahmetermine-menulist-reihungstest').value;
var person_id = document.getElementById('aufnahmetermine-textbox-person_id').value;
var url = '<?php echo APP_ROOT ?>content/student/studentDBDML.php';
var req = new phpRequest(url,'','');
req.add('type', 'getReihungstestPunkte');
req.add('person_id', person_id);
req.add('reihungstest_id', reihungstest_id);
var response = req.executePOST();
var val = new ParseReturnValue(response)
if (!val.dbdml_return)
{
if(val.dbdml_errormsg=='')
alert(response)
else
alert(val.dbdml_errormsg)
}
else
{
document.getElementById('aufnahmetermine-textbox-punkte').value = val.dbdml_data;
}
}
function setEndpunkteAsPunkte(id)
{
var punkte = document.getElementById(id).value;
document.getElementById('aufnahmetermine-textbox-punkte').value = punkte;
}
/**
* Speichert einen AufnahmeTermin
*/
function AufnahmeTermineSpeichern()
{
var rt_person_id = document.getElementById('aufnahmetermine-textbox-rt_person_id').value;
var rt_id = document.getElementById('aufnahmetermine-menulist-reihungstest').value;
var person_id = document.getElementById('aufnahmetermine-textbox-person_id').value;
var neu = document.getElementById('aufnahmetermine-checkbox-neu').checked;
var anmeldedatum = document.getElementById('aufnahmetermine-textbox-anmeldungreihungstest').iso;
var rt_id_new = document.getElementById('aufnahmetermine-menulist-reihungstest').value;
var teilgenommen = document.getElementById('aufnahmetermine-checkbox-teilgenommen').checked;
var punkte = document.getElementById('aufnahmetermine-textbox-punkte').value;
var studienplan_id = document.getElementById('aufnahmetermine-menulist-studienplan').value;
var url = '<?php echo APP_ROOT ?>content/student/studentDBDML.php';
var req = new phpRequest(url,'','');
req.add('type', 'AufnahmeTermineSave');
req.add('rt_id', rt_id);
req.add('rt_person_id', rt_person_id);
req.add('person_id', person_id);
req.add('prestudent_id', AufnahmeTerminePrestudentID);
req.add('neu', neu);
req.add('anmeldedatum', anmeldedatum);
req.add('teilgenommen', teilgenommen);
req.add('punkte', punkte);
req.add('studienplan_id', studienplan_id);
var response = req.executePOST();
var val = new ParseReturnValue(response);
if (!val.dbdml_return)
{
if(val.dbdml_errormsg=='')
alert(response)
else
alert(val.dbdml_errormsg)
document.getElementById('aufnahmetermine-textbox-rt_person_id').value=val.dbdml_data;
document.getElementById('aufnahmetermine-checkbox-neu').checked=false;
AufnahmeTermineLoadTree();
return false;
}
else
{
document.getElementById('aufnahmetermine-textbox-rt_person_id').value=val.dbdml_data;
document.getElementById('aufnahmetermine-checkbox-neu').checked=false;
AufnahmeTermineLoadTree();
return true;
}
}
/**
* Aktiviert oder Deaktiviert die Eingabefelder
* @param val boolean true | false
*/
function AufnahmeTermineDisableFields(val)
{
document.getElementById('aufnahmetermine-button-speichern').disabled=val;
document.getElementById('aufnahmetermine-textbox-punkte').disabled=val;
document.getElementById('aufnahmetermine-checkbox-teilgenommen').disabled=val;
document.getElementById('aufnahmetermine-textbox-anmeldungreihungstest').disabled=val;
document.getElementById('aufnahmetermine-menulist-reihungstest').disabled=val;
document.getElementById('aufnahmetermine-button-anmeldungreihungstest-heute').disabled=val;
document.getElementById('aufnahmetermine-menulist-studienplan').disabled=val;
}
/**
* Leert die Eingabefelder
*/
function AufnahmeTermineResetFields()
{
document.getElementById('aufnahmetermine-textbox-punkte').value='';
document.getElementById('aufnahmetermine-checkbox-teilgenommen').checked=false;
document.getElementById('aufnahmetermine-textbox-anmeldungreihungstest').value='';
document.getElementById('aufnahmetermine-menulist-reihungstest').value='';
document.getElementById('aufnahmetermine-textbox-person_id').value='';
document.getElementById('aufnahmetermine-checkbox-neu').checked=true;
document.getElementById('aufnahmetermine-textbox-rt_person_id').value='';
document.getElementById('aufnahmetermine-menulist-studienplan').value=AufnahmeTermineStudienplanID;
}
/**
* Setzt das aktuelle Datum als Anmeldedatum
*/
function AufnahmeTermineAnmeldungreihungstestHeute()
{
var now = new Date();
var jahr = now.getFullYear();
monat = now.getMonth()+1;
if(monat<10) monat='0'+monat;
tag = now.getDate();
if(tag<10) tag='0'+tag;
document.getElementById('aufnahmetermine-textbox-anmeldungreihungstest').value=tag+'.'+monat+'.'+jahr;
}
/**
* Refresht das DropDown mit den Reihungstestterminen
*/
function AufnahmeTermineReihungstestDropDownRefresh(prestudent)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var menulist = document.getElementById('aufnahmetermine-menulist-reihungstest');
if(typeof(prestudent)=='undefined')
var url="<?php echo APP_ROOT ?>rdf/reihungstest.rdf.php?include_id=&studiengang_kz="+AufnahmeTermineStudiengang+"&"+gettimestamp();
else
var url="<?php echo APP_ROOT ?>rdf/reihungstest.rdf.php?optional=true&prestudent_id="+AufnahmeTerminePrestudentID+"&"+gettimestamp();
//Alte DS entfernen
var oldDatasources = menulist.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
menulist.database.RemoveDataSource(oldDatasources.getNext());
}
//Refresh damit die entfernten DS auch wirklich entfernt werden
menulist.builder.rebuild();
btn = document.getElementById('aufnahmetermine-button-reihungstest-refresh');
btn.setAttribute('image','../../skin/images/spinner.gif');
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
var myDatasource = rdfService.GetDataSourceBlocking(url);
menulist.database.AddDataSource(myDatasource);
menulist.builder.rebuild();
btn.setAttribute('image','../../skin/images/refresh.png');
}
function AufnahmeTermineReihungstestEdit()
{
var rt_id = document.getElementById('aufnahmetermine-menulist-reihungstest').value;
var url="<?php echo APP_ROOT ?>vilesci/stammdaten/reihungstestverwaltung.php?reihungstest_id="+rt_id;
window.open(url);
<?php
/* Copyright (C) 2015 fhcomplete.org
*
* 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: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
*/
require_once('../../config/vilesci.config.inc.php');
?>
// ********** FUNKTIONEN ********** //
var AufnahmeterminePrestudentID='';
var AufnahmeTermineStudienplanID='';
var AufnahmeTermineStudiengang='';
// ****
// * Laedt die Trees
// ****
function loadAufnahmeTermine(prestudent_id)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
AufnahmeTerminePrestudentID = prestudent_id;
AufnahmeTermineLoadTree();
document.getElementById('aufnahmetermine-textbox-gesamtpunkte').disabled=false;
document.getElementById('aufnahmetermine-button-savegesamtpunkte').disabled=false;
document.getElementById('aufnahmetermine-button-calculatetotal').disabled=false;
// Gruppen DropDown laden
var aufnahmegruppemenulist = document.getElementById('aufnahmetermine-menulist-aufnahmegruppe');
if(aufnahmegruppemenulist)
{
var url="<?php echo APP_ROOT ?>rdf/gruppen.rdf.php?aufnahmegruppe=true&optional=true";
//Alte DS entfernen
var oldDatasources = aufnahmegruppemenulist.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
aufnahmegruppemenulist.database.RemoveDataSource(oldDatasources.getNext());
}
//Refresh damit die entfernten DS auch wirklich entfernt werden
aufnahmegruppemenulist.builder.rebuild();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
var myDatasource = rdfService.GetDataSourceBlocking(url);
aufnahmegruppemenulist.database.AddDataSource(myDatasource);
aufnahmegruppemenulist.builder.rebuild();
}
// Gesamtpunkte laden und anzeigen
var url = '<?php echo APP_ROOT ?>rdf/student.rdf.php?prestudent_id='+prestudent_id+'&'+gettimestamp();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var dsource = rdfService.GetDataSourceBlocking(url);
var subject = rdfService.GetResource("http://www.technikum-wien.at/student/" + prestudent_id);
var predicateNS = "http://www.technikum-wien.at/student/rdf";
punkte = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#punkte" ));
var person_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#person_id" ));
AufnahmeTermineStudiengang = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studiengang_kz" ));
reihungstestangetreten = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#reihungstestangetreten" ));
var aufnahmegruppe_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#aufnahmegruppe_kurzbz" ));
document.getElementById('aufnahmetermine-textbox-gesamtpunkte').value=punkte;
if(reihungstestangetreten=='true')
document.getElementById('aufnahmetermine-checkbox-reihungstestangetreten').checked=true;
else
document.getElementById('aufnahmetermine-checkbox-reihungstestangetreten').checked=false;
document.getElementById('aufnahmetermine-menulist-aufnahmegruppe').value = aufnahmegruppe_kurzbz;
AufnahmeTermineStudienplanID = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studienplan_id" ));
// ReihungstestDropDown laden
var reihungstestmenulist = document.getElementById('aufnahmetermine-menulist-reihungstest');
var url="<?php echo APP_ROOT ?>rdf/reihungstest.rdf.php?optional=true&prestudent_id="+AufnahmeTerminePrestudentID;
//Alte DS entfernen
var oldDatasources = reihungstestmenulist.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
reihungstestmenulist.database.RemoveDataSource(oldDatasources.getNext());
}
//Refresh damit die entfernten DS auch wirklich entfernt werden
reihungstestmenulist.builder.rebuild();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
var myDatasource = rdfService.GetDataSourceBlocking(url);
reihungstestmenulist.database.AddDataSource(myDatasource);
reihungstestmenulist.builder.rebuild();
// Studienplan DropDown laden
var studienplanmenulist = document.getElementById('aufnahmetermine-menulist-studienplan');
var url="<?php echo APP_ROOT ?>rdf/studienplan.rdf.php?person_id="+person_id;
//Alte DS entfernen
var oldDatasources = studienplanmenulist.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
studienplanmenulist.database.RemoveDataSource(oldDatasources.getNext());
}
//Refresh damit die entfernten DS auch wirklich entfernt werden
studienplanmenulist.builder.rebuild();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
var myDatasource = rdfService.GetDataSourceBlocking(url);
studienplanmenulist.database.AddDataSource(myDatasource);
studienplanmenulist.builder.rebuild();
}
/**
* Laedt den Tree mit den Terminen
*/
function AufnahmeTermineLoadTree()
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
//Termine laden
url = "<?php echo APP_ROOT; ?>rdf/aufnahmetermine.rdf.php?prestudent_id="+AufnahmeTerminePrestudentID+"&ts="+gettimestamp();
var treeAufnahmeTermine=document.getElementById('aufnahmetermine-tree');
//Alte DS entfernen
var oldDatasources = treeAufnahmeTermine.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
treeAufnahmeTermine.database.RemoveDataSource(oldDatasources.getNext());
}
treeAufnahmeTermine.builder.rebuild();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
var AufnahmeTerminTreeDatasource = rdfService.GetDataSource(url);
AufnahmeTerminTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
treeAufnahmeTermine.database.AddDataSource(AufnahmeTerminTreeDatasource);
}
/**
* Speichert die Gesamtpunkte
*/
function AufnahmeTermineSaveGesamtpunkte()
{
var punkte = document.getElementById('aufnahmetermine-textbox-gesamtpunkte').value;
var aufnahmegruppe_kurzbz = document.getElementById('aufnahmetermine-menulist-aufnahmegruppe').value;
var reihungstestangetreten = document.getElementById('aufnahmetermine-checkbox-reihungstestangetreten').checked;
var url = '<?php echo APP_ROOT ?>content/student/studentDBDML.php';
var req = new phpRequest(url,'','');
req.add('type', 'AufnahmeTermineSaveGesamtpunkte');
req.add('prestudent_id', AufnahmeTerminePrestudentID);
req.add('punkte', punkte);
req.add('reihungstestangetreten',reihungstestangetreten);
req.add('aufnahmegruppe_kurzbz',aufnahmegruppe_kurzbz);
var response = req.executePOST();
var val = new ParseReturnValue(response);
if (!val.dbdml_return)
{
if(val.dbdml_errormsg=='')
alert(response)
else
alert(val.dbdml_errormsg)
return false;
}
else
{
return true;
}
}
function AufnahmeTermineCalculateTotal()
{
var url = '<?php echo APP_ROOT ?>content/student/studentDBDML.php';
var req = new phpRequest(url,'','');
req.add('type', 'AufnahmeTermineBerechneGesamtpunkte');
req.add('prestudent_id', AufnahmeTerminePrestudentID);
var response = req.executePOST();
var val = new ParseReturnValue(response);
if (!val.dbdml_return)
{
if(val.dbdml_errormsg=='')
alert(response)
else
alert(val.dbdml_errormsg)
return false;
}
else
{
document.getElementById('aufnahmetermine-textbox-gesamtpunkte').value=val.dbdml_data;
return true;
}
}
/**
* Laedt die Details bei Auswahl eines Eintrages aus dem Tree
*/
function AufnahmeTermineAuswahl()
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var tree = document.getElementById('aufnahmetermine-tree');
if (tree.currentIndex==-1) return;
AufnahmeTermineDisableFields(false);
AufnahmeTermineReihungstestDropDownRefresh(true);
//Ausgewaehlten Eintrag holen
var rt_person_id = getTreeCellText(tree, 'aufnahmetermine-tree-rt_person_id', tree.currentIndex);
//Daten holen
var url = '<?php echo APP_ROOT ?>rdf/aufnahmetermine.rdf.php?rt_person_id='+rt_person_id+'&'+gettimestamp();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var dsource = rdfService.GetDataSourceBlocking(url);
var subject = rdfService.GetResource("http://www.technikum-wien.at/aufnahmetermine/"+rt_person_id);
var predicateNS = "http://www.technikum-wien.at/aufnahmetermine/rdf";
//Daten holen
var person_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#person_id" ));
var rt_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#rt_id" ));
var anmeldedatum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmeldedatum" ));
var teilgenommen = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#teilgenommen" ));
var punkte = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#punkte" ));
var studienplan_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studienplan_id" ));
var studienplan_studiengang_kz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studienplan_studiengang_kz" ));
var endpunkte_inkl_gebiete = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#endpunkte_inkl_gebiete" ));
var endpunkte_exkl_gebiete = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#endpunkte_exkl_gebiete" ));
var typ = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#typ" ));
document.getElementById('aufnahmetermine-textbox-rt_person_id').value=rt_person_id;
document.getElementById('aufnahmetermine-textbox-person_id').value=person_id;
document.getElementById('aufnahmetermine-textbox-studienplan_studiengang_kz').value=studienplan_studiengang_kz;
document.getElementById('aufnahmetermine-checkbox-neu').checked=false;
document.getElementById('aufnahmetermine-textbox-anmeldungreihungstest').value=anmeldedatum;
MenulistSelectItemOnValue('aufnahmetermine-menulist-reihungstest', rt_id);
if(teilgenommen=='Ja')
document.getElementById('aufnahmetermine-checkbox-teilgenommen').checked=true;
else
document.getElementById('aufnahmetermine-checkbox-teilgenommen').checked=false;
document.getElementById('aufnahmetermine-textbox-punkte').value=punkte;
document.getElementById('aufnahmetermine-menulist-studienplan').value=studienplan_id;
document.getElementById('aufnahmetermine-textbox-endpunkte-inkl-gebiete').value = endpunkte_inkl_gebiete;
document.getElementById('aufnahmetermine-textbox-endpunkte-exkl-gebiete').value = endpunkte_exkl_gebiete;
// Sichtbarkeit der RT-Vergleichsergebnispunkte (ohne Quereinsteiger)
var basisgebiet_punkte_anzeigen = <?php echo (defined('FAS_REIHUNGSTEST_PUNKTE_BASISGEBIET_ANZEIGEN') && FAS_REIHUNGSTEST_PUNKTE_BASISGEBIET_ANZEIGEN) ? 'true' : 'false' ?>;
// * Generell Anzeige nur wenn über config-Datei gesetzt ist
if (basisgebiet_punkte_anzeigen)
{
// * für Bachelor-Studiengänge anzeigen
if (typ == 'b')
{
document.getElementById('aufnahmetermine-groupbox-vergleich-endpunkte').hidden = false;
}
// * für Master-Studiengänge verstecken
else if (typ == 'm')
{
document.getElementById('aufnahmetermine-groupbox-vergleich-endpunkte').hidden = true;
}
}
}
function AufnahmeTermineNeu()
{
AufnahmeTermineDisableFields(false);
AufnahmeTermineResetFields();
AufnahmeTermineReihungstestDropDownRefresh(true);
}
/**
* Loescht einen Aufnahmetermin
*/
function AufnahmeTermineDelete()
{
var rt_person_id = document.getElementById('aufnahmetermine-textbox-rt_person_id').value;
if(!confirm("Wollen Sie diesen Eintrag wirklich löschen?"))
return;
var url = '<?php echo APP_ROOT ?>content/student/studentDBDML.php';
var req = new phpRequest(url,'','');
req.add('type', 'AufnahmeTermineDelete');
req.add('rt_person_id', rt_person_id);
var response = req.executePOST();
var val = new ParseReturnValue(response);
if (!val.dbdml_return)
{
if(val.dbdml_errormsg=='')
alert(response)
else
alert(val.dbdml_errormsg)
return false;
}
else
{
AufnahmeTermineLoadTree();
return true;
}
}
function AufnahemTermineReihungstestPunkteTransmit()
{
var reihungstest_id = document.getElementById('aufnahmetermine-menulist-reihungstest').value;
var person_id = document.getElementById('aufnahmetermine-textbox-person_id').value;
var studienplan_studiengang_kz = document.getElementById('aufnahmetermine-textbox-studienplan_studiengang_kz').value;
var url = '<?php echo APP_ROOT ?>content/student/studentDBDML.php';
var req = new phpRequest(url,'','');
req.add('type', 'getReihungstestPunkte');
req.add('person_id', person_id);
req.add('studienplan_studiengang_kz', studienplan_studiengang_kz);
req.add('reihungstest_id', reihungstest_id);
var response = req.executePOST();
var val = new ParseReturnValue(response)
if (!val.dbdml_return)
{
if(val.dbdml_errormsg=='')
alert(response)
else
alert(val.dbdml_errormsg)
}
else
{
document.getElementById('aufnahmetermine-textbox-punkte').value = val.dbdml_data;
}
}
function setEndpunkteAsPunkte(id)
{
var punkte = document.getElementById(id).value;
document.getElementById('aufnahmetermine-textbox-punkte').value = punkte;
}
/**
* Speichert einen AufnahmeTermin
*/
function AufnahmeTermineSpeichern()
{
var rt_person_id = document.getElementById('aufnahmetermine-textbox-rt_person_id').value;
var rt_id = document.getElementById('aufnahmetermine-menulist-reihungstest').value;
var person_id = document.getElementById('aufnahmetermine-textbox-person_id').value;
var neu = document.getElementById('aufnahmetermine-checkbox-neu').checked;
var anmeldedatum = document.getElementById('aufnahmetermine-textbox-anmeldungreihungstest').iso;
var rt_id_new = document.getElementById('aufnahmetermine-menulist-reihungstest').value;
var teilgenommen = document.getElementById('aufnahmetermine-checkbox-teilgenommen').checked;
var punkte = document.getElementById('aufnahmetermine-textbox-punkte').value;
var studienplan_id = document.getElementById('aufnahmetermine-menulist-studienplan').value;
var url = '<?php echo APP_ROOT ?>content/student/studentDBDML.php';
var req = new phpRequest(url,'','');
req.add('type', 'AufnahmeTermineSave');
req.add('rt_id', rt_id);
req.add('rt_person_id', rt_person_id);
req.add('person_id', person_id);
req.add('prestudent_id', AufnahmeTerminePrestudentID);
req.add('neu', neu);
req.add('anmeldedatum', anmeldedatum);
req.add('teilgenommen', teilgenommen);
req.add('punkte', punkte);
req.add('studienplan_id', studienplan_id);
var response = req.executePOST();
var val = new ParseReturnValue(response);
if (!val.dbdml_return)
{
if(val.dbdml_errormsg=='')
alert(response)
else
alert(val.dbdml_errormsg)
document.getElementById('aufnahmetermine-textbox-rt_person_id').value=val.dbdml_data;
document.getElementById('aufnahmetermine-checkbox-neu').checked=false;
AufnahmeTermineLoadTree();
return false;
}
else
{
document.getElementById('aufnahmetermine-textbox-rt_person_id').value=val.dbdml_data;
document.getElementById('aufnahmetermine-checkbox-neu').checked=false;
AufnahmeTermineLoadTree();
return true;
}
}
/**
* Aktiviert oder Deaktiviert die Eingabefelder
* @param val boolean true | false
*/
function AufnahmeTermineDisableFields(val)
{
document.getElementById('aufnahmetermine-button-speichern').disabled=val;
document.getElementById('aufnahmetermine-textbox-punkte').disabled=val;
document.getElementById('aufnahmetermine-checkbox-teilgenommen').disabled=val;
document.getElementById('aufnahmetermine-textbox-anmeldungreihungstest').disabled=val;
document.getElementById('aufnahmetermine-menulist-reihungstest').disabled=val;
document.getElementById('aufnahmetermine-button-anmeldungreihungstest-heute').disabled=val;
document.getElementById('aufnahmetermine-menulist-studienplan').disabled=val;
}
/**
* Leert die Eingabefelder
*/
function AufnahmeTermineResetFields()
{
document.getElementById('aufnahmetermine-textbox-punkte').value='';
document.getElementById('aufnahmetermine-checkbox-teilgenommen').checked=false;
document.getElementById('aufnahmetermine-textbox-anmeldungreihungstest').value='';
document.getElementById('aufnahmetermine-menulist-reihungstest').value='';
document.getElementById('aufnahmetermine-textbox-person_id').value='';
document.getElementById('aufnahmetermine-textbox-studienplan_studiengang_kz').value='';
document.getElementById('aufnahmetermine-checkbox-neu').checked=true;
document.getElementById('aufnahmetermine-textbox-rt_person_id').value='';
document.getElementById('aufnahmetermine-menulist-studienplan').value=AufnahmeTermineStudienplanID;
}
/**
* Setzt das aktuelle Datum als Anmeldedatum
*/
function AufnahmeTermineAnmeldungreihungstestHeute()
{
var now = new Date();
var jahr = now.getFullYear();
monat = now.getMonth()+1;
if(monat<10) monat='0'+monat;
tag = now.getDate();
if(tag<10) tag='0'+tag;
document.getElementById('aufnahmetermine-textbox-anmeldungreihungstest').value=tag+'.'+monat+'.'+jahr;
}
/**
* Refresht das DropDown mit den Reihungstestterminen
*/
function AufnahmeTermineReihungstestDropDownRefresh(prestudent)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var menulist = document.getElementById('aufnahmetermine-menulist-reihungstest');
if(typeof(prestudent)=='undefined')
var url="<?php echo APP_ROOT ?>rdf/reihungstest.rdf.php?include_id=&studiengang_kz="+AufnahmeTermineStudiengang+"&"+gettimestamp();
else
var url="<?php echo APP_ROOT ?>rdf/reihungstest.rdf.php?optional=true&prestudent_id="+AufnahmeTerminePrestudentID+"&"+gettimestamp();
//Alte DS entfernen
var oldDatasources = menulist.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
menulist.database.RemoveDataSource(oldDatasources.getNext());
}
//Refresh damit die entfernten DS auch wirklich entfernt werden
menulist.builder.rebuild();
btn = document.getElementById('aufnahmetermine-button-reihungstest-refresh');
btn.setAttribute('image','../../skin/images/spinner.gif');
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
var myDatasource = rdfService.GetDataSourceBlocking(url);
menulist.database.AddDataSource(myDatasource);
menulist.builder.rebuild();
btn.setAttribute('image','../../skin/images/refresh.png');
}
function AufnahmeTermineReihungstestEdit()
{
var rt_id = document.getElementById('aufnahmetermine-menulist-reihungstest').value;
var url="<?php echo APP_ROOT ?>vilesci/stammdaten/reihungstestverwaltung.php?reihungstest_id="+rt_id;
window.open(url);
}
+336 -334
View File
@@ -1,334 +1,336 @@
<?php
/* Copyright (C) 2015 fhcomplete.org
*
* 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: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
*/
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");
header("Pragma: no-cache");
header("Content-type: application/vnd.mozilla.xul+xml");
require_once('../../config/vilesci.config.inc.php');
require_once('../../config/global.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/variable.class.php');
require_once('../../include/prestudent.class.php');
require_once('../../include/studiengang.class.php');
$user=get_uid();
$variable = new variable();
if(!$variable->loadVariables($user))
{
die('Fehler beim Laden der Variablen:'.$variable->errormsg);
}
echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";
echo '<?xml-stylesheet href="'.APP_ROOT.'skin/tempus.css" type="text/css"?>';
echo '<?xml-stylesheet href="'.APP_ROOT.'content/bindings.css" type="text/css"?>';
echo '<?xml-stylesheet href="'.APP_ROOT.'content/datepicker/datepicker.css" type="text/css"?>';
$prestudent_id = filter_input(INPUT_GET,'prestudent_id');
echo '
<!DOCTYPE overlay [';
require('../../locale/'.$variable->variable->locale.'/fas.dtd');
echo ']>
';
?>
<window id="aufnahmetermine-window" title="aufnahmetermine"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="loadAufnahmeTermine(<?php echo "'".$prestudent_id."'"; ?>);"
>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/student/aufnahmetermine.js.php" />
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/functions.js.php" />
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/phpRequest.js.php" />
<vbox flex="1">
<popupset>
<menupopup id="aufnahmetermine-tree-popup">
<menuitem label="Entfernen" oncommand="aufnahmetermineDelete();" id="aufnahmetermine-tree-popup-delete" hidden="false"/>
</menupopup>
</popupset>
<groupbox>
<caption label="Studiengang" />
<hbox style="padding-top: 10px">
<?php
if(!defined('FAS_REIHUNGSTEST_AUFNAHMEGRUPPEN') || FAS_REIHUNGSTEST_AUFNAHMEGRUPPEN==true)
$aufnahmegruppe_visibility='';
else
$aufnahmegruppe_visibility='hidden="true"';
echo '<hbox '.$aufnahmegruppe_visibility.'>';
?>
<label value="Gruppe" control="aufnahmetermine-menulist-aufnahmegruppe"/>
<menulist id="aufnahmetermine-menulist-aufnahmegruppe" disabled="false"
datasources="rdf:null"
ref="http://www.technikum-wien.at/gruppen/liste">
<template>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/gruppen/rdf#gruppe_kurzbz"
label="rdf:http://www.technikum-wien.at/gruppen/rdf#bezeichnung"
uri="rdf:*"/>
</menupopup>
</template>
</menulist>
</hbox>
<label value="&aufnahmetermine-reihungstest.absolviert;" control="aufnahmetermine-checkbox-reihungstestangetreten"/>
<checkbox id="aufnahmetermine-checkbox-reihungstestangetreten" checked="true"/>
<label value="Gesamtpunkte" control="aufnahmetermine-textbox-gesamtpunkte"/>
<textbox id="aufnahmetermine-textbox-gesamtpunkte" disabled="true" maxlength="8" size="8"/>
<button id="aufnahmetermine-button-savegesamtpunkte" disabled="true" label="Speichern" oncommand="AufnahmeTermineSaveGesamtpunkte();"/>
<button id="aufnahmetermine-button-calculatetotal" disabled="true" label="Gesamtpunkte berechnen" oncommand="AufnahmeTermineCalculateTotal();"/>
</hbox>
</groupbox>
<groupbox>
<caption label="Allgemein" />
<hbox flex="1">
<grid id="aufnahmetermine-grid-detail" style="overflow:auto;margin:4px;" flex="1">
<columns >
<column flex="1"/>
<column flex="1"/>
</columns>
<rows>
<row>
<tree id="aufnahmetermine-tree" seltype="single" hidecolumnpicker="false" flex="1"
datasources="rdf:null" ref="http://www.technikum-wien.at/aufnahmetermine"
style="margin-left:10px;margin-right:10px;margin-bottom:5px;margin-top: 10px;" height="100px" enableColumnDrag="true"
onselect="AufnahmeTermineAuswahl()"
context="aufnahmetermine-tree-popup"
flags="dont-build-content"
>
<treecols>
<treecol id="aufnahmetermine-tree-datum" label="Datum" flex="3" hidden="false" primary="true"
class="sortDirectionIndicator"
sortActive="true"
sortDirection="ascending"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#datum_iso"/>
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-stufe" label="Stufe" flex="2" hidden="false"
class="sortDirectionIndicator"
sortActive="true"
sortDirection="ascending"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#stufe"/>
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-studiensemester" label="Studiensemester" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#studiensemester"/>
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-anmerkung" label="Anmerkung" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#anmerkung"/>
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-anmeldedatum" label="Anmeldedatum" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#anmeldedatum_iso"/>
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-ort" label="Ort" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#ort" />
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-punkte" label="Punkte" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#punkte" />
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-teilgenommen" label="Teilgen." flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#teilgenommen" />
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-ort_kurzbz" label="Ort" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#ort_kurzbz" />
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-rt_id" label="ReihungstestID" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#rt_id" />
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-person_id" label="PersonID" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#person_id" />
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-rt_person_id" label="RTPersonID" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#rt_person_id" />
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-studienplan_bezeichnung" label="Studienplan" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#studienplan_bezeichnung" />
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-studienplan_id" label="StudienplanID" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#studienplan_id" />
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-studienplan_studiengang" label="Stg" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#studienplan_studiengang" />
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-datum_iso" label="DatumISO" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#datum_iso"/>
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-anmeldedatum_iso" label="AnmeldedatumISO" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#anmeldedatum_iso"/>
<splitter class="tree-splitter"/>
</treecols>
<template>
<treechildren flex="1" >
<treeitem uri="rdf:*">
<treerow properties="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#properties">
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#datum"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#stufe"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#studiensemester"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#anmerkung"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#anmeldedatum"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#ort_kurzbz"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#punkte"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#teilgenommen"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#ort_kurzbz"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#rt_id"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#person_id"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#rt_person_id"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#studienplan_bezeichnung"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#studienplan_id"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#studienplan_studiengang"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#datum_iso"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#anmeldedatum_iso"/>
</treerow>
</treeitem>
</treechildren>
</template>
</tree>
<vbox>
<hbox>
<button id="aufnahmetermine-button-neu" label="Neu" oncommand="AufnahmeTermineNeu();"/>
<button id="aufnahmetermine-button-loeschen" label="Loeschen" oncommand="AufnahmeTermineDelete();"/>
</hbox>
<vbox hidden="true">
<label value="person_id" control="aufnahmetermine-textbox-person_id"/>
<textbox id="aufnahmetermine-textbox-person_id" disabled="true"/>
<label value="Neu" control="aufnahmetermine-checkbox-neu"/>
<checkbox id="aufnahmetermine-checkbox-neu" disabled="true" checked="false"/>
<label value="rt_person_id" control="aufnahmetermine-textbox-rt_person_id"/>
<textbox id="aufnahmetermine-textbox-rt_person_id" disabled="true"/>
</vbox>
<groupbox id="aufnahmetermine-groupbox" flex="1">
<caption label="Details"/>
<grid id="aufnahmetermine-grid-detail" style="overflow:auto;margin:4px;" flex="1">
<columns >
<column flex="1"/>
<column flex="5"/>
</columns>
<rows>
<row>
<label value="Reihungstest / Interview" control="aufnahmetermine-menulist-reihungstest"/>
<hbox>
<menulist id="aufnahmetermine-menulist-reihungstest" disabled="true"
datasources="rdf:null" flex="1" style="width:200px"
ref="http://www.technikum-wien.at/reihungstest/alle">
<template>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/reihungstest/rdf#reihungstest_id"
label="rdf:http://www.technikum-wien.at/reihungstest/rdf#bezeichnung"
tooltiptext="rdf:http://www.technikum-wien.at/reihungstest/rdf#bezeichnung"
uri="rdf:*"/>
</menupopup>
</template>
</menulist>
<toolbarbutton id="aufnahmetermine-button-reihungstest-refresh" image="../../skin/images/refresh.png" tooltiptext="Alle zukünftigen Reihungstests des Studiengangs laden" onclick="AufnahmeTermineReihungstestDropDownRefresh()"/>
<toolbarbutton id="aufnahmetermine-button-reihungstest-open" image="../../skin/images/edit.png" tooltiptext="Zur Reihungstestverwaltung" onclick="AufnahmeTermineReihungstestEdit()"/>
<spacer flex="1"/>
</hbox>
</row>
<row>
<label value="&tab-prestudent-aufnahme.anmeldung;" control="aufnahmetermine-textbox-anmeldungreihungstest"/>
<hbox>
<box class="Datum" id="aufnahmetermine-textbox-anmeldungreihungstest" disabled="true"/>
<button id="aufnahmetermine-button-anmeldungreihungstest-heute" label="Heute" oncommand="AufnahmeTermineAnmeldungreihungstestHeute()" disabled="true" style="margin:0px;"/>
</hbox>
</row>
<row>
<label value="&tab-prestudent-aufnahme.absolviert;" control="aufnahmetermine-checkbox-teilgenommen"/>
<checkbox id="aufnahmetermine-checkbox-teilgenommen" checked="true" disabled="true"/>
</row>
<row>
<label value="Reihungstest Studienplan" control="aufnahmetermine-menulist-studienplan"/>
<hbox>
<menulist id="aufnahmetermine-menulist-studienplan" disabled="true"
datasources="rdf:null" flex="1"
ref="http://www.technikum-wien.at/studienplan">
<template>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/studienplan/rdf#studienplan_id"
label="rdf:http://www.technikum-wien.at/studienplan/rdf#bezeichnung"
uri="rdf:*"/>
</menupopup>
</template>
</menulist>
<spacer flex="1"/>
</hbox>
</row>
<row>
<label value="Punkte" control="aufnahmetermine-textbox-punkte" />
<hbox>
<textbox id="aufnahmetermine-textbox-punkte" disabled="true" maxlength="8" size="6"/>
<toolbarbutton id="aufnahmetermine-button-reihungstest-punktesync" image="../../skin/images/transmit.png" tooltiptext="Reihungstest Ergebnis holen" onclick="AufnahemTermineReihungstestPunkteTransmit()"/>
<spacer flex="1" />
</hbox>
</row>
<groupbox id="aufnahmetermine-groupbox-vergleich-endpunkte" hidden="true">
<caption label="Vergleichswerte Reihungstestpunkte (Basisgebiete)"></caption>
<vbox style="padding: 10px;">
<spacer resize='none' height='10' flex="1"/>
<row>
<label value="Reihungstestpunkte (inkl. Physik)" control="aufnahmetermine-textbox-endpunkte-inkl-gebiete" style="margin-right: 7px;"/>
<hbox>
<textbox id="aufnahmetermine-textbox-endpunkte-inkl-gebiete" readonly="true" maxlength="8" size="6" flex="1"/>
<toolbarbutton image="../../skin/images/up.png" tooltiptext="Als Punkte setzen" onclick="setEndpunkteAsPunkte('aufnahmetermine-textbox-endpunkte-inkl-gebiete')"/>
</hbox>
</row>
<row>
<label value="Reihungstestpunkte (exkl. Physik)" control="aufnahmetermine-textbox-endpunkte-exkl-gebiete" />
<hbox>
<textbox id="aufnahmetermine-textbox-endpunkte-exkl-gebiete" readonly="true" maxlength="8" size="6" flex="1"/>
<toolbarbutton image="../../skin/images/up.png" tooltiptext="Als Punkte setzen" onclick="setEndpunkteAsPunkte('aufnahmetermine-textbox-endpunkte-exkl-gebiete')"/>
</hbox>
</row>
</vbox>
</groupbox>
</rows>
</grid>
<hbox>
<button id="aufnahmetermine-button-speichern" oncommand="AufnahmeTermineSpeichern()" label="Speichern" disabled="true"/>
<spacer flex="1" />
</hbox>
</groupbox>
</vbox>
</row>
</rows>
</grid>
</hbox>
</groupbox>
<spacer flex="1" />
</vbox>
</window>
<?php
/* Copyright (C) 2015 fhcomplete.org
*
* 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: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
*/
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");
header("Pragma: no-cache");
header("Content-type: application/vnd.mozilla.xul+xml");
require_once('../../config/vilesci.config.inc.php');
require_once('../../config/global.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/variable.class.php');
require_once('../../include/prestudent.class.php');
require_once('../../include/studiengang.class.php');
$user=get_uid();
$variable = new variable();
if(!$variable->loadVariables($user))
{
die('Fehler beim Laden der Variablen:'.$variable->errormsg);
}
echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";
echo '<?xml-stylesheet href="'.APP_ROOT.'skin/tempus.css" type="text/css"?>';
echo '<?xml-stylesheet href="'.APP_ROOT.'content/bindings.css" type="text/css"?>';
echo '<?xml-stylesheet href="'.APP_ROOT.'content/datepicker/datepicker.css" type="text/css"?>';
$prestudent_id = filter_input(INPUT_GET,'prestudent_id');
echo '
<!DOCTYPE overlay [';
require('../../locale/'.$variable->variable->locale.'/fas.dtd');
echo ']>
';
?>
<window id="aufnahmetermine-window" title="aufnahmetermine"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="loadAufnahmeTermine(<?php echo "'".$prestudent_id."'"; ?>);"
>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/student/aufnahmetermine.js.php" />
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/functions.js.php" />
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/phpRequest.js.php" />
<vbox flex="1">
<popupset>
<menupopup id="aufnahmetermine-tree-popup">
<menuitem label="Entfernen" oncommand="aufnahmetermineDelete();" id="aufnahmetermine-tree-popup-delete" hidden="false"/>
</menupopup>
</popupset>
<groupbox>
<caption label="Studiengang" />
<hbox style="padding-top: 10px">
<?php
if(!defined('FAS_REIHUNGSTEST_AUFNAHMEGRUPPEN') || FAS_REIHUNGSTEST_AUFNAHMEGRUPPEN==true)
$aufnahmegruppe_visibility='';
else
$aufnahmegruppe_visibility='hidden="true"';
echo '<hbox '.$aufnahmegruppe_visibility.'>';
?>
<label value="Gruppe" control="aufnahmetermine-menulist-aufnahmegruppe"/>
<menulist id="aufnahmetermine-menulist-aufnahmegruppe" disabled="false"
datasources="rdf:null"
ref="http://www.technikum-wien.at/gruppen/liste">
<template>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/gruppen/rdf#gruppe_kurzbz"
label="rdf:http://www.technikum-wien.at/gruppen/rdf#bezeichnung"
uri="rdf:*"/>
</menupopup>
</template>
</menulist>
</hbox>
<label value="&aufnahmetermine-reihungstest.absolviert;" control="aufnahmetermine-checkbox-reihungstestangetreten"/>
<checkbox id="aufnahmetermine-checkbox-reihungstestangetreten" checked="true"/>
<label value="Gesamtpunkte" control="aufnahmetermine-textbox-gesamtpunkte"/>
<textbox id="aufnahmetermine-textbox-gesamtpunkte" disabled="true" maxlength="8" size="8"/>
<button id="aufnahmetermine-button-savegesamtpunkte" disabled="true" label="Speichern" oncommand="AufnahmeTermineSaveGesamtpunkte();"/>
<button id="aufnahmetermine-button-calculatetotal" disabled="true" label="Gesamtpunkte berechnen" oncommand="AufnahmeTermineCalculateTotal();"/>
</hbox>
</groupbox>
<groupbox>
<caption label="Allgemein" />
<hbox flex="1">
<grid id="aufnahmetermine-grid-detail" style="overflow:auto;margin:4px;" flex="1">
<columns >
<column flex="1"/>
<column flex="1"/>
</columns>
<rows>
<row>
<tree id="aufnahmetermine-tree" seltype="single" hidecolumnpicker="false" flex="1"
datasources="rdf:null" ref="http://www.technikum-wien.at/aufnahmetermine"
style="margin-left:10px;margin-right:10px;margin-bottom:5px;margin-top: 10px;" height="100px" enableColumnDrag="true"
onselect="AufnahmeTermineAuswahl()"
context="aufnahmetermine-tree-popup"
flags="dont-build-content"
>
<treecols>
<treecol id="aufnahmetermine-tree-datum" label="Datum" flex="3" hidden="false" primary="true"
class="sortDirectionIndicator"
sortActive="true"
sortDirection="ascending"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#datum_iso"/>
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-stufe" label="Stufe" flex="2" hidden="false"
class="sortDirectionIndicator"
sortActive="true"
sortDirection="ascending"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#stufe"/>
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-studiensemester" label="Studiensemester" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#studiensemester"/>
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-anmerkung" label="Anmerkung" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#anmerkung"/>
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-anmeldedatum" label="Anmeldedatum" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#anmeldedatum_iso"/>
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-ort" label="Ort" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#ort" />
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-punkte" label="Punkte" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#punkte" />
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-teilgenommen" label="Teilgen." flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#teilgenommen" />
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-ort_kurzbz" label="Ort" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#ort_kurzbz" />
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-rt_id" label="ReihungstestID" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#rt_id" />
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-person_id" label="PersonID" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#person_id" />
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-rt_person_id" label="RTPersonID" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#rt_person_id" />
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-studienplan_bezeichnung" label="Studienplan" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#studienplan_bezeichnung" />
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-studienplan_id" label="StudienplanID" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#studienplan_id" />
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-studienplan_studiengang" label="Stg" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#studienplan_studiengang" />
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-datum_iso" label="DatumISO" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#datum_iso"/>
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-anmeldedatum_iso" label="AnmeldedatumISO" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#anmeldedatum_iso"/>
<splitter class="tree-splitter"/>
</treecols>
<template>
<treechildren flex="1" >
<treeitem uri="rdf:*">
<treerow properties="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#properties">
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#datum"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#stufe"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#studiensemester"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#anmerkung"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#anmeldedatum"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#ort_kurzbz"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#punkte"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#teilgenommen"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#ort_kurzbz"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#rt_id"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#person_id"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#rt_person_id"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#studienplan_bezeichnung"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#studienplan_id"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#studienplan_studiengang"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#datum_iso"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#anmeldedatum_iso"/>
</treerow>
</treeitem>
</treechildren>
</template>
</tree>
<vbox>
<hbox>
<button id="aufnahmetermine-button-neu" label="Neu" oncommand="AufnahmeTermineNeu();"/>
<button id="aufnahmetermine-button-loeschen" label="Loeschen" oncommand="AufnahmeTermineDelete();"/>
</hbox>
<vbox hidden="true">
<label value="person_id" control="aufnahmetermine-textbox-person_id"/>
<textbox id="aufnahmetermine-textbox-person_id" disabled="true"/>
<label value="studienplan_studiengang_kz" control="aufnahmetermine-textbox-studienplan_studiengang_kz"/>
<textbox id="aufnahmetermine-textbox-studienplan_studiengang_kz" disabled="true"/>
<label value="Neu" control="aufnahmetermine-checkbox-neu"/>
<checkbox id="aufnahmetermine-checkbox-neu" disabled="true" checked="false"/>
<label value="rt_person_id" control="aufnahmetermine-textbox-rt_person_id"/>
<textbox id="aufnahmetermine-textbox-rt_person_id" disabled="true"/>
</vbox>
<groupbox id="aufnahmetermine-groupbox" flex="1">
<caption label="Details"/>
<grid id="aufnahmetermine-grid-detail" style="overflow:auto;margin:4px;" flex="1">
<columns >
<column flex="1"/>
<column flex="5"/>
</columns>
<rows>
<row>
<label value="Reihungstest / Interview" control="aufnahmetermine-menulist-reihungstest"/>
<hbox>
<menulist id="aufnahmetermine-menulist-reihungstest" disabled="true"
datasources="rdf:null" flex="1" style="width:200px"
ref="http://www.technikum-wien.at/reihungstest/alle">
<template>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/reihungstest/rdf#reihungstest_id"
label="rdf:http://www.technikum-wien.at/reihungstest/rdf#bezeichnung"
tooltiptext="rdf:http://www.technikum-wien.at/reihungstest/rdf#bezeichnung"
uri="rdf:*"/>
</menupopup>
</template>
</menulist>
<toolbarbutton id="aufnahmetermine-button-reihungstest-refresh" image="../../skin/images/refresh.png" tooltiptext="Alle zukünftigen Reihungstests des Studiengangs laden" onclick="AufnahmeTermineReihungstestDropDownRefresh()"/>
<toolbarbutton id="aufnahmetermine-button-reihungstest-open" image="../../skin/images/edit.png" tooltiptext="Zur Reihungstestverwaltung" onclick="AufnahmeTermineReihungstestEdit()"/>
<spacer flex="1"/>
</hbox>
</row>
<row>
<label value="&tab-prestudent-aufnahme.anmeldung;" control="aufnahmetermine-textbox-anmeldungreihungstest"/>
<hbox>
<box class="Datum" id="aufnahmetermine-textbox-anmeldungreihungstest" disabled="true"/>
<button id="aufnahmetermine-button-anmeldungreihungstest-heute" label="Heute" oncommand="AufnahmeTermineAnmeldungreihungstestHeute()" disabled="true" style="margin:0px;"/>
</hbox>
</row>
<row>
<label value="&tab-prestudent-aufnahme.absolviert;" control="aufnahmetermine-checkbox-teilgenommen"/>
<checkbox id="aufnahmetermine-checkbox-teilgenommen" checked="true" disabled="true"/>
</row>
<row>
<label value="Reihungstest Studienplan" control="aufnahmetermine-menulist-studienplan"/>
<hbox>
<menulist id="aufnahmetermine-menulist-studienplan" disabled="true"
datasources="rdf:null" flex="1"
ref="http://www.technikum-wien.at/studienplan">
<template>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/studienplan/rdf#studienplan_id"
label="rdf:http://www.technikum-wien.at/studienplan/rdf#bezeichnung"
uri="rdf:*"/>
</menupopup>
</template>
</menulist>
<spacer flex="1"/>
</hbox>
</row>
<row>
<label value="Punkte" control="aufnahmetermine-textbox-punkte" />
<hbox>
<textbox id="aufnahmetermine-textbox-punkte" disabled="true" maxlength="8" size="6"/>
<toolbarbutton id="aufnahmetermine-button-reihungstest-punktesync" image="../../skin/images/transmit.png" tooltiptext="Reihungstest Ergebnis holen" onclick="AufnahemTermineReihungstestPunkteTransmit()"/>
<spacer flex="1" />
</hbox>
</row>
<groupbox id="aufnahmetermine-groupbox-vergleich-endpunkte" hidden="true">
<caption label="Vergleichswerte Reihungstestpunkte (Basisgebiete)"></caption>
<vbox style="padding: 10px;">
<spacer resize='none' height='10' flex="1"/>
<row>
<label value="Reihungstestpunkte (inkl. Physik)" control="aufnahmetermine-textbox-endpunkte-inkl-gebiete" style="margin-right: 7px;"/>
<hbox>
<textbox id="aufnahmetermine-textbox-endpunkte-inkl-gebiete" readonly="true" maxlength="8" size="6" flex="1"/>
<toolbarbutton image="../../skin/images/up.png" tooltiptext="Als Punkte setzen" onclick="setEndpunkteAsPunkte('aufnahmetermine-textbox-endpunkte-inkl-gebiete')"/>
</hbox>
</row>
<row>
<label value="Reihungstestpunkte (exkl. Physik)" control="aufnahmetermine-textbox-endpunkte-exkl-gebiete" />
<hbox>
<textbox id="aufnahmetermine-textbox-endpunkte-exkl-gebiete" readonly="true" maxlength="8" size="6" flex="1"/>
<toolbarbutton image="../../skin/images/up.png" tooltiptext="Als Punkte setzen" onclick="setEndpunkteAsPunkte('aufnahmetermine-textbox-endpunkte-exkl-gebiete')"/>
</hbox>
</row>
</vbox>
</groupbox>
</rows>
</grid>
<hbox>
<button id="aufnahmetermine-button-speichern" oncommand="AufnahmeTermineSpeichern()" label="Speichern" disabled="true"/>
<spacer flex="1" />
</hbox>
</groupbox>
</vbox>
</row>
</rows>
</grid>
</hbox>
</groupbox>
<spacer flex="1" />
</vbox>
</window>
File diff suppressed because it is too large Load Diff
+170 -95
View File
@@ -69,6 +69,10 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<row>
<label value="Person ID" control="student-detail-textbox-person_id"/>
<hbox><textbox id="student-detail-textbox-person_id" readonly="true" maxlength="16" size="16"/></hbox>
<label value="Zugangscode" control="student-detail-zugangscode"/>
<label id="label-student-detail-link_bewerbungstool" hidden="true" value=""></label>
<label class="text-link" href="#" id="label-student-detail-zugangscode" value="" onclick="window.open(document.getElementById('label-student-detail-link_bewerbungstool').value)"/>
</row>
<row>
<label value="Anrede" control="student-detail-textbox-anrede"/>
@@ -496,105 +500,176 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
</rows>
</grid>
</groupbox>
<groupbox id="student-detail-groupbox-rollen">
<caption label="Status" />
<tree id="student-prestudent-tree-rolle" seltype="single" hidecolumnpicker="false" flex="1"
datasources="rdf:null" ref="http://www.technikum-wien.at/prestudentrolle/liste"
style="margin-left:10px;margin-right:10px;margin-bottom:5px;" height="200px" enableColumnDrag="true"
flags="dont-build-content"
context="student-prestudent-rolle-tree-popup"
ondblclick="StudentRolleBearbeiten()"
>
<treecols>
<treecol id="student-prestudent-tree-rolle-status_kurzbz" label="Kurzbz" flex="2" hidden="false" primary="true" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#status_kurzbz"/>
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-studiensemester_kurzbz" label="StSem" flex="3" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#studiensemester_kurzbz"/>
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-ausbildungssemester" label="Semester" flex="1" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#ausbildungssemester"
sorthints="integer"/>
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-lehrverband" label="Lehrverband" flex="1" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#lehrverband" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-datum" label="Datum" flex="2" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#datum" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-orgform_kurzbz" label="Organisationsform" flex="2" hidden="true" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#orgform_kurzbz" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-prestudent_id" label="PrestudentInID" flex="2" hidden="true" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#prestudent_id" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-studienplan_id" label="StudienplanID" flex="2" hidden="true" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#studienplan_id" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-studienplan_bezeichnung" label="Studienplan" flex="2" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#studienplan_bezeichnung" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-anmerkung" label="Anmerkung" flex="2" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#anmerkung" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-bestaetigt_von" label="BestaetigtVon" flex="1" hidden="true" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#bestaetigt_von" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-bestaetigt_am" label="BestaetigtAm" flex="1" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#bestaetigt_Am" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-bewerbung_abgeschicktamum" label="AbgeschicktAm" flex="1" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#bewerbung_abgeschicktamum" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-statusgrund" label="Statusgrund" flex="1" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#statusgrund" />
<splitter class="tree-splitter"/>
</treecols>
<template>
<rule>
<treechildren flex="1" >
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#status_kurzbz"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#studiensemester_kurzbz"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#ausbildungssemester"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#lehrverband"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#datum"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#orgform_kurzbz"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#prestudent_id"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#studienplan_id"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#studienplan_bezeichnung"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#anmerkung"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#bestaetigt_von"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#bestaetigt_am"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#bewerbung_abgeschicktamum"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#statusgrund"/>
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
</groupbox>
<hbox>
<spacer flex="1" />
<button id="student-prestudent-button-save" label="Speichern" oncommand="StudentPrestudentSave();" disabled="true"/>
</hbox>
<hbox flex="1">
<groupbox id="student-detail-groupbox-rollen" flex="3">
<caption label="Status" />
<tree id="student-prestudent-tree-rolle" seltype="single" hidecolumnpicker="false" flex="1"
datasources="rdf:null" ref="http://www.technikum-wien.at/prestudentrolle/liste"
style="margin-left:10px;margin-right:10px;margin-bottom:5px;" height="200px" enableColumnDrag="true"
flags="dont-build-content"
context="student-prestudent-rolle-tree-popup"
ondblclick="StudentRolleBearbeiten()"
>
<treecols>
<treecol id="student-prestudent-tree-rolle-status_kurzbz" label="Kurzbz" flex="2" hidden="false" primary="true" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#status_kurzbz"/>
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-studiensemester_kurzbz" label="StSem" flex="2" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#studiensemester_kurzbz"/>
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-ausbildungssemester" label="Sem" flex="1" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#ausbildungssemester"
sorthints="integer"/>
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-lehrverband" label="Lehrverband" flex="1" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#lehrverband" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-datum" label="Datum" flex="2" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#datum" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-orgform_kurzbz" label="Organisationsform" flex="2" hidden="true" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#orgform_kurzbz" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-prestudent_id" label="PrestudentInID" flex="2" hidden="true" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#prestudent_id" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-studienplan_id" label="StudienplanID" flex="2" hidden="true" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#studienplan_id" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-studienplan_bezeichnung" label="Studienplan" flex="2" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#studienplan_bezeichnung" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-anmerkung" label="Anmerkung" flex="2" hidden="true" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#anmerkung" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-bestaetigt_von" label="BestaetigtVon" flex="1" hidden="true" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#bestaetigt_von" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-bestaetigt_am" label="BestaetigtAm" flex="1" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#bestaetigt_Am" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-bewerbung_abgeschicktamum" label="AbgeschicktAm" flex="1" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#bewerbung_abgeschicktamum" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-statusgrund" label="Statusgrund" flex="1" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#statusgrund" />
<splitter class="tree-splitter"/>
</treecols>
<template>
<rule>
<treechildren flex="1" >
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#status_kurzbz"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#studiensemester_kurzbz"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#ausbildungssemester"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#lehrverband"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#datum"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#orgform_kurzbz"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#prestudent_id"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#studienplan_id"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#studienplan_bezeichnung"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#anmerkung"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#bestaetigt_von"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#bestaetigt_am"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#bewerbung_abgeschicktamum"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#statusgrund"/>
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
</groupbox>
<groupbox id="student-detail-groupbox-historie" flex="2">
<caption label="Gesamthistorie" />
<vbox flex="1">
<tree id="historie-tree" seltype="single" hidecolumnpicker="true" flex="1"
datasources="rdf:null" ref="http://www.technikum-wien.at/prestudenthistorie/liste"
style="margin-left:10px;margin-right:10px;margin-bottom:5px;" height="100px"
persist="hidden, height"
context="historie-tree-popup"
>
<treecols>
<treecol id="historie-treecol-studiensemester_kurzbz" label="StSem" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#studiensemester_kurzbz" onclick="historieTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="historie-treecol-prioritaet" label="Prio" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#prioritaet" onclick="historieTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="historie-treecol-studiengang" label="Stg" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#studiengang" onclick="historieTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="historie-treecol-orgform_kurzbz" label="Orgform" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#orgform_kurzbz" onclick="historieTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="historie-treecol-studienplan_bezeichnung" label="Studienplan" flex="3" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#studienplan_bezeichnung" onclick="historieTreeSort()"/>
<splitter class="tree-splitter"/>
<!--<treecol id="historie-treecol-reihung_absolviert" label="Reihung absolviert" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#reihung_absolviert" onclick="historieTreeSort()"/>
<splitter class="tree-splitter"/>-->
<treecol id="historie-treecol-uid" label="UID" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#uid" onclick="historieTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="historie-treecol-status" label="Status" flex="4" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#status" onclick="historieTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="historie-treecol-prestudent_id" label="PrestudentID" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#prestudent_id" onclick="historieTreeSort()"/>
<splitter class="tree-splitter"/>
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell properties="Aktiv_rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#aktiv rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#bold" label="rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#studiensemester_kurzbz" />
<treecell properties="Aktiv_rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#aktiv rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#bold" label="rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#prioritaet" />
<treecell properties="Aktiv_rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#aktiv rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#bold" label="rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#studiengang" />
<treecell properties="Aktiv_rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#aktiv rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#bold" label="rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#orgform_kurzbz" />
<treecell properties="Aktiv_rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#aktiv rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#bold" label="rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#studienplan_bezeichnung" />
<treecell properties="Aktiv_rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#aktiv rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#bold" label="rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#uid" />
<treecell properties="Aktiv_rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#aktiv rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#bold" label="rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#status" />
<treecell properties="Aktiv_rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#aktiv rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#bold" label="rdf:http://www.technikum-wien.at/prestudenthistorie/rdf#prestudent_id" />
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
</vbox>
</groupbox>
</hbox>
</vbox>
</overlay>
+20
View File
@@ -1055,6 +1055,8 @@ function StudentAuswahl()
status=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#status" ));
alias=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#alias" ));
matr_nr=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#matr_nr" ));
zugangscode=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zugangscode" ));
link_bewerbungstool=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#link_bewerbungstool" ));
//Bei Incoming wird das Menue zur Statusaenderung deaktiviert
if(status=='Incoming')
@@ -1099,6 +1101,8 @@ function StudentAuswahl()
document.getElementById('student-detail-textbox-person_id').value = person_id;
document.getElementById('student-detail-textbox-alias').value=alias;
document.getElementById('student-detail-textbox-matr_nr').value=matr_nr;
document.getElementById('label-student-detail-zugangscode').value=zugangscode;
document.getElementById('label-student-detail-link_bewerbungstool').value=link_bewerbungstool;
//PreStudent Daten holen
@@ -1187,6 +1191,22 @@ function StudentAuswahl()
rollentree.database.AddDataSource(StudentDetailRolleTreeDatasource);
StudentDetailRolleTreeDatasource.addXMLSinkObserver(StudentDetailRolleTreeSinkObserver);
var historietree = document.getElementById('historie-tree');
url_historie='<?php echo APP_ROOT;?>rdf/prestudenthistorie.rdf.php?prestudent_id='+prestudent_id+"&"+gettimestamp();
//Alte DS entfernen
var oldDatasourcesHistorie = historietree.database.GetDataSources();
while(oldDatasourcesHistorie.hasMoreElements())
{
historietree.database.RemoveDataSource(oldDatasourcesHistorie.getNext());
}
//Refresh damit die entfernten DS auch wirklich entfernt werden
historietree.builder.rebuild();
var HistorieTreeDatasource = rdfService.GetDataSource(url_historie);
HistorieTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
historietree.database.AddDataSource(HistorieTreeDatasource);
if(uid=='')
{
//PRESTUDENT
@@ -247,6 +247,7 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN')
<label value="Lehreinheit" control="student-projektarbeit-menulist-lehreinheit"/>
<menulist id="student-projektarbeit-menulist-lehreinheit" disabled="true"
datasources="rdf:null" flex="1"
style="max-width: 600px"
ref="http://www.technikum-wien.at/lehreinheit/liste" >
<template>
<menupopup>
+1070 -889
View File
File diff suppressed because it is too large Load Diff
+53 -31
View File
@@ -350,9 +350,10 @@ class pruefling extends basis_db
* definiert sind, bei der Berechnung der Endpunkte nicht berücksichtigt.
* @param $studiengang_kz Wenn eine Studiengangskennzahl übergeben wird, dann werden nur die Punkte der
* Basis-Fragengebiete (ohne Quereinsteiger) bei der Berechnung der Endpunkte berücksichtigt.
* @param $gewichtung_studiengang_kz Wenn diese studiengang_kz übergeben wird, wird das Ergebnis entsprechend des Gewichtungsschemas des Studienganges gewichtet
* @return Endpunkte des Reihungstests oder False wenn keine Punkte vorhanden
*/
public function getReihungstestErgebnisPerson($person_id, $punkte=false, $reihungstest_id, $has_excluded_gebiete = false, $studiengang_kz = null)
public function getReihungstestErgebnisPerson($person_id, $punkte=false, $reihungstest_id, $has_excluded_gebiete = false, $studiengang_kz = null, $gewichtung_studiengang_kz = null)
{
if(is_numeric($reihungstest_id))
{
@@ -415,39 +416,57 @@ class pruefling extends basis_db
* Ergebniss der beiden Tests summiert bekommen
* Im Zweifelsfall wird der neuere Reihungstest genommen */
$qry .= "
AND prestudent_id = (
SELECT
prestudent_id
FROM
public.tbl_rt_person
JOIN
public.tbl_prestudent USING(person_id)
JOIN
public.tbl_prestudentstatus USING (prestudent_id, studienplan_id)
JOIN
tbl_reihungstest ON (
tbl_rt_person.rt_id = tbl_reihungstest.reihungstest_id
)
WHERE
tbl_rt_person.person_id = ".$this->db_add_param($person_id, FHC_INTEGER)."
AND
tbl_rt_person.rt_id = ".$this->db_add_param($reihungstest_id, FHC_INTEGER)."
AND
tbl_prestudentstatus.status_kurzbz='Interessent'
AND
tbl_prestudentstatus.studiensemester_kurzbz = tbl_reihungstest.studiensemester_kurzbz
ORDER BY
tbl_reihungstest.datum DESC, tbl_prestudent.priorisierung ASC LIMIT 1
)
";
AND prestudent_id = (
SELECT
prestudent_id
FROM
public.tbl_rt_person
JOIN
public.tbl_prestudent USING(person_id)
JOIN
public.tbl_prestudentstatus USING (prestudent_id, studienplan_id)
JOIN
tbl_reihungstest ON (
tbl_rt_person.rt_id = tbl_reihungstest.reihungstest_id
)
WHERE
tbl_rt_person.person_id = ".$this->db_add_param($person_id, FHC_INTEGER)."
AND
tbl_rt_person.rt_id = ".$this->db_add_param($reihungstest_id, FHC_INTEGER)."
AND
tbl_prestudentstatus.status_kurzbz='Interessent'
AND
tbl_prestudentstatus.studiensemester_kurzbz = tbl_reihungstest.studiensemester_kurzbz
ORDER BY tbl_reihungstest.datum DESC, tbl_prestudent.priorisierung ASC LIMIT 1
)
";
//calculate Gewichte for Studiengang if set
$gewichte = array();
if (isset($gewichtung_studiengang_kz))
{
$ablauf = new ablauf();
$ablauf->getAblaufGebiete($gewichtung_studiengang_kz);
foreach ($ablauf->result as $abl)
{
$gewichte[$abl->gebiet_id] = $abl->gewicht;
}
}
if($result = $this->db_query($qry))
{
// Wenn keine Eintraege vorhanden dann false
if($this->db_num_rows($result)==0)
return false;
$summeGewicht = 0;
while($row = $this->db_fetch_object($result))
{
if (!isset($row->punkte))
continue;
//wenn maxpunkte ueberschritten wurde -> 100%
if($row->punkte>=$row->maxpunkte)
{
@@ -455,17 +474,20 @@ class pruefling extends basis_db
$row->punkte = $row->maxpunkte;
}
else
$prozent = ($row->punkte/$row->maxpunkte)*100;
$prozent = (($row->punkte + $row->offsetpunkte)/($row->maxpunkte + $row->offsetpunkte))*100;
if($punkte)
{
$ergebnis +=$row->punkte;
$ergebnis += $row->punkte;
}
else
$ergebnis+=$prozent*$row->gewicht;
{
$gew = isset($gewichte[$row->gebiet_id]) ? $gewichte[$row->gebiet_id] : 1;
$ergebnis += $prozent * $gew;
$summeGewicht += $gew;
}
}
return $ergebnis;
return $summeGewicht > 0 ? $ergebnis/$summeGewicht : $ergebnis;
}
else
{
+7
View File
@@ -0,0 +1,7 @@
.mce-tinymce .mce-container .mce-panel {
border-width: 0px;
}
.mce-panel {
border-width: 0px !important;
}
+46
View File
@@ -0,0 +1,46 @@
.div-table {
display: table;
}
.div-row {
display: table-row;
}
.div-cell {
display: table-cell;
}
.div-cell-label {
display: table-cell;
}
label[required-field=true]::after {
content: "*";
}
.div-cell-data {
display: table-cell;
}
.halign-right {
text-align: right;
margin-left: auto;
margin-right: 0;
}
.valign-middle {
vertical-align: middle;
}
.valign-top {
vertical-align: top;
padding-top: 1px;
}
.width-150px {
width: 150px;
}
.width-30px {
width: 30px;
}
+210
View File
@@ -0,0 +1,210 @@
/* Smaller subject field */
input[type=text] {
height: 28px;
padding: 0;
}
.msgfield label {
margin-bottom: 0 !important;
margin-top: 3px;
}
@media screen and (min-width: 1200px) {
.col-lg-1.msgfieldcol-left {
width: 13%;
}
.col-lg-11.msgfieldcol-right {
width: 87%;
}
}
#sendButton {
width: 120px;
}
/* Overwrites the Widget.css class */
div .width-150px {
width: 200px;
}
.panel-heading {
font-size: 16px;
}
.signatureblock {
color: grey;
}
.signatureblocklink {
color: grey;
}
.signatureblocklink:hover {
color: #337ab7;
}
.rwd-line {
display: block;
}
@media screen and (min-width: 1831px) {
.rwd-line {
display: inline;
}
}
.panel-heading {
font-size: 16px;
}
@media screen and (min-width: 1500px) {
#msgtable {
width: 70%;
}
}
#msgtable td {
border: none !important;
}
#replybutton {
width: 120px;
}
/* STYLE THE HTML ELEMENTS (INCLUDES RESETS FOR THE DEFAULT FIELDSET AND LEGEND STYLES) */
fieldset {
margin: 0;
padding: 2rem;
box-sizing: border-box;
display: block;
border: none;
border: solid 1px #CCC;
min-width: 0;
background-color: #FFF;
}
fieldset legend {
margin: 0 0 1.5rem;
padding: 0;
width: 100%;
float: left;
display: table;
font-size: 1.5rem;
line-height: 140%;
font-weight: 600;
color: #333;
}
fieldset legend + * {
clear: both;
}
body:not(:-moz-handler-blocked) fieldset {
display: table-cell;
}
/* TOGGLE STYLING */
.toggle {
margin: 0 0 1.5rem;
box-sizing: border-box;
font-size: 0;
flex-flow: row nowrap;
justify-content: flex-start;
align-items: stretch;
}
.toggle input {
width: 0;
height: 0;
position: absolute;
left: -9999px;
}
.toggle input + label {
margin: 0;
padding: .75rem 2rem;
box-sizing: border-box;
position: relative;
display: inline-block;
border: solid 1px #DDD;
background-color: #FFF;
font-size: 14px;
line-height: 140%;
font-weight: 600;
text-align: center;
box-shadow: 0 0 0 rgba(255, 255, 255, 0);
transition: border-color .15s ease-out, color .25s ease-out, background-color .15s ease-out, box-shadow .15s ease-out;
cursor: pointer;
}
.toggle input + label:first-of-type {
border-radius: 6px 0 0 6px;
border-right: none;
}
.toggle input + label:last-of-type {
border-radius: 0 6px 6px 0;
border-left: none;
}
.toggle input:hover + label {
border-color: #213140;
}
.toggle input:checked + label {
background-color: #337ab7;
color: #FFF;
box-shadow: 0 0 10px rgba(102, 179, 251, 0.5);
border-color: #337ab7;
z-index: 1;
}
.toggle input:focus + label {
outline: dotted 1px #CCC;
outline-offset: .45rem;
}
@media (max-width: 800px) {
.toggle input + label {
padding: .75rem .25rem;
flex: 0 0 50%;
justify-content: center;
align-items: center;
}
}
/* STYLING FOR THE STATUS HELPER TEXT FOR THE DEMO */
.status {
margin: 0;
font-size: 1rem;
font-weight: 400;
}
.status span {
font-weight: 600;
color: #B6985A;
}
.status span:first-of-type {
display: inline;
}
.status span:last-of-type {
display: none;
}
@media (max-width: 800px) {
.status span:first-of-type {
display: none;
}
.status span:last-of-type {
display: inline;
}
}
.buttonsSpacer {
display: inline-block;
width: 30px;
}
-17
View File
@@ -1,17 +0,0 @@
.panel-heading {
font-size: 16px;
}
@media screen and (min-width: 1500px) {
#msgtable {
width: 70%;
}
}
#msgtable td {
border: none !important;
}
#replybutton {
width: 120px;
}
-25
View File
@@ -1,25 +0,0 @@
.panel-heading {
font-size: 16px;
}
.signatureblock {
color: grey;
}
.signatureblocklink {
color: grey;
}
.signatureblocklink:hover {
color: #337ab7;
}
.rwd-line {
display: block;
}
@media screen and (min-width: 1831px) {
.rwd-line {
display: inline;
}
}
-24
View File
@@ -1,24 +0,0 @@
/*smaller subject field*/
input[type=text] {
height: 28px;
padding: 0;
}
.msgfield label {
margin-bottom: 0 !important;
margin-top: 3px;
}
@media screen and (min-width: 1200px) {
.col-lg-1.msgfieldcol-left {
width: 13%;
}
.col-lg-11.msgfieldcol-right {
width: 87%;
}
}
#sendButton {
width: 120px;
}
+1 -1
View File
@@ -79,7 +79,7 @@ var FHC_DialogLib = {
buttons: [{
text: "Ok",
click: function() {
$(this).dialog("close");
$("#fhc-dialoglib-dialog").remove();
}
}]
});
+1 -1
View File
@@ -680,7 +680,7 @@ var InfocenterDetails = {
sendFreigabeMessage: function(prestudentid, vorlage_kurzbz, msgvars)
{
FHC_AjaxClient.ajaxCallPost(
'system/Messages/sendJson',
'system/messages/Messages/sendExplicitTemplateJson',
{
"prestudents": prestudentid,
"vorlage_kurzbz": vorlage_kurzbz,
@@ -26,7 +26,7 @@ var InfocenterPersonDataset = {
*/
appendTableActionsHtml: function(infocenter_studiensemester)
{
var url = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + "/system/Messages/write";
var url = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + "/system/messages/Messages/writeTemplate";
var formHtml = '<form id="sendMsgsForm" method="post" action="'+ url +'" target="_blank"></form>';
$("#datasetActionsTop").before(formHtml);
@@ -54,7 +54,7 @@ var MessageList = {
var recid = id.substr(id.indexOf('_') + 1);
FHC_AjaxClient.ajaxCallGet(
'system/Messages/getMessageFromIds',
'system/messages/Messages/getMessageFromIds',
{
"msg_id": msgid,
"receiver_id": recid
+12 -11
View File
@@ -1,6 +1,6 @@
/**
* JS used by view system/messages/messageWrite
*/
// ********************************************************
// JS used by view system/messages/htmlWriteTemplate
// ********************************************************
function tinymcePreviewSetContent()
{
@@ -20,10 +20,11 @@ function tinymcePreviewSetContent()
function parseMessageText(receiver_id, text)
{
FHC_AjaxClient.ajaxCallGet(
"system/Messages/parseMessageText",
"system/messages/Messages/parseMessageText",
{
person_id: receiver_id,
text: text
receiver_id: receiver_id,
text: text,
type: $("#type").val()
},
{
successCallback: function(data, textStatus, jqXHR) {
@@ -34,7 +35,7 @@ function parseMessageText(receiver_id, text)
}
else if (FHC_AjaxClient.isError(data))
{
alert(data.retval);
FHC_DialogLib.alertError(data.retval);
}
}
}
@@ -52,12 +53,12 @@ $(document).ready(function ()
});
tinymce.init({
selector: "#tinymcePreview",
plugins: "autoresize",
menubar: false,
toolbar: false,
statusbar: false,
readonly: 1,
selector: "#tinymcePreview",
plugins: "autoresize",
autoresize_min_height: 150,
autoresize_bottom_margin: 10
});
@@ -97,7 +98,7 @@ $(document).ready(function ()
}
else
{
alert("Subject and text are required fields!");
FHC_DialogLib.alertInfo("Subject and text are required fields!");
}
});
}
@@ -111,7 +112,7 @@ $(document).ready(function ()
if (vorlage_kurzbz != '')
{
FHC_AjaxClient.ajaxCallGet(
"system/Messages/getVorlage",
"system/messages/Messages/getVorlage",
{
vorlage_kurzbz: vorlage_kurzbz
},
+1 -1
View File
@@ -23,7 +23,7 @@ $(document).ready(function ()
}
else
{
alert("Subject and text are required fields!");
FHC_DialogLib.alertInfo("Subject and text are required fields!");
}
});
}
+254
View File
@@ -0,0 +1,254 @@
// ***********************************************************************
// List all personal messages, used by view system/messages/ajaxRead
// ***********************************************************************
// Global variable that contains tha tabulator instance
var tableMessageLst;
var selectedToggleMessage = "received";
/**
* Use DialogLib to display a Generic error
*/
function readMessagesGenericError()
{
FHC_DialogLib.alertError(FHC_PhrasesLib.t("global", "genericError"));
}
/**
* Gets all the received messages
*/
function getReceivedMessages()
{
tableMessageLst.hideColumn("to");
tableMessageLst.showColumn("from");
_getMessages(FHC_JS_DATA_STORAGE_OBJECT.called_path + "/listReceivedMessages");
}
/**
* Gets all the sent messages
*/
function getSentMessages()
{
tableMessageLst.hideColumn("from");
tableMessageLst.showColumn("to");
_getMessages(FHC_JS_DATA_STORAGE_OBJECT.called_path + "/listSentMessages");
}
/**
* Change the TinyMCE content
*/
function changeTinyMCE(row)
{
if (row == null)
{
tinyMCE.get("readMessagePanel").setContent('');
}
else
{
tinyMCE.get("readMessagePanel").setContent(row.getData().body);
}
}
/**
* Called on Tabulator row click event
* - If a clicked message is unread thes is set as read
* - Change the TinyMCE content with the clicked message body
*/
function rowClick(e, row)
{
// If in received mode and the message is not unread
if (selectedToggleMessage == "received" && row.getData().status == "0")
{
FHC_AjaxClient.ajaxCallPost(
FHC_JS_DATA_STORAGE_OBJECT.called_path + "/setMessageRead",
{
message_id: row.getData().message_id,
statusPersonId: row.getData().statusPersonId
},
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.isSuccess(data))
{
rowFormatter(row, "normal"); // format row
row.getData().status = "1"; // update status to read
}
else
{
readMessagesGenericError();
}
},
errorCallback: readMessagesGenericError,
veilTimeout: 300
}
);
}
// If NOT in send mode
if (selectedToggleMessage == "received")
{
$("#replyMessage").show();
}
changeTinyMCE(row); // Change TinyMCE content
}
/**
* Radio button click event to switch between received and sent messages
*/
function toggleMessages()
{
if ($(this)[0].id == "received")
{
selectedToggleMessage = "received";
getReceivedMessages();
}
else
{
selectedToggleMessage = "send";
$("#replyMessage").hide();
getSentMessages();
}
changeTinyMCE(null); // clean tinymce
tableMessageLst.redraw(); // redraw table after its content is changed
}
/**
* Formats tabulator rows
*/
function rowFormatter(row, fontWeight = 700)
{
if (row.getData().status == "0")
{
var cells = row.getElement().childNodes;
for (var i = 0; i < cells.length; i++)
{
cells[i].style.fontWeight = fontWeight;
}
}
}
/**
* Get received/sent messages and change tabulator content
*/
function _getMessages(getMessagesURL)
{
tableMessageLst.replaceData(Array());
FHC_AjaxClient.ajaxCallGet(
getMessagesURL,
null,
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.hasData(data))
{
var messages = null;
try
{
messages = JSON.parse(FHC_AjaxClient.getData(data));
}
catch (syntaxError) {}
if ($.isArray(messages))
{
try
{
tableMessageLst.replaceData(messages);
}
catch (syntaxError)
{
readMessagesGenericError();
}
}
}
},
errorCallback: readMessagesGenericError,
veilTimeout: 300
}
);
}
/**
* Open new tab/window to write a new message
*/
function writeNewMessage()
{
window.location = FHC_JS_DATA_STORAGE_OBJECT.app_root +
FHC_JS_DATA_STORAGE_OBJECT.ci_router + "/" +
FHC_JS_DATA_STORAGE_OBJECT.called_path +
"/write";
}
/**
* Open new tab/window to reply to a received message
*/
function replyMessage()
{
var selectedMessages = tableMessageLst.getSelectedData();
if ($.isArray(selectedMessages))
{
var selectedMessage = selectedMessages[0];
window.open("writeReply?token=" + selectedMessage.token, "_blank");
}
else //
{
FHC_DialogLib.alertInfo(FHC_PhrasesLib.t("ui", "pleaseSelectMessage"));
}
}
/**
* Start me up!
*/
$(document).ready(function () {
$("#replyMessage").hide();
// TinyMCE initialization
tinymce.init({
selector: "#readMessagePanel",
plugins: "autoresize",
menubar: false,
toolbar: false,
statusbar: false,
readonly: 1,
autoresize_min_height: 300,
autoresize_bottom_margin: 0
});
// Tabulator initialization
tableMessageLst = new Tabulator("#lstMessagesPanel", {
height: "270px",
layout: "fitColumns",
selectable: 1,
layoutColumnsOnNewData: true,
columns: [
{title: "Subject", field: "subject", responsive: 0},
{title: "From", field: "from", visible: false},
{title: "To", field: "to", visible: false},
{title: "Date", field: "sent", sorter: "datetime"}
],
rowClick: rowClick,
rowFormatter: rowFormatter
});
// Bind radio buttons click event with toggleMessages function
$("#toggleMessages input").click(toggleMessages);
// Bind write a new message button
$("#writeMessage").click(writeNewMessage);
// Bind reply to a message button
$("#replyMessage").click(replyMessage);
// First retrieve the received message and populate the tabulator
getReceivedMessages();
});
+63
View File
@@ -0,0 +1,63 @@
// ****************************************************************************************
// Write a message to an organisation unit, used by view system/messages/ajaxWrite
// ****************************************************************************************
/**
*
*/
function sendMessageToOU()
{
if ($('#organisationUnit').val() == 0)
{
FHC_DialogLib.alertWarning(FHC_PhrasesLib.t("global", "notValidOE"));
}
else
{
FHC_AjaxClient.ajaxCallPost(
FHC_JS_DATA_STORAGE_OBJECT.called_path + '/sendMessageToOU',
{
receiverOU: $('#organisationUnit').val(),
subject: $('#subject').val(),
body: tinyMCE.get("body").getContent()
},
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.isSuccess(data))
{
window.location = FHC_JS_DATA_STORAGE_OBJECT.app_root +
FHC_JS_DATA_STORAGE_OBJECT.ci_router + "/" +
FHC_JS_DATA_STORAGE_OBJECT.called_path +
"/read";
}
else
{
FHC_DialogLib.alertError(FHC_PhrasesLib.t("global", "genericError"));
}
},
errorCallback: function() {
FHC_DialogLib.alertError(FHC_PhrasesLib.t("global", "genericError"));
},
veilTimeout: 300
}
);
}
}
/**
*
*/
$(document).ready(function () {
//
tinymce.init({
selector: "#body",
plugins: "autoresize",
autoresize_min_height: 150,
autoresize_max_height: 600,
autoresize_bottom_margin: 10
});
$('#sendButton').click(sendMessageToOU);
});
+48
View File
@@ -0,0 +1,48 @@
// ****************************************************************************************
// Write a reply to a received message, used by view system/messages/ajaxWriteReply
// ****************************************************************************************
/**
*
*/
function sendReply()
{
FHC_AjaxClient.ajaxCallPost(
FHC_JS_DATA_STORAGE_OBJECT.called_path + '/sendMessageReply',
{
receiver_id: $('#receiver_id').val(),
relationmessage_id: $('#relationmessage_id').val(),
token: $('#token').val(),
subject: $('#subject').val(),
body: tinyMCE.get("body").getContent()
},
{
successCallback: function(data, textStatus, jqXHR) {
FHC_DialogLib.alertSuccess("Message sent succesfully");
},
errorCallback: function() {
FHC_DialogLib.alertError("Error");
},
veilTimeout: 300
}
);
}
/**
*
*/
$(document).ready(function () {
//
tinymce.init({
selector: "#body",
plugins: "autoresize",
autoresize_min_height: 150,
autoresize_max_height: 600,
autoresize_bottom_margin: 10
});
$('#sendButton').click(sendReply);
});
+9 -8
View File
@@ -113,11 +113,11 @@ if($prestudent_id!='')
// * Endpunkte über alle Basisgebiete
if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE)
{
$endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, true, $row->reihungstest_id, false, $row->studiengang_kz);
$endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, true, $row->reihungstest_id, false, $row->studiengang_kz, $studiengang_kz);
}
else
{
$endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, false, $row->reihungstest_id, false, $row->studiengang_kz);
$endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, false, $row->reihungstest_id, false, $row->studiengang_kz, $studiengang_kz);
}
// * ggf. Endpunkte exklusive bestimmter Gebiete, die in der config-Datei gesetzt sind
@@ -125,11 +125,11 @@ if($prestudent_id!='')
{
if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE)
{
$endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, true, $row->reihungstest_id, true, $row->studiengang_kz);
$endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, true, $row->reihungstest_id, true, $row->studiengang_kz, $studiengang_kz);
}
else
{
$endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, false, $row->reihungstest_id, true, $row->studiengang_kz);
$endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, false, $row->reihungstest_id, true, $row->studiengang_kz, $studiengang_kz);
}
}
@@ -174,22 +174,22 @@ elseif($rt_person_id!='')
// * Endpunkte über alle Basisgebiete
if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE)
{
$endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, true, $reihungstest->reihungstest_id, false, $studiengang_kz);
$endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, true, $reihungstest->reihungstest_id, false, $studiengang_kz, $studiengang_kz);
}
else
{
$endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, false, $reihungstest->reihungstest_id, false, $studiengang_kz);
$endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, false, $reihungstest->reihungstest_id, false, $studiengang_kz, $studiengang_kz);
}
// * ggf. Endpunkte exklusive bestimmter Gebiete, die in der config-Datei gesetzt sind
if (defined('FAS_REIHUNGSTEST_EXCLUDE_GEBIETE') && !empty(FAS_REIHUNGSTEST_EXCLUDE_GEBIETE))
{
if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE)
{
$endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, true, $reihungstest->reihungstest_id, true, $studiengang_kz);
$endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, true, $reihungstest->reihungstest_id, true, $studiengang_kz, $studiengang_kz);
}
else
{
$endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, false, $reihungstest->reihungstest_id, true, $studiengang_kz);
$endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, false, $reihungstest->reihungstest_id, true, $studiengang_kz, $studiengang_kz);
}
}
@@ -244,6 +244,7 @@ function drawrow($row)
$oRdf->obj[$i]->setAttribut('stufe',$reihungstest_obj->stufe,true);
$oRdf->obj[$i]->setAttribut('studienplan_id',$row->studienplan_id,true);
$oRdf->obj[$i]->setAttribut('studienplan_bezeichnung',$studienplan->bezeichnung,true);
$oRdf->obj[$i]->setAttribut('studienplan_studiengang_kz',$stpl_stg->studiengang_kz,true);
$oRdf->obj[$i]->setAttribut('studienplan_studiengang',$stpl_stg->kuerzel,true);
$oRdf->obj[$i]->setAttribut('studiensemester',$reihungstest_obj->studiensemester_kurzbz,true);
$oRdf->obj[$i]->setAttribut('datum',$datum_obj->formatDatum($reihungstest_obj->datum,'d.m.Y'),true);
+166
View File
@@ -0,0 +1,166 @@
<?php
/* Copyright (C) 2006 fhcomplete.org
*
* 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: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
// header für 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");
header("Pragma: no-cache");
// content type setzen
header("Content-type: application/xhtml+xml");
// xml
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
require_once('../config/vilesci.config.inc.php');
require_once('../include/person.class.php');
require_once('../include/prestudent.class.php');
require_once('../include/datum.class.php');
require_once('../include/statusgrund.class.php');
require_once('../include/studiengang.class.php');
$rdf_url='http://www.technikum-wien.at/prestudenthistorie';
$datum = new datum();
echo '
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ROLLE="'.$rdf_url.'/rdf#"
>
<RDF:Seq about="'.$rdf_url.'/liste">
';
if(isset($_GET['prestudent_id']) && is_numeric($_GET['prestudent_id']))
$prestudent_id = $_GET['prestudent_id'];
else
die('Prestudent_id muss angegeben werden');
$studiengang = new studiengang();
$studiengang->getAll('typ, kurzbz', false);
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
$prestudent = new prestudent($prestudent_id);
$prestudent->getLastStatus($prestudent_id);
$prestudentGET_studiengang = $prestudent->studiengang_kz;
$prestudentGET_orgform_kurzbz = $prestudent->orgform_kurzbz;
$prestudent->getPrestudenten($prestudent->person_id);
foreach ($prestudent->result as $row)
{
$prestudentLastStatus = new prestudent();
$prestudentLastStatus->getLastStatus($row->prestudent_id);
$row->studiensemester_kurzbz = $prestudentLastStatus->studiensemester_kurzbz;
$row->ausbildungssemester = $prestudentLastStatus->ausbildungssemester;
$row->datum = $prestudentLastStatus->datum;
$row->orgform_kurzbz = $prestudentLastStatus->orgform_kurzbz;
$row->studienplan_bezeichnung = $prestudentLastStatus->studienplan_bezeichnung;
$row->status_kurzbz = $prestudentLastStatus->status_kurzbz;
if ($prestudentLastStatus->statusgrund_id != '')
{
$statusgrund = new statusgrund($prestudentLastStatus->statusgrund_id);
$row->statusgrund = $statusgrund->bezeichnung_mehrsprachig[DEFAULT_LANGUAGE];
}
else
{
$row->statusgrund = '';
}
}
// Sortiert PreStudenten nach Studiensemester
function sortPrestudents($a, $b)
{
$c = substr($b->studiensemester_kurzbz, 2) - substr($a->studiensemester_kurzbz, 2);
$c .= strcmp(substr($b->studiensemester_kurzbz, 0, 2), substr($a->studiensemester_kurzbz, 0, 2));
$c .= $a->priorisierung - $b->priorisierung;
return $c;
}
usort($prestudent->result, "sortPrestudents");
$studiensemester_kurzbz = '';
$stdsem = '';
foreach ($prestudent->result as $row)
{
// Allfällige Studentendaten laden
$uid = '';
$gruppe = '';
$status = '';
$aktiv = 'true';
$bold = '';
if ($row->status_kurzbz == 'Abgewiesener' || $row->status_kurzbz == 'Abbrecher' || $row->status_kurzbz == 'Absolvent' )
{
$aktiv = 'false';
}
$qry ="SELECT * FROM public.tbl_student WHERE prestudent_id='$row->prestudent_id'";
if($result = $db->db_query($qry))
{
if($db->db_num_rows($result)>1)
{
$uid ='ACHTUNG: Mehrere Studenteneinträge vorhanden!';
}
else
{
if($row_std = $db->db_fetch_object($result))
{
$uid = $row_std->student_uid;
$gruppe = $row_std->semester.$row_std->verband.$row_std->gruppe;
}
}
}
$status = $row->status_kurzbz;
if ($row->ausbildungssemester != '')
{
$status .= ' ('.$row->ausbildungssemester.'. Semester)';
}
if ($row->statusgrund != '')
{
$status .= ' - '.$row->statusgrund;
}
if ($row->studiengang_kz == $prestudentGET_studiengang && $row->orgform_kurzbz == $prestudentGET_orgform_kurzbz)
{
$bold = 'bold';
}
echo '
<RDF:li>
<RDF:Description id="'.$row->prestudent_id.'" about="'.$rdf_url.'/'.$row->prestudent_id.'" >
<ROLLE:prestudent_id><![CDATA['.$row->prestudent_id.']]></ROLLE:prestudent_id>
<ROLLE:studiensemester_kurzbz><![CDATA['.$row->studiensemester_kurzbz.']]></ROLLE:studiensemester_kurzbz>
<ROLLE:prioritaet><![CDATA['.$row->priorisierung.']]></ROLLE:prioritaet>
<ROLLE:studiengang><![CDATA['.$studiengang->kuerzel_arr[$row->studiengang_kz].']]></ROLLE:studiengang>
<ROLLE:orgform_kurzbz><![CDATA['.$row->orgform_kurzbz.']]></ROLLE:orgform_kurzbz>
<ROLLE:studienplan_bezeichnung><![CDATA['.$row->studienplan_bezeichnung.']]></ROLLE:studienplan_bezeichnung>
<ROLLE:reihung_absolviert><![CDATA[???]]></ROLLE:reihung_absolviert>
<ROLLE:uid><![CDATA['.$uid.']]></ROLLE:uid>
<ROLLE:status><![CDATA['.$status.']]></ROLLE:status>
<ROLLE:aktiv><![CDATA['.$aktiv.']]></ROLLE:aktiv>
<ROLLE:bold><![CDATA['.$bold.']]></ROLLE:bold>
</RDF:Description>
</RDF:li>
';
}
?>
</RDF:Seq>
</RDF:RDF>
+6 -3
View File
@@ -180,6 +180,7 @@ function draw_content_liste($row)
<STUDENT:status_bestaetigung><![CDATA['.($prestudent->bestaetigtam!=''?$datum_obj->formatDatum($prestudent->bestaetigtam,'d.m.Y'):'-').']]></STUDENT:status_bestaetigung>
<STUDENT:status_datum_iso><![CDATA['.$datum_obj->formatDatum($prestudent->datum,'Y-m-d').']]></STUDENT:status_datum_iso>
<STUDENT:status_bestaetigung_iso><![CDATA['.($prestudent->bestaetigtam!=''?$datum_obj->formatDatum($prestudent->bestaetigtam,'Y-m-d'):'-').']]></STUDENT:status_bestaetigung_iso>
<STUDENT:zugangscode><![CDATA['.$row->zugangscode.']]></STUDENT:zugangscode>
<STUDENT:anmerkungen>'.($row->anmerkungen==''?'&#xA0;':'<![CDATA['.$row->anmerkungen.']]>').'</STUDENT:anmerkungen>
<STUDENT:anmerkungpre>'.($row->anmerkung==''?'&#xA0;':'<![CDATA['.$row->anmerkung.']]>').'</STUDENT:anmerkungpre>
@@ -222,10 +223,10 @@ function draw_content($row)
{
switch($row->bnaktiv)
{
case "t":
case true:
$aktiv = "true";
break;
case "f":
case false:
$aktiv = "false";
break;
default:
@@ -294,6 +295,8 @@ function draw_content($row)
<STUDENT:studienplan_id><![CDATA['.$prestudent->studienplan_id.']]></STUDENT:studienplan_id>
<STUDENT:mail_privat><![CDATA['.$mail_privat.']]></STUDENT:mail_privat>
<STUDENT:mail_intern><![CDATA['.(isset($row->uid)?$row->uid.'@'.DOMAIN:'').']]></STUDENT:mail_intern>
<STUDENT:zugangscode><![CDATA['.$row->zugangscode.']]></STUDENT:zugangscode>
<STUDENT:link_bewerbungstool><![CDATA['.CIS_ROOT.'addons/bewerbung/cis/registration.php?code='.$row->zugangscode.'&emailAdresse='.$mail_privat.']]></STUDENT:link_bewerbungstool>
<STUDENT:aktiv><![CDATA['.$aktiv.']]></STUDENT:aktiv>
<STUDENT:uid><![CDATA['.(isset($row->uid)?$row->uid:'').']]></STUDENT:uid>
@@ -475,7 +478,7 @@ if($xmlformat=='rdf')
AS email_privat,
(SELECT rt_gesamtpunkte as punkte FROM public.tbl_prestudent WHERE prestudent_id=tbl_student.prestudent_id) as punkte,
tbl_prestudent.dual as dual, tbl_prestudent.reihungstest_id, tbl_prestudent.anmeldungreihungstest, p.matr_nr,
tbl_prestudent.gsstudientyp_kurzbz, tbl_prestudent.aufnahmegruppe_kurzbz, tbl_prestudent.priorisierung
tbl_prestudent.gsstudientyp_kurzbz, tbl_prestudent.aufnahmegruppe_kurzbz, tbl_prestudent.priorisierung, p.zugangscode
FROM
public.tbl_student
JOIN public.tbl_benutzer ON (student_uid=uid)
+4
View File
@@ -205,6 +205,10 @@ treechildren::-moz-tree-cell-text(Aktiv_false)
{
color: grey;
}
treechildren::-moz-tree-cell-text(bold)
{
font-weight: bold;
}
treechildren::-moz-tree-cell(Lektor_inaktiv)
{
color: grey;
+306 -3
View File
@@ -3449,6 +3449,31 @@ if(!$result = @$db->db_query("SELECT 1 FROM fue.tbl_projekttyp LIMIT 1"))
echo '<br>fue.tbl_projekttyp hinzugefuegt.';
}
// Add column oe_kurzbz to public.tbl_msg_recipient
if(!$result = @$db->db_query("SELECT oe_kurzbz FROM public.tbl_msg_recipient LIMIT 1"))
{
$qry = 'ALTER TABLE public.tbl_msg_recipient ADD COLUMN oe_kurzbz character varying(32);';
if(!$db->db_query($qry))
echo '<strong>public.tbl_msg_recipient: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Added column oe_kurzbz to table public.tbl_msg_recipient';
// FOREIGN KEY fk_tbl_msg_recipient_oe_kurzbz: public.tbl_msg_recipient.oe_kurzbz references public.tbl_organisationseinheit.oe_kurzbz
if ($result = @$db->db_query("SELECT conname FROM pg_constraint WHERE conname = 'fk_tbl_msg_recipient_oe_kurzbz'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = "ALTER TABLE public.tbl_msg_recipient ADD CONSTRAINT fk_tbl_msg_recipient_oe_kurzbz FOREIGN KEY (oe_kurzbz)
REFERENCES public.tbl_organisationseinheit(oe_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;";
if (!$db->db_query($qry))
echo '<strong>public.tbl_msg_recipient: '.$db->db_last_error().'</strong><br>';
else
echo '<br>public.tbl_msg_recipient: added foreign key on column oe_kurzbz referenced to public.tbl_organisationseinheit(oe_kurzbz)';
}
}
}
// Add new webservice type in system.tbl_webservicetyp
if ($result = @$db->db_query("SELECT 1 FROM system.tbl_webservicetyp WHERE webservicetyp_kurzbz = 'API';"))
{
@@ -3525,6 +3550,284 @@ if($result = $db->db_query("SELECT * FROM pg_proc WHERE proname = 'transform_ges
echo '<br>Function transform_geschlecht hinzugefügt.';
}
}
// Add column offset to testtool.tbl_gebiet
if(!$result = @$db->db_query("SELECT offsetpunkte FROM testtool.tbl_gebiet LIMIT 1"))
{
$qry = "ALTER TABLE testtool.tbl_gebiet ADD COLUMN offsetpunkte numeric(8,4)";
if(!$db->db_query($qry))
echo '<strong>testtool.tbl_gebiet: '.$db->db_last_error().'</strong><br>';
else
echo '<br>testtool.tbl_gebiet: Spalte offsetpunkte hinzugefuegt';
}
// ADD COLUMN offset to testtool.vw_auswertung_ablauf
if(!$result = @$db->db_query("SELECT offsetpunkte FROM testtool.vw_auswertung_ablauf LIMIT 1"))
{
// CREATE OR REPLACE VIEW testtool.vw_auswertung_ablauf
$qry = '
CREATE OR REPLACE VIEW testtool.vw_auswertung_ablauf AS (
SELECT
tbl_gebiet.gebiet_id,
tbl_gebiet.bezeichnung AS gebiet,
tbl_ablauf.reihung,
tbl_gebiet.maxpunkte,
tbl_pruefling.pruefling_id,
tbl_pruefling.prestudent_id,
tbl_person.vorname,
tbl_person.nachname,
tbl_person.gebdatum,
tbl_person.geschlecht,
tbl_pruefling.semester,
upper(tbl_studiengang.typ::character varying(1)::text || tbl_studiengang.kurzbz::text) AS stg_kurzbz,
tbl_studiengang.bezeichnung AS stg_bez,
tbl_pruefling.registriert,
tbl_pruefling.idnachweis,
( SELECT sum(tbl_vorschlag.punkte) AS sum
FROM testtool.tbl_vorschlag
JOIN testtool.tbl_antwort USING (vorschlag_id)
JOIN testtool.tbl_frage USING (frage_id)
WHERE tbl_antwort.pruefling_id = tbl_pruefling.pruefling_id AND tbl_frage.gebiet_id = tbl_gebiet.gebiet_id
) AS punkte,
tbl_rt_person.rt_id AS reihungstest_id,
tbl_ablauf.gewicht,
tbl_studiengang.studiengang_kz,
tbl_gebiet.offsetpunkte
FROM
testtool.tbl_pruefling
JOIN testtool.tbl_ablauf ON tbl_ablauf.studiengang_kz = tbl_pruefling.studiengang_kz
JOIN testtool.tbl_gebiet USING (gebiet_id)
JOIN public.tbl_prestudent USING (prestudent_id)
JOIN public.tbl_person USING (person_id)
JOIN public.tbl_rt_person USING (person_id)
JOIN lehre.tbl_studienplan ON tbl_studienplan.studienplan_id = tbl_rt_person.studienplan_id
JOIN lehre.tbl_studienordnung ON tbl_studienordnung.studienordnung_id = tbl_studienplan.studienordnung_id
JOIN public.tbl_studiengang ON tbl_prestudent.studiengang_kz = tbl_studiengang.studiengang_kz
WHERE NOT (tbl_ablauf.gebiet_id IN
(
SELECT tbl_kategorie.gebiet_id
FROM testtool.tbl_kategorie
)
) AND tbl_studienordnung.studiengang_kz = tbl_pruefling.studiengang_kz
)';
if(!$db->db_query($qry))
echo '<strong>testtool.vw_auswertung_ablauf: '.$db->db_last_error().'</strong><br>';
else
echo '<br>testtool.vw_auswertung_ablauf view created';
}
// ADD COLUMN offset to testtool.vw_auswertung_ablauf
if(!$result = @$db->db_query("SELECT offsetpunkte FROM testtool.vw_auswertung LIMIT 1"))
{
// CREATE OR REPLACE VIEW testtool.vw_auswertung_ablauf
$qry = '
CREATE OR REPLACE VIEW testtool.vw_auswertung AS
SELECT
tbl_gebiet.gebiet_id,
tbl_gebiet.bezeichnung AS gebiet,
tbl_gebiet.maxpunkte,
tbl_pruefling.pruefling_id,
tbl_pruefling.prestudent_id,
tbl_person.vorname,
tbl_person.nachname,
tbl_person.gebdatum,
tbl_person.geschlecht,
tbl_pruefling.semester,
upper(tbl_studiengang.typ::character varying(1)::text || tbl_studiengang.kurzbz::text) AS stg_kurzbz,
tbl_studiengang.bezeichnung AS stg_bez,
tbl_pruefling.registriert,
tbl_pruefling.idnachweis,
(
SELECT
sum(tbl_vorschlag.punkte) AS sum
FROM
testtool.tbl_vorschlag
JOIN testtool.tbl_antwort USING (vorschlag_id)
JOIN testtool.tbl_frage USING (frage_id)
WHERE
tbl_antwort.pruefling_id = tbl_pruefling.pruefling_id
AND tbl_frage.gebiet_id = tbl_gebiet.gebiet_id
) AS punkte,
tbl_rt_person.rt_id as reihungstest_id,
tbl_ablauf.gewicht,
tbl_person.person_id,
tbl_gebiet.offsetpunkte
FROM
testtool.tbl_pruefling
JOIN testtool.tbl_ablauf ON (tbl_ablauf.studiengang_kz = tbl_pruefling.studiengang_kz AND tbl_ablauf.semester = tbl_pruefling.semester)
JOIN testtool.tbl_gebiet USING (gebiet_id)
JOIN public.tbl_prestudent USING (prestudent_id)
JOIN public.tbl_person USING (person_id)
JOIN public.tbl_studiengang ON tbl_prestudent.studiengang_kz = tbl_studiengang.studiengang_kz
JOIN public.tbl_rt_person USING (person_id)
JOIN lehre.tbl_studienplan ON (tbl_studienplan.studienplan_id = tbl_rt_person.studienplan_id)
JOIN lehre.tbl_studienordnung ON (tbl_studienordnung.studienordnung_id = tbl_studienplan.studienordnung_id)
WHERE
tbl_studienordnung.studiengang_kz = tbl_prestudent.studiengang_kz
AND NOT (tbl_ablauf.gebiet_id IN ( SELECT tbl_kategorie.gebiet_id
FROM testtool.tbl_kategorie));';
if(!$db->db_query($qry))
echo '<strong>testtool.vw_auswertung: '.$db->db_last_error().'</strong><br>';
else
echo '<br>testtool.vw_auswertung view created';
}
// Add column orgform_kurzbz to tbl_bankverbindung
if(!$result = @$db->db_query("SELECT orgform_kurzbz FROM public.tbl_bankverbindung LIMIT 1"))
{
$qry = "ALTER TABLE public.tbl_bankverbindung ADD COLUMN orgform_kurzbz varchar(3);
ALTER TABLE public.tbl_bankverbindung ADD CONSTRAINT fk_bankverbindung_orgform FOREIGN KEY (orgform_kurzbz) REFERENCES bis.tbl_orgform (orgform_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE;";
if(!$db->db_query($qry))
echo '<strong>public.tbl_bankverbindung: '.$db->db_last_error().'</strong><br>';
else
echo '<br>public.tbl_bankverbindung: Spalte orgform_kurzbz hinzugefuegt';
}
// iban und bic zu vw_msg_vars hinzufügen
if(!$result = @$db->db_query('SELECT "IBAN Studiengang", "BIC Studiengang", "Studiengangskennzahl", "Einstiegssemester", "Einstiegsstudiensemester", "Vorname Studiengangsassistenz", "Nachname Studiengangsassistenz", "Durchwahl Studiengangsassistenz", "Relative Prio" FROM public.vw_msg_vars LIMIT 1'))
{
$qry = '
CREATE OR REPLACE VIEW public.vw_msg_vars AS (
SELECT DISTINCT ON(p.person_id, pr.prestudent_id) p.person_id,
pr.prestudent_id AS prestudent_id,
p.nachname AS "Nachname",
p.vorname AS "Vorname",
p.anrede AS "Anrede",
a.strasse AS "Strasse",
a.ort AS "Ort",
a.plz AS "PLZ",
a.gemeinde AS "Gemeinde",
a.langtext AS "Nation",
ke.kontakt AS "Email",
kt.kontakt AS "Telefon",
s.bezeichnung AS "Studiengang DE",
s.english AS "Studiengang EN",
st.bezeichnung AS "Typ",
last_prestudent_status.orgform_kurzbz AS "Orgform",
p.zugangscode AS "Zugangscode",
bk.iban AS "IBAN Studiengang",
bk.bic AS "BIC Studiengang",
s.studiengang_kz AS "Studiengangskennzahl",
first_prestudent_status.ausbildungssemester AS "Einstiegssemester",
first_prestudent_status.studiensemester AS "Einstiegsstudiensemester",
ass.vorname AS "Vorname Studiengangsassistenz",
ass.nachname AS "Nachname Studiengangsassistenz",
ass.telefonklappe AS "Durchwahl Studiengangsassistenz",
ass.alias AS "Alias Studiengangsassistenz",
(SELECT count(*)
FROM (
SELECT pss.prestudent_id, pss.person_id, priorisierung,
(
SELECT status_kurzbz
FROM public.tbl_prestudentstatus
WHERE prestudent_id = pss.prestudent_id
ORDER BY datum DESC,
tbl_prestudentstatus.insertamum DESC LIMIT 1
) AS laststatus
FROM public.tbl_prestudent pss
JOIN public.tbl_prestudentstatus USING (prestudent_id)
WHERE person_id = (
SELECT person_id
FROM public.tbl_prestudent
WHERE prestudent_id = pr.prestudent_id
)
AND studiensemester_kurzbz = (
SELECT studiensemester_kurzbz
FROM public.tbl_prestudentstatus
WHERE prestudent_id = pr.prestudent_id
AND status_kurzbz = \'Interessent\' LIMIT 1
)
AND status_kurzbz = \'Interessent\'
) prest
WHERE laststatus NOT IN (\'Abbrecher\', \'Abgewiesener\', \'Absolvent\')
AND priorisierung <= pr.priorisierung) AS "Relative Prio"
FROM public.tbl_person p
LEFT JOIN (
SELECT person_id,
kontakt
FROM public.tbl_kontakt
WHERE zustellung = TRUE
AND kontakttyp = \'email\'
ORDER BY kontakt_id DESC
) ke USING(person_id)
LEFT JOIN (
SELECT person_id,
kontakt
FROM public.tbl_kontakt
WHERE zustellung = TRUE
AND kontakttyp IN (\'telefon\', \'mobil\')
ORDER BY kontakt_id DESC
) kt USING(person_id)
LEFT JOIN (
SELECT person_id,
strasse,
ort,
plz,
gemeinde,
langtext
FROM public.tbl_adresse
LEFT JOIN bis.tbl_nation ON(bis.tbl_nation.nation_code = public.tbl_adresse.nation)
WHERE public.tbl_adresse.heimatadresse = TRUE
ORDER BY adresse_id DESC
) a USING(person_id)
LEFT JOIN public.tbl_prestudent pr USING(person_id)
INNER JOIN public.tbl_studiengang s USING(studiengang_kz)
INNER JOIN public.tbl_studiengangstyp st USING(typ)
LEFT JOIN (
SELECT DISTINCT ON (ps.prestudent_id) ps.prestudent_id, tbl_studienplan.orgform_kurzbz
FROM public.tbl_prestudent ps
JOIN public.tbl_prestudentstatus ON ps.prestudent_id = tbl_prestudentstatus.prestudent_id
JOIN lehre.tbl_studienplan USING(studienplan_id)
ORDER BY ps.prestudent_id DESC,
tbl_prestudentstatus.datum DESC,
tbl_prestudentstatus.insertamum DESC,
tbl_prestudentstatus.ext_id DESC
) last_prestudent_status ON pr.prestudent_id = last_prestudent_status.prestudent_id
LEFT JOIN (
SELECT DISTINCT ON (ps.prestudent_id) ps.prestudent_id, tbl_prestudentstatus.ausbildungssemester,
studiensemester_kurzbz, tbl_studiensemester.bezeichnung AS studiensemester,
tbl_studienordnung.studiengang_kz
FROM public.tbl_prestudent ps
JOIN public.tbl_prestudentstatus ON ps.prestudent_id = tbl_prestudentstatus.prestudent_id
JOIN public.tbl_studiensemester USING (studiensemester_kurzbz)
JOIN lehre.tbl_studienplan USING(studienplan_id)
JOIN lehre.tbl_studienordnung USING (studienordnung_id)
WHERE tbl_prestudentstatus.status_kurzbz = \'Interessent\'
ORDER BY ps.prestudent_id ASC,
tbl_prestudentstatus.datum ASC,
tbl_prestudentstatus.insertamum ASC,
tbl_prestudentstatus.ext_id ASC
) first_prestudent_status ON pr.prestudent_id = first_prestudent_status.prestudent_id
LEFT JOIN (
SELECT DISTINCT ON (tbl_benutzerfunktion.oe_kurzbz) vorname, nachname, oe_kurzbz, telefonklappe, alias
FROM public.tbl_benutzerfunktion
JOIN public.tbl_benutzer USING (uid)
JOIN public.tbl_person USING (person_id)
JOIN public.tbl_mitarbeiter on tbl_benutzer.uid = tbl_mitarbeiter.mitarbeiter_uid
WHERE tbl_benutzerfunktion.funktion_kurzbz = \'ass\'
AND NOW() BETWEEN COALESCE(datum_von, NOW()) AND COALESCE(datum_bis, NOW())
ORDER BY tbl_benutzerfunktion.oe_kurzbz, tbl_benutzerfunktion.insertamum DESC NULLS LAST, datum_von DESC NULLS LAST
) ass ON s.oe_kurzbz = ass.oe_kurzbz
LEFT JOIN (
SELECT DISTINCT ON (oe_kurzbz, orgform_kurzbz) oe_kurzbz, orgform_kurzbz, iban, bic
FROM tbl_bankverbindung
WHERE oe_kurzbz IS NOT NULL
ORDER BY oe_kurzbz, orgform_kurzbz, tbl_bankverbindung.insertamum DESC,tbl_bankverbindung.iban
)bk ON s.oe_kurzbz = bk.oe_kurzbz AND (last_prestudent_status.orgform_kurzbz = bk.orgform_kurzbz OR bk.orgform_kurzbz IS NULL)
WHERE p.aktiv = TRUE
ORDER BY p.person_id ASC, pr.prestudent_id ASC
);';
if(!$db->db_query($qry))
echo '<strong>public.vw_msg_vars: '.$db->db_last_error().'</strong><br>';
else
echo '<br>public.vw_msg_vars IBAN Studiengang, BIC Studiengang, Studiengangskennzahl, Einstiegssemester, Einstiegsstudiensemester, Vorname Studiengangsassistenz, Nachname Studiengangsassistenz, Durchwahl Studiengangsassistenz, Relative Priorität added';
}
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
@@ -3683,7 +3986,7 @@ $tabellen=array(
"public.tbl_aufnahmeschluessel" => array("aufnahmeschluessel"),
"public.tbl_aufnahmetermin" => array("aufnahmetermin_id","aufnahmetermintyp_kurzbz","prestudent_id","termin","teilgenommen","bewertung","protokoll","insertamum","insertvon","updateamum","updatevon","ext_id"),
"public.tbl_aufnahmetermintyp" => array("aufnahmetermintyp_kurzbz","bezeichnung"),
"public.tbl_bankverbindung" => array("bankverbindung_id","person_id","name","anschrift","bic","blz","iban","kontonr","typ","verrechnung","updateamum","updatevon","insertamum","insertvon","ext_id","oe_kurzbz"),
"public.tbl_bankverbindung" => array("bankverbindung_id","person_id","name","anschrift","bic","blz","iban","kontonr","typ","verrechnung","updateamum","updatevon","insertamum","insertvon","ext_id","oe_kurzbz", "orgform_kurzbz"),
"public.tbl_benutzer" => array("uid","person_id","aktiv","alias","insertamum","insertvon","updateamum","updatevon","ext_id","updateaktivvon","updateaktivam","aktivierungscode"),
"public.tbl_benutzerfunktion" => array("benutzerfunktion_id","fachbereich_kurzbz","uid","oe_kurzbz","funktion_kurzbz","semester", "datum_von","datum_bis", "updateamum","updatevon","insertamum","insertvon","ext_id","bezeichnung","wochenstunden"),
"public.tbl_benutzergruppe" => array("uid","gruppe_kurzbz","studiensemester_kurzbz","updateamum","updatevon","insertamum","insertvon","ext_id"),
@@ -3714,7 +4017,7 @@ $tabellen=array(
"public.tbl_mitarbeiter" => array("mitarbeiter_uid","personalnummer","telefonklappe","kurzbz","lektor","fixangestellt","bismelden","stundensatz","ausbildungcode","ort_kurzbz","standort_id","anmerkung","insertamum","insertvon","updateamum","updatevon","ext_id","kleriker"),
"public.tbl_msg_attachment" => array("attachment_id","message_id","name","filename"),
"public.tbl_msg_message" => array("message_id","person_id","subject","body","priority","relationmessage_id","oe_kurzbz","insertamum","insertvon"),
"public.tbl_msg_recipient" => array("message_id","person_id","token","sent","sentinfo","insertamum","insertvon"),
"public.tbl_msg_recipient" => array("message_id","person_id","token","sent","sentinfo","insertamum","insertvon","oe_kurzbz"),
"public.tbl_msg_status" => array("message_id","person_id","status","statusinfo","insertamum","insertvon","updateamum","updatevon"),
"public.tbl_notiz" => array("notiz_id","titel","text","verfasser_uid","bearbeiter_uid","start","ende","erledigt","insertamum","insertvon","updateamum","updatevon","ext_id"),
"public.tbl_notizzuordnung" => array("notizzuordnung_id","notiz_id","projekt_kurzbz","projektphase_id","projekttask_id","uid","person_id","prestudent_id","bestellung_id","lehreinheit_id","ext_id","anrechnung_id"),
@@ -3766,7 +4069,7 @@ $tabellen=array(
"testtool.tbl_ablauf_vorgaben" => array("ablauf_vorgaben_id","studiengang_kz","sprache","sprachwahl","content_id","insertamum","insertvon","updateamum", "updatevon"),
"testtool.tbl_antwort" => array("antwort_id","pruefling_id","vorschlag_id"),
"testtool.tbl_frage" => array("frage_id","kategorie_kurzbz","gebiet_id","level","nummer","demo","insertamum","insertvon","updateamum","updatevon","aktiv"),
"testtool.tbl_gebiet" => array("gebiet_id","kurzbz","bezeichnung","beschreibung","zeit","multipleresponse","kategorien","maxfragen","zufallfrage","zufallvorschlag","levelgleichverteilung","maxpunkte","insertamum", "insertvon", "updateamum", "updatevon", "level_start","level_sprung_auf","level_sprung_ab","antwortenprozeile","bezeichnung_mehrsprachig"),
"testtool.tbl_gebiet" => array("gebiet_id","kurzbz","bezeichnung","beschreibung","zeit","multipleresponse","kategorien","maxfragen","zufallfrage","zufallvorschlag","levelgleichverteilung","maxpunkte","insertamum", "insertvon", "updateamum", "updatevon", "level_start","level_sprung_auf","level_sprung_ab","antwortenprozeile","bezeichnung_mehrsprachig", "offsetpunkte"),
"testtool.tbl_kategorie" => array("kategorie_kurzbz","gebiet_id"),
"testtool.tbl_kriterien" => array("gebiet_id","kategorie_kurzbz","punkte","typ"),
"testtool.tbl_pruefling" => array("pruefling_id","prestudent_id","studiengang_kz","idnachweis","registriert","semester"),
+1 -1
View File
@@ -106,8 +106,8 @@ $filters = array(
{"name": "Nachname"},
{"name": "Nation"},
{"name": "LastAction"},
{"name": "User/Operator"},
{"name": "LastActionType"},
{"name": "User/Operator"},
{"name": "LockUser"},
{"name": "StgNichtAbgeschickt"},
{"name": "StgAbgeschickt"},
+161 -46
View File
@@ -342,8 +342,8 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'description' => 'last editor',
'text' => 'last change',
'description' => '',
'insertvon' => 'system'
)
)
@@ -682,7 +682,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => 'messages',
'text' => 'Messages',
'description' => '',
'insertvon' => 'system'
)
@@ -802,7 +802,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'edited by',
'description' => '',
'insertvon' => 'system'
)
@@ -842,7 +842,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'approved for the course',
'description' => '',
'insertvon' => 'system'
)
@@ -882,7 +882,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => 'message',
'text' => 'Message',
'description' => '',
'insertvon' => 'system'
)
@@ -1128,7 +1128,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'Release',
'description' => '',
'insertvon' => 'system'
)
@@ -1288,7 +1288,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'Cancel',
'description' => '',
'insertvon' => 'system'
)
@@ -1635,7 +1635,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'Address',
'description' => '',
'insertvon' => 'system'
)
@@ -1675,7 +1675,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'Man',
'description' => '',
'insertvon' => 'system'
)
@@ -1695,7 +1695,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'Woman',
'description' => '',
'insertvon' => 'system'
)
@@ -1755,7 +1755,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'Social insurance number',
'description' => 'social security number',
'insertvon' => 'system'
)
@@ -1775,7 +1775,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'Replacement bearing',
'description' => 'Replacement Label',
'insertvon' => 'system'
)
@@ -1795,8 +1795,8 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'description' => 'bPK',
'text' => 'bPK',
'description' => '',
'insertvon' => 'system'
)
)
@@ -1975,8 +1975,8 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'description' => 'ZIP-Code',
'text' => 'Post code',
'description' => '',
'insertvon' => 'system'
)
)
@@ -1995,8 +1995,8 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'description' => 'Street',
'text' => 'Street',
'description' => '',
'insertvon' => 'system'
)
)
@@ -2077,7 +2077,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'Education semester',
'description' => '',
'insertvon' => 'system'
)
@@ -2520,7 +2520,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'ZGV exam',
'description' => '',
'insertvon' => 'system'
)
@@ -2540,7 +2540,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'ZGV place',
'description' => '',
'insertvon' => 'system'
)
@@ -2560,7 +2560,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'ZGV date',
'description' => '',
'insertvon' => 'system'
)
@@ -2580,7 +2580,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'ZGV nation',
'description' => '',
'insertvon' => 'system'
)
@@ -2640,7 +2640,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'Graduate',
'description' => '',
'insertvon' => 'system'
)
@@ -2660,7 +2660,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'Leaving certificate',
'description' => '',
'insertvon' => 'system'
)
@@ -2780,8 +2780,8 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'description' => 'notes on the application',
'text' => 'Application Notes',
'description' => '',
'insertvon' => 'system'
)
)
@@ -2820,7 +2820,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'ZGV',
'description' => '',
'insertvon' => 'system'
)
@@ -2840,7 +2840,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'Access requirements',
'description' => '',
'insertvon' => 'system'
)
@@ -2860,7 +2860,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'Entry requirements',
'description' => '',
'insertvon' => 'system'
)
@@ -2880,7 +2880,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'No admission requirements defined for the course',
'description' => '',
'insertvon' => 'system'
)
@@ -2900,7 +2900,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'last ZGV attended',
'description' => '',
'insertvon' => 'system'
)
@@ -2920,7 +2920,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => 'reason for cancellation',
'text' => 'Reason for cancellation',
'description' => '',
'insertvon' => 'system'
)
@@ -2974,15 +2974,13 @@ $phrases = array(
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Bei Absage von InteressentInnen erhalten diese den Status "Abgewiesener" und deren '
.'ZGV-Daten können im Infocenter nicht mehr bearbeitet oder freigegeben werden. '
.'Alle nicht gespeicherten ZGV-Daten gehen verloren. Fortfahren?',
'text' => 'Bei Absage von InteressentInnen erhalten diese den Status "Abgewiesener" und deren ZGV-Daten können im Infocenter nicht mehr bearbeitet oder freigegeben werden. Alle nicht gespeicherten ZGV-Daten gehen verloren. Fortfahren?',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'If interested parties are rejected, they receive the status "rejected" and their ZGV data can no longer be edited or released in the Info Center. All ZGV data that has not been saved will be lost. Continue?',
'description' => '',
'insertvon' => 'system'
)
@@ -3096,16 +3094,13 @@ $phrases = array(
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Bei Freigabe von InteressentInnen wird deren Interessentenstatus bestätigt
und deren Zgvdaten können im Infocenter nicht mehr bearbeitet oder freigegeben werden.<br/>
Alle nicht gespeicherten Zgvdaten gehen verloren.<br/>
Fortfahren?',
'text' => 'Bei Freigabe von InteressentInnen wird deren Interessentenstatus bestätigt und deren Zgvdaten können im Infocenter nicht mehr bearbeitet oder freigegeben werden.<br/> Alle nicht gespeicherten Zgvdaten gehen verloren.<br/> Fortfahren?',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'If interested parties are released, their interested party status is confirmed and their Zgv data can no longer be edited or released in the Infocenter. <br/> All Zgv data not saved will be lost. <br/> Continue?',
'description' => '',
'insertvon' => 'system'
)
@@ -3365,7 +3360,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'Nothing to park out',
'description' => '',
'insertvon' => 'system'
)
@@ -3385,7 +3380,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'Parking error',
'description' => '',
'insertvon' => 'system'
)
@@ -3405,7 +3400,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'Parking error',
'description' => '',
'insertvon' => 'system'
)
@@ -4314,6 +4309,126 @@ When on hold, the date is only a reminder.',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'global',
'phrase' => 'received',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Empfangen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Received',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'global',
'phrase' => 'reply',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Antworten',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Reply',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'altRecipientNote',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => '* Diese Nachricht wird an das Infocenter der FHTW zugestellt',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => '* This message will be delivered to the Infocenter of UAS Technikum Wien',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'refresh',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Aktualisierung',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Refresh',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'from',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Von',
'description' => 'Aktualisierung',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'From',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'newMessage',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Sie haben eine neue Nachricht erhalten',
'description' => 'Aktualisierung',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'You received a new message',
'description' => '',
'insertvon' => 'system'
)
)
)
);

Some files were not shown because too many files have changed in this diff Show More