mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-03 03:49:29 +00:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -0,0 +1,464 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class Filters extends VileSci_Controller
|
||||
{
|
||||
const SESSION_NAME = 'FILTER';
|
||||
|
||||
const SELECTED_FIELDS = 'selectedFields';
|
||||
const SELECTED_FILTERS = 'selectedFilters';
|
||||
const ACTIVE_FILTERS = 'activeFilters';
|
||||
const ACTIVE_FILTERS_OPTION = 'activeFiltersOption';
|
||||
const ACTIVE_FILTERS_OPERATION = 'activeFiltersOperation';
|
||||
const FILTER_NAME = 'filterName';
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
// Load session library
|
||||
$this->load->library('session');
|
||||
|
||||
$this->load->model('system/Filters_model', 'FiltersModel');
|
||||
$this->load->model('person/Benutzer_model', 'BenutzerModel');
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function tableDataset()
|
||||
{
|
||||
$json = new stdClass();
|
||||
|
||||
$json->selectedFields = $_SESSION[self::SESSION_NAME]['selectedFields'];
|
||||
$json->columnsAliases = $_SESSION[self::SESSION_NAME]['columnsAliases'];
|
||||
$json->additionalColumns = $_SESSION[self::SESSION_NAME]['additionalColumns'];
|
||||
$json->checkboxes = $_SESSION[self::SESSION_NAME]['checkboxes'];
|
||||
$json->dataset = $_SESSION[self::SESSION_NAME]['dataset'];
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode($json));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function selectFields()
|
||||
{
|
||||
$json = new stdClass();
|
||||
|
||||
$json->allSelectedFields = $_SESSION[self::SESSION_NAME]['allSelectedFields'];
|
||||
$json->allColumnsAliases = $_SESSION[self::SESSION_NAME]['allColumnsAliases'];
|
||||
|
||||
$json->selectedFields = $_SESSION[self::SESSION_NAME]['selectedFields'];
|
||||
$json->columnsAliases = $_SESSION[self::SESSION_NAME]['columnsAliases'];
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode($json));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function sortSelectedFields()
|
||||
{
|
||||
$selectedFieldsLst = $this->input->post('selectedFieldsLst');
|
||||
|
||||
$json = new stdClass();
|
||||
|
||||
$allSelectedFields = $_SESSION[self::SESSION_NAME]['allSelectedFields'];
|
||||
$allColumnsAliases = $_SESSION[self::SESSION_NAME]['allColumnsAliases'];
|
||||
|
||||
if (isset($selectedFieldsLst) && is_array($selectedFieldsLst))
|
||||
{
|
||||
$json->selectedFields = $_SESSION[self::SESSION_NAME]['selectedFields'] = $selectedFieldsLst;
|
||||
|
||||
for ($i = 0; $i < count($json->selectedFields); $i++)
|
||||
{
|
||||
$pos = array_search($json->selectedFields[$i], $allSelectedFields);
|
||||
|
||||
if ($pos !== false)
|
||||
{
|
||||
$json->columnsAliases[] = $json->selectedFields[$i];
|
||||
if ($allColumnsAliases != null && is_array($allColumnsAliases))
|
||||
{
|
||||
$json->columnsAliases[] = $allColumnsAliases[$pos];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode($json));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function selectFilters()
|
||||
{
|
||||
$json = new stdClass();
|
||||
|
||||
$json->allSelectedFields = $_SESSION[self::SESSION_NAME]['allSelectedFields'];
|
||||
$json->allColumnsAliases = $_SESSION[self::SESSION_NAME]['allColumnsAliases'];
|
||||
|
||||
$json->selectedFilters = $_SESSION[self::SESSION_NAME]['selectedFilters'];
|
||||
$json->selectedFiltersAliases = array();
|
||||
$json->selectedFiltersMetaData = array();
|
||||
|
||||
$json->selectedFiltersActiveFilters = array();
|
||||
$json->selectedFiltersActiveFiltersOperation = array();
|
||||
$json->selectedFiltersActiveFiltersOption = array();
|
||||
|
||||
$metaData = $_SESSION[self::SESSION_NAME]['metaData'];
|
||||
$activeFilters = $_SESSION[self::SESSION_NAME]['activeFilters'];
|
||||
$activeFiltersOperation = $_SESSION[self::SESSION_NAME]['activeFiltersOperation'];
|
||||
$activeFiltersOption = $_SESSION[self::SESSION_NAME]['activeFiltersOption'];
|
||||
|
||||
for ($i = 0; $i < count($json->selectedFilters); $i++)
|
||||
{
|
||||
$pos = array_search($json->selectedFilters[$i], $json->allSelectedFields);
|
||||
|
||||
if ($pos !== false)
|
||||
{
|
||||
$json->selectedFiltersAliases[] = $json->selectedFilters[$i];
|
||||
if ($json->allColumnsAliases != null && is_array($json->allColumnsAliases))
|
||||
{
|
||||
$json->selectedFiltersAliases[] = $json->allColumnsAliases[$pos];
|
||||
}
|
||||
|
||||
$json->selectedFiltersMetaData[] = $metaData[$pos];
|
||||
|
||||
if (isset($activeFilters[$json->selectedFilters[$i]]))
|
||||
{
|
||||
$json->selectedFiltersActiveFilters[] = $activeFilters[$json->selectedFilters[$i]];
|
||||
}
|
||||
|
||||
if (isset($activeFiltersOperation[$json->selectedFilters[$i]]))
|
||||
{
|
||||
$json->selectedFiltersActiveFiltersOperation[] = $activeFiltersOperation[$json->selectedFilters[$i]];
|
||||
}
|
||||
|
||||
if (isset($activeFiltersOption[$json->selectedFilters[$i]]))
|
||||
{
|
||||
$json->selectedFiltersActiveFiltersOption[] = $activeFiltersOption[$json->selectedFilters[$i]];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode($json));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function saveFilter()
|
||||
{
|
||||
$this->_saveFilter($this->input->post("customFilterDescription"));
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode('Tutto bene!!!'));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private function _saveFilter($customFilterDescription)
|
||||
{
|
||||
$objToBeSaved = new stdClass();
|
||||
|
||||
$filterSessionArray = $this->session->userdata(self::SESSION_NAME);
|
||||
|
||||
$objToBeSaved->name = $customFilterDescription;
|
||||
|
||||
if (isset($filterSessionArray[self::SELECTED_FIELDS]))
|
||||
{
|
||||
$selectedFields = $filterSessionArray[self::SELECTED_FIELDS];
|
||||
$objToBeSaved->columns = array();
|
||||
|
||||
for ($selectedFieldsCounter = 0; $selectedFieldsCounter < count($selectedFields); $selectedFieldsCounter++)
|
||||
{
|
||||
$objToBeSaved->columns[$selectedFieldsCounter] = new stdClass();
|
||||
$objToBeSaved->columns[$selectedFieldsCounter]->name = $selectedFields[$selectedFieldsCounter];
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($filterSessionArray[self::SELECTED_FILTERS]))
|
||||
{
|
||||
$selectedFilters = $filterSessionArray[self::SELECTED_FILTERS];
|
||||
$objToBeSaved->filters = array();
|
||||
|
||||
for ($selectedFiltersCounter = 0; $selectedFiltersCounter < count($selectedFilters); $selectedFiltersCounter++)
|
||||
{
|
||||
$objToBeSaved->filters[$selectedFiltersCounter] = new stdClass();
|
||||
$objToBeSaved->filters[$selectedFiltersCounter]->name = $selectedFilters[$selectedFiltersCounter];
|
||||
|
||||
if (isset($filterSessionArray[self::ACTIVE_FILTERS])
|
||||
&& isset($filterSessionArray[self::ACTIVE_FILTERS][$selectedFilters[$selectedFiltersCounter]]))
|
||||
{
|
||||
$objToBeSaved->filters[$selectedFiltersCounter]->condition = $filterSessionArray[self::ACTIVE_FILTERS][$selectedFilters[$selectedFiltersCounter]];
|
||||
}
|
||||
|
||||
if (isset($filterSessionArray[self::ACTIVE_FILTERS_OPERATION])
|
||||
&& isset($filterSessionArray[self::ACTIVE_FILTERS_OPERATION][$selectedFilters[$selectedFiltersCounter]]))
|
||||
{
|
||||
$objToBeSaved->filters[$selectedFiltersCounter]->operation = $filterSessionArray[self::ACTIVE_FILTERS_OPERATION][$selectedFilters[$selectedFiltersCounter]];
|
||||
}
|
||||
|
||||
if (isset($filterSessionArray[self::ACTIVE_FILTERS_OPTION])
|
||||
&& isset($filterSessionArray[self::ACTIVE_FILTERS_OPTION][$selectedFilters[$selectedFiltersCounter]]))
|
||||
{
|
||||
$objToBeSaved->filters[$selectedFiltersCounter]->option = $filterSessionArray[self::ACTIVE_FILTERS_OPTION][$selectedFilters[$selectedFiltersCounter]];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$desc = $customFilterDescription;
|
||||
$descPGArray = '{"'.$desc.'", "'.$desc.'", "'.$desc.'", "'.$desc.'"}';
|
||||
|
||||
$resultBenutzer = $this->BenutzerModel->load(getAuthUID());
|
||||
$personId = $resultBenutzer->retval[0]->person_id;
|
||||
|
||||
$result = $this->FiltersModel->loadWhere(array(
|
||||
'app' => $_SESSION[self::SESSION_NAME]['app'],
|
||||
'dataset_name' => $_SESSION[self::SESSION_NAME]['datasetName'],
|
||||
'description' => $descPGArray,
|
||||
'person_id' => $personId
|
||||
));
|
||||
|
||||
if (hasData($result))
|
||||
{
|
||||
$this->FiltersModel->update(
|
||||
array(
|
||||
'app' => $_SESSION[self::SESSION_NAME]['app'],
|
||||
'dataset_name' => $_SESSION[self::SESSION_NAME]['datasetName'],
|
||||
'description' => $descPGArray,
|
||||
'person_id' => $personId
|
||||
),
|
||||
array(
|
||||
'filter' => json_encode($objToBeSaved)
|
||||
)
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->FiltersModel->insert(array(
|
||||
'app' => $_SESSION[self::SESSION_NAME]['app'],
|
||||
'dataset_name' => $_SESSION[self::SESSION_NAME]['datasetName'],
|
||||
'filter_kurzbz' => uniqid($personId, true),
|
||||
'person_id' => $personId,
|
||||
'description' => $descPGArray,
|
||||
'sort' => null,
|
||||
'default_filter' => false,
|
||||
'filter' => json_encode($objToBeSaved),
|
||||
'oe_kurzbz' => null
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function deleteCustomFilter()
|
||||
{
|
||||
$filter_id = $this->input->post('filter_id');
|
||||
|
||||
if (is_numeric($filter_id))
|
||||
{
|
||||
$this->FiltersModel->deleteCustomFilter($filter_id);
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode('Tutto bene!!!'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function removeSelectedFields()
|
||||
{
|
||||
$fieldName = $this->input->post('fieldName');
|
||||
|
||||
$allSelectedFields = $_SESSION[self::SESSION_NAME]['allSelectedFields'];
|
||||
$allColumnsAliases = $_SESSION[self::SESSION_NAME]['allColumnsAliases'];
|
||||
|
||||
$selectedFields = $_SESSION[self::SESSION_NAME]['selectedFields'];
|
||||
$columnsAliases = $_SESSION[self::SESSION_NAME]['columnsAliases'];
|
||||
|
||||
if (($pos = array_search($fieldName, $selectedFields)) !== false)
|
||||
{
|
||||
array_splice($selectedFields, $pos, 1);
|
||||
|
||||
if ($columnsAliases != null && is_array($columnsAliases))
|
||||
{
|
||||
array_splice($columnsAliases, $pos, 1);
|
||||
}
|
||||
}
|
||||
|
||||
$_SESSION[self::SESSION_NAME]['selectedFields'] = $selectedFields;
|
||||
$_SESSION[self::SESSION_NAME]['columnsAliases'] = $columnsAliases;
|
||||
|
||||
$json = new stdClass();
|
||||
|
||||
$json->allSelectedFields = $allSelectedFields;
|
||||
$json->allColumnsAliases = $allColumnsAliases;
|
||||
$json->selectedFields = $selectedFields;
|
||||
$json->columnsAliases = $columnsAliases;
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode($json));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function removeSelectedFilters()
|
||||
{
|
||||
$fieldName = $this->input->post('fieldName');
|
||||
|
||||
$selectedFilters = $_SESSION[self::SESSION_NAME]['selectedFilters'];
|
||||
$selectedFiltersActiveFilters = $_SESSION[self::SESSION_NAME]['activeFilters'];
|
||||
$selectedFiltersActiveFiltersOperation = $_SESSION[self::SESSION_NAME]['activeFiltersOperation'];
|
||||
$selectedFiltersActiveFiltersOption = $_SESSION[self::SESSION_NAME]['activeFiltersOption'];
|
||||
|
||||
if (($pos = array_search($fieldName, $selectedFilters)) !== false)
|
||||
{
|
||||
array_splice($selectedFilters, $pos, 1);
|
||||
array_splice($selectedFiltersActiveFilters, $pos, 1);
|
||||
array_splice($selectedFiltersActiveFiltersOperation, $pos, 1);
|
||||
array_splice($selectedFiltersActiveFiltersOption, $pos, 1);
|
||||
}
|
||||
|
||||
$_SESSION[self::SESSION_NAME]['selectedFilters'] = $selectedFilters;
|
||||
$_SESSION[self::SESSION_NAME]['activeFilters'] = $selectedFiltersActiveFilters;
|
||||
$_SESSION[self::SESSION_NAME]['activeFiltersOperation'] = $selectedFiltersActiveFiltersOperation;
|
||||
$_SESSION[self::SESSION_NAME]['activeFiltersOption'] = $selectedFiltersActiveFiltersOption;
|
||||
|
||||
$json = new stdClass();
|
||||
|
||||
$json->selectedFilters = $selectedFilters;
|
||||
$json->selectedFiltersActiveFilters = $selectedFiltersActiveFilters;
|
||||
$json->selectedFiltersActiveFiltersOperation = $selectedFiltersActiveFiltersOperation;
|
||||
$json->selectedFiltersActiveFiltersOption = $selectedFiltersActiveFiltersOption;
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode($json));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function addSelectedFields()
|
||||
{
|
||||
$fieldName = $this->input->post('fieldName');
|
||||
|
||||
$allSelectedFields = $_SESSION[self::SESSION_NAME]['allSelectedFields'];
|
||||
$allColumnsAliases = $_SESSION[self::SESSION_NAME]['allColumnsAliases'];
|
||||
|
||||
$selectedFields = $_SESSION[self::SESSION_NAME]['selectedFields'];
|
||||
$columnsAliases = $_SESSION[self::SESSION_NAME]['columnsAliases'];
|
||||
|
||||
if (($pos = array_search($fieldName, $allSelectedFields)) !== false
|
||||
&& array_search($fieldName, $selectedFields) === false)
|
||||
{
|
||||
array_push($selectedFields, $fieldName);
|
||||
|
||||
if ($columnsAliases != null && is_array($columnsAliases))
|
||||
{
|
||||
array_push($columnsAliases, $allColumnsAliases[$pos]);
|
||||
}
|
||||
}
|
||||
|
||||
$_SESSION[self::SESSION_NAME]['selectedFields'] = $selectedFields;
|
||||
$_SESSION[self::SESSION_NAME]['columnsAliases'] = $columnsAliases;
|
||||
|
||||
$json = new stdClass();
|
||||
|
||||
$json->allSelectedFields = $allSelectedFields;
|
||||
$json->allColumnsAliases = $allColumnsAliases;
|
||||
$json->selectedFields = $selectedFields;
|
||||
$json->columnsAliases = $columnsAliases;
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode($json));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function addSelectedFilters()
|
||||
{
|
||||
$fieldName = $this->input->post('fieldName');
|
||||
|
||||
$selectedFilters = $_SESSION[self::SESSION_NAME]['selectedFilters'];
|
||||
$selectedFiltersActiveFilters = $_SESSION[self::SESSION_NAME]['activeFilters'];
|
||||
$selectedFiltersActiveFiltersOperation = $_SESSION[self::SESSION_NAME]['activeFiltersOperation'];
|
||||
$selectedFiltersActiveFiltersOption = $_SESSION[self::SESSION_NAME]['activeFiltersOption'];
|
||||
|
||||
if (!in_array($fieldName, $selectedFilters))
|
||||
{
|
||||
array_push($selectedFilters, $fieldName);
|
||||
$selectedFiltersActiveFilters[$fieldName] = "";
|
||||
$selectedFiltersActiveFiltersOperation[$fieldName] = "";
|
||||
$selectedFiltersActiveFiltersOption[$fieldName] = "";
|
||||
}
|
||||
|
||||
$_SESSION[self::SESSION_NAME]['selectedFilters'] = $selectedFilters;
|
||||
$_SESSION[self::SESSION_NAME]['activeFilters'] = $selectedFiltersActiveFilters;
|
||||
$_SESSION[self::SESSION_NAME]['activeFiltersOperation'] = $selectedFiltersActiveFiltersOperation;
|
||||
$_SESSION[self::SESSION_NAME]['activeFiltersOption'] = $selectedFiltersActiveFiltersOption;
|
||||
|
||||
$json = new stdClass();
|
||||
|
||||
$json->selectedFilters = $selectedFilters;
|
||||
$json->selectedFiltersActiveFilters = $selectedFiltersActiveFilters;
|
||||
$json->selectedFiltersActiveFiltersOperation = $selectedFiltersActiveFiltersOperation;
|
||||
$json->selectedFiltersActiveFiltersOption = $selectedFiltersActiveFiltersOption;
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode($json));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function applyFilter()
|
||||
{
|
||||
$fieldNames = $this->input->post('filterNames');
|
||||
$filterOperations = $this->input->post('filterOperations');
|
||||
$filterOperationValues = $this->input->post('filterOperationValues');
|
||||
$filterOptions = $this->input->post('filterOptions');
|
||||
|
||||
$activeFilters = array_combine($fieldNames, $filterOperationValues);
|
||||
$activeFiltersOperation = array_combine($fieldNames, $filterOperations);
|
||||
$activeFiltersOption = array_combine($fieldNames, $filterOptions);
|
||||
|
||||
$_SESSION[self::SESSION_NAME]['activeFilters'] = $activeFilters;
|
||||
$_SESSION[self::SESSION_NAME]['activeFiltersOperation'] = $activeFiltersOperation;
|
||||
$_SESSION[self::SESSION_NAME]['activeFiltersOption'] = $activeFiltersOption;
|
||||
|
||||
$json = new stdClass();
|
||||
|
||||
$json->fieldNames = $fieldNames;
|
||||
$json->activeFilters = $activeFilters;
|
||||
$json->activeFiltersOperation = $activeFiltersOperation;
|
||||
$json->activeFiltersOption = $activeFiltersOption;
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode($json));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function rowNumber()
|
||||
{
|
||||
$json = new stdClass();
|
||||
|
||||
$dataset = $_SESSION[self::SESSION_NAME]['dataset'];
|
||||
|
||||
if (is_array($dataset))
|
||||
{
|
||||
$json->rowNumber = count($dataset);
|
||||
}
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode($json));
|
||||
}
|
||||
}
|
||||
@@ -156,12 +156,12 @@ class InfoCenter extends VileSci_Controller
|
||||
|
||||
/**
|
||||
* Saves if a document has been formal geprueft. saves current timestamp if checked as geprueft, or null if not.
|
||||
* @param $person_id
|
||||
*/
|
||||
public function saveFormalGeprueft()
|
||||
public function saveFormalGeprueft($person_id)
|
||||
{
|
||||
$akte_id = $this->input->get('akte_id');
|
||||
$formalgeprueft = $this->input->get('formal_geprueft');
|
||||
$person_id = $this->input->get('person_id');
|
||||
$akte_id = $this->input->post('akte_id');
|
||||
$formalgeprueft = $this->input->post('formal_geprueft');
|
||||
|
||||
if (!isset($akte_id) || !isset($formalgeprueft) || !isset($person_id))
|
||||
show_error('Parameters not set!');
|
||||
@@ -191,7 +191,9 @@ class InfoCenter extends VileSci_Controller
|
||||
)
|
||||
);
|
||||
|
||||
redirect(self::URL_PREFIX.'/showDetails/'.$person_id.'#DokPruef');
|
||||
$this->output
|
||||
->set_content_type('application/json')
|
||||
->set_output(json_encode($timestamp));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -260,7 +262,9 @@ class InfoCenter extends VileSci_Controller
|
||||
|
||||
$this->_log($logdata['person_id'], 'savezgv', array($logdata['studiengang_kurzbz'], $prestudent_id));
|
||||
|
||||
$this->_redirectToStart($prestudent_id, 'ZgvPruef');
|
||||
$this->output
|
||||
->set_content_type('application/json')
|
||||
->set_output(json_encode($result->retval));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -385,7 +389,35 @@ class InfoCenter extends VileSci_Controller
|
||||
|
||||
$this->_log($person_id, 'savenotiz', array($titel));
|
||||
|
||||
redirect(self::URL_PREFIX.'/showDetails/'.$person_id.'#NotizAkt');
|
||||
$this->output
|
||||
->set_content_type('application/json')
|
||||
->set_output(json_encode($result->retval));
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads Notizen view for a person, helper for reloading after ajax request
|
||||
* @param $person_id
|
||||
*/
|
||||
public function reloadNotizen($person_id)
|
||||
{
|
||||
$notizen = $this->NotizModel->getNotiz($person_id);
|
||||
|
||||
if (isError($notizen))
|
||||
{
|
||||
show_error($notizen->retval);
|
||||
}
|
||||
|
||||
$this->load->view('system/infocenter/notizen.php', array('notizen' => $notizen->retval));
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads Logs view for a person, helper for reloading after ajax request
|
||||
* @param $person_id
|
||||
*/
|
||||
public function reloadLogs($person_id)
|
||||
{
|
||||
$logs = $this->personloglib->getLogs($person_id);
|
||||
$this->load->view('system/infocenter/logs.php', array('logs' => $logs));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -416,21 +448,6 @@ class InfoCenter extends VileSci_Controller
|
||||
->_display();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function deleteCustomFilter()
|
||||
{
|
||||
$filter_id = $this->input->get('filter_id');
|
||||
|
||||
if (is_numeric($filter_id))
|
||||
{
|
||||
$this->FiltersModel->deleteCustomFilter($filter_id);
|
||||
|
||||
redirect(self::URL_PREFIX);
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
@@ -551,8 +568,9 @@ class InfoCenter extends VileSci_Controller
|
||||
$tofill['children'][] = array(
|
||||
'link' => sprintf($toPrint, base_url('index.ci.php/system/infocenter/InfoCenter?filter_id'), $filterId),
|
||||
'description' => $description,
|
||||
'subscriptLink' => sprintf($toPrint, base_url('index.ci.php/system/infocenter/InfoCenter/deleteCustomFilter?filter_id'), $filterId),
|
||||
'subscriptDescription' => 'Remove'
|
||||
'subscriptDescription' => 'Remove',
|
||||
'subscriptLinkId' => 'removeFilterById',
|
||||
'subscriptLinkValue' => $filterId
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -689,7 +707,7 @@ class InfoCenter extends VileSci_Controller
|
||||
|
||||
// Interessenten come first, otherwise by bewerbungsdatum desc, then by prestudent_id desc
|
||||
usort($zgvpruefungen, function ($a, $b) {
|
||||
$bewdatesort = strcmp($b->prestudentstatus->bewerbung_abgeschicktamum, $a->prestudentstatus->bewerbung_abgeschicktamum);
|
||||
$bewdatesort = isset($a->prestudentstatus) && isset($b->prestudentstatus) ? strcmp($b->prestudentstatus->bewerbung_abgeschicktamum, $a->prestudentstatus->bewerbung_abgeschicktamum) : 0;
|
||||
$defaultsort = $bewdatesort === 0 ? (int)$b->prestudent_id - (int)$a->prestudent_id : $bewdatesort;
|
||||
if (!isset($a->prestudentstatus->status_kurzbz) || !isset($b->prestudentstatus->status_kurzbz))
|
||||
return $defaultsort;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<form method="post" action="../saveNotiz/<?php echo $stammdaten->person_id ?>">
|
||||
<form method="post" action="#" id="notizform">
|
||||
<div class="form-group">
|
||||
<div class="text-center">
|
||||
<label>Notiz hinzufügen</label>
|
||||
|
||||
@@ -22,9 +22,11 @@
|
||||
<td><?php echo date_format(date_create($dokument->erstelltam), 'd.m.Y') ?></td>
|
||||
<td><?php echo $dokument->langtext ?></td>
|
||||
<td>
|
||||
<input type="checkbox" class="form-check-input"
|
||||
id="prchkbx<?php echo $dokument->akte_id ?>" <?php echo $geprueft ?> />
|
||||
<input type="checkbox" class="form-check-input prchbox"
|
||||
id="prchkbx_<?php echo $dokument->akte_id ?>" <?php echo $geprueft ?>>
|
||||
<span id="formalgeprueftam_<?php echo $dokument->akte_id ?>">
|
||||
<?php echo isset($dokument->formal_geprueft_amum) ? date_format(date_create($dokument->formal_geprueft_amum), 'd.m.Y') : ''; ?>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach ?>
|
||||
|
||||
@@ -115,58 +115,46 @@
|
||||
',
|
||||
'hideHeader' => false,
|
||||
'hideSave' => false,
|
||||
'checkboxes' => array('PersonId'),
|
||||
'checkboxes' => 'PersonId',
|
||||
'additionalColumns' => array('Details'),
|
||||
'formatRaw' => function($fieldName, $fieldValue, $datasetRaw) {
|
||||
'formatRaw' => function($datasetRaw) {
|
||||
|
||||
if ($fieldName == 'Details')
|
||||
$datasetRaw->{'Details'} = sprintf(
|
||||
'<a href="%s%s">Details</a>',
|
||||
base_url('index.ci.php/system/infocenter/InfoCenter/showDetails/'),
|
||||
$datasetRaw->{'PersonId'}
|
||||
);
|
||||
|
||||
if ($datasetRaw->{'SendDate'} == null)
|
||||
{
|
||||
$link = '<a href="%s%s">Details</a>';
|
||||
|
||||
$datasetRaw->{$fieldName} = sprintf(
|
||||
$link,
|
||||
base_url('index.ci.php/system/infocenter/InfoCenter/showDetails/'),
|
||||
$datasetRaw->PersonId
|
||||
);
|
||||
$datasetRaw->{'SendDate'} = 'Not sent';
|
||||
}
|
||||
|
||||
if ($fieldName == 'SendDate')
|
||||
if ($datasetRaw->{'LastAction'} == null)
|
||||
{
|
||||
if ($datasetRaw->{$fieldName} == '01.01.1970 01:00:00')
|
||||
{
|
||||
$datasetRaw->{$fieldName} = 'Not sent';
|
||||
}
|
||||
$datasetRaw->{'LastAction'} = 'Not logged';
|
||||
}
|
||||
|
||||
if ($fieldName == 'LastAction')
|
||||
if ($datasetRaw->{'User/Operator'} == '')
|
||||
{
|
||||
if ($datasetRaw->{$fieldName} == '01.01.1970 01:00:00')
|
||||
{
|
||||
$datasetRaw->{$fieldName} = 'Not logged';
|
||||
}
|
||||
$datasetRaw->{'User/Operator'} = 'NA';
|
||||
}
|
||||
|
||||
if ($fieldName == 'User/Operator')
|
||||
if ($datasetRaw->{'LockDate'} == null)
|
||||
{
|
||||
if ($datasetRaw->{$fieldName} == '')
|
||||
{
|
||||
$datasetRaw->{$fieldName} = 'NA';
|
||||
}
|
||||
$datasetRaw->{'LockDate'} = 'Not locked';
|
||||
}
|
||||
|
||||
if ($fieldName == 'LockDate')
|
||||
if ($datasetRaw->{'StgAbgeschickt'} == null)
|
||||
{
|
||||
if ($datasetRaw->{$fieldName} == '01.01.1970 01:00:00')
|
||||
{
|
||||
$datasetRaw->{$fieldName} = 'Not locked';
|
||||
}
|
||||
$datasetRaw->{'StgAbgeschickt'} = 'N/A';
|
||||
}
|
||||
|
||||
return $datasetRaw;
|
||||
},
|
||||
'markRow' => function($datasetRaw) {
|
||||
|
||||
if ($datasetRaw->LockDate != '')
|
||||
if ($datasetRaw->LockDate != null)
|
||||
{
|
||||
return FilterWidget::DEFAULT_MARK_ROW_CLASS;
|
||||
}
|
||||
|
||||
@@ -129,10 +129,14 @@
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<div id="addnotiz">
|
||||
<?php $this->load->view('system/infocenter/addNotiz.php'); ?>
|
||||
</div>
|
||||
<div id="notizen">
|
||||
<?php $this->load->view('system/infocenter/notizen.php'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="col-lg-6" id="logs">
|
||||
<?php $this->load->view('system/infocenter/logs.php'); ?>
|
||||
</div> <!-- ./column -->
|
||||
</div> <!-- ./row -->
|
||||
@@ -144,26 +148,6 @@
|
||||
</div> <!-- ./container-fluid-->
|
||||
</div> <!-- ./page-wrapper-->
|
||||
</div> <!-- ./wrapper -->
|
||||
|
||||
<script>
|
||||
$(document).ready(
|
||||
function ()
|
||||
{
|
||||
//add click events to "formal geprüft" checkboxes
|
||||
<?php foreach($dokumente as $dokument): ?>
|
||||
|
||||
if ($("#prchkbx<?php echo $dokument->akte_id; ?>"))
|
||||
{
|
||||
$("#prchkbx<?php echo $dokument->akte_id; ?>").click(function ()
|
||||
{
|
||||
window.location = "../saveFormalGeprueft?akte_id=<?php echo $dokument->akte_id; ?>&formal_geprueft=" + this.checked + "&person_id=<?php echo $stammdaten->person_id ?>";
|
||||
});
|
||||
}
|
||||
<?php endforeach ?>
|
||||
|
||||
}
|
||||
);
|
||||
</script>
|
||||
</body>
|
||||
|
||||
<?php $this->load->view('templates/FHC-Footer'); ?>
|
||||
|
||||
@@ -27,7 +27,8 @@
|
||||
class="panel-collapse collapse<?php echo $infoonly ? '' : ' in' ?>">
|
||||
<div class="panel-body">
|
||||
<form method="post"
|
||||
action="../saveZgvPruefung/<?php echo $zgvpruefung->prestudent_id ?>">
|
||||
action="#" class="zgvform">
|
||||
<input type="hidden" name="prestudentid" value="<?php echo $zgvpruefung->prestudent_id ?>">
|
||||
<div class="row">
|
||||
<div class="col-lg-<?php echo $columns[0] ?>">
|
||||
<div class="form-group">
|
||||
@@ -96,13 +97,15 @@
|
||||
<div class="col-lg-<?php echo $columns[2] ?>">
|
||||
<div class="form-group">
|
||||
<label>ZGV Datum: </label>
|
||||
<?php if ($infoonly):
|
||||
echo date_format(date_create($zgvpruefung->zgvdatum), 'd.m.Y');
|
||||
<?php
|
||||
$zgvdatum = empty($zgvpruefung->zgvdatum) ? "" : date_format(date_create($zgvpruefung->zgvdatum), 'd.m.Y');
|
||||
if ($infoonly):
|
||||
echo $zgvdatum;
|
||||
else:
|
||||
?>
|
||||
<input type="text"
|
||||
class="dateinput form-control"
|
||||
value="<?php echo empty($zgvpruefung->zgvdatum) ? "" : date_format(date_create($zgvpruefung->zgvdatum), 'd.m.Y') ?>"
|
||||
value="<?php echo $zgvdatum ?>"
|
||||
name="zgvdatum" id="zgvdatum_<?php echo $zgvpruefung->prestudent_id ?>">
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
@@ -153,13 +156,15 @@
|
||||
<div class="col-lg-<?php echo $columns[2] ?>">
|
||||
<div class="form-group">
|
||||
<label>ZGV Master Datum: </label>
|
||||
<?php if ($infoonly):
|
||||
echo date_format(date_create($zgvpruefung->zgvmadatum), 'd.m.Y');
|
||||
<?php
|
||||
$zgvmadatum = empty($zgvpruefung->zgvmadatum) ? "" : date_format(date_create($zgvpruefung->zgvmadatum), 'd.m.Y');
|
||||
if ($infoonly):
|
||||
echo $zgvmadatum;
|
||||
else:
|
||||
?>
|
||||
<input type="text"
|
||||
class="dateinput form-control"
|
||||
value="<?php echo empty($zgvpruefung->zgvmadatum) ? "" : date_format(date_create($zgvpruefung->zgvmadatum), 'd.m.Y') ?>"
|
||||
value="<?php echo $zgvmadatum ?>"
|
||||
name="zgvmadatum">
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
@@ -189,7 +194,7 @@
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-lg-6 text-right">
|
||||
<button type="submit" class="btn btn-default">
|
||||
<button type="submit" class="btn btn-default saveZgv" id="zgvSpeichern_<?php echo $zgvpruefung->prestudent_id ?>">
|
||||
Speichern
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
margin-left: 3px;
|
||||
margin-right: 3px;
|
||||
padding: 10px;
|
||||
top: 10px;
|
||||
}
|
||||
|
||||
.filter-select-field-dnd-span:hover {
|
||||
@@ -56,107 +57,60 @@
|
||||
border-right: 2px solid #428bca;
|
||||
}
|
||||
|
||||
.select-filter-operation {
|
||||
display: inline;
|
||||
width: 130px;
|
||||
}
|
||||
|
||||
.select-filter-operation-value {
|
||||
display: inline;
|
||||
width: 400px;
|
||||
}
|
||||
|
||||
.select-filter-option {
|
||||
display: inline;
|
||||
width: 90px;
|
||||
}
|
||||
|
||||
#addField {
|
||||
display: inline;
|
||||
width: 400px;
|
||||
}
|
||||
|
||||
#addFilter {
|
||||
display: inline;
|
||||
width: 400px;
|
||||
}
|
||||
|
||||
#selectedFilters {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
#customFilterDescription {
|
||||
display: inline;
|
||||
width: 400px;
|
||||
}
|
||||
|
||||
</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);
|
||||
$("#removeFilterById").click(function() {
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/deleteCustomFilter'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
filter_id: $(this).attr('value')
|
||||
}
|
||||
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();
|
||||
});
|
||||
|
||||
$(".remove-field").each(function() {
|
||||
$(this).click(function() {
|
||||
$("#rmField").val($(this).attr('fieldToRemove'));
|
||||
$("#filterForm").submit();
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
alert("Filter successfully removed");
|
||||
}).fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
});
|
||||
|
||||
$("#addFilter").change(function() {
|
||||
$("#filterForm").submit();
|
||||
});
|
||||
|
||||
$(".remove-filter").each(function() {
|
||||
$(this).click(function() {
|
||||
$("#rmFilter").val($(this).attr('filterToRemove'));
|
||||
$("#filterForm").submit();
|
||||
});
|
||||
});
|
||||
|
||||
$(".select-filter-operation").change(function() {
|
||||
$("#filterForm").submit();
|
||||
});
|
||||
|
||||
$(".select-filter-operation-value").keydown(function(event) {
|
||||
if (event.which == 13)
|
||||
{
|
||||
$("#filterForm").submit();
|
||||
}
|
||||
});
|
||||
|
||||
$("#saveCustomFilterButton").click(function() {
|
||||
$("#saveCustomFilter").val(true);
|
||||
$("#filterForm").submit();
|
||||
});
|
||||
|
||||
$("#applyFilter").click(function() {
|
||||
$("#filterForm").submit();
|
||||
});
|
||||
|
||||
$("[data-toggle='collapse']").click(function() {
|
||||
|
||||
var filterOptionsStatus = sessionStorage.getItem('filter-options-status');
|
||||
@@ -182,49 +136,47 @@
|
||||
</script>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<form class="form-inline" id="filterForm" method="POST" action="<?php echo current_url(); ?>">
|
||||
|
||||
<?php FilterWidget::displayFilterName(); ?>
|
||||
<?php FilterWidget::displayFilterName(); ?>
|
||||
|
||||
<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>
|
||||
<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(); ?>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<?php FilterWidget::loadViewSelectFilters($metaData); ?>
|
||||
</div>
|
||||
<div>
|
||||
<?php FilterWidget::loadViewSelectFilters(); ?>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<?php FilterWidget::loadViewSaveFilter(); ?>
|
||||
</div>
|
||||
<div>
|
||||
<?php FilterWidget::loadViewSaveFilter(); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div id="datasetActionsTop"></div>
|
||||
<div id="datasetActionsTop"></div>
|
||||
|
||||
<div>
|
||||
<?php FilterWidget::loadViewTableDataset($dataset); ?>
|
||||
</div>
|
||||
<div>
|
||||
<?php FilterWidget::loadViewTableDataset(); ?>
|
||||
</div>
|
||||
|
||||
<div id="datasetActionsBottom"></div>
|
||||
<div id="datasetActionsBottom"></div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,39 @@
|
||||
<script language="Javascript" type="text/javascript">
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
$("#saveCustomFilterButton").click(function() {
|
||||
if ($("#customFilterDescription").val() != '')
|
||||
{
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/saveFilter'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
customFilterDescription: $("#customFilterDescription").val()
|
||||
}
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
alert("Filter successfully saved");
|
||||
}).fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
alert("You forgot something!");
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<div>
|
||||
Filter description: <input type="text" id="customFilterDescription" name="customFilterDescription" value="">
|
||||
</div>
|
||||
<div>
|
||||
<input type="button" id="saveCustomFilterButton" value="Save filter">
|
||||
<input type="hidden" id="saveCustomFilter" name="saveCustomFilter" value="false">
|
||||
<span>
|
||||
Filter description: <input type="text" id="customFilterDescription" value="">
|
||||
</span>
|
||||
|
||||
<span>
|
||||
<input type="button" id="saveCustomFilterButton" value="Save filter">
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -1,54 +1,239 @@
|
||||
<div id="filterSelectFieldsDnd" class="filter-select-fields-dnd-div">
|
||||
<?php
|
||||
$selectedFields = FilterWidget::getSelectedFields();
|
||||
$columnsAliases = FilterWidget::getColumnsAliases();
|
||||
<script language="Javascript" type="text/javascript">
|
||||
|
||||
for ($selectedFieldsCounter = 0; $selectedFieldsCounter < count($selectedFields); $selectedFieldsCounter++)
|
||||
{
|
||||
$selectedField = $selectedFields[$selectedFieldsCounter];
|
||||
$selectedFieldAlias = $selectedField;
|
||||
function dndSF()
|
||||
{
|
||||
$(".filter-select-field-dnd-span").draggable({
|
||||
containment: "parent",
|
||||
cursor: "move",
|
||||
opacity: 0.4,
|
||||
revert: "invalid",
|
||||
revertDuration: 200,
|
||||
drag: function(event, ui) {
|
||||
|
||||
if ($columnsAliases != null)
|
||||
{
|
||||
$indx = array_search($selectedField, $listFields);
|
||||
if ($indx !== false)
|
||||
var padding = 20;
|
||||
var draggedElement = $(this);
|
||||
|
||||
$(".filter-select-field-dnd-span").each(function(i, e) {
|
||||
|
||||
if ($(this).attr('id') != draggedElement.attr('id'))
|
||||
{
|
||||
$(this).removeClass("selection-after");
|
||||
$(this).removeClass("selection-before");
|
||||
|
||||
var elementCenter = $(this).offset().left + ((padding + $(this).width()) / 2);
|
||||
|
||||
if (event.pageX > ($(this).offset().left - (padding / 2))
|
||||
&& event.pageX < ($(this).offset().left + $(this).width() + (padding / 2)))
|
||||
{
|
||||
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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
$(".filter-select-field-dnd-span").droppable({
|
||||
accept: ".filter-select-field-dnd-span",
|
||||
drop: function(event, ui) {
|
||||
|
||||
var padding = 20;
|
||||
var elementCenter = $(this).offset().left + ((padding + $(this).width()) / 2);
|
||||
var draggedElement = ui.helper;
|
||||
|
||||
if (event.pageX > elementCenter)
|
||||
{
|
||||
$selectedFieldAlias = $columnsAliases[$indx];
|
||||
draggedElement.insertAfter($(this));
|
||||
}
|
||||
else if (event.pageX < elementCenter)
|
||||
{
|
||||
draggedElement.insertBefore($(this));
|
||||
}
|
||||
|
||||
$(this).removeClass("selection-before");
|
||||
$(this).removeClass("selection-after");
|
||||
|
||||
draggedElement.css({left: '0px', top: '10px'});
|
||||
|
||||
var arrayDndId = [];
|
||||
|
||||
$(".filter-select-field-dnd-span").each(function(i, e) {
|
||||
|
||||
arrayDndId[i] = $(this).attr('id').replace('dnd', '');
|
||||
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/sortSelectedFields'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
selectedFieldsLst: arrayDndId
|
||||
}
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
|
||||
resetSelectedFields();
|
||||
renderSelectedFields();
|
||||
|
||||
renderTableDataset();
|
||||
|
||||
}).fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function resetEventsSF()
|
||||
{
|
||||
$("#addField").off('change');
|
||||
$(".remove-field").off('click');
|
||||
}
|
||||
|
||||
function addEventsSF()
|
||||
{
|
||||
$("#addField").change(function(event) {
|
||||
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/addSelectedFields'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
fieldName: $(this).val()
|
||||
}
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
|
||||
resetSelectedFields();
|
||||
renderSelectedFields();
|
||||
|
||||
renderTableDataset();
|
||||
|
||||
}).fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$(".remove-field").click(function(event) {
|
||||
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/removeSelectedFields'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
fieldName: $(this).attr('fieldToRemove')
|
||||
}
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
|
||||
resetSelectedFields();
|
||||
renderSelectedFields();
|
||||
|
||||
renderTableDataset();
|
||||
|
||||
}).fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function renderSelectedFields()
|
||||
{
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/selectFields'); ?>",
|
||||
method: "GET",
|
||||
data: {},
|
||||
dataType: "json"
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
|
||||
resetEventsSF();
|
||||
|
||||
if (data != null)
|
||||
{
|
||||
var arrayFieldsToDisplay = [];
|
||||
|
||||
if (data.columnsAliases != null && $.isArray(data.columnsAliases))
|
||||
{
|
||||
arrayFieldsToDisplay = data.columnsAliases;
|
||||
}
|
||||
else if (data.selectedFields != null && $.isArray(data.selectedFields))
|
||||
{
|
||||
arrayFieldsToDisplay = data.selectedFields;
|
||||
}
|
||||
|
||||
for (var i = 0; i < arrayFieldsToDisplay.length; i++)
|
||||
{
|
||||
var fieldToDisplay = arrayFieldsToDisplay[i];
|
||||
var fieldName = data.selectedFields[i];
|
||||
|
||||
var strHtml = '<span id="dnd' + fieldName + '" class="filter-select-field-dnd-span">';
|
||||
|
||||
strHtml += '<span>';
|
||||
strHtml += fieldToDisplay;
|
||||
strHtml += '</span>';
|
||||
strHtml += '<span><a class="remove-field" fieldToRemove="' + fieldName + '"> X </a></span>';
|
||||
strHtml += '</span>';
|
||||
$("#filterSelectFieldsDnd").append(strHtml);
|
||||
}
|
||||
|
||||
var strDropDown = '<option value="">Select a field to add...</option>';
|
||||
$("#addField").append(strDropDown);
|
||||
|
||||
for (var i = 0; i < data.allSelectedFields.length; i++)
|
||||
{
|
||||
var fieldName = data.allSelectedFields[i];
|
||||
var fieldToDisplay = data.allSelectedFields[i];
|
||||
|
||||
if (data.allColumnsAliases != null && $.isArray(data.allColumnsAliases))
|
||||
{
|
||||
fieldToDisplay = data.allColumnsAliases[i];
|
||||
}
|
||||
|
||||
strDropDown = '<option value="' + fieldName + '">' + fieldToDisplay + '</option>';
|
||||
$("#addField").append(strDropDown);
|
||||
}
|
||||
}
|
||||
?>
|
||||
<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="">
|
||||
|
||||
dndSF();
|
||||
addEventsSF();
|
||||
})
|
||||
.fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
}
|
||||
|
||||
function resetSelectedFields()
|
||||
{
|
||||
$("#filterSelectFieldsDnd").html("");
|
||||
$("#addField").html("");
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
renderSelectedFields();
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<div id="filterSelectFieldsDnd" class="filter-select-fields-dnd-div"></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>
|
||||
<select id="addField"></select>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -1,69 +1,291 @@
|
||||
<div>
|
||||
<?php
|
||||
$selectedFilters = FilterWidget::getSelectedFilters();
|
||||
$columnsAliases = FilterWidget::getColumnsAliases();
|
||||
<script language="Javascript" type="text/javascript">
|
||||
|
||||
for ($filtersCounter = 0; $filtersCounter < count($selectedFilters); $filtersCounter++)
|
||||
function resetEventsSFilters()
|
||||
{
|
||||
$("#addFilter").off('change');
|
||||
}
|
||||
|
||||
function addEventsSFilters()
|
||||
{
|
||||
$("#addFilter").change(function(event) {
|
||||
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/addSelectedFilters'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
fieldName: $(this).val()
|
||||
}
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
|
||||
resetSelectedFilters();
|
||||
renderSelectedFilters();
|
||||
|
||||
renderTableDataset();
|
||||
|
||||
}).fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$(".remove-filter").click(function(event) {
|
||||
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/removeSelectedFilters'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
fieldName: $(this).attr('filterToRemove')
|
||||
}
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
|
||||
resetSelectedFilters();
|
||||
renderSelectedFilters();
|
||||
|
||||
renderTableDataset();
|
||||
|
||||
}).fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$(".select-filter-operation").change(function() {
|
||||
|
||||
if ($(this).val() == "set" || $(this).val() == "nset")
|
||||
{
|
||||
$(this).parent().parent().find(".select-filter-operation-value").addClass("hidden-control");
|
||||
$(this).parent().parent().find(".select-filter-option").addClass("hidden-control");
|
||||
|
||||
$(this).parent().parent().find(".select-filter-operation-value").prop('disabled', true);
|
||||
$(this).parent().parent().find(".select-filter-option").prop('disabled', true);
|
||||
}
|
||||
else
|
||||
{
|
||||
$(this).parent().parent().find(".select-filter-operation-value").removeClass("hidden-control");
|
||||
$(this).parent().parent().find(".select-filter-option").removeClass("hidden-control");
|
||||
|
||||
$(this).parent().parent().find(".select-filter-operation-value").prop('disabled', false);
|
||||
$(this).parent().parent().find(".select-filter-option").prop('disabled', false);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$("#applyFilter").click(function() {
|
||||
|
||||
var selectFilterName = [];
|
||||
var selectFilterOperation = [];
|
||||
var selectFilterOperationValue = [];
|
||||
var selectFilterOption = [];
|
||||
|
||||
$("#selectedFilters > div").each(function(i, e) {
|
||||
var tmpSelectFilterName = $(this).find('.hidden-field-name').val();
|
||||
var tmpSelectFilterOperation = $(this).find('.select-filter-operation').val();
|
||||
var tmpSelectFilterOperationValue = $(this).find('.select-filter-operation-value:enabled').val();
|
||||
var tmpSelectFilterOption = $(this).find('.select-filter-option:enabled').val();
|
||||
|
||||
selectFilterName.push(tmpSelectFilterName);
|
||||
selectFilterOperation.push(tmpSelectFilterOperation);
|
||||
selectFilterOperationValue.push(tmpSelectFilterOperationValue != null ? tmpSelectFilterOperationValue : "");
|
||||
selectFilterOption.push(tmpSelectFilterOption != null ? tmpSelectFilterOption : "");
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/applyFilter'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
filterNames: selectFilterName,
|
||||
filterOperations: selectFilterOperation,
|
||||
filterOperationValues: selectFilterOperationValue,
|
||||
filterOptions: selectFilterOption
|
||||
}
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
|
||||
// Success
|
||||
|
||||
}).fail(function(jqXHR, textStatus, errorThrown) {
|
||||
|
||||
// Error
|
||||
|
||||
}).always(function() {
|
||||
|
||||
location.reload();
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function renderSelectedFilterFields(metaData, activeFilters, activeFiltersOperation, activeFiltersOption)
|
||||
{
|
||||
var html = '';
|
||||
|
||||
if (metaData.type.toLowerCase().indexOf("int") >= 0)
|
||||
{
|
||||
$selectedFilter = $selectedFilters[$filtersCounter];
|
||||
|
||||
$md = FilterWidget::getFilterMetaData($selectedFilter, $metaData);
|
||||
$selectedFieldAlias = $md->name;
|
||||
|
||||
if ($columnsAliases != null)
|
||||
{
|
||||
$indx = array_search($selectedFilter, $listFields);
|
||||
if ($indx !== false)
|
||||
{
|
||||
$selectedFieldAlias = $columnsAliases[$indx];
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
<div>
|
||||
|
||||
<span>
|
||||
<?php echo $selectedFieldAlias; ?>
|
||||
</span>
|
||||
|
||||
<?php echo FilterWidget::renderFilterType($md); ?>
|
||||
|
||||
<span>
|
||||
<input type="button" value="X" class="remove-filter" filterToRemove="<?php echo $md->name; ?>">
|
||||
</span>
|
||||
|
||||
</div>
|
||||
<?php
|
||||
html = '<span>';
|
||||
html += ' <select class="select-filter-operation form-control">';
|
||||
html += ' <option value="equal" ' + (activeFiltersOperation == "equal" ? "selected" : "") + '>equal</option>';
|
||||
html += ' <option value="nequal" ' + (activeFiltersOperation == "nqual" ? "selected" : "") + '>not equal</option>';
|
||||
html += ' <option value="gt" ' + (activeFiltersOperation == "gt" ? "selected" : "") + '>greater than</option>';
|
||||
html += ' <option value="lt" ' + (activeFiltersOperation == "lt" ? "selected" : "") + '>less than</option>';
|
||||
html += ' </select>';
|
||||
html += '</span>';
|
||||
html += '<span>';
|
||||
html += ' <input type="number" value="' + activeFilters + '" class="select-filter-operation-value form-control">';
|
||||
html += '</span>';
|
||||
}
|
||||
?>
|
||||
<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++)
|
||||
if (metaData.type.toLowerCase().indexOf('varchar') >= 0)
|
||||
{
|
||||
html = '<span>';
|
||||
html += ' <select class="select-filter-operation form-control">';
|
||||
html += ' <option value="contains" ' + (activeFiltersOperation == "contains" ? "selected" : "") + '>contains</option>';
|
||||
html += ' <option value="ncontains" ' + (activeFiltersOperation == "ncontains" ? "selected" : "") + '>does not contain</option>';
|
||||
html += ' </select>';
|
||||
html += '</span>';
|
||||
html += '<span>';
|
||||
html += ' <input type="text" value="' + activeFilters + '" class="select-filter-operation-value form-control">';
|
||||
html += '</span>';
|
||||
}
|
||||
if (metaData.type.toLowerCase().indexOf('bool') >= 0)
|
||||
{
|
||||
html = '<span>';
|
||||
html += ' <select class="select-filter-operation form-control">';
|
||||
html += ' <option value="true" ' + (activeFiltersOperation == "true" ? "selected" : "") + '>is true</option>';
|
||||
html += ' <option value="false" ' + (activeFiltersOperation == "false" ? "selected" : "") + '>is false</option>';
|
||||
html += ' </select>';
|
||||
html += '</span>';
|
||||
html += '<span>';
|
||||
html += ' <input type="hidden" value="' + activeFilters + '" class="select-filter-operation-value form-control">';
|
||||
html += '</span>';
|
||||
}
|
||||
if (metaData.type.toLowerCase().indexOf('timestamp') >= 0 || metaData.type.toLowerCase().indexOf('date') >= 0)
|
||||
{
|
||||
var classOperation = 'select-filter-operation-value form-control';
|
||||
var classOption = 'select-filter-option form-control';
|
||||
var disabled = "";
|
||||
|
||||
if (activeFiltersOperation == "set" || activeFiltersOperation == "nset")
|
||||
{
|
||||
$field = $listFields[$listFieldsCounter];
|
||||
$listFieldAlias = $field;
|
||||
|
||||
if ($columnsAliases != null)
|
||||
{
|
||||
$listFieldAlias = $columnsAliases[$listFieldsCounter];
|
||||
}
|
||||
?>
|
||||
<option value="<?php echo $field; ?>"><?php echo $listFieldAlias; ?></option>
|
||||
<?php
|
||||
classOperation += ' hidden-control';
|
||||
classOption += ' hidden-control';
|
||||
disabled = "disabled";
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<span>
|
||||
<input id="applyFilter" name="applyFilter" type="button" value="Apply">
|
||||
</span>
|
||||
</div>
|
||||
html = '<span>';
|
||||
html += ' <select class="select-filter-operation form-control">';
|
||||
html += ' <option value="lt" ' + (activeFiltersOperation == "lt" ? "selected" : "") + '>less than</option>';
|
||||
html += ' <option value="gt" ' + (activeFiltersOperation == "gt" ? "selected" : "") + '>greater than</option>';
|
||||
html += ' <option value="set" ' + (activeFiltersOperation == "set" ? "selected" : "") + '>is set</option>';
|
||||
html += ' <option value="nset" ' + (activeFiltersOperation == "nset" ? "selected" : "") + '>is not set</option>';
|
||||
html += ' </select>';
|
||||
html += '</span>';
|
||||
html += '<span>';
|
||||
html += ' <input type="text" value="' + activeFilters + '" class="' + classOperation + '" ' + disabled + '>';
|
||||
html += '</span>';
|
||||
html += '<span>';
|
||||
html += ' <select class="' + classOption + '" ' + disabled + '>';
|
||||
html += ' <option value="days" ' + (activeFiltersOption == "days" ? "selected" : "") + '>Days</option>';
|
||||
html += ' <option value="months" ' + (activeFiltersOption == "months" ? "selected" : "") + '>Months</option>';
|
||||
html += ' </select>';
|
||||
html += '</span>';
|
||||
}
|
||||
|
||||
html += '<span>';
|
||||
html += ' <input type="hidden" value="' + metaData.name + '" class="hidden-field-name">';
|
||||
html += '</span>';
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
function renderSelectedFilters()
|
||||
{
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/selectFilters'); ?>",
|
||||
method: "GET",
|
||||
data: {},
|
||||
dataType: "json"
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
|
||||
resetEventsSFilters();
|
||||
|
||||
if (data != null)
|
||||
{
|
||||
var strDropDown = '<option value="">Select a filter to add...</option>';
|
||||
$("#addFilter").append(strDropDown);
|
||||
|
||||
for (var i = 0; i < data.allSelectedFields.length; i++)
|
||||
{
|
||||
var fieldName = data.allSelectedFields[i];
|
||||
var fieldToDisplay = data.allSelectedFields[i];
|
||||
|
||||
if (data.allColumnsAliases != null && $.isArray(data.allColumnsAliases))
|
||||
{
|
||||
fieldToDisplay = data.allColumnsAliases[i];
|
||||
}
|
||||
|
||||
strDropDown = '<option value="' + fieldName + '">' + fieldToDisplay + '</option>';
|
||||
$("#addFilter").append(strDropDown);
|
||||
}
|
||||
|
||||
for (var i = 0; i < data.selectedFilters.length; i++)
|
||||
{
|
||||
var selectedFilters = '<div>';
|
||||
|
||||
selectedFilters += '<span>';
|
||||
selectedFilters += data.selectedFiltersAliases[i];
|
||||
selectedFilters += '</span>';
|
||||
|
||||
selectedFilters += renderSelectedFilterFields(
|
||||
data.selectedFiltersMetaData[i],
|
||||
data.selectedFiltersActiveFilters[i],
|
||||
data.selectedFiltersActiveFiltersOperation[i],
|
||||
data.selectedFiltersActiveFiltersOption[i]
|
||||
);
|
||||
|
||||
selectedFilters += '<span>';
|
||||
selectedFilters += '<input type="button" value="X" class="remove-filter btn btn-default" filterToRemove="' + data.selectedFilters[i] + '">';
|
||||
selectedFilters += '</span>';
|
||||
|
||||
selectedFilters += '</div>';
|
||||
|
||||
$("#selectedFilters").append(selectedFilters);
|
||||
}
|
||||
}
|
||||
|
||||
addEventsSFilters();
|
||||
})
|
||||
.fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
}
|
||||
|
||||
function resetSelectedFilters()
|
||||
{
|
||||
$("#addFilter").html("");
|
||||
$("#selectedFilters").html("");
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
renderSelectedFilters();
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<div id="selectedFilters"></div>
|
||||
|
||||
<div>
|
||||
<span>
|
||||
Add filter:
|
||||
</span>
|
||||
|
||||
<span>
|
||||
<select id="addFilter"></select>
|
||||
</span>
|
||||
|
||||
<span>
|
||||
<input id="applyFilter" type="button" value="Apply">
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -1,104 +1,156 @@
|
||||
<?php
|
||||
$results = $dataset->retval;
|
||||
<script language="Javascript" type="text/javascript">
|
||||
|
||||
$selectedFields = FilterWidget::getSelectedFields();
|
||||
$additionalColumns = FilterWidget::getAdditionalColumns();
|
||||
$checkboxes = FilterWidget::getCheckboxes();
|
||||
$columnsAliases = FilterWidget::getColumnsAliases();
|
||||
?>
|
||||
function callTableSorter()
|
||||
{
|
||||
// Checks if the table contains data (rows)
|
||||
if ($('#filterTableDataset').find('tbody:empty').length == 0
|
||||
&& $('#filterTableDataset').find('tr:empty').length == 0
|
||||
&& $('#filterTableDataset').hasClass('table-condensed'))
|
||||
{
|
||||
$("#filterTableDataset").tablesorter({
|
||||
widgets: ["zebra", "filter"]
|
||||
});
|
||||
|
||||
var config = $('#filterTableDataset')[0].config;
|
||||
$.tablesorter.updateAll(config, true, null);
|
||||
}
|
||||
}
|
||||
|
||||
function renderTableDataset()
|
||||
{
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/tableDataset'); ?>",
|
||||
method: "GET",
|
||||
data: {},
|
||||
dataType: "json"
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
|
||||
resetTableDataset();
|
||||
|
||||
if (data != null)
|
||||
{
|
||||
if (data.checkboxes != null)
|
||||
{
|
||||
$("#filterTableDataset > thead > tr").append("<th title=\"Select\">Select</th>");
|
||||
}
|
||||
|
||||
var arrayFieldsToDisplay = [];
|
||||
|
||||
if (data.columnsAliases != null && $.isArray(data.columnsAliases) && data.columnsAliases.length > 0)
|
||||
{
|
||||
arrayFieldsToDisplay = data.columnsAliases;
|
||||
}
|
||||
else if (data.selectedFields != null && $.isArray(data.selectedFields))
|
||||
{
|
||||
arrayFieldsToDisplay = data.selectedFields;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------ */
|
||||
if (data.checkboxes != null && data.checkboxes != "")
|
||||
{
|
||||
$("#filterTableDataset > thead > tr").html("<th title=\"Select\">Select</th>");
|
||||
}
|
||||
|
||||
for (var i = 0; i < arrayFieldsToDisplay.length; i++)
|
||||
{
|
||||
var th = arrayFieldsToDisplay[i];
|
||||
|
||||
$("#filterTableDataset > thead > tr").append("<th title=\"" + th + "\">" + th + "</th>");
|
||||
}
|
||||
|
||||
if (data.additionalColumns != null && $.isArray(data.additionalColumns))
|
||||
{
|
||||
for (var i = 0; i < data.additionalColumns.length; i++)
|
||||
{
|
||||
var th = data.additionalColumns[i];
|
||||
|
||||
$("#filterTableDataset > thead > tr").append("<th title=\"" + th + "\">" + th + "</th>");
|
||||
}
|
||||
}
|
||||
/* ------------------------------------------------------------------------------------------------ */
|
||||
|
||||
if (arrayFieldsToDisplay.length > 0)
|
||||
{
|
||||
if (data.dataset != null && $.isArray(data.dataset))
|
||||
{
|
||||
for (var i = 0; i < data.dataset.length; i++)
|
||||
{
|
||||
var record = data.dataset[i];
|
||||
var strHtml = '<tr class="' + record.FILTER_CLASS_MARK_ROW + '">';
|
||||
|
||||
if (data.checkboxes != null && data.checkboxes != "")
|
||||
{
|
||||
strHtml += '<td>';
|
||||
strHtml += '<input type="checkbox" name="' + data.checkboxes + '[]" value="' + record[data.checkboxes] + '">';
|
||||
strHtml += '</td>';
|
||||
}
|
||||
|
||||
$.each(arrayFieldsToDisplay, function(i, fieldToDisplay) {
|
||||
|
||||
if (record.hasOwnProperty(data.selectedFields[i]))
|
||||
{
|
||||
strHtml += '<td>' + record[data.selectedFields[i]] + '</td>';
|
||||
}
|
||||
});
|
||||
|
||||
if (data.additionalColumns != null && $.isArray(data.additionalColumns))
|
||||
{
|
||||
$.each(data.additionalColumns, function(i, additionalColumn) {
|
||||
|
||||
if (record.hasOwnProperty(additionalColumn))
|
||||
{
|
||||
strHtml += '<td>' + record[additionalColumn] + '</td>';
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
strHtml += '</tr>';
|
||||
|
||||
$("#filterTableDataset > tbody").append(strHtml);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// console.log("No dataset!!!");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
console.log("No fields to display!!!");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
console.log("No data!!!");
|
||||
}
|
||||
|
||||
callTableSorter();
|
||||
|
||||
})
|
||||
.fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
}
|
||||
|
||||
function resetTableDataset()
|
||||
{
|
||||
$("#filterTableDataset > thead > tr").html("");
|
||||
$("#filterTableDataset > tbody").html("");
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
renderTableDataset();
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<div>
|
||||
<table class="tablesorter" id="tableDataset">
|
||||
<table class="tablesorter table-bordered table-responsive" id="filterTableDataset">
|
||||
<thead>
|
||||
<tr>
|
||||
<?php
|
||||
if ($checkboxes != null)
|
||||
{
|
||||
?>
|
||||
<th title="Select">Select</th>
|
||||
<?php
|
||||
}
|
||||
|
||||
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];
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
<th title="<?php echo $selectedField; ?>"><?php echo $selectedFieldAlias; ?></th>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
for ($additionalColumnsCounter = 0; $additionalColumnsCounter < count($additionalColumns); $additionalColumnsCounter++)
|
||||
{
|
||||
$additionalColumn = $additionalColumns[$additionalColumnsCounter];
|
||||
?>
|
||||
<th title="<?php echo $additionalColumn; ?>"><?php echo $additionalColumn; ?></th>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</tr>
|
||||
<tr></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
for ($resultsCounter = 0; $resultsCounter < count($results); $resultsCounter++)
|
||||
{
|
||||
$result = $results[$resultsCounter];
|
||||
?>
|
||||
<tr class="<?php echo FilterWidget::markRow($result); ?>">
|
||||
<?php
|
||||
if ($checkboxes != null)
|
||||
{
|
||||
?>
|
||||
<td>
|
||||
<input type="checkbox" name="<?php echo $checkboxes[0]; ?>[]" value="<?php echo $result->{$checkboxes[0]}; ?>">
|
||||
</td>
|
||||
<?php
|
||||
}
|
||||
|
||||
for ($selectedFieldsCounter = 0; $selectedFieldsCounter < count($selectedFields); $selectedFieldsCounter++)
|
||||
{
|
||||
$selectedField = $selectedFields[$selectedFieldsCounter];
|
||||
|
||||
if (array_key_exists($selectedField, $result))
|
||||
{
|
||||
$formattedResult = FilterWidget::formatRaw($selectedField, $result->{$selectedField}, $result);
|
||||
?>
|
||||
<td>
|
||||
<?php
|
||||
echo $formattedResult->{$selectedField};
|
||||
?>
|
||||
</td>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
for ($additionalColumnsCounter = 0; $additionalColumnsCounter < count($additionalColumns); $additionalColumnsCounter++)
|
||||
{
|
||||
$additionalColumn = $additionalColumns[$additionalColumnsCounter];
|
||||
$formattedResult = FilterWidget::formatRaw($additionalColumn, null, $result);
|
||||
?>
|
||||
<td>
|
||||
<?php
|
||||
echo $formattedResult->{$additionalColumn};
|
||||
?>
|
||||
</td>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@@ -31,6 +31,9 @@ class FilterWidget extends Widget
|
||||
|
||||
const SESSION_NAME = 'FILTER';
|
||||
|
||||
const ALL_SELECTED_FIELDS = 'allSelectedFields';
|
||||
const ALL_COLUMNS_ALIASES = 'allColumnsAliases';
|
||||
|
||||
const SELECTED_FIELDS = 'selectedFields';
|
||||
const SELECTED_FILTERS = 'selectedFilters';
|
||||
const ACTIVE_FILTERS = 'activeFilters';
|
||||
@@ -130,9 +133,6 @@ class FilterWidget extends Widget
|
||||
//
|
||||
$this->_setSessionFilterData();
|
||||
|
||||
//
|
||||
$this->_saveFilter();
|
||||
|
||||
//
|
||||
$this->FiltersModel->resetQuery();
|
||||
|
||||
@@ -142,8 +142,8 @@ class FilterWidget extends Widget
|
||||
//
|
||||
$this->listFields = $this->FiltersModel->getExecutedQueryListFields();
|
||||
|
||||
|
||||
//
|
||||
$selectedFields = array();
|
||||
$filterSessionArray = $this->session->userdata(self::SESSION_NAME);
|
||||
if (isset($filterSessionArray[self::SELECTED_FIELDS]))
|
||||
{
|
||||
@@ -154,7 +154,6 @@ class FilterWidget extends Widget
|
||||
if (count($selectedFields) == 0)
|
||||
{
|
||||
$filterSessionArray[self::SELECTED_FIELDS] = $this->listFields;
|
||||
$this->session->set_userdata(self::SESSION_NAME, $filterSessionArray);
|
||||
}
|
||||
|
||||
//
|
||||
@@ -163,21 +162,54 @@ class FilterWidget extends Widget
|
||||
show_error('Parameter columnsAliases does not have a number of items equal to those returned by the query');
|
||||
}
|
||||
|
||||
$filterSessionArray[self::COLUMNS_ALIASES] = $this->_getColumnAliasesFromPost();
|
||||
$filterSessionArray[self::CHECKBOXES] = $this->checkboxes;
|
||||
|
||||
if ($this->app != null)
|
||||
{
|
||||
$filterSessionArray[self::APP_PARAMETER] = $this->app;
|
||||
}
|
||||
|
||||
if ($this->datasetName != null)
|
||||
{
|
||||
$filterSessionArray[self::DATASET_NAME_PARAMETER] = $this->datasetName;
|
||||
}
|
||||
|
||||
$filterSessionArray[self::ALL_SELECTED_FIELDS] = $this->listFields;
|
||||
$filterSessionArray[self::ALL_COLUMNS_ALIASES] = $this->columnsAliases;
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
|
||||
$tmpDataset = null;
|
||||
if (hasData($this->dataset))
|
||||
{
|
||||
$tmpDataset = array();
|
||||
|
||||
for ($resultsCounter = 0; $resultsCounter < count($this->dataset->retval); $resultsCounter++)
|
||||
{
|
||||
$result = $this->dataset->retval[$resultsCounter];
|
||||
|
||||
$class = $this->_markRow($result);
|
||||
$formattedResult = $this->_formatRaw($result);
|
||||
$formattedResult->FILTER_CLASS_MARK_ROW = $class;
|
||||
$tmpDataset[] = $formattedResult;
|
||||
}
|
||||
}
|
||||
$filterSessionArray[self::DATASET_PARAMETER] = $tmpDataset;
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
|
||||
//
|
||||
$this->metaData = $this->FiltersModel->getExecutedQueryMetaData();
|
||||
|
||||
$filterSessionArray[self::METADATA_PARAMETER] = $this->metaData;
|
||||
|
||||
$this->session->set_userdata(self::SESSION_NAME, $filterSessionArray);
|
||||
|
||||
//
|
||||
$this->loadViewFilters();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public static function getSelectedFields()
|
||||
{
|
||||
return self::_getFromSession(self::SELECTED_FIELDS);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@@ -186,14 +218,6 @@ class FilterWidget extends Widget
|
||||
return self::_getFromSession(self::SELECTED_FILTERS);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public static function getAdditionalColumns()
|
||||
{
|
||||
return self::_getFromSession(self::ADDITIONAL_COLUMNS);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@@ -209,12 +233,7 @@ class FilterWidget extends Widget
|
||||
{
|
||||
if (self::$FilterWidgetInstance->hideHeader != true)
|
||||
{
|
||||
self::_loadView(
|
||||
self::WIDGET_URL_SELECT_FIELDS,
|
||||
array(
|
||||
self::LIST_FIELDS_PARAMETER => self::$FilterWidgetInstance->listFields
|
||||
)
|
||||
);
|
||||
self::_loadView(self::WIDGET_URL_SELECT_FIELDS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -225,13 +244,7 @@ class FilterWidget extends Widget
|
||||
{
|
||||
if (self::$FilterWidgetInstance->hideHeader != true)
|
||||
{
|
||||
self::_loadView(
|
||||
self::WIDGET_URL_SELECT_FILTERS,
|
||||
array(
|
||||
self::LIST_FIELDS_PARAMETER => self::$FilterWidgetInstance->listFields,
|
||||
self::METADATA_PARAMETER => self::$FilterWidgetInstance->metaData
|
||||
)
|
||||
);
|
||||
self::_loadView(self::WIDGET_URL_SELECT_FILTERS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -251,147 +264,32 @@ class FilterWidget extends Widget
|
||||
*/
|
||||
public static function loadViewTableDataset()
|
||||
{
|
||||
self::_loadView(
|
||||
self::WIDGET_URL_TABLE_DATASET,
|
||||
array(
|
||||
self::LIST_FIELDS_PARAMETER => self::$FilterWidgetInstance->listFields,
|
||||
self::DATASET_PARAMETER => self::$FilterWidgetInstance->dataset
|
||||
)
|
||||
);
|
||||
self::_loadView(self::WIDGET_URL_TABLE_DATASET);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public static function getFilterMetaData($filter, $metaData)
|
||||
private function _formatRaw($datasetRaw)
|
||||
{
|
||||
$md = null;
|
||||
$tmpDatasetRaw = clone $datasetRaw;
|
||||
|
||||
for ($metaDataCounter = 0; $metaDataCounter < count($metaData); $metaDataCounter++)
|
||||
foreach ($tmpDatasetRaw as $columnName => $columnValue)
|
||||
{
|
||||
if ($metaData[$metaDataCounter]->name == $filter)
|
||||
if (is_bool($columnValue))
|
||||
{
|
||||
$md = $metaData[$metaDataCounter];
|
||||
break;
|
||||
$tmpDatasetRaw->{$columnValue} = $columnValue === true ? 'true' : 'false';
|
||||
}
|
||||
elseif (DateTime::createFromFormat('Y-m-d G:i:s', $columnValue) !== false)
|
||||
{
|
||||
$tmpDatasetRaw->{$columnValue} = date(self::DEFAULT_DATE_FORMAT, strtotime($columnValue));
|
||||
}
|
||||
}
|
||||
|
||||
return $md;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public static function renderFilterType($filterMetaData)
|
||||
{
|
||||
$html = '';
|
||||
$activeFilterValue = self::_getActiveFilterValue($filterMetaData->name);
|
||||
$activeFilterOperationValue = self::_getActiveFilterOperationValue($filterMetaData->name);
|
||||
$activeFilterOptionValue = self::_getActiveFilterOptionValue($filterMetaData->name);
|
||||
|
||||
if ($filterMetaData->type == 'int4')
|
||||
if ($this->formatRaw != null)
|
||||
{
|
||||
$html = '
|
||||
<span>
|
||||
<select name="%s" class="select-filter-operation">
|
||||
<option value="'.self::OP_EQUAL.'" '.($activeFilterOperationValue == self::OP_EQUAL ? 'selected' : '').'>equal</option>
|
||||
<option value="'.self::OP_NOT_EQUAL.'" '.($activeFilterOperationValue == self::OP_NOT_EQUAL ? 'selected' : '').'>not equal</option>
|
||||
<option value="'.self::OP_GREATER_THAN.'" '.($activeFilterOperationValue == self::OP_GREATER_THAN ? 'selected' : '').'>greater than</option>
|
||||
<option value="'.self::OP_LESS_THAN.'" '.($activeFilterOperationValue == self::OP_LESS_THAN ? 'selected' : '').'>less than</option>
|
||||
</select>
|
||||
</span>
|
||||
<span>
|
||||
<input type="number" name="%s" value="%s" class="select-filter-operation-value">
|
||||
</span>
|
||||
';
|
||||
}
|
||||
elseif ($filterMetaData->type == 'varchar')
|
||||
{
|
||||
$html = '
|
||||
<span>
|
||||
<select name="%s" class="select-filter-operation">
|
||||
<option value="'.self::OP_CONTAINS.'" '.($activeFilterOperationValue == self::OP_CONTAINS ? 'selected' : '').'>contains</option>
|
||||
<option value="'.self::OP_NOT_CONTAINS.'" '.($activeFilterOperationValue == self::OP_NOT_CONTAINS ? 'selected' : '').'>does not contain</option>
|
||||
</select>
|
||||
</span>
|
||||
<span>
|
||||
<input type="text" name="%s" value="%s" class="select-filter-operation-value">
|
||||
</span>
|
||||
';
|
||||
}
|
||||
elseif ($filterMetaData->type == 'bool')
|
||||
{
|
||||
$html = '
|
||||
<span>
|
||||
<select name="%s" class="select-filter-operation">
|
||||
<option value="'.self::OP_IS_TRUE.'" '.($activeFilterOperationValue == self::OP_IS_TRUE ? 'selected' : '').'>is true</option>
|
||||
<option value="'.self::OP_IS_FALSE.'" '.($activeFilterOperationValue == self::OP_IS_FALSE ? 'selected' : '').'>is false</option>
|
||||
</select>
|
||||
</span>
|
||||
<span>
|
||||
<input type="hidden" name="%s" value="%s">
|
||||
</span>
|
||||
';
|
||||
}
|
||||
elseif ($filterMetaData->type == 'timestamp')
|
||||
{
|
||||
$classOperation = 'select-filter-operation-value';
|
||||
$classOption = 'select-filter-option';
|
||||
if ($activeFilterOperationValue == self::OP_SET)
|
||||
{
|
||||
$classOperation .= ' hidden-control';
|
||||
$classOption .= ' hidden-control';
|
||||
}
|
||||
|
||||
$html = '
|
||||
<span>
|
||||
<select name="%s" class="select-filter-operation">
|
||||
<option value="'.self::OP_LESS_THAN.'" '.($activeFilterOperationValue == self::OP_LESS_THAN ? 'selected' : '').'>less than</option>
|
||||
<option value="'.self::OP_GREATER_THAN.'" '.($activeFilterOperationValue == self::OP_GREATER_THAN ? 'selected' : '').'>greater than</option>
|
||||
<option value="'.self::OP_SET.'" '.($activeFilterOperationValue == self::OP_SET ? 'selected' : '').'>is set</option>
|
||||
<option value="'.self::OP_NOT_SET.'" '.($activeFilterOperationValue == self::OP_NOT_SET ? 'selected' : '').'>is not set</option>
|
||||
</select>
|
||||
</span>
|
||||
<span>
|
||||
<input type="text" name="%s" value="%s" class="'.$classOperation.'">
|
||||
</span>
|
||||
<select name="%s" class="'.$classOption.'">
|
||||
<option value="'.self::OPT_DAYS.'" '.($activeFilterOptionValue == self::OPT_DAYS ? 'selected' : '').'>Days</option>
|
||||
<option value="'.self::OPT_MONTHS.'" '.($activeFilterOptionValue == self::OPT_MONTHS ? 'selected' : '').'>Months</option>
|
||||
</select>
|
||||
';
|
||||
}
|
||||
|
||||
return sprintf($html, $filterMetaData->name.'-operation', $filterMetaData->name, $activeFilterValue, $filterMetaData->name.'-option');
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public static function formatRaw($fieldName, $fieldValue, $datasetRaw)
|
||||
{
|
||||
$tmpDatasetRaw = null;
|
||||
|
||||
if (is_object($datasetRaw))
|
||||
{
|
||||
$tmpDatasetRaw = clone $datasetRaw;
|
||||
$tmpMetaData = self::getFilterMetaData($fieldName, self::$FilterWidgetInstance->metaData);
|
||||
|
||||
if (is_bool($fieldValue))
|
||||
{
|
||||
$tmpDatasetRaw->{$fieldName} = $fieldValue === true ? 'true' : 'false';
|
||||
}
|
||||
elseif ($tmpMetaData != null && $tmpMetaData->type == 'timestamp')
|
||||
{
|
||||
$tmpDatasetRaw->{$fieldName} = date(self::DEFAULT_DATE_FORMAT, strtotime($fieldValue));
|
||||
}
|
||||
|
||||
$formatRaw = self::$FilterWidgetInstance->getFormatRaw();
|
||||
|
||||
if ($formatRaw != null)
|
||||
{
|
||||
$tmpDatasetRaw = $formatRaw($fieldName, $fieldValue, $tmpDatasetRaw);
|
||||
}
|
||||
$formatRaw = $this->formatRaw;
|
||||
$tmpDatasetRaw = $formatRaw($tmpDatasetRaw);
|
||||
}
|
||||
|
||||
return $tmpDatasetRaw;
|
||||
@@ -400,28 +298,18 @@ class FilterWidget extends Widget
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public static function markRow($datasetRaw)
|
||||
private function _markRow($datasetRaw)
|
||||
{
|
||||
$class = '';
|
||||
|
||||
if (is_object($datasetRaw))
|
||||
{
|
||||
$markRow = self::$FilterWidgetInstance->getMarkRow();
|
||||
if ($markRow != null)
|
||||
if ($this->markRow != null)
|
||||
{
|
||||
$markRow = $this->markRow;
|
||||
$class = $markRow($datasetRaw);
|
||||
}
|
||||
}
|
||||
|
||||
return $class;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public static function getCheckboxes()
|
||||
{
|
||||
return self::$FilterWidgetInstance->_getCheckboxes();
|
||||
return $class == null ? '' : $class;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -444,37 +332,7 @@ class FilterWidget extends Widget
|
||||
protected function loadViewFilters()
|
||||
{
|
||||
// Loads views
|
||||
$this->view(self::WIDGET_URL_FILTER,
|
||||
array(
|
||||
self::DATASET_PARAMETER => $this->dataset,
|
||||
self::METADATA_PARAMETER => $this->metaData,
|
||||
self::LIST_FIELDS_PARAMETER => $this->listFields
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
protected function getFormatRaw()
|
||||
{
|
||||
return $this->formatRaw;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
protected function getMarkRow()
|
||||
{
|
||||
return $this->markRow;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
protected function _getCheckboxes()
|
||||
{
|
||||
return $this->checkboxes;
|
||||
$this->view(self::WIDGET_URL_FILTER);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
@@ -614,6 +472,16 @@ class FilterWidget extends Widget
|
||||
$filterSessionArray[self::FILTER_NAME] = null;
|
||||
}
|
||||
|
||||
if (!isset($filterSessionArray[self::APP_PARAMETER]))
|
||||
{
|
||||
$filterSessionArray[self::APP_PARAMETER] = null;
|
||||
}
|
||||
|
||||
if (!isset($filterSessionArray[self::DATASET_NAME_PARAMETER]))
|
||||
{
|
||||
$filterSessionArray[self::DATASET_NAME_PARAMETER] = null;
|
||||
}
|
||||
|
||||
$this->session->set_userdata(self::SESSION_NAME, $filterSessionArray);
|
||||
}
|
||||
|
||||
@@ -700,9 +568,7 @@ class FilterWidget extends Widget
|
||||
$this->markRow = $args[self::MARK_ROW];
|
||||
}
|
||||
|
||||
if (isset($args[self::CHECKBOXES])
|
||||
&& is_array($args[self::CHECKBOXES])
|
||||
&& count($args[self::CHECKBOXES]) > 0)
|
||||
if (isset($args[self::CHECKBOXES]))
|
||||
{
|
||||
$this->checkboxes = $args[self::CHECKBOXES];
|
||||
}
|
||||
@@ -825,6 +691,7 @@ class FilterWidget extends Widget
|
||||
}
|
||||
|
||||
$this->filterName = $filterName;
|
||||
$this->app = $filter->retval[0]->app;
|
||||
|
||||
$filterSessionArray = array(
|
||||
self::SELECTED_FIELDS => $selectedFields,
|
||||
@@ -832,7 +699,9 @@ class FilterWidget extends Widget
|
||||
self::ACTIVE_FILTERS => $activeFilters,
|
||||
self::ACTIVE_FILTERS_OPERATION => $activeFiltersOperation,
|
||||
self::ACTIVE_FILTERS_OPTION => $activeFiltersOption,
|
||||
self::FILTER_NAME => $filterName
|
||||
self::FILTER_NAME => $filterName,
|
||||
self::APP_PARAMETER => $filter->retval[0]->app,
|
||||
self::DATASET_NAME_PARAMETER => $filter->retval[0]->dataset_name
|
||||
);
|
||||
|
||||
$this->session->set_userdata(self::SESSION_NAME, $filterSessionArray);
|
||||
@@ -845,7 +714,9 @@ class FilterWidget extends Widget
|
||||
self::ACTIVE_FILTERS => array(),
|
||||
self::ACTIVE_FILTERS_OPERATION => array(),
|
||||
self::ACTIVE_FILTERS_OPTION => array(),
|
||||
self::FILTER_NAME => null
|
||||
self::FILTER_NAME => null,
|
||||
self::APP_PARAMETER => null,
|
||||
self::DATASET_NAME_PARAMETER => null
|
||||
);
|
||||
|
||||
$this->session->set_userdata(self::SESSION_NAME, $filterSessionArray);
|
||||
@@ -963,23 +834,70 @@ class FilterWidget extends Widget
|
||||
$selectedFields = $filterSessionArray[self::SELECTED_FIELDS];
|
||||
}
|
||||
|
||||
if (is_array($_POST))
|
||||
{
|
||||
if (array_key_exists(self::CMD_ADD_FIELD, $_POST) && trim($_POST[self::CMD_ADD_FIELD]) != '')
|
||||
{
|
||||
if (!in_array($_POST[self::CMD_ADD_FIELD], $selectedFields))
|
||||
{
|
||||
$selectedFields[] = $_POST[self::CMD_ADD_FIELD];
|
||||
}
|
||||
}
|
||||
return $selectedFields;
|
||||
}
|
||||
|
||||
if (array_key_exists(self::CMD_REMOVE_FIELD, $_POST) && trim($_POST[self::CMD_REMOVE_FIELD]) != '')
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private function _getAppFromPost()
|
||||
{
|
||||
$app = $this->app;
|
||||
|
||||
$filterSessionArray = $this->session->userdata(self::SESSION_NAME);
|
||||
if (isset($filterSessionArray[self::APP_PARAMETER]))
|
||||
{
|
||||
$app = $filterSessionArray[self::APP_PARAMETER];
|
||||
}
|
||||
|
||||
return $app;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private function _getDatasetFromPost()
|
||||
{
|
||||
$datasetName = $this->datasetName;
|
||||
|
||||
$filterSessionArray = $this->session->userdata(self::SESSION_NAME);
|
||||
if (isset($filterSessionArray[self::DATASET_NAME_PARAMETER]))
|
||||
{
|
||||
$datasetName = $filterSessionArray[self::DATASET_NAME_PARAMETER];
|
||||
}
|
||||
|
||||
return $datasetName;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private function _getColumnAliasesFromPost()
|
||||
{
|
||||
$columnsAliases = $this->columnsAliases;
|
||||
$selectedFields = array();
|
||||
|
||||
$filterSessionArray = $this->session->userdata(self::SESSION_NAME);
|
||||
|
||||
if (isset($filterSessionArray[self::SELECTED_FIELDS]))
|
||||
{
|
||||
$selectedFields = $filterSessionArray[self::SELECTED_FIELDS];
|
||||
}
|
||||
|
||||
if (isset($this->listFields) && count($selectedFields) > 0 && is_array($this->columnsAliases) && count($this->columnsAliases) > 0)
|
||||
{
|
||||
$columnsAliases = array();
|
||||
|
||||
for ($i = 0; $i < count($selectedFields); $i++)
|
||||
{
|
||||
$selectedFields = $this->_removeElementFromArray($selectedFields, $_POST[self::CMD_REMOVE_FIELD]);
|
||||
if (($pos = array_search($selectedFields[$i], $this->listFields)) !== false)
|
||||
{
|
||||
$columnsAliases[] = $this->columnsAliases[$pos];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $selectedFields;
|
||||
return $columnsAliases;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -996,22 +914,6 @@ class FilterWidget extends Widget
|
||||
$selectedFilters = $filterSessionArray[self::SELECTED_FILTERS];
|
||||
}
|
||||
|
||||
if (is_array($_POST))
|
||||
{
|
||||
if (array_key_exists(self::CMD_ADD_FILTER, $_POST) && trim($_POST[self::CMD_ADD_FILTER]) != '')
|
||||
{
|
||||
if (!in_array($_POST[self::CMD_ADD_FILTER], $selectedFilters))
|
||||
{
|
||||
$selectedFilters[] = $_POST[self::CMD_ADD_FILTER];
|
||||
}
|
||||
}
|
||||
|
||||
if (array_key_exists(self::CMD_REMOVE_FILTER, $_POST) && trim($_POST[self::CMD_REMOVE_FILTER]) != '')
|
||||
{
|
||||
$selectedFilters = $this->_removeElementFromArray($selectedFilters, $_POST[self::CMD_REMOVE_FILTER]);
|
||||
}
|
||||
}
|
||||
|
||||
return $selectedFilters;
|
||||
}
|
||||
|
||||
@@ -1096,7 +998,9 @@ class FilterWidget extends Widget
|
||||
self::SELECTED_FIELDS => $this->_getSelectedFieldsFromPost(),
|
||||
self::SELECTED_FILTERS => $this->_getSelectedFiltersFromPost(),
|
||||
self::ADDITIONAL_COLUMNS => $this->additionalColumns,
|
||||
self::COLUMNS_ALIASES => $this->columnsAliases
|
||||
self::COLUMNS_ALIASES => $this->_getColumnAliasesFromPost(),
|
||||
self::APP_PARAMETER => $this->_getAppFromPost(),
|
||||
self::DATASET_NAME_PARAMETER => $this->_getDatasetFromPost()
|
||||
);
|
||||
|
||||
$filterSessionArray[self::ACTIVE_FILTERS] = array();
|
||||
@@ -1222,6 +1126,9 @@ class FilterWidget extends Widget
|
||||
case self::OP_NOT_SET:
|
||||
$condition = ' IS NULL';
|
||||
break;
|
||||
default:
|
||||
$condition = ' IS NOT NULL';
|
||||
break;
|
||||
}
|
||||
|
||||
$where .= $condition;
|
||||
@@ -1236,23 +1143,4 @@ class FilterWidget extends Widget
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private function _removeElementFromArray($array, $element)
|
||||
{
|
||||
$_removeElementFromArray = array();
|
||||
|
||||
for ($arrayCounter = 0; $arrayCounter < count($array); $arrayCounter++)
|
||||
{
|
||||
$arrayElement = $array[$arrayCounter];
|
||||
if ($arrayElement != $element)
|
||||
{
|
||||
$_removeElementFromArray[] = $arrayElement;
|
||||
}
|
||||
}
|
||||
|
||||
return $_removeElementFromArray;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ class NavigationMenuWidget extends Widget
|
||||
|
||||
echo '<li class="'.$expanded.'">';
|
||||
|
||||
if (isset($item['subscriptLink']) && isset($item['subscriptDescription']))
|
||||
if (isset($item['subscriptLinkId']) && isset($item['subscriptDescription']))
|
||||
{
|
||||
echo '<span>';
|
||||
}
|
||||
@@ -62,12 +62,12 @@ class NavigationMenuWidget extends Widget
|
||||
|
||||
echo '</a>';
|
||||
|
||||
if (isset($item['subscriptLink']) && isset($item['subscriptDescription']))
|
||||
if (isset($item['subscriptLinkId']) && isset($item['subscriptDescription']))
|
||||
{
|
||||
echo '<a class="menuSubscriptLink" href="'.$item['subscriptLink'].'">'.$item['subscriptDescription'].'</a>';
|
||||
echo '<a id="'.$item['subscriptLinkId'].'" class="menuSubscriptLink" value="'.$item['subscriptLinkValue'].'" href="#">'.$item['subscriptDescription'].'</a>';
|
||||
}
|
||||
|
||||
if (isset($item['subscriptLink']) && isset($item['subscriptDescription']))
|
||||
if (isset($item['subscriptLinkId']) && isset($item['subscriptDescription']))
|
||||
{
|
||||
echo '</span>';
|
||||
}
|
||||
|
||||
+57
-36
@@ -28,43 +28,62 @@ if(is_user_logged_in())
|
||||
$ampel = new ampel();
|
||||
$ampel->loadUserAmpel($user);
|
||||
$rot=0;
|
||||
$gelb=0;
|
||||
$gelb = 0;
|
||||
$gruen = 0;
|
||||
$verpflichtend = false;
|
||||
$cnt_verpflichtend = 0;
|
||||
$cnt_abgelaufen = 0;
|
||||
$cnt_notConf_notOverdue = 0; //counts mandatory, not confirmed && not overdued ampeln (for popup)
|
||||
|
||||
$datum = new datum();
|
||||
$now = $datum->mktime_fromdate(date('Y-m-d'));
|
||||
foreach($ampel->result as $row)
|
||||
{
|
||||
$ts_deadline = $datum->mktime_fromdate($row->deadline);
|
||||
$vlz = "-".$row->vorlaufzeit." day";
|
||||
$ts_vorlaufzeit = strtotime($vlz, $ts_deadline);
|
||||
$ts_now = $datum->mktime_fromdate(date('Y-m-d'));
|
||||
if($ts_deadline < $ts_now)
|
||||
{
|
||||
$rot++;
|
||||
if ($row->verpflichtend == 't')
|
||||
$verpflichtend = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if($ts_vorlaufzeit<=$ts_now && $ts_now<=$ts_deadline)
|
||||
{
|
||||
$gelb++;
|
||||
if ($row->verpflichtend == 't')
|
||||
$verpflichtend = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if($rot==0 && $gelb==0)
|
||||
echo '<a href="private/tools/ampelverwaltung.php" target="content" title="'.$p->t("tools/ampelsystem").'"><span style="color: #A5AFB6">'.$p->t("tools/ampelsystem").'</span></a> <span style="color: #A5AFB6">|</span> ';
|
||||
{
|
||||
$deadline =$datum->mktime_fromdate($row->deadline);
|
||||
$vorlaufzeit = $row->vorlaufzeit;
|
||||
$verfallszeit = $row->verfallszeit;
|
||||
$bestaetigt = $ampel->isBestaetigt($user, $row->ampel_id);
|
||||
$verpflichtend = $row->verpflichtend;
|
||||
$abgelaufen = false;
|
||||
|
||||
if($rot>0 || $gelb>0)
|
||||
{
|
||||
// Wenn es eine verpflichtende Ampel gibt, das Pupup im CIS anzeigen
|
||||
if ($verpflichtend == true)
|
||||
{
|
||||
$datum_liegt_vor_vorlaufzeit = false;
|
||||
$datum_liegt_nach_verfallszeit = false;
|
||||
|
||||
if (!is_null($vorlaufzeit))
|
||||
$datum_liegt_vor_vorlaufzeit = $now < strtotime('-' . $vorlaufzeit . ' day', $deadline);
|
||||
|
||||
if (!is_null($verfallszeit))
|
||||
$datum_liegt_nach_verfallszeit = $now > strtotime('+' . $verfallszeit . ' day', $deadline);
|
||||
|
||||
//count mandatory
|
||||
if($verpflichtend == 't')
|
||||
$cnt_verpflichtend++;
|
||||
|
||||
//count overdue
|
||||
if ($datum_liegt_nach_verfallszeit)
|
||||
$cnt_abgelaufen++;
|
||||
|
||||
//set status
|
||||
if ($bestaetigt)
|
||||
$gruen++;
|
||||
else if ($now >= $deadline && !$datum_liegt_nach_verfallszeit && !$bestaetigt)
|
||||
$rot++;
|
||||
else if (!$datum_liegt_nach_verfallszeit && !$datum_liegt_vor_vorlaufzeit)
|
||||
$gelb++;
|
||||
|
||||
//count mandatory ampeln that are not confirmed and not overdue (for popup)
|
||||
if ($verpflichtend == 't' && !$bestaetigt && !$datum_liegt_nach_verfallszeit && !$datum_liegt_vor_vorlaufzeit)
|
||||
$cnt_notConf_notOverdue++;
|
||||
}
|
||||
|
||||
|
||||
// Wenn es eine verpflichtende Ampel gibt, das Pupup im CIS anzeigen
|
||||
if ($cnt_notConf_notOverdue > 0)
|
||||
{
|
||||
echo ' <script>
|
||||
$(document).ready(function()
|
||||
{
|
||||
var html_content = \'<iframe src="'.APP_ROOT.'cis/private/tools/ampelverwaltung.php" name="ampel" frameborder="0" width="95%" height="95%"></iframe><button id="close_button" onclick="hide_ampel_div()">Close</button>\';
|
||||
var html_content = \'<iframe src="'.APP_ROOT.'cis/private/tools/ampelverwaltung.php?verpflichtend=true" name="ampel" frameborder="0" width="95%" height="95%"></iframe><button id="close_button" onclick="hide_ampel_div()">Close</button>\';
|
||||
$("#ampel_div").html(html_content);
|
||||
});
|
||||
</script>';
|
||||
@@ -101,15 +120,17 @@ if(is_user_logged_in())
|
||||
}
|
||||
</style>';
|
||||
}
|
||||
if($rot>0)
|
||||
|
||||
//show & color header ampel-link
|
||||
if($rot > 0)
|
||||
echo '<a href="private/tools/ampelverwaltung.php" target="content" title="'.$p->t("tools/ampelsystem").'"><span style="color: red;">'.$p->t("tools/ampelsystem").'</span></a> <span style="color: #A5AFB6">|</span> ';
|
||||
elseif($gelb>0)
|
||||
elseif($gelb > 0)
|
||||
echo '<a href="private/tools/ampelverwaltung.php" target="content" title="'.$p->t("tools/ampelsystem").'"><span style="color: orange;">'.$p->t("tools/ampelsystem").'</span></a> <span style="color: #A5AFB6">|</span> ';
|
||||
}
|
||||
}
|
||||
elseif($rot==0 || $rot <= $cnt_abgelaufen && $gelb==0)
|
||||
echo '<a href="private/tools/ampelverwaltung.php" target="content" title="'.$p->t("tools/ampelsystem").'"><span style="color: #A5AFB6">'.$p->t("tools/ampelsystem").'</span></a> <span style="color: #A5AFB6">|</span> ';
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "<script>window.setTimeout('loadampel()',5000);</script>";
|
||||
//echo microtime();
|
||||
echo "<script>window.setTimeout('loadampel()',1000);</script>";
|
||||
}
|
||||
?>
|
||||
@@ -237,7 +237,8 @@ if ($result = $db->db_query($qry)) {
|
||||
$row->foto_sperre = 'f';
|
||||
|
||||
//create foto (if not locked by student OR if fotolist is created by admin or assistenz)
|
||||
if ($row->foto_sperre == 'f' && $row->foto != '') {
|
||||
$foto_url = '';
|
||||
if ($row->foto_sperre == 'f' && $row->foto != '') {
|
||||
$foto_src = $row->foto;
|
||||
$foto_url = sys_get_temp_dir() . '/foto' . trim($row->matrikelnr) . '.jpg';
|
||||
$foto_url_arr[] = $foto_url;
|
||||
@@ -254,14 +255,14 @@ if ($result = $db->db_query($qry)) {
|
||||
//add foto to document
|
||||
$doc->addImage($foto_url, trim($row->matrikelnr) . '.jpg', 'image/jpg');
|
||||
}
|
||||
elseif ($row->foto == '')
|
||||
{
|
||||
$foto_url = '';
|
||||
}
|
||||
else
|
||||
{
|
||||
$foto_url = '';
|
||||
}
|
||||
// elseif ($row->foto == '')
|
||||
// {
|
||||
// $foto_url = '';
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// $foto_url = '';
|
||||
// }
|
||||
|
||||
//create studiengruppe
|
||||
$student_studiengruppe = strtoupper($row->typ.$row->kurzbz.'-'.$row->semester);
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
|
||||
* Cristina Hainberger <hainberg@technikum-wien.at>
|
||||
*/
|
||||
require_once('../../../config/cis.config.inc.php');
|
||||
require_once('../../../include/functions.inc.php');
|
||||
@@ -26,19 +27,23 @@ require_once('../../../include/benutzerfunktion.class.php');
|
||||
require_once('../../../include/organisationseinheit.class.php');
|
||||
require_once('../../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../../include/studiensemester.class.php');
|
||||
require_once('../../../include/person.class.php');
|
||||
|
||||
$user = get_uid();
|
||||
$sprache = getSprache();
|
||||
$p = new phrasen($sprache);
|
||||
|
||||
$show = (isset($_GET['show'])?$_GET['show']:'aktuell');
|
||||
$person = new person();
|
||||
$person->getPersonFromBenutzer($user);
|
||||
|
||||
|
||||
$show = (isset($_POST['show']) ? $_POST['show'] : 'aktuell'); //show: alle / aktuell
|
||||
$is_popup = (isset($_GET['verpflichtend']) && $_GET['verpflichtend'] == true) ? true : false;
|
||||
//Leiter OEs holen
|
||||
$benutzerfunktion = new benutzerfunktion();
|
||||
$benutzerfunktion->getBenutzerFunktionen('Leitung', '', '', $user);
|
||||
|
||||
$organisationseinheit = new organisationseinheit();
|
||||
|
||||
$oes=array();
|
||||
foreach ($benutzerfunktion->result as $row)
|
||||
{
|
||||
@@ -54,225 +59,431 @@ if($rechte->isBerechtigt('basis/ampeluebersicht'))
|
||||
$oes_berechtigung = $rechte->getOEkurzbz('basis/ampeluebersicht');
|
||||
$oes = array_merge($oes_berechtigung, $oes);
|
||||
}
|
||||
|
||||
array_unique($oes);
|
||||
|
||||
//actual studiensemester
|
||||
$studiensemester = new studiensemester();
|
||||
$ss_akt = $studiensemester->getakt();
|
||||
|
||||
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
||||
"http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" href="../../../skin/fhcomplete.css" type="text/css"/>
|
||||
<link rel="stylesheet" href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
|
||||
<link rel="stylesheet" href="../../../skin/tablesort.css" type="text/css"/>
|
||||
<link rel="stylesheet" href="../../../skin/jquery.css" type="text/css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../../../skin/jquery-ui-1.9.2.custom.min.css">
|
||||
<script type="text/javascript" src="../../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
|
||||
<script type="text/javascript" src="../../../include/js/jquery.ui.datepicker.translation.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/jquery/sizzle/sizzle.js"></script>
|
||||
<title>',$p->t('tools/ampelsystem'),'</title>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function()
|
||||
{
|
||||
$("#myTable").tablesorter(
|
||||
{
|
||||
sortList: [[0,1],[3,0]],
|
||||
widgets: [\'zebra\'],
|
||||
headers: {1:{sorter:false}}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>',$p->t('tools/ampelsystem'),'</h1>';
|
||||
|
||||
if(count($oes)!=0)
|
||||
echo '<p><a href="ampelleiteruebersicht.php">'.($p->t('tools/uebersichtLeitung')).'</a></p>';
|
||||
|
||||
echo '<p>'.$p->t('tools/dasAmpelsystemIstEinErinnerungsystem').'</p>';
|
||||
|
||||
if ($show == 'aktuell')
|
||||
echo '<p><a href="ampelverwaltung.php?show=alle">'.$p->t('tools/ampelAlleAnzeigen').'</a></p>';
|
||||
else
|
||||
echo '<p><a href="ampelverwaltung.php?show=aktuell">'.$p->t('tools/ampelNurAktuellesStudiensemester').'</a></p>';
|
||||
|
||||
$datum_obj = new datum();
|
||||
//semesterstart
|
||||
$studiensemester = new studiensemester($ss_akt);
|
||||
$semester_start = $studiensemester->start;
|
||||
|
||||
$type = isset($_GET['type'])?$_GET['type']:'';
|
||||
$ampel_id = isset($_GET['ampel_id'])?$_GET['ampel_id']:'';
|
||||
$message='';
|
||||
|
||||
|
||||
//ampel confirmation & relaod of header link
|
||||
if($type=='bestaetigen' && is_numeric($ampel_id))
|
||||
{
|
||||
$ampel = new ampel();
|
||||
$message='';
|
||||
if($ampel->load($ampel_id))
|
||||
{
|
||||
if($ampel->isZugeteilt($user, $ampel->benutzer_select))
|
||||
if($ampel->isZugeteilt($user, $ampel->benutzer_select))
|
||||
{
|
||||
if(!$ampel->isBestaetigt($user, $ampel_id))
|
||||
{
|
||||
if($ampel->bestaetigen($user, $ampel_id))
|
||||
if($ampel->bestaetigen($user, $ampel_id)) //confirm ampel
|
||||
{
|
||||
//$message = '<span class="ok">OK</span>';
|
||||
//Ampel Ansicht im Seiten-Header aktualisieren
|
||||
$message='<script type="text/javascript">window.parent.loadampel()</script>';
|
||||
echo '<script type="text/javascript">window.parent.loadampel();</script>';
|
||||
header('Refresh:0');
|
||||
exit;
|
||||
}
|
||||
else
|
||||
$message = '<span class="error">'.$ampel->errormsg.'</span>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$message = '<span class="error">'.$p->t('tools/ampelBereitsBestaetigt').'</span>';
|
||||
}
|
||||
}
|
||||
else
|
||||
$message = '<span class="error">'.$p->t('tools/nichtZugeteilt').'</span>';
|
||||
}
|
||||
else
|
||||
$message = '<span class="error">'.$p->t('tools/ampelNichtGefunden').'</span>';
|
||||
|
||||
if ($message != '')
|
||||
echo '<div class="alert alert-danger" role="alert">' . $message . '</div>';
|
||||
}
|
||||
|
||||
echo $message;
|
||||
|
||||
$ampel = new ampel();
|
||||
$ampel->loadUserAmpel($user, false, true);
|
||||
//get all user ampeln
|
||||
list(
|
||||
$user_ampel_arr,
|
||||
$cnt_ueberfaellig) = //counts overdue ampeln (not expired)
|
||||
getUserAmpelData($user);
|
||||
|
||||
echo '
|
||||
<table id="myTable" class="tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th>'.$p->t('tools/ampelBeschreibung').'</th>
|
||||
<th>'.$p->t('tools/ampelDeadline').'</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
';
|
||||
$beginn = new studiensemester($ss_akt);
|
||||
//sort ampeln
|
||||
$user_ampel_arr = sortUserAmpelData($user_ampel_arr);
|
||||
|
||||
foreach($ampel->result as $row)
|
||||
//filter ampeln for popup (if at least one mandatory, which is neither expired nor before vorlaufzeit)
|
||||
if ($is_popup)
|
||||
{
|
||||
//Nur Ampeln laden, die im aktuellen Studiensemester liegen
|
||||
if ($show == 'aktuell' && $row->deadline>=$beginn->start)
|
||||
list(
|
||||
$user_ampel_arr,
|
||||
$cnt_ueberfaellig_und_verpflichtend) = //counts mandatory, overdue (not expired), unconfirmed, not before vorlaufzeit
|
||||
getPopupUserAmpelData($user_ampel_arr);
|
||||
}
|
||||
|
||||
//filter ampeln of actual term (if radiobutton is set to aktuell)
|
||||
if ($show == 'aktuell')
|
||||
$user_ampel_arr = getActualUserAmpelData($user_ampel_arr, $semester_start);
|
||||
|
||||
|
||||
//***************************************** FUNCTIONS for Ampeln
|
||||
function getUserAmpelData($user)
|
||||
{
|
||||
$cnt_ueberfaellig = 0;
|
||||
|
||||
$ampel = new ampel();
|
||||
$ampel->loadUserAmpel($user, true);
|
||||
$user_ampel_arr = array();
|
||||
|
||||
$datum = new datum();
|
||||
$now = $datum->mktime_fromdate(date('Y-m-d'));
|
||||
|
||||
foreach($ampel->result as $row)
|
||||
{
|
||||
$ts_deadline = $datum_obj->mktime_fromdate($row->deadline);
|
||||
$vlz = "-".$row->vorlaufzeit." day";
|
||||
$ts_vorlaufzeit = strtotime($vlz, $ts_deadline);
|
||||
$ts_now = $datum_obj->mktime_fromdate(date('Y-m-d'));
|
||||
$deadline = $datum->mktime_fromdate($row->deadline);
|
||||
$vorlaufzeit = $row->vorlaufzeit;
|
||||
$verfallszeit = $row->verfallszeit;
|
||||
$bestaetigt = $ampel->isBestaetigt($user, $row->ampel_id);
|
||||
$verpflichtend = $row->verpflichtend; // 't'/'f'
|
||||
|
||||
$datum_liegt_vor_vorlaufzeit = false;
|
||||
$datum_liegt_nach_verfallszeit = false;
|
||||
|
||||
if (!is_null($vorlaufzeit))
|
||||
$datum_liegt_vor_vorlaufzeit = $now < strtotime('-' . $vorlaufzeit . ' day', $deadline);
|
||||
|
||||
if (!is_null($verfallszeit))
|
||||
$datum_liegt_nach_verfallszeit = $now > strtotime('+' . $verfallszeit . ' day', $deadline);
|
||||
|
||||
if($ts_vorlaufzeit<=$ts_now && $ts_now<=$ts_deadline)
|
||||
$ampelstatus='gelb';
|
||||
elseif($ts_now>$ts_deadline)
|
||||
$ampelstatus='rot';
|
||||
elseif($ts_now<$ts_deadline && $ts_vorlaufzeit>=$ts_now)
|
||||
$ampelstatus='gruen';
|
||||
//default
|
||||
$show_ampel = true; //true while actual date is not before vorlaufzeit
|
||||
$abgelaufen = false; //false while actual date is not after verfallszeit
|
||||
$active = true; //true while not confirmed or expired
|
||||
$status = 'gelb'; //yellow while not overdue (red) or confirmed (green)
|
||||
$status_ampel = ''; //ampel image
|
||||
|
||||
if ($bestaetigt)
|
||||
$status = 'gruen';
|
||||
|
||||
if($bestaetigt = $ampel->isBestaetigt($user,$row->ampel_id))
|
||||
$ampelstatus='';
|
||||
|
||||
echo '<tr>';
|
||||
echo '<td style="text-align: center; vertical-align: middle">';
|
||||
switch($ampelstatus)
|
||||
if ($datum_liegt_vor_vorlaufzeit)
|
||||
$show_ampel = false;
|
||||
|
||||
|
||||
if ($datum_liegt_nach_verfallszeit)
|
||||
$abgelaufen = true;
|
||||
|
||||
|
||||
if ($now >= $deadline && !$bestaetigt)
|
||||
{
|
||||
if (!$abgelaufen)
|
||||
$cnt_ueberfaellig++;
|
||||
$status = 'rot';
|
||||
}
|
||||
|
||||
if ($bestaetigt || $abgelaufen)
|
||||
$active = false;
|
||||
|
||||
//assign png-image to ampelstatus
|
||||
switch($status)
|
||||
{
|
||||
case 'rot':
|
||||
$status= '<img name="C" src="../../../skin/images/ampel_rot.png" >';
|
||||
$status_ampel= '<img name="C" src="../../../skin/images/ampel_rot.png" >';
|
||||
break;
|
||||
case 'gelb':
|
||||
$status= '<img name="B" src="../../../skin/images/ampel_gelb.png" >';
|
||||
$status_ampel= '<img name="B" src="../../../skin/images/ampel_gelb.png" >';
|
||||
break;
|
||||
case 'gruen':
|
||||
$status= '<img name="A" src="../../../skin/images/ampel_gruen.png" >';
|
||||
$status_ampel= '<img name="A" src="../../../skin/images/ampel_gruen.png" >';
|
||||
break;
|
||||
default:
|
||||
$status= '<img name="A" src="../../../skin/images/ampel_gruen.png" >';
|
||||
$status_ampel= '<img name="A" src="../../../skin/images/ampel_gruen.png" >';
|
||||
break;
|
||||
}
|
||||
echo $status;
|
||||
|
||||
echo '<td align="center">';
|
||||
if(!$bestaetigt)
|
||||
echo '<form method="POST" action="'.$_SERVER['PHP_SELF'].'?ampel_id='.$row->ampel_id.'&type=bestaetigen"><button name="type" type="submit">'.($row->buttontext[$sprache]!=''?$row->buttontext[$sprache]:$p->t('tools/ampelErledigt')).'</button></form>';
|
||||
else
|
||||
echo '<button disabled="disabled" name="type" type="submit">'.($row->buttontext[$sprache]!=''?$row->buttontext[$sprache]:$p->t('tools/ampelErledigt')).'</button>';
|
||||
echo '</td>';
|
||||
|
||||
echo '</td>';
|
||||
$beschreibung = $row->beschreibung[$sprache];
|
||||
if($beschreibung=='' && isset($row->beschreibung[DEFAULT_LANGUAGE]))
|
||||
$beschreibung = $row->beschreibung[DEFAULT_LANGUAGE];
|
||||
echo '<td '.(!$bestaetigt && $row->verpflichtend=='t'?'style="background-color: #EF8A88"':'').'>'.$beschreibung.'</td>';
|
||||
echo '<td>'.$datum_obj->formatDatum($row->deadline,'d.m.Y').'</td>';
|
||||
|
||||
// echo "<td>".date('d.m.Y',$ts_now)."</td>";
|
||||
// echo "<td align=\"center\">".date('d.m.Y',$ts_vorlaufzeit)."</td>";
|
||||
// echo "<td>".date('d.m.Y',$ts_deadline)."</td>";
|
||||
echo '</tr>';
|
||||
$user_ampel_arr[] = array(
|
||||
'ampel_id' => $row->ampel_id,
|
||||
'kurzbz' => $row->kurzbz,
|
||||
'show_ampel' => $show_ampel,
|
||||
'status' => $status,
|
||||
'status_ampel' => $status_ampel,
|
||||
'verpflichtend' => $verpflichtend,
|
||||
'bestaetigt' => $bestaetigt,
|
||||
'deadline' => $row->deadline,
|
||||
'vorlaufzeit' => $row->vorlaufzeit,
|
||||
'verfallszeit' => $row->verfallszeit,
|
||||
'beschreibung' => $row->beschreibung,
|
||||
'abgelaufen' => $abgelaufen,
|
||||
'active' => $active);
|
||||
}
|
||||
elseif ($show == 'alle')
|
||||
{
|
||||
$ts_deadline = $datum_obj->mktime_fromdate($row->deadline);
|
||||
$vlz = "-".$row->vorlaufzeit." day";
|
||||
$ts_vorlaufzeit = strtotime($vlz, $ts_deadline);
|
||||
$ts_now = $datum_obj->mktime_fromdate(date('Y-m-d'));
|
||||
|
||||
if($ts_vorlaufzeit<=$ts_now && $ts_now<=$ts_deadline)
|
||||
$ampelstatus='gelb';
|
||||
elseif($ts_now>$ts_deadline)
|
||||
$ampelstatus='rot';
|
||||
elseif($ts_now<$ts_deadline && $ts_vorlaufzeit>=$ts_now)
|
||||
$ampelstatus='gruen';
|
||||
|
||||
if($bestaetigt = $ampel->isBestaetigt($user,$row->ampel_id))
|
||||
$ampelstatus='';
|
||||
|
||||
echo '<tr>';
|
||||
echo '<td style="text-align: center; vertical-align: middle">';
|
||||
switch($ampelstatus)
|
||||
{
|
||||
case 'rot':
|
||||
$status= '<img name="C" src="../../../skin/images/ampel_rot.png" >';
|
||||
break;
|
||||
case 'gelb':
|
||||
$status= '<img name="B" src="../../../skin/images/ampel_gelb.png" >';
|
||||
break;
|
||||
case 'gruen':
|
||||
$status= '<img name="A" src="../../../skin/images/ampel_gruen.png" >';
|
||||
break;
|
||||
default:
|
||||
$status= '<img name="A" src="../../../skin/images/ampel_gruen.png" >';
|
||||
break;
|
||||
}
|
||||
echo $status;
|
||||
|
||||
echo '<td align="center">';
|
||||
if(!$bestaetigt)
|
||||
echo '<form method="POST" action="'.$_SERVER['PHP_SELF'].'?ampel_id='.$row->ampel_id.'&type=bestaetigen"><button name="type" type="submit">'.($row->buttontext[$sprache]!=''?$row->buttontext[$sprache]:$p->t('tools/ampelErledigt')).'</button></form>';
|
||||
else
|
||||
echo '<button disabled="disabled" name="type" type="submit">'.($row->buttontext[$sprache]!=''?$row->buttontext[$sprache]:$p->t('tools/ampelErledigt')).'</button>';
|
||||
echo '</td>';
|
||||
|
||||
echo '</td>';
|
||||
$beschreibung = $row->beschreibung[$sprache];
|
||||
if($beschreibung=='' && isset($row->beschreibung[DEFAULT_LANGUAGE]))
|
||||
$beschreibung = $row->beschreibung[DEFAULT_LANGUAGE];
|
||||
echo '<td '.(!$bestaetigt && $row->verpflichtend=='t'?'style="background-color: #EF8A88"':'').'>'.$beschreibung.'</td>';
|
||||
echo '<td>'.$datum_obj->formatDatum($row->deadline,'d.m.Y').'</td>';
|
||||
|
||||
// echo "<td>".date('d.m.Y',$ts_now)."</td>";
|
||||
// echo "<td align=\"center\">".date('d.m.Y',$ts_vorlaufzeit)."</td>";
|
||||
// echo "<td>".date('d.m.Y',$ts_deadline)."</td>";
|
||||
echo '</tr>';
|
||||
}
|
||||
return array($user_ampel_arr, $cnt_ueberfaellig);
|
||||
}
|
||||
echo '</tbody></table>';
|
||||
function sortUserAmpelData($user_ampel_arr)
|
||||
{
|
||||
//first: sort deadline
|
||||
foreach ($user_ampel_arr as $key => $val)
|
||||
$deadline[$key] = $val['deadline'];
|
||||
|
||||
array_multisort($deadline, SORT_DESC, $user_ampel_arr);
|
||||
|
||||
//second: sort inactive after active
|
||||
$active_ampel_arr = array();
|
||||
$inactive_ampel_arr = array();
|
||||
foreach ($user_ampel_arr as $user_ampel)
|
||||
{
|
||||
if ($user_ampel['active'])
|
||||
$active_ampel_arr[] = $user_ampel;
|
||||
else
|
||||
$inactive_ampel_arr[] = $user_ampel;
|
||||
}
|
||||
return $user_ampel_arr = array_merge($active_ampel_arr, $inactive_ampel_arr);
|
||||
}
|
||||
function getPopupUserAmpelData($user_ampel_arr)
|
||||
{
|
||||
$arr = array();
|
||||
$cnt_ueberfaellig_und_verpflichtend = 0;
|
||||
foreach ($user_ampel_arr as $user_ampel)
|
||||
{
|
||||
if ($user_ampel['verpflichtend'] == 't' && !$user_ampel['bestaetigt'] && !$user_ampel['abgelaufen'] && $user_ampel['show_ampel'])
|
||||
{
|
||||
$arr[] = $user_ampel;
|
||||
|
||||
if ($user_ampel['status'] == 'rot')
|
||||
$cnt_ueberfaellig_und_verpflichtend++;
|
||||
}
|
||||
}
|
||||
return array ($arr, $cnt_ueberfaellig_und_verpflichtend);
|
||||
}
|
||||
function getActualUserAmpelData($user_ampel_arr, $semester_start)
|
||||
{
|
||||
$arr = array();
|
||||
foreach ($user_ampel_arr as $user_ampel)
|
||||
{
|
||||
if ($user_ampel['deadline'] >= $semester_start)
|
||||
$arr[] = $user_ampel;
|
||||
}
|
||||
return $arr;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" href="../../../skin/fhcomplete.css" type="text/css"/>
|
||||
<link rel="stylesheet" href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
|
||||
<link rel="stylesheet" href="../../../skin/jquery.css" type="text/css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../../../vendor/twbs/bootstrap/dist/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="../../../skin/jquery-ui-1.9.2.custom.min.css">
|
||||
<script type="text/javascript" src="../../../vendor/components/jquery/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/twbs/bootstrap/dist/js/bootstrap.min.js"></script>
|
||||
<title><?php echo $p->t('tools/ampelsystem') ?></title>
|
||||
|
||||
<!--style for sancho typewriting effect-->
|
||||
<style>
|
||||
|
||||
.cursor:after {
|
||||
opacity: 0;
|
||||
animation: cursor 1s infinite;
|
||||
}
|
||||
|
||||
@keyframes cursor {
|
||||
0% {
|
||||
opacity: 0;
|
||||
}
|
||||
40% {
|
||||
opacity: 0;
|
||||
}
|
||||
50% {
|
||||
opacity: 1;
|
||||
}
|
||||
90% {
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<!--script for sancho typewriting effect-->
|
||||
<script>
|
||||
function randomIntFromInterval(min,max)
|
||||
{
|
||||
return Math.floor(Math.random()*(max-min+1)+min);
|
||||
}
|
||||
|
||||
function typeWrite(span){
|
||||
$('#'+span).addClass('cursor')
|
||||
var text = $('#'+span).text();
|
||||
var randInt = 0
|
||||
for (var i = 0; i < text.length; i++) {
|
||||
randInt += parseInt(randomIntFromInterval(20,30));
|
||||
var typing = setTimeout(function(y){
|
||||
$('#'+span).append(text.charAt(y));
|
||||
},randInt, i);
|
||||
};
|
||||
setTimeout(function(){
|
||||
$('#'+span).removeClass('cursor');
|
||||
},randInt+4500);
|
||||
}
|
||||
|
||||
$(document).ready(function(){
|
||||
typeWrite('sancho_ampel_text');
|
||||
});
|
||||
|
||||
</script>
|
||||
</head>
|
||||
|
||||
|
||||
<body style="font-family: Arial, Helvetica, sans-serif; font-size: 13px;">
|
||||
|
||||
<?php
|
||||
//title in CIS
|
||||
if (!$is_popup)
|
||||
echo '<h2>' . $p->t('tools/ampelsystem') . '</h2>';
|
||||
|
||||
//title in popup for mandatory ampeln
|
||||
if ($is_popup)
|
||||
echo '<p><p><h3>' . $p->t('tools/ampelPopupTitel'). '</h3><p><br></p>';
|
||||
?>
|
||||
|
||||
<!--***************************************** PANEL-GROUP -->
|
||||
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true" style="width: 1000px;">
|
||||
|
||||
<!--***************************************** radiobuttons actual term / all -->
|
||||
<?php
|
||||
if (!$is_popup)
|
||||
{
|
||||
?>
|
||||
<form method="POST" action="">
|
||||
<?php echo $p->t('tools/ampelAnzeigeFuer') ?>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="show" value="aktuell" <?php if ($show == 'aktuell') echo 'checked'; ?> onclick="submit()"> <?php echo $p->t('tools/ampelNurAktuellesStudiensemester') ?>
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="show" value="alle" <?php if ($show == 'alle') echo 'checked'; ?> onclick="submit()"> <?php echo $p->t('tools/ampelAlleAnzeigen') ?>
|
||||
</label>
|
||||
</form>
|
||||
<p><br><br></p>
|
||||
<?php
|
||||
} //end if
|
||||
|
||||
|
||||
//***************************************** AROUSE SANCHO for mandatory ampeln
|
||||
if ($is_popup)
|
||||
{
|
||||
//sancho message if mandatory ampeln exist
|
||||
if (count($user_ampel_arr) == 1)
|
||||
$ovdue_txt = 'ich habe 1 Nachricht entdeckt, die verpflichtend zu bestätigen ist.';
|
||||
else if (count($user_ampel_arr) > 1)
|
||||
$ovdue_txt = 'ich habe ' . count($user_ampel_arr) . ' Nachrichten entdeckt, die verpflichtend zu bestätigen sind.';
|
||||
|
||||
if (count($user_ampel_arr) > 0)
|
||||
{
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-xs-2">
|
||||
<img src="../../../skin/images/sancho_round_right_red.png" alt="sancho_ampel_ueberfaellig" class="img-circle" style="width: 120px;">
|
||||
</div>
|
||||
<div class="col-xs-8" style="color: red; font-weight: bold; font-family: Courier New, Courier, monospace;">
|
||||
<br><br><span id="sancho_ampel_text"><noscript>Hallo ' . $person->vorname . ', ' . $ovdue_txt . ' ' . $p->t('tools/ampelBitteBestaetigen'). '</noscript></span>
|
||||
</div>
|
||||
</div>
|
||||
<p><br><br></p>';
|
||||
}
|
||||
}
|
||||
//***************************************** COLLAPSED PANELS WITH AMPELN
|
||||
|
||||
$cnt = 1; //counter to set iterative id's
|
||||
$cnt_inactive = 1; //counter to set only one heading line for inactive ampeln
|
||||
|
||||
//fill panel with ampeln
|
||||
foreach ($user_ampel_arr as $user_ampel)
|
||||
{
|
||||
//use only ampeln that are not overdue
|
||||
if ($user_ampel['show_ampel'] == true)
|
||||
{
|
||||
//heading line for inactive ampeln
|
||||
if ($user_ampel['active'] == false && $cnt_inactive == 1)
|
||||
{
|
||||
echo '
|
||||
<div class="panel">
|
||||
<div class="row" style="margin-bottom: 15px; padding-left: 15px;">
|
||||
<div class="panel-heading" style="background-color: transparent" role="tab" id="heading">
|
||||
<h3>' . $p->t('tools/ampelAbgelaufenTitel'). '</h3>
|
||||
<small>' . $p->t('tools/ampelAbgelaufenTxt'). '</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>';
|
||||
$cnt_inactive++;
|
||||
}
|
||||
?>
|
||||
<div class="panel">
|
||||
<div class="row" style="margin-bottom: 15px">
|
||||
<div class="panel-heading <?php if ($user_ampel['abgelaufen'] || $user_ampel['bestaetigt']) echo 'text-muted' ?>" style="background-color: transparent" role="tab" id="heading<?php echo $cnt ?>">
|
||||
<div class="col-xs-4">
|
||||
<h4 style="text-decoration: none" class="panel-title">
|
||||
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion"
|
||||
href="#collapse<?php echo $cnt ?>" aria-expanded="false" aria-controls="collapse<?php echo $cnt ?>">
|
||||
<?php echo $user_ampel['kurzbz'] ?>
|
||||
</a>
|
||||
</h4>
|
||||
<small <?php if ($user_ampel['status'] == 'rot' && !$user_ampel['abgelaufen']) echo 'style="color: red; font-weight : bold;"'?>><?php echo $p->t('global/faelligAm') . ' '; echo date('d.m.Y', strtotime($user_ampel['deadline'])) ?></small>
|
||||
</div>
|
||||
<div class="col-xs-2">
|
||||
<?php echo $user_ampel['status_ampel'] ?>
|
||||
</div>
|
||||
<div class="col-xs-2"><small>
|
||||
<?php
|
||||
if ($user_ampel['bestaetigt']) echo 'bestätigt';
|
||||
if ($user_ampel['abgelaufen'])
|
||||
{
|
||||
if ($user_ampel['bestaetigt'])
|
||||
echo " &<br>";
|
||||
else
|
||||
echo "nicht bestätigt &<br>";
|
||||
echo 'abgelaufen';
|
||||
}
|
||||
?></small>
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<form method="POST" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) . '?ampel_id='. urlencode($user_ampel['ampel_id']) . '&type=bestaetigen'; ?>">
|
||||
<button name="type" type="submit" class="btn btn-default pull-right"
|
||||
<?php if ($user_ampel['abgelaufen'] || $user_ampel['bestaetigt']) echo 'disabled data-toggle="tooltip" data-placement="top" title="' . $p->t('tools/ampelBestaetigtAbgelaufen'). '"'?>><?php echo $p->t('global/bestaetigen') ?>
|
||||
</button>
|
||||
<button type="button" class="btn btn-default pull-right collapsed" style="margin-right: 10px;" data-toggle="collapse" data-parent="#accordion"
|
||||
href="#collapse<?php echo $cnt ?>" aria-expanded="false" aria-controls="collapse<?php echo $cnt ?>"><?php echo $p->t('global/lesen') ?></button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="collapse<?php echo $cnt ?>" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading<?php echo $cnt ?>">
|
||||
<div class="panel-body" style="font-size: 12px;">
|
||||
<?php echo $user_ampel['beschreibung'][$sprache]?>
|
||||
<p><br></p>
|
||||
<form method="POST" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) . '?ampel_id='. urlencode($user_ampel['ampel_id']) . '&type=bestaetigen'; ?>">
|
||||
<button type="type" type="submit" class="btn btn-default pull-right"
|
||||
<?php if ($user_ampel['abgelaufen'] || $user_ampel['bestaetigt']) echo 'disabled data-toggle="tooltip" data-placement="top" title="' . $p->t('tools/ampelBestaetigtAbgelaufen'). '"'?>><?php echo $p->t('global/bestaetigen') ?>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
$cnt++;
|
||||
} //end if
|
||||
} //end foreach
|
||||
?>
|
||||
</div> <!--end panel group -->
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
echo '</body>
|
||||
</html>';
|
||||
?>
|
||||
@@ -1155,6 +1155,7 @@ function StudentAuswahl()
|
||||
else
|
||||
{
|
||||
//STUDENT
|
||||
document.getElementById('student-tab-mobilitaet').hidden=false;
|
||||
document.getElementById('student-tab-zeugnis').collapsed=false;
|
||||
document.getElementById('student-tab-betriebsmittel').collapsed=false;
|
||||
document.getElementById('student-tab-io').collapsed=false;
|
||||
|
||||
+6
-10
@@ -221,27 +221,23 @@ class ampel extends basis_db
|
||||
/**
|
||||
* Laedt alle aktuellen Ampeln eines Users
|
||||
* @param string $user User, dessen Ampeln geladen werden sollen
|
||||
* @param boolean $zukuenftige_anzeigen Default false
|
||||
* wenn true, werden alle zukuenftigen Ampeln geladen
|
||||
* wenn false, werden nur die Ampeln geladen die innerhalb der vorlaufzeit liegen
|
||||
* @param boolean $bestaetigt Default false
|
||||
* wenn true, werden alle Ampeln geladen
|
||||
* wenn false, werden nur die Ampeln geladen die noch NICHT bestaetigt wurden
|
||||
*/
|
||||
public function loadUserAmpel($user, $zukuenftige_anzeigen=false, $bestaetigt=false)
|
||||
public function loadUserAmpel($user, $bestaetigt=false)
|
||||
{
|
||||
$sprache = new sprache();
|
||||
$beschreibung = $sprache->getSprachQuery('beschreibung');
|
||||
$buttontext = $sprache->getSprachQuery('buttontext');
|
||||
$buttontext = $sprache->getSprachQuery('buttontext');
|
||||
|
||||
$qry = "SELECT *,".$beschreibung.", ".$buttontext." FROM public.tbl_ampel WHERE deadline+verfallszeit>now()";
|
||||
//all ampeln except where now is before the vorlaufzeit
|
||||
$qry = "SELECT *,".$beschreibung.", ".$buttontext." FROM public.tbl_ampel";
|
||||
|
||||
if(!$zukuenftige_anzeigen)
|
||||
$qry.=" AND deadline-vorlaufzeit<now()";
|
||||
|
||||
//only ampeln that are not confirmed
|
||||
if(!$bestaetigt)
|
||||
{
|
||||
$qry.=" AND NOT EXISTS
|
||||
$qry.=" WHERE NOT EXISTS
|
||||
(SELECT ampel_id
|
||||
FROM public.tbl_ampel_benutzer_bestaetigt
|
||||
WHERE uid=".$this->db_add_param($user)." AND ampel_id=tbl_ampel.ampel_id)";
|
||||
|
||||
@@ -27,7 +27,7 @@ require_once(dirname(__FILE__).'/personlog.class.php');
|
||||
// Auth: Benutzer des Webportals
|
||||
/**
|
||||
* DEPRECATED - Use Authentication Class
|
||||
*/
|
||||
*/
|
||||
function get_uid()
|
||||
{
|
||||
$auth = new authentication();
|
||||
|
||||
Vendored
+1
-1
@@ -7,6 +7,6 @@ $(document).ready(
|
||||
{
|
||||
$("input[type=text], select").addClass("form-control");
|
||||
$("button, input[type=button]").addClass("btn btn-default");
|
||||
$("table").addClass('table-condensed');
|
||||
$("table").addClass("table-condensed");
|
||||
}
|
||||
);
|
||||
|
||||
@@ -23,12 +23,10 @@ $(document).ready(
|
||||
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);
|
||||
tablesortAddPager("msgtable", "msgpager", 10);
|
||||
|
||||
//add pager
|
||||
tablesortAddPager("logtable", "logpager", 23);
|
||||
tablesortAddPager("notiztable", "notizpager", 10);
|
||||
formatNotizTable();
|
||||
formatLogTable();
|
||||
|
||||
//initialise datepicker
|
||||
$.datepicker.setDefaults($.datepicker.regional['de']);
|
||||
@@ -36,16 +34,6 @@ $(document).ready(
|
||||
"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 ()
|
||||
@@ -54,14 +42,43 @@ $(document).ready(
|
||||
}
|
||||
);
|
||||
|
||||
//add click events to "formal geprüft" checkboxes
|
||||
$(".prchbox").click(function ()
|
||||
{
|
||||
var boxid = this.id;
|
||||
var personid = $("#hiddenpersonid").val();
|
||||
var akteid = boxid.substr(boxid.indexOf("_") + 1);
|
||||
var checked = this.checked;
|
||||
saveFormalGeprueft(personid, akteid, checked)
|
||||
});
|
||||
|
||||
//zgv übernehmen
|
||||
$(".zgvUebernehmen").click(function ()
|
||||
{
|
||||
var btn = $(this);
|
||||
var personid = $("#hiddenpersonid").val();
|
||||
var prestudentid = this.id.substr(this.id.indexOf("_") + 1);
|
||||
$('#zgvUebernehmenNotice').remove();
|
||||
zgvUebernehmen(personid, prestudentid, btn)
|
||||
});
|
||||
|
||||
//zgv speichern
|
||||
$(".zgvform").on('submit', function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
var data = $(this).serializeArray();
|
||||
saveZgv(data);
|
||||
}
|
||||
);
|
||||
|
||||
//prevent opening modal when Statusgrund not chosen
|
||||
$(".absageModal").on('show.bs.modal', function (e)
|
||||
{
|
||||
var id = this.id.substr(this.id.indexOf("_") + 1);
|
||||
var statusgrvalue = $("#statusgrselect_"+id+" select[name=statusgrund]").val();
|
||||
var statusgrvalue = $("#statusgrselect_" + id + " select[name=statusgrund]").val();
|
||||
if (statusgrvalue === "null")
|
||||
{
|
||||
$("#statusgrselect_"+id).addClass("has-error");
|
||||
$("#statusgrselect_" + id).addClass("has-error");
|
||||
return e.preventDefault();
|
||||
}
|
||||
}
|
||||
@@ -75,47 +92,172 @@ $(document).ready(
|
||||
}
|
||||
);
|
||||
|
||||
//zgv uebernehmen ajax
|
||||
if ($(".zgvUebernehmen"))
|
||||
{
|
||||
$(".zgvUebernehmen").click(function() {
|
||||
var btn = $(this);
|
||||
//save notiz
|
||||
$("#notizform").on("submit", function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
var personid = $("#hiddenpersonid").val();
|
||||
var prestudentid = this.id.substr(this.id.indexOf("_") + 1);
|
||||
$('#nearzgv').remove();
|
||||
var data = $(this).serializeArray();
|
||||
saveNotiz(personid, data);
|
||||
}
|
||||
)
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
dataType: "json",
|
||||
url: "../getLastPrestudentWithZgvJson/"+personid,
|
||||
success: function(data, textStatus, jqXHR) {
|
||||
if(data !== null)
|
||||
{
|
||||
var zgvcode = data.zgv_code !== null ? data.zgv_code : "null";
|
||||
var zgvort = data.zgvort !== null ? data.zgvort : "";
|
||||
var zgvdatum = data.zgvdatum;
|
||||
var gerzgvdatum = "";
|
||||
if(zgvdatum !== null)
|
||||
{
|
||||
zgvdatum = $.datepicker.parseDate("yy-mm-dd", data.zgvdatum);
|
||||
gerzgvdatum = $.datepicker.formatDate("dd.mm.yy", zgvdatum);
|
||||
}
|
||||
var zgvnation = data.zgvnation !== null ? data.zgvnation : "null";
|
||||
$("#zgv_" + prestudentid).val(zgvcode);
|
||||
$("#zgvort_" + prestudentid).val(zgvort);
|
||||
$("#zgvdatum_" + prestudentid).val(gerzgvdatum);
|
||||
$("#zgvnation_" + prestudentid).val(zgvnation);
|
||||
}
|
||||
else
|
||||
{
|
||||
btn.after(" <span id='nearzgv' class='text-warning'>keine ZGV vorhanden</span>");
|
||||
}
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus + " - " + errorThrown + " - " + jqXHR.responseText);
|
||||
}
|
||||
});
|
||||
});
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// ajax calls
|
||||
|
||||
function saveFormalGeprueft(personid, akteid, checked)
|
||||
{
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
dataType: "json",
|
||||
url: "../saveFormalGeprueft/" + personid,
|
||||
data: {"akte_id": akteid, "formal_geprueft": checked},
|
||||
success: function (data, textStatus, jqXHR)
|
||||
{
|
||||
if (data === null)
|
||||
{
|
||||
$("#formalgeprueftam_" + akteid).text("");
|
||||
}
|
||||
else
|
||||
{
|
||||
fgdatum = $.datepicker.parseDate("yy-mm-dd", data);
|
||||
gerfgdatum = $.datepicker.formatDate("dd.mm.yy", fgdatum);
|
||||
$("#formalgeprueftam_" + akteid).text(gerfgdatum);
|
||||
}
|
||||
//refresh doctable tablesorter, formal geprueft changed!
|
||||
$("#doctable").trigger("update");
|
||||
refreshLog();
|
||||
},
|
||||
error: function (jqXHR, textStatus, errorThrown)
|
||||
{
|
||||
alert(textStatus + " - " + errorThrown + " - " + jqXHR.responseText);
|
||||
}
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
function zgvUebernehmen(personid, prestudentid, btn)
|
||||
{
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
dataType: "json",
|
||||
url: "../getLastPrestudentWithZgvJson/" + personid,
|
||||
success: function (data, textStatus, jqXHR)
|
||||
{
|
||||
if (data !== null)
|
||||
{
|
||||
var zgvcode = data.zgv_code !== null ? data.zgv_code : "null";
|
||||
var zgvort = data.zgvort !== null ? data.zgvort : "";
|
||||
var zgvdatum = data.zgvdatum;
|
||||
var gerzgvdatum = "";
|
||||
if (zgvdatum !== null)
|
||||
{
|
||||
zgvdatum = $.datepicker.parseDate("yy-mm-dd", data.zgvdatum);
|
||||
gerzgvdatum = $.datepicker.formatDate("dd.mm.yy", zgvdatum);
|
||||
}
|
||||
var zgvnation = data.zgvnation !== null ? data.zgvnation : "null";
|
||||
$("#zgv_" + prestudentid).val(zgvcode);
|
||||
$("#zgvort_" + prestudentid).val(zgvort);
|
||||
$("#zgvdatum_" + prestudentid).val(gerzgvdatum);
|
||||
$("#zgvnation_" + prestudentid).val(zgvnation);
|
||||
}
|
||||
else
|
||||
{
|
||||
btn.after(" <span id='zgvUebernehmenNotice' class='text-warning'>keine ZGV vorhanden</span>");
|
||||
}
|
||||
},
|
||||
error: function (jqXHR, textStatus, errorThrown)
|
||||
{
|
||||
alert(textStatus + " - " + errorThrown + " - " + jqXHR.responseText);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function saveZgv(data)
|
||||
{
|
||||
var prestudentid = data[0].value;
|
||||
$("#zgvSpeichernNotice").remove();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
dataType: "json",
|
||||
data: data,
|
||||
url: "../saveZgvPruefung/" + prestudentid,
|
||||
success: function (data, textStatus, jqXHR)
|
||||
{
|
||||
if (data === prestudentid)
|
||||
{
|
||||
refreshLog();
|
||||
$("#zgvSpeichern_" + prestudentid).before("<span id='zgvSpeichernNotice' class='text-success'>ZGV erfolgreich gespeichert!</span> ");
|
||||
}
|
||||
else
|
||||
{
|
||||
$("#zgvSpeichern_" + prestudentid).before("<span id='zgvSpeichernNotice' class='text-danger'>Fehler beim Speichern der ZGV!</span> ");
|
||||
}
|
||||
},
|
||||
error: function (jqXHR, textStatus, errorThrown)
|
||||
{
|
||||
alert(textStatus + " - " + errorThrown + " - " + jqXHR.responseText);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function saveNotiz(personid, data)
|
||||
{
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
dataType: "json",
|
||||
data: data,
|
||||
url: "../saveNotiz/" + personid,
|
||||
success: function (data, textStatus, jqXHR)
|
||||
{
|
||||
refreshNotizen();
|
||||
refreshLog();
|
||||
},
|
||||
error: function (jqXHR, textStatus, errorThrown)
|
||||
{
|
||||
alert(textStatus + " - " + errorThrown + " - " + jqXHR.responseText);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// methods executed after ajax (refreshers)
|
||||
|
||||
function refreshLog()
|
||||
{
|
||||
var personid = $("#hiddenpersonid").val();
|
||||
$("#logs").load('../reloadLogs/' + personid,
|
||||
function ()
|
||||
{
|
||||
//readd tablesorter
|
||||
formatLogTable()
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function formatLogTable()
|
||||
{
|
||||
addTablesorter("logtable", [[0, 1]], ["filter"], 2);
|
||||
tablesortAddPager("logtable", "logpager", 23);
|
||||
$("#logtable").addClass("table-condensed");
|
||||
}
|
||||
|
||||
function refreshNotizen()
|
||||
{
|
||||
$("#notizform").find("input[type=text], textarea").val("");
|
||||
var personid = $("#hiddenpersonid").val();
|
||||
$("#notizen").load('../reloadNotizen/' + personid,
|
||||
function ()
|
||||
{
|
||||
//readd tablesorter
|
||||
formatNotizTable()
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function formatNotizTable()
|
||||
{
|
||||
addTablesorter("notiztable", [[0, 1]], ["filter"], 2);
|
||||
tablesortAddPager("notiztable", "notizpager", 10);
|
||||
$("#notiztable").addClass("table-condensed");
|
||||
}
|
||||
|
||||
@@ -11,29 +11,17 @@
|
||||
|
||||
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)
|
||||
{
|
||||
$("#tableDataset").tablesorter(
|
||||
{
|
||||
widgets: ["zebra", "filter"]
|
||||
});
|
||||
}
|
||||
appendTableActionsHtml();
|
||||
setTableActions();
|
||||
}
|
||||
);
|
||||
/**
|
||||
* Javascript file for infocenter overview page
|
||||
*/
|
||||
$(document).ready(function() {
|
||||
|
||||
appendTableActionsHtml();
|
||||
// setTableActions();
|
||||
|
||||
});
|
||||
|
||||
/**
|
||||
* adds person table additional actions html (above and beneath it)
|
||||
@@ -44,7 +32,7 @@ function appendTableActionsHtml()
|
||||
var url = currurl.replace(/infocenter\/InfoCenter(.*)/, "Messages/write");
|
||||
|
||||
var formHtml = '<form id="sendMsgsForm" method="post" action="'+ url +'" target="_blank"></form>';
|
||||
$("#filterForm").before(formHtml);
|
||||
$("#datasetActionsTop").before(formHtml);
|
||||
|
||||
var selectAllHtml =
|
||||
'<a href="javascript:void(0)" class="selectAll">' +
|
||||
@@ -56,16 +44,36 @@ function appendTableActionsHtml()
|
||||
'<a href="javascript:void(0)" class="sendMsgsLink">' +
|
||||
'<i class="fa fa-envelope"></i> Nachricht senden</a>';
|
||||
|
||||
var personcount = $("#tableDataset tbody tr").length;
|
||||
var persontext = personcount === 1 ? "Person" : "Personen";
|
||||
var countHtml = $("#tableDataset tbody tr").length +" "+persontext;
|
||||
var personcount = 0;
|
||||
|
||||
$.ajax({
|
||||
url: window.location.pathname.replace('infocenter/InfoCenter', 'Filters/rowNumber'),
|
||||
method: "GET"
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
|
||||
if (data != null)
|
||||
{
|
||||
if (data.rowNumber != null)
|
||||
{
|
||||
personcount = data.rowNumber;
|
||||
|
||||
var persontext = personcount === 1 ? "Person" : "Personen";
|
||||
var countHtml = personcount + " " + persontext;
|
||||
|
||||
$("#datasetActionsTop, #datasetActionsBottom").append(
|
||||
"<div class='pull-left'>" + selectAllHtml + " " + messageHtml + "</div>"+
|
||||
"<div class='pull-right'>" + countHtml + "</div>"+
|
||||
"<div class='clearfix'></div>"
|
||||
);
|
||||
$("#datasetActionsBottom").append("<br><br>");
|
||||
}
|
||||
|
||||
setTableActions();
|
||||
}
|
||||
|
||||
}).fail(function(jqXHR, textStatus, errorThrown) {});
|
||||
|
||||
$("#datasetActionsTop, #datasetActionsBottom").append(
|
||||
"<div class='pull-left'>"+selectAllHtml+" "+ messageHtml+"</div>"+
|
||||
"<div class='pull-right'>"+countHtml+"</div>"+
|
||||
"<div class='clearfix'></div>"
|
||||
);
|
||||
$("#datasetActionsBottom").append("<br><br>");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -74,7 +82,7 @@ function appendTableActionsHtml()
|
||||
function setTableActions()
|
||||
{
|
||||
$(".sendMsgsLink").click(function() {
|
||||
var idsel = $("#tableDataset input:checked[name=PersonId\\[\\]]");
|
||||
var idsel = $("#filterTableDataset input:checked[name=PersonId\\[\\]]");
|
||||
if(idsel.length > 0)
|
||||
{
|
||||
var form = $("#sendMsgsForm");
|
||||
@@ -91,15 +99,15 @@ function setTableActions()
|
||||
$(".selectAll").click(function()
|
||||
{
|
||||
//select only trs if not filtered by tablesorter
|
||||
var trs = $("#tableDataset tbody tr").not(".filtered");
|
||||
var trs = $("#filterTableDataset tbody tr").not(".filtered");
|
||||
trs.find("input[name=PersonId\\[\\]]").prop("checked", true);
|
||||
}
|
||||
);
|
||||
|
||||
$(".unselectAll").click(function()
|
||||
{
|
||||
var trs = $("#tableDataset tbody tr").not(".filtered");
|
||||
var trs = $("#filterTableDataset tbody tr").not(".filtered");
|
||||
trs.find("input[name=PersonId\\[\\]]").prop("checked", false);
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,6 +37,8 @@ $this->phrasen['global/loeschen']='Löschen';
|
||||
$this->phrasen['global/entfernen']='Entfernen';
|
||||
$this->phrasen['global/editieren']='Editieren';
|
||||
$this->phrasen['global/suchen']='Suchen';
|
||||
$this->phrasen['global/lesen']='Lesen';
|
||||
$this->phrasen['global/bestaetigen']='Bestätigen';
|
||||
$this->phrasen['global/alle']='Alle';
|
||||
$this->phrasen['global/abbrechen']='Abbrechen';
|
||||
$this->phrasen['global/eintragen']='Eintragen';
|
||||
@@ -61,6 +63,7 @@ $this->phrasen['global/drucken']='Drucken';
|
||||
$this->phrasen['global/pdfExport']='PDF Export';
|
||||
$this->phrasen['global/und']='und';
|
||||
$this->phrasen['global/oder']='oder';
|
||||
$this->phrasen['global/faelligAm']='Fällig am';
|
||||
|
||||
$this->phrasen['global/username']='Username';
|
||||
$this->phrasen['global/vorname']='Vorname';
|
||||
|
||||
@@ -49,8 +49,14 @@ $this->phrasen['tools/ampelBereitsBestaetigt']='Diese Ampel wurde bereits bestä
|
||||
$this->phrasen['tools/dasAmpelsystemIstEinErinnerungsystem']='Das Ampelsystem ist ein ERINNERUNGS- und BESTÄTIGUNGSSYSTEM, welches Sie auf ausstehende Aufgaben aufmerksam machen soll.';
|
||||
$this->phrasen['tools/waehlenSieEineOEoderAmpel']='Bitte wählen Sie ein Organisationseinheit und/oder eine Ampel aus dem Dropdown';
|
||||
$this->phrasen['tools/uebersichtLeitung']='Ampel-Übersicht für LeiterInnen';
|
||||
$this->phrasen['tools/ampelAlleAnzeigen']='Alle anzeigen';
|
||||
$this->phrasen['tools/ampelNurAktuellesStudiensemester']='Nur aktuelles Studiensemester anzeigen';
|
||||
$this->phrasen['tools/ampelAnzeigeFuer']='Anzeige für';
|
||||
$this->phrasen['tools/ampelAlleAnzeigen']='alle';
|
||||
$this->phrasen['tools/ampelNurAktuellesStudiensemester']='aktuelles Studiensemester';
|
||||
$this->phrasen['tools/ampelPopupTitel']='Nachrichten, die verpflichtend bestätigt werden müssen';
|
||||
$this->phrasen['tools/ampelBitteBestaetigen']='Bitte bestätigen Sie diese jetzt:';
|
||||
$this->phrasen['tools/ampelAbgelaufenTitel']='Abgelaufene oder bereits bestätigte Ampeln';
|
||||
$this->phrasen['tools/ampelAbgelaufenTxt']='Sie können diese Ampeln weiterhin lesen, aber nicht mehr bestätigen.';
|
||||
$this->phrasen['tools/ampelBestaetigtAbgelaufen']='Bereits bestätigt oder abgelaufen';
|
||||
|
||||
//Software fuer Lehre -> Softgrid
|
||||
$this->phrasen['tools/applikationsliste']='Applikationsliste';
|
||||
|
||||
@@ -37,6 +37,8 @@ $this->phrasen['global/loeschen']='Delete';
|
||||
$this->phrasen['global/entfernen']='Delete';
|
||||
$this->phrasen['global/editieren']='Edit';
|
||||
$this->phrasen['global/suchen']='Search';
|
||||
$this->phrasen['global/lesen']='Read';
|
||||
$this->phrasen['global/bestaetigen']='Confirm';
|
||||
$this->phrasen['global/alle']='All';
|
||||
$this->phrasen['global/abbrechen']='Cancel';
|
||||
$this->phrasen['global/eintragen']='Register';
|
||||
@@ -60,6 +62,7 @@ $this->phrasen['global/hinzufuegen']='Add';
|
||||
$this->phrasen['global/drucken']='Print';
|
||||
$this->phrasen['global/und']='and';
|
||||
$this->phrasen['global/oder']='or';
|
||||
$this->phrasen['global/faelligAm']='Due on';
|
||||
|
||||
$this->phrasen['global/username']='Username';
|
||||
$this->phrasen['global/vorname']='First Name';
|
||||
|
||||
@@ -51,6 +51,14 @@ $this->phrasen['tools/waehlenSieEineOEoderAmpel']='Please select an organization
|
||||
$this->phrasen['tools/uebersichtLeitung']='Overview of notifications for Heads of Departments';
|
||||
$this->phrasen['tools/alleAnzeigen']='Show all';
|
||||
$this->phrasen['tools/nurAktuellesStudiensemester']='Show current semester only';
|
||||
$this->phrasen['tools/ampelAnzeigeFuer']='Show';
|
||||
$this->phrasen['tools/ampelAlleAnzeigen']='all';
|
||||
$this->phrasen['tools/ampelNurAktuellesStudiensemester']='actual term';
|
||||
$this->phrasen['tools/ampelPopupTitel']='Mandatory Notifications that need to be confirmed';
|
||||
$this->phrasen['tools/ampelBitteBestaetigen']='Please confirm now!';
|
||||
$this->phrasen['tools/ampelAbgelaufenTitel']='Notifications expired or confirmed';
|
||||
$this->phrasen['tools/ampelAbgelaufenTxt']='Notifications can still be read, but not confirmed anymore.';
|
||||
$this->phrasen['tools/ampelBestaetigtAbgelaufen']='Almost confirmed or expired';
|
||||
|
||||
//Software fuer Lehre -> Softgrid
|
||||
$this->phrasen['tools/applikationsliste']='List of Applications';
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 4.7 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 8.3 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 50 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 78 KiB |
@@ -1265,6 +1265,35 @@ if($result = $db->db_query("SELECT 1 FROM system.tbl_app WHERE app='bewerbung'")
|
||||
}
|
||||
}
|
||||
|
||||
// Remove NOT NULL constraint on vorlaufszeit on public.tbl_ampel
|
||||
if($result = @$db->db_query("SELECT is_nullable FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'public' AND TABLE_NAME = 'tbl_ampel' AND COLUMN_NAME = 'vorlaufzeit' AND is_nullable = 'NO'"))
|
||||
{
|
||||
if($db->db_num_rows($result) > 0)
|
||||
{
|
||||
$qry = "ALTER TABLE public.tbl_ampel ALTER COLUMN vorlaufzeit DROP NOT NULL;";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>public.tbl_ampel '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>Removed NOT NULL constraint on "vorlaufszeit" from public.tbl_ampel<br>';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Remove NOT NULL constraint on verfallszeit on public.tbl_ampel
|
||||
if($result = @$db->db_query("SELECT is_nullable FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'public' AND TABLE_NAME = 'tbl_ampel' AND COLUMN_NAME = 'verfallszeit' AND is_nullable = 'NO'"))
|
||||
{
|
||||
if($db->db_num_rows($result) > 0 )
|
||||
{
|
||||
$qry = "ALTER TABLE public.tbl_ampel ALTER COLUMN verfallszeit DROP NOT NULL;";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>public.tbl_ampel '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>Removed NOT NULL constraint on "verfallszeit" from public.tbl_ampel<br>';
|
||||
}
|
||||
}
|
||||
|
||||
// Tabelle person_lock hinzufügen
|
||||
if (!$result = @$db->db_query("SELECT 1 FROM system.tbl_person_lock LIMIT 1"))
|
||||
{
|
||||
@@ -1314,6 +1343,335 @@ if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Kommentare fuer Datenbanktabellen
|
||||
*/
|
||||
if($result = $db->db_query("SELECT obj_description('public.ci_apikey'::regclass) as comment"))
|
||||
{
|
||||
if($row = $db->db_fetch_object($result))
|
||||
{
|
||||
if($row->comment == '')
|
||||
{
|
||||
$qry = "
|
||||
COMMENT ON TABLE public.ci_apikey IS 'API Keys';
|
||||
COMMENT ON TABLE public.tbl_adresse IS 'Person and Company Addresses';
|
||||
COMMENT ON TABLE public.tbl_akte IS 'Documents of Persons';
|
||||
COMMENT ON TABLE public.tbl_ampel IS 'Notification System';
|
||||
COMMENT ON TABLE public.tbl_ampel_benutzer_bestaetigt IS 'Accepted Notifications';
|
||||
COMMENT ON TABLE public.tbl_aufnahmeschluessel IS 'DEPRECATED';
|
||||
COMMENT ON TABLE public.tbl_aufnahmetermin IS 'DEPRECATED';
|
||||
COMMENT ON TABLE public.tbl_aufnahmetermintyp IS 'DEPRECATED';
|
||||
COMMENT ON TABLE public.tbl_aufmerksamdurch IS 'Key-Table of Brand Awareness';
|
||||
COMMENT ON TABLE public.tbl_bankverbindung IS 'Bank Data of Persons';
|
||||
COMMENT ON TABLE public.tbl_benutzer IS 'List of Accounts';
|
||||
COMMENT ON TABLE public.tbl_benutzerfunktion IS 'Functions of Persons';
|
||||
COMMENT ON TABLE public.tbl_benutzergruppe IS 'Connects Users and Groups';
|
||||
COMMENT ON TABLE public.tbl_bewerbungstermine IS 'Application Dates';
|
||||
COMMENT ON TABLE public.tbl_buchungstyp IS 'Key-Table of Payment Types';
|
||||
COMMENT ON TABLE public.tbl_dokument IS 'Key-Table of Documents';
|
||||
COMMENT ON TABLE public.tbl_dokumentprestudent IS 'Accepted Documents of Degree Program';
|
||||
COMMENT ON TABLE public.tbl_dokumentstudiengang IS 'Connection Table of Degree Programs and needed Documents';
|
||||
COMMENT ON TABLE public.tbl_erhalter IS 'Company Caretaker Information';
|
||||
COMMENT ON TABLE public.tbl_fachbereich IS 'Institute, Department';
|
||||
COMMENT ON TABLE public.tbl_filter IS 'Predefined Dropdowns for Reports';
|
||||
COMMENT ON TABLE public.tbl_firma IS 'Universities, Suppliers, Companies';
|
||||
COMMENT ON TABLE public.tbl_firma_mobilitaetsprogramm IS 'Mobility programes of Universities';
|
||||
COMMENT ON TABLE public.tbl_firma_organisationseinheit IS 'Connects Companys with Organisation Units';
|
||||
COMMENT ON TABLE public.tbl_firmatag IS 'Tags for Companys';
|
||||
COMMENT ON TABLE public.tbl_firmentyp IS 'Types of Companys';
|
||||
COMMENT ON TABLE public.tbl_fotostatus IS 'Key-Table of Picture Upload Status';
|
||||
COMMENT ON TABLE public.tbl_funktion IS 'Key-Table of User Functions';
|
||||
COMMENT ON TABLE public.tbl_geschaeftsjahr IS 'Finacial Year';
|
||||
COMMENT ON TABLE public.tbl_gruppe IS 'Study Groups, Mail Groups';
|
||||
COMMENT ON TABLE public.tbl_kontakt IS 'Contacts of Persons';
|
||||
COMMENT ON TABLE public.tbl_kontaktmedium IS 'PreInteressenten-Kontakttypen';
|
||||
COMMENT ON TABLE public.tbl_kontakttyp IS 'Key-Table of Contact Types';
|
||||
COMMENT ON TABLE public.tbl_konto IS 'Student Payments';
|
||||
COMMENT ON TABLE public.tbl_lehrverband IS 'List of Groups';
|
||||
COMMENT ON TABLE public.tbl_log IS 'Logging and Undo';
|
||||
COMMENT ON TABLE public.tbl_mitarbeiter IS 'Employee Data';
|
||||
COMMENT ON TABLE public.tbl_msg_attachment IS 'Messages Attachments';
|
||||
COMMENT ON TABLE public.tbl_msg_message IS 'Messages';
|
||||
COMMENT ON TABLE public.tbl_msg_recipient IS 'Message Recipients';
|
||||
COMMENT ON TABLE public.tbl_msg_status IS 'Message Status';
|
||||
COMMENT ON TABLE public.tbl_notiz IS 'Notes';
|
||||
COMMENT ON TABLE public.tbl_notiz_dokument IS 'Documents assigned to Notes';
|
||||
COMMENT ON TABLE public.tbl_notizzuordnung IS 'Connects Notes with Persons, Courses, …';
|
||||
COMMENT ON TABLE public.tbl_organisationseinheit IS 'Organisation Units';
|
||||
COMMENT ON TABLE public.tbl_organisationseinheittyp IS 'Key-Table of Types of Organisation Units';
|
||||
COMMENT ON TABLE public.tbl_ort IS 'Teaching Rooms, Offices';
|
||||
COMMENT ON TABLE public.tbl_ortraumtyp IS 'Connection of Rooms and Room Types';
|
||||
COMMENT ON TABLE public.tbl_person IS 'List of all Persons';
|
||||
COMMENT ON TABLE public.tbl_person_fotostatus IS 'Connects Picture Upload States with Persons';
|
||||
COMMENT ON TABLE public.tbl_personfunktionstandort IS 'Contact Persons of a Company';
|
||||
COMMENT ON TABLE public.tbl_preincoming IS 'Incoming Registration';
|
||||
COMMENT ON TABLE public.tbl_preincoming_lehrveranstaltung IS 'Incoming Courses';
|
||||
COMMENT ON TABLE public.tbl_preinteressent IS 'DEPRECATED';
|
||||
COMMENT ON TABLE public.tbl_preinteressentstudiengang IS 'DEPRECATED';
|
||||
COMMENT ON TABLE public.tbl_preoutgoing IS 'Outgoing Data';
|
||||
COMMENT ON TABLE public.tbl_preoutgoing_firma IS 'Outgoing University';
|
||||
COMMENT ON TABLE public.tbl_preoutgoing_lehrveranstaltung IS 'Visited Courses of Outgoings';
|
||||
COMMENT ON TABLE public.tbl_preoutgoing_preoutgoing_status IS 'Ougoing Status';
|
||||
COMMENT ON TABLE public.tbl_preoutgoing_status IS 'Key-Table of Outgoing Status';
|
||||
COMMENT ON TABLE public.tbl_prestudent IS 'Relation Person-DegreeProgram';
|
||||
COMMENT ON TABLE public.tbl_prestudentstatus IS 'Student History';
|
||||
COMMENT ON TABLE public.tbl_raumtyp IS 'Room Types';
|
||||
COMMENT ON TABLE public.tbl_reihungstest IS 'Placement Tests';
|
||||
COMMENT ON TABLE public.tbl_rt_ort IS 'Connection Room – Placementtest';
|
||||
COMMENT ON TABLE public.tbl_rt_person IS 'Connection Person – Placementtest';
|
||||
COMMENT ON TABLE public.tbl_rt_studienplan IS 'Connection StudyPlan – Placementtest';
|
||||
COMMENT ON TABLE public.tbl_semesterwochen IS 'Number of Weeks per Semester';
|
||||
COMMENT ON TABLE public.tbl_service IS 'ServiceLevelAgreements';
|
||||
COMMENT ON TABLE public.tbl_sprache IS 'Key-Table of Languages';
|
||||
COMMENT ON TABLE public.tbl_standort IS 'Company Locations';
|
||||
COMMENT ON TABLE public.tbl_statistik IS 'Statistics';
|
||||
COMMENT ON TABLE public.tbl_status IS 'Key-Table of Student Status';
|
||||
COMMENT ON TABLE public.tbl_status_grund IS 'Key-Table of Reasons for Student Status Changes';
|
||||
COMMENT ON TABLE public.tbl_student IS 'List of Students';
|
||||
COMMENT ON TABLE public.tbl_studentlehrverband IS 'Connection of Students to Semester and Groups';
|
||||
COMMENT ON TABLE public.tbl_studiengang IS 'List of Degree Programs';
|
||||
COMMENT ON TABLE public.tbl_studiengangstyp IS 'Key-Table of Degree Program Types';
|
||||
COMMENT ON TABLE public.tbl_studienjahr IS 'Key-Table of Study Year';
|
||||
COMMENT ON TABLE public.tbl_studiensemester IS 'Key-Table of Study Semester';
|
||||
COMMENT ON TABLE public.tbl_tag IS 'Orders and Company Tags';
|
||||
COMMENT ON TABLE public.tbl_variable IS 'User Variables';
|
||||
COMMENT ON TABLE public.tbl_vorlage IS 'Key-Table of Document Templates';
|
||||
COMMENT ON TABLE public.tbl_vorlagedokument IS 'Connects Documents with Templates';
|
||||
COMMENT ON TABLE public.tbl_vorlagestudiengang IS 'Document Templates of Degree Programs';
|
||||
COMMENT ON TABLE bis.tbl_archiv IS 'Ministery Report archive';
|
||||
COMMENT ON TABLE bis.tbl_ausbildung IS 'Key-Table of Highest Education of Employees';
|
||||
COMMENT ON TABLE bis.tbl_berufstaetigkeit IS 'Key-Table of Professional Activity of Students';
|
||||
COMMENT ON TABLE bis.tbl_beschaeftigungsart1 IS 'Key-Table of Contract Types';
|
||||
COMMENT ON TABLE bis.tbl_beschaeftigungsart2 IS 'Key-Table of Contract Types';
|
||||
COMMENT ON TABLE bis.tbl_beschaeftigungsausmass IS 'Key-Table of Amount of Workinghours';
|
||||
COMMENT ON TABLE bis.tbl_besqual IS 'Key-Table of Employee Qualification';
|
||||
COMMENT ON TABLE bis.tbl_bisfunktion IS 'Summary of Teaching Hours per Lector';
|
||||
COMMENT ON TABLE bis.tbl_bisio IS 'Incoming, Outgoing Mobility';
|
||||
COMMENT ON TABLE bis.tbl_bisorgform IS 'Official Organisation Forms for BIS-Meldung';
|
||||
COMMENT ON TABLE bis.tbl_bisverwendung IS 'Employee Contracts';
|
||||
COMMENT ON TABLE bis.tbl_bundesland IS 'Federal States';
|
||||
COMMENT ON TABLE bis.tbl_entwicklungsteam IS 'Members of the Degree Program Development Team';
|
||||
COMMENT ON TABLE bis.tbl_gemeinde IS 'Key-Table of Local Community';
|
||||
COMMENT ON TABLE bis.tbl_gsprogramm IS 'Joint Degree Programs';
|
||||
COMMENT ON TABLE bis.tbl_gsprogrammtyp IS 'Joint Degree Programs';
|
||||
COMMENT ON TABLE bis.tbl_gsstudientyp IS 'Joint Degree Programs';
|
||||
COMMENT ON TABLE bis.tbl_hauptberuf IS 'Key-Table of Main Job';
|
||||
COMMENT ON TABLE bis.tbl_lgartcode IS 'Key-Table of Program Types';
|
||||
COMMENT ON TABLE bis.tbl_mobilitaet IS 'Joint Degree Programs of Students';
|
||||
COMMENT ON TABLE bis.tbl_mobilitaetsprogramm IS 'Key-Table of Mobility Programs';
|
||||
COMMENT ON TABLE bis.tbl_mobilitaetstyp IS 'Key-Table of Type of international activity';
|
||||
COMMENT ON TABLE bis.tbl_nation IS 'Key-Table of Nations';
|
||||
COMMENT ON TABLE bis.tbl_orgform IS 'Key-Table of Organisation Forms of Degree Programs';
|
||||
COMMENT ON TABLE bis.tbl_verwendung IS 'Key-Table of Employee Functions';
|
||||
COMMENT ON TABLE bis.tbl_zgv IS 'Key-Table of Requirements Bachelor';
|
||||
COMMENT ON TABLE bis.tbl_zgvdoktor IS 'Key-Table of Requirements Doktor';
|
||||
COMMENT ON TABLE bis.tbl_zgvgruppe IS 'Aliqoute Reduction Groups';
|
||||
COMMENT ON TABLE bis.tbl_zgvgruppe_zuordnung IS 'Aliqoute Reduction Groups';
|
||||
COMMENT ON TABLE bis.tbl_zgvmaster IS 'Key-Table of Requirements Master';
|
||||
COMMENT ON TABLE bis.tbl_zweck IS 'Key-Table of Purpose of Semester Abroad';
|
||||
COMMENT ON TABLE campus.tbl_abgabe IS 'Uploads to Kreuzerltool';
|
||||
COMMENT ON TABLE campus.tbl_anwesenheit IS 'Student Attendance';
|
||||
COMMENT ON TABLE campus.tbl_beispiel IS 'Kreuzerltool Entries';
|
||||
COMMENT ON TABLE campus.tbl_benutzerlvstudiensemester IS 'Subscriptions to Elective Courses';
|
||||
COMMENT ON TABLE campus.tbl_content IS 'Content Pages';
|
||||
COMMENT ON TABLE campus.tbl_contentchild IS 'Building the Content Tree';
|
||||
COMMENT ON TABLE campus.tbl_contentgruppe IS 'Content Permissions';
|
||||
COMMENT ON TABLE campus.tbl_contentlog IS 'Locking Log of Content Pages';
|
||||
COMMENT ON TABLE campus.tbl_contentsprache IS 'CMS Content in Different Languages';
|
||||
COMMENT ON TABLE campus.tbl_coodle IS 'Appointment Surveys';
|
||||
COMMENT ON TABLE campus.tbl_coodle_ressource IS 'Ressources Assigned to a Survey';
|
||||
COMMENT ON TABLE campus.tbl_coodle_ressource_termin IS 'Selected Time Slots of a Survey';
|
||||
COMMENT ON TABLE campus.tbl_coodle_status IS 'Key Table of State of the Survey';
|
||||
COMMENT ON TABLE campus.tbl_coodle_termin IS 'Time Slots of a Survey';
|
||||
COMMENT ON TABLE campus.tbl_dms IS 'List of CMS Documents';
|
||||
COMMENT ON TABLE campus.tbl_dms_kategorie IS 'Document Categories';
|
||||
COMMENT ON TABLE campus.tbl_dms_kategorie_gruppe IS 'Restrict Access to Document Categories';
|
||||
COMMENT ON TABLE campus.tbl_dms_version IS 'Versions of Documents';
|
||||
COMMENT ON TABLE campus.tbl_erreichbarkeit IS 'Key Table of Reachability in Case of Absence';
|
||||
COMMENT ON TABLE campus.tbl_feedback IS 'DEPRECATED';
|
||||
COMMENT ON TABLE campus.tbl_freebusy IS 'List of FreeBusy Calenders of a Person';
|
||||
COMMENT ON TABLE campus.tbl_freebusytyp IS 'Key Table of Supported FreeBusy Urls';
|
||||
COMMENT ON TABLE campus.tbl_infoscreen IS 'List of Aavailable Information Monitors';
|
||||
COMMENT ON TABLE campus.tbl_infoscreen_content IS 'Content of Information Monitors';
|
||||
COMMENT ON TABLE campus.tbl_legesamtnote IS 'Lehreinheit Grades';
|
||||
COMMENT ON TABLE campus.tbl_lehre_tools IS 'Additional Course Tools';
|
||||
COMMENT ON TABLE campus.tbl_lehre_tools_organisationseinheit IS 'Connects Courses of a Organisationunit to Tools';
|
||||
COMMENT ON TABLE campus.tbl_lehrveranstaltung_pruefung IS 'Connects Multiple Courses with one Exam';
|
||||
COMMENT ON TABLE campus.tbl_lvgesamtnote IS 'Course Grades Lector';
|
||||
COMMENT ON TABLE campus.tbl_lvinfo IS 'DEPRECATED';
|
||||
COMMENT ON TABLE campus.tbl_news IS 'studiengang_kz=0 and Semester=NULL -> global News
|
||||
studiengang_kz=0 and Semester=0 -> Elective Course News
|
||||
studiengang_kz=0 and Semester>0 -> News for selected Semester in all Degree Programs
|
||||
studiengang_kz>0 and (Semester=NULL or Semester=0) -> all Semesters in Degree Program
|
||||
studiengang_kz>0 and Semester>0 -> News for selected Semester in Degree Program';
|
||||
COMMENT ON TABLE campus.tbl_notenschluessel IS 'Kreuzerltool Grading Scheme';
|
||||
COMMENT ON TABLE campus.tbl_notenschluesseluebung IS 'Kreuzerltool Grading Scheme';
|
||||
COMMENT ON TABLE campus.tbl_paabgabe IS 'Project Submissions';
|
||||
COMMENT ON TABLE campus.tbl_paabgabetyp IS 'Key Table of Types of Submissions';
|
||||
COMMENT ON TABLE campus.tbl_pruefung IS 'Exams';
|
||||
COMMENT ON TABLE campus.tbl_pruefungsanmeldung IS 'Subscriptions to Exams';
|
||||
COMMENT ON TABLE campus.tbl_pruefungsfenster IS 'Definition Exam Weeks';
|
||||
COMMENT ON TABLE campus.tbl_pruefungsstatus IS 'Key Table of Exam Status';
|
||||
COMMENT ON TABLE campus.tbl_pruefungstermin IS 'Exam Time Slots';
|
||||
COMMENT ON TABLE campus.tbl_reservierung IS 'Room Reservation';
|
||||
COMMENT ON TABLE campus.tbl_resturlaub IS 'DEPRECATED';
|
||||
COMMENT ON TABLE campus.tbl_studentbeispiel IS 'Selected Entry in Kreuzerltool';
|
||||
COMMENT ON TABLE campus.tbl_studentuebung IS 'Exercise Grades in Kreuzerltool';
|
||||
COMMENT ON TABLE campus.tbl_template IS 'Templates for CMS Pages';
|
||||
COMMENT ON TABLE campus.tbl_uebung IS 'Exercises in Kreuzerltool';
|
||||
COMMENT ON TABLE campus.tbl_veranstaltung IS 'Events';
|
||||
COMMENT ON TABLE campus.tbl_veranstaltungskategorie IS 'Event Categories';
|
||||
COMMENT ON TABLE campus.tbl_zeitaufzeichnung IS 'Time Sheets of Employees';
|
||||
COMMENT ON TABLE campus.tbl_zeitsperre IS 'Absences of Employees';
|
||||
COMMENT ON TABLE campus.tbl_zeitsperretyp IS 'Type of Absences';
|
||||
COMMENT ON TABLE campus.tbl_zeitwunsch IS 'Teaching Time Preferences';
|
||||
COMMENT ON TABLE lehre.tbl_abschlussbeurteilung IS 'Key Table of Final Exam Grades';
|
||||
COMMENT ON TABLE lehre.tbl_abschlusspruefung IS 'Final Exam';
|
||||
COMMENT ON TABLE lehre.tbl_akadgrad IS 'Academic Title Assigned by Degree Program';
|
||||
COMMENT ON TABLE lehre.tbl_anrechnung IS 'Course Crediting';
|
||||
COMMENT ON TABLE lehre.tbl_anrechnung_begruendung IS 'Course Crediting Reasons';
|
||||
COMMENT ON TABLE lehre.tbl_betreuerart IS 'Key Table of Type of Project Supervisor';
|
||||
COMMENT ON TABLE lehre.tbl_ferien IS 'Holidays';
|
||||
COMMENT ON TABLE lehre.tbl_lehreinheit IS 'Course Parts';
|
||||
COMMENT ON TABLE lehre.tbl_lehreinheitgruppe IS 'Groups Assigned to Course';
|
||||
COMMENT ON TABLE lehre.tbl_lehreinheitmitarbeiter IS 'Lectures Assigned to Course';
|
||||
COMMENT ON TABLE lehre.tbl_lehrfach IS 'DEPRECATED';
|
||||
COMMENT ON TABLE lehre.tbl_lehrform IS 'Key Table of Teached Course Types';
|
||||
COMMENT ON TABLE lehre.tbl_lehrfunktion IS 'Key Table of Lector Functions in a Course';
|
||||
COMMENT ON TABLE lehre.tbl_lehrmittel IS 'DEPRECATED';
|
||||
COMMENT ON TABLE lehre.tbl_lehrtyp IS 'Key Table of Course Types';
|
||||
COMMENT ON TABLE lehre.tbl_lehrveranstaltung IS 'Courses, Modules';
|
||||
COMMENT ON TABLE lehre.tbl_lehrveranstaltung_kompatibel IS 'Course Compatibility';
|
||||
COMMENT ON TABLE lehre.tbl_lvangebot IS 'Offered Course Times';
|
||||
COMMENT ON TABLE lehre.tbl_lvregel IS 'Course Attendance Rules';
|
||||
COMMENT ON TABLE lehre.tbl_lvregeltyp IS 'Key Table of Course Rule Types';
|
||||
COMMENT ON TABLE lehre.tbl_moodle IS 'DEPRECATED';
|
||||
COMMENT ON TABLE lehre.tbl_moodle_version IS 'DEPRECATED';
|
||||
COMMENT ON TABLE lehre.tbl_note IS 'Key Table of Grades';
|
||||
COMMENT ON TABLE lehre.tbl_notenschluessel IS 'Course Grading Scheme';
|
||||
COMMENT ON TABLE lehre.tbl_notenschluesselaufteilung IS 'Course Grading Scheme Details';
|
||||
COMMENT ON TABLE lehre.tbl_notenschluesselzuordnung IS 'Connection Between Grading Scheme and Course/Degree Program';
|
||||
COMMENT ON TABLE lehre.tbl_projektarbeit IS 'Projects';
|
||||
COMMENT ON TABLE lehre.tbl_projektbetreuer IS 'Project Supervisor';
|
||||
COMMENT ON TABLE lehre.tbl_projekttyp IS 'Key Table of Project Type';
|
||||
COMMENT ON TABLE lehre.tbl_pruefung IS 'Exams';
|
||||
COMMENT ON TABLE lehre.tbl_pruefungstyp IS 'Key Table of Type of Exams';
|
||||
COMMENT ON TABLE lehre.tbl_studienordnung IS 'Additional Information for Degree Programs and Study Regulations';
|
||||
COMMENT ON TABLE lehre.tbl_studienordnung_semester IS 'DEPRECATED';
|
||||
COMMENT ON TABLE lehre.tbl_studienordnungstatus IS 'Key Table of Study Regulation Status';
|
||||
COMMENT ON TABLE lehre.tbl_studienplan IS 'Study Plan';
|
||||
COMMENT ON TABLE lehre.tbl_studienplan_lehrveranstaltung IS 'Connects Courses with a Study Plan';
|
||||
COMMENT ON TABLE lehre.tbl_studienplan_semester IS 'Valid Semesters of a Study Plan';
|
||||
COMMENT ON TABLE lehre.tbl_studienplatz IS 'Defines the Maximum Study Places per Degree Program';
|
||||
COMMENT ON TABLE lehre.tbl_stunde IS 'Time Grid of Schedule';
|
||||
COMMENT ON TABLE lehre.tbl_stundenplan IS 'Schedule (Productive Data)';
|
||||
COMMENT ON TABLE lehre.tbl_stundenplan_betriebsmittel IS 'Required Teaching Material';
|
||||
COMMENT ON TABLE lehre.tbl_stundenplandev IS 'Schedule (Developing Data)';
|
||||
COMMENT ON TABLE lehre.tbl_vertrag IS 'Teaching Contracts';
|
||||
COMMENT ON TABLE lehre.tbl_vertrag_vertragsstatus IS 'Status History of Contracts';
|
||||
COMMENT ON TABLE lehre.tbl_vertragsstatus IS 'Key Table of Contract Status';
|
||||
COMMENT ON TABLE lehre.tbl_vertragstyp IS 'Key Table of Type of Contracts';
|
||||
COMMENT ON TABLE lehre.tbl_zeitfenster IS 'DEPRECATED';
|
||||
COMMENT ON TABLE lehre.tbl_zeugnis IS 'DEPRECATED';
|
||||
COMMENT ON TABLE lehre.tbl_zeugnisnote IS 'Final Grades for Courses';
|
||||
COMMENT ON TABLE system.tbl_app IS 'FH Complete Applications';
|
||||
COMMENT ON TABLE system.tbl_appdaten IS 'App Specific Data';
|
||||
COMMENT ON TABLE system.tbl_benutzerrolle IS 'Assigns Permissions and Roles to Users';
|
||||
COMMENT ON TABLE system.tbl_berechtigung IS 'Key Table of Permissions';
|
||||
COMMENT ON TABLE system.tbl_cronjob IS 'Automatic Cronjobs';
|
||||
COMMENT ON TABLE system.tbl_extensions IS 'Table to Manage FH Complete Extensions';
|
||||
COMMENT ON TABLE system.tbl_filters IS 'Table to Manage FH Complete Filters';
|
||||
COMMENT ON TABLE system.tbl_log IS 'Person Log';
|
||||
COMMENT ON TABLE system.tbl_logtype IS 'Key Table of Types of Log Entries';
|
||||
COMMENT ON TABLE system.tbl_phrase IS 'Multi Language Phrases';
|
||||
COMMENT ON TABLE system.tbl_phrasentext IS 'Multi Language Phrases Text';
|
||||
COMMENT ON TABLE system.tbl_person_lock IS 'Persons that are locked for editing';
|
||||
COMMENT ON TABLE system.tbl_rolle IS 'Permission Roles';
|
||||
COMMENT ON TABLE system.tbl_rolleberechtigung IS 'Assigns Permissions to Roles';
|
||||
COMMENT ON TABLE system.tbl_server IS 'List of Servers for Cronjobs';
|
||||
COMMENT ON TABLE system.tbl_udf IS 'User Defined Fields';
|
||||
COMMENT ON TABLE system.tbl_verarbeitungstaetigkeit IS 'Processing Activities';
|
||||
COMMENT ON TABLE system.tbl_webservicelog IS 'Webservice Log';
|
||||
COMMENT ON TABLE system.tbl_webservicerecht IS 'Webservice Permissions';
|
||||
COMMENT ON TABLE system.tbl_webservicetyp IS 'Key Table of Webservice Types';
|
||||
COMMENT ON TABLE fue.tbl_aktivitaet IS 'Timesheet SLA Activity';
|
||||
COMMENT ON TABLE fue.tbl_aufwandstyp IS 'Estimation Scale Type';
|
||||
COMMENT ON TABLE fue.tbl_projekt IS 'Projects';
|
||||
COMMENT ON TABLE fue.tbl_projekt_dokument IS 'Assigns a DMS Document to a Project';
|
||||
COMMENT ON TABLE fue.tbl_projekt_ressource IS 'Assigns a Ressource to a Project';
|
||||
COMMENT ON TABLE fue.tbl_projektphase IS 'Project Phases';
|
||||
COMMENT ON TABLE fue.tbl_projekttask IS 'Project Tasks';
|
||||
COMMENT ON TABLE fue.tbl_ressource IS 'Project Ressources (Persons, Companys, Inventory)';
|
||||
COMMENT ON TABLE fue.tbl_scrumsprint IS 'DEPRECATED';
|
||||
COMMENT ON TABLE fue.tbl_scrumteam IS 'DEPRECATED';
|
||||
COMMENT ON TABLE wawi.tbl_aufteilung IS 'DEPRECATED';
|
||||
COMMENT ON TABLE wawi.tbl_aufteilung_default IS 'DEPRECATED';
|
||||
COMMENT ON TABLE wawi.tbl_bestelldetail IS 'Order Details';
|
||||
COMMENT ON TABLE wawi.tbl_bestelldetailtag IS 'Order Details Tags';
|
||||
COMMENT ON TABLE wawi.tbl_bestellstatus IS 'Key Table of Order Status';
|
||||
COMMENT ON TABLE wawi.tbl_bestellung IS 'Orders';
|
||||
COMMENT ON TABLE wawi.tbl_bestellung_bestellstatus IS 'Order Status History';
|
||||
COMMENT ON TABLE wawi.tbl_bestellungtag IS 'Order Tags';
|
||||
COMMENT ON TABLE wawi.tbl_betriebsmittel IS 'Inventory';
|
||||
COMMENT ON TABLE wawi.tbl_betriebsmittel_betriebsmittelstatus IS 'Inventory Status History';
|
||||
COMMENT ON TABLE wawi.tbl_betriebsmittelperson IS 'Assigns Inventory to a Person';
|
||||
COMMENT ON TABLE wawi.tbl_betriebsmittelstatus IS 'Key Table of Inventory Status';
|
||||
COMMENT ON TABLE wawi.tbl_betriebsmitteltyp IS 'Key Table of Inventory Type';
|
||||
COMMENT ON TABLE wawi.tbl_buchung IS 'Accounting of Lecturers (Addon-Abrechnung)';
|
||||
COMMENT ON TABLE wawi.tbl_buchungstyp IS 'Key Table of Booking Types';
|
||||
COMMENT ON TABLE wawi.tbl_budget IS 'Budget per Cost Unit';
|
||||
COMMENT ON TABLE wawi.tbl_konto IS 'Accounts';
|
||||
COMMENT ON TABLE wawi.tbl_konto_kostenstelle IS 'Connects Multiple Accounts with a Cost Unit';
|
||||
COMMENT ON TABLE wawi.tbl_kostenstelle IS 'Cost Units';
|
||||
COMMENT ON TABLE wawi.tbl_projekt_bestellung IS 'Assigns Orders to a Project';
|
||||
COMMENT ON TABLE wawi.tbl_rechnung IS 'Invoice';
|
||||
COMMENT ON TABLE wawi.tbl_rechnungsbetrag IS 'Invoice Amount';
|
||||
COMMENT ON TABLE wawi.tbl_rechnungstyp IS 'Key Table of Invoice Types';
|
||||
COMMENT ON TABLE wawi.tbl_zahlungstyp IS 'Key Table of Payment Types';
|
||||
COMMENT ON TABLE testtool.tbl_ablauf IS 'List of Sections per Degree Program';
|
||||
COMMENT ON TABLE testtool.tbl_ablauf_vorgaben IS 'Additional Test Configuration';
|
||||
COMMENT ON TABLE testtool.tbl_antwort IS 'Answers of the Candidate';
|
||||
COMMENT ON TABLE testtool.tbl_frage IS 'List of Questions';
|
||||
COMMENT ON TABLE testtool.tbl_frage_sprache IS 'Questions in Different Languages';
|
||||
COMMENT ON TABLE testtool.tbl_gebiet IS 'List of Test Sections';
|
||||
COMMENT ON TABLE testtool.tbl_kategorie IS 'DEPRECATED';
|
||||
COMMENT ON TABLE testtool.tbl_kriterien IS 'DEPRECATED';
|
||||
COMMENT ON TABLE testtool.tbl_pruefling IS 'List of Tested Candidates';
|
||||
COMMENT ON TABLE testtool.tbl_pruefling_frage IS 'Questions Given to a Candidate';
|
||||
COMMENT ON TABLE testtool.tbl_vorschlag IS 'Available Answers to a Question';
|
||||
COMMENT ON TABLE testtool.tbl_vorschlag_sprache IS 'Answers in Different Languages';
|
||||
|
||||
COMMENT ON SCHEMA addon IS 'Extensions and Addons';
|
||||
COMMENT ON SCHEMA bis IS 'Key Table of and Additional Tables for Ministery Report';
|
||||
COMMENT ON SCHEMA campus IS 'Campus Management and CIS';
|
||||
COMMENT ON SCHEMA fue IS 'Projectmanagement';
|
||||
COMMENT ON SCHEMA lehre IS 'Teaching and Learning';
|
||||
COMMENT ON SCHEMA public IS 'Base Data';
|
||||
COMMENT ON SCHEMA reports IS 'Cachingtables for Reporting';
|
||||
COMMENT ON SCHEMA sync IS 'Synchronisation Data';
|
||||
COMMENT ON SCHEMA system IS 'Permissions, Logging';
|
||||
COMMENT ON SCHEMA testtool IS 'Placement Test';
|
||||
COMMENT ON SCHEMA wawi IS 'Inventory, Orders';
|
||||
|
||||
COMMENT ON COLUMN public.tbl_prestudent.rt_punkte1 IS 'DEPRECATED';
|
||||
COMMENT ON COLUMN public.tbl_prestudent.rt_punkte2 IS 'DEPRECATED';
|
||||
COMMENT ON COLUMN public.tbl_prestudent.rt_punkte3 IS 'DEPRECATED';
|
||||
COMMENT ON COLUMN public.tbl_prestudent.anmeldungreihungstest IS 'DEPRECATED';
|
||||
COMMENT ON COLUMN public.tbl_prestudent.reihungstest_id IS 'DEPRECATED';
|
||||
COMMENT ON COLUMN public.tbl_prestudent.ausstellungsstaat IS 'DEPRECATED';
|
||||
COMMENT ON COLUMN public.tbl_prestudent.aufnahmeschluessel IS 'DEPRECATED';
|
||||
COMMENT ON COLUMN lehre.tbl_lehrveranstaltung.old_lehrfach_id IS 'DEPRECATED';
|
||||
";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>Comments: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo 'Kommentare fuer DB Datenbanktabellen hinzugefügt';
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
|
||||
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
|
||||
|
||||
|
||||
@@ -444,6 +444,39 @@ $error_msg='';
|
||||
AND tbl_lehrveranstaltung.studiengang_kz=257
|
||||
AND tbl_lehrveranstaltung.orgform_kurzbz='DUA'
|
||||
";
|
||||
|
||||
$verteilerArray['pre_alumni_wintersemester']['bezeichnung'] = 'Zukünftige Absolventen Wintersemester';
|
||||
$verteilerArray['pre_alumni_wintersemester']['beschreibung'] = 'Zukünftige Absolventen Wintersemester';
|
||||
$verteilerArray['pre_alumni_wintersemester']['sql'] = "SELECT
|
||||
distinct tbl_benutzer.uid
|
||||
FROM
|
||||
public.tbl_studentlehrverband
|
||||
JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
JOIN public.tbl_benutzer ON(uid=student_uid)
|
||||
WHERE
|
||||
(
|
||||
(tbl_studiengang.typ='m' AND semester=3)
|
||||
OR (tbl_studiengang.typ='b' AND semester=5)
|
||||
)
|
||||
AND tbl_benutzer.aktiv = true
|
||||
AND tbl_studentlehrverband.studiensemester_kurzbz = (SELECT studiensemester_kurzbz FROM public.vw_studiensemester where studiensemester_kurzbz like 'WS%' ORDER BY delta LIMIT 1)";
|
||||
|
||||
$verteilerArray['pre_alumni_sommersemester']['bezeichnung'] = 'Zukünftige Absolventen Sommersemester';
|
||||
$verteilerArray['pre_alumni_sommersemester']['beschreibung'] = 'Zukünftige Absolventen Sommersemester';
|
||||
$verteilerArray['pre_alumni_sommersemester']['sql'] = "SELECT
|
||||
distinct tbl_benutzer.uid
|
||||
FROM
|
||||
public.tbl_studentlehrverband
|
||||
JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
JOIN public.tbl_benutzer ON(uid=student_uid)
|
||||
WHERE
|
||||
(
|
||||
(tbl_studiengang.typ='m' AND semester=4)
|
||||
OR (tbl_studiengang.typ='b' AND semester=6)
|
||||
)
|
||||
AND tbl_benutzer.aktiv = true
|
||||
AND tbl_studentlehrverband.studiensemester_kurzbz = (SELECT studiensemester_kurzbz FROM public.vw_studiensemester where studiensemester_kurzbz like 'SS%' ORDER BY delta LIMIT 1)";
|
||||
|
||||
$bezeichnung = '';
|
||||
$beschreibung = '';
|
||||
foreach ($verteilerArray AS $listname => $data)
|
||||
|
||||
@@ -261,14 +261,14 @@
|
||||
<draw:image xlink:href="{foto_url}" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
|
||||
</draw:frame>
|
||||
</xsl:when>
|
||||
<xsl:when test="foto_url=''">
|
||||
<xsl:when test="foto_gesperrt!='f'">
|
||||
<draw:frame draw:style-name="fr1" draw:name="Bild2" text:anchor-type="as-char" svg:width="2.57cm" svg:height="3.431cm" draw:z-index="0">
|
||||
<draw:image xlink:href="Pictures/dummyfoto_keinBildVorhanden.jpg" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
|
||||
<draw:image xlink:href="Pictures/10000000000000F000000140BF2FB93E89B12D34.jpg" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
|
||||
</draw:frame>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<draw:frame draw:style-name="fr1" draw:name="dummy" text:anchor-type="as-char" svg:width="2.57cm" svg:height="3.431cm" draw:z-index="0">
|
||||
<draw:image xlink:href="Pictures/10000000000000F000000140BF2FB93E89B12D34.jpg" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
|
||||
<draw:image xlink:href="Pictures/dummyfoto_keinBildVorhanden.jpg" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
|
||||
</draw:frame>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
@@ -175,12 +175,12 @@ $datum_obj = new datum();
|
||||
<td rowspan="3"><textarea name="benutzer_select" cols="60" rows="5" required>'.htmlspecialchars($ampel->benutzer_select).'</textarea></td>
|
||||
<td></td>
|
||||
<td valign="middle">Vorlaufzeit (in Tagen)</td>
|
||||
<td valign="middle"><input type="text" name="vorlaufzeit" size="4" maxlength="4" value="'.htmlspecialchars($ampel->vorlaufzeit).'" required></td>
|
||||
<td valign="middle"><input type="text" name="vorlaufzeit" size="4" maxlength="4" value="'.htmlspecialchars($ampel->vorlaufzeit).'"></td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td></td>
|
||||
<td>Verfallszeit (in Tagen)</td>
|
||||
<td><input type="text" name="verfallszeit" size="4" maxlength="4" value="'.htmlspecialchars($ampel->verfallszeit).'" required></td>
|
||||
<td><input type="text" name="verfallszeit" size="4" maxlength="4" value="'.htmlspecialchars($ampel->verfallszeit).'"></td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td></td>
|
||||
|
||||
Reference in New Issue
Block a user