Merge branch 'master' into lvgruppen

This commit is contained in:
Andreas Österreicher
2019-02-21 18:41:07 +01:00
38 changed files with 2011 additions and 1369 deletions
+28 -64
View File
@@ -1,6 +1,4 @@
<?php
// --------------------------------------------------------------------------------------------------------------------
// Header menu
$config['navigation_header'] = array(
@@ -22,16 +20,8 @@ $config['navigation_header'] = array(
'icon' => '',
'description' => 'Vilesci',
'expand' => true,
'sort' => 1,
'requiredPermissions' => 'basis/vilesci:r'
),
'reihungstest' => array(
'link' => site_url('organisation/Reihungstest'),
'icon' => 'list-ol',
'description' => 'Reihungstests',
'expand' => true,
'sort' => 10,
'requiredPermissions' => 'infocenter:r'
'requiredPermissions' => 'basis/vilesci:r'
)
)
),
@@ -47,14 +37,20 @@ $config['navigation_header'] = array(
'description' => 'CIS',
'sort' => 10
),
'infocenter' => array(
'link' => site_url('system/infocenter/InfoCenter'),
'icon' => 'info',
'description' => 'Infocenter',
'reihungstest' => array(
'link' => site_url('organisation/Reihungstest'),
'description' => 'Reihungstests',
'expand' => true,
'sort' => 20,
'requiredPermissions' => 'infocenter:r'
),
'infocenter' => array(
'link' => site_url('system/infocenter/InfoCenter'),
'description' => 'Infocenter',
'expand' => true,
'sort' => 30,
'requiredPermissions' => 'infocenter:r'
),
)
),
'Personen' => array(
@@ -71,6 +67,23 @@ $config['navigation_header'] = array(
'requiredPermissions' => 'admin:r'
)
)
),
'Administration' => array(
'link' => '#',
'icon' => 'gear',
'description' => 'Administration',
'expand' => false,
'sort' => 50,
'requiredPermissions' => 'admin:r',
'children'=> array(
'extensions' => array(
'link' => site_url('system/extensions/Manager'),
'description' => 'Extensions Manager',
'expand' => true,
'sort' => 10,
'requiredPermissions' => 'admin:r'
)
)
)
)
);
@@ -86,55 +99,6 @@ $config['navigation_menu']['Vilesci/index'] = array(
'description' => 'Dashboard',
'icon' => 'dashboard',
'sort' => 1
),
'lehre' => array(
'link' => '#',
'icon' => 'graduation-cap',
'description' => 'Lehre',
'expand' => true,
'sort' => 2,
'children'=> array(
'cis' => array(
'link' => CIS_ROOT,
'icon' => '',
'description' => 'CIS',
'expand' => true,
'sort' => 1
),
'infocenter' => array(
'link' => site_url('system/infocenter/InfoCenter'),
'icon' => 'info',
'description' => 'Infocenter',
'expand' => true,
'sort' => 2,
'requiredPermissions' => 'infocenter:r'
),
)
),
'administration' => array(
'link' => '#',
'icon' => 'gear',
'description' => 'Administration',
'expand' => false,
'sort' => 3,
'children'=> array(
'vilesci' => array(
'link' => base_url('vilesci'),
'icon' => '',
'description' => 'Vilesci',
'expand' => true,
'sort' => 1,
'requiredPermissions' => 'basis/vilesci:r'
),
'extensions' => array(
'link' => site_url('system/extensions/Manager'),
'icon' => 'cubes',
'description' => 'Extensions Manager',
'expand' => true,
'sort' => 2,
'requiredPermissions' => 'admin:r'
)
)
)
);
+14 -24
View File
@@ -81,7 +81,7 @@ class ViewMessage extends FHC_Controller
'href' => $href
);
$this->load->view('system/messageHTML.php', $data);
$this->load->view('system/messages/messageHTML.php', $data);
}
}
@@ -94,7 +94,7 @@ class ViewMessage extends FHC_Controller
if (isEmptyString($token))
{
show_error('no token supplied');
show_error('No token supplied');
}
$msg = null;
@@ -104,7 +104,7 @@ class ViewMessage extends FHC_Controller
if (!hasData($msg))
{
show_error('no message found');
show_error('No message found');
}
$msg = $msg->retval[0];
@@ -114,7 +114,7 @@ class ViewMessage extends FHC_Controller
if (!hasData($receiverData))
{
show_error('no sender found');
show_error('No sender found');
}
$data = array (
@@ -123,7 +123,7 @@ class ViewMessage extends FHC_Controller
'token' => $token
);
$this->load->view('system/messageWriteReply', $data);
$this->load->view('system/messages/messageWriteReply', $data);
}
/**
@@ -134,8 +134,6 @@ class ViewMessage extends FHC_Controller
$this->load->model('system/Message_model', 'MessageModel');
$this->load->library('MessageLib');
$error = false;
$subject = $this->input->post('subject');
$body = $this->input->post('body');
$persons = $this->input->post('persons');
@@ -145,7 +143,6 @@ class ViewMessage extends FHC_Controller
if (!isset($relationmessage_id) || $relationmessage_id == '' || !isset($token) || $token == '')
{
show_error('Error while sending reply');
$error = true;
}
$relationmsg = $this->MessageTokenModel->getMessageByToken($token);
@@ -154,7 +151,6 @@ class ViewMessage extends FHC_Controller
if (!hasData($relationmsg) || $relationmessage_id !== $relationmsg->retval[0]->message_id)
{
show_error('Error while sending reply');
$error = true;
}
// get sender (receiver of previous msg)
@@ -166,20 +162,16 @@ class ViewMessage extends FHC_Controller
// send message(s)
if (hasData($data))
{
// Loads the person log library
$this->load->library('PersonLogLib');
for ($i = 0; $i < count($data->retval); $i++)
{
$dataArray = (array)$data->retval[$i];
$msg = $this->messagelib->sendMessage($sender_id, $dataArray['person_id'], $subject, $body, PRIORITY_NORMAL, $relationmessage_id, null);
if ($msg->error)
{
show_error($msg->retval);
$error = true;
break;
}
// Loads the person log library
$this->load->library('PersonLogLib');
if ($msg->error) show_error($msg->retval);
// Write log entry for sender
$logtype_kurzbz = 'Action';
@@ -193,7 +185,8 @@ class ViewMessage extends FHC_Controller
$oe_kurzbz = null;
$insertvon = 'online';
$this->personloglib->log(
// Logs person data
$personLog = $this->personloglib->log(
$sender_id,
$logtype_kurzbz,
$logdata,
@@ -203,14 +196,11 @@ class ViewMessage extends FHC_Controller
$insertvon
);
//unpark bewerber after he sends message
$this->personloglib->unPark($sender_id);
// Unpark bewerber after he sends message
$personLog = $this->personloglib->unPark($sender_id);
}
}
if (!$error)
{
$this->load->view('system/messageSent');
}
$this->load->view('system/messages/messageReplySent');
}
}
@@ -0,0 +1,155 @@
<?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->messagelib->getMessageVarsPerson();
// Organisation units used to get the templates
$oe_kurzbz = $this->messagelib->getOeKurzbz($sender_id);
// Admin or commoner?
$isAdmin = $this->messagelib->getIsAdmin($sender_id);
$data = array(
'recipients' => $msgVarsData->retval,
'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->messagelib->getMessageVarsPerson();
// Organisation units used to get the templates
$oe_kurzbz = $this->messagelib->getOeKurzbz($sender_id);
// Admin or commoner?
$isAdmin = $this->messagelib->getIsAdmin($sender_id);
$data = array(
'recipients' => $msgVarsData->retval,
'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($msg->retval);
}
elseif (!hasData($msg))
{
show_error('The selected message does not exist');
}
else
{
$msg = $msg->retval[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($msgVarsData->retval);
}
return $msgVarsData;
}
}
+181 -285
View File
@@ -4,8 +4,6 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
class Messages extends Auth_Controller
{
private $uid; // contains the UID of the logged user
/**
*
*/
@@ -28,344 +26,189 @@ class Messages extends Auth_Controller
// Loads the widget library
$this->load->library('WidgetLib');
$this->load->model('person/Person_model', 'PersonModel');
$this->load->model('system/Message_model', 'MessageModel');
$this->loadPhrases(
array(
'global',
'person',
'lehre',
'ui',
'infocenter'
'ui'
)
);
$this->_setAuthUID(); // sets property uid
}
// -----------------------------------------------------------------------------------------------------------------
// Public methods
/**
* write
* Write a new message
*/
public function write($sender_id = null, $msg_id = null, $receiver_id = null)
public function write()
{
if ($sender_id === null)
{
$user_person = $this->PersonModel->getByUid($this->uid);
if (isError($user_person))
{
show_error($user_person->retval);
}
$sender_id = $user_person->retval[0]->person_id;
}
$prestudent_id = $this->input->post('prestudent_id');
$person_id = $this->input->post('person_id');
$personOnly = false;
$sender_id = null;
if (isset($person_id) && !isset($prestudent_id))
$personOnly = true;
$msg = null;
// Get message data if possible
if (is_numeric($msg_id) && is_numeric($receiver_id))
$authUser = $this->_getAuthUser();
if (isError($authUser))
{
$msg = $this->messagelib->getMessage($msg_id, $receiver_id);
if ($msg->error)
{
show_error($msg->retval);
}
else
{
$msg = $msg->retval[0];
}
show_error($authUser->retval);
}
$variablesArray = array();
$msgVarsData = array();
// Get variables
$this->load->model('system/Message_model', 'MessageModel');
if ($personOnly === true)
$this->getPersonMsgData($person_id, $variablesArray, $msgVarsData);
else
$this->getPrestudentMsgData($prestudent_id, $variablesArray, $msgVarsData);
// Organisation units used to get the templates
$oe_kurzbz = array(); // A person can have more organisation units
$this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
$benutzerResult = $this->BenutzerfunktionModel->getByPersonId($sender_id);
if (hasData($benutzerResult))
{
foreach ($benutzerResult->retval as $val)
{
$oe_kurzbz[] = $val->oe_kurzbz;
}
$sender_id = getData($authUser)[0]->person_id;
}
// Admin or commoner?
$this->load->model('system/Benutzerrolle_model', 'BenutzerrolleModel');
$isAdmin = $this->BenutzerrolleModel->isAdminByPersonId($sender_id);
if (isError($isAdmin))
{
show_error($isAdmin->retval);
}
$msgVarsData = $this->_getMsgVarsData($person_id);
// Retrieves message vars for a person from view view vw_msg_vars_person
$variablesArray = $this->messagelib->getMessageVarsPerson();
// Organisation units used to get the templates
$oe_kurzbz = $this->messagelib->getOeKurzbz($sender_id);
// Admin or commoner?
$isAdmin = $this->messagelib->getIsAdmin($sender_id);
$data = array (
'sender_id' => $sender_id,
'receivers' => isset($msgVarsData->retval) ? $msgVarsData->retval : $msgVarsData,
'message' => $msg,
'recipients' => $msgVarsData->retval,
'variables' => $variablesArray,
'oe_kurzbz' => $oe_kurzbz, // used to get the templates
'isAdmin' => $isAdmin->retval,
'personOnly' => $personOnly//indicates if sent only to persons
'isAdmin' => $isAdmin
);
$v = $this->load->view('system/messageWrite', $data);
$this->load->view('system/messages/messageWrite', $data);
}
/**
* gets Message Variables and their data for Prestudent
* @param $prestudent_id
* @param $variablesArray to be filled with variable names
* @param $msgVarsData to be filled with variable data
* Send message
*/
private function getPrestudentMsgData($prestudent_id, &$variablesArray, &$msgVarsData)
public function send()
{
$msgVarsData = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudent_id);
if ($msgVarsData->error)
{
show_error($msgVarsData->retval);
}
$persons = $this->input->post('persons');
$relationmessage_id = $this->input->post('relationmessage_id');
if (!hasData($variables = $this->MessageModel->getMessageVars()))
{
unset($variables);
}
else
{
$variablesArray = array();
// Skip person_id and prestudent_id
for ($i = 2; $i < count($variables->retval); $i++)
{
$variablesArray['{'.str_replace(" ", "_", strtolower($variables->retval[$i])).'}'] = $variables->retval[$i];
}
}
$msgVarsData = $this->MessageModel->getMsgVarsDataByPersonId($persons);
array_shift($variables->retval); // Remove person_id
array_shift($variables->retval); // Remove prestudent_id
}
$send = $this->_send($msgVarsData, $relationmessage_id);
/**
* gets Message Variables and their data for Person
* @param $person_id
* @param $variablesArray to be filled with variable names
* @param $msgVarsData to be filled with variable data
*/
private function getPersonMsgData($person_id, &$variablesArray, &$msgVarsData)
{
$msgVarsData = $this->MessageModel->getMsgVarsDataByPersonId($person_id);
if ($msgVarsData->error)
{
show_error($msgVarsData->retval);
}
if (!hasData($variables = $this->MessageModel->getMessageVarsPerson()))
{
unset($variables);
}
else
{
$variablesArray = array();
// Skip person_id
for ($i = 1; $i < count($variables->retval); $i++)
{
$variablesArray['{'.str_replace(" ", "_", strtolower($variables->retval[$i])).'}'] = $variables->retval[$i];
}
array_shift($variables->retval); // Remove person_id
}
}
/**
* send
*/
public function send($sender_id = null)
{
$result = $this->_execSend($sender_id);
if (isSuccess($result))
{
echo "Messages sent successfully";
}
else
{
echo "Error when sending message";
}
$this->load->view('system/messages/messageSent', array('success' => isSuccess($send)));
}
/**
* Send message, response is in JSON format
* @param $sender_id
*/
public function sendJson($sender_id = null)
public function sendJson()
{
$result = $this->_execSend($sender_id);
$prestudents = $this->input->post('prestudents');
$vorlage_kurzbz = $this->input->post('vorlage_kurzbz');
$oe_kurzbz = $this->input->post('oe_kurzbz');
$msgVars = $this->input->post('msgvars');
$this->output
->set_content_type('application/json')
->set_output(json_encode($result));
$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))
{
for ($i = 0; $i < count($msgVarsData->retval); $i++)
{
for ($p = 0; $p < count($prestudentsData->retval); $p++)
{
if ($prestudentsData->retval[$p]->prestudent_id == $msgVarsData->retval[$i]->prestudent_id)
{
$msgVarsData->retval[$i]->oe_kurzbz = $prestudentsData->retval[$p]->oe_kurzbz;
break;
}
}
}
}
$send = $this->_send($msgVarsData, null, $oe_kurzbz, $vorlage_kurzbz, $msgVars);
if (isError($send))
{
$this->outputJsonError($send->retval);
}
else
{
$this->outputJsonSuccess($send->retval);
}
}
// -----------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Executes message sending
* @param $sender_id
* @return array wether execution was successfull - error or success
*/
private function _execSend($sender_id)
private function _send($msgVarsData, $relationmessage_id = null, $oe_kurzbz = null, $vorlage_kurzbz = null, $msgVars = null)
{
if ($sender_id === null)
{
$user_person = $this->PersonModel->getByUid($this->uid);
if (!hasData($user_person))
{
return error('no sender');
}
$sender_id = $user_person->retval[0]->person_id;
}
$subject = $this->input->post('subject');
$body = $this->input->post('body');
$prestudents = $this->input->post('prestudents');
$persons = $this->input->post('persons');
$relationmessage_id = $this->input->post('relationmessage_id');
$vorlage_kurzbz = $this->input->post('vorlage_kurzbz');
$oe_kurzbz = $this->input->post('oe_kurzbz');
$msgvars = $this->input->post('msgvars');
if (!isset($relationmessage_id) || $relationmessage_id == '')
{
$relationmessage_id = null;
}
$authUser = $this->_getAuthUser();
// get message data of prestudents or persons
$prestudentsData = array();
if ($prestudents !== null)
{
$data = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudents);
//
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
$prestudentsData = $this->PrestudentModel->getOrganisationunits($prestudents);
}
else
$data = $this->MessageModel->getMsgVarsDataByPersonId($persons);
if (isError($authUser)) return $authUser;
// send message(s)
if (hasData($data))
$sender_id = getData($authUser)[0]->person_id;
// Send message(s)
if (hasData($msgVarsData))
{
for ($i = 0; $i < count($data->retval); $i++)
// Loads the person log library
$this->load->library('PersonLogLib');
for ($i = 0; $i < count($msgVarsData->retval); $i++)
{
$parsedText = "";
$dataArray = (array)$data->retval[$i];
foreach ($dataArray as $key => $val)
{
$newKey = str_replace(" ", "_", strtolower($key));
$dataArray[$newKey] = $dataArray[$key];
}
$msgVarsDataArray = $this->_replaceKeys((array)$msgVarsData->retval[$i]); // replaces array keys
// if oe not given, get from prestudent
if (isEmptyString($oe_kurzbz) && hasData($prestudentsData))
{
for ($p = 0; $p < count($prestudentsData->retval); $p++)
{
if ($prestudentsData->retval[$p]->prestudent_id == $data->retval[$i]->prestudent_id)
{
$oe_kurzbz = $prestudentsData->retval[$p]->oe_kurzbz;
}
}
}
// send without vorlage
// Send without vorlage
if (isEmptyString($vorlage_kurzbz))
{
$parsedText = $this->messagelib->parseMessageText($body, $dataArray);
$msg = $this->messagelib->sendMessage($sender_id, $dataArray['person_id'], $subject, $parsedText, PRIORITY_NORMAL, $relationmessage_id, $oe_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
// Send with vorlage
else
{
if (isset($msgvars) && is_array($msgvars))
if (is_array($msgVars))
{
//additional message variables
foreach ($msgvars as $key => $msgvar)
// Additional message variables
foreach ($msgVars as $key => $msgvar)
{
$dataArray[$key] = $msgvar;
$msgVarsDataArray[$key] = $msgvar;
}
}
$msg = $this->messagelib->sendMessageVorlage($sender_id, $dataArray['person_id'], $vorlage_kurzbz, $oe_kurzbz, $dataArray);
$msg = $this->messagelib->sendMessageVorlage($sender_id, $msgVarsDataArray['person_id'], $vorlage_kurzbz, $oe_kurzbz, $msgVarsDataArray);
}
if ($msg->error)
{
return error($msg->msg);
}
if (isError($msg)) return $msg;
// Loads the person log library
$this->load->library('PersonLogLib');
//write log entry
$this->personloglib->log(
$dataArray['person_id'],
// Write log entry
$personLog = $this->personloglib->log(
$msgVarsDataArray['person_id'],
'Action',
array(
'name' => 'Message sent',
'message' => 'Message sent from person '.$sender_id.' to '.$dataArray['person_id'].', messageid '.$msg->retval,
'message' => 'Message sent from person '.$sender_id.' to '.$msgVarsDataArray['person_id'].', messageid '.$msg->retval,
'success' => 'true'
),
'kommunikation',
'core',
null,
$this->uid
getAuthUID()
);
}
return success('success');
return success('Messages sent successfully');
}
}
/**
* getPersonId
*/
private function getPersonId()
{
$person_id = null;
if ($this->input->get('person_id') !== null)
else
{
$person_id = $this->input->get('person_id');
return $msgVarsData;
}
elseif ($this->input->post('person_id') !== null)
{
$person_id = $this->input->get('person_id');
}
if (!is_numeric($person_id))
{
show_error('Person_id is not numeric');
}
return $person_id;
}
/**
* Retrieve the UID of the logged user and checks if it is valid
*/
private function _setAuthUID()
{
$this->uid = getAuthUID();
if (!$this->uid) show_error('User authentification failed');
}
/**
@@ -374,16 +217,27 @@ class Messages extends Auth_Controller
public function getVorlage()
{
$vorlage_kurzbz = $this->input->get('vorlage_kurzbz');
$result = null;
if (isset($vorlage_kurzbz))
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));
$this->output
->set_content_type('application/json')
->set_output(json_encode($result));
$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($result->retval);
}
else
{
$this->outputJsonSuccess($result->retval);
}
}
@@ -392,35 +246,29 @@ class Messages extends Auth_Controller
*/
public function parseMessageText()
{
$prestudent_id = $this->input->get('prestudent_id');
$person_id = $this->input->get('person_id');
$text = $this->input->get('text');
$parsedText = '';
$data = null;
if (isset($person_id) && !isset($prestudent_id))
$data = $this->MessageModel->getMsgVarsDataByPersonId($person_id);
elseif (isset($prestudent_id))
$data = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudent_id);
if (isset($data))
if (is_numeric($person_id))
{
$parsedText = "";
if (hasData($data))
{
$dataArray = (array)$data->retval[0];
foreach ($dataArray as $key => $val)
{
$newKey = str_replace(" ", "_", strtolower($key));
$dataArray[$newKey] = $dataArray[$key];
}
$data = $this->MessageModel->getMsgVarsDataByPersonId($person_id);
}
else
{
$data = error('The given person_id is not a valid number');
}
$parsedText = $this->messagelib->parseMessageText($text, $dataArray);
}
if (isError($data) || !hasData($data))
{
$this->outputJsonError($data->retval);
}
else
{
$parsedText = $this->messagelib->parseMessageText($text, $this->_replaceKeys((array)$data->retval[0]));
$this->output
->set_content_type('application/json')
->set_output(json_encode($parsedText));
$this->outputJsonSuccess($parsedText);
}
}
@@ -433,6 +281,7 @@ class Messages extends Auth_Controller
{
$msg_id = $this->input->get('msg_id');
$receiver_id = $this->input->get('receiver_id');
$msg = $this->messagelib->getMessage($msg_id, $receiver_id);
$this->output
@@ -440,4 +289,51 @@ class Messages extends Auth_Controller
->set_output(json_encode(array($msg->retval[0])));
}
// -----------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Retrieves message vars from view vw_msg_vars
*/
private function _getMsgVarsData($person_id)
{
$msgVarsData = $this->MessageModel->getMsgVarsDataByPersonId($person_id);
if (isError($msgVarsData))
{
show_error($msgVarsData->retval);
}
return $msgVarsData;
}
/**
*
*/
private function _getAuthUser()
{
$sender_id = null;
$this->load->model('person/Person_model', 'PersonModel');
$authUser = $this->PersonModel->getByUid(getAuthUID());
if (!hasData($authUser)) $authUser = error('The current logged user person_id is not defined');
return $authUser;
}
/**
*
*/
private function _replaceKeys($data)
{
$tmpData = array();
// Replaces data array keys to a lowercase without spaces string
foreach ($data as $key => $val)
{
$tmpData[str_replace(' ', '_', strtolower($key))] = $val;
}
return $tmpData;
}
}
@@ -16,7 +16,6 @@ class Phrases extends Auth_Controller
'view' => 'system/phrase:r',
'deltext' => 'system/phrase:rw',
'edit' => 'system/phrase:rw',
'write' => 'system/phrase:rw',
'save' => 'system/phrase:rw',
'newText' => 'system/phrase:rw',
'editText' => 'system/phrase:rw',
@@ -115,19 +114,6 @@ class Phrases extends Auth_Controller
$this->load->view('system/phrases/phrasesEdit', $data);
}
/**
*
*/
public function write()
{
$data = array(
'subject' => 'TestSubject',
'body' => 'TestDevelopmentBodyText'
);
$this->load->view('system/messageWrite', $data);
}
/**
*
*/
@@ -527,7 +527,7 @@ class InfoCenter extends Auth_Controller
$logparams = array($prestudent_id, $logdata['studiengang_kurzbz'], '');
if (isset($statusgrund_id))
if (isset($statusgrund_id) && is_numeric($statusgrund_id))
{
$this->StatusgrundModel->addSelect('bezeichnung_mehrsprachig');
$statusgrund_kurzbz = $this->StatusgrundModel->load($statusgrund_id);
@@ -631,7 +631,7 @@ class InfoCenter extends Auth_Controller
public function reloadMessages($person_id)
{
$messages = $this->MessageModel->getMessagesOfPerson($person_id, 1);
$this->load->view('system/messageList.php', array('messages' => $messages->retval));
$this->load->view('system/messages/messageList.php', array('messages' => $messages->retval));
}
/**
@@ -1166,8 +1166,6 @@ class InfoCenter extends Auth_Controller
show_error($user_person->retval);
}
$messagelink = site_url('/system/Messages/write/'.$user_person->retval[0]->person_id);
$data = array (
'lockedby' => $lockedby,
'lockedbyother' => $lockedbyother,
@@ -1177,8 +1175,7 @@ class InfoCenter extends Auth_Controller
'messages' => $messages->retval,
'logs' => $logs,
'notizen' => $notizen->retval,
'notizenbewerbung' => $notizen_bewerbung->retval,
'messagelink' => $messagelink
'notizenbewerbung' => $notizen_bewerbung->retval
);
return $data;
@@ -82,6 +82,21 @@ function hasData($result)
return false;
}
/**
* Returns the property retval if $result contains data
*/
function getData($result)
{
$data = null;
if (hasData($result))
{
$data = $result->retval;
}
return $data;
}
/**
* Checks if the result represents an error
* Wrapper function of isSuccess, more readable code
+164 -104
View File
@@ -9,36 +9,41 @@ class MessageLib
{
const MSG_INDX_PREFIX = 'message_';
private $_ci;
/**
* Constructor
*/
public function __construct()
{
// Get code igniter instance
$this->ci =& get_instance();
$this->_ci =& get_instance();
// Loads message configuration
$this->ci->config->load('message');
$this->_ci->config->load('message');
// CI Parser library
$this->ci->load->library('parser');
$this->_ci->load->library('parser');
// Loads LogLib
$this->ci->load->library('LogLib');
$this->_ci->load->library('LogLib');
// Loads VorlageLib
$this->ci->load->library('VorlageLib');
$this->_ci->load->library('VorlageLib');
// Loads Mail library
$this->ci->load->library('MailLib');
$this->_ci->load->library('MailLib');
// Loading models
$this->ci->load->model('system/Message_model', 'MessageModel');
$this->ci->load->model('system/MsgStatus_model', 'MsgStatusModel');
$this->ci->load->model('system/Recipient_model', 'RecipientModel');
$this->ci->load->model('system/Attachment_model', 'AttachmentModel');
$this->_ci->load->model('system/Message_model', 'MessageModel');
$this->_ci->load->model('system/MsgStatus_model', 'MsgStatusModel');
$this->_ci->load->model('system/Recipient_model', 'RecipientModel');
$this->_ci->load->model('system/Attachment_model', 'AttachmentModel');
// Loads phrases
$this->ci->lang->load('message');
$this->_ci->lang->load('message');
}
//------------------------------------------------------------------------------------------------------------------
// Public methods
/**
* getMessage() - returns the specified received message for a specified person
*/
@@ -49,9 +54,7 @@ class MessageLib
if (!is_numeric($person_id))
return $this->_error('', MSG_ERR_INVALID_RECIPIENTS);
$msg = $this->ci->RecipientModel->getMessage($msg_id, $person_id);
return $msg;
return $this->_ci->RecipientModel->getMessage($msg_id, $person_id);
}
/**
@@ -62,9 +65,7 @@ class MessageLib
if (isEmptyString($uid))
return $this->_error('', MSG_ERR_INVALID_MSG_ID);
$msg = $this->ci->RecipientModel->getMessagesByUID($uid, $oe_kurzbz, $all);
return $msg;
return $this->_ci->RecipientModel->getMessagesByUID($uid, $oe_kurzbz, $all);
}
/**
@@ -75,9 +76,7 @@ class MessageLib
if (!is_numeric($person_id))
return $this->_error('', MSG_ERR_INVALID_MSG_ID);
$msg = $this->ci->RecipientModel->getMessagesByPerson($person_id, $oe_kurzbz, $all);
return $msg;
return $this->_ci->RecipientModel->getMessagesByPerson($person_id, $oe_kurzbz, $all);
}
/**
@@ -88,9 +87,7 @@ class MessageLib
if (!is_numeric($person_id))
return $this->_error('', MSG_ERR_INVALID_MSG_ID);
$msg = $this->ci->MessageModel->getMessagesByPerson($person_id, $oe_kurzbz, $all);
return $msg;
return $this->_ci->MessageModel->getMessagesByPerson($person_id, $oe_kurzbz, $all);
}
/**
@@ -101,7 +98,7 @@ class MessageLib
if (isEmptyString($token))
return $this->_error('', MSG_ERR_INVALID_TOKEN);
$result = $this->ci->RecipientModel->getMessageByToken($token);
$result = $this->_ci->RecipientModel->getMessageByToken($token);
if (hasData($result))
{
// Searches for a status that is different from unread
@@ -124,7 +121,7 @@ class MessageLib
'status' => MSG_STATUS_READ
);
$resultIns = $this->ci->MsgStatusModel->insert($statusKey);
$resultIns = $this->_ci->MsgStatusModel->insert($statusKey);
// If an error occured while writing on data base, then return it
if (isError($resultIns))
{
@@ -144,9 +141,7 @@ class MessageLib
if (!is_numeric($person_id))
return $this->_error('', MSG_ERR_INVALID_RECIPIENTS);
$msg = $this->ci->RecipientModel->getCountUnreadMessages($person_id, $oe_kurzbz);
return $msg;
return $this->_ci->RecipientModel->getCountUnreadMessages($person_id, $oe_kurzbz);
}
/**
@@ -172,7 +167,7 @@ class MessageLib
}
// Searches if the status is already present
$result = $this->ci->MsgStatusModel->load(array($message_id, $person_id, $status));
$result = $this->_ci->MsgStatusModel->load(array($message_id, $person_id, $status));
if (hasData($result))
{
// status already present
@@ -186,7 +181,7 @@ class MessageLib
'status' => $status
);
$result = $this->ci->MsgStatusModel->insert($statusKey);
$result = $this->_ci->MsgStatusModel->insert($statusKey);
}
return $result;
@@ -199,7 +194,7 @@ class MessageLib
{
if (!is_numeric($sender_id))
{
$sender_id = $this->ci->config->item('system_person_id');
$sender_id = $this->_ci->config->item('system_person_id');
}
$receivers = $this->_getReceivers($receiver_id, $oe_kurzbz);
@@ -230,7 +225,7 @@ class MessageLib
if (isSuccess($result))
{
// If the system is configured to send messages immediately
if ($this->ci->config->item('send_immediately') === true)
if ($this->_ci->config->item('send_immediately') === true)
{
// Send message by email!
$resultSendEmail = $this->sendOne($result->retval, $subject, $body, $multiPartMime);
@@ -274,7 +269,7 @@ class MessageLib
{
if (!is_numeric($sender_id))
{
$sender_id = $this->ci->config->item('system_person_id');
$sender_id = $this->_ci->config->item('system_person_id');
}
$receivers = $this->_getReceivers($receiver_id, $oe_kurzbz);
@@ -290,7 +285,7 @@ class MessageLib
else
{
// Load reveiver data to get its relative language
$this->ci->load->model('person/Person_model', 'PersonModel');
$this->_ci->load->model('person/Person_model', 'PersonModel');
}
// Looping on receivers
@@ -299,14 +294,14 @@ class MessageLib
$receiver_id = $receivers->retval[$i]->person_id;
// Checks if the receiver exists
$result = $this->ci->PersonModel->load($receiver_id);
$result = $this->_ci->PersonModel->load($receiver_id);
if (hasData($result))
{
// Retrives the language of the logged user
$sprache = getUserLanguage();
// Loads template data
$result = $this->ci->vorlagelib->loadVorlagetext($vorlage_kurzbz, $oe_kurzbz, $orgform_kurzbz, $sprache);
$result = $this->_ci->vorlagelib->loadVorlagetext($vorlage_kurzbz, $oe_kurzbz, $orgform_kurzbz, $sprache);
if (isSuccess($result))
{
// If the text and the subject of the template are not empty
@@ -314,9 +309,9 @@ class MessageLib
!isEmptyString($result->retval[0]->text) && !isEmptyString($result->retval[0]->subject))
{
// Parses template text
$parsedText = $this->ci->vorlagelib->parseVorlagetext($result->retval[0]->text, $data);
$parsedText = $this->_ci->vorlagelib->parseVorlagetext($result->retval[0]->text, $data);
// Parses subject
$subject = $this->ci->vorlagelib->parseVorlagetext($result->retval[0]->subject, $data);
$subject = $this->_ci->vorlagelib->parseVorlagetext($result->retval[0]->subject, $data);
// Save message
$result = $this->_saveMessage($sender_id, $receiver_id, $subject, $parsedText, $relationmessage_id, $oe_kurzbz);
@@ -324,7 +319,7 @@ class MessageLib
if (isSuccess($result))
{
// If the system is configured to send messages immediately
if ($this->ci->config->item('send_immediately') === true)
if ($this->_ci->config->item('send_immediately') === true)
{
// Send message by email!
$resultSendEmail = $this->sendOne($result->retval, $subject, $parsedText, $multiPartMime);
@@ -389,21 +384,21 @@ class MessageLib
$sent = true; // optimistic expectation
// Gets standard configs
$cfg = $this->ci->maillib->getConfigs();
$cfg = $this->_ci->maillib->getConfigs();
$cfg->email_number_to_sent = $numberToSent;
$cfg->email_number_per_time_range = $numberPerTimeRange;
$cfg->email_time_range = $email_time_range;
$cfg->email_from_system = $email_from_system;
// Overrides configs with the parameters
$this->ci->maillib->overrideConfigs($cfg);
$this->_ci->maillib->overrideConfigs($cfg);
// Gets a number ($this->ci->maillib->getMaxEmailToSent()) of unsent messages from DB
// Gets a number ($this->_ci->maillib->getMaxEmailToSent()) of unsent messages from DB
// having EMAIL_KONTAKT_TYPE as relative contact type
$result = $this->ci->RecipientModel->getMessages(
$result = $this->_ci->RecipientModel->getMessages(
EMAIL_KONTAKT_TYPE,
null,
$this->ci->maillib->getConfigs()->email_number_to_sent
$this->_ci->maillib->getConfigs()->email_number_to_sent
);
// Checks if errors were occurred
if (isSuccess($result))
@@ -418,14 +413,14 @@ class MessageLib
if ((!is_null($result->retval[$i]->receiver) && $result->retval[$i]->receiver != '')
|| (!is_null($result->retval[$i]->employeecontact) && $result->retval[$i]->employeecontact != ''))
{
$href = $this->ci->config->item('message_server').$this->ci->config->item('message_html_view_url').$result->retval[$i]->token;
$href = $this->_ci->config->item('message_server').$this->_ci->config->item('message_html_view_url').$result->retval[$i]->token;
$vorlage = $this->ci->vorlagelib->loadVorlagetext('MessageMailHTML');
$vorlage = $this->_ci->vorlagelib->loadVorlagetext('MessageMailHTML');
if(hasData($vorlage))
{
// Using a template for the html email body
$body = $this->ci->parser->parse_string(
$body = $this->_ci->parser->parse_string(
$vorlage->retval[0]->text,
array(
'href' => $href,
@@ -438,7 +433,7 @@ class MessageLib
else
{
// Using a template for the html email body
$body = $this->ci->parser->parse(
$body = $this->_ci->parser->parse(
'templates/mailHTML',
array(
'href' => $href,
@@ -450,14 +445,14 @@ class MessageLib
}
if (is_null($body) || $body == '')
{
$this->ci->loglib->logError('Error while parsing the mail template');
$this->_ci->loglib->logError('Error while parsing the mail template');
}
$vorlage = $this->ci->vorlagelib->loadVorlagetext('MessageMailTXT');
$vorlage = $this->_ci->vorlagelib->loadVorlagetext('MessageMailTXT');
if(hasData($vorlage))
{
// Using a template for the plain text email body
$altBody = $this->ci->parser->parse_string(
$altBody = $this->_ci->parser->parse_string(
$vorlage->retval[0]->text,
array(
'href' => $href,
@@ -470,7 +465,7 @@ class MessageLib
else
{
// Using a template for the plain text email body
$altBody = $this->ci->parser->parse(
$altBody = $this->_ci->parser->parse(
'templates/mailTXT',
array(
'href' => $href,
@@ -482,7 +477,7 @@ class MessageLib
}
if (is_null($altBody) || $altBody == '')
{
$this->ci->loglib->logError('Error while parsing the mail template');
$this->_ci->loglib->logError('Error while parsing the mail template');
}
// If the sender is not an employee, then system-sender is used if empty
@@ -499,7 +494,7 @@ class MessageLib
}
// Sending email
$sent = $this->ci->maillib->send(
$sent = $this->_ci->maillib->send(
$sender,
$receiverContact,
$result->retval[$i]->subject,
@@ -512,7 +507,7 @@ class MessageLib
// If errors were occurred while sending the email
if (!$sent)
{
$this->ci->loglib->logError('Error while sending an email');
$this->_ci->loglib->logError('Error while sending an email');
// Writing errors in tbl_msg_recipient
$sme = $this->setMessageError(
$result->retval[$i]->message_id,
@@ -522,7 +517,7 @@ class MessageLib
);
if (!$sme)
{
$this->ci->loglib->logError('Error while updating DB');
$this->_ci->loglib->logError('Error while updating DB');
}
}
else
@@ -532,13 +527,13 @@ class MessageLib
// If some errors occurred
if (!$sent)
{
$this->ci->loglib->logError('Error while updating DB');
$this->_ci->loglib->logError('Error while updating DB');
}
}
}
else
{
$this->ci->loglib->logError('This person does not have an email account');
$this->_ci->loglib->logError('This person does not have an email account');
// Writing errors in tbl_msg_recipient
$sme = $this->setMessageError(
$result->retval[$i]->message_id,
@@ -548,7 +543,7 @@ class MessageLib
);
if (!$sme)
{
$this->ci->loglib->logError('Error while updating DB');
$this->_ci->loglib->logError('Error while updating DB');
}
$sent = true; // Non blocking error
}
@@ -556,13 +551,13 @@ class MessageLib
}
else
{
$this->ci->loglib->logInfo('There are no email to be sent');
$this->_ci->loglib->logInfo('There are no email to be sent');
$sent = false;
}
}
else
{
$this->ci->loglib->logError('Something went wrong while getting data from DB');
$this->_ci->loglib->logError('Something went wrong while getting data from DB');
$sent = false;
}
@@ -577,7 +572,7 @@ class MessageLib
$sent = true; // optimistic expectation
// Get a specific message from DB having EMAIL_KONTAKT_TYPE as relative contact type
$result = $this->ci->RecipientModel->getMessages(
$result = $this->_ci->RecipientModel->getMessages(
EMAIL_KONTAKT_TYPE,
null,
null,
@@ -598,12 +593,12 @@ class MessageLib
if ($multiPartMime === true)
{
// Using a template for the html email body
$href = $this->ci->config->item('message_server').$this->ci->config->item('message_html_view_url').$result->retval[0]->token;
$href = $this->_ci->config->item('message_server').$this->_ci->config->item('message_html_view_url').$result->retval[0]->token;
$vorlage = $this->ci->vorlagelib->loadVorlagetext('MessageMailHTML');
$vorlage = $this->_ci->vorlagelib->loadVorlagetext('MessageMailHTML');
if(hasData($vorlage))
{
$bodyMsg = $this->ci->parser->parse_string(
$bodyMsg = $this->_ci->parser->parse_string(
$vorlage->retval[0]->text,
array(
'href' => $href,
@@ -615,7 +610,7 @@ class MessageLib
}
else
{
$bodyMsg = $this->ci->parser->parse(
$bodyMsg = $this->_ci->parser->parse(
'templates/mailHTML',
array(
'href' => $href,
@@ -628,14 +623,14 @@ class MessageLib
if (is_null($bodyMsg) || $bodyMsg == '')
{
// $body = $result->retval[0]->body;
$this->ci->loglib->logError('Error while parsing the html mail template');
$this->_ci->loglib->logError('Error while parsing the html mail template');
}
// Using a template for the plain text email body
$vorlage = $this->ci->vorlagelib->loadVorlagetext('MessageMailTXT');
$vorlage = $this->_ci->vorlagelib->loadVorlagetext('MessageMailTXT');
if(hasData($vorlage))
{
$altBody = $this->ci->parser->parse_string(
$altBody = $this->_ci->parser->parse_string(
$vorlage->retval[0]->text,
array(
'href' => $href,
@@ -647,7 +642,7 @@ class MessageLib
}
else
{
$altBody = $this->ci->parser->parse(
$altBody = $this->_ci->parser->parse(
'templates/mailTXT',
array(
'href' => $href,
@@ -659,7 +654,7 @@ class MessageLib
}
if (is_null($altBody) || $altBody == '')
{
$this->ci->loglib->logError('Error while parsing the plain text mail template');
$this->_ci->loglib->logError('Error while parsing the plain text mail template');
}
}
else
@@ -681,7 +676,7 @@ class MessageLib
}
// Sending email
$sent = $this->ci->maillib->send(
$sent = $this->_ci->maillib->send(
null,
$receiverContact,
is_null($subject) ? $result->retval[0]->subject : $subject, // if parameter subject is not null, use it!
@@ -694,7 +689,7 @@ class MessageLib
// If errors were occurred while sending the email
if (!$sent)
{
$this->ci->loglib->logError('Error while sending an email');
$this->_ci->loglib->logError('Error while sending an email');
// Writing errors in tbl_msg_recipient
$sme = $this->setMessageError(
$result->retval[0]->message_id,
@@ -704,7 +699,7 @@ class MessageLib
);
if (!$sme)
{
$this->ci->loglib->logError('Error while updating DB');
$this->_ci->loglib->logError('Error while updating DB');
}
}
else
@@ -714,13 +709,13 @@ class MessageLib
// If the email has been sent and the DB updated
if (!$sent)
{
$this->ci->loglib->logError('Error while updating DB');
$this->_ci->loglib->logError('Error while updating DB');
}
}
}
else
{
$this->ci->loglib->logError('This person does not have an email account');
$this->_ci->loglib->logError('This person does not have an email account');
// Writing errors in tbl_msg_recipient
$sme = $this->setMessageError(
$result->retval[0]->message_id,
@@ -730,27 +725,100 @@ class MessageLib
);
if (!$sme)
{
$this->ci->loglib->logError('Error while updating DB');
$this->_ci->loglib->logError('Error while updating DB');
}
$sent = true; // Non blocking error
}
}
else
{
$this->ci->loglib->logInfo('There are no email to be sent');
$this->_ci->loglib->logInfo('There are no email to be sent');
$sent = false;
}
}
else
{
$this->ci->loglib->logError('Something went wrong while getting data from DB');
$this->_ci->loglib->logError('Something went wrong while getting data from DB');
$sent = false;
}
return $sent;
}
// ------------------------------------------------------------------------
/**
* parseMessageText
*/
public function parseMessageText($text, $data = array())
{
return $this->_ci->parser->parse_string($text, $data, true);
}
/**
* Gets data for Person from view vw_msg_vars_person
* @param $person_id
*/
public function getMessageVarsPerson()
{
$variablesArray = array();
$variables = $this->_ci->MessageModel->getMessageVarsPerson();
if (isError($variables))
{
show_error($variables->retval);
}
elseif (hasData($variables))
{
// Skip person_id
for ($i = 1; $i < count($variables->retval); $i++)
{
$variablesArray['{'.str_replace(' ', '_', strtolower($variables->retval[$i])).'}'] = $variables->retval[$i];
}
array_shift($variables->retval); // Remove person_id
}
return $variablesArray;
}
/**
* A person may belongs to more organisation units
*/
public function getOeKurzbz($sender_id)
{
$oe_kurzbz = array();
$this->_ci->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
$benutzerResult = $this->_ci->BenutzerfunktionModel->getByPersonId($sender_id);
if (isError($benutzerResult))
{
show_error($benutzerResult->retval);
}
elseif (hasData($benutzerResult))
{
foreach ($benutzerResult->retval as $val)
{
$oe_kurzbz[] = $val->oe_kurzbz;
}
}
return $oe_kurzbz;
}
/**
* Admin or commoner?
*/
public function getIsAdmin($sender_id)
{
$this->_ci->load->model('system/Benutzerrolle_model', 'BenutzerrolleModel');
$isAdmin = $this->_ci->BenutzerrolleModel->isAdminByPersonId($sender_id);
if (isError($isAdmin))
{
show_error($isAdmin->retval);
}
return $isAdmin->retval;
}
//------------------------------------------------------------------------------------------------------------------
// Private methods
/**
@@ -761,7 +829,7 @@ class MessageLib
$updated = false;
// Updates table tbl_msg_recipient
$resultUpdate = $this->ci->RecipientModel->update(array($receiver_id, $message_id), $parameters);
$resultUpdate = $this->_ci->RecipientModel->update(array($receiver_id, $message_id), $parameters);
// Checks if errors were occurred
if (isSuccess($resultUpdate) && is_array($resultUpdate->retval))
{
@@ -802,13 +870,13 @@ class MessageLib
private function _getReceiversByOekurzbz($oe_kurzbz)
{
// Load Benutzerfunktion_model
$this->ci->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
$this->_ci->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
// Join with table public.tbl_benutzer on field uid
$this->ci->BenutzerfunktionModel->addJoin('public.tbl_benutzer', 'uid');
$this->_ci->BenutzerfunktionModel->addJoin('public.tbl_benutzer', 'uid');
// Get all the valid receivers id using the oe_kurzbz
$receivers = $this->ci->BenutzerfunktionModel->loadWhere(
'oe_kurzbz = '.$this->ci->db->escape($oe_kurzbz).
' AND funktion_kurzbz = '.$this->ci->db->escape($this->ci->config->item('assistent_function')).
$receivers = $this->_ci->BenutzerfunktionModel->loadWhere(
'oe_kurzbz = '.$this->_ci->db->escape($oe_kurzbz).
' AND funktion_kurzbz = '.$this->_ci->db->escape($this->_ci->config->item('assistent_function')).
' AND (NOW() BETWEEN COALESCE(datum_von, NOW()) AND COALESCE(datum_bis, NOW()))'
);
@@ -851,8 +919,8 @@ class MessageLib
private function _checkReceiverId($receiver_id)
{
// Load Person_model
$this->ci->load->model('person/Person_model', 'PersonModel');
$result = $this->ci->PersonModel->load($receiver_id);
$this->_ci->load->model('person/Person_model', 'PersonModel');
$result = $this->_ci->PersonModel->load($receiver_id);
if (hasData($result))
{
return true;
@@ -867,7 +935,7 @@ class MessageLib
private function _saveMessage($sender_id, $receiver_id, $subject, $body, $relationmessage_id, $oe_kurzbz)
{
// Starts db transaction
$this->ci->db->trans_start(false);
$this->_ci->db->trans_start(false);
// Save Message
$msgData = array(
@@ -878,7 +946,7 @@ class MessageLib
'relationmessage_id' => $relationmessage_id,
'oe_kurzbz' => $oe_kurzbz
);
$result = $this->ci->MessageModel->insert($msgData);
$result = $this->_ci->MessageModel->insert($msgData);
if (isSuccess($result))
{
// Link the message with the receiver
@@ -888,7 +956,7 @@ class MessageLib
'message_id' => $msg_id,
'token' => generateToken()
);
$result = $this->ci->RecipientModel->insert($recipientData);
$result = $this->_ci->RecipientModel->insert($recipientData);
if (isSuccess($result))
{
// Save message status
@@ -897,20 +965,20 @@ class MessageLib
'person_id' => $receiver_id,
'status' => MSG_STATUS_UNREAD
);
$result = $this->ci->MsgStatusModel->insert($statusData);
$result = $this->_ci->MsgStatusModel->insert($statusData);
}
}
$this->ci->db->trans_complete();
$this->_ci->db->trans_complete();
if ($this->ci->db->trans_status() === false || isError($result))
if ($this->_ci->db->trans_status() === false || isError($result))
{
$this->ci->db->trans_rollback();
$this->_ci->db->trans_rollback();
$result = $this->_error($result->msg, EXIT_ERROR);
}
else
{
$this->ci->db->trans_commit();
$this->_ci->db->trans_commit();
$result = $this->_success($msg_id);
}
@@ -932,12 +1000,4 @@ class MessageLib
{
return success($retval, $code, MessageLib::MSG_INDX_PREFIX);
}
/**
*
*/
public function parseMessageText($text, $data = array())
{
return $this->ci->parser->parse_string($text, $data, true);
}
}
@@ -13,12 +13,12 @@ class Kostenstelle_model extends DB_Model
}
/**
* Gets all active Kostenstellen for a geschaeftsjahr, as determined by the geschaeftsjahrvon and bis fields
* Gets Kostenstellen for a geschaeftsjahr, as determined by the geschaeftsjahrvon and bis fields
* Gets Kostenstellen of current Geschaeftsjahr if Geschaeftsjahr not specified
* @param $geschaeftsjahr
* @return array|null Kostenstellen or empty array if no geschaeftsjahr found
*/
public function getActiveKostenstellenForGeschaeftsjahr($geschaeftsjahr = null)
public function getKostenstellenForGeschaeftsjahr($geschaeftsjahr = null)
{
$this->load->model('organisation/geschaeftsjahr_model', 'GeschaeftsjahrModel');
@@ -47,12 +47,12 @@ class Kostenstelle_model extends DB_Model
}
/**
* Gets all active Kostenstellen for a geschaeftsjahr, as determined by the geschaeftsjahrvon and bis fields, together with their oe,
* Gets Kostenstellen for a geschaeftsjahr, as determined by the geschaeftsjahrvon and bis fields, together with their oe,
* hierarchally sorted, gets Kostenstellen of current Geschaeftsjahr if Geschaeftsjahr not specified
* @param null $geschaeftsjahr
* @return array|null
*/
public function getActiveKostenstellenForGeschaeftsjahrWithOe($geschaeftsjahr = null)
public function getKostenstellenForGegitschaeftsjahrWithOe($geschaeftsjahr = null)
{
$this->load->model('organisation/geschaeftsjahr_model', 'GeschaeftsjahrModel');
+4 -2
View File
@@ -204,8 +204,8 @@ class Prestudent_model extends DB_Model
$this->addJoin('bis.tbl_nation zgvmanat', 'zgvmanation = zgvmanat.nation_code', 'LEFT');
$prestudent = $this->load($prestudent_id);
if($prestudent->error)
return error($prestudent->retval);
if (!hasData($prestudent))
return error('prestudent could not be loaded');
//Prestudentstatus
$this->load->model('crm/prestudentstatus_model', 'PrestudentstatusModel');
@@ -225,6 +225,7 @@ class Prestudent_model extends DB_Model
if (count($studienordnung->retval) > 0)
{
$lastStatus->retval[0]->studiengang_kz = $studienordnung->retval[0]->studiengang_kz;
$lastStatus->retval[0]->studiengangkurzbzlang = $studienordnung->retval[0]->studiengangkurzbzlang;
$lastStatus->retval[0]->studiengangbezeichnung = $studienordnung->retval[0]->studiengangbezeichnung;
$lastStatus->retval[0]->studiengangbezeichnung_englisch = $studienordnung->retval[0]->studiengangbezeichnung_englisch;
@@ -233,6 +234,7 @@ class Prestudent_model extends DB_Model
//get Sprache
$this->load->model('system/sprache_model', 'SpracheModel');
$this->SpracheModel->addSelect('sprache, locale, bezeichnung');
$language = $this->SpracheModel->load($lastStatus->retval[0]->sprache);
if ($language->error)
+2 -95
View File
@@ -7,6 +7,7 @@ $this->load->view('templates/FHC-Header',
'fontawesome' => true,
'sbadmintemplate' => true,
'ajaxlib' => true,
'addons' => true,
'navigationwidget' => true
)
);
@@ -23,102 +24,8 @@ $this->load->view('templates/FHC-Header',
<h3 class="page-header">FH-Complete</h3>
</div>
</div>
<div class="row">
<div class="col-lg-3 col-md-6">
<div class="panel panel-primary">
<div class="panel-heading">
<div class="row">
<div class="col-xs-3">
<i class="fa fa-comments fa-5x"></i>
</div>
<div class="col-xs-9 text-right">
<div class="huge">26</div>
<div>neue Messages</div>
</div>
</div>
</div>
<a href="#">
<div class="panel-footer">
<span class="pull-left">View Details</span>
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
<div class="clearfix"></div>
</div>
</a>
</div>
</div>
<div class="col-lg-3 col-md-6">
<div class="panel panel-green">
<div class="panel-heading">
<div class="row">
<div class="col-xs-3">
<i class="fa fa-tasks fa-5x"></i>
</div>
<div class="col-xs-9 text-right">
<div class="huge">12</div>
<div>neue Interessenten</div>
</div>
</div>
</div>
<a href="#">
<div class="panel-footer">
<span class="pull-left">View Details</span>
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
<div class="clearfix"></div>
</div>
</a>
</div>
</div>
<div class="col-lg-3 col-md-6">
<div class="panel panel-yellow">
<div class="panel-heading">
<div class="row">
<div class="col-xs-3">
<i class="fa fa-clock-o fa-5x"></i>
</div>
<div class="col-xs-9 text-right">
<div class="huge">124</div>
<div>inaktive Interessenten</div>
</div>
</div>
</div>
<a href="#">
<div class="panel-footer">
<span class="pull-left">View Details</span>
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
<div class="clearfix"></div>
</div>
</a>
</div>
</div>
<div class="col-lg-3 col-md-6">
<div class="panel panel-red">
<div class="panel-heading">
<div class="row">
<div class="col-xs-3">
<i class="fa fa-support fa-5x"></i>
</div>
<div class="col-xs-9 text-right">
<div class="huge">13</div>
<div>Support Tickets!</div>
</div>
</div>
</div>
<a href="#">
<div class="panel-footer">
<span class="pull-left">View Details</span>
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
<div class="clearfix"></div>
</div>
</a>
</div>
</div>
</div>
<!-- /.row -->
<span>
<?php
//$this->load->view('system/infocenter/infocenterData.php');
?>
<div id="dashboard"></div>
</span>
</div>
</div>
@@ -9,7 +9,8 @@
'fontawesome' => true,
'ajaxlib' => true,
'customCSSs' => array(
'public/css/tools/gradelist.css'
'public/css/tools/gradelist.css',
'public/css/fhcomplete.css'
),
'customJSs' => array(
'public/js/bootstrapper.js'
@@ -143,7 +143,7 @@
<div class="panel-body">
<div class="row" id="messagelist">
<?php
$this->load->view('system/messageList.php', $messages);
$this->load->view('system/messages/messageList.php', $messages);
?>
</div>
</div>
@@ -66,7 +66,7 @@
</tr>
</thead>
<tbody>
<?php
<?php
$lastMailAdress = '';
foreach ($stammdaten->kontakte as $kontakt): ?>
<tr>
@@ -113,12 +113,11 @@
</table>
<div class="row">
<div class="col-xs-6">
<form id="sendmsgform" method="post" action="<?php echo $messagelink ?>"
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') ?></a>
<form id="sendmsgform" method="post" action="<?php echo site_url('/system/Messages/write'); ?>" 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'); ?>
</a>
</form>
</div>
<?php if (isset($stammdaten->zugangscode)): ?>
@@ -2,11 +2,34 @@
<?php
$unique_studsemester = array();
$first = true;
$fit_programme_studiengaenge = array(10021, 10027);
foreach ($zgvpruefungen as $zgvpruefung):
$infoonly = $zgvpruefung->infoonly;
$studiengangkurzbz = $studiengangbezeichnung = $studiengangtyp = '';
$studiensemester = isset($zgvpruefung->prestudentstatus->studiensemester_kurzbz) ? $zgvpruefung->prestudentstatus->studiensemester_kurzbz : '';
$studiengangkurzbz = empty($zgvpruefung->prestudentstatus->studiengangkurzbzlang) ? $zgvpruefung->studiengang : $zgvpruefung->prestudentstatus->studiengangkurzbzlang;
$studiengangbezeichnung = empty($zgvpruefung->prestudentstatus->studiengangbezeichnung) ? $zgvpruefung->studiengangbezeichnung : $zgvpruefung->prestudentstatus->studiengangbezeichnung;
$studiengang_kz = isset($zgvpruefung->studiengang_kz) ? $zgvpruefung->studiengang_kz : '';
$studiengangtyp = isset($zgvpruefung->studiengangtyp) ? $zgvpruefung->studiengangtyp : '';
if (empty($zgvpruefung->prestudentstatus->studiengangkurzbzlang))
{
if (!empty($zgvpruefung->studiengang))
$studiengangkurzbz = $zgvpruefung->studiengang;
}
else
{
$studiengangkurzbz = $zgvpruefung->prestudentstatus->studiengangkurzbzlang;
}
if (empty($zgvpruefung->prestudentstatus->studiengangbezeichnung))
{
if (!empty($zgvpruefung->studiengangbezeichnung))
$studiengangbezeichnung = $zgvpruefung->studiengangbezeichnung;
}
else
{
$studiengangbezeichnung = $zgvpruefung->prestudentstatus->studiengangbezeichnung;
}
//set bootstrap columns for zgv form
$columns = array(3, 3, 3, 3);
@@ -219,7 +242,7 @@
</div>
</div>
<!-- show only master zgv if master studiengang - start -->
<?php if ($zgvpruefung->studiengangtyp === 'm') : ?>
<?php if ($studiengangtyp === 'm') : ?>
<div class="row">
<div class="col-lg-<?php echo $columns[0] ?>">
<div class="form-group"><label><?php echo $this->p->t('infocenter', 'zgv') . ' ' . $this->p->t('lehre','master') . ':'?></label>
@@ -360,17 +383,24 @@
</div>
</div><!-- /.column-absage -->
<?php
$disabled = $disabledTxt = '';
$disabled = $disabledStg = $disabledTxt = $disabledStgTxt = '';
if (isEmptyString($zgvpruefung->prestudentstatus->bewerbung_abgeschicktamum))
{
$disabled = 'disabled';
$disabledTxt = 'Die Bewerbung muss erst abgeschickt worden sein.';
$disabled = $disabledStg = 'disabled';
$disabledTxt = $disabledStgTxt = 'Die Bewerbung muss erst abgeschickt worden sein.';
}
if ($zgvpruefung->studiengangtyp !== 'b')
if ($studiengangtyp !== 'b')
{
$disabled = 'disabled';
$disabledTxt = 'Nur Bachelorstudiengänge können freigegeben werden.';;
$disabledTxt = 'Nur Bachelorstudiengänge können freigegeben werden.';
// FIT-Lehrgänge: exceptions, can be freigegeben in Infocenter
if (!in_array($studiengang_kz, $fit_programme_studiengaenge))
{
$disabledStg = 'disabled';
$disabledStgTxt = 'Nur Bachelorstudiengänge können freigegeben werden.';
}
}
?>
<div class="col-lg-8 text-right">
@@ -378,7 +408,7 @@
<div class="input-group frgstatusgrselect" id="frgstatusgrselect_<?php echo $zgvpruefung->prestudent_id ?>">
<select name="frgstatusgrund"
class="d-inline float-right"
<?php echo $disabled ?>
<?php echo $disabledStg ?>
required>
<option value="null"
selected="selected"><?php echo ucfirst($this->p->t('ui', 'freigabeart')) . '...' ?>
@@ -388,8 +418,8 @@
<?php endforeach ?>
</select>
<span class="input-group-btn">
<button class="btn btn-default freigabebtnstg" <?php echo $disabled ?> id="freigabebtnstg_<?php echo $zgvpruefung->prestudent_id ?>"
data-toggle="tooltip" title="<?php echo $disabledTxt ?>">
<button class="btn btn-default freigabebtnstg" <?php echo $disabledStg ?> id="freigabebtnstg_<?php echo $zgvpruefung->prestudent_id ?>"
data-toggle="tooltip" title="<?php echo $disabledStgTxt ?>">
<?php echo $this->p->t('ui', 'freigabeAnStudiengang') ?>
</button>
</span>
-107
View File
@@ -1,107 +0,0 @@
<?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/messageSent.css')
)
);
?>
<body>
<div id="wrapper">
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-xs-6">
<h3 class="page-header text-right">Thank you for getting in touch!</h3>
</div>
<div class="col-xs-6">
<h3 class="page-header">Danke für die Kontaktaufnahme!</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!
</div>
<div class="col-xs-6">
Nachricht erfolgreich versandt!
</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>
<div class="row">
<div class="col-xs-6 text-right" style="border-right: 1px">
You can safely close this window.
</div>
<div class="col-xs-6">
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">
Fachhochschule Technikum Wien | University of Applied Sciences Technikum Wien
<br>Hoechstaedtplatz 6, 1200 Wien, AUSTRIA
<br><a class="signatureblocklink" href="https://www.technikum-wien.at">www.technikum-wien.at</a>
</p>
</div>
</div>
</div>
<!-- <div class="panel-footer">
<div class="row">
<div class="col-xs-12">
<button class="btn btn-default" onclick="javascript:window.close(); return false;">
<i class="fa fa-times"></i>&nbsp;Close | Schlie&szlig;en
</button>
</div>
<div class="col-xs-6 text-right">
<button class="btn btn-default"><i class="glyphicon glyphicon-new-window"></i>&nbsp;My Application | Meine Bewerbung</button>
</div>
</div>
</div>-->
</div>
</div>
</div>
</div>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
-319
View File
@@ -1,319 +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')
)
);
?>
<body>
<?php
$href = site_url().'/system/Messages/send/';
?>
<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 $href; ?>">
<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($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><?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 endif; ?>
</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($receivers) && count($receivers) > 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($receivers) > 1)
echo '<option value="-1">Select...</option>';
$idtype = $personOnly === true ? 'person_id' : 'prestudent_id';
foreach ($receivers as $receiver)
{
?>
<option value="<?php echo $receiver->{$idtype}; ?>"><?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
endif;
?>
<?php
for ($i = 0; $i < count($receivers); $i++)
{
$receiver = $receivers[$i];
if ($personOnly === true)
{
$receiverid = $receiver->person_id;
$fieldname = 'persons[]';
}
else
{
$receiverid = $receiver->prestudent_id;
$fieldname = 'prestudents[]';
}
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
}
?>
</form>
</div>
</div>
</div>
<script>
const CONTROLLER_URL = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + "/"+FHC_JS_DATA_STORAGE_OBJECT.called_path;
tinymce.init({
selector: "#bodyTextArea",
plugins: "autoresize",
autoresize_min_height: 150,
autoresize_max_height: 600,
autoresize_bottom_margin: 10
});
tinymce.init({
menubar: false,
toolbar: false,
statusbar: false,
readonly: 1,
selector: "#tinymcePreview",
plugins: "autoresize",
autoresize_min_height: 150,
autoresize_bottom_margin: 10
});
$(document).ready(function ()
{
if ($("#variables"))
{
$("#variables").dblclick(function ()
{
if ($("#bodyTextArea"))
{
//if editor active add at cursor position, otherwise at end
if (tinymce.activeEditor.id === "bodyTextArea")
tinymce.activeEditor.execCommand('mceInsertContent', false, $(this).children(":selected").val());
else
tinyMCE.get("bodyTextArea").setContent(tinyMCE.get("bodyTextArea").getContent() + $(this).children(":selected").val());
}
});
}
if ($("#recipients"))
{
$("#recipients").change(tinymcePreviewSetContent);
}
if ($("#refresh"))
{
$("#refresh").click(tinymcePreviewSetContent);
}
if ($("#sendButton") && $("#sendForm"))
{
$("#sendButton").click(function ()
{
if ($("#subject") && $("#subject").val() != '' && tinyMCE.get("bodyTextArea").getContent() != '')
{
$("#sendForm").submit();
}
else
{
alert("Subject and text are required fields!");
}
});
}
if ($("#vorlageDnD"))
{
$("#vorlageDnD").change(function ()
{
if (this.value != '')
{
$.ajax({
dataType: "json",
url: CONTROLLER_URL+"/getVorlage",
data: {"vorlage_kurzbz": this.value},
success: function (data, textStatus, jqXHR)
{
tinyMCE.get("bodyTextArea").setContent(data.retval[0].text);
$("#subject").val(data.retval[0].subject);
},
error: function (jqXHR, textStatus, errorThrown)
{
alert(textStatus + " - " + errorThrown);
}
});
}
});
}
$("#subject").focus();
});
function tinymcePreviewSetContent()
{
if ($("#tinymcePreview"))
{
if ($("#recipients").children(":selected").val() > -1)
{
parseMessageText($("#recipients").children(":selected").val(), tinyMCE.get("bodyTextArea").getContent());
}
else
{
tinyMCE.get("tinymcePreview").setContent("");
}
}
}
function parseMessageText(receiver_id, text)
{
<?php
$idtype = $personOnly === true ? 'person_id' : 'prestudent_id';
?>
$.ajax({
dataType: "json",
url: CONTROLLER_URL+"/parseMessageText",
data: {"<?php echo $idtype ?>": receiver_id, "text": text},
success: function (data, textStatus, jqXHR)
{
tinyMCE.get("tinymcePreview").setContent(data);
},
error: function (jqXHR, textStatus, errorThrown)
{
alert(textStatus + " - " + errorThrown + " - " + jqXHR.responseText);
}
});
}
</script>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
@@ -1,89 +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')
)
);
?>
<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/messageForm.php'); ?>
<?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>
<script>
tinymce.init({
selector: "#bodyTextArea",
plugins: "autoresize",
autoresize_min_height: 150,
autoresize_max_height: 600,
autoresize_bottom_margin: 10,
auto_focus: "bodyTextArea"
});
$(document).ready(function ()
{
if ($("#sendButton") && $("#sendForm"))
{
$("#sendButton").click(function ()
{
if ($("#subject") && $("#subject").val() != '' && tinyMCE.get("bodyTextArea").getContent() != '')
{
$("#sendForm").submit();
}
else
{
alert("Subject and text are required fields!");
}
});
}
});
</script>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
@@ -0,0 +1,103 @@
<?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/messageSent.css')
)
);
?>
<body>
<div id="wrapper">
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-xs-6">
<h3 class="page-header text-right">Thank you for getting in touch!</h3>
</div>
<div class="col-xs-6">
<h3 class="page-header">Danke für die Kontaktaufnahme!</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!
</div>
<div class="col-xs-6">
Nachricht erfolgreich versandt!
</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>
<div class="row">
<div class="col-xs-6 text-right" style="border-right: 1px">
You can safely close this window.
</div>
<div class="col-xs-6">
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">
Fachhochschule Technikum Wien | University of Applied Sciences Technikum Wien
<br>Hoechstaedtplatz 6, 1200 Wien, AUSTRIA
<br><a class="signatureblocklink" href="https://www.technikum-wien.at">www.technikum-wien.at</a>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
@@ -0,0 +1,92 @@
<?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/messageSent.css')
)
);
?>
<body>
<div id="wrapper">
<div id="page-wrapper">
<div class="container-fluid">
<?php
if ($success)
{
?>
<div class="row">
<div class="col-xs-6">
<h3 class="page-header text-right"></h3>
</div>
<div class="col-xs-6">
<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!
</div>
<div class="col-xs-6">
Nachricht erfolgreich versandt!
</div>
</div>
</div>
<div class="panel-body">
<br>
<div class="row">
<div class="col-xs-6 text-right" style="border-right: 1px">
You can safely close this window.
</div>
<div class="col-xs-6">
Sie können dieses Fenster schließen.
</div>
</div>
<br>
</div>
</div>
<div class="row">
<div class="col-xs-12 text-center">
<p class="signatureblock">
Fachhochschule Technikum Wien | University of Applied Sciences Technikum Wien
<br>Hoechstaedtplatz 6, 1200 Wien, AUSTRIA
<br><a class="signatureblocklink" href="https://www.technikum-wien.at">www.technikum-wien.at</a>
</p>
</div>
</div>
</div>
</div>
<?php
}
?>
</div>
</div>
</div>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
@@ -0,0 +1,183 @@
<?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"); ?>
@@ -0,0 +1,63 @@
<?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"); ?>
@@ -93,8 +93,6 @@
// NavigationWidget CSS
if ($navigationwidget === true) generateCSSsInclude('public/css/NavigationWidget.css');
generateCSSsInclude('public/css/fhcomplete.css');
// Eventually required CSS
generateCSSsInclude($customCSSs); // Eventually required CSS
+3 -1
View File
@@ -205,8 +205,10 @@ echo '
//Foto anzeigen
$benutzer = new benutzer();
$benutzer->load($uid);
$person = new person();
$person->load($benutzer->person_id);
//var_dump($person);
if ($person->foto != '')
{
if (!($ansicht && $user->foto_sperre))
@@ -238,7 +240,7 @@ if (!$ansicht)
echo '</td><td width="30%" valign="top">';
echo '
<b>'.($type == "student"?$p->t("profil/student"):$p->t('profil/mitarbeiter')).'</b><br><br>
<b>'.($type == "student"?$p->t("profil/student") : ($user->fixangestellt ? $p->t('profil/mitarbeiter') : $p->t('personensuche/mitarbeiterInExtern'))).'</b><br><br>
'.$p->t('global/username').': '.$user->uid.'<br>';
if ($type == 'student' && $person->matr_nr)
echo $p->t('global/matrikelnummer'). ": ". $person->matr_nr. "<br>";
+10 -10
View File
@@ -158,7 +158,7 @@ function searchPerson($searchItems)
{
$bisverwendung = new bisverwendung();
$bisverwendung->getLastAktVerwendung($row->uid);
echo '<tr>';
//echo '<td>',$row->titelpre,'</td>';
echo '<td>',$row->anrede,'</td>';
@@ -171,7 +171,7 @@ function searchPerson($searchItems)
echo '</td>';
//echo '<td>',$row->titelpost,'</td>';
echo '<td>',($row->studiengang!=''?$row->studiengang:'-'),'</td>';
echo '<td>',($row->mitarbeiter_uid==NULL?'StudentIn':'MitarbeiterIn'),'</td>';
echo '<td>',($row->mitarbeiter_uid==NULL ? $p->t('personensuche/studentIn') : ($row->fixangestellt=='t' ? $p->t('personensuche/mitarbeiterIn') : $p->t('personensuche/mitarbeiterInExtern'))),'</td>';
// Display phone number
echo '<td>';
// * if user has telefonklappe, display it
@@ -197,7 +197,7 @@ function searchPerson($searchItems)
{
echo $kontakt->kontakt. "<br>";
$is_zugestellt = true;
}
}
}
// if zustellung is false display '-'
if (!$is_zugestellt)
@@ -211,7 +211,7 @@ function searchPerson($searchItems)
echo '-';
}
}
echo '</td>';
echo '</td>';
echo '<td>',($row->raum!=''?$row->raum:'-'),'</td>';
if($row->alias!='' && !in_array($row->studiengang_kz, $noalias))
$mail = $row->alias.'@'.DOMAIN;
@@ -311,7 +311,7 @@ function searchOE($searchItems)
if($bisverwendung->beschausmasscode=='5')
echo '<span style="color: orange"> (karenziert)</span>';
echo '</td>';
// Display phone number
echo '<td>';
// * if user has telefonklappe, display it
@@ -323,7 +323,7 @@ function searchOE($searchItems)
else
{
$person_id = $person->person_id;
if ($kontakt->load_persKontakttyp($person_id, 'firmenhandy'))
{
$is_zugestellt = false;
@@ -334,13 +334,13 @@ function searchOE($searchItems)
{
echo $kontakt->kontakt. "<br>";
$is_zugestellt = true;
}
}
}
// if zustellung is false display '-'
if (!$is_zugestellt)
{
echo '-';
}
}
}
// * if neither telefonklappe nor business handy, display '-'
else
@@ -348,8 +348,8 @@ function searchOE($searchItems)
echo '-';
}
}
echo '</td>';
echo '</td>';
echo '<td>',($mitarbeiter->ort_kurzbz!=''?$mitarbeiter->ort_kurzbz:'-'),'</td>';
//if($row->alias!='' && !in_array($row->studiengang_kz, $noalias)) ??? Was macht $noalias?
if($person->alias!='')
+1 -1
View File
@@ -1250,7 +1250,7 @@ function MessageNew()
{
var prestudentIdArray = getMultipleTreeCellText(tree, 'student-treecol-prestudent_id');
var action = '<?php echo APP_ROOT ?>index.ci.php/system/Messages/write/' + <?php echo $benutzer->person_id; ?>;
var action = '<?php echo APP_ROOT ?>index.ci.php/system/FASMessages/write/' + <?php echo $benutzer->person_id; ?>;
openWindowPostArray(action, 'prestudent_id', prestudentIdArray);
}
+191 -191
View File
@@ -1,191 +1,191 @@
<?php
/* Copyright (C) 2016 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 MessagePersonID=null;
var MessagesTreeDatasource=''; // Datasource des Adressen Trees
var MessagesSelectID='';
var MessageSenderPersonID='';
var MessageIFrameIsInitialized=false;
var MessagesTreeSinkObserver =
{
onBeginLoad : function(pSink) {},
onInterrupt : function(pSink) {},
onResume : function(pSink) {},
onError : function(pSink, pStatus, pError) {},
onEndLoad : function(pSink)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
document.getElementById('messages-tree').builder.rebuild();
}
};
var MessagesTreeListener =
{
willRebuild : function(builder) { },
didRebuild : function(builder)
{
//timeout nur bei Mozilla notwendig da sonst die rows
//noch keine values haben. Ab Seamonkey funktionierts auch
//ohne dem setTimeout
//window.setTimeout(KontaktAdressenTreeSelectID,10);
}
};
// ****
// * Laedt die Trees
// ****
function loadMessages(person_id, fas_person_id)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
MessagePersonID = person_id;
MessageSenderPersonID=fas_person_id;
//Adressen laden
url = "<?php echo APP_ROOT; ?>rdf/messages.rdf.php?person_id="+person_id+"&"+gettimestamp();
var tree=document.getElementById('messages-tree');
try
{
MessagesTreeDatasource.removeXMLSinkObserver(MessagesTreeSinkObserver);
tree.builder.removeListener(MessagesTreeListener);
}
catch(e)
{}
//Alte DS entfernen
var oldDatasources = tree.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
tree.database.RemoveDataSource(oldDatasources.getNext());
}
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
MessagesTreeDatasource = rdfService.GetDataSource(url);
MessagesTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
MessagesTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
tree.database.AddDataSource(MessagesTreeDatasource);
MessagesTreeDatasource.addXMLSinkObserver(MessagesTreeSinkObserver);
tree.builder.addListener(MessagesTreeListener);
}
// ****
// * Zeigt HTML Seite zum Erstellen neuer Nachrichten
// ****
function MessagesNewMessage()
{
var tree = parent.document.getElementById('student-tree');
if (tree.currentIndex == -1)
{
alert("Bitte markieren Sie zuerst eine Person");
}
else
{
var prestudentIdArray = getMultipleTreeCellText(tree, 'student-treecol-prestudent_id');
var action = '<?php echo APP_ROOT ?>index.ci.php/system/Messages/write/' + MessageSenderPersonID;
openWindowPostArray(action, 'prestudent_id', prestudentIdArray);
}
}
/**
* Oeffnet Nachrichtenseite um eine Antwort auf eine Nachricht zu schicken
*/
function MessagesSendAnswer()
{
var messagesTree = document.getElementById('messages-tree');
var studentsTree = parent.document.getElementById('student-tree');
if (messagesTree.currentIndex == -1)
{
alert("Bitte markieren Sie zuerst eine Nachricht");
}
else
{
var MessageId = getTreeCellText(messagesTree, 'messages-tree-message_id', messagesTree.currentIndex);
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/Messages/write/' + MessageSenderPersonID + '/' + MessageId + '/' + RecipientID;
openWindowPostArray(action, 'prestudent_id', prestudentIdArray);
}
}
function MessageAuswahl()
{
var tree=document.getElementById('messages-tree');
if(tree.currentIndex==-1)
{
alert("Bitte markieren Sie zuerst eine Nachricht");
}
else
{
var text = getTreeCellText(tree, 'messages-tree-body', tree.currentIndex);
var recipient_id = getTreeCellText(tree, 'messages-tree-recipient_id', tree.currentIndex);
// Antworten ist nur moeglich wenn die Message vom User kommt
if(recipient_id==MessagePersonID)
{
document.getElementById('messages-tree-popup-answer').disabled=true;
document.getElementById('messages-button-answer').disabled=true;
}
else
{
document.getElementById('messages-tree-popup-answer').disabled=false;
document.getElementById('messages-button-answer').disabled=false;
}
}
MessagesIFrameSetHTML(text);
}
function MessagesIFrameSetHTML(val)
{
MessageIFrameInit();
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
editor = document.getElementById('message-wysiwyg');
if(editor.contentWindow.document.body.innerHTML!='')
{
//Inhalt leeren
editor.contentDocument.execCommand("selectall", false, null);
editor.contentDocument.execCommand("delete", false, null);
}
//Value setzen
if(val!='')
editor.contentDocument.execCommand("inserthtml", false, val);
}
function MessageIFrameInit()
{
if(!MessageIFrameIsInitialized)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
editor = document.getElementById('message-wysiwyg');
editor.contentDocument.designMode = 'on';
editor.style.backgroundColor="#FFFFFF";
MessageIFrameIsInitialized=true;
}
}
<?php
/* Copyright (C) 2016 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 MessagePersonID=null;
var MessagesTreeDatasource=''; // Datasource des Adressen Trees
var MessagesSelectID='';
var MessageSenderPersonID='';
var MessageIFrameIsInitialized=false;
var MessagesTreeSinkObserver =
{
onBeginLoad : function(pSink) {},
onInterrupt : function(pSink) {},
onResume : function(pSink) {},
onError : function(pSink, pStatus, pError) {},
onEndLoad : function(pSink)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
document.getElementById('messages-tree').builder.rebuild();
}
};
var MessagesTreeListener =
{
willRebuild : function(builder) { },
didRebuild : function(builder)
{
//timeout nur bei Mozilla notwendig da sonst die rows
//noch keine values haben. Ab Seamonkey funktionierts auch
//ohne dem setTimeout
//window.setTimeout(KontaktAdressenTreeSelectID,10);
}
};
// ****
// * Laedt die Trees
// ****
function loadMessages(person_id, fas_person_id)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
MessagePersonID = person_id;
MessageSenderPersonID=fas_person_id;
//Adressen laden
url = "<?php echo APP_ROOT; ?>rdf/messages.rdf.php?person_id="+person_id+"&"+gettimestamp();
var tree=document.getElementById('messages-tree');
try
{
MessagesTreeDatasource.removeXMLSinkObserver(MessagesTreeSinkObserver);
tree.builder.removeListener(MessagesTreeListener);
}
catch(e)
{}
//Alte DS entfernen
var oldDatasources = tree.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
tree.database.RemoveDataSource(oldDatasources.getNext());
}
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
MessagesTreeDatasource = rdfService.GetDataSource(url);
MessagesTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
MessagesTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
tree.database.AddDataSource(MessagesTreeDatasource);
MessagesTreeDatasource.addXMLSinkObserver(MessagesTreeSinkObserver);
tree.builder.addListener(MessagesTreeListener);
}
// ****
// * Zeigt HTML Seite zum Erstellen neuer Nachrichten
// ****
function MessagesNewMessage()
{
var tree = parent.document.getElementById('student-tree');
if (tree.currentIndex == -1)
{
alert("Bitte markieren Sie zuerst eine Person");
}
else
{
var prestudentIdArray = getMultipleTreeCellText(tree, 'student-treecol-prestudent_id');
var action = '<?php echo APP_ROOT ?>index.ci.php/system/FASMessages/write/' + MessageSenderPersonID;
openWindowPostArray(action, 'prestudent_id', prestudentIdArray);
}
}
/**
* Oeffnet Nachrichtenseite um eine Antwort auf eine Nachricht zu schicken
*/
function MessagesSendAnswer()
{
var messagesTree = document.getElementById('messages-tree');
var studentsTree = parent.document.getElementById('student-tree');
if (messagesTree.currentIndex == -1)
{
alert("Bitte markieren Sie zuerst eine Nachricht");
}
else
{
var MessageId = getTreeCellText(messagesTree, 'messages-tree-message_id', messagesTree.currentIndex);
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;
openWindowPostArray(action, 'prestudent_id', prestudentIdArray);
}
}
function MessageAuswahl()
{
var tree=document.getElementById('messages-tree');
if (tree.currentIndex == -1)
{
alert("Bitte markieren Sie zuerst eine Nachricht");
}
else
{
var text = getTreeCellText(tree, 'messages-tree-body', tree.currentIndex);
var recipient_id = getTreeCellText(tree, 'messages-tree-recipient_id', tree.currentIndex);
// Antworten ist nur moeglich wenn die Message vom User kommt
if (recipient_id == MessagePersonID)
{
document.getElementById('messages-tree-popup-answer').disabled=true;
document.getElementById('messages-button-answer').disabled=true;
}
else
{
document.getElementById('messages-tree-popup-answer').disabled=false;
document.getElementById('messages-button-answer').disabled=false;
}
}
MessagesIFrameSetHTML(text);
}
function MessagesIFrameSetHTML(val)
{
MessageIFrameInit();
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
editor = document.getElementById('message-wysiwyg');
if(editor.contentWindow.document.body.innerHTML!='')
{
//Inhalt leeren
editor.contentDocument.execCommand("selectall", false, null);
editor.contentDocument.execCommand("delete", false, null);
}
//Value setzen
if(val!='')
editor.contentDocument.execCommand("inserthtml", false, val);
}
function MessageIFrameInit()
{
if(!MessageIFrameIsInitialized)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
editor = document.getElementById('message-wysiwyg');
editor.contentDocument.designMode = 'on';
editor.style.backgroundColor="#FFFFFF";
MessageIFrameIsInitialized=true;
}
}
+12 -4
View File
@@ -849,13 +849,21 @@ class studiensemester extends basis_db
/**
* Laedt die Studiensemester die fuer die Onlinebewerbung aktiviert sind
*
* @param string $art Optional.
* Wenn art=WS dann wird das naechste Wintersemester geliefert.
* Wenn art=SS dann wird das naechste Sommersemester geliefert.
* @return true wenn ok, sonst false
*/
public function getStudiensemesterOnlinebewerbung()
public function getStudiensemesterOnlinebewerbung($art = '')
{
$qry = "SELECT * FROM public.tbl_studiensemester WHERE onlinebewerbung=true
ORDER BY start";
$qry = "SELECT * FROM public.tbl_studiensemester WHERE onlinebewerbung=true";
if($art == 'WS' || $art == 'SS' )
{
$qry .= " AND substring(studiensemester_kurzbz from 1 for 2)=" . $this->db_add_param($art);
}
$qry.= " ORDER BY start";
if($this->db_query($qry))
{
+1 -4
View File
@@ -146,10 +146,7 @@ var FHC_AjaxClient = {
if (jQuery.type(response) == "object" && response.hasOwnProperty(CODE))
{
if (response.error == SUCCESS)
{
isSuccess = true;
}
code = response.error;
}
return code;
+34 -21
View File
@@ -7,6 +7,10 @@ const RTFREIGABE_MESSAGE_VORLAGE_QUER = "InfocenterRTfreigegQuer";
const RTFREIGABE_MESSAGE_VORLAGE_QUER_KURZ = "InfocenterRTfreigegQuerKurz";
const STGFREIGABE_MESSAGE_VORLAGE = "InfocenterSTGfreigegeben";
//Statusgründe for which no Studiengang Freigabe Message should be sent
const FIT_PROGRAMM_STUDIENGAENGE = [10021, 10027];
const STGFREIGABE_MESSAGESEND_EXCEPTIONS = ["FIT Programm", "FIT program", "FIT programme"];
/**
* javascript file for infocenterDetails page
*/
@@ -263,23 +267,23 @@ var InfocenterDetails = {
}
);
},
saveFreigabe: function(data, rtfreigabe)
saveFreigabe: function(freigabeData)
{
FHC_AjaxClient.ajaxCallPost(
CALLED_PATH + '/saveFreigabe',
data,
{"prestudent_id": freigabeData.prestudent_id, "statusgrund_id": freigabeData.statusgrund_id},
{
successCallback: function(data, textStatus, jqXHR) {
successCallback: function(freigabeResponseData, textStatus, jqXHR) {
if (FHC_AjaxClient.hasData(data))
if (FHC_AjaxClient.hasData(freigabeResponseData))
{
FHC_AjaxClient.showVeil();
InfocenterDetails.initFrgMessageSend(data.retval.prestudent_id, rtfreigabe);
InfocenterDetails.initFrgMessageSend(freigabeData);
InfocenterDetails._refreshZgv();
FHC_AjaxClient.hideVeil();
InfocenterDetails._refreshLog();
}
else if (data.error === 2 && parseInt(data.retval.prestudent_id, 10))
else if (freigabeResponseData.error === 2 && parseInt(freigabeResponseData.retval.prestudent_id, 10))
{
FHC_DialogLib.alertError("error when setting accepted documents");
InfocenterDetails._refreshZgv();
@@ -472,13 +476,17 @@ var InfocenterDetails = {
}
);
},
initFrgMessageSend: function(prestudentid, rtfreigabe)
initFrgMessageSend: function(freigabedata)
{
var callback = function (data)
{
if (data == null)
return;
var prestudent_id = freigabedata.prestudent_id;
var statusgrund_id = freigabedata.statusgrund_id;
var rtfreigabe = !$.isNumeric(statusgrund_id);
// check if a prestudent in same semester is already freigegeben - then not send message again
var rtFreigegeben = false;
var stgFreigegeben = false;
@@ -487,7 +495,7 @@ var InfocenterDetails = {
//get prestudentstatus of message receiver
for(var i = 0; i < data.length; i++)
{
if (data[i].prestudentstatus.prestudent_id === prestudentid)
if (data[i].prestudentstatus.prestudent_id === prestudent_id)
{
receiverPrestudentstatus = data[i].prestudentstatus;
break;
@@ -504,18 +512,19 @@ var InfocenterDetails = {
var prestudentstatus = prestudent.prestudentstatus;
var id = prestudentstatus.prestudent_id;
if (id !== prestudentid)
if (id !== prestudent_id)
{
var fitfreigegeben = $.inArray(prestudentstatus.bezeichnung_statusgrund[0], STGFREIGABE_MESSAGESEND_EXCEPTIONS) >= 0;
if (receiverPrestudentstatus.studiensemester_kurzbz === prestudentstatus.studiensemester_kurzbz
&& prestudentstatus.bestaetigtam !== null && prestudentstatus.status_kurzbz === "Interessent"
&& prestudent.studiengangtyp === "b")
&& (prestudent.studiengangtyp === "b"))
{
if (prestudentstatus.statusgrund_id === null)
{
rtFreigegeben = true;
break;
}
else if($.isNumeric(prestudentstatus.statusgrund_id))
else if ($.isNumeric(prestudentstatus.statusgrund_id) && !fitfreigegeben)
{
stgFreigegeben = true;
}
@@ -541,7 +550,7 @@ var InfocenterDetails = {
'studiengangbezeichnung_englisch': studiengangbezeichnung_englisch
};
InfocenterDetails.sendFreigabeMessage(prestudentid, RTFREIGABE_MESSAGE_VORLAGE_QUER_KURZ, msgvars);
InfocenterDetails.sendFreigabeMessage(prestudent_id, RTFREIGABE_MESSAGE_VORLAGE_QUER_KURZ, msgvars);
}
}
else //not already for RT freigegeben - send RTfreigabe message
@@ -563,15 +572,17 @@ var InfocenterDetails = {
vorlage = RTFREIGABE_MESSAGE_VORLAGE
}
InfocenterDetails.sendFreigabeMessage(prestudentid, vorlage, msgvars);
InfocenterDetails.sendFreigabeMessage(prestudent_id, vorlage, msgvars);
}
}
else if (rtfreigabe === false)
{
var statusgrundbez = freigabedata.statusgrundbezeichnung ? freigabedata.statusgrundbezeichnung : "";
// if Freigabe to Studiengang, send StgFreigabe Message if not already sent
if (!stgFreigegeben)
if (!stgFreigegeben && $.inArray(statusgrundbez, STGFREIGABE_MESSAGESEND_EXCEPTIONS) < 0)
{
InfocenterDetails.sendFreigabeMessage(prestudentid, STGFREIGABE_MESSAGE_VORLAGE, msgvars);
InfocenterDetails.sendFreigabeMessage(prestudent_id, STGFREIGABE_MESSAGE_VORLAGE, msgvars);
}
}
};
@@ -729,8 +740,8 @@ var InfocenterDetails = {
{
$(".freigabeModal").modal("hide");
var prestudent_id = this.id.substr(this.id.indexOf("_") + 1);
var data = {"prestudent_id": prestudent_id};
InfocenterDetails.saveFreigabe(data, true);//Reihungstestfreigabe
var data = {"prestudent_id": prestudent_id, "statusgrund_id": null};
InfocenterDetails.saveFreigabe(data);//Reihungstestfreigabe
}
);
@@ -738,9 +749,11 @@ var InfocenterDetails = {
{
$(".freigabeModal").modal("hide");
var prestudent_id = this.id.substr(this.id.indexOf("_") + 1);
var statusgrund_id = $("#frgstatusgrselect_" + prestudent_id + " select[name=frgstatusgrund]").val();
var data = {"prestudent_id": prestudent_id, "statusgrund_id": statusgrund_id};
InfocenterDetails.saveFreigabe(data, false);//Studiengangfreigabe
var statusgrundel = $("#frgstatusgrselect_" + prestudent_id + " select[name=frgstatusgrund]");
var statusgrund_id = statusgrundel.val();
var statusgrundbezeichnung = statusgrundel.find("option[value="+statusgrund_id+"]").text();
var data = {"prestudent_id": prestudent_id, "statusgrund_id": statusgrund_id, "statusgrundbezeichnung": statusgrundbezeichnung};
InfocenterDetails.saveFreigabe(data);//Studiengangfreigabe
}
)
},
@@ -27,7 +27,7 @@ var InfocenterPersonDataset = {
appendTableActionsHtml: function()
{
var currurl = window.location.href;
var url = currurl.replace(/infocenter\/InfoCenter(.*)/, "Messages/write");
var url = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + "/system/Messages/write";
var formHtml = '<form id="sendMsgsForm" method="post" action="'+ url +'" target="_blank"></form>';
$("#datasetActionsTop").before(formHtml);
+137
View File
@@ -0,0 +1,137 @@
/**
* JS used by view system/messages/messageWrite
*/
function tinymcePreviewSetContent()
{
if ($("#tinymcePreview"))
{
if ($("#recipients").children(":selected").val() > -1)
{
parseMessageText($("#recipients").children(":selected").val(), tinyMCE.get("bodyTextArea").getContent());
}
else
{
tinyMCE.get("tinymcePreview").setContent("");
}
}
}
function parseMessageText(receiver_id, text)
{
FHC_AjaxClient.ajaxCallGet(
"system/Messages/parseMessageText",
{
person_id: receiver_id,
text: text
},
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.hasData(data))
{
tinyMCE.get("tinymcePreview").setContent(FHC_AjaxClient.getData(data));
}
else if (FHC_AjaxClient.isError(data))
{
alert(data.retval);
}
}
}
);
}
$(document).ready(function ()
{
tinymce.init({
selector: "#bodyTextArea",
plugins: "autoresize",
autoresize_min_height: 150,
autoresize_max_height: 600,
autoresize_bottom_margin: 10
});
tinymce.init({
menubar: false,
toolbar: false,
statusbar: false,
readonly: 1,
selector: "#tinymcePreview",
plugins: "autoresize",
autoresize_min_height: 150,
autoresize_bottom_margin: 10
});
if ($("#variables"))
{
$("#variables").dblclick(function ()
{
if ($("#bodyTextArea"))
{
//if editor active add at cursor position, otherwise at end
if (tinymce.activeEditor.id === "bodyTextArea")
tinymce.activeEditor.execCommand('mceInsertContent', false, $(this).children(":selected").val());
else
tinyMCE.get("bodyTextArea").setContent(tinyMCE.get("bodyTextArea").getContent() + $(this).children(":selected").val());
}
});
}
if ($("#recipients"))
{
$("#recipients").change(tinymcePreviewSetContent);
}
if ($("#refresh"))
{
$("#refresh").click(tinymcePreviewSetContent);
}
if ($("#sendButton") && $("#sendForm"))
{
$("#sendButton").click(function ()
{
if ($("#subject") && $("#subject").val() != '' && tinyMCE.get("bodyTextArea").getContent() != '')
{
$("#sendForm").submit();
}
else
{
alert("Subject and text are required fields!");
}
});
}
if ($("#vorlageDnD"))
{
$("#vorlageDnD").change(function ()
{
var vorlage_kurzbz = this.value;
if (vorlage_kurzbz != '')
{
FHC_AjaxClient.ajaxCallGet(
"system/Messages/getVorlage",
{
vorlage_kurzbz: vorlage_kurzbz
},
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.hasData(data))
{
var msg = FHC_AjaxClient.getData(data);
tinyMCE.get("bodyTextArea").setContent(msg[0].text);
$("#subject").val(msg[0].subject);
}
}
}
);
}
});
}
$("#subject").focus();
});
+30
View File
@@ -0,0 +1,30 @@
/**
* JS used by view system/messages/messageWriteReply
*/
$(document).ready(function ()
{
tinymce.init({
selector: "#bodyTextArea",
plugins: "autoresize",
autoresize_min_height: 150,
autoresize_max_height: 600,
autoresize_bottom_margin: 10,
auto_focus: "bodyTextArea"
});
if ($("#sendButton") && $("#sendForm"))
{
$("#sendButton").click(function () {
if ($("#subject") && $("#subject").val() != '' && tinyMCE.get("bodyTextArea").getContent() != '')
{
$("#sendForm").submit();
}
else
{
alert("Subject and text are required fields!");
}
});
}
});
+1 -1
View File
@@ -291,7 +291,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
echo ' <niveau_deutsch>Doktoratsstudium (UNESCO ISCED 8)</niveau_deutsch>';
echo ' <niveau_englisch>University doctoral studies (UNESCO ISCED 8)</niveau_englisch>';
}
elseif($row->typ=='l' || $row->typ=='k')
elseif($row->typ=='l' || $row->typ=='k' || $row->typ=='e')
{
echo ' <niveau_code>UNESCO ISCED 7</niveau_code>';
echo ' <niveau_deutsch>Lehrgang zur Weiterbildung nach §9 FHStG idgF.</niveau_deutsch>';
+529
View File
@@ -0,0 +1,529 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
>
<xsl:output method="xml" version="1.0" indent="yes"/>
<xsl:template match="lehrauftraege">
<office:document-content
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
xmlns:math="http://www.w3.org/1998/Math/MathML"
xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
xmlns:ooo="http://openoffice.org/2004/office"
xmlns:ooow="http://openoffice.org/2004/writer"
xmlns:oooc="http://openoffice.org/2004/calc"
xmlns:dom="http://www.w3.org/2001/xml-events"
xmlns:xforms="http://www.w3.org/2002/xforms"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:rpt="http://openoffice.org/2005/report"
xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:grddl="http://www.w3.org/2003/g/data-view#"
xmlns:officeooo="http://openoffice.org/2009/office"
xmlns:tableooo="http://openoffice.org/2009/table"
xmlns:drawooo="http://openoffice.org/2010/draw"
xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0"
xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0"
xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0"
xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0"
xmlns:css3t="http://www.w3.org/TR/css3-text/"
office:version="1.2">
<office:scripts/>
<office:font-face-decls>
<style:font-face style:name="Mangal2" svg:font-family="Mangal"/>
<style:font-face style:name="Arial1" svg:font-family="Arial" style:font-family-generic="roman" style:font-pitch="variable"/>
<style:font-face style:name="Helvetica" svg:font-family="Helvetica" style:font-family-generic="roman" style:font-pitch="variable"/>
<style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
<style:font-face style:name="Mangal" svg:font-family="Mangal" style:font-family-generic="roman" style:font-pitch="variable"/>
<style:font-face style:name="Tahoma" svg:font-family="Tahoma" style:font-family-generic="roman" style:font-pitch="variable"/>
<style:font-face style:name="Arial" svg:font-family="Arial" style:font-family-generic="swiss" style:font-pitch="variable"/>
<style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
<style:font-face style:name="0" svg:font-family="0" style:font-family-generic="system" style:font-pitch="variable"/>
<style:font-face style:name="Arial2" svg:font-family="Arial" style:font-family-generic="system" style:font-pitch="variable"/>
<style:font-face style:name="Liberation Sans1" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
<style:font-face style:name="Liberation Serif1" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
<style:font-face style:name="Mangal1" svg:font-family="Mangal" style:font-family-generic="system" style:font-pitch="variable"/>
<style:font-face style:name="Microsoft YaHei" svg:font-family="&apos;Microsoft YaHei&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
<style:font-face style:name="SimSun" svg:font-family="SimSun" style:font-family-generic="system" style:font-pitch="variable"/>
<style:font-face style:name="Tahoma1" svg:font-family="Tahoma" style:font-family-generic="system" style:font-pitch="variable"/>
</office:font-face-decls>
<office:automatic-styles>
<style:style style:name="Tabelle1" style:family="table">
<style:table-properties style:width="17cm" table:align="margins"/>
</style:style>
<style:style style:name="Tabelle1.A" style:family="table-column">
<style:table-column-properties style:column-width="1.499cm" style:rel-column-width="850*"/>
</style:style>
<style:style style:name="Tabelle1.B" style:family="table-column">
<style:table-column-properties style:column-width="5.595cm" style:rel-column-width="3172*"/>
</style:style>
<style:style style:name="Tabelle1.C" style:family="table-column">
<style:table-column-properties style:column-width="3.704cm" style:rel-column-width="2100*"/>
</style:style>
<style:style style:name="Tabelle1.D" style:family="table-column">
<style:table-column-properties style:column-width="1.997cm" style:rel-column-width="1132*"/>
</style:style>
<style:style style:name="Tabelle1.E" style:family="table-column">
<style:table-column-properties style:column-width="1.298cm" style:rel-column-width="736*"/>
</style:style>
<style:style style:name="Tabelle1.F" style:family="table-column">
<style:table-column-properties style:column-width="1.011cm" style:rel-column-width="573*"/>
</style:style>
<style:style style:name="Tabelle1.G" style:family="table-column">
<style:table-column-properties style:column-width="1.894cm" style:rel-column-width="1074*"/>
</style:style>
<style:style style:name="Tabelle1.A1" style:family="table-cell">
<style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="0.05pt solid #000000" fo:border-bottom="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.G1" style:family="table-cell">
<style:table-cell-properties fo:padding="0.097cm" fo:border="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.A2" style:family="table-cell">
<style:table-cell-properties fo:padding-left="0.07cm" fo:padding-right="0.07cm" fo:padding-top="0.05cm" fo:padding-bottom="0.05cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.G2" style:family="table-cell">
<style:table-cell-properties fo:padding-left="0.07cm" fo:padding-right="0.07cm" fo:padding-top="0.05cm" fo:padding-bottom="0.05cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle2" style:family="table">
<style:table-properties style:width="17cm" table:align="margins" style:shadow="none" fo:keep-with-next="always"/>
</style:style>
<style:style style:name="Tabelle2.A" style:family="table-column">
<style:table-column-properties style:column-width="6.001cm" style:rel-column-width="3402*"/>
</style:style>
<style:style style:name="Tabelle2.B" style:family="table-column">
<style:table-column-properties style:column-width="3cm" style:rel-column-width="1701*"/>
</style:style>
<style:style style:name="Tabelle2.C" style:family="table-column">
<style:table-column-properties style:column-width="7.999cm" style:rel-column-width="4535*"/>
</style:style>
<style:style style:name="Tabelle2.1" style:family="table-row">
<style:table-row-properties style:min-row-height="1.499cm"/>
</style:style>
<style:style style:name="Tabelle2.A1" style:family="table-cell">
<style:table-cell-properties style:vertical-align="bottom" fo:padding="0.097cm" fo:border-left="none" fo:border-right="none" fo:border-top="none" fo:border-bottom="1pt dotted #000000"/>
</style:style>
<style:style style:name="Tabelle2.B1" style:family="table-cell">
<style:table-cell-properties fo:padding="0.097cm" fo:border="none"/>
</style:style>
<style:style style:name="P1" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P2" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" officeooo:rsid="001ece18" officeooo:paragraph-rsid="001ece18" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P3" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
<style:text-properties style:font-name="Arial" fo:font-size="8pt" officeooo:rsid="001ece18" officeooo:paragraph-rsid="001ece18" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P4" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
<style:text-properties style:font-name="Arial" fo:font-size="8pt" officeooo:rsid="001ece18" officeooo:paragraph-rsid="001ece18" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P5" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
<style:text-properties style:font-name="Arial" fo:font-size="8pt" officeooo:rsid="001fea3c" officeooo:paragraph-rsid="001fea3c" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P6" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" officeooo:rsid="0013c612" officeooo:paragraph-rsid="0013c612" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P7" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" officeooo:rsid="002ab151" officeooo:paragraph-rsid="002ab151" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P8" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" officeooo:rsid="002c2d13" officeooo:paragraph-rsid="002c2d13" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P9" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:font-weight="bold" style:font-size-asian="8pt" style:font-weight-asian="bold" style:font-size-complex="8pt" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="P10" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:font-weight="bold" officeooo:rsid="001ece18" officeooo:paragraph-rsid="001ece18" style:font-size-asian="8pt" style:font-weight-asian="bold" style:font-size-complex="8pt" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="P11" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:font-weight="bold" officeooo:rsid="001ece18" officeooo:paragraph-rsid="001ece18" style:font-size-asian="8pt" style:font-weight-asian="bold" style:font-size-complex="8pt" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="P12" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:font-weight="bold" officeooo:rsid="001fea3c" officeooo:paragraph-rsid="001fea3c" style:font-size-asian="8pt" style:font-weight-asian="bold" style:font-size-complex="8pt" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="P13" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:font-weight="bold" officeooo:rsid="0021faff" officeooo:paragraph-rsid="0021faff" style:font-size-asian="8pt" style:font-weight-asian="bold" style:font-size-complex="8pt" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="P14" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:paragraph-properties fo:margin-top="0.106cm" fo:margin-bottom="0cm" loext:contextual-spacing="false">
<style:tab-stops>
<style:tab-stop style:position="7.001cm" style:leader-style="solid" style:leader-text="_"/>
</style:tab-stops>
</style:paragraph-properties>
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:language="de" fo:country="AT" style:text-underline-style="dotted" style:text-underline-width="bold" style:text-underline-color="font-color" officeooo:rsid="0013c612" officeooo:paragraph-rsid="002ab151" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P15" style:family="paragraph" style:parent-style-name="Header">
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
<style:text-properties style:font-name="Arial" officeooo:rsid="00220045" officeooo:paragraph-rsid="00220045"/>
</style:style>
<style:style style:name="P16" style:family="paragraph" style:parent-style-name="Header">
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
<style:text-properties style:font-name="Arial" fo:font-size="8pt" officeooo:rsid="00220045" officeooo:paragraph-rsid="00220045" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P17" style:family="paragraph" style:parent-style-name="Standard">
<style:text-properties style:font-name="Arial" fo:font-size="14pt" officeooo:rsid="001ece18" officeooo:paragraph-rsid="001ece18" style:font-size-asian="12.25pt" style:font-size-complex="14pt"/>
</style:style>
<style:style style:name="P18" style:family="paragraph" style:parent-style-name="Standard">
<style:text-properties style:font-name="Arial" fo:font-size="12pt" officeooo:rsid="001ece18" officeooo:paragraph-rsid="001ece18" style:font-size-asian="12pt" style:font-size-complex="12pt"/>
</style:style>
<style:style style:name="P19" style:family="paragraph" style:parent-style-name="Standard">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" officeooo:rsid="001ece18" officeooo:paragraph-rsid="001ece18" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P20" style:family="paragraph" style:parent-style-name="Standard">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" officeooo:rsid="001ece18" officeooo:paragraph-rsid="0021faff" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P21" style:family="paragraph" style:parent-style-name="Standard">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:font-weight="bold" officeooo:rsid="001ece18" officeooo:paragraph-rsid="001ece18" style:font-size-asian="8pt" style:font-weight-asian="bold" style:font-size-complex="8pt" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="P22" style:family="paragraph" style:parent-style-name="Standard">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:language="en" fo:country="US" officeooo:rsid="001ece18" officeooo:paragraph-rsid="0021faff" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P23" style:family="paragraph" style:parent-style-name="Standard">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:language="en" fo:country="US" officeooo:rsid="001ece18" officeooo:paragraph-rsid="001ece18" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P24" style:family="paragraph" style:parent-style-name="Standard">
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false">
<style:tab-stops>
<style:tab-stop style:position="7.001cm" style:leader-style="solid" style:leader-text="_"/>
</style:tab-stops>
</style:paragraph-properties>
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:language="de" fo:country="AT" officeooo:rsid="001ece18" officeooo:paragraph-rsid="0021faff" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P25" style:family="paragraph" style:parent-style-name="Standard">
<style:text-properties style:font-name="Arial" fo:font-size="10pt" fo:font-weight="bold" officeooo:rsid="001ece18" officeooo:paragraph-rsid="00220045" style:font-size-asian="10pt" style:font-weight-asian="bold" style:font-size-complex="10pt" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="P26" style:family="paragraph" style:parent-style-name="Standard">
<style:paragraph-properties fo:margin-top="0.106cm" fo:margin-bottom="0cm" loext:contextual-spacing="false">
<style:tab-stops>
<style:tab-stop style:position="7.001cm" style:leader-style="solid" style:leader-text="_"/>
</style:tab-stops>
</style:paragraph-properties>
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:language="de" fo:country="AT" style:text-underline-style="dotted" style:text-underline-width="bold" style:text-underline-color="font-color" officeooo:rsid="001ece18" officeooo:paragraph-rsid="0021faff" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P27" style:family="paragraph" style:parent-style-name="Standard">
<style:paragraph-properties fo:margin-top="0.106cm" fo:margin-bottom="0cm" loext:contextual-spacing="false" fo:text-align="end" style:justify-single-word="false">
<style:tab-stops>
<style:tab-stop style:position="7.001cm" style:leader-style="solid" style:leader-text="_"/>
</style:tab-stops>
</style:paragraph-properties>
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:language="de" fo:country="AT" style:text-underline-style="dotted" style:text-underline-width="bold" style:text-underline-color="font-color" officeooo:rsid="001ece18" officeooo:paragraph-rsid="0021faff" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P28" style:family="paragraph" style:parent-style-name="Standard">
<style:paragraph-properties fo:margin-top="0.106cm" fo:margin-bottom="0cm" loext:contextual-spacing="false" fo:text-align="end" style:justify-single-word="false">
<style:tab-stops>
<style:tab-stop style:position="7.001cm" style:leader-style="solid" style:leader-text="_"/>
</style:tab-stops>
</style:paragraph-properties>
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:language="de" fo:country="AT" style:text-underline-style="dotted" style:text-underline-width="bold" style:text-underline-color="font-color" officeooo:rsid="002ab151" officeooo:paragraph-rsid="002ab151" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P29" style:family="paragraph" style:parent-style-name="Standard">
<style:paragraph-properties fo:margin-top="0.106cm" fo:margin-bottom="0cm" loext:contextual-spacing="false">
<style:tab-stops>
<style:tab-stop style:position="7.001cm" style:leader-style="solid" style:leader-text="_"/>
</style:tab-stops>
</style:paragraph-properties>
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:language="de" fo:country="AT" officeooo:rsid="001ece18" officeooo:paragraph-rsid="0021faff" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P30" style:family="paragraph" style:parent-style-name="Standard">
<style:paragraph-properties fo:margin-top="0.106cm" fo:margin-bottom="0cm" loext:contextual-spacing="false" fo:text-align="end" style:justify-single-word="false">
<style:tab-stops>
<style:tab-stop style:position="7.001cm" style:leader-style="solid" style:leader-text="_"/>
</style:tab-stops>
</style:paragraph-properties>
<style:text-properties style:font-name="Arial" fo:font-size="8pt" officeooo:rsid="001ece18" officeooo:paragraph-rsid="0021faff" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P31" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
<loext:graphic-properties draw:fill="none"/>
<style:paragraph-properties fo:margin-left="0.3cm" fo:margin-right="8.999cm" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="auto"/>
<style:text-properties style:font-name="Arial" fo:font-size="12pt" officeooo:rsid="001ece18" officeooo:paragraph-rsid="001ece18" style:font-size-asian="12pt" style:font-size-complex="12pt"/>
</style:style>
<style:style style:name="Seitenumbruch" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
<style:paragraph-properties fo:break-before="page"/>
<loext:graphic-properties draw:fill="none"/>
<style:paragraph-properties fo:margin-left="0.3cm" fo:margin-right="8.999cm" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="auto"/>
<style:text-properties style:font-name="Arial" fo:font-size="12pt" officeooo:rsid="001ece18" officeooo:paragraph-rsid="001ece18" style:font-size-asian="12pt" style:font-size-complex="12pt"/>
</style:style>
<style:style style:name="P32" style:family="paragraph" style:parent-style-name="Standard">
<loext:graphic-properties draw:fill="none"/>
<style:paragraph-properties fo:margin-left="0.3cm" fo:margin-right="8.999cm" fo:text-indent="0cm" style:auto-text-indent="false"/>
<style:text-properties style:font-name="Arial" fo:font-size="12pt" officeooo:rsid="001ece18" officeooo:paragraph-rsid="001ece18" style:font-size-asian="12pt" style:font-size-complex="12pt"/>
</style:style>
<style:style style:name="P33" style:family="paragraph" style:parent-style-name="Standard">
<loext:graphic-properties draw:fill="none"/>
<style:paragraph-properties fo:margin-left="0.3cm" fo:margin-right="8.999cm" fo:text-indent="0cm" style:auto-text-indent="false"/>
<style:text-properties style:font-name="Arial" fo:font-size="14pt" officeooo:rsid="001ece18" officeooo:paragraph-rsid="001ece18" style:font-size-asian="12.25pt" style:font-size-complex="14pt"/>
</style:style>
<style:style style:name="P34" style:family="paragraph" style:parent-style-name="Standard">
<loext:graphic-properties draw:fill="none"/>
<style:paragraph-properties fo:margin-left="0.3cm" fo:margin-right="8.999cm" fo:text-indent="0cm" style:auto-text-indent="false"/>
<style:text-properties style:font-name="Arial" fo:font-size="7pt" officeooo:rsid="001ece18" officeooo:paragraph-rsid="001ece18" style:font-size-asian="7pt" style:font-size-complex="7pt"/>
</style:style>
<style:style style:name="P35" style:family="paragraph">
<loext:graphic-properties draw:fill-color="#999999"/>
<style:paragraph-properties fo:text-align="center"/>
</style:style>
<style:style style:name="T1" style:family="text">
<style:text-properties officeooo:rsid="001f0457"/>
</style:style>
<style:style style:name="T2" style:family="text">
<style:text-properties officeooo:rsid="001fb2b6"/>
</style:style>
<style:style style:name="T3" style:family="text">
<style:text-properties officeooo:rsid="001fea3c"/>
</style:style>
<style:style style:name="T4" style:family="text">
<style:text-properties fo:language="en" fo:country="US"/>
</style:style>
<style:style style:name="T5" style:family="text">
<style:text-properties officeooo:rsid="00220045"/>
</style:style>
<style:style style:name="T6" style:family="text">
<style:text-properties officeooo:rsid="0023d767"/>
</style:style>
<style:style style:name="fr1" style:family="graphic" style:parent-style-name="Graphics">
<style:graphic-properties fo:margin-left="0.318cm" fo:margin-right="0.318cm" fo:margin-top="0cm" fo:margin-bottom="0cm" style:run-through="background" style:wrap="run-through" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" draw:fill="none" draw:fill-color="#ffffff" fo:padding="0cm" fo:border="none" style:mirror="none" fo:clip="rect(0cm, 0cm, 0cm, 0cm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="100%" draw:color-inversion="false" draw:image-opacity="100%" draw:color-mode="standard"/>
</style:style>
<style:style style:name="fr2" style:family="graphic" style:parent-style-name="Graphics">
<style:graphic-properties style:run-through="foreground" style:wrap="run-through" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="char" style:mirror="none" fo:clip="rect(0cm, 0cm, 0cm, 0cm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="100%" draw:color-inversion="false" draw:image-opacity="100%" draw:color-mode="standard"/>
</style:style>
<style:style style:name="gr1" style:family="graphic">
<style:graphic-properties svg:stroke-color="#b2b2b2" draw:fill-color="#b2b2b2" draw:textarea-horizontal-align="center" draw:textarea-vertical-align="middle" style:protect="position size" style:run-through="foreground" style:wrap="run-through" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="from-top" style:vertical-rel="page" style:horizontal-pos="from-left" style:horizontal-rel="page"/>
</style:style>
</office:automatic-styles>
<office:body>
<xsl:apply-templates select="lehrauftrag"/>
</office:body>
</office:document-content>
</xsl:template>
<xsl:template match="lehrauftrag">
<office:text text:use-soft-page-breaks="true" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0">
<text:sequence-decls>
<text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
<text:sequence-decl text:display-outline-level="0" text:name="Table"/>
<text:sequence-decl text:display-outline-level="0" text:name="Text"/>
<text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
</text:sequence-decls>
<!-- Wichtig für Mehrfachdruck (mehrere Studenten ausgewählt): Wenn ein Element (in diesem Fall Stempel und Unterschriftenblock) relativ zur SEITE ausgerichtet werden soll,
muss für jedes Dokument (jeder neue Durchlauf der Schleife) ein draw:frame-Tag definiert werden. Diese müssen ALLE VOR den ersten text:p-Elementen stehen.
Deshalb wirde erst die Schleife für die draw:frames aufgerufen, dann folg tder Inhalt -->
<xsl:if test="position()=1">
<xsl:for-each select="../lehrauftrag">
<xsl:variable select="position()" name="number"/><!-- Variable number definieren, die nach jedem Dokument um eines erhöht wird (position) -->
<draw:line text:anchor-type="page" text:anchor-page-number="{$number}" draw:z-index="1" draw:style-name="gr{$number}" draw:text-style-name="P35" svg:x1="1.199cm" svg:y1="9.601cm" svg:x2="0.7cm" svg:y2="9.601cm">
<text:p/>
</draw:line>
<draw:line text:anchor-type="page" text:anchor-page-number="{$number}" draw:z-index="2" draw:style-name="gr{$number}" draw:text-style-name="P35" svg:x1="1.199cm" svg:y1="14.101cm" svg:x2="0.7cm" svg:y2="14.101cm">
<text:p/>
</draw:line>
</xsl:for-each>
</xsl:if>
<draw:line text:anchor-type="page" text:anchor-page-number="1" draw:z-index="1" draw:style-name="gr1" draw:text-style-name="P35" svg:x1="1.199cm" svg:y1="9.601cm" svg:x2="0.7cm" svg:y2="9.601cm">
<text:p/>
</draw:line>
<draw:line text:anchor-type="page" text:anchor-page-number="1" draw:z-index="2" draw:style-name="gr1" draw:text-style-name="P35" svg:x1="1.199cm" svg:y1="14.101cm" svg:x2="0.7cm" svg:y2="14.101cm">
<text:p/>
</draw:line>
<!--<text:p text:style-name="P31"/>-->
<text:p text:style-name="Seitenumbruch"/>
<text:p text:style-name="P32"/>
<text:p text:style-name="P32"><xsl:value-of select="mitarbeiter/name_gesamt" /></text:p>
<text:p text:style-name="P32"><xsl:value-of select="mitarbeiter/anschrift" /></text:p>
<text:p text:style-name="P32"><xsl:value-of select="mitarbeiter/plz" /><xsl:text> </xsl:text><xsl:value-of select="mitarbeiter/ort" /></text:p>
<xsl:if test="string-length(mitarbeiter/zuhanden)!=0">
<text:p text:style-name="P32"><xsl:value-of select="mitarbeiter/zuhanden" /></text:p>
</xsl:if>
<text:p text:style-name="P33"/>
<text:p text:style-name="P34">Abs.: <text:s/>Technikum Wien GmbH, Höchstädtplatz 6, 1200 Wien </text:p>
<text:p text:style-name="P33"/>
<text:p text:style-name="P17"/>
<text:p text:style-name="P17"/>
<text:p text:style-name="P25">Lehrauftrag Lehrgang <xsl:value-of select="studiengang_bezeichnung" /><xsl:text> </xsl:text>
<xsl:value-of select="studiensemester_kurzbz" /></text:p>
<text:p text:style-name="P19"/>
<text:p text:style-name="P21"><xsl:value-of select="mitarbeiter/name_gesamt" /></text:p>
<text:p text:style-name="P19">SV.Nr.: <xsl:value-of select="mitarbeiter/svnr" /></text:p>
<text:p text:style-name="P19">Personalnummer: <xsl:value-of select="mitarbeiter/personalnummer" /></text:p>
<text:p text:style-name="P19"/>
<text:p text:style-name="P19"/>
<text:p text:style-name="P19">Wir beauftragen Sie, im <xsl:value-of select="studiensemester" /> folgende Lehrveranstaltungen abzuhalten:</text:p>
<text:p text:style-name="P19"/>
<table:table table:name="Tabelle1" table:style-name="Tabelle1">
<table:table-column table:style-name="Tabelle1.A"/>
<table:table-column table:style-name="Tabelle1.B"/>
<table:table-column table:style-name="Tabelle1.C"/>
<table:table-column table:style-name="Tabelle1.D"/>
<table:table-column table:style-name="Tabelle1.E"/>
<table:table-column table:style-name="Tabelle1.F"/>
<table:table-column table:style-name="Tabelle1.G"/>
<table:table-row>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P12">ID</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P10">Lehrveranstaltung</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P10">Institut</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P10">Gruppe<text:span text:style-name="T2">(n)</text:span>
</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P13">Std.</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P10">Satz</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.G1" office:value-type="string">
<text:p text:style-name="P10">Brutto</text:p>
</table:table-cell>
</table:table-row>
<xsl:apply-templates select="lehreinheit"/>
<table:table-row>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P1"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P1"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P1"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P11">Summe:</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P11"><xsl:value-of select="gesamtstunden" /></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P9"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.G2" office:value-type="string">
<text:p text:style-name="P11"><xsl:value-of select="gesamtbetrag" /></text:p>
</table:table-cell>
</table:table-row>
</table:table>
<text:p text:style-name="P19"/>
<text:p text:style-name="P19">Die angeführten Stundensätze sind Bruttobeträge, von denen gegebenenfalls die DienstnehmerInnenanteile für Steuern und Sozialversicherung abgezogen werden.
Die angeführte Stundenzahl ist die maximal vorgesehene; abgerechnet werden jedoch nur die tatsächlich gehaltenen Stunden laut Anwesenheitslisten.
Außerdem besteht die Verpflichtung zur Teilnahme an LektorInnenkonferenzen.</text:p>
<table:table table:name="Tabelle2" table:style-name="Tabelle2">
<table:table-column table:style-name="Tabelle2.A"/>
<table:table-column table:style-name="Tabelle2.B"/>
<table:table-column table:style-name="Tabelle2.C"/>
<table:table-row table:style-name="Tabelle2.1">
<table:table-cell table:style-name="Tabelle2.A1" office:value-type="string">
<text:p text:style-name="P7">
<draw:frame draw:style-name="fr2" draw:name="graphics4" text:anchor-type="char" svg:x="6.301cm" svg:y="-0.5cm" svg:width="2.2cm" svg:height="2.2cm" draw:z-index="3">
<draw:image xlink:href="Pictures/100002010000015A0000015A8CD841D1.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
</draw:frame>Wien, am <xsl:value-of select="datum" />
</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle2.B1" office:value-type="string">
<text:p text:style-name="P7"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle2.A1" office:value-type="string">
<text:p text:style-name="P1"/>
</table:table-cell>
</table:table-row>
<table:table-row>
<table:table-cell table:style-name="Tabelle2.B1" office:value-type="string">
<text:p text:style-name="P7">Ort, Datum</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle2.B1" office:value-type="string">
<text:p text:style-name="P7"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle2.B1" office:value-type="string">
<text:p text:style-name="P8"><xsl:value-of select="studiengangsleiter" /></text:p>
<text:p text:style-name="P7">Lehrgangsleitung</text:p>
</table:table-cell>
</table:table-row>
</table:table>
<text:p text:style-name="P20"/>
</office:text>
</xsl:template>
<xsl:template match="lehreinheit">
<table:table-row>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P2"><xsl:value-of select="lehreinheit_id" /></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P2"><xsl:value-of select="lehrveranstaltung" /></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P2">
<xsl:choose>
<xsl:when test="string-length(fachbereich)>28">
<xsl:value-of select="substring(fachbereich,0,25)" /><xsl:text>...</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="fachbereich" />
</xsl:otherwise>
</xsl:choose>
</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<xsl:apply-templates select="gruppen_getrennt"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P3"><xsl:value-of select="stunden" /></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P2"><xsl:value-of select="satz" /></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.G2" office:value-type="string">
<text:p text:style-name="P3"><xsl:value-of select="brutto" /></text:p>
</table:table-cell>
</table:table-row>
</xsl:template>
<xsl:template match="gruppen_getrennt">
<xsl:apply-templates select="einzelgruppe"/>
</xsl:template>
<xsl:template match="einzelgruppe">
<text:p text:style-name="P5"><xsl:value-of select="." /></text:p>
</xsl:template>
</xsl:stylesheet>