Merge remote-tracking branch 'origin/master'

This commit is contained in:
Manfred Kindl
2018-06-12 18:05:08 +02:00
48 changed files with 6284 additions and 8146 deletions
+171 -495
View File
@@ -3,553 +3,229 @@
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
*
* This controller operates between (interface) the JS (GUI) and the FiltersLib (back-end)
* Provides data to the ajax get calls about the filter
* Accepts ajax post calls to change the filter data
* This controller works with JSON calls on the HTTP GET or POST and the output is always JSON
*/
class Filters extends VileSci_Controller
class Filters extends FHC_Controller
{
const SESSION_NAME = 'FHC_FILTER_WIDGET';
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';
const FILTER_PAGE_PARAM = 'filter_page';
/**
*
* Calls the parent's constructor and loads the FiltersLib
*/
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');
$this->_loadFiltersLib(); // Loads the FiltersLib with parameters
}
//------------------------------------------------------------------------------------------------------------------
// Public methods
/**
*
* Retrives data about the current filter from the session and will be written on the output in JSON format
*/
public function tableDataset()
public function getFilter()
{
$json = new stdClass();
$session = $this->_readSession($this->_getFilterUniqueId());
$json->selectedFields = $this->_getFromSession('selectedFields');
$json->columnsAliases = $this->_getFromSession('columnsAliases');
$json->additionalColumns = $this->_getFromSession('additionalColumns');
$json->checkboxes = $this->_getFromSession('checkboxes');
$json->dataset = $this->_getFromSession('dataset');
$this->output->set_content_type('application/json')->set_output(json_encode($json));
$this->outputJsonSuccess($this->filterslib->getSession());
}
/**
*
*/
public function selectFields()
{
$json = new stdClass();
$session = $this->_readSession($this->_getFilterUniqueId());
$json->allSelectedFields = $this->_getFromSession('allSelectedFields');
$json->allColumnsAliases = $this->_getFromSession('allColumnsAliases');
$json->selectedFields = $this->_getFromSession('selectedFields');
$json->columnsAliases = $this->_getFromSession('columnsAliases');
$this->output->set_content_type('application/json')->set_output(json_encode($json));
}
/**
*
*/
public function sortSelectedFields()
{
$selectedFieldsLst = $this->input->post('selectedFieldsLst');
$filterUniqueId = $this->_getFilterUniqueId();
$json = new stdClass();
$session = $this->_readSession($filterUniqueId);
$allSelectedFields = $this->_getFromSession('allSelectedFields');
$allColumnsAliases = $this->_getFromSession('allColumnsAliases');
$json->selectedFields = $this->_getFromSession('selectedFields');
$json->columnsAliases = $this->_getFromSession('columnsAliases');
if (isset($selectedFieldsLst) && is_array($selectedFieldsLst))
{
$json->selectedFields = $selectedFieldsLst;
$json->columnsAliases = array();
for ($i = 0; $i < count($json->selectedFields); $i++)
{
$pos = array_search($json->selectedFields[$i], $allSelectedFields);
$json->columnsAliases[$i] = $json->selectedFields[$i];
if ($pos !== false)
{
if ($allColumnsAliases != null && is_array($allColumnsAliases))
{
$json->columnsAliases[$i] = $allColumnsAliases[$pos];
}
}
}
}
$_SESSION[self::SESSION_NAME][$filterUniqueId]['selectedFields'] = $json->selectedFields;
$_SESSION[self::SESSION_NAME][$filterUniqueId]['columnsAliases'] = $json->columnsAliases;
$this->output->set_content_type('application/json')->set_output(json_encode($json));
}
/**
*
*/
public function selectFilters()
{
$json = new stdClass();
$session = $this->_readSession($this->_getFilterUniqueId());
$json->allSelectedFields = $this->_getFromSession('allSelectedFields');
$json->allColumnsAliases = $this->_getFromSession('allColumnsAliases');
$json->selectedFilters = $this->_getFromSession('selectedFilters');
$json->selectedFiltersAliases = array();
$json->selectedFiltersMetaData = array();
$json->selectedFiltersActiveFilters = array();
$json->selectedFiltersActiveFiltersOperation = array();
$json->selectedFiltersActiveFiltersOption = array();
$metaData = $this->_getFromSession('metaData');
$activeFilters = $this->_getFromSession('activeFilters');
$activeFiltersOperation = $this->_getFromSession('activeFiltersOperation');
$activeFiltersOption = $this->_getFromSession('activeFiltersOption');
for ($i = 0; $i < count($json->selectedFilters); $i++)
{
$pos = array_search($json->selectedFilters[$i], $json->allSelectedFields);
if ($pos !== false)
{
$json->selectedFiltersAliases[$i] = $json->selectedFilters[$i];
if ($json->allColumnsAliases != null && is_array($json->allColumnsAliases))
{
$json->selectedFiltersAliases[$i] = $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->_getFilterUniqueId());
$this->output->set_content_type('application/json')->set_output(json_encode('Filter saved'));
}
/**
*
*/
private function _saveFilter($customFilterDescription, $filterUniqueId)
{
$objToBeSaved = new stdClass();
$filterSessionArray = $this->_readSession($filterUniqueId);
$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][$filterUniqueId]['app'],
'dataset_name' => $_SESSION[self::SESSION_NAME][$filterUniqueId]['datasetName'],
'description' => $descPGArray,
'person_id' => $personId
));
if (hasData($result))
{
$this->FiltersModel->update(
array(
'app' => $_SESSION[self::SESSION_NAME][$filterUniqueId]['app'],
'dataset_name' => $_SESSION[self::SESSION_NAME][$filterUniqueId]['datasetName'],
'description' => $descPGArray,
'person_id' => $personId
),
array(
'filter' => json_encode($objToBeSaved)
)
);
}
else
{
$this->FiltersModel->insert(array(
'app' => $_SESSION[self::SESSION_NAME][$filterUniqueId]['app'],
'dataset_name' => $_SESSION[self::SESSION_NAME][$filterUniqueId]['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('Removed'));
}
}
/**
*
*/
public function removeSelectedFields()
{
$fieldName = $this->input->post('fieldName');
$filterUniqueId = $this->_getFilterUniqueId();
$session = $this->_readSession($filterUniqueId);
$allSelectedFields = $this->_getFromSession('allSelectedFields');
$allColumnsAliases = $this->_getFromSession('allColumnsAliases');
$selectedFields = $this->_getFromSession('selectedFields');
$columnsAliases = $this->_getFromSession('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][$filterUniqueId]['selectedFields'] = $selectedFields;
$_SESSION[self::SESSION_NAME][$filterUniqueId]['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');
$filterUniqueId = $this->_getFilterUniqueId();
$session = $this->_readSession($filterUniqueId);
$selectedFilters = $this->_getFromSession('selectedFilters');
$selectedFiltersActiveFilters = $this->_getFromSession('activeFilters');
$selectedFiltersActiveFiltersOperation = $this->_getFromSession('activeFiltersOperation');
$selectedFiltersActiveFiltersOption = $this->_getFromSession('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][$filterUniqueId]['selectedFilters'] = $selectedFilters;
$_SESSION[self::SESSION_NAME][$filterUniqueId]['activeFilters'] = $selectedFiltersActiveFilters;
$_SESSION[self::SESSION_NAME][$filterUniqueId]['activeFiltersOperation'] = $selectedFiltersActiveFiltersOperation;
$_SESSION[self::SESSION_NAME][$filterUniqueId]['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');
$filterUniqueId = $this->_getFilterUniqueId();
$session = $this->_readSession($filterUniqueId);
$allSelectedFields = $this->_getFromSession('allSelectedFields');
$allColumnsAliases = $this->_getFromSession('allColumnsAliases');
$selectedFields = $this->_getFromSession('selectedFields');
$columnsAliases = $this->_getFromSession('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][$filterUniqueId]['selectedFields'] = $selectedFields;
$_SESSION[self::SESSION_NAME][$filterUniqueId]['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');
$filterUniqueId = $this->_getFilterUniqueId();
$session = $this->_readSession($filterUniqueId);
$selectedFilters = $this->_getFromSession('selectedFilters');
$selectedFiltersActiveFilters = $this->_getFromSession('activeFilters');
$selectedFiltersActiveFiltersOperation = $this->_getFromSession('activeFiltersOperation');
$selectedFiltersActiveFiltersOption = $this->_getFromSession('activeFiltersOption');
if (!in_array($fieldName, $selectedFilters))
{
array_push($selectedFilters, $fieldName);
$selectedFiltersActiveFilters[$fieldName] = "";
$selectedFiltersActiveFiltersOperation[$fieldName] = "";
$selectedFiltersActiveFiltersOption[$fieldName] = "";
}
$_SESSION[self::SESSION_NAME][$filterUniqueId]['selectedFilters'] = $selectedFilters;
$_SESSION[self::SESSION_NAME][$filterUniqueId]['activeFilters'] = $selectedFiltersActiveFilters;
$_SESSION[self::SESSION_NAME][$filterUniqueId]['activeFiltersOperation'] = $selectedFiltersActiveFiltersOperation;
$_SESSION[self::SESSION_NAME][$filterUniqueId]['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');
$filterUniqueId = $this->_getFilterUniqueId();
$session = $this->_readSession($filterUniqueId);
$activeFilters = array_combine($fieldNames, $filterOperationValues);
$activeFiltersOperation = array_combine($fieldNames, $filterOperations);
$activeFiltersOption = array_combine($fieldNames, $filterOptions);
$_SESSION[self::SESSION_NAME][$filterUniqueId]['activeFilters'] = $activeFilters;
$_SESSION[self::SESSION_NAME][$filterUniqueId]['activeFiltersOperation'] = $activeFiltersOperation;
$_SESSION[self::SESSION_NAME][$filterUniqueId]['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));
}
/**
*
* Retrives the number of records present in the current dataset and will be written on the output in JSON format
*/
public function rowNumber()
{
$json = new stdClass();
$rowNumber = 0;
$dataset = $this->filterslib->getElementSession(FiltersLib::SESSION_DATASET);
$session = $this->_readSession($this->_getFilterUniqueId());
$dataset = $this->_getFromSession('dataset');
if (is_array($dataset))
if (isset($dataset) && is_array($dataset))
{
$json->rowNumber = count($dataset);
$rowNumber = count($dataset);
}
$this->output->set_content_type('application/json')->set_output(json_encode($json));
$this->outputJsonSuccess($rowNumber);
}
/**
*
* Change the sort of the selected fields of the current filter and
* its data will be written on the output in JSON format
*/
private function _readSession($filterUniqueId)
public function sortSelectedFields()
{
if (isset($_SESSION[self::SESSION_NAME]) && isset($_SESSION[self::SESSION_NAME][$filterUniqueId]))
return $_SESSION[self::SESSION_NAME][$filterUniqueId];
$selectedFields = $this->input->post('selectedFields');
return array();
if ($this->filterslib->sortSelectedFields($selectedFields) == true)
{
$this->getFilter();
}
else
{
$this->outputJsonError('Wrong parameter');
}
}
/**
*
* Remove a selected field from the current filter and
* its data will be written on the output in JSON format
*/
private function _writeSession($data, $filterUniqueId)
public function removeSelectedField()
{
if (!isset($_SESSION[self::SESSION_NAME])
|| (isset($_SESSION[self::SESSION_NAME]) && !is_array($_SESSION[self::SESSION_NAME])))
{
$_SESSION[self::SESSION_NAME] = array();
}
$selectedField = $this->input->post('selectedField');
$_SESSION[self::SESSION_NAME][$filterUniqueId] = $data;
if ($this->filterslib->removeSelectedField($selectedField) == true)
{
$this->getFilter();
}
else
{
$this->outputJsonError('Wrong parameter');
}
}
/**
*
* Add a field to the current filter and its data will be written on the output in JSON format
*/
private function _getFilterUniqueId()
public function addSelectedField()
{
$_getFilterUniqueId = '';
$selectedField = $this->input->post('selectedField');
if ($_SERVER['REQUEST_METHOD'] === 'POST')
if ($this->filterslib->addSelectedField($selectedField) == true)
{
$_getFilterUniqueId = $this->input->post('filter_page').'/'.$this->input->post('fhc_controller_id');
$this->getFilter();
}
elseif ($_SERVER['REQUEST_METHOD'] === 'GET')
else
{
$_getFilterUniqueId = $this->input->get('filter_page').'/'.$this->input->get('fhc_controller_id');
$this->outputJsonError('Wrong parameter');
}
return $_getFilterUniqueId;
}
/**
*
* Remove an applied filter (SQL where condition) from the current filter
*/
private function _getFromSession($el)
public function removeAppliedFilter()
{
$_getFromSession = null;
$appliedFilter = $this->input->post('appliedFilter');
if (isset($_SESSION[$el])) return $_SESSION[$el];
if ($this->filterslib->removeAppliedFilter($appliedFilter) == true)
{
$this->outputJsonSuccess('Removed');
}
else
{
$this->outputJsonError('Wrong parameter');
}
}
return $_getFromSession;
/**
* Apply all the applied filters (SQL where conditions) to the current filter
*/
public function applyFilters()
{
$appliedFilters = $this->input->post('appliedFilters');
$appliedFiltersOperations = $this->input->post('appliedFiltersOperations');
$appliedFiltersConditions = $this->input->post('appliedFiltersConditions');
$appliedFiltersOptions = $this->input->post('appliedFiltersOptions');
if ($this->filterslib->applyFilters(
$appliedFilters,
$appliedFiltersOperations,
$appliedFiltersConditions,
$appliedFiltersOptions
) == true)
{
$this->outputJsonSuccess('Applied');
}
else
{
$this->outputJsonError('Wrong parameter');
}
}
/**
* Add a filter (SQL where clause) to be applied to the current filter
*/
public function addFilter()
{
$filter = $this->input->post('filter');
if ($this->filterslib->addFilter($filter) == true)
{
$this->getFilter();
}
else
{
$this->outputJsonError('Wrong parameter');
}
}
/**
* Save the current filter as a custom filter for this user with the given description
*/
public function saveCustomFilter()
{
$customFilterDescription = $this->input->post('customFilterDescription');
if ($this->filterslib->saveCustomFilter($customFilterDescription) == true)
{
$this->outputJsonSuccess('Saved');
}
else
{
$this->outputJsonError('Wrong parameter');
}
}
/**
* Remove a custom filter by its filter_id
*/
public function removeCustomFilter()
{
$filter_id = $this->input->post('filter_id');
if ($this->filterslib->removeCustomFilter($filter_id) == true)
{
$this->outputJsonSuccess('Removed');
}
else
{
$this->outputJsonError('Wrong parameter');
}
}
//------------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Loads the FiltersLib with the FILTER_PAGE_PARAM parameter
* If the parameter FILTER_PAGE_PARAM is not given then the execution of the controller is terminated and
* an error message is printed
*/
private function _loadFiltersLib()
{
// If the parameter FILTER_PAGE_PARAM is present in the HTTP GET or POST
if (isset($_GET[self::FILTER_PAGE_PARAM]) || isset($_POST[self::FILTER_PAGE_PARAM]))
{
// If it is present in the HTTP GET
if (isset($_GET[self::FILTER_PAGE_PARAM]))
{
$filterPage = $this->input->get(self::FILTER_PAGE_PARAM); // is retrived from the HTTP GET
}
elseif (isset($_POST[self::FILTER_PAGE_PARAM])) // Else if it is present in the HTTP POST
{
$filterPage = $this->input->post(self::FILTER_PAGE_PARAM); // is retrived from the HTTP POST
}
// Loads the FiltersLib that contains all the used logic
$this->load->library('FiltersLib', array(self::FILTER_PAGE_PARAM => $filterPage));
}
else // Otherwise an error will be written in the output
{
// NOTE: Used echo to speed up the output before the exit otherwise it's not shown
echo 'Parameter "'.self::FILTER_PAGE_PARAM.'" not provided!';
exit;
}
}
}
@@ -129,24 +129,31 @@ class InfoCenter extends FHC_Controller
$personexists = $this->PersonModel->load($person_id);
if(isError($personexists))
if (isError($personexists))
show_error($personexists->retval);
if (empty($personexists->retval))
show_error('person does not exist!');
//mark person as locked for editing
$result = $this->PersonLockModel->lockPerson($person_id, $this->uid, self::APP);
$show_lock_link_get = $this->input->get('show_lock_link');
$show_lock_link = !isset($show_lock_link_get) || $show_lock_link_get === '1';
if(isError($result))
show_error($result->retval);
if ($show_lock_link)
{
//mark person as locked for editing
$result = $this->PersonLockModel->lockPerson($person_id, $this->uid, self::APP);
if (isError($result))
show_error($result->retval);
}
$persondata = $this->_loadPersonData($person_id);
$prestudentdata = $this->_loadPrestudentData($person_id);
$data = array_merge(
$persondata,
$prestudentdata
$prestudentdata,
array('show_lock_link' => $show_lock_link)
);
$data['fhc_controller_id'] = $this->fhc_controller_id;
@@ -162,7 +169,7 @@ class InfoCenter extends FHC_Controller
{
$result = $this->PersonLockModel->unlockPerson($person_id, self::APP);
if(isError($result))
if (isError($result))
show_error($result->retval);
redirect(self::URL_PREFIX.'?fhc_controller_id='.$this->fhc_controller_id);
@@ -245,9 +252,7 @@ class InfoCenter extends FHC_Controller
$data['data'] = $studienordnung->retval[0]->data;
}
$this->load->view('system/infocenter/studiengangZgvInfo.php',
$data
);
$this->load->view('system/infocenter/studiengangZgvInfo.php', $data);
}
/**
@@ -721,6 +726,18 @@ class InfoCenter extends FHC_Controller
);
}
/**
* Wrapper for setNavigationMenu, returns JSON message
*/
public function setNavigationMenuArrayJson()
{
$this->setNavigationMenuArray();
$this->output
->set_content_type('application/json')
->set_output(json_encode(success('success')));
}
private function _fillFilters($filters, &$tofill)
{
foreach ($filters as $filterId => $description)
@@ -744,7 +761,7 @@ class InfoCenter extends FHC_Controller
'link' => sprintf($toPrint, site_url('system/infocenter/InfoCenter'), 'filter_id', $filterId),
'description' => $description,
'subscriptDescription' => 'Remove',
'subscriptLinkClass' => 'remove-filter',
'subscriptLinkClass' => 'remove-custom-filter',
'subscriptLinkValue' => $filterId
);
}
+36 -1
View File
@@ -20,16 +20,22 @@ class FHC_Controller extends CI_Controller
$this->load->helper('fhcauth');
}
//------------------------------------------------------------------------------------------------------------------
// Public methods
/**
* Wrapper to load phrases using the PhrasesLib
* NOTE: The library is loaded with the alias 'p', so must me used with this alias in the rest of the code.
* EX: $this->p->t(<category>, <phrase name>)
*/
public function loadPhrases($categories, $language = null)
protected function loadPhrases($categories, $language = null)
{
$this->load->library('PhrasesLib', array($categories, $language), 'p');
}
//------------------------------------------------------------------------------------------------------------------
// Protected methods
/**
* Sets the unique id for the called controller
* NOTE: it is only working with HTTP GET request, not neeaded with POST
@@ -67,4 +73,33 @@ class FHC_Controller extends CI_Controller
{
return $this->_controllerId;
}
/**
* Utility method to output a success using JSON as content type
* Wraps the private method _outputJson
*/
protected function outputJsonSuccess($mixed)
{
$this->_outputJson(success($mixed));
}
/**
* Utility method to output an error using JSON as content type
* Wraps the private method _outputJson
*/
protected function outputJsonError($mixed)
{
$this->_outputJson(error($mixed));
}
//------------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Utility method to output using JSON as content type
*/
private function _outputJson($mixed)
{
$this->output->set_content_type('application/json')->set_output(json_encode($mixed));
}
}
+817
View File
@@ -0,0 +1,817 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* FilterWidget logic
*/
class FiltersLib
{
// Session parameters names
const SESSION_NAME = 'FHC_FILTER_WIDGET'; // Filter session name
const SESSION_FILTER_NAME = 'filterName';
const SESSION_FIELDS = 'fields';
const SESSION_SELECTED_FIELDS = 'selectedFields';
const SESSION_COLUMNS_ALIASES = 'columnsAliases';
const SESSION_ADDITIONAL_COLUMNS = 'additionalColumns';
const SESSION_CHECKBOXES = 'checkboxes';
const SESSION_FILTERS = 'filters';
const SESSION_METADATA = 'datasetMetadata';
const SESSION_DATASET = 'dataset';
const SESSION_ROW_NUMBER = 'rowNumber';
const SESSION_RELOAD_DATASET = 'reloadDataset';
// Alias for the dynamic table used to retrive the dataset
const DATASET_TABLE_ALIAS = 'datasetFilterTable';
// Parameters names...
// ...to identify a single filter widget in the session
const FHC_CONTROLLER_ID = 'fhc_controller_id';
// ...to identify a single filter widget in the DB
const FILTER_ID = 'filter_id';
const APP_PARAMETER = 'app';
const DATASET_NAME_PARAMETER = 'datasetName';
const FILTER_KURZBZ_PARAMETER = 'filterKurzbz';
// ...stament to retrive the dataset
const QUERY_PARAMETER = 'query';
// ...to specify more columns or aliases for them
const ADDITIONAL_COLUMNS = 'additionalColumns';
const CHECKBOXES = 'checkboxes';
const COLUMNS_ALIASES = 'columnsAliases';
// ...to format/mark records of a dataset
const FORMAT_ROW = 'formatRow';
const MARK_ROW = 'markRow';
// ...to hide the options for a filter
const HIDE_HEADER = 'hideHeader';
const HIDE_SAVE = 'hideSave';
// Filter operations values
const OP_EQUAL = 'equal';
const OP_NOT_EQUAL = 'nequal';
const OP_GREATER_THAN = 'gt';
const OP_LESS_THAN = 'lt';
const OP_IS_TRUE = 'true';
const OP_IS_FALSE = 'false';
const OP_CONTAINS = 'contains';
const OP_NOT_CONTAINS = 'ncontains';
const OP_SET = 'set';
const OP_NOT_SET = 'nset';
// Filter options values
const OPT_DAYS = 'days';
const OPT_MONTHS = 'months';
const FILTER_PHRASES_CATEGORY = 'FilterWidget'; // The category used to store phrases for the FilterWidget
const FILTER_PAGE_PARAM = 'filter_page'; // Filter page parameter used to overwrite the page URI
private $_ci; // Code igniter instance
private $_filterUniqueId; // unique id for this filter widget
/**
* Gets the CI instance and loads message helper
*/
public function __construct($params = null)
{
$this->_ci =& get_instance();
// Loads helper message to manage returning messages
$this->_ci->load->helper('message');
$this->_filterUniqueId = $this->_getFilterUniqueId($params); // sets the id for the related filter widget
}
//------------------------------------------------------------------------------------------------------------------
// Public methods
/**
* Returns the whole session for this filter widget if found, otherwise null
*/
public function getSession()
{
$session = null;
// If it is present a session for this filter
if (isset($_SESSION[self::SESSION_NAME]) && isset($_SESSION[self::SESSION_NAME][$this->_filterUniqueId]))
{
$session = $_SESSION[self::SESSION_NAME][$this->_filterUniqueId];
}
return $session;
}
/**
* Returns one element from the session of this filter widget, otherwise null
*/
public function getElementSession($name)
{
$session = $this->getSession(); // get the whole session for this filter
if (isset($session[$name]))
{
return $session[$name];
}
return null;
}
/**
* Sets the whole session for this filter widget
*/
public function setSession($data)
{
// If is NOT already present into the session
if (!isset($_SESSION[self::SESSION_NAME])
|| (isset($_SESSION[self::SESSION_NAME]) && !is_array($_SESSION[self::SESSION_NAME])))
{
$_SESSION[self::SESSION_NAME] = array(); // then create it
}
$_SESSION[self::SESSION_NAME][$this->_filterUniqueId] = $data; // stores data
}
/**
* Sets one element of the session of this filter widget
*/
public function setElementSession($name, $value)
{
// If is NOT already present into the session
if (!isset($_SESSION[self::SESSION_NAME])
|| (isset($_SESSION[self::SESSION_NAME]) && !is_array($_SESSION[self::SESSION_NAME])))
{
$_SESSION[self::SESSION_NAME] = array(); // then create it
}
// If the session for this filter is NOT already present into the session
if (!isset($_SESSION[self::SESSION_NAME][$this->_filterUniqueId])
|| (isset($_SESSION[self::SESSION_NAME][$this->_filterUniqueId])
&& !is_array($_SESSION[self::SESSION_NAME][$this->_filterUniqueId])))
{
$_SESSION[self::SESSION_NAME][$this->_filterUniqueId] = array(); // then create it
}
$_SESSION[self::SESSION_NAME][$this->_filterUniqueId][$name] = $value; // stores the single value
}
/**
* Loads the definition data from DB for a filter widget
*/
public function loadDefinition($filterId, $app, $datasetName, $filterKurzbz)
{
// Loads the needed models
$this->_ci->load->model('system/Filters_model', 'FiltersModel');
$this->_ci->load->model('person/Benutzer_model', 'BenutzerModel'); // to get the default custom filter
$this->_ci->FiltersModel->resetQuery(); // reset any previous built query
$this->_ci->FiltersModel->addJoin('public.tbl_benutzer', 'person_id', 'LEFT'); // left join with benutzer table
$this->_ci->FiltersModel->addSelect('system.tbl_filters.*'); // select only from table filters
$this->_ci->FiltersModel->addOrder('sort', 'ASC'); // sort on column sort
$this->_ci->FiltersModel->addLimit(1); // if more than one filter is set as default only one will be retrived
$definition = null;
$whereParameters = null; // where clause parameters
// If we have a good filterId then use it!
if ($filterId != null && is_numeric($filterId) && $filterId > 0)
{
$whereParameters = array(
'filter_id' => $filterId
);
}
else
{
// If we can univocally retrive a filter
if ($app != null && $datasetName != null && $filterKurzbz != null)
{
$whereParameters = array(
'app' => $app,
'dataset_name' => $datasetName,
'filter_kurzbz' => $filterKurzbz
);
}
// Else if we have only app and datasetName
elseif ($app != null && $datasetName != null && $filterKurzbz == null)
{
// Try to load the custom filter (person_id = logged user person_id) with the given "app" and "dataset_name"
// that is set as default filter (default_filter = true)
$whereParameters = array(
'app' => $app,
'dataset_name' => $datasetName,
'uid' => getAuthUID(),
'default_filter' => true
);
$definition = $this->_ci->FiltersModel->loadWhere($whereParameters);
if (!hasData($definition)) // If a custom filter is NOT found
{
// Try to load the global filter (person_id = null) with the given "app" and "dataset_name" that is set as
// default filter (default_filter = true)
$whereParameters = array(
'app' => $app,
'dataset_name' => $datasetName,
'default_filter' => true
);
$definition = $this->_ci->FiltersModel->loadWhere($whereParameters);
}
}
}
// If no definition where loaded and where parameters were set
if ($definition == null && $whereParameters != null)
{
$definition = $this->_ci->FiltersModel->loadWhere($whereParameters);
}
return $definition;
}
/**
* Checks if the json definition of this filter is valid
*/
public function parseFilterJson($definition)
{
$jsonEncodedFilter = null;
// If the definition contains data and they are valid
if (hasData($definition) && isset($definition->retval[0]->filter) && trim($definition->retval[0]->filter) != '')
{
// Get the json definition of the filter
$tmpJsonEncodedFilter = json_decode($definition->retval[0]->filter);
// Checks required filter's properies
if (isset($tmpJsonEncodedFilter->name)
&& isset($tmpJsonEncodedFilter->columns)
&& is_array($tmpJsonEncodedFilter->columns)
&& isset($tmpJsonEncodedFilter->filters)
&& is_array($tmpJsonEncodedFilter->filters))
{
$jsonEncodedFilter = $tmpJsonEncodedFilter;
}
}
return $jsonEncodedFilter;
}
/**
* Generate the query to retrive the dataset for a filter
*/
public function generateDatasetQuery($query, $filters)
{
$datasetQuery = null;
// If the given query is valid and the parameter filters is an array
if (!empty(trim($query)) && $filters != null && is_array($filters))
{
$where = ''; // starts building the SQL where clause
// Loops through the given applied filters
for ($filtersCounter = 0; $filtersCounter < count($filters); $filtersCounter++)
{
$filterDefinition = $filters[$filtersCounter]; // definition of one filter
if ($filtersCounter > 0) $where .= ' AND '; // if it's NOT the last one
if (!empty(trim($filterDefinition->name))) // if the name of the applied filter is valid
{
// ...build the condition
$where .= '"'.$filterDefinition->name.'"'.$this->_getDatasetQueryCondition($filterDefinition);
}
}
if ($where != '') // if the SQL where clause was built
{
$datasetQuery = 'SELECT * FROM ('.$query.') '.self::DATASET_TABLE_ALIAS.' WHERE '.$where;
}
}
return $datasetQuery;
}
/**
* Retrives the dataset from the DB
*/
public function getDataset($datasetQuery)
{
$dataset = null;
if ($datasetQuery != null)
{
// Execute the given SQL statement suppressing error messages
$dataset = @$this->_ci->FiltersModel->execReadOnlyQuery($datasetQuery);
}
return $dataset;
}
/**
* Get the filter name, the default is the "name" property of the JSON definition
* If the property namePhrase is present into the JSON definition, then try to load that from the phrases system
* NOTE: filterJson should be already checked using the method parseFilterJson
*/
public function getFilterName($filterJson)
{
$filterName = $filterJson->name; // always present, used as default
// Filter name from phrases system
if (isset($filterJson->namePhrase) && !empty(trim($filterJson->namePhrase)))
{
// Loads the library to use the phrases system
$this->_ci->load->library('PhrasesLib', array(self::FILTER_PHRASES_CATEGORY));
$tmpFilterNamePhrase = $this->_ci->phraseslib->t(self::FILTER_PHRASES_CATEGORY, $filterJson->namePhrase);
if (isset($tmpFilterNamePhrase) && !empty(trim($tmpFilterNamePhrase))) // if is not null or an empty string
{
$filterName = $tmpFilterNamePhrase;
}
}
return $filterName;
}
/**
* Change the sort of the selected fields of the current filter
*/
public function sortSelectedFields($selectedFields)
{
$sortSelectedFields = false;
// Checks the parameter selectedFields
if (isset($selectedFields) && is_array($selectedFields) && count($selectedFields) > 0)
{
// Retrives all the used fields by the current filter
$fields = $this->getElementSession(self::SESSION_FIELDS);
// Checks that the given selected fields are present in all the used fields by the current filter
if (!array_diff($selectedFields, $fields))
{
$this->setElementSession(self::SESSION_SELECTED_FIELDS, $selectedFields); // write changes into the session
$sortSelectedFields = true;
}
}
return $sortSelectedFields;
}
/**
* Remove a selected field from the current filter
*/
public function removeSelectedField($selectedField)
{
$removeSelectedField = false;
// Checks the parameter selectedField
if (isset($selectedField) && !empty(trim($selectedField)))
{
// Retrives all the used fields by the current filter
$fields = $this->getElementSession(self::SESSION_FIELDS);
// Retrives the selected fields by the current filter
$selectedFields = $this->getElementSession(self::SESSION_SELECTED_FIELDS);
// Checks that the given selected field is present in the list of all the used fields by the current filter
if (in_array($selectedField, $fields))
{
// If the selected field is present in the list of the selected fields by the current filter
if (($pos = array_search($selectedField, $selectedFields)) !== false)
{
// Then remove it and shift the rest of elements by one if needed
array_splice($selectedFields, $pos, 1);
}
$this->setElementSession(self::SESSION_SELECTED_FIELDS, $selectedFields); // write changes into the session
$removeSelectedField = true;
}
}
return $removeSelectedField;
}
/**
* Add a field to the current filter
*/
public function addSelectedField($selectedField)
{
$removeSelectedField = false;
// Checks the parameter selectedField
if (isset($selectedField) && !empty(trim($selectedField)))
{
// Retrives all the used fields by the current filter
$fields = $this->getElementSession(self::SESSION_FIELDS);
// Retrives the selected fields by the current filter
$selectedFields = $this->getElementSession(self::SESSION_SELECTED_FIELDS);
// Checks that the given selected field is present in the list of all the used fields by the current filter
if (in_array($selectedField, $fields))
{
array_push($selectedFields, $selectedField); // place the new filed at the end of the selected fields list
$this->setElementSession(self::SESSION_SELECTED_FIELDS, $selectedFields); // write changes into the session
$removeSelectedField = true;
}
}
return $removeSelectedField;
}
/**
* Remove an applied filter (SQL where condition) from the current filter
*/
public function removeAppliedFilter($appliedFilter)
{
$removeAppliedFilter = false;
// Checks the parameter appliedFilter
if (isset($appliedFilter) && !empty(trim($appliedFilter)))
{
// Retrives all the used fields by the current filter
$fields = $this->getElementSession(self::SESSION_FIELDS);
// Retrives the applied filters by the current filter
$filters = $this->getElementSession(self::SESSION_FILTERS);
// Checks that the given applied filter is present in the list of all the used fields by the current filter
if (in_array($appliedFilter, $fields))
{
// Search in what position the given applied filter is
$pos = $this->_searchFilterByName($filters, $appliedFilter);
if ($pos !== false) // If found
{
array_splice($filters, $pos, 1); // Then remove it and shift the rest of elements by one if needed
}
// Write changes into the session
$this->setElementSession(self::SESSION_FILTERS, $filters);
$this->setElementSession(self::SESSION_RELOAD_DATASET, true); // the dataset must be reloaded
$removeAppliedFilter = true;
}
}
return $removeAppliedFilter;
}
/**
* Apply all the applied filters (SQL where conditions) to the current filter
*/
public function applyFilters($appliedFilters, $appliedFiltersOperations, $appliedFiltersConditions, $appliedFiltersOptions)
{
$applyFilters = false;
// Checks the required parameters: appliedFilters and appliedFiltersOperations
if (isset($appliedFilters) && is_array($appliedFilters)
&& isset($appliedFiltersOperations) && is_array($appliedFiltersOperations))
{
$fields = $this->getElementSession(self::SESSION_FIELDS); // Retrives all the used fields by the current filter
// Checks that the given applied filters are present in all the used fields by the current filter
if (!array_diff($appliedFilters, $fields))
{
$filters = array(); // starts building the new applied filters list
for ($i = 0; $i < count($appliedFilters); $i++) // loops through the given applied filters
{
$filterDefinition = new stdClass(); // new applied filter definition
// Sets the filter definition required properties
$filterDefinition->name = $appliedFilters[$i];
$filterDefinition->operation = $appliedFiltersOperations[$i];
// Sets the filter definition optional properties
$filterDefinition->condition = null;
if (isset($appliedFiltersConditions) && isset($appliedFiltersConditions[$i]))
{
$filterDefinition->condition = $appliedFiltersConditions[$i];
}
$filterDefinition->option = null;
if (isset($appliedFiltersOptions) && isset($appliedFiltersOptions[$i]))
{
$filterDefinition->option = $appliedFiltersOptions[$i];
}
$filters[$i] = $filterDefinition; // adds the new definition to the list
}
// Write changes into the session
$this->setElementSession(self::SESSION_FILTERS, $filters);
$this->setElementSession(self::SESSION_RELOAD_DATASET, true); // the dataset must be reloaded
$applyFilters = true;
}
}
return $applyFilters;
}
/**
* Add a filter (SQL where clause) to be applied to the current filter
*/
public function addFilter($filter)
{
$addFilter = false;
// Checks the parameter filter
if (isset($filter) && !empty(trim($filter)))
{
// Retrives all the used fields by the current filter
$fields = $this->getElementSession(self::SESSION_FIELDS);
// Retrives the applied filters by the current filter
$filters = $this->getElementSession(self::SESSION_FILTERS);
// Checks that the given applied filter is present in the list of all the used fields by the current filter
if (in_array($filter, $fields))
{
// Search in what position the given applied filter is
$pos = $this->_searchFilterByName($filters, $filter);
if ($pos === false) // If NOT found then add it
{
// New filter definition
$filterDefinition = new stdClass();
// Sets filter definition required properties
$filterDefinition->name = $filter;
// Sets filter definition optional properties
$filterDefinition->operation = null;
$filterDefinition->condition = null;
$filterDefinition->option = null;
// Place the new applied filter at the end of the applied filters list
array_push($filters, $filterDefinition);
}
$this->setElementSession(self::SESSION_FILTERS, $filters); // write changes into the session
$addFilter = true;
}
}
return $addFilter;
}
/**
* Save the current filter as a custom filter for this user with the given description
*/
public function saveCustomFilter($customFilterDescription)
{
$saveCustomFilter = false; // by default returns a failure
// Checks parameter customFilterDescription if not valid stop the execution
if (!isset($customFilterDescription) || empty(trim($customFilterDescription)))
{
return $saveCustomFilter;
}
$this->_ci->load->model('system/Filters_model', 'FiltersModel'); // to load the filter definitions
$this->_ci->load->model('person/Benutzer_model', 'BenutzerModel'); // to get the person_id of the authenticated user
$this->_ci->FiltersModel->resetQuery(); // reset any previous built query
$this->_ci->BenutzerModel->resetQuery(); // reset any previous built query
// Loads data for the authenticated user
$authBenutzer = $this->_ci->BenutzerModel->loadWhere(array('uid' => getAuthUID()));
if (hasData($authBenutzer)) // if data are found
{
// person_id of the authenticated user
$authPersonId = $authBenutzer->retval[0]->person_id;
// Postgres array for the description
$descPGArray = str_replace('%desc%', $customFilterDescription, '{"%desc%", "%desc%", "%desc%", "%desc%"}');
// Loads the definition to check if is already present in the DB
$definition = $this->_ci->FiltersModel->loadWhere(array(
'app' => $this->getElementSession(self::APP_PARAMETER),
'dataset_name' => $this->getElementSession(self::DATASET_NAME_PARAMETER),
'description' => $descPGArray,
'person_id' => $authPersonId
));
// New definition to be json encoded
$jsonDeifinition = new stdClass();
$jsonDeifinition->name = $customFilterDescription; // name of the filter
// Generates the "column" property
$jsonDeifinition->columns = array();
$selectedFields = $this->getElementSession(self::SESSION_SELECTED_FIELDS); // retrived the selected fields
for ($i = 0; $i < count($selectedFields); $i++)
{
// Each element is an object with a property called "name"
$jsonDeifinition->columns[$i] = new stdClass();
$jsonDeifinition->columns[$i]->name = $selectedFields[$i];
}
// List of applied filters
$jsonDeifinition->filters = $this->getElementSession(self::SESSION_FILTERS);
// If it is already present
if (hasData($definition))
{
// update it
$this->_ci->FiltersModel->update(
array(
'app' => $this->getElementSession(self::APP_PARAMETER),
'dataset_name' => $this->getElementSession(self::DATASET_NAME_PARAMETER),
'description' => $descPGArray,
'person_id' => $authPersonId
),
array(
'filter' => json_encode($jsonDeifinition)
)
);
$saveCustomFilter = true;
}
else // otherwise insert a new one
{
$this->_ci->FiltersModel->insert(
array(
'app' => $this->getElementSession(self::APP_PARAMETER),
'dataset_name' => $this->getElementSession(self::DATASET_NAME_PARAMETER),
'filter_kurzbz' => uniqid($authPersonId, true),
'description' => $descPGArray,
'person_id' => $authPersonId,
'sort' => null,
'default_filter' => false,
'filter' => json_encode($jsonDeifinition),
'oe_kurzbz' => null
)
);
$saveCustomFilter = true;
}
}
return $saveCustomFilter;
}
/**
* Remove a custom filter by its filter_id
*/
public function removeCustomFilter($filterId)
{
$removeCustomFilter = false;
// Checks the parameter filterId
if (isset($filterId) && is_numeric($filterId) && $filterId > 0)
{
$this->_ci->load->model('system/Filters_model', 'FiltersModel'); // to remove the filter definitions from DB
// delete it!
$this->_ci->FiltersModel->delete(array('filter_id' => $filterId));
$removeCustomFilter = true;
}
return $removeCustomFilter;
}
//------------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Return an unique string that identify this filter widget
* NOTE: The default value is the URI where the FilterWidget is called
* If the fhc_controller_id is present then is also used
*/
private function _getFilterUniqueId($params)
{
//
if ($params != null
&& is_array($params)
&& isset($params[self::FILTER_PAGE_PARAM])
&& !empty(trim($params[self::FILTER_PAGE_PARAM])))
{
$filterUniqueId = $params[self::FILTER_PAGE_PARAM];
}
else
{
// Gets the current page URI
$filterUniqueId = $this->_ci->router->directory.$this->_ci->router->class.'/'.$this->_ci->router->method;
}
// If the FHC_CONTROLLER_ID parameter is present in the HTTP GET
if (isset($_GET[self::FHC_CONTROLLER_ID]))
{
$filterUniqueId .= '/'.$this->_ci->input->get(self::FHC_CONTROLLER_ID); // then use it
}
elseif (isset($_POST[self::FHC_CONTROLLER_ID])) // else if the FHC_CONTROLLER_ID parameter is present in the HTTP POST
{
$filterUniqueId .= '/'.$this->_ci->input->post(self::FHC_CONTROLLER_ID); // then use it
}
return $filterUniqueId;
}
/**
* Generates a condition for a SQL where clause using the given applied filter definition.
* By default an empty string is returned.
*/
private function _getDatasetQueryCondition($filterDefinition)
{
$condition = ''; // starts building the condition
// "operation" is a required property for the applied filter definition
if (!empty(trim($filterDefinition->operation)))
{
// Checks what operation is required
switch ($filterDefinition->operation)
{
// comparison (==)
case self::OP_EQUAL:
if (is_numeric($filterDefinition->condition)) $condition = '= '.$filterDefinition->condition;
break;
// not equal (!=)
case self::OP_NOT_EQUAL:
if (is_numeric($filterDefinition->condition)) $condition = '!= '.$filterDefinition->condition;
break;
// greater than (>)
case self::OP_GREATER_THAN:
// It it's a date type
if (is_numeric($filterDefinition->condition)
&& isset($filterDefinition->option)
&& ($filterDefinition->option == self::OPT_DAYS
|| $filterDefinition->option == self::OPT_MONTHS))
{
$condition = '< (NOW() - \''.$filterDefinition->condition.' '.$filterDefinition->option.'\'::interval)';
}
else // otherwise is a number
{
$condition = '> '.$filterDefinition->condition;
}
break;
// less than (<)
case self::OP_LESS_THAN:
// It it's a date type
if (is_numeric($filterDefinition->condition)
&& isset($filterDefinition->option)
&& ($filterDefinition->option == self::OPT_DAYS
|| $filterDefinition->option == self::OPT_MONTHS))
{
$condition = '> (NOW() - \''.$filterDefinition->condition.' '.$filterDefinition->option.'\'::interval)';
}
else // otherwise is a number
{
$condition = '< '.$filterDefinition->condition;
}
break;
// contains (ILIKE)
case self::OP_CONTAINS:
$condition = 'ILIKE \'%'.$this->_ci->FiltersModel->escapeLike($filterDefinition->condition).'%\'';
break;
// not contains (NOT ILIKE)
case self::OP_NOT_CONTAINS:
$condition = 'NOT ILIKE \'%'.$this->_ci->FiltersModel->escapeLike($filterDefinition->condition).'%\'';
break;
// is true (=== true)
case self::OP_IS_TRUE:
$condition = 'IS TRUE';
break;
// is false (=== false)
case self::OP_IS_FALSE:
$condition = 'IS FALSE';
break;
// is set
case self::OP_SET:
$condition = 'IS NOT NULL';
break;
// is NOT set
case self::OP_NOT_SET:
$condition = 'IS NULL';
break;
// by default must not be null (!= null)
default:
$condition = 'IS NOT NULL';
break;
}
}
// if the condition is valid
if (!empty(trim($condition))) $condition = ' '.$condition; // add a white space before
return $condition;
}
/**
* Search for a filter inside a list of filters by the given filter name
* Returns false if NOT found, otherwise the position inside the list
*/
private function _searchFilterByName($filters, $filterName)
{
$pos = false;
for($i = 0; $i < count($filters); $i++)
{
if ($filters[$i]->name == $filterName)
{
$pos = $i;
break;
}
}
return $pos;
}
}
+124 -68
View File
@@ -14,6 +14,8 @@ class PhrasesLib
{
$this->_ci =& get_instance();
$this->_phrases = null; // set the property _phrases as null by default
// CI parser
$this->_ci->load->library('parser');
@@ -78,7 +80,6 @@ class PhrasesLib
return $this->_ci->PhraseModel->update($phrase_id, $data);
}
/**
* getVorlagetextByVorlage() - will load tbl_vorlagestudiengang for a spezific Template.
*/
@@ -179,91 +180,60 @@ class PhrasesLib
}
/**
*
* Retrives a phrases from the the property _phrases with the given parameters
* It also replace parameters inside the phrase if they are provided
* @param string $category Category name which is used to categorize the phrase.
* @param string $phrase Phrase name.
* @param array $parameters Array of String var(s) to be set into phrases' placeholder values (order matters).
* @return string Phrase text
*/
public function t($category, $phrase, $parameters = array(), $orgeinheit_kurzbz = null, $orgform_kurzbz = null)
{
if (isset($this->_phrases) && is_array($this->_phrases))
// If the property _phrases is populated
if (is_array($this->_phrases))
{
// Loops through the _phrases property
for ($i = 0; $i < count($this->_phrases); $i++)
{
$_phrase = $this->_phrases[$i];
$_phrase = $this->_phrases[$i]; // single phrase
// If the single phrase match the given parameters and is not an empty string
if ($_phrase->category == $category
&& $_phrase->phrase == $phrase
&& $_phrase->orgeinheit_kurzbz == $orgeinheit_kurzbz
&& $_phrase->orgform_kurzbz== $orgform_kurzbz
&& (!empty($_phrase->text)))
{
if ($parameters == null)
$parameters = array();
return $this->_ci->parser->parse_string($_phrase->text, $parameters, true);
}
}
//fallback 1: if phrase not found in phrases-array, try with default language
$default_language = DEFAULT_LANGUAGE;
$categories = $this->_ci->PhraseModel->getCategories();
if (hasData($categories))
{
$categories = $categories->retval;
foreach($categories as $cat)
$all_categories[] = $cat->category;
}
$phrases = $this->_ci->PhraseModel->getPhrasesByCategoryAndLanguage($all_categories, $default_language);
if (hasData($phrases))
{
$default_phrases = $phrases->retval;
}
if (isset($default_phrases) && is_array($default_phrases))
{
for ($i = 0; $i < count($default_phrases); $i++)
&& $_phrase->orgform_kurzbz == $orgform_kurzbz
&& (!empty(trim($_phrase->text))))
{
$_phrase = $default_phrases[$i];
// var_dump($_phrase);
// echo $phrase . "<br>";
// echo $_phrase->phrase . "<br><br>";
if (!is_array($parameters)) $parameters = array(); // if params is not an array
if ($_phrase->category == $category
&& $_phrase->phrase == $phrase
&& $_phrase->orgeinheit_kurzbz == $orgeinheit_kurzbz
&& $_phrase->orgform_kurzbz== $orgform_kurzbz)
{
if ($parameters == null)
$parameters = array();
return $this->_ci->parser->parse_string($_phrase->text, $parameters, true);
}
return $this->_ci->parser->parse_string($_phrase->text, $parameters, true); // parsing
}
}
//fallback 2: if phrase not found at all, return phrasename
$phrase = '<< PHRASE ' . $phrase . ' >>';
return $this->_ci->parser->parse_string($phrase, $parameters, true);
}
}
// If a valid phrase is not found
return '<< PHRASE '.$phrase.' >>';
}
// -----------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Extends the functionalities of the constructor of this class
* This is a workaround to use more parameters in the construct since PHP doesn't support many constructors
* The new accepted parameters are:
* - categories: could be a string or an array of strings. These are the categories used to load phrases
* - language: optional parameter must be a string. It's used to load phrases
* @param (array) $params Array of categories and (optional) language.
* categories:
* - could be a string or an array of strings. These are the categories used to load phrases
* - could be an array of categories, and for each category there is an array of phrases
* language: optional parameter must be a string. It's used to load phrases
*/
private function _extend_construct($params)
{
// Checks if the $params is an array with at least one element
if (is_array($params) && count($params) > 0)
{
$parameters = $params[0]; // temporary variable
$parameters = $params[0]; // temporary variable
$isIndexArray = false; //flag for indexed array
// If there are parameters
if (is_array($parameters) && count($parameters) > 0)
@@ -287,15 +257,101 @@ class PhrasesLib
$language = $this->_ci->PersonModel->getLanguage(getAuthUID());
}
// Loads phrases
$phrases = $this->_ci->PhraseModel->getPhrasesByCategoryAndLanguage($categories, $language);
// If there are phrases loaded then store them in the property _phrases
if (hasData($phrases))
{
$this->_phrases = $phrases->retval;
}
// If only categories is not an empty array then loads phrases
if (count($categories) > 0) $this->_setPhrases($categories, $language);
}
}
}
/**
* Retrieves phrases in the users language.
* If a phrase is not set in the users language it will be retrieved in the default language.
* Stores phrases-array in property $_phrases.
* @param array $categories Could be an:
* - indexed array: string or an array of strings. These are the categories used to load phrases.
* - associative array: of categories, and for each category there is an array of phrases.
* @param string User's language or default language.
*/
private function _setPhrases($categories, $language)
{
$phrases = null;
// Checks if categories is associative or indexed array
if (ctype_digit(implode('', array_keys($categories))))
{
// is indexed array -> Loads phrases
$isIndexArray = true;
$phrases = $this->_ci->PhraseModel->getPhrasesByCategoryAndLanguage($categories, $language);
}
else
{
// is assoc array -> Loads specific phrasentexte by category and phrases
$isIndexArray = false;
$phrases = $this->_ci->PhraseModel->getPhrasesByCategoryAndPhrasesAndLanguage($categories, $language);
}
// If language is not default language and phrasentext is null -> fallback to default language
if ($language != DEFAULT_LANGUAGE)
{
// get array with phrasentexte in the default language
$defaultPhrases = null;
if ($isIndexArray)
{
$defaultPhrases = $this->_ci->PhraseModel->getPhrasesByCategoryAndLanguage($categories, DEFAULT_LANGUAGE);
}
else
{
$defaultPhrases = $this->_ci->PhraseModel->getPhrasesByCategoryAndPhrasesAndLanguage($categories, DEFAULT_LANGUAGE);
}
// combine array with phrasentexte in users language and in default language
// (default used if phrasentext in users language is null or not set)
if (hasData($phrases) && hasData($defaultPhrases))
{
// loop through phrases in default language
foreach ($defaultPhrases->retval as $defaultPhrase)
{
$found = false; // flag for found phrase
// loop through phrases in users language
foreach ($phrases->retval as $phrase)
{
// if same phrase and category found and text is not null
// use phrase in users language
if ($phrase->phrase == $defaultPhrase->phrase
&& $phrase->category == $defaultPhrase->category
&& !is_null($phrase->text))
{
$found = true;
break;
}
}
// otherwise use phrase in default language
if (!$found)
{
array_push($phrases->retval, $defaultPhrase);
}
}
}
elseif (hasData($defaultPhrases))
{
$phrases = $defaultPhrases;
}
}
// If there are phrases loaded then store them in the property _phrases
if (hasData($phrases))
{
$this->_phrases = $phrases->retval;
}
}
/**
* Returns the property _phrases JSON encoded
* @return json encoded property _phrases
*/
public function getJSON()
{
return json_encode($this->_phrases);
}
}
+24 -6
View File
@@ -79,13 +79,31 @@ class Phrase_model extends DB_Model
}
/**
* Loads all categories
* Loads phrases using category(s) and language as keys using associative category array
* that contains also phrases for each category
*/
public function getCategories()
public function getPhrasesByCategoryAndPhrasesAndLanguage($phrasesParams, $language)
{
$query = 'SELECT DISTINCT category
FROM system.tbl_phrase';
$query = '
SELECT p.category, p.phrase, pt.orgeinheit_kurzbz, pt.orgform_kurzbz, pt.text
FROM system.tbl_phrase p
INNER JOIN system.tbl_phrasentext pt USING(phrase_id)
WHERE pt.sprache = ? AND (';
return $this->execQuery($query);
$parametersArray = array($language);
foreach ($phrasesParams as $category => $phrases)
{
$query .= '(category = ? AND phrase IN ?) OR ';
$parametersArray[] = $category;
$parametersArray[] = $phrases;
}
$query = rtrim($query, ' OR ');
$query .= ') ORDER BY p.category, p.phrase, pt.orgeinheit_kurzbz DESC, pt.orgform_kurzbz DESC';
return $this->execQuery($query, $parametersArray);
}
}
}
@@ -5,12 +5,17 @@
'title' => 'Info Center',
'jquery' => true,
'jqueryui' => true,
'ajaxlib' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'tablesorter' => true,
'ajaxlib' => true,
'filterwidget' => true,
'phrases' => array(
'person' => array('vorname', 'nachname'),
'global' => array('mailAnXversandt'),
'ui' => array('bitteEintragWaehlen')
),
'navigationwidget' => true,
'customCSSs' => 'public/css/sbadmin2/tablesort_bootstrap.css',
'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/infocenterPersonDataset.js')
@@ -27,12 +32,17 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">Infocenter <?php echo ucfirst($this->p->t('global', 'uebersicht')); ?></h3>
<h3 class="page-header">Infocenter
<?php echo ucfirst($this->p->t('global', 'uebersicht')); ?>
</h3>
</div>
</div>
<div>
<?php
$this->load->view('system/infocenter/infocenterData.php', array('fhc_controller_id' => $fhc_controller_id));
$this->load->view(
'system/infocenter/infocenterData.php',
array('fhc_controller_id' => $fhc_controller_id)
);
?>
</div>
</div>
@@ -63,6 +63,7 @@
FROM public.tbl_studiensemester
WHERE ende >= NOW()
)
AND not exists (select 1 from tbl_prestudentstatus psss where psss.prestudent_id = pss.prestudent_id and psss.status_kurzbz = \'Abgewiesener\' and psss.studiensemester_kurzbz = \'WS2018\')
ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC
LIMIT 1
) AS "SendDate",
@@ -151,7 +152,7 @@
),\', \'
) AS "StgAktiv",
pl.zeitpunkt AS "LockDate",
pl.lockuser as "LockUser",
pl.lockuser AS "LockUser",
pd.parkdate AS "ParkDate"
FROM public.tbl_person p
LEFT JOIN (SELECT person_id, zeitpunkt, uid as lockuser FROM system.tbl_person_lock WHERE app = \''.$APP.'\') pl USING(person_id)
@@ -214,7 +215,7 @@
ucfirst($this->p->t('global', 'gesperrtVon')),
ucfirst($this->p->t('global', 'parkdatum'))
),
'formatRaw' => function($datasetRaw) {
'formatRow' => function($datasetRaw) {
$datasetRaw->{'Details'} = sprintf(
'<a href="%s/%s?fhc_controller_id=%s">Details</a>',
@@ -299,18 +300,9 @@
}
);
$filterId = isset($_GET[InfoCenter::FILTER_ID]) ? $_GET[InfoCenter::FILTER_ID] : null;
if (isset($filterId) && is_numeric($filterId))
{
$filterWidgetArray[InfoCenter::FILTER_ID] = $filterId;
}
else
{
$filterWidgetArray['app'] = $APP;
$filterWidgetArray['datasetName'] = 'PersonActions';
$filterWidgetArray['filterKurzbz'] = 'InfoCenterNotSentApplicationAll';
}
$filterWidgetArray[InfoCenter::FILTER_ID] = $this->input->get(InfoCenter::FILTER_ID);
$filterWidgetArray['app'] = $APP;
$filterWidgetArray['datasetName'] = 'PersonActions';
echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray);
?>
@@ -7,11 +7,11 @@
'bootstrap' => true,
'fontawesome' => true,
'jqueryui' => true,
'ajaxlib' => true,
'tablesorter' => true,
'tinymce' => true,
'sbadmintemplate' => true,
'addons' => true,
'ajaxlib' => true,
'navigationwidget' => true,
'customCSSs' =>
array(
@@ -22,8 +22,33 @@
array(
'public/js/bootstrapper.js',
'public/js/tablesort/tablesort.js',
'public/js/infocenter/infocenterDetails.js')
'public/js/infocenter/infocenterDetails.js'
),
'phrases' =>
array(
'infocenter' =>
array(
'notizHinzufuegen',
'notizAendern',
'bewerberParken',
'bewerberAusparken',
'nichtsZumAusparken',
'fehlerBeimAusparken',
'fehlerBeimParken',
'bewerberGeparktBis'
),
'ui' =>
array(
'gespeichert',
'fehlerBeimSpeichern'
),
'global' =>
array(
'bis',
'zeilen'
)
)
)
);
?>
<body>
@@ -42,14 +67,16 @@
</div>
<div class="col-lg-4">
<div class="headerright text-right">
<?php echo $this->p->t('global', 'wirdBearbeitetVon') . ':' ?>
<?php
if (isset($lockedby)):
echo $this->p->t('global', 'wirdBearbeitetVon') . ': ';
echo $lockedby;
?>
&nbsp;&nbsp;
<a href="../unlockPerson/<?php echo $stammdaten->person_id; ?>?fhc_controller_id=<?php echo $fhc_controller_id; ?>"><i
class="fa fa-sign-out"></i>&nbsp;<?php echo ucfirst($this->p->t('ui', 'freigeben')) ?></a>
if (!isset($show_lock_link) || $show_lock_link === true): ?>
&nbsp;&nbsp;
<a href="../unlockPerson/<?php echo $stammdaten->person_id; ?>?fhc_controller_id=<?php echo $fhc_controller_id; ?>">
<i class="fa fa-sign-out"></i>&nbsp;<?php echo ucfirst($this->p->t('ui', 'freigeben')) ?>
</a>
<?php endif; ?>
<?php endif; ?>
</div>
</div>
@@ -59,7 +86,9 @@
<div class="row">
<div class="col-lg-12">
<div class="panel panel-primary">
<div class="panel-heading text-center"><h4><?php echo ucfirst($this->p->t('global','stammdaten')) ?></h4></div>
<div class="panel-heading text-center">
<h4><?php echo ucfirst($this->p->t('global', 'stammdaten')) ?></h4>
</div>
<div class="panel-body">
<?php $this->load->view('system/infocenter/stammdaten.php'); ?>
<?php $this->load->view('system/infocenter/anmerkungenZurBewerbung.php'); ?>
@@ -73,7 +102,9 @@
<div class="col-lg-12">
<div class="panel panel-primary">
<a name="DokPruef"></a><!-- anchor for jumping to the section -->
<div class="panel-heading text-center"><h4><?php echo ucfirst($this->p->t('infocenter','dokumentenpruefung')) ?></h4></div>
<div class="panel-heading text-center">
<h4><?php echo ucfirst($this->p->t('infocenter', 'dokumentenpruefung')) ?></h4>
</div>
<div class="panel-body">
<?php $this->load->view('system/infocenter/dokpruefung.php'); ?>
</div> <!-- ./panel-body -->
@@ -87,7 +118,8 @@
<div class="panel panel-primary">
<div class="panel-heading text-center">
<a name="ZgvPruef"></a>
<h4><?php echo $this->p->t('infocenter', 'zgv') . ' - ' . ucfirst($this->p->t('lehre','pruefung'))?></h4>
<h4><?php echo $this->p->t('infocenter', 'zgv'). ' - '.
ucfirst($this->p->t('lehre', 'pruefung'))?></h4>
</div>
<div class="panel-body">
<?php $this->load->view('system/infocenter/zgvpruefungen.php'); ?><!-- /.panel-group -->
@@ -102,7 +134,7 @@
<div class="panel panel-primary">
<div class="panel-heading text-center">
<a name="Nachrichten"></a>
<h4 class="text-center"><?php echo ucfirst($this->p->t('global','nachrichten')) ?></h4>
<h4 class="text-center"><?php echo ucfirst($this->p->t('global', 'nachrichten')) ?></h4>
</div>
<div class="panel-body">
<div class="row">
@@ -121,7 +153,8 @@
<div class="panel panel-primary">
<div class="panel-heading text-center">
<a name="NotizAkt"></a>
<h4 class="text-center"><?php echo ucfirst($this->p->t('global','notizen')) . ' & ' . ucfirst($this->p->t('global','aktivitaeten')) ?></h4>
<h4 class="text-center"><?php echo ucfirst($this->p->t('global', 'notizen')). ' & '.
ucfirst($this->p->t('global', 'aktivitaeten')) ?></h4>
</div>
<div class="panel-body">
<div class="row">
@@ -169,10 +169,10 @@
'additionalColumns' => array('Details'),
'columnsAliases' => array('PersonID','Vorname','Nachname','GebDatum','Nation','Letzte Aktion','Letzter Bearbeiter',
'StSem','GesendetAm','NumAbgeschickt','Studiengänge','Sperrdatum','GesperrtVon'),
'formatRaw' => function($datasetRaw) {
'formatRow' => function($datasetRaw) {
$datasetRaw->{'Details'} = sprintf(
'<a href="%s/%s?fhc_controller_id=%s">Details</a>',
'<a href="%s/%s?show_lock_link=0&fhc_controller_id=%s">Details</a>',
site_url('system/infocenter/InfoCenter/showDetails'),
$datasetRaw->{'PersonId'},
(isset($_GET['fhc_controller_id'])?$_GET['fhc_controller_id']:'')
@@ -17,13 +17,13 @@ $this->load->view(
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">Zugangsvoraussetzungen <?php echo $studiengang_kurzbz; ?> - <?php echo $studiengang_bezeichnung; ?></h3>
<h3 class="page-header"><?php echo $this->p->t('infocenter', 'zugangsvoraussetzungen'); ?> <?php echo $studiengang_kurzbz; ?> - <?php echo $studiengang_bezeichnung; ?></h3>
</div>
</div>
<div id="data">
<?php if (empty($data)): ?>
Keine Zugangsvoraussetzungen für den Studiengang definiert
<?php
<?php echo $this->p->t('infocenter', 'keineZugangsvoraussetzungenTxt'); ?>
<?php
else:
echo json_decode($data);
endif;
@@ -201,7 +201,7 @@
</div>
</div>
<div class="col-lg-<?php echo $columns[3] ?>">
<div class="form-group"><label><?php echo $this->p->t('infocenter', 'zgv') . ' ' . $this->p->t('lehre','master') . ' ' . $this->p->t('person','nation') . ':'?></label>
<div class="form-group"><label><?php echo $this->p->t('infocenter', 'zgv') . ' ' . $this->p->t('lehre','master') . ' ' . $this->p->t('person', 'nation') . ':'?></label>
<?php
if ($infoonly)
echo $zgvpruefung->zgvmanation_bez;
@@ -220,7 +220,7 @@
<div class="row">
<div class="col-xs-6 text-left">
<button type="button" class="btn btn-default zgvUebernehmen" id="zgvUebernehmen_<?php echo $zgvpruefung->prestudent_id ?>">
<?php echo $this->p->t('infocenter', 'letzteZgvUebernehmen') ?>
<?php echo $this->p->t('infocenter', 'letzteZgvUebernehmen') ?>
</button>
</div>
<div class="col-xs-6 text-right">
@@ -249,7 +249,7 @@
class="d-inline float-right"
required>
<option value="null"
selected="selected"><?php echo $this->p->t('infocenter', 'absagegrund', array($this->p->t('global', 'waehlen'))) . '...' ?>
selected="selected"><?php echo ucfirst($this->p->t('infocenter', 'absagegrund')) . '...' ?>
</option>
<?php foreach ($statusgruende as $statusgrund): ?>
<option value="<?php echo $statusgrund->statusgrund_id ?>"><?php echo $statusgrund->bezeichnung_mehrsprachig[0] ?></option>
@@ -323,7 +323,7 @@
data-toggle="modal"
data-target="#freigabeModal_<?php echo $zgvpruefung->prestudent_id ?>"
data-toggle="tooltip" title="<?php echo $disabledTxt ?>">
<?php echo $this->p->t('ui', 'freigabeAnStudiengang') ?>
<?php echo $this->p->t('ui', 'freigabeAnStudiengang') ?>
</button>
</div>
</div>
@@ -340,10 +340,10 @@
</button>
<h4 class="modal-title"
id="freigabeModalLabel">
<?php echo $this->p->t('global', 'freigabeBestaetigen') ?></h4>
<?php echo $this->p->t('infocenter', 'freigabeBestaetigen') ?></h4>
</div>
<div class="modal-body">
<?php echo $this->p->t('infocenter', 'interessentFreigebenTxt') ?>
<?php echo $this->p->t('infocenter', 'interessentFreigebenTxt') ?>
</div>
<div class="modal-footer">
<button type="button"
@@ -353,7 +353,7 @@
<a href="../saveFreigabe/<?php echo $zgvpruefung->prestudent_id ?>?fhc_controller_id=<?php echo $fhc_controller_id; ?>">
<button type="button"
class="btn btn-primary">
<?php echo $this->p->t('infocenter', 'interessentFreigeben') ?>
<?php echo $this->p->t('infocenter', 'interessentFreigeben') ?>
</button>
</a>
</div>
+31 -3
View File
@@ -11,6 +11,7 @@ $calledMethod = $this->router->method;
$title = isset($title) ? $title : null;
$customCSSs = isset($customCSSs) ? $customCSSs : null;
$customJSs = isset($customJSs) ? $customJSs : null;
$phrases = isset($phrases) ? $phrases : null;
// By default set the parameters to false
$jquery = isset($jquery) ? $jquery : false;
@@ -84,6 +85,25 @@ function _generateJSDataStorageObject($calledPath, $calledMethod)
echo $toPrint;
}
/**
* Generates global JS-Object to pass phrases to other javascripts
*/
function _generateJSPhrasesStorageObject($phrases)
{
$ci =& get_instance();
$ci->load->library('PhrasesLib', array($phrases), 'pj');
$toPrint = "\n";
$toPrint .= '<script type="text/javascript">';
$toPrint .= "\n";
$toPrint .= ' var FHC_JS_PHRASES_STORAGE_OBJECT = '.$ci->pj->getJSON().';';
$toPrint .= "\n";
$toPrint .= '</script>';
$toPrint .= "\n\n";
echo $toPrint;
}
/**
* Generates tags for the javascripts you want to include, the parameter could by a string or an array of strings
*/
@@ -184,6 +204,10 @@ function _generateAddonsJSsInclude($calledFrom)
// NOTE: must be called before any other JS include
_generateJSDataStorageObject($calledPath, $calledMethod);
// Generates the global object to pass phrases to javascripts
// NOTE: must be called before including the PhrasesLib.js
_generateJSPhrasesStorageObject($phrases);
// JQuery V3
if ($jquery === true) _generateJSsInclude('vendor/components/jquery/jquery.min.js');
@@ -194,9 +218,6 @@ function _generateAddonsJSsInclude($calledFrom)
_generateJSsInclude('vendor/components/jqueryui/ui/i18n/datepicker-de.js'); // datepicker german language file
}
// AjaxLib JS
if ($ajaxlib === true) _generateJSsInclude('public/js/AjaxLib.js');
// Bootstrap JS
if ($bootstrap === true) _generateJSsInclude('vendor/twbs/bootstrap/dist/js/bootstrap.min.js');
@@ -218,6 +239,13 @@ function _generateAddonsJSsInclude($calledFrom)
_generateJSsInclude('vendor/BlackrockDigital/startbootstrap-sb-admin-2/dist/js/sb-admin-2.min.js');
}
// AjaxLib JS
// NOTE: must be called before including others JS libraries that use it
if ($ajaxlib === true) _generateJSsInclude('public/js/AjaxLib.js');
// PhrasesLib JS
if ($phrases != null) _generateJSsInclude('public/js/PhrasesLib.js');
// FilterWidget JS
if($filterwidget === true) _generateJSsInclude('public/js/FilterWidget.js') ;
+9 -3
View File
@@ -1,12 +1,12 @@
<div class="row">
<div class="col-lg-12">
<div class="filter-name-title">
<?php FilterWidget::displayFilterName(); ?>
</div>
<!-- Filter name -->
<div class="filter-name-title"></div>
<br>
<!-- Filter options -->
<div class="panel-group">
<div class="panel panel-default">
<div class="panel-heading">
@@ -16,18 +16,21 @@
</div>
<div id="collapseFilterHeader" class="panel-collapse collapse">
<div class="filters-hidden-panel">
<!-- Filter fields options -->
<div>
<?php FilterWidget::loadViewSelectFields(); ?>
</div>
<br>
<!-- Filter filters options -->
<div>
<?php FilterWidget::loadViewSelectFilters(); ?>
</div>
<br>
<!-- Filter save options -->
<div>
<?php FilterWidget::loadViewSaveFilter(); ?>
</div>
@@ -38,12 +41,15 @@
<br>
<!-- Filter info top -->
<div id="datasetActionsTop"></div>
<!-- Filter table -->
<div>
<?php FilterWidget::loadViewTableDataset(); ?>
</div>
<!-- Filter info bottom -->
<div id="datasetActionsBottom"></div>
</div>
@@ -1,15 +1,15 @@
<br>
<div>
<span class="filter-options-span">
Filter description:
<span class="filter-span-label">
<?php echo ucfirst($this->p->t('global', 'beschreibung')); ?>:
</span>
<span>
<input type="text" id="customFilterDescription" value="">
<input type="text" id="customFilterDescription" class="input-text-custom-filter" value="">
</span>
<span>
<input type="button" id="saveCustomFilterButton" value="Save filter">
<input type="button" id="saveCustomFilterButton" value="<?php echo ucfirst($this->p->t('ui', 'speichern')); ?>">
</span>
</div>
@@ -1,11 +1,11 @@
<div id="filterSelectFieldsDnd" class="filter-select-fields-dnd-div"></div>
<div id="dragAndDropFieldsArea" class="drag-and-drop-fields-area"></div>
<div>
<span class="filter-options-span">
Add field:
<span class="filter-span-label">
<?php echo ucfirst($this->p->t('filter', 'feldHinzufuegen')); ?>:
</span>
<span>
<select id="addField"></select>
<select id="addField" class="drop-down-fields"></select>
</span>
</div>
@@ -1,17 +1,17 @@
<br>
<div id="selectedFilters"></div>
<div id="appliedFilters"></div>
<div>
<span class="filter-options-span">
Add filter:
<span class="filter-span-label">
<?php echo ucfirst($this->p->t('filter', 'filterHinzufuegen')); ?>:
</span>
<span>
<select id="addFilter"></select>
<select id="addFilter" class="drop-down-filters"></select>
</span>
<span>
<input id="applyFilter" type="button" value="Apply filter">
<input id="applyFilter" type="button" value="<?php echo ucfirst($this->p->t('global', 'hinzufuegen')); ?>">
</span>
</div>
File diff suppressed because it is too large Load Diff
+49 -17
View File
@@ -1,17 +1,49 @@
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<?php
// put your code here
?>
</body>
</html>
<?php
require_once('../../../../config/cis.config.inc.php');
require_once('../../../../include/studiensemester.class.php');
require_once('../../../../include/functions.inc.php');
require_once('../../../../include/benutzerberechtigung.class.php');
require_once('../../../../include/pruefungCis.class.php');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Prüfung</title>
<link rel="stylesheet" href="../../../../skin/fhcomplete.css">
<link rel="stylesheet" href="../../../../skin/style.css.php">
</head>
<body>
<h1>Prüfungen</h1>
<?php
$pruefungsverwaltung = false;
$uid = get_uid();
$db = new basis_db();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
$studiensemester = new studiensemester();
$pruefung = new pruefungCis();
$pruefung->getPruefungByMitarbeiter($uid, $studiensemester->getaktorNext());
if(!empty($pruefung->result) || $rechte->isBerechtigt('lehre/pruefungsanmeldungAdmin'))
$pruefungsverwaltung = true;
echo '<ul>';
if ($rechte->isBerechtigt('lehre/pruefungsfenster'))
echo '<li><a href="pruefungsfenster_anlegen.php">Prüfungsfenster verwalten</a></li>';
if($pruefungsverwaltung)
{
echo '<li><a href="pruefungstermin_festlegen.php">Prüfungstermine verwalten</a></li>';
echo '<li><a href="pruefungsanmeldungen_verwalten.php">Anmeldungen verwalten</a></li>';
echo '<li><a href="pruefungsbewertung.php">Bewertung</a><br><br></li>';
}
echo '<li><a href="pruefungsanmeldung.php">Anmeldung zur Prüfung</a></li>';
echo '</ul>';
?>
</body>
</html>
@@ -21,19 +21,19 @@
require_once('../../../../config/cis.config.inc.php');
require_once('../../../../include/basis_db.class.php');
require_once('../../../../include/mitarbeiter.class.php');
require_once('../../../../include/mitarbeiter.class.php');
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
if(isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete']=='lektor')
{
$search=trim((isset($_REQUEST['term']) ? $_REQUEST['term']:''));
if (is_null($search) ||$search=='')
exit();
$mitarbeiter = new mitarbeiter();
exit();
$mitarbeiter = new mitarbeiter();
$searchItems = explode(' ',$search);
if($mitarbeiter->search($search))
if ($mitarbeiter->search($search))
{
$result_obj = array();
foreach($mitarbeiter->result as $row)
@@ -47,4 +47,4 @@ if(isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete']=='lektor')
}
exit;
}
?>
?>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+259 -247
View File
@@ -1,4 +1,3 @@
<!DOCTYPE html>
<?php
/*
* Copyright 2014 fhcomplete.org
@@ -37,18 +36,18 @@ $sprache = getSprache();
$lang = new sprache();
$lang->load($sprache);
$p = new phrasen($sprache);
//TODO
$uid = get_uid();
if(isset($_GET['uid']))
if (isset($_GET['uid']))
{
// Administratoren duerfen die UID als Parameter uebergeben um den Studienplan
// von anderen Personen anzuzeigen
// Administratoren duerfen die UID als Parameter uebergeben um den Studienplan
// von anderen Personen anzuzeigen
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
if($rechte->isBerechtigt('admin'))
$uid=$_GET['uid'];
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
if ($rechte->isBerechtigt('admin'))
$uid = $_GET['uid'];
}
$db = new basis_db();
@@ -60,277 +59,290 @@ $benutzer = new student($uid);
$studiensemester = new studiensemester();
$studiensemester->getAll();
?>
?><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Prüfungsanmeldung</title>
<script src="../../../../include/js/datecheck.js"></script>
<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 src="./pruefung.js.php"></script>
<link rel="stylesheet" href="../../../../skin/jquery-ui-1.9.2.custom.min.css">
<link rel="stylesheet" href="../../../../skin/fhcomplete.css">
<link rel="stylesheet" href="../../../../skin/style.css.php">
<link rel="stylesheet" href="../../../../skin/tablesort.css">
<style type="text/css">
#pruefungen, #prfTermine {
width: 50%;
}
#details {
width: 50%;
/* margin-left: 1.5em;*/
}
#lvDetails, #prfDetails {
min-width: 40%;
margin-bottom: 1em;
margin-left: 1.5em;
float:left;
/*border: 1px solid black;*/
}
/* #prfDetails {
float:right;
}*/
#accordion {
width: 60%;
clear: left;
clear: right;
}
.titel {
font-weight: bold;
}
#message {
position: fixed;
bottom: 0px;
width: 100%;
height: 2em;
font-size: 1.5em;
font-weight: bold;
}
.columnheader1 {
width: 30%;
}
.columnheader2 {
width: 30%;
}
.columnheader3 {
width: 30%;
}
.columnheader4 {
width: 5%;
}
#accordion p {
margin: 0;
height: 24px;
}
</style>
</head>
<body>
<script>
var count = 0;
$(document).ajaxSend(function(event, xhr, options){
count++;
});
$(document).ajaxComplete(function(event, xhr, settings){
count--;
//Wenn alle AJAX-Request fertig sind
if(count===0)
<head>
<meta charset="UTF-8">
<title>Prüfungsanmeldung</title>
<script src="../../../../include/js/datecheck.js"></script>
<script type="text/javascript" src="../../../../vendor/components/jquery/jquery.min.js"></script>
<script type="text/javascript" src="../../../../vendor/mottie/tablesorter/dist/js/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../../../vendor/mottie/tablesorter/dist/js/jquery.tablesorter.widgets.min.js"></script>
<script type="text/javascript" src="../../../../vendor/mottie/tablesorter/dist/js/extras/jquery.tablesorter.pager.min.js"></script>
<script type="text/javascript" src="../../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../../../vendor/components/jqueryui/ui/i18n/datepicker-de.js"></script>
<script src="./pruefung.js.php"></script>
<link rel="stylesheet" href="../../../../vendor/components/jqueryui/themes/base/jquery-ui.min.css">
<link rel="stylesheet" href="../../../../skin/fhcomplete.css">
<link rel="stylesheet" href="../../../../skin/style.css.php">
<link rel="stylesheet" href="../../../../vendor/mottie/tablesorter/dist/css/theme.default.min.css">
<link rel="stylesheet" href="../../../../vendor/mottie/tablesorter/dist/css/jquery.tablesorter.pager.min.css">
<style type="text/css">
#pruefungen, #prfTermine
{
$("#accordion").accordion({
header: "h2",
autoHeight: false
});
$("#accordion").attr("style", "visibility: visible;");
width: 50%;
}
#details
{
width: 50%;
}
#lvDetails, #prfDetails
{
min-width: 40%;
margin-bottom: 1em;
margin-left: 1.5em;
float:left;
}
#accordion
{
width: 60%;
clear: left;
clear: right;
}
.titel
{
font-weight: bold;
}
#message
{
position: fixed;
bottom: 0px;
width: 100%;
height: 2em;
font-size: 1.5em;
font-weight: bold;
}
.columnheader1
{
width: 30%;
}
.columnheader2
{
width: 30%;
}
.columnheader3
{
width: 30%;
}
.columnheader4
{
width: 5%;
}
});
$(document).ready(function(){
#accordion p
{
margin: 0;
height: 24px;
}
</style>
<script>
var count = 0;
$(document).ajaxSend(function(event, xhr, options){
//count++;
});
$(document).ajaxComplete(function(event, xhr, settings)
{
//count--;
//Wenn alle AJAX-Request fertig sind
if (count===0)
{
$("#accordion").accordion({
header: "h2",
autoHeight: false
});
$("#accordion").attr("style", "visibility: visible;");
}
});
$(document).ready(function()
{
loadPruefungen();
loadPruefungenOfStudiengang();
loadPruefungenGesamt();
$("#saveDialog").dialog({
modal: true,
autoOpen: false,
width: "auto"
modal: true,
autoOpen: false,
width: "auto"
});
$("#dialog").dialog({ autoOpen: false });
$("#details").dialog({
modal: true,
autoOpen: false,
width: "400px"
modal: true,
autoOpen: false,
width: "400px"
});
$(document).tooltip({
position: {
at: "right center",
my: "left+15 center"
}
});
});
<?php
echo '
function openAnmeldung(lehrveranstaltung_id, stsem)
{
$("#dialog").load("../../profile/studienplan.php?getAnmeldung=true&lehrveranstaltung_id="+lehrveranstaltung_id+"&stsem="+stsem+"&uid='.$db->convert_html_chars($uid).'");
$("#dialog").dialog("open");
}'
;
?>
</script>
<h1><?php echo $p->t('pruefung/anmeldungFuer'); ?> <?php echo $benutzer->vorname." ".$benutzer->nachname." (".$uid.")"; ?></h1>
});
<?php
echo '<h3>'.$p->t('pruefung/filter').'</h3>';
echo '<p>'.$p->t('global/studiensemester').': ';
echo '<select id="filter_studiensemester" onchange="refresh();">';
$aktuellesSemester = $studiensemester->getaktorNext();
foreach($studiensemester->studiensemester as $sem)
{
if($aktuellesSemester == $sem->studiensemester_kurzbz)
echo '
function openAnmeldung(lehrveranstaltung_id, stsem)
{
$("#dialog").load("../../profile/studienplan.php?getAnmeldung=true&lehrveranstaltung_id="+lehrveranstaltung_id+"&stsem="+stsem+"&uid='.$db->convert_html_chars($uid).'");
$("#dialog").dialog("open");
}';
?>
</script>
</head>
<body>
<?php
echo "<h1>".$p->t('pruefung/anmeldungFuer')." ".$benutzer->vorname." ".$benutzer->nachname." (".$uid.")</h1>";
echo '<h3>'.$p->t('pruefung/filter').'</h3>';
echo '<p>'.$p->t('global/studiensemester').': ';
echo '<select id="filter_studiensemester" onchange="refresh();">';
$aktuellesSemester = $studiensemester->getaktorNext();
foreach ($studiensemester->studiensemester as $sem)
{
if ($aktuellesSemester == $sem->studiensemester_kurzbz)
{
echo '<option selected value="'.$sem->studiensemester_kurzbz.'">'.$sem->studiensemester_kurzbz.'</option>';
echo '<option selected value="'.$sem->studiensemester_kurzbz.'">'.$sem->studiensemester_kurzbz.'</option>';
}
else
{
echo '<option value="'.$sem->studiensemester_kurzbz.'">'.$sem->studiensemester_kurzbz.'</option>';
echo '<option value="'.$sem->studiensemester_kurzbz.'">'.$sem->studiensemester_kurzbz.'</option>';
}
}
echo '</select></p>';
?>
<div id="details" title="<?php echo $p->t('pruefung/details'); ?>">
<div id="lvDetails">
}
echo '</select></p>';
?>
<div id="details" title="<?php echo $p->t('pruefung/details'); ?>">
<div id="lvDetails">
<h1><?php echo $p->t('pruefung/lvDetails'); ?></h1>
<span class="titel"><?php echo $p->t('global/bezeichnung'); ?>: </span><span id="lvBez"></span><br/>
<span class="titel"><?php echo $p->t('global/bezeichnung'); ?>: </span><span id="lvBez"></span><br/>
<span class="titel"><?php echo $p->t('global/ects'); ?>: </span><span id="lvEcts"></span><br/>
</div>
</div>
<div id="prfDetails">
<div id="prfDetails">
<h1><?php echo $p->t('pruefung/pruefungsDetails'); ?></h1>
<span class="titel"><?php echo $p->t('pruefung/typ'); ?>: </span><span id="prfTyp"></span><br/>
<span class="titel"><?php echo $p->t('pruefung/pruefungMethode'); ?>: </span><span id="prfMethode"></span><br/>
<span class="titel"><?php echo $p->t('global/beschreibung'); ?>: </span><span id="prfBeschreibung"></span><br/>
<span id="prfEinzeln"></span><br/>
<span class="titel"><?php echo $p->t('pruefung/typ'); ?>: </span><span id="prfTyp"></span><br/>
<span class="titel"><?php echo $p->t('pruefung/pruefungMethode'); ?>: </span><span id="prfMethode"></span><br/>
<span class="titel"><?php echo $p->t('global/beschreibung'); ?>: </span><span id="prfBeschreibung"></span><br/>
<span id="prfEinzeln"></span><br/>
<span class="titel" style="visibility: hidden;"><?php echo $p->t('pruefung/intervall'); ?>: </span><span id="prfIntervall"></span><br/>
</div>
</div>
<div id="message"></div>
<div id="accordion" style="visibility: hidden;">
<h2><?php echo $p->t('pruefung/besuchteLehrveranstaltungen'); ?></h2>
<div>
</div>
</div>
<div id="message"></div>
<div id="accordion" style="visibility: hidden;">
<h2><?php echo $p->t('pruefung/besuchteLehrveranstaltungen'); ?></h2>
<div>
<table id="table1" class="tablesorter">
<thead>
<tr>
<th class="columnheader1"><?php echo $p->t('global/institut'); ?></th>
<th class="columnheader2"><?php echo $p->t('global/lehrveranstaltung'); ?></th>
<th class="columnheader3"><?php echo $p->t('pruefung/pruefungTermin'); ?></th>
<th class="columnheader4"><?php echo $p->t('pruefung/freiePlaetze'); ?></th>
</tr>
</thead>
<tbody id="pruefungen">
<thead>
<tr>
<th class="columnheader1"><?php echo $p->t('global/institut'); ?></th>
<th class="columnheader2"><?php echo $p->t('global/lehrveranstaltung'); ?></th>
<th class="columnheader3"><?php echo $p->t('pruefung/pruefungTermin'); ?></th>
<th class="columnheader4"><?php echo $p->t('pruefung/freiePlaetze'); ?></th>
</tr>
</thead>
<tbody id="pruefungen">
</tbody>
</tbody>
</table>
</div>
<?php if(!defined('CIS_PRUEFUNGSANMELDUNG_LEHRVERANSTALTUNGEN_AUS_STUDIENGANG') || CIS_PRUEFUNGSANMELDUNG_LEHRVERANSTALTUNGEN_AUS_STUDIENGANG == true): ?>
<h2><?php echo $p->t('pruefung/lvVonStudiengang'); ?></h2>
<div>
</div>
<?php
if (!defined('CIS_PRUEFUNGSANMELDUNG_LEHRVERANSTALTUNGEN_AUS_STUDIENGANG')
|| CIS_PRUEFUNGSANMELDUNG_LEHRVERANSTALTUNGEN_AUS_STUDIENGANG == true):
?>
<h2><?php echo $p->t('pruefung/lvVonStudiengang'); ?></h2>
<div>
<table id="table2" class="tablesorter">
<thead>
<tr>
<th class="columnheader1"><?php echo $p->t('global/institut'); ?></th>
<th class="columnheader2"><?php echo $p->t('global/lehrveranstaltung'); ?></th>
<th class="columnheader3"><?php echo $p->t('pruefung/pruefungTermin'); ?></th>
<th class="columnheader4"><?php echo $p->t('pruefung/freiePlaetze'); ?></th>
</tr>
</thead>
<tbody id="pruefungenStudiengang">
</tbody>
<thead>
<tr>
<th class="columnheader1"><?php echo $p->t('global/institut'); ?></th>
<th class="columnheader2"><?php echo $p->t('global/lehrveranstaltung'); ?></th>
<th class="columnheader3"><?php echo $p->t('pruefung/pruefungTermin'); ?></th>
<th class="columnheader4"><?php echo $p->t('pruefung/freiePlaetze'); ?></th>
</tr>
</thead>
<tbody id="pruefungenStudiengang">
</tbody>
</table>
</div>
<?php endif; ?>
<h2><?php echo $p->t('pruefung/lvAlle'); ?></h2>
<div>
</div>
<?php endif; ?>
<h2><?php echo $p->t('pruefung/lvAlle'); ?></h2>
<div>
<table id="table3" class="tablesorter">
<thead>
<tr>
<th class="columnheader1"><?php echo $p->t('global/institut'); ?></th>
<th class="columnheader2"><?php echo $p->t('global/lehrveranstaltung'); ?></th>
<th class="columnheader3"><?php echo $p->t('pruefung/pruefungTermin'); ?></th>
<th class="columnheader4"><?php echo $p->t('pruefung/freiePlaetze'); ?></th>
</tr>
</thead>
<tbody id="pruefungenGesamt">
<thead>
<tr>
<th class="columnheader1"><?php echo $p->t('global/institut'); ?></th>
<th class="columnheader2"><?php echo $p->t('global/lehrveranstaltung'); ?></th>
<th class="columnheader3"><?php echo $p->t('pruefung/pruefungTermin'); ?></th>
<th class="columnheader4"><?php echo $p->t('pruefung/freiePlaetze'); ?></th>
</tr>
</thead>
<tbody id="pruefungenGesamt">
</tbody>
</tbody>
</table>
</div>
</div>
<div id="saveDialog" title="<?php echo $p->t('pruefung/anmeldungSpeichern'); ?>">
<form id="saveAnmeldungForm">
</div>
<div id="saveDialog" title="<?php echo $p->t('pruefung/anmeldungSpeichern'); ?>">
<form id="saveAnmeldungForm">
<table id="neueAnmeldung">
<tr>
<td>&nbsp;</td>
<td>
<input type="hidden" id="lehrveranstaltungHidden" disabled="true">
<input type="hidden" id="terminHidden" disabled="true">
</td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold;"><?php echo $p->t('global/lehrveranstaltung'); ?>: </td>
<td>
<span id="lehrveranstaltung"></span>
</td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold;"><?php echo $p->t('global/von'); ?>: </td>
<td>
<span id="terminVon"></span>
</td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold;"><?php echo $p->t('global/bis'); ?>: </td>
<td>
<span type="text" id="terminBis" disabled="true"></span>
</td>
</tr>
<?php if(!defined('CIS_PRUEFUNGSANMELDUNG_ANRECHNUNG') || CIS_PRUEFUNGSANMELDUNG_ANRECHNUNG == true): ?>
<tr>
<td style="vertical-align: top; font-weight: bold;"><?php echo $p->t('pruefung/studienverpflichtung'); ?>:* </td>
<td>
<select id="studienverpflichtung"></select>
</td>
</tr>
<?php endif; ?>
<tr id="studiengang">
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold;"><?php echo $p->t('global/anmerkung'); ?>: </td>
<td>
<textarea id="anmeldungBemerkung" rows="10" cols="20"></textarea>
</td>
</tr>
<tr>
<td><input type="button" value="<?php echo $p->t('global/anmelden'); ?>" onclick="saveAnmeldung();"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>
<input type="hidden" id="lehrveranstaltungHidden" disabled="true">
<input type="hidden" id="terminHidden" disabled="true">
</td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold;">
<?php echo $p->t('global/lehrveranstaltung'); ?>:
</td>
<td>
<span id="lehrveranstaltung"></span>
</td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold;">
<?php echo $p->t('global/von'); ?>:
</td>
<td>
<span id="terminVon"></span>
</td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold;">
<?php echo $p->t('global/bis'); ?>:
</td>
<td>
<span type="text" id="terminBis" disabled="true"></span>
</td>
</tr>
<?php
if (!defined('CIS_PRUEFUNGSANMELDUNG_ANRECHNUNG')
|| CIS_PRUEFUNGSANMELDUNG_ANRECHNUNG == true):
?>
<tr>
<td style="vertical-align: top; font-weight: bold;">
<?php echo $p->t('pruefung/studienverpflichtung'); ?>:*
</td>
<td>
<select id="studienverpflichtung"></select>
</td>
</tr>
<?php endif; ?>
<tr id="studiengang">
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold;">
<?php echo $p->t('global/anmerkung'); ?>:
</td>
<td>
<textarea id="anmeldungBemerkung" rows="10" cols="20"></textarea>
</td>
</tr>
<tr>
<td><input type="button" value="<?php echo $p->t('global/anmelden'); ?>" onclick="saveAnmeldung();"></td>
</tr>
</table>
</form>
</div>
<div id="dialog">
</div>
</body>
</form>
</div>
<div id="dialog">
</div>
</body>
</html>
@@ -17,6 +17,11 @@
*
* Authors: Manfred Kindl <manfred.kindl@technikum-wien.at>
*/
/**
* Erstellt die Prüfungsliste im PDF Format.
* Wird keine Dokumentenvorlage gefunden wird stattdessen auf
* die HTML Version umgeleitet
*/
require_once('../../../../config/cis.config.inc.php');
require_once('../../../../include/dokument_export.class.php');
require_once('../../../../include/benutzerberechtigung.class.php');
@@ -46,18 +51,18 @@ $p = new phrasen($sprache);
$berechtigung = new benutzerberechtigung();
$berechtigung->getBerechtigungen($user);
if(isset($_GET['lehrveranstaltung_id']) && is_numeric($_GET['lehrveranstaltung_id']))
if (isset($_GET['lehrveranstaltung_id']) && is_numeric($_GET['lehrveranstaltung_id']))
$lvid = $_GET['lehrveranstaltung_id'];
else
die('Eine gueltige LvID muss uebergeben werden');
if(isset($_GET['studiensemester']))
if (isset($_GET['studiensemester']))
$studiensemester = $_GET['studiensemester'];
else
die('Eine Studiensemester muss uebergeben werden');
if(isset($_GET['termin_id']) && is_numeric($_GET['termin_id']))
$termin_id = $_GET['termin_id'];
if (isset($_GET['termin_id']) && is_numeric($_GET['termin_id']))
$termin_id = $_GET['termin_id'];
else
die('Eine Termin-ID muss uebergeben werden');
@@ -65,12 +70,12 @@ $vorlagecheck = new vorlage();
if (!$vorlagecheck->loadVorlage('Pruefungslist'))
header('Location: pruefungsanmeldungen_liste.php?termin_id='.$termin_id.'&lehrveranstaltung_id='.$lvid.'&studiensemester='.$studiensemester);
if(!$berechtigung->isBerechtigt('admin') && !$berechtigung->isBerechtigt('assistenz') && !check_lektor_lehrveranstaltung($user,$lvid,$studiensemester))
if (!$berechtigung->isBerechtigt('admin') && !$berechtigung->isBerechtigt('assistenz') && !check_lektor_lehrveranstaltung($user,$lvid,$studiensemester))
die('Sie muessen LektorIn der LV oder Admin sein, um diese Seite aufrufen zu koennen');
$output='pdf';
if(isset($_GET['output']) && ($output='odt' || $output='doc'))
if (isset($_GET['output']) && ($output='odt' || $output='doc'))
$output=$_GET['output'];
@@ -80,7 +85,6 @@ $lv->load($lvid);
$doc = new dokument_export('Pruefungslist');
$stg = new studiengang();
$stg->load($lv->studiengang_kz);
@@ -94,7 +98,7 @@ $pruefungsanmeldung = new pruefungsanmeldung();
$anmeldungen = $pruefungsanmeldung->getAnmeldungenByTermin($termin_id, $lvid, $studiensemester, "bestaetigt");
$lehrveranstaltung = new lehrveranstaltung($lvid);
$einzeln = FALSE;
if(!empty($anmeldungen))
if (!empty($anmeldungen))
{
$pruefung = new pruefungCis($anmeldungen[0]->pruefung_id);
$pruefungstermin = new pruefungstermin($anmeldungen[0]->pruefungstermin_id);
@@ -102,7 +106,6 @@ if(!empty($anmeldungen))
$dozent = $mitarbeiter->getFullName(FALSE);
$termin_datum = $datum->formatDatum($pruefungstermin->von, "d.m.Y - H:i");
$data = array(
'bezeichnung'=>$lv->bezeichnung,
'lehrveranstaltung_id'=>$lv->lehrveranstaltung_id,
@@ -122,7 +125,7 @@ if(!empty($anmeldungen))
$student = new student($anmeldung->uid);
$prfTermin = new pruefungstermin($anmeldung->pruefungstermin_id);
if($einzeln)
if ($einzeln)
{
$date = $datum->formatDatum($prfTermin->von, "Y-m-d H:i:s");
$date = strtotime($date);
@@ -136,10 +139,10 @@ if(!empty($anmeldungen))
$count++;
}
// Es soll das Datum der Anmeldung angezeigt werden
if ($anmeldung->datum_anmeldung)
$date = $datum->formatDatum($anmeldung->datum_anmeldung, "d.m.Y");
else
$date = '';
if ($anmeldung->datum_anmeldung)
$date = $datum->formatDatum($anmeldung->datum_anmeldung, "d.m.Y");
else
$date = '';
$data[] = array('student'=>array(
'count' => $count,
@@ -153,19 +156,15 @@ if(!empty($anmeldungen))
}
$doc->addDataArray($data,'pruefungsliste');
//header("Content-type: application/xhtml+xml");
//echo $doc->ConvertArrayToXML($data,'anwesenheitsliste');
//exit;
if(!$doc->create($output))
if (!$doc->create($output))
die($doc->errormsg);
$doc->output();
$doc->close();
}
else {
else
{
echo $p->t('pruefung/keineBestaetigtenAnmeldungenVorhanden');
}
@@ -1,4 +1,3 @@
<!DOCTYPE html>
<?php
/*
* Copyright 2014 fhcomplete.org
@@ -45,145 +44,145 @@ $p = new phrasen($sprache);
$uid = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
?>
?><!DOCTYPE html>
<html moznomarginboxes="">
<head>
<meta charset="UTF-8">
<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>
<style type="text/css">
body {
margin: 0;
padding: 0;
}
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="../../../../vendor/components/jquery/jquery.min.js"></script>
<script type="text/javascript" src="../../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<style type="text/css">
body {
margin: 0;
padding: 0;
}
* {
box-sizing: border-box;
-moz-box-sizing: border-box;
}
* {
box-sizing: border-box;
-moz-box-sizing: border-box;
}
#page {
width: 210mm;
min-height: 297mm;
padding: 20mm;
margin: 10mm auto;
border: 1px #ffffff solid;
border-radius: 5px;
background: white;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
font-family: Arial, Helvetica;
}
#subpage {
padding: 10mm;
border: 1px white solid;
height: 256mm;
outline: 20mm
}
#liste {
border: 1px solid black;
border-collapse: collapse;
width: 100%;
margin-top: 5mm;
font-size: 11pt;
}
h1 {
text-align: center;
}
.bold {
font-weight: bold;
}
td {
border: 1px solid black;
padding: 1mm;
}
th {
border: 1px solid black;
}
thead > tr {
background-color: white !important;
}
tr:nth-child(odd){
background-color: lightgrey;
}
span {
line-height: 16pt;
font-size: 12pt;
}
@page {
size: A4;
margin: 0;
}
@media print {
html, body {
width: 210mm;
height: 250mm;
}
#page {
margin: 0;
border: initial;
border-radius: initial;
width: initial;
min-height: initial;
box-shadow: initial;
background: initial;
page-break-after: auto;
width: 210mm;
min-height: 297mm;
padding: 20mm;
margin: 10mm auto;
border: 1px #ffffff solid;
border-radius: 5px;
background: white;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
font-family: Arial, Helvetica;
}
/*
* Workaround um beim Drucken jede zweite Zeile der Tabelle
* grau darzustellen. Standardmäßig werden von Browsern keine
* Hintergrundfarben gedruckt.
*/
tr:nth-child(odd) > td{
box-shadow: inset 0 0 0 1000px lightgrey;
#subpage {
padding: 10mm;
border: 1px white solid;
height: 256mm;
outline: 20mm;
}
//Veranlasst Chrome Hintergrundfarben zu drucken
body{
-webkit-print-color-adjust:exact;
background-color: #FFFFFF;
margin: 0;
#liste {
border: 1px solid black;
border-collapse: collapse;
width: 100%;
margin-top: 5mm;
font-size: 11pt;
}
//Anweisungen nur für Firefox
@-moz-document url-prefix() {
html, body {
height: 280mm;
}
h1 {
text-align: center;
}
@-moz-document url-prefix() {
#page {
padding: 15mm 25mm 25mm 15mm !important;
}
.bold {
font-weight: bold;
}
td {
border: 1px solid black;
padding: 1mm;
}
th {
border: 1px solid black;
}
thead > tr {
background-color: white !important;
}
tr:nth-child(odd){
background-color: lightgrey;
}
span {
line-height: 16pt;
font-size: 12pt;
}
@page {
size: A4;
margin: 0;
}
@media print
{
html, body {
width: 210mm;
height: 250mm;
}
#page {
margin: 0;
border: initial;
border-radius: initial;
width: initial;
min-height: initial;
box-shadow: initial;
background: initial;
page-break-after: auto;
}
/*
* Workaround um beim Drucken jede zweite Zeile der Tabelle
* grau darzustellen. Standardmäßig werden von Browsern keine
* Hintergrundfarben gedruckt.
*/
tr:nth-child(odd) > td{
box-shadow: inset 0 0 0 1000px lightgrey;
}
//Veranlasst Chrome Hintergrundfarben zu drucken
body{
-webkit-print-color-adjust:exact;
background-color: #FFFFFF;
margin: 0;
}
//Anweisungen nur für Firefox
@-moz-document url-prefix() {
html, body {
height: 280mm;
}
}
@-moz-document url-prefix() {
#page {
padding: 15mm 25mm 25mm 15mm !important;
}
}
}
}
</style>
</head>
<body>
</head>
<body>
<script>
$(document).ready(function(){
window.print();
});
$(document).ready(function()
{
window.print();
});
</script>
<div id="page">
<div id="subpage">
<h1><?php echo $p->t('pruefung/anmeldungsliste'); ?></h1>
<div id="subpage">
<h1><?php echo $p->t('pruefung/anmeldungsliste'); ?></h1>
<?php
if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungAdmin'))
die('Sie haben keine Berechtigung für diese Seite');
die('Sie haben keine Berechtigung für diese Seite');
$termin_id = filter_input(INPUT_GET,"termin_id");
$lehrveranstaltung_id = filter_input(INPUT_GET,"lehrveranstaltung_id");
@@ -191,42 +190,42 @@ $rechte->getBerechtigungen($uid);
if(is_null($lehrveranstaltung_id))
{
die($p->t('pruefung/fehlenderParam_lvid'));
die($p->t('pruefung/fehlenderParam_lvid'));
}
else if(is_null($termin_id))
{
die($p->t('pruefung/fehlenderParam_terminid'));
die($p->t('pruefung/fehlenderParam_terminid'));
}
else if(is_null($studiensemester))
{
die($p->t('pruefung/fehlenderParam_studiensemester'));
die($p->t('pruefung/fehlenderParam_studiensemester'));
}
else
{
$datum = new datum();
$stdsem = new studiensemester($studiensemester);
$pruefungsanmeldung = new pruefungsanmeldung();
$anmeldungen = $pruefungsanmeldung->getAnmeldungenByTermin($termin_id, $lehrveranstaltung_id, $studiensemester, "bestaetigt");
$lehrveranstaltung = new lehrveranstaltung($lehrveranstaltung_id);
$einzeln = FALSE;
if(!empty($anmeldungen))
{
$datum = new datum();
$stdsem = new studiensemester($studiensemester);
$pruefungsanmeldung = new pruefungsanmeldung();
$anmeldungen = $pruefungsanmeldung->getAnmeldungenByTermin($termin_id, $lehrveranstaltung_id, $studiensemester, "bestaetigt");
$lehrveranstaltung = new lehrveranstaltung($lehrveranstaltung_id);
$einzeln = FALSE;
if(!empty($anmeldungen))
{
$pruefung = new pruefungCis($anmeldungen[0]->pruefung_id);
$pruefungstermin = new pruefungstermin($anmeldungen[0]->pruefungstermin_id);
$mitarbeiter = new mitarbeiter($pruefung->mitarbeiter_uid);
if($pruefung->einzeln)
{
$einzeln = TRUE;
$pruefungsintervall = $pruefung->pruefungsintervall;
$einzeln = TRUE;
$pruefungsintervall = $pruefung->pruefungsintervall;
}
?>
<span class="bold"><?php echo $p->t('global/lehrveranstaltung'); ?>: </span><span><?=$lehrveranstaltung->bezeichnung?></span><br/>
<span class="bold"><?php echo $p->t('global/studiensemester'); ?>: </span><span><?=$stdsem->bezeichnung?></span><br/>
<span class="bold"><?php echo $p->t('pruefung/pruefer'); ?>: </span><span><?=$mitarbeiter->getFullName(FALSE)?></span><br/>
<table id="liste">
?>
<span class="bold"><?php echo $p->t('global/lehrveranstaltung'); ?>: </span><span><?=$lehrveranstaltung->bezeichnung?></span><br/>
<span class="bold"><?php echo $p->t('global/studiensemester'); ?>: </span><span><?=$stdsem->bezeichnung?></span><br/>
<span class="bold"><?php echo $p->t('pruefung/pruefer'); ?>: </span><span><?=$mitarbeiter->getFullName(FALSE)?></span><br/>
<table id="liste">
<thead>
<tr>
<tr>
<th>#</th>
<th><?php echo $p->t('global/vorname'); ?></th>
<th><?php echo $p->t('global/nachname'); ?></th>
@@ -234,31 +233,31 @@ $rechte->getBerechtigungen($uid);
<th><?php echo $p->t('global/datum'); ?></th>
<th><?php echo $p->t('benotungstool/note'); ?></th>
<th><?php echo $p->t('global/anmerkung'); ?></th>
</tr>
</tr>
</thead>
<tbody>
<?php
<?php
$count = 0;
/*@var $anmeldung pruefungsanmeldung */
foreach($anmeldungen as $anmeldung)
{
$student = new student($anmeldung->uid);
$prfTermin = new pruefungstermin($anmeldung->pruefungstermin_id);
$student = new student($anmeldung->uid);
$prfTermin = new pruefungstermin($anmeldung->pruefungstermin_id);
if($einzeln)
{
if($einzeln)
{
$date = $datum->formatDatum($prfTermin->von, "Y-m-d H:i:s");
$date = strtotime($date);
$date = $date+(60*$pruefungsintervall*($count));
$date = $datum->formatDatum($prfTermin->von,"d.m.Y").' - '.date("H:i",$date);
$count++;
}
else
{
}
else
{
$date = $datum->formatDatum($prfTermin->von,"d.m.Y - H:i");
$count++;
}
echo '<tr>';
}
echo '<tr>';
echo '<td>'.$count.'</td>';
echo '<td>'.$student->vorname.'</td>';
echo '<td>'.$student->nachname.'</td>';
@@ -266,22 +265,24 @@ $rechte->getBerechtigungen($uid);
echo '<td>'.$date.'</td>';
echo '<td></td>';
echo '<td></td>';
echo '</tr>';
echo '</tr>';
}
?>
?>
</tbody>
<?php
}
else
{
<?php
}
else
{
?>
<span><?php echo $p->t('pruefung/keineBestaetigtenAnmeldungenVorhanden'); ?></span><br/>
<?php
}
exit;
}
}
?>
</table>
</table>
<br>
<table width="100%" id="liste">
<tr>
@@ -295,7 +296,7 @@ $rechte->getBerechtigungen($uid);
<td></td>
</tr
</table>
</div>
</div>
</div>
</body>
</body>
</html>
@@ -1,4 +1,3 @@
<!DOCTYPE html>
<?php
/*
* Copyright 2014 fhcomplete.org
@@ -44,41 +43,44 @@ $rechte->getBerechtigungen($uid);
$studiensemester = new studiensemester();
$pruefung = new pruefungCis();
$pruefung->getPruefungByMitarbeiter($uid, $studiensemester->getaktorNext());
if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungAdmin'))
die('Sie haben keine Berechtigung für diese Seite');
if (empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungAdmin'))
die('Sie haben keine Berechtigung für diese Seite');
?>
?><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title><?php echo $p->t('pruefung/anmeldungenVerwaltenTitle'); ?></title>
<script src="../../../../include/js/datecheck.js"></script>
<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>
<head>
<meta charset="UTF-8">
<title><?php echo $p->t('pruefung/anmeldungenVerwaltenTitle'); ?></title>
<script src="../../../../include/js/datecheck.js"></script>
<script type="text/javascript" src="../../../../vendor/components/jquery/jquery.min.js"></script>
<script type="text/javascript" src="../../../../vendor/mottie/tablesorter/dist/js/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../../../vendor/mottie/tablesorter/dist/js/jquery.tablesorter.widgets.min.js"></script>
<script type="text/javascript" src="../../../../vendor/mottie/tablesorter/dist/js/extras/jquery.tablesorter.pager.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 src="./pruefung.js.php"></script>
<link rel="stylesheet" href="../../../../skin/jquery-ui-1.9.2.custom.min.css">
<link rel="stylesheet" href="../../../../skin/fhcomplete.css">
<link rel="stylesheet" href="../../../../skin/style.css.php">
<link rel="stylesheet" href="../../../../skin/tablesort.css">
<link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<style type="text/css">
body {
padding: 10px 0 0 10px;
}
<script src="./pruefung.js.php"></script>
<link rel="stylesheet" href="../../../../vendor/components/jqueryui/themes/base/jquery-ui.min.css">
<link rel="stylesheet" href="../../../../skin/fhcomplete.css">
<link rel="stylesheet" href="../../../../skin/style.css.php">
<link rel="stylesheet" href="../../../../vendor/mottie/tablesorter/dist/css/theme.default.min.css">
<link rel="stylesheet" href="../../../../vendor/mottie/tablesorter/dist/css/jquery.tablesorter.pager.min.css">
#stgWrapper {
<style type="text/css">
body {
padding: 10px 0 0 10px;
}
#stgWrapper {
position: absolute;
height: 70px;
height: 80px;
width: 850px;
padding: 1.8em 1.5em 1.8em 1em;
/*border-radius: 25px;*/
border: 1px solid #dddddd;
/*box-shadow: 0em 0em 2em 0.5em #888888 inset;*/
}
}
#studiengaenge {
#studiengaenge {
/*border: 1px solid black;*/
width: 94%;
position: relative;
@@ -87,10 +89,10 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
height: 100%;
overflow: auto;
overflow-x: hidden;
}
}
#prfWrapper {
#prfWrapper {
position: absolute;
height: 70%;
width: 300px;
@@ -99,9 +101,9 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
/*border-radius: 25px;*/
border: 1px solid #dddddd;
/*box-shadow: 0em 0em 2em 0.5em #888888 inset;*/
}
}
#pruefungen {
#pruefungen {
/*border: 1px solid black;*/
width: 94%;
position: relative;
@@ -110,9 +112,9 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
height: 100%;
overflow: auto;
overflow-x: hidden;
}
}
#anmWrapper {
#anmWrapper {
position: absolute;
/*top: 45px;*/
left: 350px;
@@ -123,38 +125,38 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
/*border-radius: 25px;*/
border: 1px solid #dddddd;
/*box-shadow: 0em 0em 2em 0.5em #888888 inset;*/
}
}
#anmeldungen {
#anmeldungen {
height: 100%;
overflow: auto;
overflow-x: hidden;
}
}
#anmeldungen > * {
#anmeldungen > * {
padding: 0.5em;
}
}
#raum > * {
#raum > * {
margin-bottom: 0.5em;
}
}
#message {
#message {
position: fixed;
bottom: 0px;
width: 100%;
height: 2em;
font-size: 1.5em;
font-weight: bold;
}
}
#sortable {
#sortable {
list-style-type: none;
margin: 0;
padding: 0;
width: 100%;
}
#sortable li {
}
#sortable li {
margin: 0 3px 3px 3px;
padding: 0.2em 0.4em 0.4em;
padding-left: 1.5em;
@@ -162,37 +164,37 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
height: 18px;
list-style-image: none;
display: block;
}
#sortable li span {
}
#sortable li span {
/*position: absolute;*/
margin-left: -1.3em;
float:left;
}
}
.resultOK {
.resultOK {
color: green;
}
}
.resultNotOK {
.resultNotOK {
color: red;
}
}
#sortable li a {
#sortable li a {
float: left;
}
}
#sortable li div {
#sortable li div {
float: right;
margin-left: 5px;
font-size: 0.8em;
}
}
.anmerkungInfo {
.anmerkungInfo {
text-align: right;
width: 10%;
}
}
#progressbar {
#progressbar {
position: fixed;
width: 300px;
top: 30%;
@@ -200,83 +202,84 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
margin-left: -150px;
z-index: 100;
background: '#9CFF29';
}
.modalOverlay {
}
.modalOverlay {
position: fixed;
width: 100%;
height: 100%;
top: 0px;
left: 0px;
background-color: rgba(0,0,0,0.3); /* black semi-transparent */
}
}
.studiengang {
.studiengang {
font-size: 1em;
font-weight: bold;
}
}
#studiengaenge > div {
#studiengaenge > div {
float: left;
width: 50%;
}
}
</style>
</head>
<body>
</head>
<body>
<script>
$(document).ready(function(){
loadStudiengaenge();
$("#filter_studiensemester").css("visibility","visible");
// console.log($("#filter_studiensemester"));
$("#raumDialog").dialog({
modal: true,
autoOpen: false,
width: "400px"
$(document).ready(function()
{
loadStudiengaenge();
$("#filter_studiensemester").css("visibility","visible");
$("#raumDialog").dialog({
modal: true,
autoOpen: false,
width: "400px"
});
});
});
</script>
<h1><?php echo $p->t('pruefung/anmeldungenVerwalten'); ?></h1>
<div id='stgWrapper'>
<div id='studiengaenge'>
<div id='studiengaenge'>
<div>
<h2><?php echo $p->t('global/studiengang'); ?></h2>
<div id='stgListe'>
<h2><?php echo $p->t('global/studiengang'); ?></h2>
<div id='stgListe'>
</div>
</div>
</div>
<div>
<h2><?php echo $p->t('global/studiensemester'); ?></h2>
<?php
<h2><?php echo $p->t('global/studiensemester'); ?></h2>
<?php
echo '<select id="filter_studiensemester" onchange="loadPruefungStudiengang();" style="visibility: hidden;">';
$aktuellesSemester = $studiensemester->getaktorNext();
$studiensemester->getAll();
foreach($studiensemester->studiensemester as $sem)
{
/*@var $sem studiensemester */
if($aktuellesSemester == $sem->studiensemester_kurzbz)
{
/*@var $sem studiensemester */
if ($aktuellesSemester == $sem->studiensemester_kurzbz)
{
echo '<option selected value="'.$sem->studiensemester_kurzbz.'">'.$sem->bezeichnung.'</option>';
}
else
{
}
else
{
echo '<option value="'.$sem->studiensemester_kurzbz.'">'.$sem->bezeichnung.'</option>';
}
}
}
echo '</select></p>';
echo '</select></p>';
?>
</div>
</div>
</div>
</div>
<div id='prfWrapper'>
<div id='pruefungen'>
<div id='pruefungen'>
<h2><?php echo $p->t('pruefung/pruefungPruefungenTitle'); ?></h2>
<ul id="pruefungenListe">
</ul>
</div>
</div>
</div>
<div id='anmWrapper'>
<div id="anmeldungen">
<div id="anmeldungen">
<h2><?php echo $p->t('pruefung/pruefungsbewertungAnmeldungen'); ?> <span id='lvdaten'></span></h2>
<div id="anmeldung_hinzufuegen">
@@ -300,17 +303,17 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
</div>
<div id="raumDialog">
<div id="raum">
<div id="raum">
</div>
<div id="raumSpeichernButton">
</div>
<div id="raumSpeichernButton">
</div>
</div>
</div>
</div>
</div>
</div>
<div id="message"></div>
<div id="progressbar"></div>
</body>
</body>
</html>
@@ -1,282 +0,0 @@
/* Copyright (C) 2014 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Stefan Puraner <puraner@technikum-wien.at>
*/
/**
* Error-Behandlung bei Ajax Requests
*/
function loadError(xhr, textStatus, errorThrown)
{
if(xhr.status==200)
alert('Fehler:'+xhr.responseText);
else
alert('Fehler beim Laden der Daten. ErrorNr:'+xhr.status);
}
/**
* Lädt alle Prüfungen eines Mitarbeiters
* @returns {undefined}
*/
function loadPruefungenMitarbeiter()
{
var uid = $("#mitarbeiter_uid").val();
$.ajax({
dataType: 'json',
url: "./pruefungsbewertung.json.php",
type: "POST",
data: {
method: "getPruefungMitarbeiter",
mitarbeiter_uid: uid
},
error: loadError
}).success(function(data){
$("#pruefungen").find("h2").first().text("Prüfungen ("+uid+")");
if(data.error === 'false')
{
var liste = "";
data.result.forEach(function(e){
liste += "<li>"+e.bezeichnung+"<ul>";
e.pruefung.lehrveranstaltungen.forEach(function(d)
{
d.pruefung.termine.forEach(function(f){
liste += "<li> <a onclick='showTeilnehmer(\""+f.pruefungstermin_id+"\", \""+e.lehrveranstaltung_id+"\", \""+e.bezeichnung+"\", \""+convertDateTime(f.von)+"\");'>"+convertDateTime(f.von)+"</a></li>";
});
})
liste += "</li></ul>";
});
$("#pruefungenListe").html(liste);
}
else
{
$("#pruefungenListe").html(data.errormsg);
}
});
}
/**
* Lädt die Anmeldungen zu einer Prüfung
* @param {type} pruefungstermin_id ID des Prüfungstermins
* @param {type} lehrveranstaltung_id ID der Lehrveranstaltung
* @returns {undefined}
*/
function showTeilnehmer(pruefungstermin_id, lehrveranstaltung_id, lehrveranstaltung, datum)
{
$("#modalOverlay").addClass("modalOverlay");
$("#anmeldeDaten").empty();
$("#anmeldungen").children("h2").text("Bewertungen zu "+lehrveranstaltung+" ("+datum+")");
var noten = "<select onchange='markAsUnsaved(this);'><option value='null'>Keine Auswahl</option>";
$.ajax({
dataType: 'json',
url: "./pruefungsbewertung.json.php",
type: "POST",
data: {
method: "getNoten"
},
error: loadError
}).success(function(data){
if(data.error != 'true')
{
data.result.forEach(function(d)
{
noten += "<option value="+d.note+">"+d.bezeichnung+"</option>";
});
noten += "</select>";
}
else
{
messageBox("message",data.errormsg, "red", "highlight", 1000);
}
}).complete(function(event, xhr, settings){
var notenSelect = noten;
$.ajax({
dataType: 'json',
url: "./pruefungsbewertung.json.php",
type: "POST",
data: {
method: "getAnmeldungenTermin",
pruefungstermin_id: pruefungstermin_id,
lehrveranstaltung_id: lehrveranstaltung_id
},
error: loadError
}).success(function(data){
var entry = "";
if(data.error === "false")
{
data.result.forEach(function(d)
{
if(d.status_kurzbz === "bestaetigt")
{
var datum = d.von.split(" ");
if(d.pruefung.note===null)
{
entry = "<div class='anmeldung' id="+d.student.uid+"><div>"+d.student.vorname+" "+d.student.nachname+"</div>"+notenSelect+"<input type='button' onclick='saveBeurteilung(this,\""+datum[0]+"\",\""+d.pruefungsanmeldung_id+"\",\""+d.pruefung_id+"\",\""+d.lehrveranstaltung_id+"\");' value='speichern'/></br><input id='note_anmerkung_"+d.student.uid+"' placeholder='Anmerkung' /></div>";
}
else
{
entry = "<div class='anmeldung' id="+d.student.uid+"><div>"+d.student.vorname+" "+d.student.nachname+"</div>"+notenSelect+"<input type='button' onclick='updateBeurteilung(this,\""+d.pruefung.pruefung_id+"\");' value='speichern'/></br><input id='note_anmerkung_"+d.student.uid+"' placeholder='Anmerkung' value='"+d.pruefung.anmerkung+"' /></div>";
}
$("#anmeldeDaten").append(entry);
if(d.pruefung.note!==null)
{
markAsSaved(document.getElementById(d.student.uid).firstChild);
$("#"+d.student.uid).find("select").val(d.pruefung.note);
}
else
{
markAsUnsaved(document.getElementById(d.student.uid).firstChild);
}
var t = $("#note_anmerkung_"+d.student.uid).parent().find('select').first().width();
$("#note_anmerkung_"+d.student.uid).width(t);
}
});
if(entry === "")
{
entry = "<div><div>Keine Anmeldungen vorhanden.</div></div>";
$("#anmeldeDaten").html(entry);
}
}
else
{
entry = "<div><div>"+data.errormsg+"</div></div>";
$("#anmeldeDaten").html(entry);
}
}).complete(function(event, xhr, settings){
$("#modalOverlay").removeClass("modalOverlay");
});
});
}
/**
* Speichert eine Beurteilung
* @param {type} ele Element das die Funtkion aufruft
* @param {type} datum
* @param {type} pruefungsanmeldung_id ID der Anmeldung
* @param {type} pruefung_id ID der Prüfung
* @param {type} lehrveranstaltung_id ID der Lehrveranstaltung
* @returns {void}
*/
function saveBeurteilung(ele, datum, pruefungsanmeldung_id, pruefung_id, lehrveranstaltung_id)
{
var student_uid = $(ele).parent().attr("id");
var mitarbeiter_uid = $("#mitarbeiter_uid").val();
var note = $(ele).parent().find("select").val();
if((note === "null") || (note===null))
{
messageBox("message", "Keine Note ausgewählt.", "red", "highlight", 1000);
return false;
}
var anmerkung = $("#note_anmerkung_"+student_uid).val();
$.ajax({
dataType: 'json',
url: "./pruefungsbewertung.json.php",
type: "POST",
data: {
method: "saveBeurteilung",
pruefung_id: pruefung_id,
lehrveranstaltung_id: lehrveranstaltung_id,
student_uid: student_uid,
mitarbeiter_uid: mitarbeiter_uid,
note: note,
//TODO Datum der Prüfung oder der Beurteilung?????
datum: datum,
anmerkung: anmerkung,
pruefungsanmeldung_id: pruefungsanmeldung_id
},
error: loadError
}).success(function(data){
if(data.error != 'true')
{
markAsSaved(ele);
$(ele).attr("onclick", "updateBeurteilung(this,\""+data.result+"\")");
}
else
{
messageBox("message",data.errormsg, "red", "highlight", 1000);
$(ele).parent().find("select").val(null);
}
}).complete(function(event, xhr, settings){
});
}
/**
* Aktualisiert eine Beurteilung
* @param {type} ele Element das die Funtkion aufruft
* @param {type} pruefung_id ID der Prüfung
* @returns {undefined}
*/
function updateBeurteilung(ele, pruefung_id)
{
var student_uid = $(ele).parent().attr("id");
var mitarbeiter_uid = $("#mitarbeiter_uid").val();
var note = $(ele).parent().find("select").val();
var anmerkung = $("#note_anmerkung_"+student_uid).val();
if((note === "null") || (note===null))
{
messageBox("message", "Keine Note ausgewählt.", "red", "highlight", 1000);
return false;
}
$.ajax({
dataType: 'json',
url: "./pruefungsbewertung.json.php",
type: "POST",
data: {
method: "updateBeurteilung",
pruefung_id: pruefung_id,
note: note,
anmerkung: anmerkung
},
error: loadError
}).success(function(data){
if(data.error != 'true')
{
markAsSaved(ele);
}
else
{
messageBox("message",data.errormsg, "red", "highlight", 1000);
}
}).complete(function(event, xhr, settings){
});
}
/**
* Markiert einen Datensatz als gespeichert
* @param {type} ele Element das die Funtkion aufruft
* @returns {undefined}
*/
function markAsSaved(ele)
{
$(ele).parent().removeClass("unsaved");
$(ele).parent().addClass("saved");
}
/**
* Markiert einen Datensatz als ungespeichert
* @param {type} ele Element das die Funtkion aufruft
* @returns {undefined}
*/
function markAsUnsaved(ele)
{
$(ele).parent().removeClass("saved");
$(ele).parent().addClass("unsaved");
}
@@ -1,5 +1,4 @@
<?php
/* Copyright (C) 2014 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
@@ -18,8 +17,6 @@
*
* Authors: Stefan Puraner <puraner@technikum-wien.at>
*/
require_once('../../../../config/cis.config.inc.php');
require_once('../../../../include/phrasen.class.php');
require_once('../../../../include/globals.inc.php');
@@ -32,12 +29,9 @@ $p = new phrasen($sprache);
?>
/**
* Error-Behandlung bei Ajax Requests
*/
function loadError(xhr, textStatus, errorThrown)
{
if(xhr.status==200)
@@ -62,7 +56,7 @@ function loadPruefungenMitarbeiter()
mitarbeiter_uid: uid
},
error: loadError
}).success(function(data){
}).done(function(data){
$("#pruefungen").find("h2").first().text("<?php echo $p->t('pruefung/pruefungPruefungenTitle'); ?> ("+uid+")");
if(data.error === 'false')
{
@@ -72,7 +66,7 @@ function loadPruefungenMitarbeiter()
e.pruefung.lehrveranstaltungen.forEach(function(d)
{
d.pruefung.termine.forEach(function(f){
liste += "<li> <a onclick='showTeilnehmer(\""+f.pruefungstermin_id+"\", \""+e.lehrveranstaltung_id+"\", \""+e.bezeichnung+"\", \""+convertDateTime(f.von)+"\");'>"+convertDateTime(f.von)+"</a></li>";
liste += "<li> <a onclick='showTeilnehmer(\""+f.pruefungstermin_id+"\", \""+e.lehrveranstaltung_id+"\", \""+e.bezeichnung.replace("'", "&apos;")+"\", \""+convertDateTime(f.von)+"\");'>"+convertDateTime(f.von)+"</a></li>";
});
})
liste += "</li></ul>";
@@ -106,7 +100,7 @@ function showTeilnehmer(pruefungstermin_id, lehrveranstaltung_id, lehrveranstalt
method: "getNoten"
},
error: loadError
}).success(function(data){
}).done(function(data){
if(data.error != 'true')
{
data.result.forEach(function(d)
@@ -119,7 +113,7 @@ function showTeilnehmer(pruefungstermin_id, lehrveranstaltung_id, lehrveranstalt
{
messageBox("message",data.errormsg, "red", "highlight", 1000);
}
}).complete(function(event, xhr, settings){
}).always(function(event, xhr, settings){
var notenSelect = noten;
$.ajax({
dataType: 'json',
@@ -131,7 +125,7 @@ function showTeilnehmer(pruefungstermin_id, lehrveranstaltung_id, lehrveranstalt
lehrveranstaltung_id: lehrveranstaltung_id
},
error: loadError
}).success(function(data){
}).done(function(data){
var entry = "";
if(data.error === "false")
{
@@ -142,11 +136,21 @@ function showTeilnehmer(pruefungstermin_id, lehrveranstaltung_id, lehrveranstalt
var datum = d.von.split(" ");
if(d.pruefung.note===null)
{
entry = "<div class='anmeldung' id="+d.student.uid+"><div>"+d.student.vorname+" "+d.student.nachname+"</div>"+notenSelect+"<input type='button' onclick='saveBeurteilung(this,\""+datum[0]+"\",\""+d.pruefungsanmeldung_id+"\",\""+d.pruefung_id+"\",\""+d.lehrveranstaltung_id+"\");' value='<?php echo $p->t('global/speichern'); ?>'/></br><input id='note_anmerkung_"+d.student.uid+"' placeholder='<?php echo $p->t('global/anmerkung'); ?>' /></div>";
entry = "<div class='anmeldung' id="+d.student.uid+">";
entry = entry+"<div>"+d.student.vorname+" "+d.student.nachname+"</div>"
entry = entry+notenSelect;
entry = entry+"<input id='note_anmerkung_"+d.student.uid+"' placeholder='<?php echo $p->t('global/anmerkung'); ?>' />";
entry = entry+"<input type='button' onclick='saveBeurteilung(this,\""+datum[0]+"\",\""+d.pruefungsanmeldung_id+"\",\""+d.pruefung_id+"\",\""+d.lehrveranstaltung_id+"\");' value='<?php echo $p->t('global/speichern'); ?>'/>";
entry = entry+"</div>";
}
else
{
entry = "<div class='anmeldung' id="+d.student.uid+"><div>"+d.student.vorname+" "+d.student.nachname+"</div>"+notenSelect+"<input type='button' onclick='updateBeurteilung(this,\""+d.pruefung.pruefung_id+"\");' value='<?php echo $p->t('global/speichern'); ?>'/></br><input id='note_anmerkung_"+d.student.uid+"' placeholder='<?php echo $p->t('global/anmerkung'); ?>' value='"+d.pruefung.anmerkung+"' /></div>";
entry = "<div class='anmeldung' id="+d.student.uid+">";
entry = entry+"<div>"+d.student.vorname+" "+d.student.nachname+"</div>";
entry = entry+notenSelect;
entry = entry+"<input id='note_anmerkung_"+d.student.uid+"' placeholder='<?php echo $p->t('global/anmerkung'); ?>' value='"+d.pruefung.anmerkung+"' />";
entry = entry+"<input type='button' onclick='updateBeurteilung(this,\""+d.pruefung.pruefung_id+"\");' value='<?php echo $p->t('global/speichern'); ?>'/>";
entry = entry+"</div>";
}
$("#anmeldeDaten").append(entry);
if(d.pruefung.note!==null)
@@ -173,7 +177,7 @@ function showTeilnehmer(pruefungstermin_id, lehrveranstaltung_id, lehrveranstalt
entry = "<div><div>"+data.errormsg+"</div></div>";
$("#anmeldeDaten").html(entry);
}
}).complete(function(event, xhr, settings){
}).always(function(event, xhr, settings){
$("#modalOverlay").removeClass("modalOverlay");
});
});
@@ -217,7 +221,7 @@ function saveBeurteilung(ele, datum, pruefungsanmeldung_id, pruefung_id, lehrver
pruefungsanmeldung_id: pruefungsanmeldung_id
},
error: loadError
}).success(function(data){
}).done(function(data){
if(data.error != 'true')
{
markAsSaved(ele);
@@ -228,7 +232,7 @@ function saveBeurteilung(ele, datum, pruefungsanmeldung_id, pruefung_id, lehrver
messageBox("message",data.errormsg, "red", "highlight", 1000);
$(ele).parent().find("select").val(null);
}
}).complete(function(event, xhr, settings){
}).always(function(event, xhr, settings){
});
}
@@ -261,7 +265,7 @@ function updateBeurteilung(ele, pruefung_id)
anmerkung: anmerkung
},
error: loadError
}).success(function(data){
}).done(function(data){
if(data.error != 'true')
{
markAsSaved(ele);
@@ -272,7 +276,7 @@ function updateBeurteilung(ele, pruefung_id)
}
}).complete(function(event, xhr, settings){
}).always(function(event, xhr, settings){
});
}
@@ -1,4 +1,22 @@
<?php
/* Copyright (C) 2014 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Stefan Puraner <puraner@technikum-wien.at>
*/
header( 'Expires: -1' );
header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
header( 'Cache-Control: no-store, no-cache, must-revalidate' );
@@ -45,115 +63,115 @@ $method = filter_input(INPUT_POST, 'method');
switch($method)
{
case 'getPruefungMitarbeiter':
if($rechte->isBerechtigt('lehre/pruefungsbeurteilungAdmin'))
{
$mitarbeiter_uid = filter_input(INPUT_POST, 'mitarbeiter_uid');
}
else if($rechte->isBerechtigt('lehre/pruefungsbeurteilung'))
{
$mitarbeiter_uid = $uid;
}
else
{
$data['result']='false';
$data['error']='true';
$data['errormsg']=$p->t('global/keineBerechtigung');
if ($rechte->isBerechtigt('lehre/pruefungsbeurteilungAdmin'))
{
$mitarbeiter_uid = filter_input(INPUT_POST, 'mitarbeiter_uid');
}
else if ($rechte->isBerechtigt('lehre/pruefungsbeurteilung'))
{
$mitarbeiter_uid = $uid;
}
else
{
$data['result']='false';
$data['error']='true';
$data['errormsg']=$p->t('global/keineBerechtigung');
break;
}
$data = getPruefungMitarbeiter($mitarbeiter_uid);
break;
}
$data = getPruefungMitarbeiter($mitarbeiter_uid);
break;
case 'getNoten':
if(!($rechte->isBerechtigt('lehre/pruefungsbeurteilungAdmin')) && !($rechte->isBerechtigt('lehre/pruefungsbeurteilung')))
{
$data['result']='false';
$data['error']='true';
$data['errormsg']=$p->t('global/keineBerechtigung');
if (!($rechte->isBerechtigt('lehre/pruefungsbeurteilungAdmin')) && !($rechte->isBerechtigt('lehre/pruefungsbeurteilung')))
{
$data['result']='false';
$data['error']='true';
$data['errormsg']=$p->t('global/keineBerechtigung');
break;
}
$data = getNoten();
break;
}
$data = getNoten();
break;
case 'saveBeurteilung':
$lehrveranstaltung_id = filter_input(INPUT_POST, 'lehrveranstaltung_id');
$student_uid = filter_input(INPUT_POST, 'student_uid');
if($rechte->isBerechtigt('lehre/pruefungsbeurteilungAdmin'))
{
$mitarbeiter_uid = filter_input(INPUT_POST, 'mitarbeiter_uid');
}
else if($rechte->isBerechtigt('lehre/pruefungsbeurteilung'))
{
$mitarbeiter_uid = $uid;
}
else
{
$data['result']='false';
$data['error']='true';
$data['errormsg']=$p->t('global/keineBerechtigung');
$lehrveranstaltung_id = filter_input(INPUT_POST, 'lehrveranstaltung_id');
$student_uid = filter_input(INPUT_POST, 'student_uid');
if ($rechte->isBerechtigt('lehre/pruefungsbeurteilungAdmin'))
{
$mitarbeiter_uid = filter_input(INPUT_POST, 'mitarbeiter_uid');
}
else if ($rechte->isBerechtigt('lehre/pruefungsbeurteilung'))
{
$mitarbeiter_uid = $uid;
}
else
{
$data['result']='false';
$data['error']='true';
$data['errormsg']=$p->t('global/keineBerechtigung');
break;
}
$note = filter_input(INPUT_POST, 'note');
$pruefung_id = filter_input(INPUT_POST, 'pruefung_id');
$datum = filter_input(INPUT_POST, 'datum');
$anmerkung = filter_input(INPUT_POST, 'anmerkung');
$pruefungsanmeldung_id = filter_input(INPUT_POST, 'pruefungsanmeldung_id');
$data = saveBeurteilung($lehrveranstaltung_id, $student_uid, $mitarbeiter_uid, $note, $pruefung_id, $datum, $anmerkung, $pruefungsanmeldung_id, $uid);
break;
}
$note = filter_input(INPUT_POST, 'note');
$pruefung_id = filter_input(INPUT_POST, 'pruefung_id');
$datum = filter_input(INPUT_POST, 'datum');
$anmerkung = filter_input(INPUT_POST, 'anmerkung');
$pruefungsanmeldung_id = filter_input(INPUT_POST, 'pruefungsanmeldung_id');
$data = saveBeurteilung($lehrveranstaltung_id, $student_uid, $mitarbeiter_uid, $note, $pruefung_id, $datum, $anmerkung, $pruefungsanmeldung_id, $uid);
break;
case 'updateBeurteilung':
if($rechte->isBerechtigt('lehre/pruefungsbeurteilungAdmin'))
{
$mitarbeiter_uid = filter_input(INPUT_POST, 'mitarbeiter_uid');
}
else if($rechte->isBerechtigt('lehre/pruefungsbeurteilung'))
{
$mitarbeiter_uid = $uid;
}
else
{
$data['result']='false';
$data['error']='true';
$data['errormsg']=$p->t('global/keineBerechtigung');
if ($rechte->isBerechtigt('lehre/pruefungsbeurteilungAdmin'))
{
$mitarbeiter_uid = filter_input(INPUT_POST, 'mitarbeiter_uid');
}
else if ($rechte->isBerechtigt('lehre/pruefungsbeurteilung'))
{
$mitarbeiter_uid = $uid;
}
else
{
$data['result']='false';
$data['error']='true';
$data['errormsg']=$p->t('global/keineBerechtigung');
break;
}
$pruefung_id = filter_input(INPUT_POST, 'pruefung_id');
$note = filter_input(INPUT_POST, 'note');
$anmerkung = filter_input(INPUT_POST, 'anmerkung');
$data = updateBeurteilung($pruefung_id, $note, $mitarbeiter_uid, $anmerkung);
break;
}
$pruefung_id = filter_input(INPUT_POST, 'pruefung_id');
$note = filter_input(INPUT_POST, 'note');
$anmerkung = filter_input(INPUT_POST, 'anmerkung');
$data = updateBeurteilung($pruefung_id, $note, $mitarbeiter_uid, $anmerkung);
break;
case 'loadPruefung':
if(!($rechte->isBerechtigt('lehre/pruefungsbeurteilungAdmin')) && ($rechte->isBerechtigt('lehre/pruefungsbeurteilung')))
{
$data['result']='false';
$data['error']='true';
$data['errormsg']=$p->t('global/keineBerechtigung');
if (!($rechte->isBerechtigt('lehre/pruefungsbeurteilungAdmin')) && ($rechte->isBerechtigt('lehre/pruefungsbeurteilung')))
{
$data['result']='false';
$data['error']='true';
$data['errormsg']=$p->t('global/keineBerechtigung');
break;
}
$pruefung_id = filter_input(INPUT_POST, 'pruefung_id');
$data = loadPruefung($pruefung_id);
break;
}
$pruefung_id = filter_input(INPUT_POST, 'pruefung_id');
$data = loadPruefung($pruefung_id);
break;
case 'getBeurteilung':
if(!($rechte->isBerechtigt('lehre/pruefungsbeurteilungAdmin')) && !($rechte->isBerechtigt('lehre/pruefungsbeurteilung')))
{
$data['result']='false';
$data['error']='true';
$data['errormsg']=$p->t('global/keineBerechtigung');
if (!($rechte->isBerechtigt('lehre/pruefungsbeurteilungAdmin')) && !($rechte->isBerechtigt('lehre/pruefungsbeurteilung')))
{
$data['result']='false';
$data['error']='true';
$data['errormsg']=$p->t('global/keineBerechtigung');
break;
}
$pruefungsanmeldung_id = filter_input(INPUT_POST, 'pruefungsanmeldung_id');
$data = getBeurteilung($pruefungsanmeldung_id);
break;
}
$pruefungsanmeldung_id = filter_input(INPUT_POST, 'pruefungsanmeldung_id');
$data = getBeurteilung($pruefungsanmeldung_id);
break;
case 'getAnmeldungenTermin':
if(!($rechte->isBerechtigt('lehre/pruefungsbeurteilungAdmin')) && !($rechte->isBerechtigt('lehre/pruefungsbeurteilung')))
{
$data['result']='false';
$data['error']='true';
$data['errormsg']=$p->t('global/keineBerechtigung');
if (!($rechte->isBerechtigt('lehre/pruefungsbeurteilungAdmin')) && !($rechte->isBerechtigt('lehre/pruefungsbeurteilung')))
{
$data['result']='false';
$data['error']='true';
$data['errormsg']=$p->t('global/keineBerechtigung');
break;
}
$lehrveranstaltung_id = filter_input(INPUT_POST, 'lehrveranstaltung_id');
$pruefungstermin_id = filter_input(INPUT_POST, 'pruefungstermin_id');
$data = getAnmeldungenTermin($lehrveranstaltung_id, $pruefungstermin_id);
break;
}
$lehrveranstaltung_id = filter_input(INPUT_POST, 'lehrveranstaltung_id');
$pruefungstermin_id = filter_input(INPUT_POST, 'pruefungstermin_id');
$data = getAnmeldungenTermin($lehrveranstaltung_id, $pruefungstermin_id);
break;
default:
break;
break;
}
echo json_encode($data);
@@ -166,41 +184,41 @@ echo json_encode($data);
function getPruefungMitarbeiter($uid = null)
{
global $p;
$lehrveranstaltung = new lehrveranstaltung();
if($uid !== null)
{
$lehrveranstaltung->getLVByMitarbeiter($uid);
$result = array();
foreach($lehrveranstaltung->lehrveranstaltungen as $lv)
$lehrveranstaltung = new lehrveranstaltung();
if ($uid !== null)
{
$pruefung = new pruefungCis();
$pruefung->getPruefungByLv($lv->lehrveranstaltung_id);
if(!empty($pruefung->lehrveranstaltungen))
{
foreach($pruefung->lehrveranstaltungen as $tempLv)
$lehrveranstaltung->getLVByMitarbeiter($uid);
$result = array();
foreach($lehrveranstaltung->lehrveranstaltungen as $lv)
{
$prf = new pruefungCis($tempLv->pruefung_id);
$prf->getTermineByPruefung();
$tempLv->pruefung = $prf;
$pruefung = new pruefungCis();
$pruefung->getPruefungByLv($lv->lehrveranstaltung_id);
if (!empty($pruefung->lehrveranstaltungen))
{
foreach($pruefung->lehrveranstaltungen as $tempLv)
{
$prf = new pruefungCis($tempLv->pruefung_id);
$prf->getTermineByPruefung();
$tempLv->pruefung = $prf;
}
$lv->pruefung = $pruefung;
array_push($result, $lv);
}
}
$lv->pruefung = $pruefung;
array_push($result, $lv);
}
}
}
if(!empty($result))
{
$data['result']=$result;
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$p->t('pruefung/keinePruefungenVorhanden');
}
return $data;
if (!empty($result))
{
$data['result']=$result;
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$p->t('pruefung/keinePruefungenVorhanden');
}
return $data;
}
/**
@@ -209,19 +227,19 @@ function getPruefungMitarbeiter($uid = null)
*/
function getNoten()
{
$note = new note();
if($note->getAll())
{
$data['result']=$note->result;
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$note->errormsg;
}
return $data;
$note = new note();
if ($note->getAll())
{
$data['result']=$note->result;
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$note->errormsg;
}
return $data;
}
/**
@@ -240,80 +258,78 @@ function getNoten()
function saveBeurteilung($lehrveranstaltung_id, $student_uid, $mitarbeiter_uid, $note, $pruefung_id, $datum, $anmerkung, $pruefungsanmeldung_id, $uid)
{
global $p;
$pruefungCis = new pruefungCis($pruefung_id);
$lehrveranstaltung = new lehrveranstaltung();
$lehreinheiten = $lehrveranstaltung->getLehreinheitenOfLv($lehrveranstaltung_id, $student_uid);
$pruefung = new pruefung();
$pruefung->new = true;
if(!empty($lehreinheiten))
{
$pruefungsanmeldung = new pruefungsanmeldung($pruefungsanmeldung_id);
$pruefungstermin = new pruefungstermin($pruefungsanmeldung->pruefungstermin_id);
$pruefung->lehreinheit_id = $lehreinheiten[0];
$pruefung->student_uid = $student_uid;
$pruefung->mitarbeiter_uid = $mitarbeiter_uid;
$pruefung->note = $note;
$pruefung->pruefungstyp_kurzbz = $pruefungsanmeldung->pruefungstyp_kurzbz;
$pruefung->datum = $datum;
$pruefung->anmerkung = $anmerkung;
$pruefung->pruefungsanmeldung_id = $pruefungsanmeldung_id;
$pruefung->insertvon = $uid;
$pruefung->insertamum = date('Y-m-d H:i:s');
$datum = new datum();
// var_dump(date("Y-m-d", time()));
// var_dump($pruefungstermin->von);
if($datum->between("", date("Y-m-d", time()), $pruefungstermin->von))
$pruefungCis = new pruefungCis($pruefung_id);
$lehrveranstaltung = new lehrveranstaltung();
$lehreinheiten = $lehrveranstaltung->getLehreinheitenOfLv($lehrveranstaltung_id, $student_uid);
$pruefung = new pruefung();
$pruefung->new = true;
if (!empty($lehreinheiten))
{
if($pruefung->save())
{
$data['result']=$pruefung->pruefung_id;
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$pruefung->errormsg;
}
if (defined('CIS_PRUEFUNG_SET_ZEUGNISNOTE') && CIS_PRUEFUNG_SET_ZEUGNISNOTE)
$pruefungsanmeldung = new pruefungsanmeldung($pruefungsanmeldung_id);
$pruefungstermin = new pruefungstermin($pruefungsanmeldung->pruefungstermin_id);
$pruefung->lehreinheit_id = $lehreinheiten[0];
$pruefung->student_uid = $student_uid;
$pruefung->mitarbeiter_uid = $mitarbeiter_uid;
$pruefung->note = $note;
$pruefung->pruefungstyp_kurzbz = $pruefungsanmeldung->pruefungstyp_kurzbz;
$pruefung->datum = $datum;
$pruefung->anmerkung = $anmerkung;
$pruefung->pruefungsanmeldung_id = $pruefungsanmeldung_id;
$pruefung->insertvon = $uid;
$pruefung->insertamum = date('Y-m-d H:i:s');
$datum = new datum();
if ($datum->between("", date("Y-m-d", time()), $pruefungstermin->von))
{
$zeugnisnote = new zeugnisnote();
$zeugnisnote->new = true;
$zeugnisnote->lehrveranstaltung_id = $lehrveranstaltung_id;
$zeugnisnote->student_uid = $student_uid;
$zeugnisnote->studiensemester_kurzbz = $pruefungCis->studiensemester_kurzbz;
$zeugnisnote->note = $note;
$zeugnisnote->benotungsdatum = $pruefung->datum;
$zeugnisnote->insertamum = date('Y-m-d H:i:s');
$zeugnisnote->insertvon = $uid;
$zeugnisnote_check = new zeugnisnote();
if (!$zeugnisnote_check->load($zeugnisnote->lehrveranstaltung_id, $zeugnisnote->student_uid, $zeugnisnote->studiensemester_kurzbz))
if ($pruefung->save())
{
$zeugnisnote->save(true);
$data['result']=$pruefung->pruefung_id;
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error'] = 'true';
$data['errormsg'] = 'Existing Grade';
$data['error']='true';
$data['errormsg']=$pruefung->errormsg;
}
if (defined('CIS_PRUEFUNG_SET_ZEUGNISNOTE') && CIS_PRUEFUNG_SET_ZEUGNISNOTE)
{
$zeugnisnote = new zeugnisnote();
$zeugnisnote->new = true;
$zeugnisnote->lehrveranstaltung_id = $lehrveranstaltung_id;
$zeugnisnote->student_uid = $student_uid;
$zeugnisnote->studiensemester_kurzbz = $pruefungCis->studiensemester_kurzbz;
$zeugnisnote->note = $note;
$zeugnisnote->benotungsdatum = $pruefung->datum;
$zeugnisnote->insertamum = date('Y-m-d H:i:s');
$zeugnisnote->insertvon = $uid;
$zeugnisnote_check = new zeugnisnote();
if (!$zeugnisnote_check->load($zeugnisnote->lehrveranstaltung_id, $zeugnisnote->student_uid, $zeugnisnote->studiensemester_kurzbz))
{
$zeugnisnote->save(true);
}
else
{
$data['error'] = 'true';
$data['errormsg'] = 'Existing Grade';
}
}
}
else
{
$data['error']='true';
$data['errormsg']=$p->t('pruefung/terminNichtInDerVergangenheit');
}
}
else
{
$data['error']='true';
$data['errormsg']=$p->t('pruefung/terminNichtInDerVergangenheit');
//$data['errormsg']='Nicht in der Vergangenheit';
$data['error']='true';
$data['errormsg']=$p->t('pruefung/keineLehreinheitenVorhanden');
}
}
else
{
$data['error']='true';
$data['errormsg']=$p->t('pruefung/keineLehreinheitenVorhanden');
}
return $data;
return $data;
}
/**
@@ -326,24 +342,24 @@ function saveBeurteilung($lehrveranstaltung_id, $student_uid, $mitarbeiter_uid,
function updateBeurteilung($pruefung_id, $note, $uid, $anmerkung)
{
global $p;
$pruefung = new pruefung($pruefung_id);
$pruefung->new = FALSE;
$pruefung->note = $note;
$pruefung->anmerkung = $anmerkung;
$pruefung->updatevon = $uid;
$pruefung->updateamum = date('Y-m-d H:i:s');
if($pruefung->save())
{
$data['result']=$pruefung->pruefung_id;
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$pruefung->errormsg;
}
return $data;
$pruefung = new pruefung($pruefung_id);
$pruefung->new = FALSE;
$pruefung->note = $note;
$pruefung->anmerkung = $anmerkung;
$pruefung->updatevon = $uid;
$pruefung->updateamum = date('Y-m-d H:i:s');
if ($pruefung->save())
{
$data['result']=$pruefung->pruefung_id;
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$pruefung->errormsg;
}
return $data;
}
/**
@@ -353,19 +369,19 @@ function updateBeurteilung($pruefung_id, $note, $uid, $anmerkung)
*/
function getBeurteilung($pruefungsanmeldung_id)
{
$pruefung = new pruefung();
if($pruefung->getPruefungByAnmeldung($pruefungsanmeldung_id))
{
$data['result']=$pruefung->pruefung_id;
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$pruefung->errormsg;
}
return $data;
$pruefung = new pruefung();
if ($pruefung->getPruefungByAnmeldung($pruefungsanmeldung_id))
{
$data['result']=$pruefung->pruefung_id;
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$pruefung->errormsg;
}
return $data;
}
/**
@@ -375,37 +391,37 @@ function getBeurteilung($pruefungsanmeldung_id)
function getAnmeldungenTermin($lehrveranstaltung_id, $pruefungstermin_id)
{
global $p;
$pruefungsanmeldung = new pruefungsanmeldung();
$anmeldungen = $pruefungsanmeldung->getAnmeldungenByTermin($pruefungstermin_id, $lehrveranstaltung_id);
foreach($anmeldungen as $a)
{
$student = new student($a->uid);
$temp = new stdClass();
$temp->vorname = $student->vorname;
$temp->nachname = $student->nachname;
$temp->uid = $student->uid;
$a->student = $temp;
$pruefung = new pruefung();
$pruefung->getPruefungByAnmeldung($a->pruefungsanmeldung_id);
$a->pruefung = $pruefung;
}
if(!empty($anmeldungen))
{
$data['result']=$anmeldungen;
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
if($pruefungsanmeldung->errormsg !== null)
$pruefungsanmeldung = new pruefungsanmeldung();
$anmeldungen = $pruefungsanmeldung->getAnmeldungenByTermin($pruefungstermin_id, $lehrveranstaltung_id);
foreach($anmeldungen as $a)
{
$data['errormsg']=$pruefungsanmeldung->errormsg;
$student = new student($a->uid);
$temp = new stdClass();
$temp->vorname = $student->vorname;
$temp->nachname = $student->nachname;
$temp->uid = $student->uid;
$a->student = $temp;
$pruefung = new pruefung();
$pruefung->getPruefungByAnmeldung($a->pruefungsanmeldung_id);
$a->pruefung = $pruefung;
}
if (!empty($anmeldungen))
{
$data['result']=$anmeldungen;
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['errormsg']= $p->t('pruefung/keineAnmeldungenVorhanden');
$data['error']='true';
if ($pruefungsanmeldung->errormsg !== null)
{
$data['errormsg']=$pruefungsanmeldung->errormsg;
}
else
{
$data['errormsg']= $p->t('pruefung/keineAnmeldungenVorhanden');
}
}
}
return $data;
return $data;
}
+164 -184
View File
@@ -1,4 +1,3 @@
<!DOCTYPE html>
<?php
/*
* Copyright 2014 fhcomplete.org
@@ -50,220 +49,201 @@ $rechte->getBerechtigungen($uid);
$studiensemester = new studiensemester();
$pruefung = new pruefungCis();
$pruefung->getPruefungByMitarbeiter($uid, $studiensemester->getaktorNext());
if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungAdmin'))
die('Sie haben keine Berechtigung für diese Seite');
if (empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungAdmin'))
die('Sie haben keine Berechtigung für diese Seite');
?>
?><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Prüfungsbewertung</title>
<script src="../../../../include/js/datecheck.js"></script>
<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>
<head>
<meta charset="UTF-8">
<title>Prüfungsbewertung</title>
<script src="../../../../include/js/datecheck.js"></script>
<script type="text/javascript" src="../../../../vendor/components/jquery/jquery.min.js"></script>
<script type="text/javascript" src="../../../../vendor/mottie/tablesorter/dist/js/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../../../vendor/mottie/tablesorter/dist/js/jquery.tablesorter.widgets.min.js"></script>
<script type="text/javascript" src="../../../../vendor/mottie/tablesorter/dist/js/extras/jquery.tablesorter.pager.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 src="./pruefung.js.php"></script>
<script src="./pruefungsbewertung.js.php"></script>
<link rel="stylesheet" href="../../../../skin/jquery-ui-1.9.2.custom.min.css">
<link rel="stylesheet" href="../../../../skin/fhcomplete.css">
<link rel="stylesheet" href="../../../../skin/style.css.php">
<link rel="stylesheet" href="../../../../skin/tablesort.css">
<script src="./pruefungsbewertung.js.php"></script>
<link rel="stylesheet" href="../../../../vendor/components/jqueryui/themes/base/jquery-ui.min.css">
<link rel="stylesheet" href="../../../../skin/fhcomplete.css">
<link rel="stylesheet" href="../../../../skin/style.css.php">
<link rel="stylesheet" href="../../../../vendor/mottie/tablesorter/dist/css/theme.default.min.css">
<link rel="stylesheet" href="../../../../vendor/mottie/tablesorter/dist/css/jquery.tablesorter.pager.min.css">
<style type="text/css">
body {
padding: 10px 0 0 10px;
}
body {
padding: 10px 0 0 10px;
}
#prfWrapper {
position: absolute;
height: 80%;
width: 300px;
padding: 1.8em 1.5em 1.8em 1em;
//border-radius: 25px;
border: 1px solid #dddddd;
/*box-shadow: 0em 0em 2em 0.5em #888888 inset;*/
}
#prfWrapper {
position: absolute;
height: 80%;
width: 300px;
padding: 1.8em 1.5em 1.8em 1em;
border: 1px solid #dddddd;
}
#pruefungen {
/*border: 1px solid black;*/
width: 94%;
position: relative;
float: left;
padding: 0 1em 0em 1em;
height: 100%;
overflow: auto;
overflow-x: hidden;
}
#pruefungen {
width: 94%;
position: relative;
float: left;
padding: 0 1em 0em 1em;
height: 100%;
overflow: auto;
overflow-x: hidden;
}
#anmWrapper {
position: absolute;
/*top: 45px;*/
left: 360px;
width: 600px;
height: 80%;
padding: 1.8em 1.5em 1.8em 1em;
/*border-radius: 25px;*/
border: 1px solid #dddddd;
/*box-shadow: 0em 0em 2em 0.5em #888888 inset;*/
}
#anmWrapper {
position: absolute;
left: 360px;
width: 600px;
height: 80%;
padding: 1.8em 1.5em 1.8em 1em;
border: 1px solid #dddddd;
}
#anmeldungen {
height: 100%;
overflow: auto;
overflow-x: hidden;
}
#anmeldungen {
height: 100%;
overflow: auto;
overflow-x: hidden;
}
#anmeldungen > div, h2 {
padding: 0.5em;
}
#anmeldungen > div, h2 {
padding: 0.5em;
}
#message {
position: fixed;
top: 0px;
right: 0px;
width: 50%;
height: 2em;
font-size: 1.5em;
font-weight: bold;
}
#message {
position: fixed;
top: 0px;
right: 0px;
width: 50%;
height: 2em;
font-size: 1.5em;
font-weight: bold;
}
.missingFormData {
border: 2px solid red;
outline: 2px solid red;
}
.missingFormData {
border: 2px solid red;
outline: 2px solid red;
}
.modalOverlay {
position: fixed;
width: 100%;
height: 100%;
top: 0px;
left: 0px;
background-color: rgba(0,0,0,0.3); /* black semi-transparent */
}
.modalOverlay {
position: fixed;
width: 100%;
height: 100%;
top: 0px;
left: 0px;
background-color: rgba(0,0,0,0.3); /* black semi-transparent */
}
.anmeldung {
font-size: 1.2em;
border-bottom: 1px solid black;
height: 3.5em;
clear: both;
padding: 0.5em 0 0 0.5em;
}
.anmeldung > *{
margin: 0 1em 0 0;
float: left;
}
.anmeldung {
font-size: 1.2em;
border-bottom: 1px solid black;
margin: 0.5em 0 0 0.5em;
padding: 0.5em 0 0 0.5em;
}
.anmeldung:last-child {
clear: both;
}
.saved {
background-color: lightgreen;
}
.anmeldung div:first-child {
width: 250px;
height: 100%;
}
.unsaved {
background-color: lightpink;
}
.saved {
background-color: green;
}
#wrapper {
display: none;
}
.unsaved {
background-color: red;
}
#wrapper {
display: none;
}
#lektor {
margin: 0 0 1em 0;
}
#lektor {
margin: 0 0 1em 0;
}
</style>
</head>
<body>
<script>
$(document).ready(function() {
var isFormHidden = true;
$("#lektor").autocomplete({
source: "lektor_autocomplete.php?autocomplete=lektor",
minLength:2,
response: function(event, ui)
{
//Value und Label fuer die Anzeige setzen
for(i in ui.content)
{
ui.content[i].value=ui.content[i].vorname+" "+ui.content[i].nachname+" ("+ui.content[i].uid+")";
ui.content[i].label=ui.content[i].vorname+" "+ui.content[i].nachname+" ("+ui.content[i].uid+")";
}
},
select: function(event, ui)
{
//Ausgeaehlte Ressource zuweisen und Textfeld wieder leeren
if (ui.item.mitarbeiter_uid=='')
{
$("#mitarbeiter_uid").val(ui.item.uid);
$("#uid").val("student");
}
else
{
$("#mitarbeiter_uid").val(ui.item.uid);
$("#uid").val("lektor");
}
if(isFormHidden)
{
isFormHidden = false;
$("#wrapper").slideToggle("slow");
}
loadPruefungenMitarbeiter();
}
$(document).ready(function()
{
var isFormHidden = true;
$("#lektor").autocomplete({
source: "lektor_autocomplete.php?autocomplete=lektor",
minLength:2,
response: function(event, ui)
{
//Value und Label fuer die Anzeige setzen
for(i in ui.content)
{
ui.content[i].value=ui.content[i].vorname+" "+ui.content[i].nachname+" ("+ui.content[i].uid+")";
ui.content[i].label=ui.content[i].vorname+" "+ui.content[i].nachname+" ("+ui.content[i].uid+")";
}
},
select: function(event, ui)
{
//Ausgeaehlte Ressource zuweisen und Textfeld wieder leeren
if (ui.item.mitarbeiter_uid=='')
{
$("#mitarbeiter_uid").val(ui.item.uid);
$("#uid").val("student");
}
else
{
$("#mitarbeiter_uid").val(ui.item.uid);
$("#uid").val("lektor");
}
if (isFormHidden)
{
isFormHidden = false;
$("#wrapper").slideToggle("slow");
}
loadPruefungenMitarbeiter();
}
});
});
});
</script>
</script>
</head>
<body>
<div>
<h1><?php echo $p->t('pruefung/pruefungsbewertungTitle'); ?></h1>
<div>
<h1><?php echo $p->t('pruefung/pruefungsbewertungTitle'); ?></h1>
<div>
<?php
if(!$rechte->isBerechtigt('lehre/pruefungsbeurteilungAdmin'))
if (!$rechte->isBerechtigt('lehre/pruefungsbeurteilungAdmin'))
{
echo '<input id="mitarbeiter_uid" type="hidden" value="'.$uid.'"/>
<script>
echo '<input id="mitarbeiter_uid" type="hidden" value="'.$uid.'"/>
<script>
$(document).ready(function() {
$("#wrapper").attr("style", "display: block");
loadPruefungenMitarbeiter();
$("#wrapper").attr("style", "display: block");
loadPruefungenMitarbeiter();
});
</script>';
</script>';
}
else
{
echo '<span width="116px">'.$p->t('pruefung/pruefungLektor').': </span>';
echo '<input placeholder="UID" type="text" id="lektor" value="" size="30"/>';
echo '<input type="hidden" id="uid" value="" />';
echo '<input type="hidden" id="mitarbeiter_uid" value="" />';
echo '<span width="116px">'.$p->t('pruefung/pruefungLektor').': </span>';
echo '<input placeholder="UID" type="text" id="lektor" value="" size="30"/>';
echo '<input type="hidden" id="uid" value="" />';
echo '<input type="hidden" id="mitarbeiter_uid" value="" />';
}
?>
</div>
<div id="wrapper">
<div id='prfWrapper'>
<div id='pruefungen'>
<h2><?php echo $p->t('pruefung/pruefungPruefungenTitle'); ?></h2>
<ul id="pruefungenListe">
</ul>
</div>
?>
</div>
<div id='anmWrapper'>
<div id="anmeldungen">
<h2><?php echo $p->t('pruefung/pruefungsbewertungAnmeldungen'); ?></h2>
<div id="anmeldeDaten">
<div id="wrapper">
<div id='prfWrapper'>
<div id='pruefungen'>
<h2><?php echo $p->t('pruefung/pruefungPruefungenTitle'); ?></h2>
<ul id="pruefungenListe">
</ul>
</div>
</div>
<div id='anmWrapper'>
<div id="anmeldungen">
<h2><?php echo $p->t('pruefung/pruefungsbewertungAnmeldungen'); ?></h2>
<div id="anmeldeDaten">
</div>
</div>
</div>
</div>
</div>
</div>
<div id="message"></div>
<div id="progressbar"></div>
<div id="modalOverlay"></div>
<div id="message"></div>
<div id="progressbar"></div>
<div id="modalOverlay"></div>
</div>
</body>
</body>
</html>
@@ -1,4 +1,3 @@
<!DOCTYPE html>
<?php
/*
* Copyright 2014 fhcomplete.org
@@ -48,42 +47,45 @@ if(!$rechte->isBerechtigt('lehre/pruefungsfenster'))
function compareOe($a, $b)
{
if($a->organisationseinheittyp_kurzbz == $b->organisationseinheittyp_kurzbz)
return 0;
if($a->organisationseinheittyp_kurzbz == $b->organisationseinheittyp_kurzbz)
return 0;
return ($a->organisationseinheittyp_kurzbz < $b->organisationseinheittyp_kurzbz) ? -1 : 1;
return ($a->organisationseinheittyp_kurzbz < $b->organisationseinheittyp_kurzbz) ? -1 : 1;
}
?>
?><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title><?php echo $p->t('pruefung/titlePruefungsfenster') ?></title>
<script src="../../../../include/js/datecheck.js"></script>
<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>
<head>
<meta charset="UTF-8">
<title><?php echo $p->t('pruefung/titlePruefungsfenster') ?></title>
<script src="../../../../include/js/datecheck.js"></script>
<script type="text/javascript" src="../../../../vendor/components/jquery/jquery.min.js"></script>
<script type="text/javascript" src="../../../../vendor/mottie/tablesorter/dist/js/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../../../vendor/mottie/tablesorter/dist/js/jquery.tablesorter.widgets.min.js"></script>
<script type="text/javascript" src="../../../../vendor/mottie/tablesorter/dist/js/extras/jquery.tablesorter.pager.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>
<link rel="stylesheet" href="../../../../skin/jquery-ui-1.9.2.custom.min.css">
<link rel="stylesheet" href="../../../../skin/fhcomplete.css">
<link rel="stylesheet" href="../../../../skin/style.css.php">
<link rel="stylesheet" href="../../../../skin/tablesort.css">
</head>
<body>
<script>
$(document).ready(function() {
$("#startDate").datepicker({
minDate: new Date()
});
$("#endDate").datepicker({
minDate: +1
});
$("#prfTable").tablesorter({
widgets: ["zebra"]
});
});
<script type="text/javascript" src="../../../../vendor/components/jqueryui/ui/i18n/datepicker-de.js"></script>
<link rel="stylesheet" href="../../../../vendor/components/jqueryui/themes/base/jquery-ui.min.css">
<link rel="stylesheet" href="../../../../skin/fhcomplete.css">
<link rel="stylesheet" href="../../../../skin/style.css.php">
<link rel="stylesheet" href="../../../../vendor/mottie/tablesorter/dist/css/theme.default.min.css">
<link rel="stylesheet" href="../../../../vendor/mottie/tablesorter/dist/css/jquery.tablesorter.pager.min.css">
</head>
<body>
<script>
$(document).ready(function() {
$("#startDate").datepicker({
minDate: new Date()
});
$("#endDate").datepicker({
minDate: +1
});
$("#prfTable").tablesorter({
widgets: ["zebra"]
});
});
</script>
</script>
<?php
$datum = new datum();
$method = "";
@@ -96,155 +98,140 @@ $studiensemester->getAll();
if (isset($_POST["method"]) && $_POST["method"] == "save")
{
$method = $_POST["method"];
$studiensemester_selected = (isset($_POST["studiensemester"]) ? $_POST["studiensemester"] : "");
$oe_kurzbz = (isset($_POST["oe_kurzbz"]) ? $_POST["oe_kurzbz"] : "");
$startDate = (isset($_POST["startDate"]) ? $datum->formatDatum($_POST["startDate"], "Y-m-d") : "");
$endDate = (isset($_POST["endDate"]) ? $datum->formatDatum($_POST["endDate"], "Y-m-d") : "");
$method = $_POST["method"];
$studiensemester_selected = (isset($_POST["studiensemester"]) ? $_POST["studiensemester"] : "");
$oe_kurzbz = (isset($_POST["oe_kurzbz"]) ? $_POST["oe_kurzbz"] : "");
$startDate = (isset($_POST["startDate"]) ? $datum->formatDatum($_POST["startDate"], "Y-m-d") : "");
$endDate = (isset($_POST["endDate"]) ? $datum->formatDatum($_POST["endDate"], "Y-m-d") : "");
if ($endDate != false && $startDate != false)
{
if ($datum->DateDiff($startDate, $endDate) >= 0)
{
if ($datum->DateDiff(date("Y-m-d"), $endDate) >= 0)
{
// if ($datum->DateDiff($startDate, date("Y-m-d")) <= 0)
// {
$pruefungsfenster = new pruefungsfenster();
$pruefungsfenster->new = true;
$pruefungsfenster->studiensemester_kurzbz = $studiensemester_selected;
$pruefungsfenster->oe_kurzbz = $oe_kurzbz;
$pruefungsfenster->start = $startDate;
$pruefungsfenster->ende = $endDate;
if ($pruefungsfenster->save())
{
echo $p->t('pruefung/erfolgreichgespeichert');
}
else {
echo $p->t('pruefung/fehler').$pruefungsfenster->errormsg;
}
// }
// else
// {
// echo "Fehler: Startdatum liegt in der Vergangenheit.";
// }
}
else
{
echo $p->t('pruefung/fehlerEndDatumInDerVergangenheit');
}
}
else
{
echo $p->t('pruefung/fehlerEndDatumVorStartDatum');
}
}
else
{
echo $p->t('pruefung/fehlerDatumNichtKorrekt');
}
if ($endDate != false && $startDate != false)
{
if ($datum->DateDiff($startDate, $endDate) >= 0)
{
if ($datum->DateDiff(date("Y-m-d"), $endDate) >= 0)
{
$pruefungsfenster = new pruefungsfenster();
$pruefungsfenster->new = true;
$pruefungsfenster->studiensemester_kurzbz = $studiensemester_selected;
$pruefungsfenster->oe_kurzbz = $oe_kurzbz;
$pruefungsfenster->start = $startDate;
$pruefungsfenster->ende = $endDate;
if ($pruefungsfenster->save())
{
echo $p->t('pruefung/erfolgreichgespeichert');
}
else {
echo $p->t('pruefung/fehler').$pruefungsfenster->errormsg;
}
}
else
{
echo $p->t('pruefung/fehlerEndDatumInDerVergangenheit');
}
}
else
{
echo $p->t('pruefung/fehlerEndDatumVorStartDatum');
}
}
else
{
echo $p->t('pruefung/fehlerDatumNichtKorrekt');
}
}
else if(isset($_POST["method"]) && $_POST["method"] == "update")
{
$studiensemester_selected = (isset($_POST["studiensemester"]) ? $_POST["studiensemester"] : "");
$oe_kurzbz = (isset($_POST["oe_kurzbz"]) ? $_POST["oe_kurzbz"] : "");
$startDate = (isset($_POST["startDate"]) ? $datum->formatDatum($_POST["startDate"], "Y-m-d") : "");
$endDate = (isset($_POST["endDate"]) ? $datum->formatDatum($_POST["endDate"], "Y-m-d") : "");
$studiensemester_selected = (isset($_POST["studiensemester"]) ? $_POST["studiensemester"] : "");
$oe_kurzbz = (isset($_POST["oe_kurzbz"]) ? $_POST["oe_kurzbz"] : "");
$startDate = (isset($_POST["startDate"]) ? $datum->formatDatum($_POST["startDate"], "Y-m-d") : "");
$endDate = (isset($_POST["endDate"]) ? $datum->formatDatum($_POST["endDate"], "Y-m-d") : "");
if ($endDate != false && $startDate != false)
{
if ($datum->DateDiff($startDate, $endDate) >= 0)
{
if ($datum->DateDiff(date("Y-m-d"), $endDate) >= 0)
{
// if ($datum->DateDiff($startDate, date("Y-m-d")) <= 0)
// {
$pruefungsfenster_id = $_POST["id"];
$pruefungsfenster = new pruefungsfenster();
$pruefungsfenster->load($pruefungsfenster_id);
if ($endDate != false && $startDate != false)
{
if ($datum->DateDiff($startDate, $endDate) >= 0)
{
if ($datum->DateDiff(date("Y-m-d"), $endDate) >= 0)
{
$pruefungsfenster_id = $_POST["id"];
$pruefungsfenster = new pruefungsfenster();
$pruefungsfenster->load($pruefungsfenster_id);
if(in_array($pruefungsfenster->oe_kurzbz, $oe))
{
$pruefungsfenster->studiensemester_kurzbz = $studiensemester_selected;
$pruefungsfenster->oe_kurzbz = $oe_kurzbz;
$pruefungsfenster->start = $startDate;
$pruefungsfenster->ende = $endDate;
if ($pruefungsfenster->save())
{
echo $p->t('pruefung/erfolgreichgeaendert');
}
else {
echo $p->t('pruefung/fehler').$pruefungsfenster->errormsg;
}
}
else
{
echo $p->t('pruefung/keineBerechtigungZumAendernDesDatensatzes');
}
// }
// else
// {
// echo "Fehler: Startdatum liegt in der Vergangenheit.";
// }
}
else
{
echo $p->t('pruefung/fehlerEndDatumInDerVergangenheit');
}
}
else
{
echo $p->t('pruefung/fehlerEndDatumVorStartDatum');
}
}
else
{
echo $p->t('pruefung/fehlerDatumNichtKorrekt');
}
if(in_array($pruefungsfenster->oe_kurzbz, $oe))
{
$pruefungsfenster->studiensemester_kurzbz = $studiensemester_selected;
$pruefungsfenster->oe_kurzbz = $oe_kurzbz;
$pruefungsfenster->start = $startDate;
$pruefungsfenster->ende = $endDate;
if ($pruefungsfenster->save())
{
echo $p->t('pruefung/erfolgreichgeaendert');
}
else {
echo $p->t('pruefung/fehler').$pruefungsfenster->errormsg;
}
}
else
{
echo $p->t('pruefung/keineBerechtigungZumAendernDesDatensatzes');
}
}
else
{
echo $p->t('pruefung/fehlerEndDatumInDerVergangenheit');
}
}
else
{
echo $p->t('pruefung/fehlerEndDatumVorStartDatum');
}
}
else
{
echo $p->t('pruefung/fehlerDatumNichtKorrekt');
}
}
else if(isset($_GET["id"]) && $_GET["id"]!= null && isset($_GET["method"]) && $_GET["method"]=="update")
{
$pruefungsfenster_id = $_GET["id"];
$pruefungsfenster = new pruefungsfenster();
$pruefungsfenster->load($pruefungsfenster_id);
if(!in_array($pruefungsfenster->oe_kurzbz, $oe))
{
echo $p->t('pruefung/keineBerechtigungZumAnzeigenDesDatensatzes');
$pruefungsfenster = new pruefungsfenster();
}
$method = $_GET["method"];
$pruefungsfenster_id = $_GET["id"];
$pruefungsfenster = new pruefungsfenster();
$pruefungsfenster->load($pruefungsfenster_id);
if(!in_array($pruefungsfenster->oe_kurzbz, $oe))
{
echo $p->t('pruefung/keineBerechtigungZumAnzeigenDesDatensatzes');
$pruefungsfenster = new pruefungsfenster();
}
$method = $_GET["method"];
}
else if(isset($_GET["id"]) && $_GET["id"]!= null && isset($_GET["method"]) && $_GET["method"]=="delete")
{
$pruefungsfenster_id = $_GET["id"];
$pruefungsfenster = new pruefungsfenster();
$pruefungsfenster->load($pruefungsfenster_id);
$pruefungsfenster_id = $_GET["id"];
$pruefungsfenster = new pruefungsfenster();
$pruefungsfenster->load($pruefungsfenster_id);
if(in_array($pruefungsfenster->oe_kurzbz, $oe))
{
if(!$pruefungsfenster->hasPruefungen($pruefungsfenster_id) && $pruefungsfenster->errormsg === null)
{
if(in_array($pruefungsfenster->oe_kurzbz, $oe))
{
if(!$pruefungsfenster->hasPruefungen($pruefungsfenster_id) && $pruefungsfenster->errormsg === null)
{
if($pruefungsfenster->delete($pruefungsfenster_id))
{
echo $p->t('pruefung/erfolgreichgeloescht');
}
else
{
echo "Fehler: ".$pruefungsfenster->errormsg;
}
}
else
{
echo $p->t('pruefung/pruefungsfensterKonnteNichtGeloeschtWerdenDaPruefungen');
}
$method = $_GET["method"];
}
else
{
echo $p->t('pruefung/keineBerechtigungZumLoeschenDesDatensatzes');
}
if($pruefungsfenster->delete($pruefungsfenster_id))
{
echo $p->t('pruefung/erfolgreichgeloescht');
}
else
{
echo "Fehler: ".$pruefungsfenster->errormsg;
}
}
else
{
echo $p->t('pruefung/pruefungsfensterKonnteNichtGeloeschtWerdenDaPruefungen');
}
$method = $_GET["method"];
}
else
{
echo $p->t('pruefung/keineBerechtigungZumLoeschenDesDatensatzes');
}
}
$prfFenster = new pruefungsfenster();
@@ -252,146 +239,146 @@ $prfFenster->getAll("start");
if($method != "update")
{
?>
<h1><?php echo $p->t('pruefung/pruefungsfensterVerwaltung'); ?></h1>
<h2><?php echo $p->t('pruefung/neuesPruefungsfensterAnlegen'); ?></h2>
<div>
<form method="POST" action="pruefungsfenster_anlegen.php">
<table>
<tr>
<td><input type="hidden" name="method" value="save"></td>
</tr>
<tr>
<td><?php echo $p->t('global/studiensemester'); ?>: </td>
<td>
<select id="studiensemester" name="studiensemester">
<?php
$aktuellesSemester = $studiensemester->getSemesterFromDatum(date("Y-m-d"));
foreach ($studiensemester->studiensemester as $result)
{
if($aktuellesSemester == $result->studiensemester_kurzbz)
{
echo '<option selected>'.$result->studiensemester_kurzbz.'</option>';
}
else
{
echo '<option>'.$result->studiensemester_kurzbz.'</option>';
}
}
?>
</select>
</td>
</tr>
<tr>
<td><?php echo $p->t('global/organisationseinheit'); ?>: </td>
<td>
<select id="oe_kurzbz" name="oe_kurzbz">
<?php
<h1><?php echo $p->t('pruefung/pruefungsfensterVerwaltung'); ?></h1>
<h2><?php echo $p->t('pruefung/neuesPruefungsfensterAnlegen'); ?></h2>
<div>
<form method="POST" action="pruefungsfenster_anlegen.php">
<table>
<tr>
<td><input type="hidden" name="method" value="save"></td>
</tr>
<tr>
<td><?php echo $p->t('global/studiensemester'); ?>: </td>
<td>
<select id="studiensemester" name="studiensemester">
<?php
$aktuellesSemester = $studiensemester->getSemesterFromDatum(date("Y-m-d"));
foreach ($studiensemester->studiensemester as $result)
{
if($aktuellesSemester == $result->studiensemester_kurzbz)
{
echo '<option selected>'.$result->studiensemester_kurzbz.'</option>';
}
else
{
echo '<option>'.$result->studiensemester_kurzbz.'</option>';
}
}
?>
</select>
</td>
</tr>
<tr>
<td><?php echo $p->t('global/organisationseinheit'); ?>: </td>
<td>
<select id="oe_kurzbz" name="oe_kurzbz">
<?php
$oe_array = array();
$oe_array = array();
foreach ($oe as $result)
{
$organisationseinheit = new organisationseinheit();
$organisationseinheit->load($result);
array_push($oe_array, $organisationseinheit);
}
foreach ($oe as $result)
{
$organisationseinheit = new organisationseinheit();
$organisationseinheit->load($result);
array_push($oe_array, $organisationseinheit);
}
usort($oe_array, "compareOe");
usort($oe_array, "compareOe");
foreach ($oe_array as $result)
{
echo '<option value="'.$result->oe_kurzbz.'">'.$result->organisationseinheittyp_kurzbz.' '.$result->bezeichnung.'</option>';
}
?>
</select>
</td>
</tr>
<tr>
<td><?php echo $p->t('pruefung/start'); ?>: </td>
<td><input type="text" id="startDate" name="startDate"></td>
</tr>
<tr>
<td><?php echo $p->t('pruefung/ende'); ?>: </td>
<td><input type="text" id="endDate" name="endDate"></td>
</tr>
<tr>
<td><input type="submit" value="<?php echo $p->t('global/speichern'); ?>"></td>
</tr>
</table>
</form>
</div>
<?php
foreach ($oe_array as $result)
{
echo '<option value="'.$result->oe_kurzbz.'">'.$result->organisationseinheittyp_kurzbz.' '.$result->bezeichnung.'</option>';
}
?>
</select>
</td>
</tr>
<tr>
<td><?php echo $p->t('pruefung/start'); ?>: </td>
<td><input type="text" id="startDate" name="startDate"></td>
</tr>
<tr>
<td><?php echo $p->t('pruefung/ende'); ?>: </td>
<td><input type="text" id="endDate" name="endDate"></td>
</tr>
<tr>
<td><input type="submit" value="<?php echo $p->t('global/speichern'); ?>"></td>
</tr>
</table>
</form>
</div>
<?php
}
else
{
?>
<h1><?php echo $p->t('pruefung/pruefungsfensterVerwaltung'); ?></h1>
<h2><?php echo $p->t('pruefung/pruefungsfensterBearbeiten'); ?></h2>
<div>
<form method="POST" action="pruefungsfenster_anlegen.php">
<table>
<tr>
<td><input type="hidden" name="method" value="update"></td>
</tr>
<tr>
<td><input type="hidden" name="id" value="<?php echo $pruefungsfenster->pruefungsfenster_id; ?>"></td>
</tr>
<tr>
<td><?php echo $p->t('global/studiensemester'); ?>: </td>
<td>
<select id="studiensemester" name="studiensemester">
<?php
foreach ($studiensemester->studiensemester as $result)
{
if($result->studiensemester_kurzbz == $pruefungsfenster->studiensemester_kurzbz)
{
echo '<option selected>'.$result->studiensemester_kurzbz.'</option>';
}
else
{
echo '<option>'.$result->studiensemester_kurzbz.'</option>';
}
}
?>
</select>
</td>
</tr>
<tr>
<td><?php echo $p->t('global/organisationseinheit'); ?>: </td>
<td>
<select id="oe_kurzbz" name="oe_kurzbz">
<?php
foreach ($oe as $result)
{
if($result == $pruefungsfenster->oe_kurzbz)
{
echo '<option selected>'.$result.'</option>';
}
else
{
echo '<option>'.$result.'</option>';
}
}
?>
</select>
</td>
</tr>
<tr>
<td><?php echo $p->t('pruefung/start'); ?>: </td>
<td><input type="text" id="startDate" name="startDate" value="<?php echo $pruefungsfenster->start; ?>"></td>
</tr>
<tr>
<td><?php echo $p->t('pruefung/ende'); ?>: </td>
<td><input type="text" id="endDate" name="endDate" value="<?php echo $pruefungsfenster->ende; ?>"></td>
</tr>
<tr>
<td><input type="submit" value="<?php echo $p->t('global/speichern'); ?>"></td>
<td><a href="pruefungsfenster_anlegen.php"><input type="button" value="<?php echo $p->t('global/abbrechen'); ?>"></a></td>
</tr>
</table>
</form>
</div>
<?php
?>
<h1><?php echo $p->t('pruefung/pruefungsfensterVerwaltung'); ?></h1>
<h2><?php echo $p->t('pruefung/pruefungsfensterBearbeiten'); ?></h2>
<div>
<form method="POST" action="pruefungsfenster_anlegen.php">
<table>
<tr>
<td><input type="hidden" name="method" value="update"></td>
</tr>
<tr>
<td><input type="hidden" name="id" value="<?php echo $pruefungsfenster->pruefungsfenster_id; ?>"></td>
</tr>
<tr>
<td><?php echo $p->t('global/studiensemester'); ?>: </td>
<td>
<select id="studiensemester" name="studiensemester">
<?php
foreach ($studiensemester->studiensemester as $result)
{
if($result->studiensemester_kurzbz == $pruefungsfenster->studiensemester_kurzbz)
{
echo '<option selected>'.$result->studiensemester_kurzbz.'</option>';
}
else
{
echo '<option>'.$result->studiensemester_kurzbz.'</option>';
}
}
?>
</select>
</td>
</tr>
<tr>
<td><?php echo $p->t('global/organisationseinheit'); ?>: </td>
<td>
<select id="oe_kurzbz" name="oe_kurzbz">
<?php
foreach ($oe as $result)
{
if($result == $pruefungsfenster->oe_kurzbz)
{
echo '<option selected>'.$result.'</option>';
}
else
{
echo '<option>'.$result.'</option>';
}
}
?>
</select>
</td>
</tr>
<tr>
<td><?php echo $p->t('pruefung/start'); ?>: </td>
<td><input type="text" id="startDate" name="startDate" value="<?php echo $pruefungsfenster->start; ?>"></td>
</tr>
<tr>
<td><?php echo $p->t('pruefung/ende'); ?>: </td>
<td><input type="text" id="endDate" name="endDate" value="<?php echo $pruefungsfenster->ende; ?>"></td>
</tr>
<tr>
<td><input type="submit" value="<?php echo $p->t('global/speichern'); ?>"></td>
<td><a href="pruefungsfenster_anlegen.php"><input type="button" value="<?php echo $p->t('global/abbrechen'); ?>"></a></td>
</tr>
</table>
</form>
</div>
<?php
}
/*
* Wenn ein Datensatz um bearbeiten ausgewählt wurde,
@@ -400,59 +387,59 @@ else
if((isset($_GET["id"]) && $method!="update") || !isset($_GET["id"]))
{
?>
<h2><?php echo $p->t('pruefung/pruefungsfensterBearbeiten'); ?></h2>
<div style="width: 50%;">
<?php
if(!empty($prfFenster->result)){
?>
<h2><?php echo $p->t('pruefung/pruefungsfensterBearbeiten'); ?></h2>
<div style="width: 50%;">
<?php
if(!empty($prfFenster->result)){
?>
<table class="tablesorter" id="prfTable">
<thead>
<tr>
<th><?php echo $p->t('global/studiensemester'); ?></th>
<th><?php echo $p->t('global/organisationseinheit'); ?></th>
<th><?php echo $p->t('pruefung/start'); ?></th>
<th><?php echo $p->t('pruefung/ende'); ?></th>
<th><?php echo $p->t('global/bearbeiten'); ?></th>
<th><?php echo $p->t('global/loeschen'); ?></th>
</tr>
</thead>
<tbody>
<?php
$organisationseinheit = new organisationseinheit();
foreach ($prfFenster->result as $result)
{
if(in_array($result->oe_kurzbz, $oe))
{
$organisationseinheit->load($result->oe_kurzbz);
echo
'<tr>
<td>'.$result->studiensemester_kurzbz.'</td>
<td>'.$organisationseinheit->organisationseinheittyp_kurzbz." ".$organisationseinheit->bezeichnung.'</td>
<td>'.$result->start.'</td>
<td>'.$result->ende.'</td>
<td><a href="pruefungsfenster_anlegen.php?method=update&id='.$result->pruefungsfenster_id.'">'.$p->t('global/bearbeiten').'</a></td>
<td><a href="pruefungsfenster_anlegen.php?method=delete&id='.$result->pruefungsfenster_id.'">'. $p->t('global/loeschen').'</a></td>
</tr>';
}
}
?>
</tbody>
</table>
<?php
}
else
{
echo
'<tr>
<td>'.$p->t('pruefung/keinePruefungsfensterGespeichert').'</td>
</tr>';
}
?>
</div>
?>
<table class="tablesorter" id="prfTable">
<thead>
<tr>
<th><?php echo $p->t('global/studiensemester'); ?></th>
<th><?php echo $p->t('global/organisationseinheit'); ?></th>
<th><?php echo $p->t('pruefung/start'); ?></th>
<th><?php echo $p->t('pruefung/ende'); ?></th>
<th><?php echo $p->t('global/bearbeiten'); ?></th>
<th><?php echo $p->t('global/loeschen'); ?></th>
</tr>
</thead>
<tbody>
<?php
$organisationseinheit = new organisationseinheit();
foreach ($prfFenster->result as $result)
{
if(in_array($result->oe_kurzbz, $oe))
{
$organisationseinheit->load($result->oe_kurzbz);
echo
'<tr>
<td>'.$result->studiensemester_kurzbz.'</td>
<td>'.$organisationseinheit->organisationseinheittyp_kurzbz." ".$organisationseinheit->bezeichnung.'</td>
<td>'.$result->start.'</td>
<td>'.$result->ende.'</td>
<td><a href="pruefungsfenster_anlegen.php?method=update&id='.$result->pruefungsfenster_id.'">'.$p->t('global/bearbeiten').'</a></td>
<td><a href="pruefungsfenster_anlegen.php?method=delete&id='.$result->pruefungsfenster_id.'">'. $p->t('global/loeschen').'</a></td>
</tr>';
}
}
?>
</tbody>
</table>
<?php
}
else
{
echo
'<tr>
<td>'.$p->t('pruefung/keinePruefungsfensterGespeichert').'</td>
</tr>';
}
?>
</div>
<?php
}
}
?>
</body>
</body>
</html>
File diff suppressed because it is too large Load Diff
@@ -1,4 +1,3 @@
<!DOCTYPE html>
<?php
/*
* Copyright 2014 fhcomplete.org
@@ -55,7 +54,7 @@ $studiensemester = new studiensemester();
$lehrveranstaltung = new lehrveranstaltung();
$lehrveranstaltung->loadLVAfromMitarbeiter(0, $uid, $studiensemester->getaktorNext());
if(empty($lehrveranstaltung->lehrveranstaltungen) && !$rechte->isBerechtigt('lehre/pruefungsterminAdmin'))
die('Sie haben keine Berechtigung für diese Seite');
die('Sie haben keine Berechtigung für diese Seite');
if (!ctype_digit($_GET['termin_id']))
die('Wrong Parameter');
@@ -129,52 +128,55 @@ foreach ($anmeldungen as $row)
$uids .= $row->uid.'@'.DOMAIN.'<br>';
}
?>
?><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title><?php echo $p->t('pruefung/titlePruefungstermin'); ?></title>
<script src="../../../../include/js/datecheck.js"></script>
<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 src="./pruefung.js.php"></script>
<link rel="stylesheet" href="../../../../skin/jquery-ui-1.9.2.custom.min.css">
<link rel="stylesheet" href="../../../../skin/fhcomplete.css">
<link rel="stylesheet" href="../../../../skin/style.css.php">
<link rel="stylesheet" href="../../../../skin/tablesort.css">
<head>
<meta charset="UTF-8">
<title><?php echo $p->t('pruefung/titlePruefungstermin'); ?></title>
<script src="../../../../include/js/datecheck.js"></script>
<script type="text/javascript" src="../../../../vendor/components/jquery/jquery.min.js"></script>
<script type="text/javascript" src="../../../../vendor/mottie/tablesorter/dist/js/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../../../vendor/mottie/tablesorter/dist/js/jquery.tablesorter.widgets.min.js"></script>
<script type="text/javascript" src="../../../../vendor/mottie/tablesorter/dist/js/extras/jquery.tablesorter.pager.min.js"></script>
<script type="text/javascript" src="../../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../../../vendor/components/jqueryui/ui/i18n/datepicker-de.js"></script>
<link rel="stylesheet" href="../../../../vendor/components/jqueryui/themes/base/jquery-ui.min.css">
<script src="./pruefung.js.php"></script>
<link rel="stylesheet" href="../../../../skin/fhcomplete.css">
<link rel="stylesheet" href="../../../../skin/style.css.php">
<link rel="stylesheet" href="../../../../vendor/mottie/tablesorter/dist/css/theme.default.min.css">
<link rel="stylesheet" href="../../../../vendor/mottie/tablesorter/dist/css/jquery.tablesorter.pager.min.css">
<style type="text/css">
#message {
position: fixed;
top: 0px;
right: 0px;
width: 50%;
height: 2em;
font-size: 1.5em;
font-weight: bold;
}
#message {
position: fixed;
top: 0px;
right: 0px;
width: 50%;
height: 2em;
font-size: 1.5em;
font-weight: bold;
}
.missingFormData {
border: 2px solid red;
outline: 2px solid red;
}
.missingFormData {
border: 2px solid red;
outline: 2px solid red;
}
.modalOverlay {
position: fixed;
width: 100%;
height: 100%;
top: 0px;
left: 0px;
background-color: rgba(0,0,0,0.3); /* black semi-transparent */
}
.modalOverlay {
position: fixed;
width: 100%;
height: 100%;
top: 0px;
left: 0px;
background-color: rgba(0,0,0,0.3); /* black semi-transparent */
}
#prfDetails, #prfVerwaltung {
margin: 1em;
}
#prfDetails, #prfVerwaltung {
margin: 1em;
}
</style>
</head>
<body style="padding-top:20px">
</head>
<body style="padding-top:20px">
<center>
<form name="change_termin" action="./pruefungstermin_aendern.php" method="GET">
<table>
@@ -220,5 +222,5 @@ foreach ($anmeldungen as $row)
</table>
</form>
</center>
</body>
</body>
</html>
@@ -1,4 +1,3 @@
<!DOCTYPE html>
<?php
/*
* Copyright 2014 fhcomplete.org
@@ -50,26 +49,29 @@ $rechte->getBerechtigungen($uid);
$studiensemester = new studiensemester();
$lehrveranstaltung = new lehrveranstaltung();
$lehrveranstaltung->loadLVAfromMitarbeiter(0, $uid, $studiensemester->getaktorNext());
if(empty($lehrveranstaltung->lehrveranstaltungen) && !$rechte->isBerechtigt('lehre/pruefungsterminAdmin'))
die('Sie haben keine Berechtigung für diese Seite');
if (empty($lehrveranstaltung->lehrveranstaltungen) && !$rechte->isBerechtigt('lehre/pruefungsterminAdmin'))
die('Sie haben keine Berechtigung für diese Seite');
?>
?><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title><?php echo $p->t('pruefung/titlePruefungstermin'); ?></title>
<script src="../../../../include/js/datecheck.js"></script>
<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 src="./pruefung.js.php"></script>
<link rel="stylesheet" href="../../../../skin/jquery-ui-1.9.2.custom.min.css">
<link rel="stylesheet" href="../../../../skin/fhcomplete.css">
<link rel="stylesheet" href="../../../../skin/style.css.php">
<link rel="stylesheet" href="../../../../skin/tablesort.css">
<head>
<meta charset="UTF-8">
<title><?php echo $p->t('pruefung/titlePruefungstermin'); ?></title>
<script src="../../../../include/js/datecheck.js"></script>
<script type="text/javascript" src="../../../../vendor/components/jquery/jquery.min.js"></script>
<script type="text/javascript" src="../../../../vendor/mottie/tablesorter/dist/js/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../../../vendor/mottie/tablesorter/dist/js/jquery.tablesorter.widgets.min.js"></script>
<script type="text/javascript" src="../../../../vendor/mottie/tablesorter/dist/js/extras/jquery.tablesorter.pager.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 src="./pruefung.js.php"></script>
<link rel="stylesheet" href="../../../../vendor/components/jqueryui/themes/base/jquery-ui.min.css">
<link rel="stylesheet" href="../../../../skin/fhcomplete.css">
<link rel="stylesheet" href="../../../../skin/style.css.php">
<link rel="stylesheet" href="../../../../vendor/mottie/tablesorter/dist/css/theme.default.min.css">
<link rel="stylesheet" href="../../../../vendor/mottie/tablesorter/dist/css/jquery.tablesorter.pager.min.css">
<style type="text/css">
#message {
#message {
position: fixed;
top: 0px;
right: 0px;
@@ -77,250 +79,250 @@ if(empty($lehrveranstaltung->lehrveranstaltungen) && !$rechte->isBerechtigt('leh
height: 2em;
font-size: 1.5em;
font-weight: bold;
}
}
.missingFormData {
.missingFormData {
border: 2px solid red;
outline: 2px solid red;
}
}
.modalOverlay {
.modalOverlay {
position: fixed;
width: 100%;
height: 100%;
top: 0px;
left: 0px;
background-color: rgba(0,0,0,0.3); /* black semi-transparent */
}
}
#prfDetails, #prfVerwaltung {
#prfDetails, #prfVerwaltung {
margin: 1em;
}
}
</style>
</head>
<body>
<script>
$(document).ready(function() {
$("#einzeln").bind("change", function(){
if($("#einzeln").prop("checked") === true)
{
$("#pruefungsintervall").closest("tr").css("visibility", "visible");
}
else
{
$("#pruefungsintervall").closest("tr").css("visibility", "hidden");
}
<script>
$(document).ready(function()
{
$("#einzeln").bind("change", function()
{
if ($("#einzeln").prop("checked") === true)
{
$("#pruefungsintervall").closest("tr").css("visibility", "visible");
}
else
{
$("#pruefungsintervall").closest("tr").css("visibility", "hidden");
}
});
var isFormHidden = true;
$("#lektor").autocomplete(
{
source: "lektor_autocomplete.php?autocomplete=lektor",
minLength:2,
response: function(event, ui)
{
//Value und Label fuer die Anzeige setzen
for(i in ui.content)
{
ui.content[i].value=ui.content[i].vorname+" "+ui.content[i].nachname+" ("+ui.content[i].uid+")";
ui.content[i].label=ui.content[i].vorname+" "+ui.content[i].nachname+" ("+ui.content[i].uid+")";
}
},
select: function(event, ui)
{
//Ausgewaehlte Ressource zuweisen und Textfeld wieder leeren
if (ui.item.mitarbeiter_uid=='')
{
$("#mitarbeiter_uid").val(ui.item.uid);
$("#uid").val("student");
}
else
{
$("#mitarbeiter_uid").val(ui.item.uid);
$("#uid").val("lektor");
}
if (isFormHidden)
{
isFormHidden = false;
$("#prfVerwaltung form").slideToggle("slow");
}
resetPruefungsverwaltung();
}
});
});
var isFormHidden = true;
$("#lektor").autocomplete({
source: "lektor_autocomplete.php?autocomplete=lektor",
minLength:2,
response: function(event, ui)
{
//Value und Label fuer die Anzeige setzen
for(i in ui.content)
{
ui.content[i].value=ui.content[i].vorname+" "+ui.content[i].nachname+" ("+ui.content[i].uid+")";
ui.content[i].label=ui.content[i].vorname+" "+ui.content[i].nachname+" ("+ui.content[i].uid+")";
}
},
select: function(event, ui)
{
//Ausgewaehlte Ressource zuweisen und Textfeld wieder leeren
if (ui.item.mitarbeiter_uid=='')
{
$("#mitarbeiter_uid").val(ui.item.uid);
$("#uid").val("student");
}
else
{
$("#mitarbeiter_uid").val(ui.item.uid);
$("#uid").val("lektor");
}
if(isFormHidden)
{
isFormHidden = false;
$("#prfVerwaltung form").slideToggle("slow");
}
// loadAllPruefungen();
resetPruefungsverwaltung();
// loadPruefungstypen("false");
// loadStudiensemester();
// loadAllPruefungen();
}
});
});
</script>
<div id="prfVerwaltung">
<h1><?php echo $p->t('pruefung/pruefungenVerwalten'); ?></h1>
<table>
</script>
</head>
<body>
<div id="prfVerwaltung">
<h1><?php echo $p->t('pruefung/pruefungenVerwalten'); ?></h1>
<table>
<tr>
<?php
if (!$rechte->isBerechtigt('lehre/pruefungsterminAdmin'))
{
echo '<input id="mitarbeiter_uid" type="hidden" value="'.$uid.'"/>
<script>
$(document).ready(function() {
$("#prfVerwaltung form").attr("style", "display: block");
loadPruefungstypen("false");
loadStudiensemester();
loadAllPruefungen();
});
</script>';
}
else
{
echo '<td width="116px">'.$p->t('pruefung/pruefungLektor').':</td>';
echo '<td width="250px"><input placeholder="UID" type="text" id="lektor" value="" size="30"/></td>';
echo '<input type="hidden" id="uid" value="" />';
echo '<input type="hidden" id="mitarbeiter_uid" value="" />';
}
?>
</tr>
</table>
<form method="post" action="pruefungstermin_festlegen.php" style="display: none;">
<input type="hidden" name="method" value="save">
<table>
<tr>
<?php
if(!$rechte->isBerechtigt('lehre/pruefungsterminAdmin'))
{
echo '<input id="mitarbeiter_uid" type="hidden" value="'.$uid.'"/>
<script>
$(document).ready(function() {
$("#prfVerwaltung form").attr("style", "display: block");
loadPruefungstypen("false");
loadStudiensemester();
loadAllPruefungen();
});
</script>';
}
else
{
echo '<td width="116px">'.$p->t('pruefung/pruefungLektor').':</td>';
echo '<td width="250px"><input placeholder="UID" type="text" id="lektor" value="" size="30"/></td>';
echo '<input type="hidden" id="uid" value="" />';
echo '<input type="hidden" id="mitarbeiter_uid" value="" />';
}
?>
</tr>
</table>
<form method="post" action="pruefungstermin_festlegen.php" style="display: none;">
<input type="hidden" name="method" value="save">
<table>
<tr>
<td><?php echo $p->t('pruefung/pruefungTitel'); ?>:</td>
<td>
<input id='titel' type="text" name="titel" size="30">
</td>
</tr>
<tr>
<td style="vertical-align: top;"><?php echo $p->t('global/beschreibung'); ?>:</td>
<td>
<textarea id='beschreibung' name="beschreibung" rows="5" cols="20"></textarea>
</td>
</tr>
<tr>
<td><?php echo $p->t('global/studiensemester'); ?>:</td>
<td>
<select id="studiensemester" name="studiensemester" onchange="loadPruefungsfenster(); loadLehrveranstaltungen();" onload="loadPruefungsfenster();">
</select>
</td>
</tr>
<tr>
<td><?php echo $p->t('pruefung/pruefungsfenster'); ?>:</td>
<td>
<select id="pruefungsfenster" name="pruefungsfenster" onchange="setDatePicker(this);">
<!--Daten werden durch JavaScript geladen-->
</select>
</td>
</tr>
<!--<tr>
<td>Prüfungstyp:</td>
<td>
<select id='pruefungsTyp' name="pruefungsTyp">
</select>
</td>
</tr>-->
<tr>
<td style="vertical-align: top;"><?php echo $p->t('pruefung/pruefungMethode'); ?>:</td>
<td><textarea id='methode' placeholder="Multiple Choice, etc." rows="5" cols="20" name="methode"></textarea></td>
</tr>
<tr>
<td><?php echo $p->t('pruefung/pruefungEinzelpruefung'); ?>:</td>
<td><input id='einzeln' type="checkbox" name="einzelpruefung"></td>
</tr>
<tr style="visibility:hidden;">
<td><?php echo $p->t('pruefung/pruefungIntervall'); ?>:</td>
<td><?php echo $p->t('pruefung/pruefungTitel'); ?>:</td>
<td>
<select id="pruefungsintervall">
<input id='titel' type="text" name="titel" size="30">
</td>
</tr>
<tr>
<td style="vertical-align: top;"><?php echo $p->t('global/beschreibung'); ?>:</td>
<td>
<textarea id='beschreibung' name="beschreibung" rows="5" cols="20"></textarea>
</td>
</tr>
<tr>
<td><?php echo $p->t('global/studiensemester'); ?>:</td>
<td>
<select id="studiensemester" name="studiensemester" onchange="loadPruefungsfenster(); loadLehrveranstaltungen();" onload="loadPruefungsfenster();">
</select>
</td>
</tr>
<tr>
<td><?php echo $p->t('pruefung/pruefungsfenster'); ?>:</td>
<td>
<select id="pruefungsfenster" name="pruefungsfenster" onchange="setDatePicker(this);">
<!--Daten werden durch JavaScript geladen-->
</select>
</td>
</tr>
<tr>
<td style="vertical-align: top;"><?php echo $p->t('pruefung/pruefungMethode'); ?>:</td>
<td>
<textarea id='methode' placeholder="Multiple Choice, etc." rows="5" cols="20" name="methode"></textarea>
</td>
</tr>
<tr>
<td><?php echo $p->t('pruefung/pruefungEinzelpruefung'); ?>:</td>
<td><input id='einzeln' type="checkbox" name="einzelpruefung"></td>
</tr>
<tr style="visibility:hidden;">
<td><?php echo $p->t('pruefung/pruefungIntervall'); ?>:</td>
<td>
<select id="pruefungsintervall">
<option value="15">15</option>
<option value="20">20</option>
<option value="30">30</option>
</select>
</select>
</td>
</tr>
<tr>
<td style="vertical-align: top;"><?php echo $p->t('global/lehrveranstaltung'); ?>:</td>
<td>
<div id="lvDropdowns">
<select id="lvDropdown1" onchange="lehrveranstaltungDropdownhinzufuegen(this, false);" name="lv[]">
<!--Daten werden per JavaScript geladen-->
</select></br>
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top;"><a name="termin"><?php echo $p->t('pruefung/pruefungTermin'); ?>:</a></td>
<td>
<div>
<table width="500px" style="text-align: right;">
<thead>
<tr>
<th><?php echo $p->t('global/datum'); ?></th>
<th><?php echo $p->t('global/von'); ?></th>
<th><?php echo $p->t('global/bis'); ?></th>
<th><?php echo $p->t('pruefung/pruefungMinTeilnehmer'); ?></th>
<th><?php echo $p->t('pruefung/pruefungMaxTeilnehmer'); ?></th>
<th><?php echo $p->t('pruefung/pruefungSammelklausur'); ?></th>
<th></th>
</tr>
</thead>
<tbody id="prfTermin">
<tr id="row1">
<td>
<input type="text" id="termin1" name="termin[]">
</td>
<td>
<input type="time" id="termin1Beginn" placeholder="00:00" name="termin1Beginn[]">
</td>
<td>
<input type="time" id="termin1Ende" placeholder="00:00" name="termin1Ende[]">
</td>
<td>
<input type="number" id="termin1min" placeholder="0" min="0" name="termin1minTeilnehmer[]">
</td>
<td>
<input type="number" id="termin1max" placeholder="10" min="0" name="termin1maxTeilnehmer[]">
</td>
<td>
<input type="number" id="termin1max" placeholder="10" min="0" name="termin1maxTeilnehmer[]">
</td>
<td>
<input id="termin1sammelklausur" type="checkbox" name="sammelklausur">
</td>
</tr>
</tbody>
</table>
</div>
<a href="#termin" onclick="terminHinzufuegen();"><?php echo $p->t('pruefung/pruefungTerminHinzufuegen'); ?></a>
</td>
</tr>
<tr>
<td>&nbsp;</td><td><input id="buttonSave" type="button" value="<?php echo $p->t('global/speichern'); ?>" onclick='savePruefungstermin();'></td>
</tr>
</table>
</form>
</div>
<div id="prfDetails">
<h2><?php echo $p->t('pruefung/pruefungPruefungenTitle'); ?></h2>
<div style="width: 75%;">
<table class="tablesorter" id="prfTable">
<thead>
<tr>
<th><?php echo $p->t('pruefung/pruefungTitel'); ?></th>
<th><?php echo $p->t('global/studiensemester'); ?></th>
<th><?php echo $p->t('global/lehrveranstaltung'); ?></th>
<th><?php echo $p->t('pruefung/pruefungTermin'); ?></th>
<th><?php echo $p->t('pruefung/pruefungMethode'); ?></th>
<th><?php echo $p->t('pruefung/pruefungTyp'); ?></th>
<th><?php echo $p->t('pruefung/pruefungEinzelpruefung'); ?></th>
<th><?php echo $p->t('pruefung/pruefungMitarbeiter'); ?></th>
<th><?php echo $p->t('pruefung/storniert'); ?></th>
</tr>
</thead>
<tbody>
</tr>
<tr>
<td style="vertical-align: top;"><?php echo $p->t('global/lehrveranstaltung'); ?>:</td>
<td>
<div id="lvDropdowns">
<select id="lvDropdown1" onchange="lehrveranstaltungDropdownhinzufuegen(this, false);" name="lv[]">
<!--Daten werden per JavaScript geladen-->
</select><br />
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top;"><a name="termin"><?php echo $p->t('pruefung/pruefungTermin'); ?>:</a></td>
<td>
<div>
<?php
if (defined('CIS_PRUEFUNGSTERMIN_FRIST'))
{
$terminfrist = CIS_PRUEFUNGSTERMIN_FRIST;
}
else
{
$terminfrist = 14;
}
echo $p->t('pruefung/TerminVorlaufzeit',array($terminfrist));
?>
<table width="500px" >
<thead>
<tr>
<th><?php echo $p->t('global/datum'); ?></th>
<th><?php echo $p->t('global/von'); ?></th>
<th><?php echo $p->t('global/bis'); ?></th>
<th><?php echo $p->t('pruefung/pruefungMinTeilnehmer'); ?></th>
<th><?php echo $p->t('pruefung/pruefungMaxTeilnehmer'); ?></th>
<th><?php echo $p->t('pruefung/pruefungSammelklausur'); ?></th>
<th></th>
</tr>
</thead>
<tbody id="prfTermin">
<tr id="row1">
<td>
<input type="text" id="termin1" name="termin[]">
</td>
<td>
<input type="time" id="termin1Beginn" placeholder="00:00" name="termin1Beginn[]">
</td>
<td>
<input type="time" id="termin1Ende" placeholder="00:00" name="termin1Ende[]">
</td>
<td>
<input type="number" id="termin1min" placeholder="0" min="0" name="termin1minTeilnehmer[]">
</td>
<td>
<input type="number" id="termin1max" placeholder="10" min="0" name="termin1maxTeilnehmer[]">
</td>
<td>
<input id="termin1sammelklausur" type="checkbox" name="sammelklausur">
</td>
</tr>
</tbody>
</table>
</div>
<a href="#termin" onclick="terminHinzufuegen();"><?php echo $p->t('pruefung/pruefungTerminHinzufuegen'); ?></a>
</td>
</tr>
<tr>
<td>&nbsp;</td><td><input id="buttonSave" type="button" value="<?php echo $p->t('global/speichern'); ?>" onclick='savePruefungstermin();'></td>
</tr>
</table>
</form>
</div>
<div id="prfDetails">
<h2><?php echo $p->t('pruefung/pruefungPruefungenTitle'); ?></h2>
<div style="width: 75%;">
<table class="tablesorter" id="prfTable">
<thead>
<tr>
<th><?php echo $p->t('pruefung/pruefungTitel'); ?></th>
<th><?php echo $p->t('global/studiensemester'); ?></th>
<th><?php echo $p->t('global/lehrveranstaltung'); ?></th>
<th><?php echo $p->t('pruefung/pruefungTermin'); ?></th>
<th><?php echo $p->t('pruefung/pruefungMethode'); ?></th>
<th><?php echo $p->t('pruefung/pruefungEinzelpruefung'); ?></th>
<th><?php echo $p->t('pruefung/pruefungMitarbeiter'); ?></th>
<th><?php echo $p->t('pruefung/storniert'); ?></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
<div id='message'></div>
<div id="modalOverlay"></div>
</body>
</tbody>
</table>
</div>
</div>
<div id='message'></div>
<div id="modalOverlay"></div>
</body>
</html>
+1 -1
View File
@@ -1098,7 +1098,7 @@ function StudentProjektbetreuerLoadMitarbeiterDaten()
// ****
function StudentProjektbetreuerNeuePerson()
{
window.open('<?php echo APP_ROOT; ?>vilesci/personen/personen_anlegen.php','Person anlegen','height=600,width=900,left=300,top=300,hotkeys=0,resizable=yes,status=no,toolbar=no,location=no,menubar=no,dependent=yes');
window.open('<?php echo APP_ROOT; ?>vilesci/personen/personen_anlegen.php','Person anlegen','height=700,width=900,left=300,top=300,hotkeys=0,resizable=yes,status=no,toolbar=no,location=no,menubar=no,dependent=yes');
}
// ****
+2 -2
View File
@@ -48,7 +48,7 @@ $this->phrasen['pruefung/zurLvAnmeldung'] = 'zur LV-Anmeldung';
$this->phrasen['pruefung/zuerstPruefungAuswaehlen'] = 'Zuerst Prüfung auswählen.';
$this->phrasen['pruefung/bemerkungVonLektorHinzugefuegt'] = 'von Lektor hinzugefügt';
$this->phrasen['pruefung/bestaetigen'] = 'Bestätigen';
$this->phrasen['pruefung/anmerkungDesStudenten'] = 'Anmerkung des Studenten:</br>';
$this->phrasen['pruefung/anmerkungDesStudenten'] = 'Anmerkung des Studenten:';
$this->phrasen['pruefung/bestaetigt'] = 'bestätigt';
$this->phrasen['pruefung/statusAenderungVon'] = 'Satusänderung von';
$this->phrasen['pruefung/reihungSpeichern'] = 'Reihung speichern';
@@ -151,6 +151,6 @@ Der neue Termin für die Prüfung ist am %2$s um %3$s Uhr.';
$this->phrasen['pruefung/emailVerschiebungSubject'] = 'Verschiebung einer Prüfung';
$this->phrasen['pruefung/AnrechnungInStudiengang'] = 'Studiengang für Anrechnung';
$this->phrasen['pruefung/TerminVorlaufzeit'] = 'Termin muss mindestens %s Tage in der Zukunft liegen!';
?>
+2 -2
View File
@@ -48,7 +48,7 @@ $this->phrasen['pruefung/zurLvAnmeldung'] = 'zur LV-Anmeldung';
$this->phrasen['pruefung/zuerstPruefungAuswaehlen'] = 'Zuerst Prüfung auswählen.';
$this->phrasen['pruefung/bemerkungVonLektorHinzugefuegt'] = 'von Lektor hinzugefügt';
$this->phrasen['pruefung/bestaetigen'] = 'Bestätigen';
$this->phrasen['pruefung/anmerkungDesStudenten'] = 'Anmerkung des Studenten:</br>';
$this->phrasen['pruefung/anmerkungDesStudenten'] = 'Anmerkung des Studenten:';
$this->phrasen['pruefung/bestaetigt'] = 'bestätigt';
$this->phrasen['pruefung/statusAenderungVon'] = 'Satusänderung von';
$this->phrasen['pruefung/reihungSpeichern'] = 'Reihung speichern';
@@ -148,7 +148,7 @@ $this->phrasen['pruefung/emailVerschiebung'] = 'Dear student,
The exam for course %1$s has been resceduled.
The exam will take place on %2$s at %3$s hrs.';
$this->phrasen['pruefung/emailVerschiebungSubject'] = 'Exam changed';
$this->phrasen['pruefung/TerminVorlaufzeit'] = 'Termin muss mindestens %s Tage in der Zukunft liegen!';
?>
+32 -32
View File
@@ -1,30 +1,30 @@
.filter-options-span {
display: inline-block;
width: 130px;
font-weight: bold;
}
.filter-name-title {
font-family: inherit;
font-size: 16px;
/*font-weight: bold;*/
line-height: 1.1;
color: black;
}
.panel-title {
font-weight: bold;
padding-top: 3px;
}
.filters-hidden-panel {
margin: 0 10px 10px 10px;
}
.hidden-control {
display: none !important;
.filter-span-label {
display: inline-block;
width: 200px;
font-weight: bold;
}
.filter-select-fields-dnd-div {
.drag-and-drop-fields-area {
height: 50px;
}
.filter-select-field-dnd-span {
.drag-and-drop-fields-span {
border: 1px solid black;
border-radius: 7px;
margin-left: 3px;
@@ -33,14 +33,23 @@
top: 10px;
}
.filter-select-field-dnd-span:hover {
.drag-and-drop-fields-span:hover {
cursor: move;
}
.filter-select-field-dnd-span a {
.remove-selected-field {
font-weight: bold;
cursor: pointer;
}
.remove-selected-field:hover {
text-decoration: none;
}
.hidden-control {
display: none !important;
}
.selection-before::before {
content: "";
position: absolute;
@@ -61,47 +70,38 @@
border-right: 2px solid #428bca;
}
.select-filter-operation {
.applied-filter-operation {
display: inline;
width: 130px;
}
.select-filter-operation-value {
.applied-filter-condition {
display: inline;
width: 400px;
}
.select-filter-option {
.applied-filter-option {
display: inline;
width: 100px;
}
#addField, #customFilterDescription, #addFilter {
.remove-applied-filter {
padding-bottom: 3px;
}
.drop-down-fields, .drop-down-filters, .input-text-custom-filter {
display: inline;
width: 535px;
}
#selectedFilters {
#appliedFilters {
margin-bottom: 20px;
}
#applyFilter, #saveCustomFilterButton, .remove-selected-filter {
#applyFilter, #saveCustomFilterButton, .remove-applied-filter {
font-weight: bold;
}
#applyFilter, #saveCustomFilterButton {
width: 100px;
}
.remove-selected-filter {
padding-bottom: 3px;
}
.panel-title {
font-weight: bold;
padding-top: 3px;
}
.remove-field {
font-weight: bold;
}
+2 -2
View File
@@ -23,7 +23,7 @@
}
/*arrow toggle for panels*/
.panel-heading .accordion-toggle:before{
.panel-heading .accordion-toggle.arrowcollapse:before{
/* symbol for "opening" panels */
font-family: 'Glyphicons Halflings'; /* essential for enabling glyphicon */
content: "\e114"; /* adjust as needed, taken from bootstrap.css */
@@ -32,7 +32,7 @@
color: grey; /* adjust as needed */
}
.panel-heading .accordion-toggle.collapsed:before{
.panel-heading .accordion-toggle.collapsed.arrowcollapse:before{
/* symbol for "collapsed" panels */
content: "\e080"; /* adjust as needed, taken from bootstrap.css */
}
+34 -20
View File
@@ -124,6 +124,20 @@ var FHC_AjaxClient = {
return data;
},
/**
* Retrives error message from response object
*/
getError: function(response) {
var error = 'Generic error';
if (jQuery.type(response) == "object" && !jQuery.isEmptyObject(response) && response.hasOwnProperty(RESPONSE))
{
error = response.retval;
}
return error;
},
/**
* Retrives code from response object
*/
@@ -163,6 +177,26 @@ var FHC_AjaxClient = {
FHC_AjaxClient._hideVeil();
},
/**
* Retrives parameters from URL query string (HTTP GET parameters)
*/
getUrlParameter: function(sParam) {
var sPageURL = decodeURIComponent(window.location.search.substring(1)),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++)
{
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] === sParam)
{
return sParameterName[1];
}
}
},
//------------------------------------------------------------------------------------------------------------------
// Private methods
@@ -278,26 +312,6 @@ var FHC_AjaxClient = {
this._veilTimeout);
},
/**
* Retrives parameters from URL query string (HTTP GET parameters)
*/
getUrlParameter: function(sParam) {
var sPageURL = decodeURIComponent(window.location.search.substring(1)),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++)
{
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] === sParam)
{
return sParameterName[1];
}
}
},
/**
* Checks call parameters, if they are present and are valid
* It generates and returns all the parameters needed to perform an ajax remote call
+813 -676
View File
File diff suppressed because it is too large Load Diff
+73
View File
@@ -0,0 +1,73 @@
/**
* FH-Complete
*
* @package
* @author
* @copyright Copyright (c) 2016 fhcomplete.org
* @license GPLv3
* @link https://fhcomplete.org
* @since Version 1.0.0
*/
/**
* Definition and initialization of object FHC_PhrasesLib
*/
var FHC_PhrasesLib = {
//------------------------------------------------------------------------------------------------------------------
// Public methods
/**
* Returns the phrase-text in the user's language
* @param {String} category : phrase-category
* @param {String} phrase : phrase-name
* @param {array} params : String-parameters to be set in variables in phrasentext
* @returns {String} : phrase-text
*/
t: function (category, phrase, params = []) {
// Checks if FHC_JS_PHRASES_STORAGE_OBJECT is an array
if ($.isArray(FHC_JS_PHRASES_STORAGE_OBJECT))
{
// loop through global JS PHRASES STORAGE OBJECT and search for phrase
for (i in FHC_JS_PHRASES_STORAGE_OBJECT)
{
var phraseObj = FHC_JS_PHRASES_STORAGE_OBJECT[i]; // Single phrase object
// If the single phrase match the given parameters and is not an empty string
if (phraseObj.category == category
&& phraseObj.phrase == phrase
&& phraseObj.text != null
&& phraseObj.text.trim() != '')
{
// If params is null or not an array
if (params == null || (params != null && !$.isArray(params)))
{
params = [];
}
return FHC_PhrasesLib._replacePhraseVariable(phraseObj.text, params); // parsing
}
}
}
return '<< PHRASE ' + phrase + ' >>';
},
//------------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Returns phrase with variables being replaced
* @param {String} phrase : phrasen-text (with one ore more variables)
* @param {array} replaceStringArr : String-array to be set in variables in phrasentext (order matters)
* @returns {String} : replaced phrasen-text
*/
_replacePhraseVariable: function (phrase, replaceStringArr) {
for (var i = 0; i < replaceStringArr.length; i++)
{
phrase = phrase.replace(/\{(.*?)\}/, replaceStringArr[i]);
}
return phrase;
}
};
+16 -21
View File
@@ -6,9 +6,8 @@ const CALLED_PATH = FHC_JS_DATA_STORAGE_OBJECT.called_path;
/**
* javascript file for infocenterDetails page
*/
$(document).ready(
function ()
{
$(document).ready(function ()
{
//initialise table sorter
Tablesort.addTablesorter("doctable", [[2, 1], [1, 0]], ["zebra"]);
Tablesort.addTablesorter("nachgdoctable", [[2, 0], [1, 1]], ["zebra"]);
@@ -133,7 +132,7 @@ $(document).ready(
var notizTitle = $(this).find("td:eq(1)").text();
var notizContent = this.title;
$("#notizform label:first").text("Notiz ändern").css("color", "red");
$("#notizform label:first").text(FHC_PhrasesLib.t('infocenter', 'notizAendern')).css("color", "red");
$("#notizform :input[type='reset']").css("display", "inline-block");
$("#notizform :input[name='hiddenNotizId']").val(notizId);
@@ -209,8 +208,7 @@ var InfocenterDetails = {
{
FHC_AjaxClient.ajaxCallGet(
CALLED_PATH + "/getLastPrestudentWithZgvJson/" + encodeURIComponent(personid),
{
},
null,
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.hasData(data))
@@ -243,7 +241,7 @@ var InfocenterDetails = {
saveZgv: function(data)
{
var zgvError = function(){
$("#zgvSpeichern_" + prestudentid).before("<span id='zgvSpeichernNotice' class='text-danger'>Fehler beim Speichern der ZGV!</span>&nbsp;&nbsp;");
$("#zgvSpeichern_" + prestudentid).before("<span id='zgvSpeichernNotice' class='text-danger'>" + FHC_PhrasesLib.t('ui', 'fehlerBeimSpeichern') + "</span>&nbsp;&nbsp;");
};
var prestudentid = data.prestudentid;
@@ -258,7 +256,7 @@ var InfocenterDetails = {
if (FHC_AjaxClient.hasData(data))
{
InfocenterDetails._refreshLog();
$("#zgvSpeichern_" + prestudentid).before("<span id='zgvSpeichernNotice' class='text-success'>ZGV erfolgreich gespeichert!</span>&nbsp;&nbsp;");
$("#zgvSpeichern_" + prestudentid).before("<span id='zgvSpeichernNotice' class='text-success'>" + FHC_PhrasesLib.t('ui', 'gespeichert') + "</span>&nbsp;&nbsp;");
}
else
{
@@ -319,13 +317,11 @@ var InfocenterDetails = {
{
FHC_AjaxClient.ajaxCallGet(
CALLED_PATH + "/getStudienjahrEnd",
{
},
null,
{
successCallback: function(data, textStatus, jqXHR) {
if (data)
{
console.log("studienjahr end executed");
var engdate = $.datepicker.parseDate("yy-mm-dd", data);
var gerdate = $.datepicker.formatDate("dd.mm.yy", engdate);
$("#parkdate").val(gerdate);
@@ -339,8 +335,7 @@ var InfocenterDetails = {
{
FHC_AjaxClient.ajaxCallGet(
CALLED_PATH + "/getParkedDate/"+encodeURIComponent(personid),
{
},
null,
{
successCallback: function(data, textStatus, jqXHR) {
InfocenterDetails._refreshParking(data);
@@ -392,11 +387,11 @@ var InfocenterDetails = {
if (data.length > 0)
InfocenterDetails.getParkedDate(personid);
else
$("#unparkmsg").removeClass().addClass("text-warning").text(" Nichts zum Ausparken.");
$("#unparkmsg").removeClass().addClass("text-warning").text(FHC_PhrasesLib.t('infocenter', 'nichtsZumAusparken'));
}
},
errorCallback: function(){
$("#unparkmsg").removeClass().addClass("text-danger").text(" Fehler beim Ausparken!");
$("#unparkmsg").removeClass().addClass("text-danger").text(FHC_PhrasesLib.t('infocenter', 'fehlerBeimAusparken'));
},
veilTimeout: 0
}
@@ -440,8 +435,8 @@ var InfocenterDetails = {
{
$("#parking").html(
'<div class="form-group form-inline">'+
'<button class="btn btn-default" id="parklink" type="button""><i class="fa fa-clock-o"></i>&nbsp;BewerberIn parken</button>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+
'bis&nbsp;&nbsp;'+
'<button class="btn btn-default" id="parklink" type="button""><i class="fa fa-clock-o"></i>&nbsp;' + FHC_PhrasesLib.t('infocenter', 'bewerberParken') + '</button>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+
FHC_PhrasesLib.t('global', 'bis') + '&nbsp;&nbsp;'+
'<input id="parkdate" type="text" class="form-control" placeholder="Parkdatum" style="height: 25px; width: 99px">&nbsp;'+
'<span class="text-danger" id="parkmsg"></span>'+
'</div>');
@@ -467,8 +462,8 @@ var InfocenterDetails = {
var parkdate = $.datepicker.parseDate("yy-mm-dd", date);
var gerparkdate = $.datepicker.formatDate("dd.mm.yy", parkdate);
$("#parking").html(
'BewerberIn geparkt bis '+gerparkdate+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+
'<button class="btn btn-default" id="unparklink"><i class="fa fa-sign-out"></i>&nbsp;BewerberIn ausparken</button>&nbsp;'+
FHC_PhrasesLib.t('infocenter', 'bewerberGeparktBis')+'&nbsp;&nbsp;'+gerparkdate+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+
'<button class="btn btn-default" id="unparklink"><i class="fa fa-sign-out"></i>&nbsp;'+FHC_PhrasesLib.t('infocenter', 'bewerberAusparken')+'</button>&nbsp;'+
'<span id="unparkmsg"></span>'
);
@@ -491,11 +486,11 @@ var InfocenterDetails = {
{
$("#notizmsg").empty();
$("#notizform :input[name='hiddenNotizId']").val("");
$("#notizform label:first").text("Notiz hinzufügen").css("color", "black");
$("#notizform label:first").text(FHC_PhrasesLib.t('infocenter', 'notizHinzufuegen')).css("color", "black");
$("#notizform :input[type='reset']").css("display", "none");
},
_errorSaveNotiz: function()
{
$("#notizmsg").text("Fehler beim Speichern der Notiz!&nbsp;");
$("#notizmsg").text(FHC_PhrasesLib.t('ui', 'fehlerBeimSpeichern'));
}
};
+117 -130
View File
@@ -1,111 +1,24 @@
/**
* Javascript file for infocenter overview page
*/
$(document).ready(function() {
appendTableActionsHtml();
// setTableActions();
});
/**
* adds person table additional actions html (above and beneath it)
*/
function appendTableActionsHtml()
* Refreshes the side menu
* NOTE: it is called from the FilterWidget therefore must be a global function
*/
function refreshSideMenu()
{
var currurl = window.location.href;
var url = currurl.replace(/infocenter\/InfoCenter(.*)/, "Messages/write");
var formHtml = '<form id="sendMsgsForm" method="post" action="'+ url +'" target="_blank"></form>';
$("#datasetActionsTop").before(formHtml);
var selectAllHtml =
'<a href="javascript:void(0)" class="selectAll">' +
'<i class="fa fa-check"></i>&nbsp;Alle</a>&nbsp;&nbsp;' +
'<a href="javascript:void(0)" class="unselectAll">' +
'<i class="fa fa-times"></i>&nbsp;Keinen</a>&nbsp;&nbsp;&nbsp;&nbsp;';
var actionHtml = 'Mit Ausgew&auml;hlten:&nbsp;&nbsp;' +
'<a href="javascript:void(0)" class="sendMsgsLink">' +
'<i class="fa fa-envelope"></i>&nbsp;Nachricht senden</a>';
var legendHtml = '<i class="fa fa-circle text-danger"></i> Gesperrt&nbsp;&nbsp;&nbsp;&nbsp;' +
'<i class="fa fa-circle text-info"></i> Geparkt';
var personcount = 0;
$.ajax({
url: window.location.pathname.replace('infocenter/InfoCenter', 'Filters/rowNumber'),
method: "GET",
data: {
fhc_controller_id: getUrlParameter("fhc_controller_id"),
filter_page: FHC_JS_DATA_STORAGE_OBJECT.called_path + "/" + FHC_JS_DATA_STORAGE_OBJECT.called_method
},
dataType: "json"
})
.done(function(data, textStatus, jqXHR) {
if (data != null)
//
FHC_AjaxClient.ajaxCallGet(
'system/infocenter/InfoCenter/setNavigationMenuArrayJson',
null,
{
if (data.rowNumber != null)
{
personcount = data.rowNumber;
var persontext = personcount === 1 ? "Person" : "Personen";
var countHtml = personcount + " " + persontext;
$("#datasetActionsTop, #datasetActionsBottom").append(
"<div class='row'>"+
"<div class='col-xs-6'>" + selectAllHtml + "&nbsp;&nbsp;" + actionHtml + "</div>"+
"<div class='col-xs-4'>" + legendHtml + "</div>"+
"<div class='col-xs-2 text-right'>" + countHtml + "</div>"+
"<div class='clearfix'></div>"+
"</div>"
);
$("#datasetActionsBottom").append("<br><br>");
successCallback: function(data, textStatus, jqXHR) {
FHC_NavigationWidget.renderSideMenu();
},
errorCallback: function(jqXHR, textStatus, errorThrown) {
alert(textStatus);
}
setTableActions();
}
}).fail(function(jqXHR, textStatus, errorThrown) {
alert(textStatus);
});
}
/**
* sets functionality for the actions above and beneath the person table
*/
function setTableActions()
{
$(".sendMsgsLink").click(function() {
var idsel = $("#filterTableDataset input:checked[name=PersonId\\[\\]]");
if(idsel.length > 0)
{
var form = $("#sendMsgsForm");
form.find("input[type=hidden]").remove();
for (var i = 0; i < idsel.length; i++)
{
var id = $(idsel[i]).val();
form.append("<input type='hidden' name='person_id[]' value='" + id + "'>");
}
form.submit();
}
});
$(".selectAll").click(function()
{
//select only trs if not filtered by tablesorter
var trs = $("#filterTableDataset tbody tr").not(".filtered");
trs.find("input[name=PersonId\\[\\]]").prop("checked", true);
}
);
$(".unselectAll").click(function()
{
var trs = $("#filterTableDataset tbody tr").not(".filtered");
trs.find("input[name=PersonId\\[\\]]").prop("checked", false);
}
);
}
@@ -113,41 +26,115 @@ function setTableActions()
/**
*
*/
function getUrlParameter(sParam)
{
var sPageURL = decodeURIComponent(window.location.search.substring(1)),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
var InfocenterPersonDataset = {
for (i = 0; i < sURLVariables.length; i++)
/**
* adds person table additional actions html (above and beneath it)
/*
*/
appendTableActionsHtml: function()
{
sParameterName = sURLVariables[i].split('=');
var currurl = window.location.href;
var url = currurl.replace(/infocenter\/InfoCenter(.*)/, "Messages/write");
if (sParameterName[0] === sParam)
{
return sParameterName[1];
}
}
}
var formHtml = '<form id="sendMsgsForm" method="post" action="'+ url +'" target="_blank"></form>';
$("#datasetActionsTop").before(formHtml);
var selectAllHtml =
'<a href="javascript:void(0)" class="selectAll">' +
'<i class="fa fa-check"></i>&nbsp;Alle</a>&nbsp;&nbsp;' +
'<a href="javascript:void(0)" class="unselectAll">' +
'<i class="fa fa-times"></i>&nbsp;Keinen</a>&nbsp;&nbsp;&nbsp;&nbsp;';
var actionHtml = 'Mit Ausgew&auml;hlten:&nbsp;&nbsp;' +
'<a href="javascript:void(0)" class="sendMsgsLink">' +
'<i class="fa fa-envelope"></i>&nbsp;Nachricht senden</a>';
var legendHtml = '<i class="fa fa-circle text-danger"></i> Gesperrt&nbsp;&nbsp;&nbsp;&nbsp;' +
'<i class="fa fa-circle text-info"></i> Geparkt';
var personcount = 0;
FHC_AjaxClient.ajaxCallGet(
'system/Filters/rowNumber',
{
filter_page: FHC_FilterWidget.getFilterPage()
},
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.hasData(data))
{
personcount = FHC_AjaxClient.getData(data);
if (personcount > 0)
{
var persontext = personcount === 1 ? "Person" : "Personen";
var countHtml = personcount + " " + persontext;
$("#datasetActionsTop, #datasetActionsBottom").append(
"<div class='row'>"+
"<div class='col-xs-6'>" + selectAllHtml + "&nbsp;&nbsp;" + actionHtml + "</div>"+
"<div class='col-xs-4'>" + legendHtml + "</div>"+
"<div class='col-xs-2 text-right'>" + countHtml + "</div>"+
"<div class='clearfix'></div>"+
"</div>"
);
$("#datasetActionsBottom").append("<br><br>");
InfocenterPersonDataset.setTableActions();
}
}
},
errorCallback: function(jqXHR, textStatus, errorThrown) {
alert(textStatus);
}
}
);
},
/**
* sets functionality for the actions above and beneath the person table
*/
setTableActions: function()
{
$(".sendMsgsLink").click(function() {
var idsel = $("#filterTableDataset input:checked[name=PersonId\\[\\]]");
if(idsel.length > 0)
{
var form = $("#sendMsgsForm");
form.find("input[type=hidden]").remove();
for (var i = 0; i < idsel.length; i++)
{
var id = $(idsel[i]).val();
form.append("<input type='hidden' name='person_id[]' value='" + id + "'>");
}
form.submit();
}
});
$(".selectAll").click(function()
{
//select only trs if not filtered by tablesorter
var trs = $("#filterTableDataset tbody tr").not(".filtered");
trs.find("input[name=PersonId\\[\\]]").prop("checked", true);
}
);
$(".unselectAll").click(function()
{
var trs = $("#filterTableDataset tbody tr").not(".filtered");
trs.find("input[name=PersonId\\[\\]]").prop("checked", false);
}
);
}
};
/**
* Refreshes the side menu
* When JQuery is up
*/
function refreshSideMenu()
{
$.ajax({
url: window.location.pathname+"/setNavigationMenuArray",
method: "GET",
data: {
fhc_controller_id: getUrlParameter("fhc_controller_id")
}
})
.done(function(data, textStatus, jqXHR) {
$(document).ready(function() {
FHC_NavigationWidget.renderSideMenu();
InfocenterPersonDataset.appendTableActionsHtml();
}).fail(function(jqXHR, textStatus, errorThrown) {
alert(textStatus);
});
}
});
+1 -1
View File
@@ -61,7 +61,7 @@ var Tablesort = {
size: size,
cssDisabled: 'disabled',
savePages: false,
output: '{startRow} {endRow} / {totalRows} Zeilen'
output: '{startRow} {endRow} / {totalRows} ' + FHC_PhrasesLib.t('global', 'zeilen')
}
);
}
+357 -27
View File
@@ -26,7 +26,7 @@
$new = false;
$phrases = array(
$phrases = array(
//******************* CORE/global
array(
'app' => 'core',
@@ -48,6 +48,26 @@ $phrases = array(
)
)
),
array(
'app' => 'core',
'category' => 'global',
'phrase' => 'zeilen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Zeilen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'lines',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'global',
@@ -909,6 +929,48 @@ $phrases = array(
)
),
array(
'app' => 'core',
'category' => 'global',
'phrase' => 'mailAnXversandt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Mail an {email} versandt.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Mail was sent to {email}.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'global',
'phrase' => 'beschreibung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Beschreibung',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'description',
'description' => '',
'insertvon' => 'system'
)
)
),
//******************************* CORE/ui
array(
@@ -1231,6 +1293,46 @@ $phrases = array(
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'fehlerBeimSpeichern',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Fehler beim Speichern',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Error on Saving',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'gespeichert',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Gespeichert',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Saved',
'description' => '',
'insertvon' => 'system'
)
)
),
//*************************** CORE/filter
@@ -1255,6 +1357,70 @@ $phrases = array(
)
),
array(
'app' => 'core',
'category' => 'filter',
'phrase' => 'filterHinzufuegen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Filter hinzufügen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'add filter',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'filter',
'phrase' => 'feldHinzufuegen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Feld hinzufügen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'add field',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'filter',
'phrase' => 'filterBeschreibung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Filter Beschreibung',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'filter description',
'description' => '',
'insertvon' => 'system'
)
)
),
//**************************** CORE/person
@@ -2184,6 +2350,46 @@ $phrases = array(
)
)
),
array(
'app' => 'infocenter',
'category' => 'infocenter',
'phrase' => 'zugangsvoraussetzungen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Zugangsvoraussetzungen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => '',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'infocenter',
'category' => 'infocenter',
'phrase' => 'keineZugangsvoraussetzungenTxt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Keine Zugangsvoraussetzungen für den Studiengang definiert',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => '',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'infocenter',
'category' => 'infocenter',
@@ -2273,8 +2479,8 @@ $phrases = array(
array(
'sprache' => 'German',
'text' => 'Bei Absage von InteressentInnen erhalten diese den Status "Abgewiesener" und deren '
. 'ZGV-Daten können im Infocenter nicht mehr bearbeitet oder freigegeben werden. '
. 'Alle nicht gespeicherten ZGV-Daten gehen verloren. Fortfahren?',
.'ZGV-Daten können im Infocenter nicht mehr bearbeitet oder freigegeben werden. '
.'Alle nicht gespeicherten ZGV-Daten gehen verloren. Fortfahren?',
'description' => '',
'insertvon' => 'system'
),
@@ -2380,7 +2586,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => '',
'text' => 'Approve applicant',
'description' => '',
'insertvon' => 'system'
)
@@ -2483,7 +2689,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
'text' => 'change note',
'text' => 'Change note',
'description' => '',
'insertvon' => 'system'
)
@@ -2568,7 +2774,128 @@ $phrases = array(
'insertvon' => 'system'
)
)
),
array(
'app' => 'infocenter',
'category' => 'infocenter',
'phrase' => 'bewerberParken',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'BewerberIn parken',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Park applicant',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'infocenter',
'category' => 'infocenter',
'phrase' => 'bewerberAusparken',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'BewerberIn ausparken',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Unpark applicant',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'infocenter',
'category' => 'infocenter',
'phrase' => 'nichtsZumAusparken',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Nichts zum ausparken',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => '',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'infocenter',
'category' => 'infocenter',
'phrase' => 'fehlerBeimAusparken',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Fehler beim Ausparken',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => '',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'infocenter',
'category' => 'infocenter',
'phrase' => 'fehlerBeimParken',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Fehler beim Parken',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => '',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'infocenter',
'category' => 'infocenter',
'phrase' => 'bewerberGeparktBis',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'BewerberIn geparkt bis',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Applicant parked until',
'description' => '',
'insertvon' => 'system'
)
)
)
);
@@ -2581,9 +2908,9 @@ foreach ($phrases as $phrase)
$qry = "SELECT phrase_id
FROM system.tbl_phrase
WHERE
app=" . $db->db_add_param($phrase['app']) . " AND
category=" . $db->db_add_param($phrase['category']) . " AND
phrase=" . $db->db_add_param($phrase['phrase']);
app=". $db->db_add_param($phrase['app']). " AND
category=". $db->db_add_param($phrase['category']). " AND
phrase=". $db->db_add_param($phrase['phrase']);
//*** CHECK PHRASE
if ($result = $db->db_query($qry))
@@ -2600,11 +2927,11 @@ foreach ($phrases as $phrase)
insertvon,
category)
VALUES(".
$db->db_add_param($phrase['app']) . ','.
$db->db_add_param($phrase['phrase']) . ','.
$db->db_add_param($phrase['app']). ','.
$db->db_add_param($phrase['phrase']). ','.
' now(),'.
$db->db_add_param($phrase['insertvon']) . ','.
$db->db_add_param($phrase['category']) . ');';
$db->db_add_param($phrase['insertvon']). ','.
$db->db_add_param($phrase['category']). ');';
if ($db->db_query($qry_insert))
{
@@ -2618,11 +2945,11 @@ foreach ($phrases as $phrase)
$phrase_id = $obj->id;
}
}
echo 'Kategorie/Phrase: <b>' . $phrase['category'] . '/' . $phrase['phrase'] . ' hinzugefügt</b><br>';
echo 'Kategorie/Phrase: <b>'. $phrase['category']. '/'. $phrase['phrase']. ' hinzugefügt</b><br>';
}
else
echo '<span class="error">Fehler: ' . $phrase['category'] . '/' . $phrase['phrase'] . ' hinzufügen nicht möglich</span><br>';
echo '<span class="error">Fehler: '. $phrase['category']. '/'.
$phrase['phrase']. ' hinzufügen nicht möglich</span><br>';
}
//phrase existing -> get phrase_id
else
@@ -2631,23 +2958,23 @@ foreach ($phrases as $phrase)
{
$phrase_id = $obj->phrase_id;
}
echo 'Kategorie/Phrase: ' . $phrase['category'] . '/' . $phrase['phrase'] . ' vorhanden.<br>';
echo 'Kategorie/Phrase: '. $phrase['category']. '/'. $phrase['phrase']. ' vorhanden.<br>';
}
//*** CHECK PHRASENTEXT
//loop through languages
foreach ($phrase['phrases'] as $phrase_phrases)
{
{
$language = $phrase_phrases['sprache'];
//query phrasentext in certain language
$qry_language =
$qry_language =
"SELECT *
FROM system.tbl_phrasentext
WHERE
phrase_id=" . $phrase_id . " AND
sprache='" . $language . "'";
phrase_id=". $phrase_id. " AND
sprache='". $language. "'";
if ($result_language = $db->db_query($qry_language))
@@ -2665,22 +2992,25 @@ foreach ($phrases as $phrase)
insertamum,
insertvon)
VALUES(".
$db->db_add_param($phrase_id, FHC_INTEGER) . ','.
$db->db_add_param($phrase_phrases['sprache']) . ','.
$db->db_add_param($phrase_id, FHC_INTEGER). ','.
$db->db_add_param($phrase_phrases['sprache']). ','.
' NULL,'.
' NULL,'.
$db->db_add_param($phrase_phrases['text']) . ','.
$db->db_add_param($phrase_phrases['description']) . ','.
$db->db_add_param($phrase_phrases['text']). ','.
$db->db_add_param($phrase_phrases['description']). ','.
' now(),'.
$db->db_add_param($phrase_phrases['insertvon']) . ');';
$db->db_add_param($phrase_phrases['insertvon']). ');';
if ($db->db_query($qry_insert))
{
echo '-- Phrasentext ' . strtoupper(substr($phrase_phrases['sprache'], 0, 3)) . ': <b>' . $phrase_phrases['text'] . ' hinzugefügt</b><br>';
echo '-- Phrasentext '. strtoupper(substr($phrase_phrases['sprache'], 0, 3)). ': <b>'.
$phrase_phrases['text']. ' hinzugefügt</b><br>';
}
else
{
echo '<span class="error">Fehler: Phrasentext ' . strtoupper(substr($phrase_phrases['sprache'], 0, 3)) . ': '. $phrase_phrases['text'] . ' hinzufügen nicht möglich</span><br>';
echo '<span class="error">Fehler: Phrasentext '.
strtoupper(substr($phrase_phrases['sprache'], 0, 3)). ': '. $phrase_phrases['text'].
' hinzufügen nicht möglich</span><br>';
}
}
}
+110 -103
View File
@@ -20,7 +20,7 @@
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
*/
require_once('../../config/vilesci.config.inc.php');
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/person.class.php');
@@ -35,68 +35,64 @@ $user=get_uid();
$datum_obj = new datum();
loadVariables($user);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
?><!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../../skin/cis.css" rel="stylesheet" type="text/css">
<script language="Javascript">
function disablefields(obj)
{
if(obj.value==0)
val=false;
else
val=true;
document.getElementById('anrede').disabled=val;
document.getElementById('titel').disabled=val;
document.getElementById('titelpost').disabled=val;
document.getElementById('nachname').disabled=val;
document.getElementById('vorname').disabled=val;
document.getElementById('geschlecht').disabled=val;
document.getElementById('geburtsdatum').disabled=val;
document.getElementById('svnr').disabled=val;
document.getElementById('ersatzkennzeichen').disabled=val;
//document.getElementById('adresse').disabled=val;
//document.getElementById('plz').disabled=val;
//document.getElementById('ort').disabled=val;
if(val)
<meta charset="UTF-8">
<link href="../../skin/cis.css" rel="stylesheet" type="text/css">
<script language="Javascript">
function disablefields(obj)
{
document.getElementById('ueb1').style.display = 'block';
document.getElementById('ueb2').style.display = 'block';
document.getElementById('ueb3').style.display = 'block';
}
else
{
document.getElementById('ueb1').style.display = 'none';
document.getElementById('ueb2').style.display = 'none';
document.getElementById('ueb3').style.display = 'none';
}
}
if (obj.value==0)
val=false;
else
val=true;
function GeburtsdatumEintragen()
{
svnr = document.getElementById('svnr').value;
gebdat = document.getElementById('geburtsdatum');
if(svnr.length==10 && gebdat.value=='')
{
var tag = svnr.substr(4,2);
var monat = svnr.substr(6,2);
var jahr = svnr.substr(8,2);
gebdat.value='19'+jahr+'-'+monat+'-'+tag;
document.getElementById('anrede').disabled=val;
document.getElementById('titel').disabled=val;
document.getElementById('titelpost').disabled=val;
document.getElementById('nachname').disabled=val;
document.getElementById('vorname').disabled=val;
document.getElementById('geschlecht').disabled=val;
document.getElementById('geburtsdatum').disabled=val;
document.getElementById('svnr').disabled=val;
document.getElementById('ersatzkennzeichen').disabled=val;
if (val)
{
document.getElementById('ueb1').style.display = 'block';
document.getElementById('ueb2').style.display = 'block';
document.getElementById('ueb3').style.display = 'block';
}
else
{
document.getElementById('ueb1').style.display = 'none';
document.getElementById('ueb2').style.display = 'none';
document.getElementById('ueb3').style.display = 'none';
}
}
}
function disablefields2(val)
{
document.getElementById('adresse').disabled=val;
document.getElementById('plz').disabled=val;
document.getElementById('ort').disabled=val;
}
</script>
function GeburtsdatumEintragen()
{
svnr = document.getElementById('svnr').value;
gebdat = document.getElementById('geburtsdatum');
if (svnr.length==10 && gebdat.value=='')
{
var tag = svnr.substr(4,2);
var monat = svnr.substr(6,2);
var jahr = svnr.substr(8,2);
gebdat.value='19'+jahr+'-'+monat+'-'+tag;
}
}
function disablefields2(val)
{
document.getElementById('adresse').disabled=val;
document.getElementById('plz').disabled=val;
document.getElementById('ort').disabled=val;
}
</script>
</head>
<body>
<h1>Person Anlegen</h1>
@@ -105,7 +101,10 @@ function disablefields2(val)
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('mitarbeiter') && !$rechte->isBerechtigt('assistenz') && !$rechte->isBerechtigt('basis/firma'))
if (!$rechte->isBerechtigt('admin')
&& !$rechte->isBerechtigt('mitarbeiter')
&& !$rechte->isBerechtigt('assistenz')
&& !$rechte->isBerechtigt('basis/firma', null, 'sui'))
die('Sie haben keine Berechtigung fuer diese Seite');
$where = '';
@@ -132,7 +131,7 @@ $ueberschreiben = (isset($_REQUEST['ueberschreiben'])?$_REQUEST['ueberschreiben'
$geburtsdatum_error=false;
// *** Speichern der Daten ***
if(isset($_POST['save']))
if (isset($_POST['save']))
{
//echo "Saving Data: Geburtsdatum: $geburtsdatum | Titel: $titel | Nachname: $nachname | Vorname: $vorname |
// Geschlecht: $geschlecht | Adresse: $adresse | Plz: $plz | Ort: $ort |
@@ -142,7 +141,10 @@ if(isset($_POST['save']))
$db->db_query('BEGIN');
//Wenn die person_id=0 dann wird eine neue Person angelegt
//Sonst nicht
if($person_id=='0')
if ($person_id == '')
die('Es ist ein Fehler aufgetreten');
if ($person_id=='0')
{
$person->new = true;
$person->anrede = $anrede;
@@ -157,9 +159,9 @@ if(isset($_POST['save']))
$person->aktiv = true;
$person->insertamum = date('Y-m-d H:i:s');
$person->insertvon = $user;
$person->zugangscode= uniqid();
if($person->save())
$person->zugangscode= uniqid();
if ($person->save())
{
$error=false;
}
@@ -169,16 +171,16 @@ if(isset($_POST['save']))
$errormsg = "Person konnte nicht gespeichert werden: $person->errormsg";
}
}
//Adresse anlegen
if($ueberschreiben!='' && !($plz=='' && $adresse=='' && $ort==''))
if ($ueberschreiben!='' && !($plz=='' && $adresse=='' && $ort==''))
{
if($person_id=='0')
if ($person_id=='0')
$ueberschreiben='Nein';
$adr = new adresse();
//Adresse neu anlegen
if($ueberschreiben=='Nein')
if ($ueberschreiben=='Nein')
{
$adr->new = true;
$adr->insertamum = date('Y-m-d H:i:s');
@@ -190,10 +192,10 @@ if(isset($_POST['save']))
//Adressen der Peron laden
$adr->load_pers($person->person_id);
if(isset($adr->result[0]))
if (isset($adr->result[0]))
{
//Erste Adresse laden
if($adr->load($adr->result[0]->adresse_id))
if ($adr->load($adr->result[0]->adresse_id))
{
$adr->new = false;
$adr->updateamum = date('Y-m-d H:i:s');
@@ -214,7 +216,7 @@ if(isset($_POST['save']))
}
}
if(!$error)
if (!$error)
{
//Adressdaten zuweisen und speichern
$adr->person_id = $person->person_id;
@@ -224,7 +226,7 @@ if(isset($_POST['save']))
$adr->typ = 'h';
$adr->heimatadresse = true;
$adr->zustelladresse = true;
if(!$adr->save())
if (!$adr->save())
{
$error = true;
$errormsg = $adr->errormsg;
@@ -233,10 +235,10 @@ if(isset($_POST['save']))
}
//Kontaktdaten anlegen
if(!$error)
if (!$error)
{
//EMail Adresse speichern
if($email!='')
if ($email!='')
{
$kontakt = new kontakt();
$kontakt->person_id = $person->person_id;
@@ -247,14 +249,14 @@ if(isset($_POST['save']))
$kontakt->insertvon = $user;
$kontakt->new = true;
if(!$kontakt->save())
if (!$kontakt->save())
{
$error = true;
$errormsg = 'Fehler beim Speichern der Email Adresse';
}
}
//Telefonnummer speichern
if($telefon!='')
if ($telefon!='')
{
$kontakt = new kontakt();
$kontakt->person_id = $person->person_id;
@@ -265,14 +267,14 @@ if(isset($_POST['save']))
$kontakt->insertvon = $user;
$kontakt->new = true;
if(!$kontakt->save())
if (!$kontakt->save())
{
$error = true;
$errormsg = 'Fehler beim Speichern der Telefonnummer';
}
}
//Mobiltelefonnummer speichern
if($mobil!='')
if ($mobil!='')
{
$kontakt = new kontakt();
$kontakt->person_id = $person->person_id;
@@ -283,7 +285,7 @@ if(isset($_POST['save']))
$kontakt->insertvon = $user;
$kontakt->new = true;
if(!$kontakt->save())
if (!$kontakt->save())
{
$error = true;
$errormsg = 'Fehler beim Speichern der Mobiltelefonnummer';
@@ -291,7 +293,7 @@ if(isset($_POST['save']))
}
}
if(!$error)
if (!$error)
{
$db->db_query('COMMIT');
die("<script language='Javascript'>
@@ -307,12 +309,12 @@ if(isset($_POST['save']))
}
}
// *** SAVE ENDE ***
if($geburtsdatum!='')
if ($geburtsdatum!='')
{
//Wenn das Datum im Format d.m.Y ist dann in Y-m-d umwandeln
if(strpos($geburtsdatum,'.'))
if (strpos($geburtsdatum,'.'))
{
if($datum_obj->mktime_datum($geburtsdatum))
if ($datum_obj->mktime_datum($geburtsdatum))
{
$geburtsdatum = date('Y-m-d',$datum_obj->mktime_datum($geburtsdatum));
}
@@ -321,13 +323,13 @@ if($geburtsdatum!='')
$geburtsdatum_error=true;
}
}
else
else
{
if(!mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$geburtsdatum))
if (!mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$geburtsdatum))
$geburtsdatum_error=true;
}
if($geburtsdatum_error)
if ($geburtsdatum_error)
echo "Format des Geburtsdatums ist ungueltig!";
}
?>
@@ -367,7 +369,7 @@ echo '<tr><td>Telefon</td><td><input type="text" id="telefon" maxlength="128" na
echo '<tr><td>Mobil</td><td><input type="text" id="mobil" maxlength="128" name="mobil" value="'.$mobil.'" /></td></tr>';
echo '<tr><td></td><td>';
if(($geburtsdatum=='' && $vorname=='' && $nachname=='') || $geburtsdatum_error)
if (($geburtsdatum=='' && $vorname=='' && $nachname=='') || $geburtsdatum_error)
echo '<input type="submit" name="showagain" value="Vorschlag laden">';
else
echo '<input type="submit" name="save" value="Speichern">';
@@ -383,27 +385,34 @@ echo '<td valign="top">';
//Vorschlaege
$where = '';
//Vorschlaege laden
if($geburtsdatum!='')
{
if(mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$geburtsdatum))
if ($geburtsdatum!='')
{
if (mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$geburtsdatum))
{
$where = " gebdatum='".$geburtsdatum."'";
$where = " gebdatum=".$db->db_add_param($geburtsdatum);
}
}
if($vorname!='' && $nachname!='')
if ($vorname!='' && $nachname!='')
{
if($where!='')
if ($where!='')
$where.=' OR';
$where.=" (LOWER(vorname)=LOWER('".$vorname."') AND LOWER(nachname)=LOWER('".$nachname."'))";
$where.=" (LOWER(vorname)=LOWER(".$db->db_add_param($vorname).") AND LOWER(nachname)=LOWER(".$db->db_add_param($nachname)."))";
}
elseif ($nachname!='')
{
if ($where!='')
$where.=' OR';
$where.=" LOWER(nachname)=LOWER(".$db->db_add_param($nachname).")";
}
if($where!='')
if ($where!='')
{
$qry = "SELECT * FROM public.tbl_person WHERE $where ORDER BY nachname, vorname, gebdatum";
if($result = $db->db_query($qry))
if ($result = $db->db_query($qry))
{
echo '<table>
<tr>
@@ -425,7 +434,7 @@ if($where!='')
SELECT (get_rolle_prestudent(prestudent_id, null) || ' ' || UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz)) as rolle FROM public.tbl_prestudent JOIN public.tbl_studiengang USING(studiengang_kz) WHERE person_id='$row->person_id'
UNION
SELECT 'PreInteressent' as rolle FROM public.tbl_preinteressent WHERE person_id='$row->person_id'";
if($result_stati = $db->db_query($qry_stati))
if ($result_stati = $db->db_query($qry_stati))
{
while($row_stati=$db->db_fetch_object($result_stati))
{
@@ -433,10 +442,10 @@ if($where!='')
}
}
$status = mb_substr($status, 0, mb_strlen($status)-2);
echo '<tr valign="top"><td><input type="radio" name="person_id" value="'.$row->person_id.'" onclick="disablefields(this)"></td><td>'."$row->nachname</td><td>$row->vorname</td><td>$row->gebdatum</td><td>$row->svnr</td><td>".($row->geschlecht=='m'?'männlich':'weiblich')."</td><td>";
$qry_adr = "SELECT * FROM public.tbl_adresse WHERE person_id='$row->person_id'";
if($result_adr = $db->db_query($qry_adr))
if ($result_adr = $db->db_query($qry_adr))
while($row_adr=$db->db_fetch_object($result_adr))
echo "$row_adr->plz $row_adr->ort, $row_adr->strasse<br>";
echo "<td>$status</td>";
@@ -447,8 +456,6 @@ if($where!='')
echo '</table>';
}
}
//else
// echo 'Zum Erstellen des Vorschlags bitte Geburtsdatum oder Vorname und Nachname eingeben';
?>
</td>
@@ -456,4 +463,4 @@ if($where!='')
</table>
</form>
</body>
</html>
</html>