This commit is contained in:
Manfred Kindl
2018-02-23 11:22:09 +01:00
161 changed files with 1452 additions and 777 deletions
+1
View File
@@ -207,6 +207,7 @@ $config['fhc_acl'] = array
'system.tbl_udf' => 'system/udf',
'system.tbl_extensions' => 'system/extensions',
'system.tbl_log' => 'basis/log',
'system.tbl_person_lock' => 'system/personlock',
'testtool.tbl_ablauf' => 'basis/ablauf',
'testtool.tbl_antwort' => 'basis/antwort',
'testtool.tbl_frage' => 'basis/frage',
+2 -1
View File
@@ -55,7 +55,8 @@ $config['roles'] = array
(
'basis/adresse','basis/akte','basis/kontakt','basis/log','basis/nation','basis/notiz','basis/notizzuordnung',
'basis/person','basis/prestudent','basis/prestudentstatus','basis/status','basis/zgv','basis/zgvmaster',
'lehre/studienplan','system/filters','fs/dms','basis/message','basis/benutzerrolle', 'basis/sprache'
'lehre/studienplan','system/filters','fs/dms','basis/message','basis/benutzerrolle', 'basis/sprache',
'system/personlock','basis/benutzerfunktion','system/vorlagestudiengang'
)
)
);
+13 -8
View File
@@ -33,7 +33,7 @@ class ViewMessage extends CI_Controller
// Load model MessageToken_model, not calling the authentication system
$this->load->model('system/MessageToken_model', 'MessageTokenModel');
}
/**
* Using the MessageTokenModel instead of MessageLib to allow
* viewing the message without prompting the login
@@ -50,32 +50,37 @@ class ViewMessage extends CI_Controller
if (is_array($msg->retval) && count($msg->retval) > 0)
{
$setReadMessageStatusByToken = $this->MessageTokenModel->setReadMessageStatusByToken($token);
if (isError($setReadMessageStatusByToken))
{
show_error($msg->$setReadMessageStatusByToken);
}
$sender_id = $msg->retval[0]->sender_id;
$receiver_id = $msg->retval[0]->receiver_id;
$sender = $this->MessageTokenModel->getSenderData($sender_id);
// To decide how to change the redirection
$isEmployee = $this->MessageTokenModel->isEmployee($receiver_id);
if (!is_bool($isEmployee) && isError($isEmployee))
{
show_error($isEmployee);
}
if($this->config->item('redirect_view_message_url') != '')
$href = APP_ROOT . $this->config->item('redirect_view_message_url') . $token;
else
$href = '';
$data = array (
'sender_id' => $sender_id,
'sender' => $sender->retval[0],
'message' => $msg->retval[0],
'isEmployee' => $isEmployee,
'href' => APP_ROOT . $this->config->item('redirect_view_message_url') . $token
'href' => $href
);
$this->load->view('system/messageHTML.php', $data);
}
}
}
}
@@ -1,78 +0,0 @@
<?php
/**
* FH-Complete
*
* @package FHC-API
* @author FHC-Team
* @copyright Copyright (c) 2016, fhcomplete.org
* @license GPLv3
* @link http://fhcomplete.org
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Scrumteam extends APIv1_Controller
{
/**
* Scrumteam API constructor.
*/
public function __construct()
{
parent::__construct();
// Load model ScrumteamModel
$this->load->model('project/scrumteam_model', 'ScrumteamModel');
}
/**
* @return void
*/
public function getScrumteam()
{
$scrumteam_kurzbz = $this->get('scrumteam_kurzbz');
if (isset($scrumteam_kurzbz))
{
$result = $this->ScrumteamModel->load($scrumteam_kurzbz);
$this->response($result, REST_Controller::HTTP_OK);
}
else
{
$this->response();
}
}
/**
* @return void
*/
public function postScrumteam()
{
if ($this->_validate($this->post()))
{
if (isset($this->post()['scrumteam_kurzbz']))
{
$result = $this->ScrumteamModel->update($this->post()['scrumteam_kurzbz'], $this->post());
}
else
{
$result = $this->ScrumteamModel->insert($this->post());
}
$this->response($result, REST_Controller::HTTP_OK);
}
else
{
$this->response();
}
}
private function _validate($scrumteam = NULL)
{
return true;
}
}
+6 -6
View File
@@ -10,19 +10,19 @@ class Messages extends VileSci_Controller
*
*/
public function __construct()
{
parent::__construct();
{
parent::__construct();
// Loads the message library
$this->load->library('MessageLib');
// Loads the message library
$this->load->library('MessageLib');
// Loads the widget library
// Loads the widget library
$this->load->library('WidgetLib');
$this->load->model('person/Person_model', 'PersonModel');
$this->_setAuthUID(); // sets property uid
}
}
/**
* write
@@ -64,6 +64,7 @@ class InfoCenter extends VileSci_Controller
$this->load->model('person/person_model', 'PersonModel');
$this->load->model('system/message_model', 'MessageModel');
$this->load->model('system/filters_model', 'FiltersModel');
$this->load->model('system/personLock_model', 'PersonLockModel');
// Loads libraries
$this->load->library('DmsLib');
@@ -110,10 +111,20 @@ class InfoCenter extends VileSci_Controller
if (!is_numeric($person_id))
show_error('person id is not numeric!');
$persondata = $this->_loadPersonData($person_id);
if (!isset($persondata))
$personexists = $this->PersonModel->load($person_id);
if(isError($personexists))
show_error($personexists->retval);
if (empty($personexists->retval[0]))
show_error('person does not exist!');
//mark person as locked for editing
$result = $this->PersonLockModel->lockPerson($person_id, $this->uid, self::APP);
if(isError($result))
show_error($result->retval);
$persondata = $this->_loadPersonData($person_id);
$prestudentdata = $this->_loadPrestudentData($person_id);
$this->load->view(
@@ -129,6 +140,20 @@ class InfoCenter extends VileSci_Controller
);
}
/**
* unlocks page from edit by a person, redirects to overview filter page
* @param $person_id
*/
public function unlockPerson($person_id)
{
$result = $this->PersonLockModel->unlockPerson($person_id, self::APP);
if(isError($result))
show_error($result->retval);
redirect(self::URL_PREFIX);
}
/**
* Saves if a document has been formal geprueft. saves current timestamp if checked as geprueft, or null if not.
*/
@@ -235,7 +260,7 @@ class InfoCenter extends VileSci_Controller
}
//check if still Interessent and not freigegeben yet
if($lastStatus->retval[0]->status_kurzbz === 'Interessent' && !isset($lastStatus->retval[0]->bestaetigtam))
if ($lastStatus->retval[0]->status_kurzbz === 'Interessent' && !isset($lastStatus->retval[0]->bestaetigtam))
{
$result = $this->PrestudentstatusModel->insert(
array(
@@ -288,7 +313,7 @@ class InfoCenter extends VileSci_Controller
$lastStatus = $lastStatus->retval[0];
//check if still Interessent and not freigegeben yet
if($lastStatus->status_kurzbz === 'Interessent' && !isset($lastStatus->bestaetigtam))
if ($lastStatus->status_kurzbz === 'Interessent' && !isset($lastStatus->bestaetigtam))
{
$result = $this->PrestudentstatusModel->update(
array(
@@ -310,6 +335,8 @@ class InfoCenter extends VileSci_Controller
show_error($result->retval);
}
$this->_sendFreigabeMail($prestudent_id);
$logdata = $this->_getPersonAndStudiengangFromPrestudent($prestudent_id);
$this->_log($logdata['person_id'], 'freigegeben', array($prestudent_id, $logdata['studiengang_kurzbz']));
@@ -517,6 +544,25 @@ class InfoCenter extends VileSci_Controller
*/
private function _loadPersonData($person_id)
{
$locked = $this->PersonLockModel->checkIfLocked($person_id, self::APP);
if (isError($locked))
{
show_error($locked->retval);
}
$lockedby = null;
//mark red if locked by other user
$lockedbyother = false;
if (isset($locked->retval[0]->uid))
{
$lockedby = $locked->retval[0]->uid;
if ($lockedby !== $this->uid)
$lockedbyother = true;
}
$stammdaten = $this->PersonModel->getPersonStammdaten($person_id, true);
if (isError($stammdaten))
@@ -567,6 +613,8 @@ class InfoCenter extends VileSci_Controller
$messagelink = base_url('/index.ci.php/system/Messages/write/'.$user_person->retval[0]->person_id);
$data = array (
'lockedby' => $lockedby,
'lockedbyother' => $lockedbyother,
'stammdaten' => $stammdaten->retval,
'dokumente' => $dokumente->retval,
'dokumente_nachgereicht' => $dokumente_nachgereicht->retval,
@@ -598,6 +646,7 @@ class InfoCenter extends VileSci_Controller
foreach ($prestudenten->retval as $prestudent)
{
$prestudent = $this->PrestudentModel->getPrestudentWithZgv($prestudent->prestudent_id);
$personid = $this->_getPersonAndStudiengangFromPrestudent($person_id);
if (isError($prestudent))
{
@@ -606,7 +655,7 @@ class InfoCenter extends VileSci_Controller
$zgvpruefung = $prestudent->retval[0];
if(isset($zgvpruefung->prestudentstatus))
if (isset($zgvpruefung->prestudentstatus))
{
$position = strpos($zgvpruefung->prestudentstatus->anmerkung, 'Alt:');
@@ -708,4 +757,86 @@ class InfoCenter extends VileSci_Controller
$this->uid
);
}
/**
* Sends infomail with prestudent and person data when Prestudent is freigegeben
* @param $prestudent_id
*/
private function _sendFreigabeMail($prestudent_id)
{
//get data
$prestudent = $this->PrestudentModel->getPrestudentWithZgv($prestudent_id)->retval[0];
$prestudentstatus = $prestudent->prestudentstatus;
$person_id = $prestudent->person_id;
$person = $this->PersonModel->getPersonStammdaten($person_id, true)->retval;
//fill mail variables
$interessentbez = $person->geschlecht == 'm' ? 'Ein Interessent' : 'Eine Interessentin';
$sprache = $prestudentstatus->sprachedetails->bezeichnung[0];
$orgform = $prestudentstatus->orgform != '' ? ' ('.$prestudentstatus->orgform.')' : '';
$geschlecht = $person->geschlecht == 'm' ? 'm&auml;nnlich' : 'weiblich';
$geburtsdatum = date('d.m.Y', strtotime($person->gebdatum));
$notizenBewerbung = $this->NotizModel->getNotizByTitel($person_id, 'Anmerkung zur Bewerbung')->retval;
$notizentext = '';
$lastElement = end($notizenBewerbung);
foreach ($notizenBewerbung as $notiz)
{
$notizentext .= $notiz->text;
if ($notiz != $lastElement)
$notizentext .= ' | ';
}
$mailadresse = '';
foreach ($person->kontakte as $kontakt)
{
if ($kontakt->kontakttyp === 'email')
{
$mailadresse = $kontakt->kontakt;
break;
}
}
$data = array
(
'interessentbez' => $interessentbez,
'studiengangbez' => $prestudent->studiengangbezeichnung,
'studiengangtypbez' => $prestudent->studiengangtyp_bez,
'orgform' => $orgform,
'studiensemester' => $prestudentstatus->studiensemester_kurzbz,
'sprache' => $sprache,
'geschlecht' => $geschlecht,
'vorname' => $person->vorname,
'nachname' => $person->nachname,
'gebdatum' => $geburtsdatum,
'mailadresse' => $mailadresse,
'prestudentid' => $prestudent_id,
'notizentext' => $notizentext
);
$this->load->library('parser');
$this->load->library('MailLib');
$this->load->library('LogLib');
//parse freigabe html email template, wordwrap wraps text so no display errors
$email = wordwrap($this->parser->parse('templates/mailtemplates/interessentFreigabe', $data, true), 70);
$subject = ($person->geschlecht == 'm' ? 'Interessent ' : 'Interessentin ').$person->vorname.' '.$person->nachname.' freigegeben';
$receiver = $prestudent->studiengangmail;
if (!empty($receiver))
{
//Freigabeinformationmail sent from default system mail to studiengang mail(s)
$sent = $this->maillib->send('', $receiver, $subject, $email);
if (!$sent)
$this->loglib->logError('Error when sending Freigabe mail');
}
else
{
$this->loglib->logError('Studiengang has no mail for sending Freigabe mail');
}
}
}
+15
View File
@@ -540,6 +540,21 @@ class DB_Model extends FHC_Model
return $this->db->escape($value);
}
/**
* This method call the method escape_like_str from class CI_DB_driver, therefore:
* this method should be used when strings are to be used in LIKE conditions so that LIKE wildcards (%, _)
* in the string are also properly escaped.
* NOTE: The escape_like_str() method uses ! (exclamation mark) to escape special characters for LIKE conditions.
* Because this method escapes partial strings that you would wrap in quotes yourself, it cannot automatically
* add the ESCAPE '!' condition for you, and so youll have to manually do that.
*
* @return void
*/
public function escapeLike($value)
{
return $this->db->escape_like_str($value);
}
/**
* Convert PG-Boolean to PHP-Boolean
*
+1 -1
View File
@@ -55,7 +55,7 @@ class LogLib
$function = $backtrace_arr[$functionIndex]['function'];
}
if (isset($backtrace_arr[$lineIndex]['line']) && $backgrace_arr[$lineIndex]['line'] != '')
if (isset($backtrace_arr[$lineIndex]['line']) && $backtrace_arr[$lineIndex]['line'] != '')
{
$line = $backtrace_arr[$lineIndex]['line'];
}
+13 -3
View File
@@ -58,6 +58,14 @@ class MailLib
$alias = $this->alias_from_system;
}
}
if (defined('MAIL_FROM') && MAIL_FROM != '')
{
$from = MAIL_FROM;
if (is_null($alias) || $alias == '')
{
$alias = $this->alias_from_system;
}
}
$this->ci->email->from($from, $alias);
@@ -65,12 +73,14 @@ class MailLib
$recipient = $to;
$recipientCC = $cc;
$recipientBCC = $bcc;
if ($this->validateEmailAddress(MAIL_DEBUG))
if (defined('MAIL_DEBUG') && MAIL_DEBUG != '')
{
// if is it valid use it!!!
$recipient = MAIL_DEBUG;
$recipientCC = MAIL_DEBUG;
$recipientBCC = MAIL_DEBUG;
if ($recipientCC != '')
$recipientCC = MAIL_DEBUG;
if ($recipientBCC != '')
$recipientBCC = MAIL_DEBUG;
}
$this->ci->email->to($recipient);
+251 -182
View File
@@ -15,7 +15,7 @@ class MessageLib
public function __construct()
{
// Get code igniter instance
$this->ci =& get_instance();
$this->ci =& get_instance();
// Loads message configuration
$this->ci->config->load('message');
@@ -41,70 +41,70 @@ class MessageLib
$this->ci->load->helper('message');
// Loads phrases
$this->ci->lang->load('message');
}
$this->ci->lang->load('message');
}
/**
* getMessage() - returns the specified received message for a specified person
*/
public function getMessage($msg_id, $person_id)
{
if (empty($msg_id))
return $this->_error('', MSG_ERR_INVALID_MSG_ID);
/**
* getMessage() - returns the specified received message for a specified person
*/
public function getMessage($msg_id, $person_id)
{
if (empty($msg_id))
return $this->_error('', MSG_ERR_INVALID_MSG_ID);
if (empty($person_id))
return $this->_error('', MSG_ERR_INVALID_RECIPIENTS);
return $this->_error('', MSG_ERR_INVALID_RECIPIENTS);
$msg = $this->ci->RecipientModel->getMessage($msg_id, $person_id);
return $msg;
}
return $msg;
}
/**
* getMessagesByUID() - will return all messages, including the latest status for specified user. It don´t returns Attachments.
*/
public function getMessagesByUID($uid, $oe_kurzbz = null, $all = false)
{
if (empty($uid))
return $this->_error('', MSG_ERR_INVALID_MSG_ID);
* getMessagesByUID() - will return all messages, including the latest status for specified user. It don´t returns Attachments.
*/
public function getMessagesByUID($uid, $oe_kurzbz = null, $all = false)
{
if (empty($uid))
return $this->_error('', MSG_ERR_INVALID_MSG_ID);
$msg = $this->ci->RecipientModel->getMessagesByUID($uid, $oe_kurzbz, $all);
return $msg;
}
return $msg;
}
/**
* getMessagesByPerson() - will return all messages, including the latest status for specified user. It don´t returns Attachments.
*/
public function getMessagesByPerson($person_id, $oe_kurzbz = null, $all = false)
{
if (empty($person_id))
return $this->_error('', MSG_ERR_INVALID_MSG_ID);
* getMessagesByPerson() - will return all messages, including the latest status for specified user. It don´t returns Attachments.
*/
public function getMessagesByPerson($person_id, $oe_kurzbz = null, $all = false)
{
if (empty($person_id))
return $this->_error('', MSG_ERR_INVALID_MSG_ID);
$msg = $this->ci->RecipientModel->getMessagesByPerson($person_id, $oe_kurzbz, $all);
return $msg;
}
return $msg;
}
/**
* getSentMessagesByPerson() - Get all sent messages from a person identified by person_id
*/
public function getSentMessagesByPerson($person_id, $oe_kurzbz = null, $all = false)
{
if (empty($person_id))
return $this->_error('', MSG_ERR_INVALID_MSG_ID);
* getSentMessagesByPerson() - Get all sent messages from a person identified by person_id
*/
public function getSentMessagesByPerson($person_id, $oe_kurzbz = null, $all = false)
{
if (empty($person_id))
return $this->_error('', MSG_ERR_INVALID_MSG_ID);
$msg = $this->ci->MessageModel->getMessagesByPerson($person_id, $oe_kurzbz, $all);
return $msg;
}
return $msg;
}
/**
* getMessageByToken
*/
public function getMessageByToken($token)
{
if (empty($token))
return $this->_error('', MSG_ERR_INVALID_TOKEN);
* getMessageByToken
*/
public function getMessageByToken($token)
{
if (empty($token))
return $this->_error('', MSG_ERR_INVALID_TOKEN);
$result = $this->ci->RecipientModel->getMessageByToken($token);
if (hasData($result))
@@ -138,43 +138,43 @@ class MessageLib
}
}
return $result;
}
return $result;
}
/**
* getCountUnreadMessages
*/
public function getCountUnreadMessages($person_id, $oe_kurzbz = null)
{
if (!is_numeric($person_id))
return $this->_error('', MSG_ERR_INVALID_RECIPIENTS);
/**
* getCountUnreadMessages
*/
public function getCountUnreadMessages($person_id, $oe_kurzbz = null)
{
if (!is_numeric($person_id))
return $this->_error('', MSG_ERR_INVALID_RECIPIENTS);
$msg = $this->ci->RecipientModel->getCountUnreadMessages($person_id, $oe_kurzbz);
return $msg;
}
return $msg;
}
/**
* updateMessageStatus() - will change status on message for particular user
/**
* updateMessageStatus() - will change status on message for particular user
* NOTE: it performs an insert, NOT an update
*/
public function updateMessageStatus($message_id, $person_id, $status)
{
if (empty($message_id))
{
return $this->_error('', MSG_ERR_INVALID_MSG_ID);
}
*/
public function updateMessageStatus($message_id, $person_id, $status)
{
if (empty($message_id))
{
return $this->_error('', MSG_ERR_INVALID_MSG_ID);
}
if (empty($person_id))
{
return $this->_error('', MSG_ERR_INVALID_USER_ID);
}
if (empty($person_id))
{
return $this->_error('', MSG_ERR_INVALID_USER_ID);
}
// NOTE: Not use empty otherwise if status is 0 it returns an error
if (!isset($status))
{
return $this->_error('', MSG_ERR_INVALID_STATUS_ID);
}
if (!isset($status))
{
return $this->_error('', MSG_ERR_INVALID_STATUS_ID);
}
// Searches if the status is already present
$result = $this->ci->MsgStatusModel->load(array($message_id, $person_id, $status));
@@ -195,17 +195,17 @@ class MessageLib
}
return $result;
}
}
/**
* sendMessage() - sends new internal message. This function will create a new thread
*/
public function sendMessage($sender_id, $receiver_id, $subject, $body, $priority = PRIORITY_NORMAL, $relationmessage_id = null, $oe_kurzbz = null, $multiPartMime = true)
{
if (!is_numeric($sender_id))
{
/**
* sendMessage() - sends new internal message. This function will create a new thread
*/
public function sendMessage($sender_id, $receiver_id, $subject, $body, $priority = PRIORITY_NORMAL, $relationmessage_id = null, $oe_kurzbz = null, $multiPartMime = true)
{
if (!is_numeric($sender_id))
{
$sender_id = $this->ci->config->item('system_person_id');
}
}
$receivers = $this->_getReceivers($receiver_id, $oe_kurzbz);
@@ -270,17 +270,17 @@ class MessageLib
}
return $result;
}
}
/**
* sendMessageVorlage() - sends new internal message using a template
*/
public function sendMessageVorlage($sender_id, $receiver_id, $vorlage_kurzbz, $oe_kurzbz, $data, $relationmessage_id = null, $orgform_kurzbz = null, $multiPartMime = true)
{
if (!is_numeric($sender_id))
{
* sendMessageVorlage() - sends new internal message using a template
*/
public function sendMessageVorlage($sender_id, $receiver_id, $vorlage_kurzbz, $oe_kurzbz, $data, $relationmessage_id = null, $orgform_kurzbz = null, $multiPartMime = true)
{
if (!is_numeric($sender_id))
{
$sender_id = $this->ci->config->item('system_person_id');
}
}
$receivers = $this->_getReceivers($receiver_id, $oe_kurzbz);
@@ -387,7 +387,7 @@ class MessageLib
}
return $result;
}
}
/**
* Gets all the messages from DB and sends them via email
@@ -426,54 +426,90 @@ 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[0]->token;
// Using a template for the html email body
$body = $this->ci->parser->parse(
'templates/mailHTML',
array(
'href' => $href,
'subject' => $result->retval[0]->subject,
'body' => $result->retval[0]->body
),
true
);
$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');
if(hasData($vorlage))
{
// Using a template for the html email body
$body = $this->ci->parser->parse_string(
$vorlage->retval[0]->text,
array(
'href' => $href,
'subject' => $result->retval[$i]->subject,
'body' => $result->retval[$i]->body
),
true
);
}
else
{
// Using a template for the html email body
$body = $this->ci->parser->parse(
'templates/mailHTML',
array(
'href' => $href,
'subject' => $result->retval[$i]->subject,
'body' => $result->retval[$i]->body
),
true
);
}
if (is_null($body) || $body == '')
{
$this->ci->loglib->logError('Error while parsing the mail template');
}
// Using a template for the plain text email body
$altBody = $this->ci->parser->parse(
'templates/mailTXT',
array(
'href' => $href,
'subject' => $result->retval[0]->subject,
'body' => $result->retval[0]->body
),
true
);
$vorlage = $this->ci->vorlagelib->loadVorlagetext('MessageMailTXT');
if(hasData($vorlage))
{
// Using a template for the plain text email body
$altBody = $this->ci->parser->parse_string(
$vorlage->retval[0]->text,
array(
'href' => $href,
'subject' => $result->retval[$i]->subject,
'body' => $result->retval[$i]->body
),
true
);
}
else
{
// Using a template for the plain text email body
$altBody = $this->ci->parser->parse(
'templates/mailTXT',
array(
'href' => $href,
'subject' => $result->retval[$i]->subject,
'body' => $result->retval[$i]->body
),
true
);
}
if (is_null($altBody) || $altBody == '')
{
$this->ci->loglib->logError('Error while parsing the mail template');
}
// If the sender kontakt does not exist, then system-sender is used if empty
// If the sender is not an employee, then system-sender is used if empty
$sender = '';
if (!is_null($result->retval[0]->sender) && $result->retval[0]->sender != '')
if (!is_null($result->retval[0]->senderemployeecontact) && $result->retval[0]->senderemployeecontact != '')
{
$sender = $result->retval[0]->sender;
$sender = $result->retval[0]->senderemployeecontact.'@'.DOMAIN;
}
$receiverContanct = $result->retval[$i]->receiver;
$receiverContact = $result->retval[$i]->receiver;
if (!is_null($result->retval[$i]->employeecontact) && $result->retval[$i]->employeecontact != '')
{
$receiverContanct = $result->retval[$i]->employeecontact.'@'.DOMAIN;
$receiverContact = $result->retval[$i]->employeecontact.'@'.DOMAIN;
}
// Sending email
$sent = $this->ci->maillib->send(
$sender,
$receiverContanct,
$receiverContact,
$result->retval[$i]->subject,
$body,
null,
@@ -571,15 +607,32 @@ class MessageLib
{
// 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;
$bodyMsg = $this->ci->parser->parse(
'templates/mailHTML',
array(
'href' => $href,
'subject' => $result->retval[0]->subject,
'body' => $result->retval[0]->body
),
true
);
$vorlage = $this->ci->vorlagelib->loadVorlagetext('MessageMailHTML');
if(hasData($vorlage))
{
$bodyMsg = $this->ci->parser->parse_string(
$vorlage->retval[0]->text,
array(
'href' => $href,
'subject' => $result->retval[0]->subject,
'body' => $result->retval[0]->body
),
true
);
}
else
{
$bodyMsg = $this->ci->parser->parse(
'templates/mailHTML',
array(
'href' => $href,
'subject' => $result->retval[0]->subject,
'body' => $result->retval[0]->body
),
true
);
}
if (is_null($bodyMsg) || $bodyMsg == '')
{
// $body = $result->retval[0]->body;
@@ -587,15 +640,31 @@ class MessageLib
}
// Using a template for the plain text email body
$altBody = $this->ci->parser->parse(
'templates/mailTXT',
array(
'href' => $href,
'subject' => $result->retval[0]->subject,
'body' => $result->retval[0]->body
),
true
);
$vorlage = $this->ci->vorlagelib->loadVorlagetext('MessageMailHTML');
if(hasData($vorlage))
{
$altBody = $this->ci->parser->parse_string(
$vorlage->retval[0]->text,
array(
'href' => $href,
'subject' => $result->retval[0]->subject,
'body' => $result->retval[0]->body
),
true
);
}
else
{
$altBody = $this->ci->parser->parse(
'templates/mailTXT',
array(
'href' => $href,
'subject' => $result->retval[0]->subject,
'body' => $result->retval[0]->body
),
true
);
}
if (is_null($altBody) || $altBody == '')
{
$this->ci->loglib->logError('Error while parsing the plain text mail template');
@@ -606,23 +675,23 @@ class MessageLib
$bodyMsg = $altBody = $body;
}
// If the sender kontakt does not exist, then system-sender is used if empty
// If the sender is not an employee, then system-sender is used if empty
$sender = '';
if (!is_null($result->retval[0]->sender) && $result->retval[0]->sender != '')
if (!is_null($result->retval[0]->senderemployeecontact) && $result->retval[0]->senderemployeecontact != '')
{
$sender = $result->retval[0]->sender;
$sender = $result->retval[0]->senderemployeecontact.'@'.DOMAIN;
}
$receiverContanct = $result->retval[0]->receiver;
$receiverContact = $result->retval[0]->receiver;
if (!is_null($result->retval[0]->employeecontact) && $result->retval[0]->employeecontact != '')
{
$receiverContanct = $result->retval[0]->employeecontact.'@'.DOMAIN;
$receiverContact = $result->retval[0]->employeecontact.'@'.DOMAIN;
}
// Sending email
$sent = $this->ci->maillib->send(
$sender,
$receiverContanct,
$receiverContact,
is_null($subject) ? $result->retval[0]->subject : $subject, // if parameter subject is not null, use it!
$bodyMsg,
null,
@@ -689,8 +758,8 @@ class MessageLib
return $sent;
}
// ------------------------------------------------------------------------
// Private methods
// ------------------------------------------------------------------------
// Private methods
/**
* Update the table tbl_msg_recipient
@@ -736,29 +805,29 @@ class MessageLib
}
/**
* Gets the receivers id that are enabled to read messages for that oe_kurzbz
*/
private function _getReceiversByOekurzbz($oe_kurzbz)
{
* Gets the receivers id that are enabled to read messages for that oe_kurzbz
*/
private function _getReceiversByOekurzbz($oe_kurzbz)
{
// Load Benutzerfunktion_model
$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');
// Get all the valid receivers id using the oe_kurzbz
$receivers = $this->ci->BenutzerfunktionModel->loadWhere(
'oe_kurzbz = \''.$oe_kurzbz.'\''.
' AND funktion_kurzbz = \''.$this->ci->config->item('assistent_function').'\''.
'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()))'
);
return $receivers;
}
}
/**
* Gets the receivers id
*/
private function _getReceivers($receiver_id, $oe_kurzbz = null)
{
/**
* Gets the receivers id
*/
private function _getReceivers($receiver_id, $oe_kurzbz = null)
{
$receivers = null;
// If no receiver_id is given...
@@ -782,13 +851,13 @@ class MessageLib
}
return $receivers;
}
}
/**
* Checks if the given receiver id is a valid person
*/
private function _checkReceiverId($receiver_id)
{
/**
* Checks if the given receiver id is a valid person
*/
private function _checkReceiverId($receiver_id)
{
// Load Person_model
$this->ci->load->model('person/Person_model', 'PersonModel');
$result = $this->ci->PersonModel->load($receiver_id);
@@ -798,13 +867,13 @@ class MessageLib
}
return false;
}
}
/**
* Save a message in DB
**/
private function _saveMessage($sender_id, $receiver_id, $subject, $body, $relationmessage_id, $oe_kurzbz)
{
/**
* Save a message in DB
**/
private function _saveMessage($sender_id, $receiver_id, $subject, $body, $relationmessage_id, $oe_kurzbz)
{
// Starts db transaction
$this->ci->db->trans_start(false);
@@ -854,27 +923,27 @@ class MessageLib
}
return $result;
}
}
/**
* Wrapper for function error
*/
private function _error($retval = '', $code = null)
{
/**
* Wrapper for function error
*/
private function _error($retval = '', $code = null)
{
return error($retval, $code, MessageLib::MSG_INDX_PREFIX);
}
}
/**
* Wrapper for function success
*/
private function _success($retval = '', $code = null)
{
/**
* Wrapper for function success
*/
private function _success($retval = '', $code = null)
{
return success($retval, $code, MessageLib::MSG_INDX_PREFIX);
}
}
/**
*
*/
/**
*
*/
public function parseMessageText($text, $data = array())
{
return $this->ci->parser->parse_string($text, $data, true);
+120 -120
View File
@@ -9,9 +9,9 @@ class VorlageLib
/**
* Loads parser library and OrganisationseinheitLib library
*/
public function __construct()
{
require_once APPPATH.'config/message.php';
public function __construct()
{
require_once APPPATH.'config/message.php';
$this->ci =& get_instance();
@@ -21,83 +21,83 @@ class VorlageLib
$this->ci->load->model('system/Vorlage_model', 'VorlageModel');
$this->ci->load->model('system/Vorlagestudiengang_model', 'VorlageStudiengangModel');
$this->ci->load->helper('language');
// Loads helper message to manage returning messages
$this->ci->load->helper('language');
// Loads helper message to manage returning messages
$this->ci->load->helper('message');
//$this->ci->lang->load('fhcomplete');
}
//$this->ci->lang->load('fhcomplete');
}
/**
* getVorlage() - will load a spezific Template
*
* @param int $vorlage_kurzbz REQUIRED
* @return struct
*/
public function getVorlage($vorlage_kurzbz)
{
if (empty($vorlage_kurzbz))
return error(MSG_ERR_INVALID_MSG_ID);
$vorlage = $this->ci->VorlageModel->load($vorlage_kurzbz);
return $vorlage;
}
/**
* getSubMessages() - will return all Messages subordinated from a specified message.
*
* @param int $msg_id REQUIRED
* @return array
*/
public function getVorlageByMimetype($mimetype = null)
{
$vorlage = $this->ci->VorlageModel->loadWhere(array('mimetype' => $mimetype));
return $vorlage;
}
/**
* saveVorlage() - will save a spezific Template.
*
* @param array $data REQUIRED
* @return array
*/
public function saveVorlage($vorlage_kurzbz, $data)
{
if (empty($data))
return error(MSG_ERR_INVALID_MSG_ID);
$vorlage = $this->ci->VorlageModel->update($vorlage_kurzbz, $data);
return $vorlage;
}
/**
* getVorlagetextByVorlage() - will load tbl_vorlagestudiengang for a spezific Template.
*
* @param string $vorlage_kurzbz REQUIRED
* @return array
*/
public function getVorlagetextByVorlage($vorlage_kurzbz)
* getVorlage() - will load a spezific Template
*
* @param int $vorlage_kurzbz REQUIRED
* @return struct
*/
public function getVorlage($vorlage_kurzbz)
{
if (empty($vorlage_kurzbz))
return error($this->ci->lang->line('fhc_'.FHC_INVALIDID, false));
if (empty($vorlage_kurzbz))
return error(MSG_ERR_INVALID_MSG_ID);
$vorlage = $this->ci->VorlageStudiengangModel->loadWhere(array('vorlage_kurzbz' => $vorlage_kurzbz));
return $vorlage;
}
$vorlage = $this->ci->VorlageModel->load($vorlage_kurzbz);
return $vorlage;
}
/**
* loadVorlagetext() - will load the best fitting Template.
*
* @param string $vorlage_kurzbz REQUIRED
* @param string $oe_kurzbz OPTIONAL
* @param string $orgform_kurzbz OPTIONAL
* getSubMessages() - will return all Messages subordinated from a specified message.
*
* @param int $msg_id REQUIRED
* @return array
*/
public function getVorlageByMimetype($mimetype = null)
{
$vorlage = $this->ci->VorlageModel->loadWhere(array('mimetype' => $mimetype));
return $vorlage;
}
/**
* saveVorlage() - will save a spezific Template.
*
* @param array $data REQUIRED
* @return array
*/
public function saveVorlage($vorlage_kurzbz, $data)
{
if (empty($data))
return error(MSG_ERR_INVALID_MSG_ID);
$vorlage = $this->ci->VorlageModel->update($vorlage_kurzbz, $data);
return $vorlage;
}
/**
* getVorlagetextByVorlage() - will load tbl_vorlagestudiengang for a spezific Template.
*
* @param string $vorlage_kurzbz REQUIRED
* @return array
*/
public function getVorlagetextByVorlage($vorlage_kurzbz)
{
if (empty($vorlage_kurzbz))
return error($this->ci->lang->line('fhc_'.FHC_INVALIDID, false));
$vorlage = $this->ci->VorlageStudiengangModel->loadWhere(array('vorlage_kurzbz' => $vorlage_kurzbz));
return $vorlage;
}
/**
* loadVorlagetext() - will load the best fitting Template.
*
* @param string $vorlage_kurzbz REQUIRED
* @param string $oe_kurzbz OPTIONAL
* @param string $orgform_kurzbz OPTIONAL
* @param string $sprache OPTIONAL
* @return array
*/
public function loadVorlagetext($vorlage_kurzbz, $oe_kurzbz = null, $orgform_kurzbz = null, $sprache = null)
* @return array
*/
public function loadVorlagetext($vorlage_kurzbz, $oe_kurzbz = null, $orgform_kurzbz = null, $sprache = null)
{
if (empty($vorlage_kurzbz))
return error($this->ci->lang->line('fhc_'.FHC_INVALIDID, false));
if (empty($vorlage_kurzbz))
return error($this->ci->lang->line('fhc_'.FHC_INVALIDID, false));
// Try to search the template with the given vorlage_kurzbz and other parameters if present
$queryParameters = array("vorlage_kurzbz" => $vorlage_kurzbz, "aktiv" => true);
@@ -120,7 +120,7 @@ class VorlageLib
{
// Builds where clause
$where = $this->_where($vorlage_kurzbz, $orgform_kurzbz, $sprache);
$vorlage = $this->ci->organisationseinheitlib->treeSearch(
'public',
'tbl_vorlagestudiengang',
@@ -133,17 +133,17 @@ class VorlageLib
);
}
return $vorlage;
}
return $vorlage;
}
/**
* _where
*/
private function _where($vorlage_kurzbz, $orgform_kurzbz, $sprache)
{
/**
* _where
*/
private function _where($vorlage_kurzbz, $orgform_kurzbz, $sprache)
{
// Builds where clause
$where = "vorlage_kurzbz = ".$this->ci->VorlageModel->escape($vorlage_kurzbz);
if (is_null($sprache))
{
$where .= " AND sprache IS NULL";
@@ -152,60 +152,60 @@ class VorlageLib
{
$where .= " AND sprache = ".$this->ci->VorlageModel->escape($sprache);
}
$where .= " AND aktiv = true";
return $where;
}
}
/**
* insertVorlagetext() - will load tbl_vorlagestudiengang for a spezific Template.
*
* @param string $vorlage_kurzbz REQUIRED
* @return array
*/
public function insertVorlagetext($data)
* insertVorlagetext() - will load tbl_vorlagestudiengang for a spezific Template.
*
* @param string $vorlage_kurzbz REQUIRED
* @return array
*/
public function insertVorlagetext($data)
{
$vorlagetext = $this->ci->VorlageStudiengangModel->insert($data);
return $vorlagetext;
}
$vorlagetext = $this->ci->VorlageStudiengangModel->insert($data);
return $vorlagetext;
}
/**
* loadVorlagetext() - will load tbl_vorlagestudiengang for a spezific Template.
*
* @param string $vorlage_kurzbz REQUIRED
* @return array
*/
public function getVorlagetextById($vorlagestudiengang_id)
* loadVorlagetext() - will load tbl_vorlagestudiengang for a spezific Template.
*
* @param string $vorlage_kurzbz REQUIRED
* @return array
*/
public function getVorlagetextById($vorlagestudiengang_id)
{
$vorlagetext = $this->ci->VorlageStudiengangModel->load($vorlagestudiengang_id);
return $vorlagetext;
}
$vorlagetext = $this->ci->VorlageStudiengangModel->load($vorlagestudiengang_id);
return $vorlagetext;
}
/**
* saveVorlagetext() - will load tbl_vorlagestudiengang for a spezific Template.
*
* @param string $vorlage_kurzbz REQUIRED
* @return array
*/
public function updateVorlagetext($vorlagestudiengang_id, $data)
* saveVorlagetext() - will load tbl_vorlagestudiengang for a spezific Template.
*
* @param string $vorlage_kurzbz REQUIRED
* @return array
*/
public function updateVorlagetext($vorlagestudiengang_id, $data)
{
$vorlagetext = $this->ci->VorlageStudiengangModel->update($vorlagestudiengang_id, $data);
return $vorlagetext;
}
$vorlagetext = $this->ci->VorlageStudiengangModel->update($vorlagestudiengang_id, $data);
return $vorlagetext;
}
/**
* parseVorlagetext() - will parse a Vorlagetext.
*
* @param string $text REQUIRED
* @param array $data REQUIRED
* @return string
*/
public function parseVorlagetext($text, $data = array())
* parseVorlagetext() - will parse a Vorlagetext.
*
* @param string $text REQUIRED
* @param array $data REQUIRED
* @return string
*/
public function parseVorlagetext($text, $data = array())
{
if (empty($text))
return error($this->ci->lang->line('fhc_'.FHC_INVALIDID, false));
if (empty($text))
return error($this->ci->lang->line('fhc_'.FHC_INVALIDID, false));
$text = $this->ci->parser->parse_string($text, $data, true);
return $text;
}
}
}
+8 -6
View File
@@ -201,10 +201,12 @@ class Prestudent_model extends DB_Model
*/
public function getPrestudentWithZgv($prestudent_id)
{
$this->addSelect('tbl_prestudent.*, tbl_studiengang.kurzbzlang as studiengang, tbl_studiengang.bezeichnung as studiengangbezeichnung, tbl_studiengang.english as studiengangenglish, tbl_studiengang.typ as studiengangtyp,
tbl_zgv.zgv_code, tbl_zgv.zgv_bez, tbl_prestudent.zgvort, tbl_prestudent.zgvdatum, tbl_prestudent.zgvnation as zgvnation_code, zgvnat.kurztext as zgvnation_kurzbez, zgvnat.langtext as zgvnation_bez, zgvnat.engltext as zgvnation_englbez,
tbl_zgvmaster.zgvmas_code, tbl_zgvmaster.zgvmas_bez, tbl_prestudent.zgvmaort, tbl_prestudent.zgvmadatum, tbl_prestudent.zgvmanation as zgvmanation_code, zgvmanat.kurztext as zgvmanation_kurzbez, zgvmanat.langtext as zgvmanation_bez, zgvmanat.engltext as zgvmanation_englbez');
$this->addSelect('tbl_prestudent.*, tbl_studiengang.studiengang_kz, tbl_studiengang.kurzbzlang as studiengang, tbl_studiengang.bezeichnung as studiengangbezeichnung, tbl_studiengang.english as studiengangenglish,
tbl_studiengang.email as studiengangmail, tbl_studiengang.typ as studiengangtyp, tbl_studiengangstyp.bezeichnung as studiengangtyp_bez,
tbl_zgv.zgv_code, tbl_zgv.zgv_bez, tbl_prestudent.zgvnation as zgvnation_code, zgvnat.kurztext as zgvnation_kurzbez, zgvnat.langtext as zgvnation_bez, zgvnat.engltext as zgvnation_englbez,
tbl_zgvmaster.zgvmas_code, tbl_zgvmaster.zgvmas_bez, tbl_prestudent.zgvmanation as zgvmanation_code, zgvmanat.kurztext as zgvmanation_kurzbez, zgvmanat.langtext as zgvmanation_bez, zgvmanat.engltext as zgvmanation_englbez');
$this->addJoin('public.tbl_studiengang', 'studiengang_kz', 'LEFT');
$this->addJoin('public.tbl_studiengangstyp', 'typ', 'LEFT');
$this->addJoin('bis.tbl_zgv', 'zgv_code', 'LEFT');
$this->addJoin('bis.tbl_zgvmaster', 'zgvmas_code', 'LEFT');
$this->addJoin('bis.tbl_nation zgvnat', 'zgvnation = zgvnat.nation_code', 'LEFT');
@@ -223,13 +225,13 @@ class Prestudent_model extends DB_Model
return error($lastStatus->retval);
}
if(count($lastStatus->retval) > 0)
if (count($lastStatus->retval) > 0)
{
$this->load->model('system/sprache_model', 'SpracheModel');
$language = $this->SpracheModel->load($lastStatus->retval[0]->sprache);
if($language->error)
if ($language->error)
return error($language->retval);
if(count($language->retval) > 0)
if (count($language->retval) > 0)
$lastStatus->retval[0]->sprachedetails = $language->retval[0];
$prestudent->retval[0]->prestudentstatus = $lastStatus->retval[0];
}
+13
View File
@@ -144,6 +144,19 @@ class Notiz_model extends DB_Model
return $this->loadWhere(array('person_id' => $person_id));
}
/**
* gets all Notizen for a person with a specific title
* @param $person_id
* @param $titel
*/
public function getNotizByTitel($person_id, $titel)
{
// Join with the table public.tbl_notizzuordnung using notiz_id
$this->addJoin('public.tbl_notizzuordnung', 'notiz_id');
return $this->loadWhere(array('person_id' => $person_id, 'titel' => $titel));
}
// ------------------------------------------------------------------------------------------------------
}
@@ -209,5 +209,4 @@ class Person_model extends DB_Model
return $this->loadWhere(array('uid' => $uid));
}
}
@@ -1,14 +0,0 @@
<?php
class Scrumteam_model extends DB_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'fue.tbl_scrumteam';
$this->pk = 'scrumteam_kurzbz';
}
}
@@ -0,0 +1,88 @@
<?php
/**
* Enables content locking.
* An entry in the locktable means certain content is marked locked and a user is its editor.
*/
class PersonLock_model extends DB_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'system.tbl_person_lock';
$this->pk = 'lock_id';
}
/**
* Checks if a specific person is locked. By default, looks for entries with no app in locktable for the person.
* Alternatively, looks only for locks in a certain app.
* @param $person_id
* @param null $app
* @return array all locks for a person if locked, null otherwise
*/
public function checkIfLocked($person_id, $app = null)
{
$lockdata = array('person_id' => $person_id, 'app' => $app);
$result = $this->loadWhere($lockdata);
if ($result->error)
return error($result->retval);
if (count($result->retval) > 0)
return success($result->retval);
else
return success(null);
}
/**
* Locks a person. Returns null if person was not locked (e.g. when already locked).
* @param $person_id
* @param $uid user who locks the person
* @param $app optional, application in which person is locked
* @return array inserted lock id if person was locked, null otherwise
*/
public function lockPerson($person_id, $uid, $app = null)
{
$locked = $this->checkIfLocked($person_id, $app);
if ($locked->error)
return error($locked->retval);
//insert only if not already locked
if ($locked->retval === null)
return $this->insert(array('person_id' => $person_id, 'uid' => $uid, 'app' => $app));
else
return success(null);
}
/**
* Remove a lock for a person. By default, removes any entries in locktable for the person.
* Alternatively, removes only locks in a certain app.
* @param $person_id
* @param null $app
* @return array deleted lock ids if person was locked, null otherwise
*/
public function unlockPerson($person_id, $app = null)
{
$deleted = array();
$locks = $this->checkIfLocked($person_id, $app);
if ($locks->retval === null)
return success(null);
foreach ($locks->retval as $lock)
{
$result = $this->delete($lock->lock_id);
if ($result->error)
return error($result->retval);
$deleted[] = $lock;
}
return success($deleted);
}
}
@@ -261,6 +261,7 @@ class Recipient_model extends DB_Model
ks.kontakt as sender,
kr.kontakt as receiver,
mu.mitarbeiter_uid as employeeContact,
ms.mitarbeiter_uid as senderemployeeContact,
mr.person_id as receiver_id,
mr.token,
mm.subject,
@@ -278,7 +279,13 @@ class Recipient_model extends DB_Model
m.mitarbeiter_uid
FROM public.tbl_benutzer b INNER JOIN public.tbl_mitarbeiter m ON(b.uid = m.mitarbeiter_uid)
WHERE b.aktiv = TRUE
) mu ON (mu.person_id = mr.person_id)';
) mu ON (mu.person_id = mr.person_id)
LEFT JOIN (
SELECT b.person_id,
m.mitarbeiter_uid
FROM public.tbl_benutzer b INNER JOIN public.tbl_mitarbeiter m ON(b.uid = m.mitarbeiter_uid)
WHERE b.aktiv = TRUE
) ms ON (ms.person_id = mm.person_id)';
$parametersArray = array($kontaktType, $kontaktType);
@@ -4,12 +4,13 @@
array(
'title' => 'Info Center',
'jquery' => true,
'jqueryui' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'tablesorter' => true,
'customCSSs' => 'skin/tablesort_bootstrap.css',
'customJSs' => array('include/js/infocenterPersonDataset.js', 'include/js/bootstrapper.js')
'customJSs' => array('include/js/bootstrapper.js', 'include/js/infocenter/infocenterPersonDataset.js')
)
);
?>
@@ -40,9 +41,6 @@
</div>
</div>
</div>
<script>
$("#tableDataset").addClass('table table-bordered table-responsive');
</script>
</body>
<?php $this->load->view('templates/FHC-Footer'); ?>
@@ -1,4 +1,7 @@
<?php
$APP = 'infocenter';
$filterWidgetArray = array(
'query' => '
SELECT
@@ -60,8 +63,10 @@
AND ps.person_id = p.person_id
AND tbl_studiengang.typ in(\'b\')
LIMIT 1
) AS "AnzahlAbgeschickt"
) AS "AnzahlAbgeschickt",
pl.zeitpunkt AS "LockDate"
FROM public.tbl_person p
LEFT JOIN (SELECT person_id, zeitpunkt FROM system.tbl_person_lock WHERE app = \''.$APP.'\') pl USING(person_id)
WHERE
EXISTS(
SELECT 1
@@ -135,7 +140,22 @@
}
}
if ($fieldName == 'LockDate')
{
if ($datasetRaw->{$fieldName} == '01.01.1970 01:00:00')
{
$datasetRaw->{$fieldName} = 'Not locked';
}
}
return $datasetRaw;
},
'markRow' => function($datasetRaw) {
if ($datasetRaw->LockDate != '')
{
return FilterWidget::DEFAULT_MARK_ROW_CLASS;
}
}
);
@@ -147,7 +167,7 @@
}
else
{
$filterWidgetArray['app'] = 'infocenter';
$filterWidgetArray['app'] = $APP;
$filterWidgetArray['datasetName'] = 'PersonActions';
$filterWidgetArray['filterKurzbz'] = 'InfoCenterNotSentApplicationAll';
}
@@ -1,19 +1,27 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'InfocenterDetails',
'jquery' => true,
'bootstrap' => true,
'fontawesome' => true,
'jqueryui' => true,
'tablesorter' => true,
'tinymce' => true,
'sbadmintemplate' => true,
'customCSSs' => array('skin/admintemplate.css', 'skin/tablesort_bootstrap.css'),
'customJSs' => 'include/js/bootstrapper.js'
)
);
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'InfocenterDetails',
'jquery' => true,
'bootstrap' => true,
'fontawesome' => true,
'jqueryui' => true,
'tablesorter' => true,
'tinymce' => true,
'sbadmintemplate' => true,
'customCSSs' =>
array(
'skin/admintemplate.css',
'skin/tablesort_bootstrap.css'
),
'customJSs' =>
array(
'include/js/bootstrapper.js',
'include/js/tablesort/tablesort.js',
'include/js/infocenter/infocenterDetails.js')
)
);
?>
<body>
<div id="wrapper">
@@ -28,13 +36,26 @@ $this->load->view(
?>
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">Infocenter
Details: <?php echo $stammdaten->vorname.' '.$stammdaten->nachname ?>
</h3>
<div class="row<?php if($lockedbyother) echo ' alert-danger' ?>">
<div class="col-lg-8">
<h3 class="page-header">
Infocenter Details: <?php echo $stammdaten->vorname.' '.$stammdaten->nachname ?>
</h3>
</div>
<div class="col-lg-4">
<div class="headerright text-right">
wird bearbeitet von:
<?php
if(isset($lockedby)):
echo $lockedby;
?>
&nbsp;&nbsp;
<a href="../unlockPerson/<?php echo $stammdaten->person_id; ?>"><i class="fa fa-sign-out"></i>&nbsp;Freigeben</a>
<?php endif; ?>
</div>
</div>
</div>
<br />
<section>
<div class="row">
<div class="col-lg-12">
@@ -124,27 +145,9 @@ $this->load->view(
</div> <!-- ./wrapper -->
<script>
$(document).ready(
function ()
{
//initialise table sorter
addTablesorter("doctable", [[2, 1], [1, 0]], ["zebra"]);
addTablesorter("nachgdoctable", [[2, 0], [1, 1]], ["zebra"]);
addTablesorter("msgtable", [[0, 1], [2, 0]], ["zebra", "filter"]);
addTablesorter("logtable", [[0, 1]], ["filter"]);
addTablesorter("notiztable", [[0, 1]], ["filter"]);
//add pager
togglePager(23, "logtable", "logpager");
togglePager(10, "notiztable", "notizpager");
//initialise datepicker
$.datepicker.setDefaults($.datepicker.regional['de']);
$(".dateinput").datepicker({
"dateFormat": "dd.mm.yy"
});
//add click events to "formal geprüft" checkboxes
<?php foreach($dokumente as $dokument): ?>
@@ -157,75 +160,8 @@ $this->load->view(
}
<?php endforeach ?>
//prevent opening modal when Statusgrund not chosen
$("#absageModal").on('show.bs.modal', function (e)
{
if ($("[name=statusgrund]").val() === "null")
{
$("#statusgrselect").addClass("has-error");
return e.preventDefault();
}
}
);
$("[name=statusgrund]").change(function ()
{
$("#statusgrselect").removeClass("has-error");
}
);
}
);
function addTablesorter(tableid, sortList, widgets)
{
$("#" + tableid).tablesorter(
{
theme: "default",
dateFormat: "ddmmyyyy",
sortList: sortList,
widgets: widgets
}
);
//hide filters if less than 2 datarows (+ 2 for headings and filter row itself)
if ($("#" + tableid + " tr").length < 4)
{
$("#" + tableid + " tr.tablesorter-filter-row").hide();
}
}
function togglePager(size, tableid, pagerid)
{
var html =
'<div id="' + pagerid + '" class="pager"> ' +
'<form class="form-inline">' +
'<i class="fa fa-step-backward first"></i>&nbsp;' +
'<i class="fa fa-backward prev"></i>' +
'<span class="pagedisplay"></span>' +
'<i class="fa fa-forward next"></i>&nbsp;' +
'<i class="fa fa-step-forward last"></i>' +
'</form>' +
'</div>';
var rowcount = $("#" + tableid + " tr").length;
//not show pager if on first table page
if (rowcount > size)
{
var table = $("#" + tableid);
table.after(html);
table.tablesorterPager(
{
container: $("#" + pagerid),
size: size,
cssDisabled: 'disabled',
savePages: false,
output: '{startRow} {endRow} / {totalRows} Zeilen'
}
);
}
}
</script>
</body>
@@ -80,7 +80,9 @@
<?php echo isset($adresse) ? $adresse->strasse.', '.$adresse->plz.' '.$adresse->ort : '' ?>
</td>
<td>
<?php echo ($adresse->heimatadresse === true ? 'Heimatadresse' : '').($adresse->heimatadresse === true && $adresse->rechnungsadresse === true ? ', ' : '').($adresse->rechnungsadresse === true ? 'Rechnungsadresse' : ''); ?>
<?php echo ($adresse->heimatadresse === true ? 'Heimatadresse' : '').
($adresse->heimatadresse === true && $adresse->rechnungsadresse === true ? ', ' : '').
($adresse->rechnungsadresse === true ? 'Rechnungsadresse' : ''); ?>
</td>
</tr>
<?php endforeach; ?>
@@ -103,13 +105,4 @@
</div>
<?php endif; ?>
</div>
</div>
<script>
//add submit event to message send link
$("#sendmsglink").click(
function ()
{
$("#sendmsgform").submit();
}
);
</script>
</div>
@@ -35,7 +35,7 @@
<?php
if (isset($zgvpruefung->prestudentstatus->status_kurzbz))
{
echo $zgvpruefung->prestudentstatus->status_kurzbz.(isset($zgvpruefung->prestudentstatus->bezeichnung_statusgrund[0]) && $zgvpruefung->prestudentstatus->status_kurzbz === 'Abgewiesener' ? ' ('.$zgvpruefung->prestudentstatus->bezeichnung_statusgrund[0].')' : '');
echo $zgvpruefung->prestudentstatus->status_kurzbz.(isset($zgvpruefung->prestudentstatus->bezeichnung_statusgrund[0]) ? ' ('.$zgvpruefung->prestudentstatus->bezeichnung_statusgrund[0].')' : '');
}
?>
</div>
@@ -57,12 +57,12 @@
<div class="form-group">
<label>Orgform: </label>
<span style="display: inline-block">
<?php
$separator = (isset($zgvpruefung->prestudentstatus->orgform)) ? ', ' : '';
echo (isset($zgvpruefung->prestudentstatus->orgform) ? $zgvpruefung->prestudentstatus->orgform : '')
.(isset($zgvpruefung->prestudentstatus->sprachedetails->bezeichnung) ? $separator.$zgvpruefung->prestudentstatus->sprachedetails->bezeichnung[0] : '')
.(isset($zgvpruefung->prestudentstatus->alternative) ? ' ('.$zgvpruefung->prestudentstatus->alternative.')' : '') ?>
</span>
<?php
$separator = (isset($zgvpruefung->prestudentstatus->orgform)) ? ', ' : '';
echo (isset($zgvpruefung->prestudentstatus->orgform) ? $zgvpruefung->prestudentstatus->orgform : '')
.(isset($zgvpruefung->prestudentstatus->sprachedetails->bezeichnung) ? $separator.$zgvpruefung->prestudentstatus->sprachedetails->bezeichnung[0] : '')
.(isset($zgvpruefung->prestudentstatus->alternative) ? ' ('.$zgvpruefung->prestudentstatus->alternative.')' : '') ?>
</span>
</div>
</div>
</div>
+4 -3
View File
@@ -27,7 +27,8 @@
</td>
</tr>
<tr>
<td>
<td valign="top">
<br>
<b>Message:</b>
</td>
<td>
@@ -38,7 +39,7 @@
</td>
</tr>
<?php
if ($isEmployee === false)
if ($isEmployee === false && $href != '')
{
?>
<tr>
@@ -48,7 +49,7 @@
</tr>
<?php
}
?>
?>
</table>
</center>
+1 -1
View File
@@ -6,7 +6,7 @@ $widthColumn = $msgExists === true ? 8 : 12;
<table id="msgtable" class="table table-bordered table-condensed tablesort-hover tablesort-active">
<thead>
<tr>
<th>Gelesen am</th>
<th>Gesendet am</th>
<th>Sender</th>
<th>Empf&auml;nger</th>
<th>Betreff</th>
@@ -0,0 +1,54 @@
<html>
<head>
<title>Interessentenfreigabe mail</title>
</head>
<body>
<div class="container">
{interessentbez} wurde freigegeben.
<br><br>
<table style="font-size:small">
<tbody>
<tr>
<td><b>Studiengang</b></td>
<td>{studiengangbez}&nbsp;{studiengangtypbez} {orgform} {sprache}</td>
</tr>
<tr>
<td><b>Studiensemester</b></td>
<td>{studiensemester}</td>
</tr>
<tr>
<td><b>Geschlecht</b></td>
<td>{geschlecht}</td>
</tr>
<tr>
<td><b>Vorname</b></td>
<td>{vorname}</td>
</tr>
<tr>
<td><b>Nachname</b></td>
<td>{nachname}</td>
</tr>
<tr>
<td><b>Geburtsdatum</b></td>
<td>{gebdatum}</td>
</tr>
<tr>
<td><b>E-Mail Adresse</b></td>
<td>{mailadresse}</td>
</tr>
<tr>
<td><b>Prestudent ID</b></td>
<td>{prestudentid}</td>
</tr>
<tr>
<td valign="top"><b>Anmerkungen zur Bewerbung</b></td>
<td>{notizentext}</td>
</tr>
</tbody>
</table>
<br>
Für mehr Details verwenden Sie die Personenansicht im FAS.
</div>
</body>
</html>
+155 -12
View File
@@ -1,5 +1,13 @@
<style>
.filter-name-title {
font-family: inherit;
font-size: 20px;
font-weight: bold;
line-height: 1.1;
color: black;
}
.filters-hidden-panel {
margin: 0 10px 10px 10px;
}
@@ -8,10 +16,105 @@
display: none !important;
}
.filter-select-fields-dnd-div {
height: 50px;
}
.filter-select-field-dnd-span {
border: 1px solid black;
border-radius: 7px;
margin-left: 3px;
margin-right: 3px;
padding: 10px;
}
.filter-select-field-dnd-span:hover {
cursor: move;
}
.filter-select-field-dnd-span a {
cursor: pointer;
}
.selection-before::before {
content: "";
position: absolute;
top: 0;
right: 100%;
height: 100%;
margin-right: 3px;
border-left: 2px solid #428bca;
}
.selection-after::after {
content: "";
position: absolute;
top: 0;
left: 100%;
height: 100%;
margin-left: 3px;
border-right: 2px solid #428bca;
}
</style>
<script language="Javascript" type="text/javascript">
$(document).ready(function() {
$(".filter-select-field-dnd-span").draggable({
containment: "parent",
cursor: "move",
opacity: 0.4,
revert: "invalid",
revertDuration: 200
});
$(".filter-select-field-dnd-span").droppable({
accept: ".filter-select-field-dnd-span",
over: function(event, ui) {
$(this).on("mousemove", function( event ) {
var padding = 20;
var elementCenter = $(this).offset().left + (padding + $(this).width() / 2);
console.log(elementCenter);
console.log(event.pageX);
if (event.pageX > elementCenter)
{
$(this).addClass("selection-after");
$(this).removeClass("selection-before");
}
else if (event.pageX < elementCenter)
{
$(this).addClass("selection-before");
$(this).removeClass("selection-after");
}
});
},
out: function(event, ui) {
$(this).off("mousemove");
$(this).removeClass("selection-before");
$(this).removeClass("selection-after");
},
drop: function(event, ui) {
var padding = 20;
var elementCenter = $(this).offset().left + (padding + $(this).width() / 2);
if (event.pageX > elementCenter)
{
$(this).insertBefore(ui.draggable);
}
else if (event.pageX < elementCenter)
{
$(this).insertAfter(ui.draggable);
}
$(this).off("mousemove");
$(this).removeClass("selection-before");
$(this).removeClass("selection-after");
}
});
$("#addField").change(function() {
$("#filterForm").submit();
});
@@ -54,34 +157,74 @@
$("#filterForm").submit();
});
$("[data-toggle='collapse']").click(function() {
var filterOptionsStatus = sessionStorage.getItem('filter-options-status');
if (filterOptionsStatus != null && filterOptionsStatus == 'closed')
{
sessionStorage.setItem('filter-options-status', 'open');
}
else
{
sessionStorage.setItem('filter-options-status', 'closed');
}
});
var filterOptionsStatus = sessionStorage.getItem('filter-options-status');
if (filterOptionsStatus != null && filterOptionsStatus == 'open')
{
$('.collapse').collapse("show");
}
});
</script>
<div class="row">
<div class="col-lg-12">
<form class="form-inline" id="filterForm" method="POST" action="<?php echo current_url(); ?>">
<div>
<?php FilterWidget::loadViewSelectFields($listFields); ?>
</div>
<div>
<?php FilterWidget::loadViewSelectFilters($metaData); ?>
</div>
<?php FilterWidget::displayFilterName(); ?>
<div>
<?php FilterWidget::loadViewSaveFilter(); ?>
<div class="panel-group">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapseFilterHeader">Filter options</a>
</h4>
</div>
<div id="collapseFilterHeader" class="panel-collapse collapse">
<div class="filters-hidden-panel">
<div>
<?php FilterWidget::loadViewSelectFields($listFields); ?>
</div>
<br>
<div>
<?php FilterWidget::loadViewSelectFilters($metaData); ?>
</div>
<br>
<div>
<?php FilterWidget::loadViewSaveFilter(); ?>
</div>
</div>
</div>
</div>
</div>
<br>
<div id="datasetActionsTop">
</div>
<div id="datasetActionsTop"></div>
<div>
<?php FilterWidget::loadViewTableDataset($dataset); ?>
</div>
<div id="datasetActionsBottom">
</div>
<div id="datasetActionsBottom"></div>
</form>
</div>
</div>
@@ -1,63 +1,54 @@
<div class="panel-group">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapseSelectFields">Select columns</a>
</h4>
</div>
<div id="collapseSelectFields" class="panel-collapse collapse">
<div class="filters-hidden-panel">
<div>
<?php
$selectedFields = FilterWidget::getSelectedFields();
$columnsAliases = FilterWidget::getColumnsAliases();
<div id="filterSelectFieldsDnd" class="filter-select-fields-dnd-div">
<?php
$selectedFields = FilterWidget::getSelectedFields();
$columnsAliases = FilterWidget::getColumnsAliases();
for ($selectedFieldsCounter = 0; $selectedFieldsCounter < count($selectedFields); $selectedFieldsCounter++)
{
$selectedField = $selectedFields[$selectedFieldsCounter];
$selectedFieldAlias = $selectedField;
for ($selectedFieldsCounter = 0; $selectedFieldsCounter < count($selectedFields); $selectedFieldsCounter++)
{
$selectedField = $selectedFields[$selectedFieldsCounter];
$selectedFieldAlias = $selectedField;
if ($columnsAliases != null)
{
$indx = array_search($selectedField, $listFields);
if ($indx !== false)
{
$selectedFieldAlias = $columnsAliases[$indx];
}
}
?>
<input type="button" value="<?php echo $selectedFieldAlias; ?> X" class="remove-field" fieldToRemove="<?php echo $selectedField; ?>">
<?php
}
?>
<input type="hidden" id="<?php echo FilterWidget::CMD_REMOVE_FIELD; ?>" name="<?php echo FilterWidget::CMD_REMOVE_FIELD; ?>" value="">
</div>
<div>
<span>
Add field:
</span>
<span>
<select id="<?php echo FilterWidget::CMD_ADD_FIELD; ?>" name="<?php echo FilterWidget::CMD_ADD_FIELD; ?>">
<option value="">Select a field to add..</option>
<?php
for ($listFieldsCounter = 0; $listFieldsCounter < count($listFields); $listFieldsCounter++)
{
$listField = $listFields[$listFieldsCounter];
$listFieldAlias = $listField;
if ($columnsAliases != null)
{
$listFieldAlias = $columnsAliases[$listFieldsCounter];
}
?>
<option value="<?php echo $listField; ?>"><?php echo $listFieldAlias; ?></option>
<?php
}
?>
</select>
</span>
</div>
</div>
</div>
</div>
if ($columnsAliases != null)
{
$indx = array_search($selectedField, $listFields);
if ($indx !== false)
{
$selectedFieldAlias = $columnsAliases[$indx];
}
}
?>
<span class="filter-select-field-dnd-span">
<?php echo $selectedFieldAlias; ?>
<a class="remove-field" fieldToRemove="<?php echo $selectedField; ?>">X</a>
<input type="hidden" name="<?php echo $selectedField; ?>" value="<?php echo $selectedField; ?>">
</span>
<?php
}
?>
</div>
<input type="hidden" id="<?php echo FilterWidget::CMD_REMOVE_FIELD; ?>" name="<?php echo FilterWidget::CMD_REMOVE_FIELD; ?>" value="">
<div>
<span>
Add field:
</span>
<span>
<select id="<?php echo FilterWidget::CMD_ADD_FIELD; ?>" name="<?php echo FilterWidget::CMD_ADD_FIELD; ?>">
<option value="">Select a field to add..</option>
<?php
for ($listFieldsCounter = 0; $listFieldsCounter < count($listFields); $listFieldsCounter++)
{
$listField = $listFields[$listFieldsCounter];
$listFieldAlias = $listField;
if ($columnsAliases != null)
{
$listFieldAlias = $columnsAliases[$listFieldsCounter];
}
?>
<option value="<?php echo $listField; ?>"><?php echo $listFieldAlias; ?></option>
<?php
}
?>
</select>
</span>
</div>
@@ -1,82 +1,69 @@
<div class="panel-group">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapseSelectFilters">Select filters</a>
</h4>
</div>
<div id="collapseSelectFilters" class="panel-collapse collapse">
<div class="filters-hidden-panel">
<div>
<?php
$selectedFilters = FilterWidget::getSelectedFilters();
$columnsAliases = FilterWidget::getColumnsAliases();
<div>
<?php
$selectedFilters = FilterWidget::getSelectedFilters();
$columnsAliases = FilterWidget::getColumnsAliases();
for ($filtersCounter = 0; $filtersCounter < count($selectedFilters); $filtersCounter++)
{
$selectedFilter = $selectedFilters[$filtersCounter];
for ($filtersCounter = 0; $filtersCounter < count($selectedFilters); $filtersCounter++)
{
$selectedFilter = $selectedFilters[$filtersCounter];
$md = FilterWidget::getFilterMetaData($selectedFilter, $metaData);
$selectedFieldAlias = $md->name;
$md = FilterWidget::getFilterMetaData($selectedFilter, $metaData);
$selectedFieldAlias = $md->name;
if ($columnsAliases != null)
{
$indx = array_search($selectedFilter, $listFields);
if ($indx !== false)
{
$selectedFieldAlias = $columnsAliases[$indx];
}
}
if ($columnsAliases != null)
{
$indx = array_search($selectedFilter, $listFields);
if ($indx !== false)
{
$selectedFieldAlias = $columnsAliases[$indx];
}
}
?>
<div>
?>
<div>
<span>
<?php echo $selectedFieldAlias; ?>
</span>
<span>
<?php echo $selectedFieldAlias; ?>
</span>
<?php echo FilterWidget::renderFilterType($md); ?>
<?php echo FilterWidget::renderFilterType($md); ?>
<span>
<input type="button" value="X" class="remove-filter" filterToRemove="<?php echo $md->name; ?>">
</span>
<span>
<input type="button" value="X" class="remove-filter" filterToRemove="<?php echo $md->name; ?>">
</span>
</div>
<?php
}
?>
<input type="hidden" id="<?php echo FilterWidget::CMD_REMOVE_FILTER; ?>" name="<?php echo FilterWidget::CMD_REMOVE_FILTER; ?>" value="">
</div>
<div>
<span>
Add filter:
</span>
<span>
<select id="<?php echo FilterWidget::CMD_ADD_FILTER; ?>" name="<?php echo FilterWidget::CMD_ADD_FILTER; ?>">
<option value="">Select a filter to add...</option>
<?php
for ($listFieldsCounter = 0; $listFieldsCounter < count($listFields); $listFieldsCounter++)
{
$field = $listFields[$listFieldsCounter];
$listFieldAlias = $field;
if ($columnsAliases != null)
{
$listFieldAlias = $columnsAliases[$listFieldsCounter];
}
?>
<option value="<?php echo $field; ?>"><?php echo $listFieldAlias; ?></option>
<?php
}
?>
</select>
</span>
<span>
<input id="applyFilter" name="applyFilter" type="button" value="Apply">
</span>
</div>
</div>
</div>
<?php
}
?>
<input type="hidden" id="<?php echo FilterWidget::CMD_REMOVE_FILTER; ?>" name="<?php echo FilterWidget::CMD_REMOVE_FILTER; ?>" value="">
</div>
<div>
<span>
Add filter:
</span>
<span>
<select id="<?php echo FilterWidget::CMD_ADD_FILTER; ?>" name="<?php echo FilterWidget::CMD_ADD_FILTER; ?>">
<option value="">Select a filter to add...</option>
<?php
for ($listFieldsCounter = 0; $listFieldsCounter < count($listFields); $listFieldsCounter++)
{
$field = $listFields[$listFieldsCounter];
$listFieldAlias = $field;
if ($columnsAliases != null)
{
$listFieldAlias = $columnsAliases[$listFieldsCounter];
}
?>
<option value="<?php echo $field; ?>"><?php echo $listFieldAlias; ?></option>
<?php
}
?>
</select>
</span>
<span>
<input id="applyFilter" name="applyFilter" type="button" value="Apply">
</span>
</div>
</div>
@@ -55,7 +55,7 @@
{
$result = $results[$resultsCounter];
?>
<tr>
<tr class="<?php echo FilterWidget::markRow($result); ?>">
<?php
if ($checkboxes != null)
{
+77 -2
View File
@@ -13,6 +13,7 @@ class FilterWidget extends Widget
const DB_RESULT = 'dbResult';
const ADDITIONAL_COLUMNS = 'additionalColumns';
const FORMAT_RAW = 'formatRaw';
const MARK_ROW = 'markRow';
const CHECKBOXES = 'checkboxes';
const HIDE_HEADER = 'hideHeader';
const HIDE_SAVE = 'hideSave';
@@ -35,6 +36,7 @@ class FilterWidget extends Widget
const ACTIVE_FILTERS = 'activeFilters';
const ACTIVE_FILTERS_OPTION = 'activeFiltersOption';
const ACTIVE_FILTERS_OPERATION = 'activeFiltersOperation';
const FILTER_NAME = 'filterName';
const ACTIVE_FILTER_OPTION_POSTFIX = '-option';
const ACTIVE_FILTER_OPERATION_POSTFIX = '-operation';
@@ -60,6 +62,8 @@ class FilterWidget extends Widget
const DEFAULT_DATE_FORMAT = 'd.m.Y H:i:s';
const DEFAULT_MARK_ROW_CLASS = 'text-danger';
private $app;
private $query;
private $datasetName;
@@ -67,8 +71,10 @@ class FilterWidget extends Widget
private $filterId;
private $additionalColumns;
private $formatRaw;
private $markRow;
private $checkboxes;
private $columnsAliases;
private $filterName;
private $dataset;
private $metaData;
@@ -108,6 +114,12 @@ class FilterWidget extends Widget
$this->filterId = $filterSessionArray[self::FILTER_ID];
}
//
if ($this->filterName == null && isset($filterSessionArray[self::FILTER_NAME]))
{
$this->filterName = $filterSessionArray[self::FILTER_NAME];
}
//
if ($filterSessionArray[self::FILTER_ID] != $this->filterId)
{
@@ -385,6 +397,25 @@ class FilterWidget extends Widget
return $tmpDatasetRaw;
}
/**
*
*/
public static function markRow($datasetRaw)
{
$class = '';
if (is_object($datasetRaw))
{
$markRow = self::$FilterWidgetInstance->getMarkRow();
if ($markRow != null)
{
$class = $markRow($datasetRaw);
}
}
return $class;
}
/**
*
*/
@@ -393,6 +424,17 @@ class FilterWidget extends Widget
return self::$FilterWidgetInstance->_getCheckboxes();
}
/**
*
*/
public static function displayFilterName()
{
if (self::$FilterWidgetInstance->filterName != null && self::$FilterWidgetInstance->filterName != '')
{
echo '<div class="filter-name-title">'.self::$FilterWidgetInstance->filterName.'</div><br>';
}
}
//------------------------------------------------------------------------------------------------------------------
// Protected
@@ -419,6 +461,14 @@ class FilterWidget extends Widget
return $this->formatRaw;
}
/**
*
*/
protected function getMarkRow()
{
return $this->markRow;
}
/**
*
*/
@@ -559,6 +609,11 @@ class FilterWidget extends Widget
$filterSessionArray[self::COLUMNS_ALIASES] = array();
}
if (!isset($filterSessionArray[self::FILTER_NAME]))
{
$filterSessionArray[self::FILTER_NAME] = null;
}
$this->session->set_userdata(self::SESSION_NAME, $filterSessionArray);
}
@@ -574,10 +629,12 @@ class FilterWidget extends Widget
$this->filterId = null;
$this->additionalColumns = null;
$this->formatRaw = null;
$this->markRow = null;
$this->checkboxes = null;
$this->hideHeader = false;
$this->hideSave = false;
$this->columnsAliases = null;
$this->filterName = null;
if (!is_array($args) || (is_array($args) && count($args) == 0))
{
@@ -638,6 +695,11 @@ class FilterWidget extends Widget
$this->formatRaw = $args[self::FORMAT_RAW];
}
if (isset($args[self::MARK_ROW]) && is_callable($args[self::MARK_ROW]))
{
$this->markRow = $args[self::MARK_ROW];
}
if (isset($args[self::CHECKBOXES])
&& is_array($args[self::CHECKBOXES])
&& count($args[self::CHECKBOXES]) > 0)
@@ -723,6 +785,7 @@ class FilterWidget extends Widget
$activeFilters = array();
$activeFiltersOperation = array();
$activeFiltersOption = array();
$filterName = null;
if (isset($jsonEncodedFilter->columns))
{
@@ -756,12 +819,20 @@ class FilterWidget extends Widget
}
}
if (isset($jsonEncodedFilter->name))
{
$filterName = $jsonEncodedFilter->name;
}
$this->filterName = $filterName;
$filterSessionArray = array(
self::SELECTED_FIELDS => $selectedFields,
self::SELECTED_FILTERS => $selectedFilters,
self::ACTIVE_FILTERS => $activeFilters,
self::ACTIVE_FILTERS_OPERATION => $activeFiltersOperation,
self::ACTIVE_FILTERS_OPTION => $activeFiltersOption
self::ACTIVE_FILTERS_OPTION => $activeFiltersOption,
self::FILTER_NAME => $filterName
);
$this->session->set_userdata(self::SESSION_NAME, $filterSessionArray);
@@ -773,7 +844,8 @@ class FilterWidget extends Widget
self::SELECTED_FILTERS => array(),
self::ACTIVE_FILTERS => array(),
self::ACTIVE_FILTERS_OPERATION => array(),
self::ACTIVE_FILTERS_OPTION => array()
self::ACTIVE_FILTERS_OPTION => array(),
self::FILTER_NAME => null
);
$this->session->set_userdata(self::SESSION_NAME, $filterSessionArray);
@@ -1038,6 +1110,7 @@ class FilterWidget extends Widget
);
$filterSessionArray[self::FILTER_ID] = $this->filterId;
$filterSessionArray[self::FILTER_NAME] = $this->filterName;
$this->session->set_userdata(self::SESSION_NAME, $filterSessionArray);
}
@@ -1130,9 +1203,11 @@ class FilterWidget extends Widget
}
break;
case self::OP_CONTAINS:
$activeFilterValue = $this->FiltersModel->escapeLike($activeFilterValue); // escapes
$condition = ' ILIKE \'%'.$activeFilterValue.'%\'';
break;
case self::OP_NOT_CONTAINS:
$activeFilterValue = $this->FiltersModel->escapeLike($activeFilterValue); // escapes
$condition = ' NOT ILIKE \'%'.$activeFilterValue.'%\'';
break;
case self::OP_IS_TRUE:
+2 -2
View File
@@ -86,8 +86,6 @@ echo ']>
<treecols>
<treecol id="messages-tree-betreff" label="Betreff" flex="2" hidden="false" primary="true"
class="sortDirectionIndicator"
sortActive="true"
sortDirection="ascending"
sort="rdf:http://www.technikum-wien.at/messages/rdf#subject"/>
<splitter class="tree-splitter"/>
<treecol id="messages-tree-body" label="Body" flex="2" hidden="true"
@@ -100,6 +98,8 @@ echo ']>
<splitter class="tree-splitter"/>
<treecol id="messages-tree-insertamum" label="Datum" flex="2" hidden="false"
class="sortDirectionIndicator"
sortActive="true"
sortDirection="descending"
sort="rdf:http://www.technikum-wien.at/messages/rdf#insertamum"/>
<splitter class="tree-splitter"/>
<treecol id="messages-tree-sender" label="Sender" flex="2" hidden="false"
+18 -9
View File
@@ -246,8 +246,23 @@ function StudentProjektarbeitResetFields()
document.getElementById('student-projektarbeit-textbox-anmerkung').value='';
document.getElementById('student-projektarbeit-menulist-firma').value='';
document.getElementById('student-projektarbeit-menulist-note').value='';
document.getElementById('student-projektarbeit-menulist-projekttyp').value='Bachelor';
document.getElementById('student-projektarbeit-checkbox-final').checked=true;
var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value;
var url = '<?php echo APP_ROOT ?>rdf/studiengang.rdf.php?studiengang_kz='+stg_kz+'&'+gettimestamp();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var dsource = rdfService.GetDataSourceBlocking(url);
var subject = rdfService.GetResource("http://www.technikum-wien.at/studiengang/" + stg_kz);
var predicateNS = "http://www.technikum-wien.at/studiengang/rdf";
studiengangstyp = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#typ" ));
if(studiengangstyp=='m')
document.getElementById('student-projektarbeit-menulist-projekttyp').value='Diplom';
else
document.getElementById('student-projektarbeit-menulist-projekttyp').value='Bachelor';
}
// *****
@@ -336,10 +351,7 @@ function StudentProjektarbeitAuswahl()
gesamtstunden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#gesamtstunden" ));
final = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#final" ));
//var verband_tree=document.getElementById('tree-verband');
//var col = verband_tree.columns ? verband_tree.columns["stg_kz"] : "stg_kz";
//var stg_kz=verband_tree.view.getCellText(verband_tree.currentIndex,col);
var stg_kz = studiengang_kz = document.getElementById('student-detail-menulist-studiengang_kz').value;
var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value;
//Lehrveranstaltung DropDown laden
var LvDropDown = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung');
@@ -591,10 +603,7 @@ function StudentProjektarbeitNeu()
StudentProjektarbeitResetFields();
StudentProjektarbeitDetailDisableFields(false);
StudentProjektbetreuerDisableFields(true);
//var verband_tree=document.getElementById('tree-verband');
//var col = verband_tree.columns ? verband_tree.columns["stg_kz"] : "stg_kz";
//var stg_kz=verband_tree.view.getCellText(verband_tree.currentIndex,col);
var stg_kz = studiengang_kz = document.getElementById('student-detail-menulist-studiengang_kz').value;
var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value;
//Lehrveranstaltung DropDown laden
var LvDropDown = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung');
@@ -0,0 +1,74 @@
/*
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 3 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, see <http://www.gnu.org/licenses/>.
*/
/**
* javascript file for infocenterDetails page
*/
$(document).ready(
function ()
{
//initialise table sorter
addTablesorter("doctable", [[2, 1], [1, 0]], ["zebra"]);
addTablesorter("nachgdoctable", [[2, 0], [1, 1]], ["zebra"]);
addTablesorter("msgtable", [[0, 1], [2, 0]], ["zebra", "filter"], 2);
addTablesorter("logtable", [[0, 1]], ["filter"], 2);
addTablesorter("notiztable", [[0, 1]], ["filter"], 2);
//add pager
tablesortAddPager("logtable", "logpager", 23);
tablesortAddPager("notiztable", "notizpager", 10);
//initialise datepicker
$.datepicker.setDefaults($.datepicker.regional['de']);
$(".dateinput").datepicker({
"dateFormat": "dd.mm.yy"
});
//add click events to "formal geprüft" checkboxes
/* $(".prchbox input[type=checkbox]").click(
function()
{
var akteid = this.;
var personid = ;
window.location = "../saveFormalGeprueft?akte_id="+akteid+"&formal_geprueft=" + this.checked + "&person_id="+personid;
}
);*/
//add submit event to message send link
$("#sendmsglink").click(
function ()
{
$("#sendmsgform").submit();
}
);
//prevent opening modal when Statusgrund not chosen
$("#absageModal").on('show.bs.modal', function (e)
{
if ($("[name=statusgrund]").val() === "null")
{
$("#statusgrselect").addClass("has-error");
return e.preventDefault();
}
}
);
$("[name=statusgrund]").change(function ()
{
$("#statusgrselect").removeClass("has-error");
}
);
}
);
@@ -1,8 +1,26 @@
/*
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 3 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, see <http://www.gnu.org/licenses/>.
*/
/**
* javascript file for infocenter overview page
*/
$(document).ready(
function()
{
//bootstrap table
$("#tableDataset").addClass('table table-bordered table-responsive');
// Checks if the table contains data (rows)
if ($('#tableDataset').find('tbody:empty').length == 0
&& $('#tableDataset').find('tr:empty').length == 0)
@@ -17,6 +35,9 @@ $(document).ready(
}
);
/**
* adds person table additional actions html (above and beneath it)
*/
function appendTableActionsHtml()
{
var currurl = window.location.href;
@@ -47,7 +68,9 @@ function appendTableActionsHtml()
$("#datasetActionsBottom").append("<br><br>");
}
/**
* sets functionality for the actions above and beneath the person table
*/
function setTableActions()
{
$(".sendMsgsLink").click(function() {
@@ -67,7 +90,7 @@ function setTableActions()
$(".selectAll").click(function()
{
//trs only if not filtered by tablesorter
//select only trs if not filtered by tablesorter
var trs = $("#tableDataset tbody tr").not(".filtered");
trs.find("input[name=PersonId\\[\\]]").prop("checked", true);
}
+86
View File
@@ -0,0 +1,86 @@
/*
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 3 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, see <http://www.gnu.org/licenses/>.
*/
/**
* provides helper functions for adding mottie tablesorter
* enables easier configuration of the tablesorter by providing a common default configuration
*/
/**
* adds tablesorter to specified tableid, german date format, default theme
* @param tableid
* @param sortList columns to sort by, as array of arrays (each array contains column number and 1/0 for asc/desc order)
* @param widgets optional widgets like zebra or filter
* @param minrows optional minimal amount of rows for filter row to be shown (only relevant for filter widget)
*/
function addTablesorter(tableid, sortList, widgets, minrows)
{
$("#" + tableid).tablesorter(
{
theme: "default",
dateFormat: "ddmmyyyy",
sortList: sortList,
widgets: widgets
}
);
if($("#" + tableid + " tr.tablesorter-filter-row").length)
{
//hide filters if less than n datarows (+ 2 for headings and filter row itself), default 0
var minrows = minrows || 0;
if ($("#" + tableid + " tr").length < minrows + 2)
{
$("#" + tableid + " tr.tablesorter-filter-row").hide();
}
}
}
/**
* adds pager for specified tableid. Assumes bootstap icons are available!
* @param tableid
* @param pagerid
* @param size number of rows for each page
*/
function tablesortAddPager(tableid, pagerid, size)
{
var html =
'<div id="' + pagerid + '" class="pager"> ' +
'<form class="form-inline">' +
'<i class="fa fa-step-backward first"></i>&nbsp;' +
'<i class="fa fa-backward prev"></i>' +
'<span class="pagedisplay"></span>' +
'<i class="fa fa-forward next"></i>&nbsp;' +
'<i class="fa fa-step-forward last"></i>' +
'</form>' +
'</div>';
var rowcount = $("#" + tableid + " tr").length;
//not show pager if only one table page
if (rowcount > size)
{
var table = $("#" + tableid);
table.after(html);
table.tablesorterPager(
{
container: $("#" + pagerid),
size: size,
cssDisabled: 'disabled',
savePages: false,
output: '{startRow} {endRow} / {totalRows} Zeilen'
}
);
}
}
+11 -2
View File
@@ -35,7 +35,16 @@ require_once('../include/studiengang.class.php');
// raumtypen holen
$studiengangDAO=new studiengang();
$studiengangDAO->getAll('typ, kurzbz', false);
if(isset($_GET['studiengang_kz']))
{
if($studiengangDAO->load($_GET['studiengang_kz']))
{
$studiengangDAO->result[] = $studiengangDAO;
}
}
else
$studiengangDAO->getAll('typ, kurzbz', false);
$rdf_url='http://www.technikum-wien.at/studiengang';
@@ -71,4 +80,4 @@ foreach ($studiengangDAO->result as $sg)
</RDF:Seq>
</RDF:RDF>
</RDF:RDF>
+31 -31
View File
@@ -88,7 +88,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
if(isset($_GET['ss']))
$studiensemester_kurzbz = $_GET['ss'];
else
$studiensemester_kurzbz = $semester_aktuell;
die('Studiensemester wurde nicht uebergeben');
//Daten holen
@@ -151,12 +151,12 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$bezeichnung = '';
$xml .= " <studiensemester>".$row->sembezeichnung."</studiensemester>";
$xml .= " <stsem>".$row->stsem."</stsem>";
$xml .= " <semester>".$row->semester."</semester>";
$xml .= " <semester_bezeichnung>".$bezeichnung."</semester_bezeichnung>";
$xml .= " <studiengang>".$row->bezeichnung."</studiengang>";
$xml .= " <studiengang_englisch>".$row->english."</studiengang_englisch>";
$xml .= " <studiensemester><![CDATA[".$row->sembezeichnung."]]></studiensemester>";
$xml .= " <stsem><![CDATA[".$row->stsem."]]></stsem>";
$xml .= " <semester><![CDATA[".$row->semester."]]></semester>";
$xml .= " <semester_bezeichnung><![CDATA[".$bezeichnung."]]></semester_bezeichnung>";
$xml .= " <studiengang><![CDATA[".$row->bezeichnung."]]></studiengang>";
$xml .= " <studiengang_englisch><![CDATA[".$row->english."]]></studiengang_englisch>";
if($row->typ=='b')
$bezeichnung='Bachelor';
elseif($row->typ=='m')
@@ -179,18 +179,18 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
else
$studiengang_kz = sprintf("%04s", abs($row->studiengang_kz));
$xml .= " <studiengang_art>".$bezeichnung."</studiengang_art>";
$xml .= " <studiengang_kz>".$studiengang_kz."</studiengang_kz>";
$xml .= "\n <anrede>".$row->anrede."</anrede>";
$xml .= "\n <vorname>".$row->vorname."</vorname>";
$xml .= " <nachname>".$row->nachname."</nachname>";
$xml .= " <name>".trim($row->titelpre.' '.trim($row->vorname.' '.$row->vornamen).' '.$row->nachname.($row->titelpost!=''?', '.$row->titelpost:''))."</name>";
$xml .= " <studiengang_art><![CDATA[".$bezeichnung."]]></studiengang_art>";
$xml .= " <studiengang_kz><![CDATA[".$studiengang_kz."]]></studiengang_kz>";
$xml .= "\n <anrede><![CDATA[".$row->anrede."]]></anrede>";
$xml .= "\n <vorname><![CDATA[".$row->vorname."]]></vorname>";
$xml .= " <nachname><![CDATA[".$row->nachname."]]></nachname>";
$xml .= " <name><![CDATA[".trim($row->titelpre.' '.trim($row->vorname.' '.$row->vornamen).' '.$row->nachname.($row->titelpost!=''?', '.$row->titelpost:''))."]]></name>";
$gebdatum = date('d.m.Y',strtotime($row->gebdatum));
$xml .= " <gebdatum>".$gebdatum."</gebdatum>";
$xml .= " <matrikelnr>".trim($row->matrikelnr)."</matrikelnr>";
$xml .= " <studiengangsleiter>".$stgl."</studiengangsleiter>";
$xml .= " <gebdatum><![CDATA[".$gebdatum."]]></gebdatum>";
$xml .= " <matrikelnr><![CDATA[".trim($row->matrikelnr)."]]></matrikelnr>";
$xml .= " <studiengangsleiter><![CDATA[".$stgl."]]></studiengangsleiter>";
$datum_aktuell = date('d.m.Y');
$xml .= " <ort_datum>".$datum_aktuell."</ort_datum>";
$xml .= " <ort_datum><![CDATA[".$datum_aktuell."]]></ort_datum>";
$xml .= " <projektarbeit_note_anzeige>".($row->projektarbeit_note_anzeige=='t'?'true':'false')."</projektarbeit_note_anzeige>";
$qry_proj = "
@@ -239,10 +239,10 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
{
if($row_abschlusspruefung = $db->db_fetch_object($result_abschlusspruefung))
{
$xml .= " <abschlusspruefung_typ>".$row_abschlusspruefung->pruefungstyp_kurzbz."</abschlusspruefung_typ>";
$xml .= " <abschlusspruefung_datum>".$datum->formatDatum($row_abschlusspruefung->datum,'d.m.Y')."</abschlusspruefung_datum>";
$xml .= " <abschlusspruefung_note>".$row_abschlusspruefung->bezeichnung."</abschlusspruefung_note>";
$xml .= " <abschlusspruefung_note_english>".$row_abschlusspruefung->bezeichnung_english."</abschlusspruefung_note_english>";
$xml .= " <abschlusspruefung_typ><![CDATA[".$row_abschlusspruefung->pruefungstyp_kurzbz."]]></abschlusspruefung_typ>";
$xml .= " <abschlusspruefung_datum><![CDATA[".$datum->formatDatum($row_abschlusspruefung->datum,'d.m.Y')."]]></abschlusspruefung_datum>";
$xml .= " <abschlusspruefung_note><![CDATA[".$row_abschlusspruefung->bezeichnung."]]></abschlusspruefung_note>";
$xml .= " <abschlusspruefung_note_english><![CDATA[".$row_abschlusspruefung->bezeichnung_english."]]></abschlusspruefung_note_english>";
}
}
}
@@ -378,9 +378,9 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$xml .= "\n <unterrichtsfach>";
$xml .= " <bezeichnung><![CDATA[".$bezeichnung."]]></bezeichnung>";
$xml .= " <bezeichnung_englisch><![CDATA[".$bezeichnung_englisch."]]></bezeichnung_englisch>";
$xml .= " <note>".$note2."</note>";
$xml .= " <sws>".($row->semesterstunden==0?'':number_format(sprintf('%.1F',$row->semesterstunden/$wochen),1))."</sws>";
$xml .= " <sws_lv>".($row->sws==0?'':number_format(sprintf('%.1F',$row->sws),1))."</sws_lv>";
$xml .= " <note><![CDATA[".$note2."]]></note>";
$xml .= " <sws><![CDATA[".($row->semesterstunden==0?'':number_format(sprintf('%.1F',$row->semesterstunden/$wochen),1))."]]></sws>";
$xml .= " <sws_lv><![CDATA[".($row->sws==0?'':number_format(sprintf('%.1F',$row->sws),1))."]]></sws_lv>";
$ectspunkte='';
$anrechnung = new anrechnung();
@@ -407,19 +407,19 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
}
$ects_gesamt+=$ectspunkte;
$xml .= " <ects>".$ectspunkte."</ects>";
$xml .= " <lv_lehrform_kurzbz>".$row->lv_lehrform_kurzbz."</lv_lehrform_kurzbz>";
$xml .= " <ects><![CDATA[".$ectspunkte."]]></ects>";
$xml .= " <lv_lehrform_kurzbz><![CDATA[".$row->lv_lehrform_kurzbz."]]></lv_lehrform_kurzbz>";
if($auslandssemester)
{
$xml .= " <bisio_von>".date('d.m.Y', $datum->mktime_fromdate($bisio_von))."</bisio_von>";
$xml .= " <bisio_bis>".date('d.m.Y', $datum->mktime_fromdate($bisio_bis))."</bisio_bis>";
$xml .= " <bisio_ort>$bisio_ort</bisio_ort>";
$xml .= " <bisio_universitaet>$bisio_universitaet</bisio_universitaet>";
$xml .= " <bisio_von><![CDATA[".date('d.m.Y', $datum->mktime_fromdate($bisio_von))."]]></bisio_von>";
$xml .= " <bisio_bis><![CDATA[".date('d.m.Y', $datum->mktime_fromdate($bisio_bis))."]]></bisio_bis>";
$xml .= " <bisio_ort><![CDATA[$bisio_ort]]></bisio_ort>";
$xml .= " <bisio_universitaet><![CDATA[$bisio_universitaet]]></bisio_universitaet>";
}
$xml .= " </unterrichtsfach>";
}
}
$xml .= "<ects_gesamt>".$ects_gesamt."</ects_gesamt>";
$xml .= "<ects_gesamt><![CDATA[".$ects_gesamt."]]></ects_gesamt>";
$xml .= $xml_fussnote;
}
+11 -1
View File
@@ -1,3 +1,13 @@
/*custom styles for sb admin 2 template: https://startbootstrap.com/template-overviews/sb-admin-2/*/
/*optional header at right side of the main header*/
.headerright{
margin: 40px 0 20px -30px;
padding: 6.4px 0 9px;
border-bottom: 1px solid #eee;
}
/*change of panel colors (grey) */
.panel-primary > .panel-heading{
color: black;
background-color: #dfdfdf;
@@ -6,4 +16,4 @@
.panel-primary{
border-color: #dfdfdf;
}
}
+3
View File
@@ -1,3 +1,6 @@
/*stylesheet for sb admin 2 pages that do not have menu and toolbar*/
@import "admintemplate.css";
@media (min-width:768px) {
#page-wrapper {
margin-right: 250px;
Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 663 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 230 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1003 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 843 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 693 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 365 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 564 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 734 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1015 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 861 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 473 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 893 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 135 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 855 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 328 B

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