diff --git a/application/controllers/system/Filters.php b/application/controllers/system/Filters.php index 648868d61..b9b2b480d 100644 --- a/application/controllers/system/Filters.php +++ b/application/controllers/system/Filters.php @@ -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; + } } } diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index 25a653eb1..ed1f1d37d 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -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 ); } diff --git a/application/core/FHC_Controller.php b/application/core/FHC_Controller.php index fc200d935..7417a4ca6 100644 --- a/application/core/FHC_Controller.php +++ b/application/core/FHC_Controller.php @@ -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(, ) */ - 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)); + } } diff --git a/application/libraries/FiltersLib.php b/application/libraries/FiltersLib.php new file mode 100644 index 000000000..a4703bf7d --- /dev/null +++ b/application/libraries/FiltersLib.php @@ -0,0 +1,817 @@ +_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; + } +} diff --git a/application/libraries/PhrasesLib.php b/application/libraries/PhrasesLib.php index 1194e769c..f895cf637 100644 --- a/application/libraries/PhrasesLib.php +++ b/application/libraries/PhrasesLib.php @@ -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 . "
"; -// echo $_phrase->phrase . "

"; + 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); + } } diff --git a/application/models/system/Phrase_model.php b/application/models/system/Phrase_model.php index dff8bebaf..65ced9c99 100644 --- a/application/models/system/Phrase_model.php +++ b/application/models/system/Phrase_model.php @@ -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); } -} \ No newline at end of file +} diff --git a/application/views/system/infocenter/infocenter.php b/application/views/system/infocenter/infocenter.php index f33abff79..80534c800 100644 --- a/application/views/system/infocenter/infocenter.php +++ b/application/views/system/infocenter/infocenter.php @@ -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 @@
- +
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) + ); ?>
diff --git a/application/views/system/infocenter/infocenterData.php b/application/views/system/infocenter/infocenterData.php index 5ba35ed2d..b012a0a1a 100755 --- a/application/views/system/infocenter/infocenterData.php +++ b/application/views/system/infocenter/infocenterData.php @@ -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( 'Details', @@ -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); ?> diff --git a/application/views/system/infocenter/infocenterDetails.php b/application/views/system/infocenter/infocenterDetails.php index 700c06569..d8ccd10be 100755 --- a/application/views/system/infocenter/infocenterDetails.php +++ b/application/views/system/infocenter/infocenterDetails.php @@ -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' + ) ) + ) ); ?> @@ -42,14 +67,16 @@
- p->t('global', 'wirdBearbeitetVon') . ':' ?> p->t('global', 'wirdBearbeitetVon') . ': '; echo $lockedby; - ?> -    -  p->t('ui', 'freigeben')) ?> + if (!isset($show_lock_link) || $show_lock_link === true): ?> +    + +  p->t('ui', 'freigeben')) ?> + +
@@ -59,7 +86,9 @@
-

p->t('global','stammdaten')) ?>

+
+

p->t('global', 'stammdaten')) ?>

+
load->view('system/infocenter/stammdaten.php'); ?> load->view('system/infocenter/anmerkungenZurBewerbung.php'); ?> @@ -73,7 +102,9 @@
-

p->t('infocenter','dokumentenpruefung')) ?>

+
+

p->t('infocenter', 'dokumentenpruefung')) ?>

+
load->view('system/infocenter/dokpruefung.php'); ?>
@@ -87,7 +118,8 @@
-

p->t('infocenter', 'zgv') . ' - ' . ucfirst($this->p->t('lehre','pruefung'))?>

+

p->t('infocenter', 'zgv'). ' - '. + ucfirst($this->p->t('lehre', 'pruefung'))?>

load->view('system/infocenter/zgvpruefungen.php'); ?> @@ -102,7 +134,7 @@
-

p->t('global','nachrichten')) ?>

+

p->t('global', 'nachrichten')) ?>

@@ -121,7 +153,8 @@
-

p->t('global','notizen')) . ' & ' . ucfirst($this->p->t('global','aktivitaeten')) ?>

+

p->t('global', 'notizen')). ' & '. + ucfirst($this->p->t('global', 'aktivitaeten')) ?>

diff --git a/application/views/system/infocenter/infocenterFreigegeben.php b/application/views/system/infocenter/infocenterFreigegeben.php index f2c279b0f..bf3b34d65 100755 --- a/application/views/system/infocenter/infocenterFreigegeben.php +++ b/application/views/system/infocenter/infocenterFreigegeben.php @@ -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( - 'Details', + 'Details', site_url('system/infocenter/InfoCenter/showDetails'), $datasetRaw->{'PersonId'}, (isset($_GET['fhc_controller_id'])?$_GET['fhc_controller_id']:'') diff --git a/application/views/system/infocenter/studiengangZgvInfo.php b/application/views/system/infocenter/studiengangZgvInfo.php index 6242d0db6..813a87889 100644 --- a/application/views/system/infocenter/studiengangZgvInfo.php +++ b/application/views/system/infocenter/studiengangZgvInfo.php @@ -17,13 +17,13 @@ $this->load->view(
- +
- Keine Zugangsvoraussetzungen für den Studiengang definiert - p->t('infocenter', 'keineZugangsvoraussetzungenTxt'); ?> +
-
+
zgvmanation_bez; @@ -220,7 +220,7 @@
@@ -249,7 +249,7 @@ class="d-inline float-right" required> @@ -323,7 +323,7 @@ data-toggle="modal" data-target="#freigabeModal_prestudent_id ?>" data-toggle="tooltip" title=""> - p->t('ui', 'freigabeAnStudiengang') ?> + p->t('ui', 'freigabeAnStudiengang') ?>
@@ -340,10 +340,10 @@ + p->t('infocenter', 'freigabeBestaetigen') ?>
diff --git a/application/views/templates/FHC-Header.php b/application/views/templates/FHC-Header.php index 8b4dc058a..81cbc9dcd 100755 --- a/application/views/templates/FHC-Header.php +++ b/application/views/templates/FHC-Header.php @@ -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 .= ''; + $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') ; diff --git a/application/views/widgets/filter/filter.php b/application/views/widgets/filter/filter.php index ef5da3c6c..bae5110e9 100644 --- a/application/views/widgets/filter/filter.php +++ b/application/views/widgets/filter/filter.php @@ -1,12 +1,12 @@
-
- -
+ +

+
@@ -16,18 +16,21 @@
+

+

+
@@ -38,12 +41,15 @@
+
+
+
diff --git a/application/views/widgets/filter/saveFilter.php b/application/views/widgets/filter/saveFilter.php index c1f09a413..f91f56704 100644 --- a/application/views/widgets/filter/saveFilter.php +++ b/application/views/widgets/filter/saveFilter.php @@ -1,15 +1,15 @@
- - Filter description: + + p->t('global', 'beschreibung')); ?>: - + - +
diff --git a/application/views/widgets/filter/selectFields.php b/application/views/widgets/filter/selectFields.php index 73461840a..644bbf277 100644 --- a/application/views/widgets/filter/selectFields.php +++ b/application/views/widgets/filter/selectFields.php @@ -1,11 +1,11 @@ -
+
- - Add field: + + p->t('filter', 'feldHinzufuegen')); ?>: - +
diff --git a/application/views/widgets/filter/selectFilters.php b/application/views/widgets/filter/selectFilters.php index ffb93dfe5..4b98c629c 100644 --- a/application/views/widgets/filter/selectFilters.php +++ b/application/views/widgets/filter/selectFilters.php @@ -1,17 +1,17 @@
-
+
- - Add filter: + + p->t('filter', 'filterHinzufuegen')); ?>: - + - +
diff --git a/application/widgets/FilterWidget.php b/application/widgets/FilterWidget.php index fe74a661f..6350e8057 100644 --- a/application/widgets/FilterWidget.php +++ b/application/widgets/FilterWidget.php @@ -1,1231 +1,445 @@ _initFilterWidget($args); // + self::$_FilterWidgetInstance = $this; // set static property $_FilterWidgetInstance with this instance - $this->_initSession(); // + $this->load->library('FiltersLib'); // Loads the FiltersLib that contains all the used logic - // - $this->load->model('system/Filters_model', 'FiltersModel'); - $this->load->model('person/Benutzer_model', 'BenutzerModel'); + $this->_initFilterWidget($args); // checks parameters and initialize properties - self::$FilterWidgetInstance = $this; + $this->_startFilterWidget(); // let's start } + //------------------------------------------------------------------------------------------------------------------ + // Public methods + /** - * + * Called when echoing the filter widget call */ public function display($widgetData) { - // - $filterSessionArray = $this->_readSession(); - - // - if ($this->filterId == null && isset($filterSessionArray[self::FILTER_ID])) - { - $this->filterId = $filterSessionArray[self::FILTER_ID]; - } - - // - if ($this->filterName == null && isset($filterSessionArray[self::FILTER_NAME])) - { - $this->filterName = $filterSessionArray[self::FILTER_NAME]; - } - - if ($this->filterNamePhrase == null && isset($filterSessionArray[self::FILTER_NAME_PHRASE])) - { - $this->filterNamePhrase = $filterSessionArray[self::FILTER_NAME_PHRASE]; - } - - // - if ($this->filterId <= 0 || $filterSessionArray[self::FILTER_ID] != $this->filterId) - { - // - $this->_loadFilter(); - } - - // - $this->_setSessionFilterData(); - - // - $this->FiltersModel->resetQuery(); - - $query = $this->_generateQuery(); - if ($query != null) - { - // - $this->dataset = @$this->FiltersModel->execReadOnlyQuery($query); - - // - $this->listFields = $this->FiltersModel->getExecutedQueryListFields(); - - // - $selectedFields = array(); - $filterSessionArray = $this->_readSession(); - if (isset($filterSessionArray[self::SELECTED_FIELDS])) - { - $selectedFields = $filterSessionArray[self::SELECTED_FIELDS]; - } - - // - if (count($selectedFields) == 0) - { - $filterSessionArray[self::SELECTED_FIELDS] = $this->listFields; - } - - // - if ($this->columnsAliases != null && count($this->listFields) != count($this->columnsAliases)) - { - show_error('Parameter columnsAliases does not have a number of items equal to those returned by the query'); - } - - $filterSessionArray[self::COLUMNS_ALIASES] = $this->_getColumnAliasesFromPost(); - $filterSessionArray[self::CHECKBOXES] = $this->checkboxes; - - if ($this->app != null) - { - $filterSessionArray[self::APP_PARAMETER] = $this->app; - } - - if ($this->datasetName != null) - { - $filterSessionArray[self::DATASET_NAME_PARAMETER] = $this->datasetName; - } - - $filterSessionArray[self::ALL_SELECTED_FIELDS] = $this->listFields; - $filterSessionArray[self::ALL_COLUMNS_ALIASES] = $this->columnsAliases; - - /* ------------------------------------------------------------ */ - - $tmpDataset = null; - if (hasData($this->dataset)) - { - $tmpDataset = array(); - - for ($resultsCounter = 0; $resultsCounter < count($this->dataset->retval); $resultsCounter++) - { - $result = $this->dataset->retval[$resultsCounter]; - - $class = $this->_markRow($result); - $formattedResult = $this->_formatRaw($result); - $formattedResult->FILTER_CLASS_MARK_ROW = $class; - $tmpDataset[] = $formattedResult; - } - } - - $filterSessionArray[self::DATASET_PARAMETER] = $tmpDataset; - - /* ------------------------------------------------------------ */ - - // - $this->metaData = $this->FiltersModel->getExecutedQueryMetaData(); - - $filterSessionArray[self::METADATA_PARAMETER] = $this->metaData; - } - - $this->_writeSession($filterSessionArray); - - // - $this->loadViewFilters(); + $this->view(self::WIDGET_URL_FILTER); // GUI starts here } - /** - * - */ - public static function getSelectedFilters() - { - return self::_getFromSession(self::SELECTED_FILTERS); - } + //------------------------------------------------------------------------------------------------------------------ + // Public static methods used to load views and to access statically to some properies of the FilterWidget /** - * - */ - public static function getColumnsAliases() - { - return self::_getFromSession(self::COLUMNS_ALIASES); - } - - /** - * + * Loads the view related to the selected fields */ public static function loadViewSelectFields() { - if (self::$FilterWidgetInstance->hideHeader != true) + if (self::$_FilterWidgetInstance->_hideHeader != true) { self::_loadView(self::WIDGET_URL_SELECT_FIELDS); } } /** - * + * Loads the view related to the selected filters */ public static function loadViewSelectFilters() { - if (self::$FilterWidgetInstance->hideHeader != true) + if (self::$_FilterWidgetInstance->_hideHeader != true) { self::_loadView(self::WIDGET_URL_SELECT_FILTERS); } } /** - * + * Loads the view related to the form to save a custom filter */ public static function loadViewSaveFilter() { - if (self::$FilterWidgetInstance->hideSave != true) + if (self::$_FilterWidgetInstance->_hideSave != true) { self::_loadView(self::WIDGET_URL_SAVE_FILTER); } } /** - * + * Loads the view related to the table dataset */ public static function loadViewTableDataset() { self::_loadView(self::WIDGET_URL_TABLE_DATASET); } - /** - * - */ - private function _formatRaw($datasetRaw) - { - $tmpDatasetRaw = clone $datasetRaw; + //------------------------------------------------------------------------------------------------------------------ + // Private methods - foreach ($tmpDatasetRaw as $columnName => $columnValue) + /** + * Checks parameters and initialize all the properties of this FilterWidget + */ + private function _initFilterWidget($args) + { + $this->_checkParameters($args); + + // If here then everything is ok + + // Initialize class properties + $this->_app = null; + $this->_datasetName = null; + $this->_filterKurzbz = null; + $this->_filterId = null; + $this->_query = null; + $this->_additionalColumns = null; + $this->_columnsAliases = null; + $this->_formatRow = null; + $this->_markRow = null; + $this->_checkboxes = null; + $this->_hideHeader = null; + $this->_hideSave = null; + + // Parameters needed to retrive univocally a filter from DB + if (isset($args[FiltersLib::APP_PARAMETER])) { + $this->_app = $args[FiltersLib::APP_PARAMETER]; + } + + if (isset($args[FiltersLib::DATASET_NAME_PARAMETER])) + { + $this->_datasetName = $args[FiltersLib::DATASET_NAME_PARAMETER]; + } + + if (isset($args[FiltersLib::FILTER_KURZBZ_PARAMETER])) + { + $this->_filterKurzbz = $args[FiltersLib::FILTER_KURZBZ_PARAMETER]; + } + + if (isset($args[FiltersLib::FILTER_ID])) + { + $this->_filterId = $args[FiltersLib::FILTER_ID]; + } + + // How to retrive data for the filter: SQL statement or a result from DB + if (isset($args[FiltersLib::QUERY_PARAMETER])) + { + $this->_query = $args[FiltersLib::QUERY_PARAMETER]; + } + + // Parameter is used to add extra columns to the dataset + if (isset($args[FiltersLib::ADDITIONAL_COLUMNS]) + && is_array($args[FiltersLib::ADDITIONAL_COLUMNS]) + && count($args[FiltersLib::ADDITIONAL_COLUMNS]) > 0) + { + $this->_additionalColumns = $args[FiltersLib::ADDITIONAL_COLUMNS]; + } + + // Parameter is used to add use aliases for the columns fo the dataset + if (isset($args[FiltersLib::COLUMNS_ALIASES]) + && is_array($args[FiltersLib::COLUMNS_ALIASES]) + && count($args[FiltersLib::COLUMNS_ALIASES]) > 0) + { + $this->_columnsAliases = $args[FiltersLib::COLUMNS_ALIASES]; + } + + // Parameter that contains a function to format the rows of the dataset + if (isset($args[FiltersLib::FORMAT_ROW]) && is_callable($args[FiltersLib::FORMAT_ROW])) + { + $this->_formatRow = $args[FiltersLib::FORMAT_ROW]; + } + + // Parameter that contains a function to mark in the GUI the rows of the dataset + if (isset($args[FiltersLib::MARK_ROW]) && is_callable($args[FiltersLib::MARK_ROW])) + { + $this->_markRow = $args[FiltersLib::MARK_ROW]; + } + + // Parameter used to specify the column of the dataset that will be used + // as id of the checkboxes column in the GUI + if (isset($args[FiltersLib::CHECKBOXES])) + { + $this->_checkboxes = $args[FiltersLib::CHECKBOXES]; + } + + // To specify if the header to operate with the FilterWidget is shown or not + if (isset($args[FiltersLib::HIDE_HEADER]) && is_bool($args[FiltersLib::HIDE_HEADER])) + { + $this->_hideHeader = $args[FiltersLib::HIDE_HEADER]; + } + + // To specify if the form to save a custom FilterWidget is shown or not + if (isset($args[FiltersLib::HIDE_SAVE]) && is_bool($args[FiltersLib::HIDE_SAVE])) + { + $this->_hideSave = $args[FiltersLib::HIDE_SAVE]; + } + } + + /** + * Checks the required parameters used to call this FilterWidget + */ + private function _checkParameters($args) + { + if (!is_array($args) || (is_array($args) && count($args) == 0)) + { + show_error('Second parameter of the widget call must be a not empty associative array'); + } + else + { + if ((!isset($args[FiltersLib::APP_PARAMETER]) && !isset($args[FiltersLib::DATASET_NAME_PARAMETER])) + && !isset($args[FiltersLib::FILTER_ID])) + { + show_error( + 'The parameters ("'.FiltersLib::APP_PARAMETER.'" and "'.FiltersLib::DATASET_NAME_PARAMETER.') OR "'. + FiltersLib::FILTER_ID.'" must be specified' + ); + } + else + { + if (!isset($args[FiltersLib::QUERY_PARAMETER])) + { + show_error('The parameters "'.FiltersLib::QUERY_PARAMETER.'" must be specified'); + } + } + } + } + + /** + * Contains all the logic used to load all the data needed to the FilterWidget + */ + private function _startFilterWidget() + { + // Read the all session for this filter widget + $session = $this->filterslib->getSession(); + + // If session is NOT empty + if ($session != null) + { + // Retrive the filterId stored in the session + $sessionFilterId = $this->filterslib->getElementSession(FiltersLib::FILTER_ID); + + // If the filter loaded in session is NOT the same that is being requested then empty the session + if ($this->_filterId != $sessionFilterId) + { + $this->filterslib->setSession(null); + $session = null; + } + else // else if the filter loaded in session is the same that is being requested + { + // Get SESSION_RELOAD_DATASET from the session + $reloadDataset = $this->filterslib->getElementSession(FiltersLib::SESSION_RELOAD_DATASET); + if ($reloadDataset === true) // if it's value is very true, reload the dataset + { + // set as false to stop changing the dataset + $this->filterslib->setElementSession(FiltersLib::SESSION_RELOAD_DATASET, false); + + // Generate dataset query using filters from the session + $datasetQuery = $this->filterslib->generateDatasetQuery( + $this->_query, + $this->filterslib->getElementSession(FiltersLib::SESSION_FILTERS) + ); + + // Then retrive dataset from DB + $dataset = $this->filterslib->getDataset($datasetQuery); + + // Save changes into session if data are valid + if (!isError($dataset)) + { + $this->_formatDataset($dataset); // marks rows using markRow and format rowns using formatRow + + // Set the new dataset and its attributes in the session + $this->filterslib->setElementSession(FiltersLib::SESSION_METADATA, $this->FiltersModel->getExecutedQueryMetaData()); + $this->filterslib->setElementSession(FiltersLib::SESSION_ROW_NUMBER, count($dataset->retval)); + $this->filterslib->setElementSession(FiltersLib::SESSION_DATASET, $dataset->retval); + } + } + } + } + + // If the session is empty + if ($session == null) + { + // Load filter definition data from DB + $definition = $this->filterslib->loadDefinition( + $this->_filterId, + $this->_app, + $this->_datasetName, + $this->_filterKurzbz + ); + + // Checks and parse json present into the definition + $parsedFilterJson = $this->filterslib->parseFilterJson($definition); + if ($parsedFilterJson != null) // if the json is valid + { + // Generate dataset query + $datasetQuery = $this->filterslib->generateDatasetQuery($this->_query, $parsedFilterJson->filters); + + // Then retrive dataset from DB + $dataset = $this->filterslib->getDataset($datasetQuery); + + // Try to load the name of the filter using the PhrasesLib + $filterName = $this->filterslib->getFilterName($parsedFilterJson); + + // Save changes into session if data are valid + if (!isError($dataset)) + { + $this->_formatDataset($dataset); // marks rows using markRow and format rowns using formatRow + + // Stores an array that contains all the data useful for + $this->filterslib->setSession( + array( + FiltersLib::FILTER_ID => $this->_filterId, // + FiltersLib::APP_PARAMETER => $this->_app, // + FiltersLib::DATASET_NAME_PARAMETER => $this->_datasetName, // + + FiltersLib::SESSION_FILTER_NAME => $filterName, // + + FiltersLib::SESSION_FIELDS => $this->FiltersModel->getExecutedQueryListFields(), // + FiltersLib::SESSION_SELECTED_FIELDS => $this->_getColumnsNames($parsedFilterJson->columns), // + FiltersLib::SESSION_COLUMNS_ALIASES => $this->_columnsAliases, // + FiltersLib::SESSION_ADDITIONAL_COLUMNS => $this->_additionalColumns, // + FiltersLib::SESSION_CHECKBOXES => $this->_checkboxes, // + FiltersLib::SESSION_FILTERS => $parsedFilterJson->filters, // + FiltersLib::SESSION_METADATA => $this->FiltersModel->getExecutedQueryMetaData(), // + FiltersLib::SESSION_ROW_NUMBER => count($dataset->retval), // + FiltersLib::SESSION_DATASET => $dataset->retval, // + FiltersLib::SESSION_RELOAD_DATASET => false // + ) + ); + } + } + } + } + + /** + * Calls the method _markRow and _formatRow to marks rows using markRow and format rowns using formatRow + * NOTE: this method operates directly on the retrived dataset: parameter passed by reference + */ + private function _formatDataset(&$rawDataset) + { + if (hasData($rawDataset) && is_array($rawDataset->retval)) + { + // For each row of the data set + for ($rowCounter = 0; $rowCounter < count($rawDataset->retval); $rowCounter++) + { + // Calls the methods to mark and to format a row + // NOTE: keep this order! the markRow function given as parameter is supposing to work + // on a raw dataset, NOT on a formatted one + $rawDataset->retval[$rowCounter]->MARK_ROW_CLASS = $this->_markRow($rawDataset->retval[$rowCounter]); + $this->_formatRow($rawDataset->retval[$rowCounter]); + } + } + } + + /** + * Formats the columns of all the rows of the entire dataset + * - converts booleans into strings "true" and "false" + * - format dates using the format string defined in DEFAULT_DATE_FORMAT + * Calls the parameter formatRow if it was given and if it is a valid funtion + * NOTE: this method operates directly on the retrived dataset: parameter passed by reference + */ + private function _formatRow(&$rawDatasetRow) + { + // For each column of the row + foreach ($rawDatasetRow as $columnName => $columnValue) + { + // Basic conversions if (is_bool($columnValue)) { - $tmpDatasetRaw->{$columnValue} = $columnValue === true ? 'true' : 'false'; + $rawDatasetRow->{$columnValue} = $columnValue === true ? 'true' : 'false'; } elseif (DateTime::createFromFormat('Y-m-d G:i:s', $columnValue) !== false) { - $tmpDatasetRaw->{$columnValue} = date(self::DEFAULT_DATE_FORMAT, strtotime($columnValue)); + $rawDatasetRow->{$columnValue} = date(self::DEFAULT_DATE_FORMAT, strtotime($columnValue)); } } - if ($this->formatRaw != null) + // If a valid function call the given formatRow + if ($this->_formatRow != null && is_callable($this->_formatRow)) { - $formatRaw = $this->formatRaw; - $tmpDatasetRaw = $formatRaw($tmpDatasetRaw); + $formatRowFunction = $this->_formatRow; + $rawDatasetRow = $formatRowFunction($rawDatasetRow); } - - return $tmpDatasetRaw; } /** - * + * Returns a string that contains a class name used to mark rows in the dataset table + * Calls the parameter markRow if it was given and if it is a valid funtion */ - private function _markRow($datasetRaw) + private function _markRow($rawDatasetRow) { - if (is_object($datasetRaw)) + // If a valid function call the given markRow + if ($this->_markRow != null && is_callable($this->_markRow)) { - if ($this->markRow != null) + $markRowFunction = $this->_markRow; + $class = $markRowFunction($rawDatasetRow); + } + + return !isset($class) ? '' : $class; + } + + /** + * Utility method that retrives the name of the columns present in a filter JSON definition + */ + private function _getColumnsNames($columns) + { + $columnsNames = array(); + + foreach ($columns as $key => $obj) + { + if (isset($obj->name)) { - $markRow = $this->markRow; - $class = $markRow($datasetRaw); + $columnsNames[] = $obj->name; } } - return $class == null ? '' : $class; + return $columnsNames; } /** - * - */ - public static function displayFilterName() - { - if (self::$FilterWidgetInstance->filterNamePhrase != null && self::$FilterWidgetInstance->filterNamePhrase != '') - { - echo self::$FilterWidgetInstance->filterNamePhrase; - } - elseif (self::$FilterWidgetInstance->filterName != null && self::$FilterWidgetInstance->filterName != '') - { - echo self::$FilterWidgetInstance->filterName; - } - } - - //------------------------------------------------------------------------------------------------------------------ - // Protected - - /** - * - */ - protected function loadViewFilters() - { - // Loads views - $this->view(self::WIDGET_URL_FILTER); - } - - //------------------------------------------------------------------------------------------------------------------ - // Private - - /** - * - */ - private static function _getFromSession($key) - { - $_getFromSession = null; - $ci =& get_instance(); - $filterSessionArray = $ci->session->userdata(self::SESSION_NAME); - - if (isset($filterSessionArray[$key])) - { - $_getFromSession = $filterSessionArray[$key]; - } - - return $_getFromSession; - } - - /** - * - */ - private static function _getActiveFilterValue($filterName) - { - $getActiveFilterValue = ''; - - $activeFields = self::_getFromSession(self::ACTIVE_FILTERS); - - if (isset($activeFields[$filterName])) - { - $getActiveFilterValue = $activeFields[$filterName]; - } - - return $getActiveFilterValue; - } - - /** - * - */ - private static function _getActiveFilterOperationValue($filterName) - { - $getActiveFilterOperationValue = ''; - - $activeFieldsOperation = self::_getFromSession(self::ACTIVE_FILTERS_OPERATION); - - if (isset($activeFieldsOperation[$filterName])) - { - $getActiveFilterOperationValue = $activeFieldsOperation[$filterName]; - } - - return $getActiveFilterOperationValue; - } - - /** - * - */ - private static function _getActiveFilterOptionValue($filterName) - { - $getActiveFilterOptionValue = ''; - - $activeFieldsOption = self::_getFromSession(self::ACTIVE_FILTERS_OPTION); - - if (isset($activeFieldsOption[$filterName])) - { - $getActiveFilterOptionValue = $activeFieldsOption[$filterName]; - } - - return $getActiveFilterOptionValue; - } - - /** - * + * Loads a view using the given viewName and eventually other parameters */ private static function _loadView($viewName, $parameters = null) { $ci =& get_instance(); $ci->load->view($viewName, $parameters); } - - /** - * - */ - private function _initSession() - { - $filterSessionArray = array(); - - $session = $this->_readSession(); - - if (count($session) > 0) - { - $filterSessionArray = $session; - } - - if (!isset($filterSessionArray[self::SELECTED_FIELDS])) - { - $filterSessionArray[self::SELECTED_FIELDS] = array(); - } - - if (!isset($filterSessionArray[self::SELECTED_FILTERS])) - { - $filterSessionArray[self::SELECTED_FILTERS] = array(); - } - - if (!isset($filterSessionArray[self::ACTIVE_FILTERS])) - { - $filterSessionArray[self::ACTIVE_FILTERS] = array(); - } - - if (!isset($filterSessionArray[self::ACTIVE_FILTERS_OPERATION])) - { - $filterSessionArray[self::ACTIVE_FILTERS_OPERATION] = array(); - } - - if (!isset($filterSessionArray[self::ACTIVE_FILTERS_OPTION])) - { - $filterSessionArray[self::ACTIVE_FILTERS_OPTION] = array(); - } - - if (!isset($filterSessionArray[self::ADDITIONAL_COLUMNS])) - { - $filterSessionArray[self::ADDITIONAL_COLUMNS] = array(); - } - - if (!isset($filterSessionArray[self::FILTER_ID])) - { - $filterSessionArray[self::FILTER_ID] = -1; - } - - if (!isset($filterSessionArray[self::COLUMNS_ALIASES])) - { - $filterSessionArray[self::COLUMNS_ALIASES] = array(); - } - - if (!isset($filterSessionArray[self::FILTER_NAME])) - { - $filterSessionArray[self::FILTER_NAME] = null; - } - - if (!isset($filterSessionArray[self::APP_PARAMETER])) - { - $filterSessionArray[self::APP_PARAMETER] = null; - } - - if (!isset($filterSessionArray[self::DATASET_NAME_PARAMETER])) - { - $filterSessionArray[self::DATASET_NAME_PARAMETER] = null; - } - - $this->_writeSession($filterSessionArray); - } - - /** - * - */ - private function _initFilterWidget($args) - { - $this->app = null; - $this->query = null; - $this->datasetName = null; - $this->filterKurzbz = null; - $this->filterId = null; - $this->additionalColumns = null; - $this->formatRaw = null; - $this->markRow = null; - $this->checkboxes = null; - $this->hideHeader = false; - $this->hideSave = false; - $this->columnsAliases = null; - $this->filterName = null; - $this->filterNamePhrase = null; - - $this->filterUniqueId = $this->_getFilterUniqueId(); - - if (!is_array($args) || (is_array($args) && count($args) == 0)) - { - show_error('Second parameter must be a not empty associative array'); - } - else - { - if (( - !isset($args[self::APP_PARAMETER]) - && !isset($args[self::DATASET_NAME_PARAMETER]) - && !isset($args[self::FILTER_KURZBZ]) - ) - && !isset($args[self::FILTER_ID])) - { - show_error('At least one parameters must be specified 1'); - } - else - { - if (!isset($args[self::QUERY_PARAMETER]) && !isset($args[self::DB_RESULT])) - { - show_error('At least one parameters must be specified 2'); - } - else - { - if (isset($args[self::APP_PARAMETER]) - && isset($args[self::DATASET_NAME_PARAMETER]) - && isset($args[self::FILTER_KURZBZ])) - { - $this->app = $args[self::APP_PARAMETER]; - $this->datasetName = $args[self::DATASET_NAME_PARAMETER]; - $this->filterKurzbz = $args[self::FILTER_KURZBZ]; - } - else - { - $this->filterId = $args[self::FILTER_ID]; - } - - if (isset($args[self::QUERY_PARAMETER])) - { - $this->query = $args[self::QUERY_PARAMETER]; - } - elseif (isset($args[self::DB_RESULT])) - { - $this->query = $args[self::DB_RESULT]; - } - } - } - - if (isset($args[self::ADDITIONAL_COLUMNS]) - && is_array($args[self::ADDITIONAL_COLUMNS]) - && count($args[self::ADDITIONAL_COLUMNS]) > 0) - { - $this->additionalColumns = $args[self::ADDITIONAL_COLUMNS]; - } - - if (isset($args[self::FORMAT_RAW]) && is_callable($args[self::FORMAT_RAW])) - { - $this->formatRaw = $args[self::FORMAT_RAW]; - } - - if (isset($args[self::MARK_ROW]) && is_callable($args[self::MARK_ROW])) - { - $this->markRow = $args[self::MARK_ROW]; - } - - if (isset($args[self::CHECKBOXES])) - { - $this->checkboxes = $args[self::CHECKBOXES]; - } - - if (isset($args[self::HIDE_HEADER]) && is_bool($args[self::HIDE_HEADER])) - { - $this->hideHeader = $args[self::HIDE_HEADER]; - } - - if (isset($args[self::HIDE_SAVE]) && is_bool($args[self::HIDE_SAVE])) - { - $this->hideSave = $args[self::HIDE_SAVE]; - } - - if (isset($args[self::COLUMNS_ALIASES]) - && is_array($args[self::COLUMNS_ALIASES]) - && count($args[self::COLUMNS_ALIASES]) > 0) - { - $this->columnsAliases = $args[self::COLUMNS_ALIASES]; - } - } - } - - /** - * - */ - private function _loadFilter() - { - // - $this->FiltersModel->resetQuery(); - - // - $this->FiltersModel->addJoin('public.tbl_benutzer', 'person_id', 'LEFT'); - - // - $this->FiltersModel->addSelect('system.tbl_filters.*'); - - // - $this->FiltersModel->addOrder('sort', 'ASC'); - - // - $this->FiltersModel->addLimit(1); - - $whereParameters = null; - - if ($this->filterId <= 0) - { - // 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' => $this->app, - 'dataset_name' => $this->datasetName, - 'uid' => getAuthUID(), - 'default_filter' => true - ); - } - else - { - $whereParameters = array( - 'filter_id' => $this->filterId - ); - } - - // - $filter = $this->FiltersModel->loadWhere($whereParameters); - - $jsonEncodedFilter = null; - - if (hasData($filter)) - { - if (isset($filter->retval[0]->filter) && trim($filter->retval[0]->filter) != '') - { - $jsonEncodedFilter = json_decode($filter->retval[0]->filter); - } - } - else // 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' => $this->app, - 'dataset_name' => $this->datasetName, - 'default_filter' => true - ); - - $filter = $this->FiltersModel->loadWhere($whereParameters); - if (hasData($filter)) - { - if (isset($filter->retval[0]->filter) && trim($filter->retval[0]->filter) != '') - { - $jsonEncodedFilter = json_decode($filter->retval[0]->filter); - } - } - } - - if ($jsonEncodedFilter != null) - { - $selectedFields = array(); - $selectedFilters = array(); - $activeFilters = array(); - $activeFiltersOperation = array(); - $activeFiltersOption = array(); - $filterName = null; - $filterNamePhrase = null; - - if (isset($jsonEncodedFilter->columns)) - { - $columns = $jsonEncodedFilter->columns; - - for($columnsCounter = 0; $columnsCounter < count($columns); $columnsCounter++) - { - if (isset($columns[$columnsCounter]->name)) - { - $selectedFields[] = $columns[$columnsCounter]->name; - } - } - } - - if (isset($jsonEncodedFilter->filters)) - { - $filters = $jsonEncodedFilter->filters; - - for($filtersCounter = 0; $filtersCounter < count($filters); $filtersCounter++) - { - if (isset($filters[$filtersCounter]->name)) - { - $selectedFilters[] = $filters[$filtersCounter]->name; - $activeFilters[$filters[$filtersCounter]->name] = $filters[$filtersCounter]->condition; - $activeFiltersOperation[$filters[$filtersCounter]->name] = $filters[$filtersCounter]->operation; - if (isset($filters[$filtersCounter]->option)) - { - $activeFiltersOption[$filters[$filtersCounter]->name] = $filters[$filtersCounter]->option; - } - } - } - } - - if (isset($jsonEncodedFilter->name)) - { - $filterName = $jsonEncodedFilter->name; - } - - // Filter name from phrases system - if (isset($jsonEncodedFilter->namePhrase)) - { - $this->load->library('PhrasesLib', array('FilterWidget')); - $filterNamePhrase = $this->phraseslib->t('FilterWidget', $jsonEncodedFilter->namePhrase); - } - - $this->filterName = $filterName; - $this->filterNamePhrase = $filterNamePhrase; - $this->app = $filter->retval[0]->app; - - $filterSessionArray = array( - self::SELECTED_FIELDS => $selectedFields, - self::SELECTED_FILTERS => $selectedFilters, - self::ACTIVE_FILTERS => $activeFilters, - self::ACTIVE_FILTERS_OPERATION => $activeFiltersOperation, - self::ACTIVE_FILTERS_OPTION => $activeFiltersOption, - self::FILTER_NAME => $filterName, - self::APP_PARAMETER => $filter->retval[0]->app, - self::DATASET_NAME_PARAMETER => $filter->retval[0]->dataset_name - ); - - $this->_writeSession($filterSessionArray); - } - else - { - $filterSessionArray = array( - self::SELECTED_FIELDS => array(), - self::SELECTED_FILTERS => array(), - self::ACTIVE_FILTERS => array(), - self::ACTIVE_FILTERS_OPERATION => array(), - self::ACTIVE_FILTERS_OPTION => array(), - self::FILTER_NAME => null, - self::APP_PARAMETER => null, - self::DATASET_NAME_PARAMETER => null - ); - - $this->_writeSession($filterSessionArray); - } - } - - /** - * - */ - private function _saveFilter() - { - if (isset($_POST['saveCustomFilter']) && $_POST['saveCustomFilter'] == 'true') - { - $objToBeSaved = new stdClass(); - - $filterSessionArray = $this->_readSession(); - - 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 = $_POST['customFilterDescription']; - $descPGArray = '{"'.$desc.'", "'.$desc.'", "'.$desc.'", "'.$desc.'"}'; - - $resultBenutzer = $this->BenutzerModel->load(getAuthUID()); - $personId = $resultBenutzer->retval[0]->person_id; - - $result = $this->FiltersModel->loadWhere(array( - 'app' => $this->app, - 'dataset_name' => $this->datasetName, - 'description' => $descPGArray, - 'person_id' => $personId - )); - - if (hasData($result)) - { - $this->FiltersModel->update( - array( - 'app' => $this->app, - 'dataset_name' => $this->datasetName, - 'description' => $descPGArray, - 'person_id' => $personId - ), - array( - 'filter' => json_encode($objToBeSaved) - ) - ); - } - else - { - $this->FiltersModel->insert(array( - 'app' => $this->app, - 'dataset_name' => $this->datasetName, - 'filter_kurzbz' => uniqid($personId, true), - 'person_id' => $personId, - 'description' => $descPGArray, - 'sort' => null, - 'default_filter' => false, - 'filter' => json_encode($objToBeSaved), - 'oe_kurzbz' => null - )); - } - } - } - - /** - * - */ - private function _getSelectedFieldsFromPost() - { - // Selected fields - $selectedFields = array(); - - $filterSessionArray = $this->_readSession(); - if (isset($filterSessionArray[self::SELECTED_FIELDS])) - { - $selectedFields = $filterSessionArray[self::SELECTED_FIELDS]; - } - - return $selectedFields; - } - - /** - * - */ - private function _getAppFromPost() - { - $app = $this->app; - - $filterSessionArray = $this->_readSession(); - if (isset($filterSessionArray[self::APP_PARAMETER])) - { - $app = $filterSessionArray[self::APP_PARAMETER]; - } - - return $app; - } - - /** - * - */ - private function _getDatasetFromPost() - { - $datasetName = $this->datasetName; - - $filterSessionArray = $this->_readSession(); - if (isset($filterSessionArray[self::DATASET_NAME_PARAMETER])) - { - $datasetName = $filterSessionArray[self::DATASET_NAME_PARAMETER]; - } - - return $datasetName; - } - - /** - * - */ - private function _getColumnAliasesFromPost() - { - $columnsAliases = $this->columnsAliases; - $selectedFields = array(); - - $filterSessionArray = $this->_readSession(); - - if (isset($filterSessionArray[self::SELECTED_FIELDS])) - { - $selectedFields = $filterSessionArray[self::SELECTED_FIELDS]; - } - - if (isset($this->listFields) && count($selectedFields) > 0 && is_array($this->columnsAliases) && count($this->columnsAliases) > 0) - { - $columnsAliases = array(); - - for ($i = 0; $i < count($selectedFields); $i++) - { - if (($pos = array_search($selectedFields[$i], $this->listFields)) !== false) - { - $columnsAliases[] = $this->columnsAliases[$pos]; - } - } - } - - return $columnsAliases; - } - - /** - * - */ - private function _getSelectedFiltersFromPost() - { - // Selected filters - $selectedFilters = array(); - - $filterSessionArray = $this->_readSession(); - if (isset($filterSessionArray[self::SELECTED_FILTERS])) - { - $selectedFilters = $filterSessionArray[self::SELECTED_FILTERS]; - } - - return $selectedFilters; - } - - /** - * - */ - private function _setActiveFiltersFromPost(&$activeFilters, &$activeFiltersOperation, &$activeFiltersOption) - { - $selectedFilters = array(); - $filterSessionArray = $this->_readSession(); - - if (isset($filterSessionArray[self::ACTIVE_FILTERS])) - { - $activeFilters = $filterSessionArray[self::ACTIVE_FILTERS]; - } - - if (isset($filterSessionArray[self::ACTIVE_FILTERS_OPERATION])) - { - $activeFiltersOperation = $filterSessionArray[self::ACTIVE_FILTERS_OPERATION]; - } - - if (isset($filterSessionArray[self::ACTIVE_FILTERS_OPTION])) - { - $activeFiltersOption = $filterSessionArray[self::ACTIVE_FILTERS_OPTION]; - } - - if (isset($filterSessionArray[self::SELECTED_FILTERS])) - { - $selectedFilters = $filterSessionArray[self::SELECTED_FILTERS]; - } - - if (is_array($_POST)) - { - if (array_key_exists(self::CMD_REMOVE_FILTER, $_POST) && trim($_POST[self::CMD_REMOVE_FILTER]) != '') - { - if (isset($activeFilters[$_POST[self::CMD_REMOVE_FILTER]])) - { - unset($activeFilters[$_POST[self::CMD_REMOVE_FILTER]]); - } - - if (isset($activeFiltersOperation[$_POST[self::CMD_REMOVE_FILTER]])) - { - unset($activeFiltersOperation[$_POST[self::CMD_REMOVE_FILTER]]); - } - - if (isset($activeFiltersOption[$_POST[self::CMD_REMOVE_FILTER]])) - { - unset($activeFiltersOption[$_POST[self::CMD_REMOVE_FILTER]]); - } - } - else - { - for ($selectedFiltersCounter = 0; $selectedFiltersCounter < count($selectedFilters); $selectedFiltersCounter++) - { - $selectedFilter = $selectedFilters[$selectedFiltersCounter]; - - if (isset($_POST[$selectedFilter])) - { - $activeFilters[$selectedFilter] = $_POST[$selectedFilter]; - } - - if (isset($_POST[$selectedFilter.self::ACTIVE_FILTER_OPERATION_POSTFIX])) - { - $activeFiltersOperation[$selectedFilter] = $_POST[$selectedFilter.self::ACTIVE_FILTER_OPERATION_POSTFIX]; - } - - if (isset($_POST[$selectedFilter.self::ACTIVE_FILTER_OPTION_POSTFIX])) - { - $activeFiltersOption[$selectedFilter] = $_POST[$selectedFilter.self::ACTIVE_FILTER_OPTION_POSTFIX]; - } - } - } - } - } - - /** - * - */ - private function _setSessionFilterData() - { - $session = $this->_readSession(); - - $filterSessionArray = array( - self::SELECTED_FIELDS => $this->_getSelectedFieldsFromPost(), - self::SELECTED_FILTERS => $this->_getSelectedFiltersFromPost(), - self::ADDITIONAL_COLUMNS => $this->additionalColumns, - self::COLUMNS_ALIASES => $this->_getColumnAliasesFromPost(), - self::APP_PARAMETER => $this->_getAppFromPost(), - self::DATASET_NAME_PARAMETER => $this->_getDatasetFromPost() - ); - - $filterSessionArray[self::ACTIVE_FILTERS] = array(); - $filterSessionArray[self::ACTIVE_FILTERS_OPERATION] = array(); - $filterSessionArray[self::ACTIVE_FILTERS_OPTION] = array(); - - $this->_setActiveFiltersFromPost( - $filterSessionArray[self::ACTIVE_FILTERS], - $filterSessionArray[self::ACTIVE_FILTERS_OPERATION], - $filterSessionArray[self::ACTIVE_FILTERS_OPTION] - ); - - $filterSessionArray[self::FILTER_ID] = $this->filterId; - $filterSessionArray[self::FILTER_NAME] = $this->filterName; - $filterSessionArray[self::FILTER_NAME_PHRASE] = $this->filterNamePhrase; - - $this->_writeSession(array_merge($session, $filterSessionArray)); - } - - /** - * - */ - private function _generateQuery() - { - $query = null;//$this->query; - - $activeFilters = array(); - $activeFiltersOperation = array(); - $activeFiltersOption = array(); - - $filterSessionArray = $this->_readSession(); - - if (isset($filterSessionArray[self::ACTIVE_FILTERS])) - { - $activeFilters = $filterSessionArray[self::ACTIVE_FILTERS]; - } - - if (isset($filterSessionArray[self::ACTIVE_FILTERS_OPERATION])) - { - $activeFiltersOperation = $filterSessionArray[self::ACTIVE_FILTERS_OPERATION]; - } - - if (isset($filterSessionArray[self::ACTIVE_FILTERS_OPTION])) - { - $activeFiltersOption = $filterSessionArray[self::ACTIVE_FILTERS_OPTION]; - } - - // - if (count($activeFilters) > 0) - { - $where = ''; - $first = true; - - foreach ($activeFilters as $field => $activeFilterValue) - { - if ($first) - { - $first = false; - } - else - { - $where .= ' AND '; - } - - if (isset($activeFiltersOperation[$field])) - { - $where .= '"'.$field.'"'; - $condition = ''; - - switch ($activeFiltersOperation[$field]) - { - case self::OP_EQUAL: - if (!is_numeric($activeFilterValue)) $activeFilterValue = 0; - $condition = ' = '.$activeFilterValue; - break; - case self::OP_NOT_EQUAL: - if (!is_numeric($activeFilterValue)) $activeFilterValue = 0; - $condition = ' != '.$activeFilterValue; - break; - case self::OP_GREATER_THAN: - if (!is_numeric($activeFilterValue)) $activeFilterValue = 0; - if (isset($activeFiltersOption[$field]) - && ($activeFiltersOption[$field] == self::OPT_DAYS - || $activeFiltersOption[$field] == self::OPT_MONTHS)) - { - $condition = ' < (NOW() - \''.$activeFilterValue.' '.$activeFiltersOption[$field].'\'::interval)'; - } - else - { - $condition = ' > '.$activeFilterValue; - } - - break; - case self::OP_LESS_THAN: - if (!is_numeric($activeFilterValue)) $activeFilterValue = 0; - if (isset($activeFiltersOption[$field]) - && ($activeFiltersOption[$field] == self::OPT_DAYS - || $activeFiltersOption[$field] == self::OPT_MONTHS)) - { - $condition = ' > (NOW() - \''.$activeFilterValue.' '.$activeFiltersOption[$field].'\'::interval)'; - } - else - { - $condition = ' < '.$activeFilterValue; - } - break; - case self::OP_CONTAINS: - $activeFilterValue = $this->FiltersModel->escapeLike($activeFilterValue); // escapes - $condition = ' ILIKE \'%'.$activeFilterValue.'%\''; - break; - case self::OP_NOT_CONTAINS: - $activeFilterValue = $this->FiltersModel->escapeLike($activeFilterValue); // escapes - $condition = ' NOT ILIKE \'%'.$activeFilterValue.'%\''; - break; - case self::OP_IS_TRUE: - $condition = ' IS TRUE'; - break; - case self::OP_IS_FALSE: - $condition = ' IS FALSE'; - break; - case self::OP_SET: - $condition = ' IS NOT NULL'; - break; - case self::OP_NOT_SET: - $condition = ' IS NULL'; - break; - default: - $condition = ' IS NOT NULL'; - break; - } - - $where .= $condition; - } - } - - if ($where != '') - { - $query = 'SELECT * FROM ('.$this->query.') tableFilters WHERE '.$where; - } - } - - return $query; - } - - /** - * - */ - private function _readSession() - { - if (isset($_SESSION[self::SESSION_NAME]) && isset($_SESSION[self::SESSION_NAME][$this->filterUniqueId])) - return $_SESSION[self::SESSION_NAME][$this->filterUniqueId]; - - return array(); - } - - /** - * - */ - private function _writeSession($data) - { - if (!isset($_SESSION[self::SESSION_NAME]) - || (isset($_SESSION[self::SESSION_NAME]) && !is_array($_SESSION[self::SESSION_NAME]))) - { - $_SESSION[self::SESSION_NAME] = array(); - } - - $_SESSION[self::SESSION_NAME][$this->filterUniqueId] = $data; - } - - /** - * - */ - private function _getFilterUniqueId() - { - return $this->router->directory.$this->router->class.'/'.$this->router->method.'/'.$this->input->get('fhc_controller_id'); - } } diff --git a/cis/private/lehre/pruefung/index.php b/cis/private/lehre/pruefung/index.php index 627342386..f1fbbd625 100644 --- a/cis/private/lehre/pruefung/index.php +++ b/cis/private/lehre/pruefung/index.php @@ -1,17 +1,49 @@ - - - - - - - - - - - + + + + + + Prüfung + + + + +

Prüfungen

+ getBerechtigungen($uid); + + $studiensemester = new studiensemester(); + $pruefung = new pruefungCis(); + $pruefung->getPruefungByMitarbeiter($uid, $studiensemester->getaktorNext()); + if(!empty($pruefung->result) || $rechte->isBerechtigt('lehre/pruefungsanmeldungAdmin')) + $pruefungsverwaltung = true; + + echo ''; + ?> + + diff --git a/cis/private/lehre/pruefung/lektor_autocomplete.php b/cis/private/lehre/pruefung/lektor_autocomplete.php index f2e8fae03..401652b6a 100644 --- a/cis/private/lehre/pruefung/lektor_autocomplete.php +++ b/cis/private/lehre/pruefung/lektor_autocomplete.php @@ -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; } -?> \ No newline at end of file +?> diff --git a/cis/private/lehre/pruefung/pruefung.js b/cis/private/lehre/pruefung/pruefung.js deleted file mode 100644 index d014353d5..000000000 --- a/cis/private/lehre/pruefung/pruefung.js +++ /dev/null @@ -1,2048 +0,0 @@ -/* Copyright (C) 2013 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 - */ - -/** - * Liest GET Variablen einer URL aus - * @returns {String|value|Element.value|document@arr;all.value} - */ -function getUrlVars() { - var vars = {}; - var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { - vars[key] = value; - }); - return vars; -} - -/** - * Initialisiert den Datepicker - * @param {type} ele - * @returns {undefined} - */ -function setDatePicker(ele) -{ - var start = $("#pruefungsfenster option:selected").attr("start"); - start = start.split('-'); - var ende = $("#pruefungsfenster option:selected").attr("ende"); - ende = ende.split('-'); - $("#prfTermin input[type=text]").each(function(i,v){ - $("#"+v.id).datepicker("destroy"); - $("#"+v.id).datepicker({ - minDate: new Date(start[0],start[1]-1,start[2]), - maxDate: new Date(ende[0],ende[1]-1,ende[2]) - }); - }); - $("#pruefungsfenster").attr("onchange", "setDatePicker()"); -} - -/** - * Fügt ein neunes Formularfeld für einen zusätzlichen Termin hinzu - * @param {type} htmlTag - * @returns {undefined} - */ -function terminHinzufuegen(htmlTag) -{ - htmlTag = (htmlTag===undefined ? "input" : htmlTag); - switch(htmlTag) - { - case 'input': - var count = $("#prfTermin tr").length+1; - $("#prfTermin").append(''); - setDatePicker(); - break; - case 'span': - var count = $("#prfTermin tr").length+1; - $("#prfTermin").append(''); - break; - } - -} - -/** - * Fügt ein neues Dropdownfeld zur Auswahl der Lehrveranstaltung hinzu - * @param {type} element - * @param {type} isChanged - * @returns {undefined} - */ -function lehrveranstaltungDropdownhinzufuegen(element, isChanged) -{ - if(!isChanged) - { - var newSelect = $("#lvDropdown1").clone(); - newSelect.attr("onchange", "lehrveranstaltungDropdownhinzufuegen(this, false);"); - var id = $("#lvDropdowns select").length+1; - newSelect.attr("id", "lvDropdown"+id); - element.setAttribute("onchange", "lehrveranstaltungDropdownhinzufuegen(this, true);"); - newSelect.appendTo("#lvDropdowns"); - $("#lvDropdowns").append("
"); - } - -} - -/** - * 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 die Prüfungstenster eines Studiensemesters - * @returns {undefined} - */ -function loadPruefungsfenster() -{ - var studiensemester_kurzbz = $("#studiensemester option:selected").val(); - $.ajax({ - dataType: 'json', - url: "./pruefungstermin.json.php", - type: "POST", - data: { - method: "getPruefungsfensterByStudiensemester", - studiensemester_kurzbz: studiensemester_kurzbz - }, - error: loadError - }).success(function(data){ - if(data.result.length === 0) - { - messageBox("message", "Keine Prüfungsfenster vorhanden", "red", "highlight", 1000); - $("#pruefungsfenster").html(""); - } - else - { - writePruefungsfenster(data); - setDatePicker(); - } - }).complete(function(){ - - }); -} - -/** - * Schreibt die Daten des geladenen Prüfungsfensters - * @param {type} data - * @returns {undefined} - */ -function writePruefungsfenster(data) -{ - var prfFensterId = getUrlVars()["prfFensterId"]; - $("#pruefungsfenster").empty(); - $.each(data.result, function(i, v) - { - if(v.oe_kurzbz !== null) - { - var start = v.start; - var ende = v.ende; - start = start.split('-'); - ende = ende.split('-'); - start = new Date(start[0], start[1]-1,start[2]); - ende = new Date(ende[0], ende[1]-1,ende[2]); - start = start.getDate()+"."+(start.getMonth()+1)+"."+start.getFullYear(); - ende = ende.getDate()+"."+(ende.getMonth()+1)+"."+ende.getFullYear(); - if(v.pruefungsfenster_id === prfFensterId) - { - $("#pruefungsfenster").append(""); - } - else - { - $("#pruefungsfenster").append(""); - } - } - else - { - $("#pruefungsfenster").html(""); - } - - }); -} - -/** - * Lädt alle Prüfungen eines Studenten zu deren LVs er angemeldet ist - * @returns {undefined} - */ -function loadPruefungen() -{ - $.ajax({ - dataType: 'json', - url: "./pruefungsanmeldung.json.php", - type: "POST", - data: { - method: "getPruefungByLv", - studiensemester: $("#filter_studiensemester").val() - }, - error: loadError - }).success(function(data){ - $("#pruefungen").empty(); - if(data.error === 'false') - { - data.result.pruefungen.forEach(function(e){ - if(e.pruefung.storniert === false) - { - var table = writePruefungsTable(e, data, true); - $("#pruefungen").append(table); - } - }); - } - else - { - $("#pruefungen").append("Keine Daten vorhanden."); - } - }).complete(function(event, xhr, settings){ - setTablesorter("table1"); - }); -} - -/** - * Lädt alle Prüfungen eines Studienganges - * @returns {undefined} - */ -function loadPruefungenOfStudiengang() -{ - $.ajax({ - dataType: 'json', - url: "./pruefungsanmeldung.json.php", - type: "POST", - data: { - method: "getPruefungByLvFromStudiengang", - studiensemester: $("#filter_studiensemester").val() - }, - error: loadError - }).success(function(data){ - if(data.error === 'false') - { - data.result.pruefungen.forEach(function(e){ - if(e.pruefung.storniert === false) - { - var table = writePruefungsTable(e, data, true); - $("#pruefungenStudiengang").append(table); - } - }); - } - else - { - $("#pruefungenStudiengang").append("Keine Daten vorhanden."); - } - }).complete(function(event, xhr, settings){ - setTablesorter("table2"); - }); -} - -/** - * Lädt alle Prüfungen - * @returns {undefined} - */ -function loadPruefungenGesamt() -{ - $.ajax({ - dataType: 'json', - url: "./pruefungsanmeldung.json.php", - type: "POST", - data: { - method: "getAllPruefungen", - }, - error: loadError - }).success(function(data){ - data.result.pruefungen.forEach(function(e){ - if(e.pruefung.storniert === false) - { - var table = writePruefungsTable(e, data, false); - $("#pruefungenGesamt").append(table); - } - }); - }).complete(function(event, xhr, settings){ - setTablesorter("table3"); - }); -} - -/** - * Schreibt die Daten der Prüfungen in eine Tabelle - * @param {type} e Daten der Prüfungen - * @param {type} data Daten der Anmeldungen - * @returns {String} - */ -function writePruefungsTable(e, data, anmeldung) -{ - var row = ""; - var teilnehmer = ""; - var button = ""; - row += ""+e.organisationseinheit+""+e.lehrveranstaltung[0].bezeichnung+""; - e.pruefung.termine.forEach(function(d){ - var storno = false; - var anmeldung_id = null; - data.result.anmeldungen.forEach(function(anmeldung){ - if((anmeldung.pruefungstermin_id === d.pruefungstermin_id) && (anmeldung.lehrveranstaltung_id === e.lehrveranstaltung[0].lehrveranstaltung_id)) - { - storno = true; - anmeldung_id= anmeldung.pruefungsanmeldung_id; - } - }); - var termin = d.von.split(" "); - var time = termin[1].substring(0,5); - termin = termin[0].split("-"); - termin = new Date(termin[0], termin[1]-1,termin[2]); - var frist = termin; - termin = termin.getDate()+"."+(termin.getMonth()+1)+"."+termin.getFullYear(); - frist = frist.getTime(); - frist = frist - (3*24*60*60*1000); - var fristDate = new Date(frist); - frist = fristDate.getDate()+"."+(fristDate.getMonth()+1)+"."+fristDate.getFullYear(); - - if(fristDate < new Date()) - { - if(!storno) - button = "

Anmeldefrist abgelaufen
"; - else - button = "

Storno nicht mehr möglich.
"; - } - else if(anmeldung || e.lehrveranstaltung[0].angemeldet) - { - if(storno) - { - //button = "

Stornieren (bis "+frist+"):
"; - button = "

"; - - } - else - { - //button = "

Anmelden (bis "+frist+"):

"; - button = "

"; - } - } - else - { - button = "

"; - } - - row += button; - - if(d.max === null) - { - teilnehmer += "unbegrenzt
"; - } - else - { - teilnehmer += "

"+(d.max - d.teilnehmer)+"/"+d.max+"

"; - } - }); - row += ""+teilnehmer+""; - return row; -} - -/** - * Lädt die Details zu einer Prüfung - * @param {type} prfId ID einer Prüfung - * @param {type} lvId ID einer Lehrveranstaltung - * @returns {undefined} - */ -function showPruefungsDetails(prfId, lvId) -{ - var prfId = prfId; - if(prfId!=="null") - { - $.ajax({ - dataType: 'json', - url: "./pruefungsanmeldung.json.php", - type: "POST", - data: { - method: "loadPruefung", - pruefung_id: prfId - }, - error: loadError - }).success(function(data){ - data.result.forEach(function(e){ - if(e.lehrveranstaltung.lehrveranstaltung_id === lvId) - { - var p = e.pruefung; - var l = e.lehrveranstaltung -// $("#prfTyp").html(p.pruefungstyp_kurzbz); - $("#prfMethode").html(p.methode); - $("#prfBeschreibung").html(p.beschreibung); - if(p.einzeln === true) - { - $("#prfEinzeln").html("Einzelprüfung!"); - $("#prfIntervall").html(p.pruefungsintervall+" min"); - $("#prfIntervall").prev().css("visibility", "visible"); - } - else - { - $("#prfEinzeln").html(""); - $("#prfIntervall").html(""); - $("#prfIntervall").prev().css("visibility", "hidden"); - } - $("#lvBez").html(l.bezeichnung); - if(l.ects !== null) - { - $("#lvEcts").html(l.ects); - } - else - { - $("#lvEcts").html("0"); - } - } - }); - $("#details").dialog("open"); - }); - } - else - { - $("#prfTermine").attr("disabled", true); - $("#prfTermine").html(""); - clearPrfDetails(); - } -} - -/** - * Öffnet einen Dialog zur Anmeldung zu einer Prüfung - * @param {type} lehrveranstaltung_id ID einer Lehrveransaltung - * @param {type} termin_id ID des Prüfungstermines - * @param {type} lvBezeichnung Bezeichnung der Lehrveranstaltung - * @param {type} terminVon Beginn der Prüfung - * @param {type} terminBis Ende der Prüfung - * @returns {undefined} - */ -function openDialog(lehrveranstaltung_id, termin_id, lvBezeichnung, terminVon, terminBis) -{ - $("#lehrveranstaltungHidden").val(lehrveranstaltung_id); - $("#terminHidden").val(termin_id); - $("#lehrveranstaltung").html(lvBezeichnung); - - $.ajax({ - dataType: 'json', - url: "./pruefungsanmeldung.json.php", - type: "POST", - data: { - method: "getLvKompatibel", - lehrveranstaltung_id: lehrveranstaltung_id - }, - error: loadError - }).success(function(data){ - var html = ""; - html += '"; - data.result.forEach(function(v, i){ - html += '"; - }); - $("#studienverpflichtung").html(html); - }); - - $.ajax({ - dataType: 'json', - url: "./pruefungsanmeldung.json.php", - type: "POST", - data: { - method: "getPrestudenten" - }, - error: loadError - }).success(function(data) - { - if(data.error !== false) - { - var html = ""; - - console.log(html); - - $("#studiengang").html("t('pruefung/AnrechnungInStudiengang'); ?>:"+html+""); - } - }); - - var start = terminVon; - var ende = terminBis; - start = start.split(' '); - ende = ende.split(' '); - var startTime = start[1]; - var endeTime = ende[1]; - start = start[0].split('-'); - ende = ende[0].split('-'); - start = new Date(start[0], start[1]-1,start[2]); - ende = new Date(ende[0], ende[1]-1,ende[2]); - start = start.getDate()+"."+(start.getMonth()+1)+"."+start.getFullYear(); - ende = ende.getDate()+"."+(ende.getMonth()+1)+"."+ende.getFullYear(); - - start += " "+startTime.substr(0,5)+" Uhr"; - ende += " "+endeTime.substr(0,5)+" Uhr"; - $("#terminVon").html(start); - $("#terminBis").html(ende); - $("#saveDialog").dialog("open"); -} - -/** - * speichert eine Prüfungsanmeldung - * @param {type} lehrveranstaltung_id ID der Lehrveranstaltung - * @param {type} termin_id ID des Prüfungstermines - * @returns {undefined} - */ -function saveAnmeldung(lehrveranstaltung_id, termin_id) -{ - var uid = $("#anmeldung_hinzufuegen_uid").val(); - if(lehrveranstaltung_id === undefined) - lehrveranstaltung_id = $("#lehrveranstaltungHidden").val(); - if(termin_id === undefined) - termin_id = $("#terminHidden").val(); - var bemerkungen = $("#anmeldungBemerkung").val(); - if(bemerkungen === undefined) - bemerkungen = "von Lektor hinzugefügt"; - - var studienverpflichtung_id = null; - if($("#studienverpflichtung").length) - studienverpflichtung_id = $("#studienverpflichtung option:selected").val(); - - var studiengang_kz = null; - if($('#prestudent_studiengang').length) - studiengang_kz = $('#prestudent_studiengang option:selected').val(); - - $.ajax({ - dataType: 'json', - url: "./pruefungsanmeldung.json.php", - type: "POST", - data: { - method: "saveAnmeldung", - termin_id: termin_id, - lehrveranstaltung_id: lehrveranstaltung_id, - bemerkung: bemerkungen, - uid: uid, - studienverpflichtung_id: studienverpflichtung_id, - studiengang_kz: studiengang_kz - }, - error: loadError - }).success(function(data){ - if(data.error === 'false') - { - messageBox("message", data.result, "green", "highlight", 1000); - } - else - { - messageBox("message", data.errormsg, "red", "highlight", 1000); - } - resetForm(); - }).complete(function(event, xhr, settings){ - $("#saveDialog").dialog("close"); - - if(uid === undefined) - { - //Wenn Anmeldung durch Student - refresh(); - } - else - { - //Wenn Anmeldung durch Lektor - showAnmeldungen(termin_id, lehrveranstaltung_id); - } - }); -} - -/** - * storniert eine Prüfungsanmeldung - * @param {type} pruefungsanmeldung_id ID einer Prüfungsanmeldung - * @returns {undefined} - */ -function stornoAnmeldung(pruefungsanmeldung_id) -{ - if(confirm("Anmeldung wirklich stornieren?")) - { - $.ajax({ - dataType: 'json', - url: "./pruefungsanmeldung.json.php", - type: "POST", - data: { - method: "stornoAnmeldung", - pruefungsanmeldung_id: pruefungsanmeldung_id - }, - error: loadError - }).success(function(data){ - if(data.error === 'false') - { - messageBox("message", data.result, "green", "highlight", 1000); - } - else - { - messageBox("message", data.errormsg, "red", "highlight", 1000); - } - }).complete(function(event, xhr, settings){ - refresh(); - }); - } -} - -/** - * Leer das DIV-Element der Prüfungsdetails - * @returns {undefined} - */ -function clearPrfDetails() -{ - $("#prfTyp").empty(); - $("#prfMethode").empty(); - $("#prfBeschreibung").empty(); - $("#prfEinzeln").empty(); -} - -/** - * Setzt ein Formular auf den Urzustand zurück - * @returns {undefined} - */ -function resetForm() -{ - $("form").find("input[type=text], textarea").val(""); - clearPrfDetails(); -} - -/** - * Initialisiert den tablesorter für eine Tabelle - * @param {type} tableId ID eines "table"-Elements - * @returns {undefined} - */ -function setTablesorter(tableId) -{ - if($("#"+tableId).length != 0) - { - if($("#"+tableId)[0].hasInitialized !== true) - { - $("#"+tableId).tablesorter({ - widgets: ["zebra"], - sortList: [[1,0]] - }); - } - else - { - $("#"+tableId).trigger("updateAll"); - var sorting = [[1,0],[0,0]]; - $("#"+tableId).trigger("sorton",[sorting]); - } - } -} - -/** - * Leert die Daten eines table-bodys - * @returns {undefined} - */ -function clearAccordion() -{ - $("#accordion tbody").each(function(i, v){ - $("#"+v.id).empty(); - }); -} - -/** - * Lädt die Seite der Prüfungsanmeldung neu - * @returns {undefined} - */ -function refresh() -{ - clearAccordion(); - loadPruefungen(); - loadPruefungenOfStudiengang(); - loadPruefungenGesamt(); -} - -/** - * Konvertiert einen String im Fromat JJJJ-MM-TT hh:mm:ss zu DD.MM.JJJJ oder HH:MM - * @param {String} string Format: JJJJ-MM-TT hh:mm:ss - * @param {String} type spezifiziet die Ausgabe ("time"|"date") - * @returns {String} Format: date: DD.MM.JJJJ; time: HH:MM - */ -function convertDateTime(string, type) -{ - switch (type) - { - case 'date': - string = string.split(' '); - string = string[0].split('-'); - string = new Date(string[0], string[1]-1,string[2]); - string = string.getDate()+"."+(string.getMonth()+1)+"."+string.getFullYear(); - break; - case 'time': - string = string.split(' '); - string = string[1].split(':'); - string = string[0]+":"+string[1]; - break; - default: - string = string.split(' '); - string = string[0].split('-'); - string = new Date(string[0], string[1]-1,string[2]); - string = string.getDate()+"."+(string.getMonth()+1)+"."+string.getFullYear(); - break; - } - return string; -} - -/** - * 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 showAnmeldungen(pruefungstermin_id, lehrveranstaltung_id) -{ - $("#kommentar").empty(); - $("#kommentarSpeichernButton").empty(); - $.ajax({ - dataType: 'json', - url: "./pruefungsanmeldung.json.php", - type: "POST", - data: { - method: "getAnmeldungenTermin", - pruefungstermin_id: pruefungstermin_id, - lehrveranstaltung_id: lehrveranstaltung_id - }, - error: loadError - }).success(function(data){ - writeAnmeldungen(data); - }).complete(function(event, xhr, settings){ - $("#sortable").sortable(); - $("#sortable").disableSelection(); - }); -} - -function writeAnmeldungen(data) -{ - if(data.error === 'false') - { - var terminId = data.result.anmeldungen[0].pruefungstermin_id; - var pruefung_id = data.result.anmeldungen[0].pruefung_id; - var lehrveranstaltung_id = data.result.anmeldungen[0].lehrveranstaltung_id; - var ort_kurzbz = data.result.ort_kurzbz; - var liste = "
    "; - var count = 0; - var studiensemester = $("#filter_studiensemester option:selected").val(); - data.result.anmeldungen.forEach(function(d){ - count++; - var vorname = d.student.vorname !== "null" ? d.student.vorname : ""; - var nachname = d.student.nachname !== "null" ? d.student.nachname : ""; - switch(d.status_kurzbz) - { - case 'angemeldet': - liste += "
  • "+vorname+" "+nachname+""; - liste += "
    "+count+"
    "; - if(d.wuensche !== null) - { - liste += "
    "; - } - liste += "
  • "; - break; - case 'bestaetigt': - liste += "
  • "+vorname+" "+nachname+""; - liste += "
    "+count+"
    "; - if(d.wuensche !== null) - { - liste += "
    "; - } - - break; - default: - break; - } - - }); - liste += "
"; - $("#anmeldung_hinzufuegen").html(""); - $("#reihungSpeichernButton").html(""); - $("#anmeldeDaten").html(liste); - $("#listeDrucken").html("Liste drucken"); - if(ort_kurzbz !== null) - { - $("#raumLink").html("Prüfungsraum: "+ort_kurzbz); - } - else - { - $("#raumLink").html("Prüfungsort"); - } - - $(document).tooltip({ - position: { - at: "right center", - my: "left+15 center" - } - }); - } - else - { - $("#anmeldeDaten").empty(); - $("#reihungSpeichernButton").empty(); - $("#kommentar").empty(); - $("#kommentarSpeichernButton").empty(); - $("#raumLink").empty(); - $("#listeDrucken").empty(); - messageBox("message", data.errormsg, "red", "highlight", 1000); - } -} - -function openRaumDialog(terminId, lehrveranstaltung_id) -{ - getRaeume(terminId); - $("#raum").html('

Prüfungsraum

im Büro
Raum: '); - $("#raumSpeichernButton").html(""); - $("#raumDialog").dialog("open"); -} - -/** - * speichert die Reihung der Studenten einer Prüfungsanmeldung - * @param {type} terminId ID des Prüfungstermines - * @param {type} lehrveranstaltung_id ID der Lehrveranstaltung - * @returns {undefined} - */ -function saveReihung(terminId, lehrveranstaltung_id) -{ - var reihung = []; - $("#anmeldeDaten ul").children().each(function(i, v){ - var anmeldung = new Object(); - anmeldung.terminId = terminId; - anmeldung.lehrveranstaltung_id = lehrveranstaltung_id; - anmeldung.reihung = (i+1); - anmeldung.uid = v.id; - reihung.push(anmeldung); - }); - $.ajax({ - dataType: 'json', - url: "./pruefungsanmeldung.json.php", - type: "POST", - data: { - method: "saveReihung", - reihung: reihung - }, - error: loadError - }).success(function(data){ - if(data.error === 'false' && data.result === true) - { - messageBox("message", "Reihung erfolgreich geändert.", "green", "highlight", 1000); - } - else - { - messageBox("message", data.errormsg, "red", "highlight", 1000); - } - }).complete(function(){ - showAnmeldungen(terminId, lehrveranstaltung_id); - }); -} - -/** - * Ändert den Status einer Anmeldung auf "bestätigt" - * @param {type} pruefungsanmeldung_id ID der Prüfungsanmeldung - * @param {type} termin_id ID des Prüfungstermines - * @param {type} lehrveranstaltung_id ID der Lehrveranstaltung - * @returns {undefined} - */ -function anmeldungBestaetigen(pruefungsanmeldung_id, termin_id, lehrveranstaltung_id) -{ - $.ajax({ - dataType: 'json', - url: "./pruefungsanmeldung.json.php", - type: "POST", - data: { - method: "anmeldungBestaetigen", - pruefungsanmeldung_id: pruefungsanmeldung_id - }, - error: loadError - }).success(function(data){ - if(data.error === 'false' && data.result === true) - { - if(termin_id !== 'undefined' && lehrveranstaltung_id !== 'undefined') - { - showAnmeldungen(termin_id, lehrveranstaltung_id); - } - } - else - { - messageBox("message", data.errormsg, "red", "highlight", 1000); - } - }); -} - -/** - * Anzeige eines DIVs zur Darstellung von Fehlermeldungen, etc. - * @param {type} divId ID des DIVs in dem die Meldung dargestellt werden soll - * @param {type} data Daten die angezeigt werden sollen - * @param {type} color Hintergrundfarbe des DIVs - * @param {type} effect Anzeigeeffekt (siehe jQuery UI) - * @param {type} duration Dauer des Effektes - * @returns {undefined} - */ -function messageBox(divId, data, color, effect, duration) -{ - $("#"+divId).html(data); - $("#"+divId).effect(effect, { - duration: duration, - color: color - }).delay(200).hide("clip", "fast"); -} - -/** - * Lädt alle Studiengänge - * @returns {undefined} - */ -function loadStudiengaenge() -{ - $.ajax({ - dataType: 'json', - url: "./pruefungsanmeldung.json.php", - type: "POST", - data: { - method: "getStudiengaenge" - }, - error: loadError - }).success(function(data){ - $("#stgListe").empty(); - if(data.error === 'false') - { - var liste = ""; - $("#stgListe").append(liste); - } - else - { - messageBox("message", data.errormsg, "red", "highlight", 1000); - } - }); -} - -/** - * Lädt alle Prüfungen zu einem Studiengang - * @param {type} studiengang_kz Studiengangskennzahl - * @returns {undefined} - */ -function loadPruefungStudiengang(studiengang_kz, studiensemester) -{ - if(studiengang_kz === undefined) - studiengang_kz = $("#select_studiengang option:selected").val(); - - if(studiensemester === undefined) - studiensemester = $("#filter_studiensemester option:selected").val(); - - $.ajax({ - dataType: 'json', - url: "./pruefungsanmeldung.json.php", - type: "POST", - data: { - method: "getPruefungenStudiengang", - studiengang_kz: studiengang_kz, - studiensemester: studiensemester - }, - error: loadError - }).success(function(data){ - if(data.error === 'false') - { - $("#pruefungenListe").empty(); - if(data.result.length > 0) - { - var liste = ""; - data.result.forEach(function(e){ - liste += ""; - }); - $("#pruefungenListe").append(liste); - } - else - { - $("#pruefungenListe").html("Keine Prüfungen vorhanden."); - } - } - else - { - messageBox("message", data.errormsg, "red", "highlight", 1000); - } - }); -} - -/** - * Zeigt das Formularfeld zur Eingabe eines Kommentars in der Anmeldungsverwaltung an. - * @param {String} vorname Vorname des Studenten - * @param {String} nachname Nachname des Studenten - * @param {int} pruefungsanmeldung_id ID der Anmeldung - * @param {String} kommentar Kommentar zur Anmeldung (wenn bereits vorhanden) - * @param {int} termin_id ID des Prüfungstermins - * @param {int} lehrveranstaltung_id ID der Lehrveranstaltung - * @returns {void} - */ -function showKommentar(vorname, nachname, pruefungsanmeldung_id, kommentar, termin_id, lehrveranstaltung_id) -{ - if(kommentar === "null") - kommentar = ""; - $("#kommentar").html("

Kommentar zu "+vorname+" "+nachname+"

"); - $("#kommentarSpeichernButton").html(""); -} - -/** - * Speichert ein Kommentar zu einer Anmeldung - * @param {int} pruefungsanmeldung_id ID der Anmeldung - * @param {int} termin_id ID des Termins - * @param {int} lehrveranstaltung_id ID der Lehrveranstaltung - * @returns {void} - */ -function saveKommentar(pruefungsanmeldung_id, termin_id, lehrveranstaltung_id) -{ - var kommentar = $("#kommentarText").val(); - $.ajax({ - dataType: 'json', - url: "./pruefungsanmeldung.json.php", - type: "POST", - data: { - method: "saveKommentar", - pruefungsanmeldung_id: pruefungsanmeldung_id, - kommentar: kommentar - }, - error: loadError - }).success(function(data){ - messageBox("message", "Kommentar erfolgreich gespeichert.", "green", "highlight", 1000); - }).complete(function(){ - showAnmeldungen(termin_id, lehrveranstaltung_id); - }); -} - -/** - * lädt alle Prüfungstypen per AJAX aus der Datenbank - * @param {boolean} abschluss - * @returns {void} - */ -function loadPruefungstypen(abschluss) -{ - $.ajax({ - dataType: 'json', - url: "./pruefungstermin.json.php", - type: "POST", - data: { - method: "loadPruefungstypen", - abschluss: abschluss - }, - error: loadError - }).success(function(data){ - var selectData = ""; - data.result.forEach(function(d){ - if(d.beschreibung === null) - d.beschreibung = ""; - selectData += ""; - }); - $('#pruefungsTyp').html(selectData); - }); -} - -/** - * Lädt alle Studiensemester per AJAX aus der Datenbank - * @returns {void} - */ -function loadStudiensemester() -{ - $.ajax({ - dataType: 'json', - url: "./pruefungstermin.json.php", - type: "POST", - data: { - method: "loadStudiensemester" - }, - error: loadError - }).success(function(data){ - var selectData = ""; - data.result.forEach(function(d){ - selectData += ""; - }); - $('#studiensemester').html(selectData); - }).complete(function(){ - loadPruefungsfenster(); - loadLehrveranstaltungen(); - }); -} - -/** - * Prüft eine Variable ob diese NULL ist - * @param {type} variable - * @returns {boolean} TRUE, wenn die Variable NULL ist, ansonsten FALSE - */ -function is_null(variable) -{ - if(variable === null) - { - return true; - } - return false; -} - -/** - * Prüft eine Variable ob diese undefined ist - * @param {type} variable - * @returns {boolean} TRUE, wenn die Variable undefined ist, ansonsten FALSE - */ -function is_undefined(variable) -{ - if(variable === undefined) - { - return true; - } - return false; -} - -/** - * Prüft einen String ob dieser die Länge 0 hat - * @param {string} string - * @returns {boolean} TRUE, wenn die Länge des Strings 0 ist, ansonsten FALSE - */ -function is_empty_String(string) -{ - if(string.length === 0) - { - return true; - } - return false; -} - -/** - * Speichert einen Prüfungstermin - * @returns {void} - */ -function savePruefungstermin() -{ - unmarkMissingFormEntry(); - var studiensemester_kurzbz = $("#studiensemester").val(); - var pruefungsfenster_id = $("#pruefungsfenster").val(); -// var pruefungstyp_kurzbz = $("#pruefungsTyp").val(); - var titel = $("#titel").val(); - var beschreibung = $("#beschreibung").val(); - var methode = $("#methode").val(); - var einzeln = $("#einzeln").prop("checked"); - var termine = []; - var lehrveranstaltungen = []; - var error = false; - var mitarbeiter_uid = $("#mitarbeiter_uid").val(); - var pruefungsintervall = $("#pruefungsintervall").val(); - $("#prfTermin tr").each(function(i,v){ - var termin = {}; - $(v).find("input").each(function(j, w){ - switch (j) { - case 0: - termin.datum = $(w).val(); - break; - case 1: - termin.beginn = $(w).val(); - break; - case 2: - termin.ende = $(w).val(); - break; - case 3: - termin.min = $(w).val(); - break; - case 4: - termin.max = $(w).val(); - break; - case 5: - termin.sammelklausur = $(w).prop("checked"); - break; - } - }); - if(!checkTermin(termin)) - { - error = true; - markMissingFormEntry($(v).attr("id")); - } - if(!checkMinMaxTeilnehmer(termin.min, termin.max)) - { - error = true; - markMissingFormEntry("termin"+(i+1)+"min"); - markMissingFormEntry("termin"+(i+1)+"max"); - } - if(einzeln) - { - if(!checkPruefungsintervall(pruefungsintervall, termin)) - { - error = true; - markMissingFormEntry("pruefungsintervall"); - markMissingFormEntry($(v).attr("id")); - } - } - else - { - pruefungsintervall = false; - } - termine.push(termin); - }); - - - $("#lvDropdowns select").each(function(i,v){ - if($(v).val() !== "null") - lehrveranstaltungen.push($(v).val()); - }); - - if(is_null(studiensemester_kurzbz) || is_undefined(studiensemester_kurzbz) || is_empty_String(studiensemester_kurzbz)) - { - error = true; - markMissingFormEntry("studiensemester"); - } - if(is_null(pruefungsfenster_id) || is_undefined(pruefungsfenster_id) || is_empty_String(pruefungsfenster_id) || (pruefungsfenster_id === "null")) - { - error = true; - markMissingFormEntry("pruefungsfenster"); - } -// if(is_null(pruefungstyp_kurzbz) || is_undefined(pruefungstyp_kurzbz) || is_empty_String(pruefungstyp_kurzbz) || (pruefungstyp_kurzbz === "undefiniert")) -// { -// error = true; -// markMissingFormEntry("pruefungsTyp"); -// } - if(is_null(titel) || is_undefined(titel) || is_empty_String(titel)) - { - error = true; - markMissingFormEntry("titel"); - } - if(is_null(beschreibung) || is_undefined(beschreibung) || is_empty_String(beschreibung)) - { - error = true; - markMissingFormEntry("beschreibung"); - } - if(is_null(methode) || is_undefined(methode) || is_empty_String(methode)) - { - error = true; - markMissingFormEntry("methode"); - } - - if(lehrveranstaltungen.length === 0) - { - error = true; - markMissingFormEntry("lvDropdowns"); - } - - if(is_null(termine) || is_undefined(termine) || is_empty_String(termine)) - { - error = true; - markMissingFormEntry("prfTermin"); - } - - if(error) - { - messageBox("message", "Formulardaten sind nicht korrekt.", "red", "highlight", 3000); - } - else - { - $.ajax({ - dataType: 'json', - url: "./pruefungstermin.json.php", - type: "POST", - data: { - method: "savePruefungstermin", - studiensemester_kurzbz: studiensemester_kurzbz, - pruefungsfenster_id: pruefungsfenster_id, -// pruefungstyp_kurzbz: pruefungstyp_kurzbz, - titel: titel, - beschreibung: beschreibung, - methode: methode, - einzeln: einzeln, - termine: termine, - lehrveranstaltungen: lehrveranstaltungen, - mitarbeiter_uid: mitarbeiter_uid, - pruefungsintervall: pruefungsintervall - }, - error: loadError - }).success(function(data){ - unmarkMissingFormEntry(); - if(data.error === "false") - { - messageBox("message", "Prüfung erfolgreich gespeichert.", "green", "highlight", 1000); - resetPruefungsverwaltung(); - } - else - { - messageBox("message", data.errormsg, "red", "highlight", 1000); - } - }); - } -} - -/** - * Fügt einem Element die Klasse "missingFormData" hinzu - * CSS-Klasse "missingFormData" wird benötigt - * @param {string} eleId ID des zu markierenden Formularfeldes - * @returns {void} - */ -function markMissingFormEntry(eleId) -{ - $("#"+eleId).addClass("missingFormData"); - $(".modalOverlay").each(function(i,v){ - $(v).removeClass("modalOverlay"); - }); -} - -/** - * Entfernt die Klasse "missingFormData" von einem Element. - * @param {string} eleId ID des Formularfeldes - * @returns {void} - */ -function unmarkMissingFormEntry() -{ - $(".missingFormData").each(function(i, v){ - $(v).removeClass("missingFormData"); - }); -} - -/** - * Lädt alle Lehrveranstaltungen eine Mitarbeiters - * @returns {void} - */ -function loadLehrveranstaltungen() -{ - var studiensemester_kurzbz = $("#studiensemester").val(); - var mitarbeiter_uid = $("#mitarbeiter_uid").val(); - $.ajax({ - dataType: 'json', - url: "./pruefungstermin.json.php", - type: "POST", - data: { - method: "getLehrveranstaltungenByMitarbeiter", - mitarbeiter_uid: mitarbeiter_uid, - studiensemester_kurzbz: studiensemester_kurzbz - }, - error: loadError - }).success(function(data){ - var selectData = ''; - data.result.forEach(function(d){ - selectData += ''; - }); - $("#lvDropdown1").html(selectData); - }).complete(function(){ - - }); -} - -/** - * Lädt die Details zu eine Prüfung - * @param {int} prfId ID der Prüfung - * @returns {void} - */ -function loadPruefungsDetails(prfId) -{ - unmarkMissingFormEntry(); - $("#modalOverlay").addClass("modalOverlay"); - resetLehrveranstaltungen(); - var row = $("#row1").clone(); - resetTermine(); - $("#prfTermine").append(row); - $.ajax({ - dataType: 'json', - url: "./pruefungstermin.json.php", - type: "POST", - data: { - method: "loadStudiensemester" - }, - error: loadError - }).success(function(data){ - var selectData = ""; - data.result.forEach(function(d){ - selectData += ""; - }); - $('#studiensemester').html(selectData); - }).complete(function(){ - var studiensemester_kurzbz = $("#studiensemester option:selected").val(); - $.ajax({ - dataType: 'json', - url: "./pruefungstermin.json.php", - type: "POST", - data: { - method: "getPruefungsfensterByStudiensemester", - studiensemester_kurzbz: studiensemester_kurzbz - }, - error: loadError - }).success(function(data){ - if(data.result.length === 0) - { - messageBox("message", "Keine Prüfungsfenster vorhanden", "red", "highlight", 1000); - $("#pruefungsfenster").html(""); - } - else - { - writePruefungsfenster(data); - setDatePicker(); - } - }).complete(function(){ - var studiensemester_kurzbz = $("#studiensemester").val(); - var mitarbeiter_uid = $("#mitarbeiter_uid").val(); - $.ajax({ - dataType: 'json', - url: "./pruefungstermin.json.php", - type: "POST", - data: { - method: "getLehrveranstaltungenByMitarbeiter", - mitarbeiter_uid: mitarbeiter_uid, - studiensemester_kurzbz: studiensemester_kurzbz - }, - error: loadError - }).success(function(data){ - var selectData = ''; - data.result.forEach(function(d){ - selectData += ''; - }); - $("#lvDropdown1").html(selectData); - }).complete(function(){ - $.ajax({ - dataType: 'json', - url: "./pruefungsanmeldung.json.php", - type: "POST", - data: { - method: "loadPruefung", - pruefung_id: prfId - }, - error: loadError - }).success(function(data){ - var copy = $("#lvDropdown1").clone(); - $("#lvDropdowns").empty(); - $("#lvDropdowns").html(copy); - $("#lvDropdowns").append("
"); - var result = data.result[0]; - $("#titel").val(result.pruefung.titel); - $("#beschreibung").val(result.pruefung.beschreibung); - $("#studiensemester").val(result.pruefung.studiensemester_kurzbz); - $("#pruefungsfenster").val(result.pruefung.pruefungsfenster_id); -// $("#pruefungsTyp").val(result.pruefung.pruefungstyp_kurzbz); - $("#methode").val(result.pruefung.methode); - var i = 0; - $("#termin1").closest("tr").remove(); - terminHinzufuegen("span"); - data.result.forEach(function(d){ - i++; - var lv = ""; - if(d.lehrveranstaltung !== undefined) - { - lv = ""+d.lehrveranstaltung.studiengang.kurzbzlang+" | "+d.lehrveranstaltung.bezeichnung+" ("+d.lehrveranstaltung.lehrform_kurzbz+") löschen
"; - } - else - { - lv = "Keine Lehrveranstaltungen vorhanden.
"; - } - $("#lvDropdowns").children().first().before(lv); - var j = 0; - d.pruefung.termine.forEach(function(t){ - j++; - if(i===1) - { - var date = convertDateTime(t.von, "date"); - var von = convertDateTime(t.von, "time"); - var bis = convertDateTime(t.bis, "time"); - var min = (t.min === null) ? "" : t.min; - var max = (t.max === null) ? "" : t.max; - $("#termin"+j+"Id").text(t.pruefungstermin_id); - $("#termin"+j).text(date); - $("#termin"+j+"Beginn").text(von); - $("#termin"+j+"Ende").text(bis); - $("#termin"+j+"min").text(min); - $("#termin"+j+"max").text(max); - if(t.sammelklausur) - { - $("#termin"+j+"sammelklausur").text("true"); - } - else - { - $("#termin"+j+"sammelklausur").text("false"); - } - $("#termin"+j+"Id").closest("tr").append("löschen"); - terminHinzufuegen("span"); - } - }); - }); - var ele = document.getElementById("lvDropdowns"); - $("#prfTermin tr").last().remove(); - if(result.pruefung.einzeln) - { - $("#einzeln").prop("checked", "checked"); - $("#pruefungsintervall").parent().parent().css("visibility", "visible"); - $("#pruefungsintervall").val(result.pruefung.pruefungsintervall); - } - else - { - $("#einzeln").removeAttr("checked"); - } - }).complete(function(){ - $("#buttonSave").attr("onclick", "updatePruefung(\""+prfId+"\");"); - if($("#buttonStorno").length === 0) - { - $("#buttonSave").after(""); - } - else - { - $("#buttonStorno").attr("onclick", "stornoPruefung(\""+prfId+"\");"); - } - $("#modalOverlay").removeClass("modalOverlay"); - }); - }); - }); - }); -} - -/** - * Setzt den Bereich Lehrveranstaltungen in der Anmeldungsverwaltung auf den Ausgangszustand - * @returns {void} - */ -function resetLehrveranstaltungen() -{ - $("#lvDropdown1").attr("onchange", "lehrveranstaltungDropdownhinzufuegen(this, false);") - $("#lvDropdowns").children().each(function(i,v){ - $("#lvDropdown"+(i+2)).next().remove(); - $("#lvDropdown"+(i+2)).remove(); - }); - $("#lvDropdown1").prevAll().each(function(i,v){ - $(v).remove(); - }); -} - -/** - * Setzt den Bereich Termine in der Ammeldungsverwaltung auf den Ausgangszustand - * @returns {void} - */ -function resetTermine() -{ - $("#prfTermin tr").each(function(i,v){ - $(v).remove(); - }); -} - -/** - * Aktualisiert die Daten einer Prüfung in der Datenbank - * @param {int} prfId ID der Prüfung - * @returns {void} - */ -function updatePruefung(prfId) -{ - $("#modalOverlay").addClass("modalOverlay"); - unmarkMissingFormEntry(); - var studiensemester_kurzbz = $("#studiensemester").val(); - var pruefungsfenster_id = $("#pruefungsfenster").val(); -// var pruefungstyp_kurzbz = $("#pruefungsTyp").val(); - var titel = $("#titel").val(); - var beschreibung = $("#beschreibung").val(); - var methode = $("#methode").val(); - var einzeln = $("#einzeln").prop("checked"); - var termine = []; - var termineNeu = []; - var lehrveranstaltungen = []; - var mitarbeiter_uid = $("#mitarbeiter_uid").val(); - var pruefungsintervall = $("#pruefungsintervall").val(); - var error = false; - $('#prfTermin tr').has("span").each(function(i,v){ - var termin = {}; - $(v).find("span").each(function(j, w){ - switch (j) { - case 0: - termin.pruefungstermin_id = $(w).text(); - break; - case 1: - termin.datum = $(w).text(); - break; - case 2: - termin.beginn = $(w).text(); - break; - case 3: - termin.ende = $(w).text(); - break; - case 4: - termin.min = $(w).text(); - break; - case 5: - termin.max = $(w).text(); - break; - case 6: - termin.sammelklausur = $(w).prop("checked"); - break; - } - }); - if(!checkTermin(termin)) - { - error = true; - markMissingFormEntry($(v).attr("id")); - } - if(einzeln) - { - if(!checkPruefungsintervall(pruefungsintervall, termin)) - { - error = true; - markMissingFormEntry("pruefungsintervall"); - markMissingFormEntry($(v).attr("id")); - } - } - termine.push(termin); - }); - - $('#prfTermin tr').has("input").each(function(i,v){ - var termin = {}; - $(v).find("input").each(function(j, w){ - switch (j) { - case 0: - termin.datum = $(w).val(); - break; - case 1: - termin.beginn = $(w).val(); - break; - case 2: - termin.ende = $(w).val(); - break; - case 3: - termin.min = $(w).val(); - break; - case 4: - termin.max = $(w).val(); - break; - case 5: - termin.sammelklausur = $(w).prop("checked"); - break; - } - }); - if(!checkTermin(termin)) - { - error = true; - markMissingFormEntry($(v).attr("id")); - } - if(einzeln) - { - if(!checkPruefungsintervall(pruefungsintervall, termin)) - { - error = true; - markMissingFormEntry("pruefungsintervall"); - markMissingFormEntry($(v).attr("id")); - } - } - termineNeu.push(termin); - }); - - $("#lvDropdowns select").each(function(i,v){ - if($(v).val() !== "null") - lehrveranstaltungen.push($(v).val()); - }); - - if(is_null(studiensemester_kurzbz) || is_undefined(studiensemester_kurzbz) || is_empty_String(studiensemester_kurzbz)) - { - error = true; - markMissingFormEntry("studiensemester"); - } - if(is_null(pruefungsfenster_id) || is_undefined(pruefungsfenster_id) || is_empty_String(pruefungsfenster_id) || (pruefungsfenster_id === "null")) - { - error = true; - markMissingFormEntry("pruefungsfenster"); - } -// if(is_null(pruefungstyp_kurzbz) || is_undefined(pruefungstyp_kurzbz) || is_empty_String(pruefungstyp_kurzbz) || (pruefungstyp_kurzbz === "undefiniert")) -// { -// error = true; -// markMissingFormEntry("pruefungsTyp"); -// } - if(is_null(titel) || is_undefined(titel) || is_empty_String(titel)) - { - error = true; - markMissingFormEntry("titel"); - } - if(is_null(beschreibung) || is_undefined(beschreibung) || is_empty_String(beschreibung)) - { - error = true; - markMissingFormEntry("beschreibung"); - } - if(is_null(methode) || is_undefined(methode) || is_empty_String(methode)) - { - error = true; - markMissingFormEntry("methode"); - } - if(lehrveranstaltungen[0] === "null") - { - error = true; - markMissingFormEntry("lvDropdowns"); - } - - if(error) - { - messageBox("message", "Formulardaten sind nicht korrekt.", "red", "highlight", 3000); - } - else - { - $.ajax({ - dataType: 'json', - url: "./pruefungstermin.json.php", - type: "POST", - data: { - method: "updatePruefungstermin", - pruefung_id: prfId, - studiensemester_kurzbz: studiensemester_kurzbz, - pruefungsfenster_id: pruefungsfenster_id, -// pruefungstyp_kurzbz: pruefungstyp_kurzbz, - titel: titel, - beschreibung: beschreibung, - methode: methode, - einzeln: einzeln, - termine: termine, - termineNeu: termineNeu, - lehrveranstaltungen: lehrveranstaltungen, - mitarbeiter_uid: mitarbeiter_uid, - pruefungsintervall: pruefungsintervall - }, - error: loadError - }).success(function(data){ - unmarkMissingFormEntry(); - if(data.error === "false") - { - messageBox("message", "Prüfung erfolgreich gespeichert.", "green", "highlight", 1000); - resetPruefungsverwaltung(); - } - else - { - messageBox("message", data.errormsg, "red", "highlight", 1000); - } - }).complete(function(){ - loadAllPruefungen(); - $("#modalOverlay").removeClass("modalOverlay"); - }); - } -} - -/** - * Löscht eine Lehrveranstaltung von einer Prüfung - * @param {int} lvId ID der Lehrveranstaltung - * @param {int} pruefung_id ID der Prüfung - * @returns {void} - */ -function deleteLehrveranstaltungFromPruefung(lvId, pruefung_id) -{ - $.ajax({ - dataType: 'json', - url: "./pruefungstermin.json.php", - type: "POST", - data: { - method: "deleteLehrveranstaltungFromPruefung", - pruefung_id: pruefung_id, - lehrveranstaltung_id: lvId - }, - error: loadError - }).success(function(data){ - if(data.error === "false") - { - messageBox("message", "Lehrveranstaltung erfolgreich entfernt", "green", "highlight", 1000); - } - else - { - messageBox("message", data.errormsg, "red", "highlight", 1000); - } - }).complete(function(){ - loadPruefungsDetails(pruefung_id); - }); -} - -/** - * Storniert eine Prüfung - * @param {int} pruefung_id ID der Prüfung - * @returns {void} - */ -function stornoPruefung(pruefung_id) -{ - $("#modalOverlay").addClass("modalOverlay"); - $.ajax({ - dataType: 'json', - url: "./pruefungstermin.json.php", - type: "POST", - data: { - method: "stornoPruefung", - pruefung_id: pruefung_id - }, - error: loadError - }).success(function(data){ - if(data.error === "false") - { - messageBox("message", "Prüfung storniert", "green", "highlight", 1000); - } - else - { - messageBox("message", data.errormsg, "red", "highlight", 1000); - } - }).complete(function(){ - loadAllPruefungen(); - resetPruefungsverwaltung(); - }); -} - -/** - * Löscht einen Termin - * @param {int} pruefung_id ID der Prüfung - * @param {int} pruefungstermin_id ID des Prüfungstermines - * @returns {undefined} - */ -function terminLoeschen(pruefung_id, pruefungstermin_id) -{ - $.ajax({ - dataType: 'json', - url: "./pruefungstermin.json.php", - type: "POST", - data: { - method: "deleteTermin", - pruefung_id: pruefung_id, - pruefungstermin_id: pruefungstermin_id - }, - error: loadError - }).success(function(data){ - if(data.error === "false") - { - messageBox("message", "Termin gelöscht", "green", "highlight", 1000); - } - else - { - messageBox("message", data.errormsg, "red", "highlight", 1000); - } - }).complete(function(){ - loadPruefungsDetails(pruefung_id); - loadAllPruefungen(); - }); -} - -/** - * Lädt alle Prüfungen - * @returns {void} - */ -function loadAllPruefungen() -{ - var uid = $("#mitarbeiter_uid").val(); - $.ajax({ - dataType: 'json', - url: "./pruefungstermin.json.php", - type: "POST", - data: { - method: "getAllPruefungen", - uid: uid - }, - error: loadError - }).success(function(data){ - if(data.error != 'true') - { - $("#prfTable tbody").first().html(""); - var tableRow = ""; - data.result.forEach(function(e){ - if(e.storniert === false) - { - tableRow = ""+e.titel+""; - tableRow += ""+e.studiensemester_kurzbz+""; - tableRow += ""; - e.lehrveranstaltungen.forEach(function(f){ - tableRow += f.bezeichnung+"
"; - }); - tableRow+=""; - tableRow+=""; - e.termine.forEach(function(f){ - tableRow += convertDateTime(f.von, "date")+" von "+convertDateTime(f.von, "time")+" bis "+convertDateTime(f.bis, "time")+"
"; - }); - tableRow+=""; - tableRow += ""+e.methode+""; -// tableRow += ""+e.pruefungstyp_kurzbz+""; - tableRow += ""+e.einzeln+""; - tableRow += ""+e.mitarbeiter_uid+""; - tableRow += ""+e.storniert+""; - tableRow += ""; - $("#prfTable tbody").first().append(tableRow); - } - }); - } - else - { - messageBox("message", data.errormsg, "red", "highlight", 1000); - } - }).complete(function(event, xhr, settings){ - if($("#prfTable")[0].hasInitialized !== true) - { - $("#prfTable").tablesorter({ - widgets: ["zebra"], - sortList: [[1,0]] - }); - } - else - { - $("#prfTable").trigger("updateAll"); - var sorting = [[1,0],[0,0]]; - $("#prfTable").trigger("sorton",[sorting]); - } - }); -} - -/** - * Prüft die Daten eines Termins auf deren Richtigkeit - * Prüft ob die Beginnzeit vor der Endzeit liegt und ob beide Daten mindestens 14 Tage in der Zukunft liegen. - * @param {Object} termin Object mit den Attributen datum (DD.MM.YYYY), beginn (HH:mm) und ende (HH:mm) - * @returns {Boolean} TRUE, wenn die Daten korrekt sind, ansonsten FALSE - */ -function checkTermin(termin) -{ - var heute = new Date(); - var aktTime = new Date(heute.getTime() + (14*24*60*60*1000)); - var vonTime = stringToDate(termin.datum, termin.beginn); - var bisTime = stringToDate(termin.datum, termin.ende); - - if(!(aktTime < vonTime)) - { - return false; - } - else if(!(vonTime < bisTime)) - { - return false; - } - return true; -} - -function checkPruefungsintervall(intervall, termin) -{ - var beginn = stringToDate(termin.datum, termin.beginn); - var ende = stringToDate(termin.datum, termin.ende); - var maxTeilnehmer = ((ende - beginn) / 1000 / 60 / intervall); - if(maxTeilnehmer < termin.max) - { - return false; - } - return true; -} - -/** - * Formatiert eine Datum von String in eine Date-Objekt - * @param {string} datum Ein Datum als String im Format "DD.MM.YYYY" - * @param {string} time eine Uhrzeit als String im Format " HH:mm:ss" - * @returns {Date} Dateobjekt - */ -function stringToDate(datum, time) -{ - datum = datum.split("."); - time = time.split(":"); - time = new Date(datum[2], (datum[1]-1), datum[0], time[0], time[1]); - return time; -} - -/** - * Setzt die Oberfläche der Prüfungsverwaltung auf den Ausgangszustand zurück - * @returns {void} - */ -function resetPruefungsverwaltung() -{ - loadAllPruefungen(); - $("#titel").val(""); - $("#beschreibung").val(""); -// loadPruefungstypen("false"); - loadStudiensemester(); - $("#methode").val(""); - resetLehrveranstaltungen(); - resetTermine(); - $("#pruefungsintervall").val("15"); - $("#einzeln").removeAttr("checked"); - $("#pruefungsintervall").closest("tr").css("visibility", "hidden"); - $("#modalOverlay").removeClass("modalOverlay"); - $("#buttonSave").attr("onclick", "savePruefungstermin();"); -} - -/** - * Prüft ob eine Zahl "min" kleiner als eine Zahl "max" ist. - * @param {String} min - * @param {String} max - * @returns {Boolean} TRUE, wenn min kleiner als max ist und beide einen positiven Wert haben - */ -function checkMinMaxTeilnehmer(min, max) -{ - if(((min !== null) && (max !== null)) && ((min !== "") && (max !== ""))) - { - min = parseInt(min); - max = parseInt(max); - if(max < min) - { - return false; - } - if(max < 0) - { - return false; - } - if(min < 0) - { - return false; - } - if(isNaN(min)) - { - return false; - } - if(isNaN(max)) - { - return false; - } - } - return true; -} - -function changeStateOfRaumDropdown() -{ - if($("#raum input[type=checkbox]").prop("checked") === true) - { - $("#raeumeDropdown").css("visibility", "hidden"); - $("#raeumeDropdown").prev().css("visibility", "hidden"); - } - else - { - $("#raeumeDropdown").css("visibility", "visible"); - $("#raeumeDropdown").prev().css("visibility", "visible"); - } -} - -function saveRaum(terminId, lehrveranstaltung_id) -{ - var ort_kurzbz; - if($("#raum input[type=checkbox]").prop("checked") === true) - { - ort_kurzbz = "buero"; - } - else - { - ort_kurzbz = $("#raeumeDropdown").val(); - } - $.ajax({ - dataType: 'json', - url: "./pruefungsanmeldung.json.php", - type: "POST", - data: { - method: "saveRaum", - ort_kurzbz: ort_kurzbz, - terminId: terminId - }, - error: loadError - }).success(function(data){ - $("#raumDialog").dialog("close"); - showAnmeldungen(terminId, lehrveranstaltung_id); - }); -} - -function getRaeume(terminId) -{ - $.ajax({ - dataType: 'json', - url: "./pruefungsanmeldung.json.php", - type: "POST", - data: { - method: "getAllFreieRaeume", - terminId: terminId - }, - error: loadError - }).success(function(data){ - var liste = ""; - data.result.forEach(function(d){ - liste += "" - }); - $("#raeumeDropdown").html(liste); - }); -} \ No newline at end of file diff --git a/cis/private/lehre/pruefung/pruefung.js.php b/cis/private/lehre/pruefung/pruefung.js.php index 99a53c107..a2d3458cb 100644 --- a/cis/private/lehre/pruefung/pruefung.js.php +++ b/cis/private/lehre/pruefung/pruefung.js.php @@ -74,12 +74,13 @@ else * Liest GET Variablen einer URL aus * @returns {String|value|Element.value|document@arr;all.value} */ -function getUrlVars() { - var vars = {}; - var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { - vars[key] = value; - }); - return vars; +function getUrlVars() +{ + var vars = {}; + var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { + vars[key] = value; + }); + return vars; } /** @@ -142,7 +143,7 @@ function lehrveranstaltungDropdownhinzufuegen(element, isChanged) newSelect.attr("id", "lvDropdown"+id); element.setAttribute("onchange", "lehrveranstaltungDropdownhinzufuegen(this, true);"); newSelect.appendTo("#lvDropdowns"); - $("#lvDropdowns").append("
"); + $("#lvDropdowns").append("
"); } } @@ -173,20 +174,19 @@ function loadPruefungsfenster() method: "getPruefungsfensterByStudiensemester", studiensemester_kurzbz: studiensemester_kurzbz }, - error: loadError - }).success(function(data){ - if(data.result.length === 0) - { - messageBox("message", "t('pruefung/keinFensterVorhanden'); ?>", "red", "highlight", 1000); - $("#pruefungsfenster").html(""); + error: loadError, + success: function(data){ + if(data.result.length === 0) + { + messageBox("message", "t('pruefung/keinFensterVorhanden'); ?>", "red", "highlight", 1000); + $("#pruefungsfenster").html(""); + } + else + { + writePruefungsfenster(data); + setDatePicker(); + } } - else - { - writePruefungsfenster(data); - setDatePicker(); - } - }).complete(function(){ - }); } @@ -242,25 +242,25 @@ function loadPruefungen() method: "getPruefungByLv", studiensemester: $("#filter_studiensemester").val() }, - error: loadError - }).success(function(data){ - $("#pruefungen").empty(); - if(data.error === 'false') - { - data.result.pruefungen.forEach(function(e){ - if(e.pruefung.storniert === false) - { - var table = writePruefungsTable(e, data, true); - $("#pruefungen").append(table); - } - }); + error: loadError, + success: function(data){ + $("#pruefungen").empty(); + if(data.error === 'false') + { + data.result.pruefungen.forEach(function(e){ + if(e.pruefung.storniert === false) + { + var table = writePruefungsTable(e, data, true); + $("#pruefungen").append(table); + } + }); + } + else + { + $("#pruefungen").append("t('pruefung/keineDatenVorhanden'); ?>"); + } + setTablesorter("table1"); } - else - { - $("#pruefungen").append("t('pruefung/keineDatenVorhanden'); ?>"); - } - }).complete(function(event, xhr, settings){ - setTablesorter("table1"); }); } @@ -278,24 +278,25 @@ function loadPruefungenOfStudiengang() method: "getPruefungByLvFromStudiengang", studiensemester: $("#filter_studiensemester").val() }, - error: loadError - }).success(function(data){ - if(data.error === 'false') - { - data.result.pruefungen.forEach(function(e){ - if(e.pruefung.storniert === false) - { - var table = writePruefungsTable(e, data, true); - $("#pruefungenStudiengang").append(table); - } - }); + error: loadError, + success: function(data){ + if(data.error === 'false') + { + data.result.pruefungen.forEach(function(e){ + if(e.pruefung.storniert === false) + { + var table = writePruefungsTable(e, data, true); + $("#pruefungenStudiengang").append(table); + } + }); + } + else + { + $("#pruefungenStudiengang").append("t('pruefung/keineDatenVorhanden'); ?>"); + } + + setTablesorter("table2"); } - else - { - $("#pruefungenStudiengang").append("t('pruefung/keineDatenVorhanden'); ?>"); - } - }).complete(function(event, xhr, settings){ - setTablesorter("table2"); }); } @@ -312,17 +313,17 @@ function loadPruefungenGesamt() data: { method: "getAllPruefungen", }, - error: loadError - }).success(function(data){ - data.result.pruefungen.forEach(function(e){ - if(e.pruefung.storniert === false) - { - var table = writePruefungsTable(e, data, false); - $("#pruefungenGesamt").append(table); - } - }); - }).complete(function(event, xhr, settings){ - setTablesorter("table3"); + error: loadError, + success: function(data){ + data.result.pruefungen.forEach(function(e){ + if(e.pruefung.storniert === false) + { + var table = writePruefungsTable(e, data, false); + $("#pruefungenGesamt").append(table); + } + }); + setTablesorter("table3"); + } }); } @@ -362,22 +363,20 @@ function writePruefungsTable(e, data, anmeldung) if(fristDate < new Date()) { if(!storno) - button = "

t('pruefung/anmeldefristAbgelaufen'); ?>
"; + button = "

t('pruefung/anmeldefristAbgelaufen'); ?>
"; else - button = "

t('pruefung/stornoNichtMehrMoeglich'); ?>
"; + button = "

t('pruefung/stornoNichtMehrMoeglich'); ?>
"; } else if(anmeldung || e.lehrveranstaltung[0].angemeldet) { if(storno) { - //button = "

Stornieren (bis "+frist+"):
"; button = "

"+frist+"'>

"; } else { - //button = "

Anmelden (bis "+frist+"):

"; - button = "

"+frist+"';>

"; + button = "

"+frist+"'>

"; } } else @@ -389,7 +388,7 @@ function writePruefungsTable(e, data, anmeldung) if(d.max === null) { - teilnehmer += "t('pruefung/unbegrenzt'); ?>
"; + teilnehmer += "t('pruefung/unbegrenzt'); ?>
"; } else { @@ -419,40 +418,41 @@ function showPruefungsDetails(prfId, lvId) method: "loadPruefung", pruefung_id: prfId }, - error: loadError - }).success(function(data){ - data.result.forEach(function(e){ - if(e.lehrveranstaltung.lehrveranstaltung_id === lvId) - { - var p = e.pruefung; - var l = e.lehrveranstaltung -// $("#prfTyp").html(p.pruefungstyp_kurzbz); - $("#prfMethode").html(p.methode); - $("#prfBeschreibung").html(p.beschreibung); - if(p.einzeln === true) + error: loadError, + success: function(data){ + data.result.forEach(function(e){ + if(e.lehrveranstaltung.lehrveranstaltung_id === lvId) { - $("#prfEinzeln").html("Einzelprüfung!"); - $("#prfIntervall").html(p.pruefungsintervall+" min"); - $("#prfIntervall").prev().css("visibility", "visible"); + var p = e.pruefung; + var l = e.lehrveranstaltung + + $("#prfMethode").html(p.methode); + $("#prfBeschreibung").html(p.beschreibung); + if(p.einzeln === true) + { + $("#prfEinzeln").html("Einzelprüfung!"); + $("#prfIntervall").html(p.pruefungsintervall+" min"); + $("#prfIntervall").prev().css("visibility", "visible"); + } + else + { + $("#prfEinzeln").html(""); + $("#prfIntervall").html(""); + $("#prfIntervall").prev().css("visibility", "hidden"); + } + $("#lvBez").html(l.bezeichnung); + if(l.ects !== null) + { + $("#lvEcts").html(l.ects); + } + else + { + $("#lvEcts").html("0"); + } } - else - { - $("#prfEinzeln").html(""); - $("#prfIntervall").html(""); - $("#prfIntervall").prev().css("visibility", "hidden"); - } - $("#lvBez").html(l.bezeichnung); - if(l.ects !== null) - { - $("#lvEcts").html(l.ects); - } - else - { - $("#lvEcts").html("0"); - } - } - }); - $("#details").dialog("open"); + }); + $("#details").dialog("open"); + } }); } else @@ -486,45 +486,47 @@ function openDialog(lehrveranstaltung_id, termin_id, lvBezeichnung, terminVon, t method: "getLvKompatibel", lehrveranstaltung_id: lehrveranstaltung_id }, - error: loadError - }).success(function(data){ - var html = ""; - html += '"; - data.result.forEach(function(v, i){ - html += '"; - }); - $("#studienverpflichtung").html(html); + data.result.forEach(function(v, i){ + html += '"; + }); + $("#studienverpflichtung").html(html); + } }); - $.ajax({ - dataType: 'json', - url: "./pruefungsanmeldung.json.php", - type: "POST", - data: { - method: "getPrestudenten" - }, - error: loadError - }).success(function(data) - { - if(data.error !== false) - { - //show if more than 1 active prestudent exists - if(data.result.length > 1) - { - var html = ""; + $.ajax({ + dataType: 'json', + url: "./pruefungsanmeldung.json.php", + type: "POST", + data: { + method: "getPrestudenten" + }, + error: loadError, + success: function(data) + { + if(data.error !== false) + { + //show if more than 1 active prestudent exists + if(data.result.length > 1) + { + var html = ""; - $("#studiengang").html("t('pruefung/AnrechnungInStudiengang'); ?>:"+html+""); - } - } - }); + $("#studiengang").html("t('pruefung/AnrechnungInStudiengang'); ?>:"+html+""); + } + } + } + }); var start = terminVon; var ende = terminBis; @@ -564,12 +566,12 @@ function saveAnmeldung(lehrveranstaltung_id, termin_id) bemerkungen = "t('pruefung/bemerkungVonLektorHinzugefuegt'); ?>"; var studienverpflichtung_id = null; - if($("#studienverpflichtung").length) - studienverpflichtung_id = $("#studienverpflichtung option:selected").val(); + if($("#studienverpflichtung").length) + studienverpflichtung_id = $("#studienverpflichtung option:selected").val(); - var studiengang_kz = null; - if($('#prestudent_studiengang').length) - studiengang_kz = $('#prestudent_studiengang option:selected').val(); + var studiengang_kz = null; + if($('#prestudent_studiengang').length) + studiengang_kz = $('#prestudent_studiengang option:selected').val(); $.ajax({ dataType: 'json', @@ -582,31 +584,32 @@ function saveAnmeldung(lehrveranstaltung_id, termin_id) bemerkung: bemerkungen, uid: uid, studienverpflichtung_id: studienverpflichtung_id, - studiengang_kz: studiengang_kz + studiengang_kz: studiengang_kz }, - error: loadError - }).success(function(data){ - if(data.error === 'false') - { - messageBox("message", data.result, "green", "highlight", 1000); - } - else - { - messageBox("message", data.errormsg, "red", "highlight", 1000); - } - resetForm(); - }).complete(function(event, xhr, settings){ - $("#saveDialog").dialog("close"); + error: loadError, + success: function(data){ + if(data.error === 'false') + { + messageBox("message", data.result, "green", "highlight", 1000); + } + else + { + messageBox("message", data.errormsg, "red", "highlight", 1000); + } + resetForm(); - if(uid === undefined) - { - //Wenn Anmeldung durch Student - refresh(); - } - else - { - //Wenn Anmeldung durch Lektor - showAnmeldungen(termin_id, lehrveranstaltung_id); + $("#saveDialog").dialog("close"); + + if(uid === undefined) + { + //Wenn Anmeldung durch Student + refresh(); + } + else + { + //Wenn Anmeldung durch Lektor + showAnmeldungen(termin_id, lehrveranstaltung_id); + } } }); } @@ -628,18 +631,19 @@ function stornoAnmeldung(pruefungsanmeldung_id) method: "stornoAnmeldung", pruefungsanmeldung_id: pruefungsanmeldung_id }, - error: loadError - }).success(function(data){ - if(data.error === 'false') - { - messageBox("message", data.result, "green", "highlight", 1000); + error: loadError, + success: function(data){ + if(data.error === 'false') + { + messageBox("message", data.result, "green", "highlight", 1000); + } + else + { + messageBox("message", data.errormsg, "red", "highlight", 1000); + } + + refresh(); } - else - { - messageBox("message", data.errormsg, "red", "highlight", 1000); - } - }).complete(function(event, xhr, settings){ - refresh(); }); } } @@ -673,22 +677,22 @@ function resetForm() */ function setTablesorter(tableId) { - if($("#"+tableId).length != 0) - { - if($("#"+tableId)[0].hasInitialized !== true) - { - $("#"+tableId).tablesorter({ - widgets: ["zebra"], - sortList: [[1,0]] - }); - } - else - { - $("#"+tableId).trigger("updateAll"); - var sorting = [[1,0],[0,0]]; - $("#"+tableId).trigger("sorton",[sorting]); - } - } + if($("#"+tableId).length != 0) + { + if($("#"+tableId)[0].hasInitialized !== true) + { + $("#"+tableId).tablesorter({ + widgets: ["zebra"], + sortList: [[1,0]] + }); + } + else + { + $("#"+tableId).trigger("updateAll"); + var sorting = [[1,0],[0,0]]; + $("#"+tableId).trigger("sorton",[sorting]); + } + } } /** @@ -764,12 +768,12 @@ function showAnmeldungen(pruefungstermin_id, lehrveranstaltung_id) pruefungstermin_id: pruefungstermin_id, lehrveranstaltung_id: lehrveranstaltung_id }, - error: loadError - }).success(function(data){ - writeAnmeldungen(data); - }).complete(function(event, xhr, settings){ - $("#sortable").sortable(); - $("#sortable").disableSelection(); + error: loadError, + success: function(data){ + writeAnmeldungen(data); + $("#sortable").sortable(); + $("#sortable").disableSelection(); + } }); } @@ -831,12 +835,6 @@ function writeAnmeldungen(data) $("#raumLink").html("t('pruefung/pruefungsort'); ?>"); } - $(document).tooltip({ - position: { - at: "right center", - my: "left+15 center" - } - }); } else { @@ -860,7 +858,7 @@ function writeAnmeldungen(data) function openRaumDialog(terminId, lehrveranstaltung_id) { getRaeume(terminId); - $("#raum").html('

t('pruefung/pruefungsraum'); ?>

t('pruefung/imBuero'); ?>
t('pruefung/raum'); ?>: '); + $("#raum").html('

t('pruefung/pruefungsraum'); ?>

t('pruefung/imBuero'); ?>
t('pruefung/raum'); ?>: '); $("#raumSpeichernButton").html("' onclick='saveRaum(\""+terminId+"\", \""+lehrveranstaltung_id+"\");'/>"); $("#raumDialog").dialog("open"); } @@ -890,18 +888,19 @@ function saveReihung(terminId, lehrveranstaltung_id) method: "saveReihung", reihung: reihung }, - error: loadError - }).success(function(data){ - if(data.error === 'false' && data.result === true) - { - messageBox("message", "t('pruefung/reihunghErfolgreichGeaendert'); ?>", "green", "highlight", 1000); + error: loadError, + success: function(data){ + if(data.error === 'false' && data.result === true) + { + messageBox("message", "t('pruefung/reihunghErfolgreichGeaendert'); ?>", "green", "highlight", 1000); + } + else + { + messageBox("message", data.errormsg, "red", "highlight", 1000); + } + + showAnmeldungen(terminId, lehrveranstaltung_id); } - else - { - messageBox("message", data.errormsg, "red", "highlight", 1000); - } - }).complete(function(){ - showAnmeldungen(terminId, lehrveranstaltung_id); }); } @@ -922,18 +921,19 @@ function anmeldungBestaetigen(pruefungsanmeldung_id, termin_id, lehrveranstaltun method: "anmeldungBestaetigen", pruefungsanmeldung_id: pruefungsanmeldung_id }, - error: loadError - }).success(function(data){ - if(data.error === 'false' && data.result === true) - { - if(termin_id !== 'undefined' && lehrveranstaltung_id !== 'undefined') + error: loadError, + success: function(data){ + if(data.error === 'false' && data.result === true) { - showAnmeldungen(termin_id, lehrveranstaltung_id); + if(termin_id !== 'undefined' && lehrveranstaltung_id !== 'undefined') + { + showAnmeldungen(termin_id, lehrveranstaltung_id); + } + } + else + { + messageBox("message", data.errormsg, "red", "highlight", 1000); } - } - else - { - messageBox("message", data.errormsg, "red", "highlight", 1000); } }); } @@ -955,18 +955,19 @@ function alleBestaetigen(termin_id, lehrveranstaltung_id) termin_id: termin_id, lehrveranstaltung_id: lehrveranstaltung_id }, - error: loadError - }).success(function(data){ - if(data.error === 'false' && data.result === true) - { - if(termin_id !== 'undefined' && lehrveranstaltung_id !== 'undefined') + error: loadError, + success: function(data){ + if(data.error === 'false' && data.result === true) { - showAnmeldungen(termin_id, lehrveranstaltung_id); + if(termin_id !== 'undefined' && lehrveranstaltung_id !== 'undefined') + { + showAnmeldungen(termin_id, lehrveranstaltung_id); + } + } + else + { + messageBox("message", data.errormsg, "red", "highlight", 1000); } - } - else - { - messageBox("message", data.errormsg, "red", "highlight", 1000); } }); } @@ -1002,22 +1003,23 @@ function loadStudiengaenge() data: { method: "getStudiengaenge" }, - error: loadError - }).success(function(data){ - $("#stgListe").empty(); - if(data.error === 'false') - { - var liste = ""; - $("#stgListe").append(liste); - } - else - { - messageBox("message", data.errormsg, "red", "highlight", 1000); + error: loadError, + success: function(data){ + $("#stgListe").empty(); + if(data.error === 'false') + { + var liste = ""; + $("#stgListe").append(liste); + } + else + { + messageBox("message", data.errormsg, "red", "highlight", 1000); + } } }); } @@ -1044,39 +1046,40 @@ function loadPruefungStudiengang(studiengang_kz, studiensemester) studiengang_kz: studiengang_kz, studiensemester: studiensemester }, - error: loadError - }).success(function(data){ - if(data.error === 'false') - { - $("#pruefungenListe").empty(); - if(data.result.length > 0) + error: loadError, + success: function(data){ + if(data.error === 'false') { - var liste = ""; - data.result.forEach(function(e){ - liste += ""; - }); - $("#pruefungenListe").append(liste); + $("#pruefungenListe").empty(); + if(data.result.length > 0) + { + var liste = ""; + data.result.forEach(function(e){ + liste += ""; + }); + $("#pruefungenListe").append(liste); + } + else + { + $("#pruefungenListe").html("t('pruefung/keinePruefungenVorhanden'); ?>"); + } } else { - $("#pruefungenListe").html("t('pruefung/keinePruefungenVorhanden'); ?>"); + messageBox("message", data.errormsg, "red", "highlight", 1000); } } - else - { - messageBox("message", data.errormsg, "red", "highlight", 1000); - } }); } @@ -1117,11 +1120,11 @@ function saveKommentar(pruefungsanmeldung_id, termin_id, lehrveranstaltung_id) pruefungsanmeldung_id: pruefungsanmeldung_id, kommentar: kommentar }, - error: loadError - }).success(function(data){ - messageBox("message", "t('pruefung/kommentarErfolgreichGespeichert'); ?>", "green", "highlight", 1000); - }).complete(function(){ - showAnmeldungen(termin_id, lehrveranstaltung_id); + error: loadError, + success: function(data){ + messageBox("message", "t('pruefung/kommentarErfolgreichGespeichert'); ?>", "green", "highlight", 1000); + showAnmeldungen(termin_id, lehrveranstaltung_id); + } }); } @@ -1140,15 +1143,16 @@ function loadPruefungstypen(abschluss) method: "loadPruefungstypen", abschluss: abschluss }, - error: loadError - }).success(function(data){ - var selectData = ""; - data.result.forEach(function(d){ - if(d.beschreibung === null) - d.beschreibung = ""; - selectData += ""; - }); - $('#pruefungsTyp').html(selectData); + error: loadError, + success: function(data){ + var selectData = ""; + data.result.forEach(function(d){ + if(d.beschreibung === null) + d.beschreibung = ""; + selectData += ""; + }); + $('#pruefungsTyp').html(selectData); + } }); } @@ -1165,16 +1169,16 @@ function loadStudiensemester() data: { method: "loadStudiensemester" }, - error: loadError - }).success(function(data){ - var selectData = ""; - data.result.forEach(function(d){ - selectData += ""; - }); - $('#studiensemester').html(selectData); - }).complete(function(){ - loadPruefungsfenster(); - loadLehrveranstaltungen(); + error: loadError, + success: function(data){ + var selectData = ""; + data.result.forEach(function(d){ + selectData += ""; + }); + $('#studiensemester').html(selectData); + loadPruefungsfenster(); + loadLehrveranstaltungen(); + } }); } @@ -1229,7 +1233,6 @@ function savePruefungstermin() unmarkMissingFormEntry(); var studiensemester_kurzbz = $("#studiensemester").val(); var pruefungsfenster_id = $("#pruefungsfenster").val(); -// var pruefungstyp_kurzbz = $("#pruefungsTyp").val(); var titel = $("#titel").val(); var beschreibung = $("#beschreibung").val(); var methode = $("#methode").val(); @@ -1306,11 +1309,6 @@ function savePruefungstermin() error = true; markMissingFormEntry("pruefungsfenster"); } -// if(is_null(pruefungstyp_kurzbz) || is_undefined(pruefungstyp_kurzbz) || is_empty_String(pruefungstyp_kurzbz) || (pruefungstyp_kurzbz === "undefiniert")) -// { -// error = true; -// markMissingFormEntry("pruefungsTyp"); -// } if(is_null(titel) || is_undefined(titel) || is_empty_String(titel)) { error = true; @@ -1353,7 +1351,6 @@ function savePruefungstermin() method: "savePruefungstermin", studiensemester_kurzbz: studiensemester_kurzbz, pruefungsfenster_id: pruefungsfenster_id, -// pruefungstyp_kurzbz: pruefungstyp_kurzbz, titel: titel, beschreibung: beschreibung, methode: methode, @@ -1363,17 +1360,18 @@ function savePruefungstermin() mitarbeiter_uid: mitarbeiter_uid, pruefungsintervall: pruefungsintervall }, - error: loadError - }).success(function(data){ - unmarkMissingFormEntry(); - if(data.error === "false") - { - messageBox("message", "t('pruefung/pruefungErfolgreichGespeichert'); ?>", "green", "highlight", 1000); - resetPruefungsverwaltung(); - } - else - { - messageBox("message", data.errormsg, "red", "highlight", 1000); + error: loadError, + success: function(data){ + unmarkMissingFormEntry(); + if(data.error === "false") + { + messageBox("message", "t('pruefung/pruefungErfolgreichGespeichert'); ?>", "green", "highlight", 1000); + resetPruefungsverwaltung(); + } + else + { + messageBox("message", data.errormsg, "red", "highlight", 1000); + } } }); } @@ -1423,15 +1421,14 @@ function loadLehrveranstaltungen() mitarbeiter_uid: mitarbeiter_uid, studiensemester_kurzbz: studiensemester_kurzbz }, - error: loadError - }).success(function(data){ - var selectData = ''; - data.result.forEach(function(d){ - selectData += ''; - }); - $("#lvDropdown1").html(selectData); - }).complete(function(){ - + error: loadError, + success: function(data){ + var selectData = ''; + data.result.forEach(function(d){ + selectData += ''; + }); + $("#lvDropdown1").html(selectData); + } }); } @@ -1455,14 +1452,14 @@ function loadPruefungsDetails(prfId) data: { method: "loadStudiensemester" }, - error: loadError - }).success(function(data){ + error: loadError, + }).done(function(data){ var selectData = ""; data.result.forEach(function(d){ selectData += ""; }); $('#studiensemester').html(selectData); - }).complete(function(){ + }).always(function(){ var studiensemester_kurzbz = $("#studiensemester option:selected").val(); $.ajax({ dataType: 'json', @@ -1473,7 +1470,7 @@ function loadPruefungsDetails(prfId) studiensemester_kurzbz: studiensemester_kurzbz }, error: loadError - }).success(function(data){ + }).done(function(data){ if(data.result.length === 0) { messageBox("message", "t('pruefung/keinePruefungsfensterGespeichert'); ?>", "red", "highlight", 1000); @@ -1484,7 +1481,7 @@ function loadPruefungsDetails(prfId) writePruefungsfenster(data); setDatePicker(); } - }).complete(function(){ + }).always(function(){ var studiensemester_kurzbz = $("#studiensemester").val(); var mitarbeiter_uid = $("#mitarbeiter_uid").val(); $.ajax({ @@ -1497,13 +1494,13 @@ function loadPruefungsDetails(prfId) studiensemester_kurzbz: studiensemester_kurzbz }, error: loadError - }).success(function(data){ + }).done(function(data){ var selectData = ''; data.result.forEach(function(d){ selectData += ''; }); $("#lvDropdown1").html(selectData); - }).complete(function(){ + }).always(function(){ $.ajax({ dataType: 'json', url: "./pruefungsanmeldung.json.php", @@ -1513,7 +1510,7 @@ function loadPruefungsDetails(prfId) pruefung_id: prfId }, error: loadError - }).success(function(data){ + }).done(function(data){ var copy = $("#lvDropdown1").clone(); $("#lvDropdowns").empty(); $("#lvDropdowns").html(copy); @@ -1523,7 +1520,6 @@ function loadPruefungsDetails(prfId) $("#beschreibung").val(result.pruefung.beschreibung); $("#studiensemester").val(result.pruefung.studiensemester_kurzbz); $("#pruefungsfenster").val(result.pruefung.pruefungsfenster_id); -// $("#pruefungsTyp").val(result.pruefung.pruefungstyp_kurzbz); $("#methode").val(result.pruefung.methode); var i = 0; $("#termin1").closest("tr").remove(); @@ -1533,11 +1529,11 @@ function loadPruefungsDetails(prfId) var lv = ""; if(d.lehrveranstaltung !== undefined) { - lv = ""+d.lehrveranstaltung.studiengang.kurzbzlang+" | "+d.lehrveranstaltung.bezeichnung+" ("+d.lehrveranstaltung.lehrform_kurzbz+") t('global/löschen'); ?>
"; + lv = ""+d.lehrveranstaltung.studiengang.kurzbzlang+" | "+d.lehrveranstaltung.bezeichnung+" ("+d.lehrveranstaltung.lehrform_kurzbz+") t('global/löschen'); ?>
"; } else { - lv = "t('pruefung/keineLehrveranstaltungenVorhanden'); ?>
"; + lv = "t('pruefung/keineLehrveranstaltungenVorhanden'); ?>
"; } $("#lvDropdowns").children().first().before(lv); var j = 0; @@ -1582,7 +1578,7 @@ function loadPruefungsDetails(prfId) { $("#einzeln").removeAttr("checked"); } - }).complete(function(){ + }).always(function(){ $("#buttonSave").attr("onclick", "updatePruefung(\""+prfId+"\");"); if($("#buttonStorno").length === 0) { @@ -1637,7 +1633,6 @@ function updatePruefung(prfId) unmarkMissingFormEntry(); var studiensemester_kurzbz = $("#studiensemester").val(); var pruefungsfenster_id = $("#pruefungsfenster").val(); -// var pruefungstyp_kurzbz = $("#pruefungsTyp").val(); var titel = $("#titel").val(); var beschreibung = $("#beschreibung").val(); var methode = $("#methode").val(); @@ -1748,11 +1743,6 @@ function updatePruefung(prfId) error = true; markMissingFormEntry("pruefungsfenster"); } -// if(is_null(pruefungstyp_kurzbz) || is_undefined(pruefungstyp_kurzbz) || is_empty_String(pruefungstyp_kurzbz) || (pruefungstyp_kurzbz === "undefiniert")) -// { -// error = true; -// markMissingFormEntry("pruefungsTyp"); -// } if(is_null(titel) || is_undefined(titel) || is_empty_String(titel)) { error = true; @@ -1789,7 +1779,6 @@ function updatePruefung(prfId) pruefung_id: prfId, studiensemester_kurzbz: studiensemester_kurzbz, pruefungsfenster_id: pruefungsfenster_id, -// pruefungstyp_kurzbz: pruefungstyp_kurzbz, titel: titel, beschreibung: beschreibung, methode: methode, @@ -1801,7 +1790,7 @@ function updatePruefung(prfId) pruefungsintervall: pruefungsintervall }, error: loadError - }).success(function(data){ + }).done(function(data){ unmarkMissingFormEntry(); if(data.error === "false") { @@ -1812,7 +1801,7 @@ function updatePruefung(prfId) { messageBox("message", data.errormsg, "red", "highlight", 1000); } - }).complete(function(){ + }).always(function(){ loadAllPruefungen(); $("#modalOverlay").removeClass("modalOverlay"); }); @@ -1837,7 +1826,7 @@ function deleteLehrveranstaltungFromPruefung(lvId, pruefung_id) lehrveranstaltung_id: lvId }, error: loadError - }).success(function(data){ + }).done(function(data){ if(data.error === "false") { messageBox("message", "t('pruefung/lvErfolgreichEntfernt'); ?>", "green", "highlight", 1000); @@ -1846,7 +1835,7 @@ function deleteLehrveranstaltungFromPruefung(lvId, pruefung_id) { messageBox("message", data.errormsg, "red", "highlight", 1000); } - }).complete(function(){ + }).always(function(){ loadPruefungsDetails(pruefung_id); }); } @@ -1868,7 +1857,7 @@ function stornoPruefung(pruefung_id) pruefung_id: pruefung_id }, error: loadError - }).success(function(data){ + }).done(function(data){ if(data.error === "false") { messageBox("message", "t('pruefung/pruefungStorniert'); ?>", "green", "highlight", 1000); @@ -1877,7 +1866,7 @@ function stornoPruefung(pruefung_id) { messageBox("message", data.errormsg, "red", "highlight", 1000); } - }).complete(function(){ + }).always(function(){ loadAllPruefungen(); resetPruefungsverwaltung(); }); @@ -1901,7 +1890,7 @@ function terminLoeschen(pruefung_id, pruefungstermin_id) pruefungstermin_id: pruefungstermin_id }, error: loadError - }).success(function(data){ + }).done(function(data){ if(data.error === "false") { messageBox("message", "t('pruefung/terminGeloescht'); ?>", "green", "highlight", 1000); @@ -1910,7 +1899,7 @@ function terminLoeschen(pruefung_id, pruefungstermin_id) { messageBox("message", data.errormsg, "red", "highlight", 1000); } - }).complete(function(){ + }).always(function(){ loadPruefungsDetails(pruefung_id); loadAllPruefungen(); }); @@ -1932,7 +1921,7 @@ function loadAllPruefungen() uid: uid }, error: loadError - }).success(function(data){ + }).done(function(data){ if(data.error != 'true') { $("#prfTable tbody").first().html(""); @@ -1953,7 +1942,6 @@ function loadAllPruefungen() }); tableRow+=""; tableRow += ""+e.methode+""; -// tableRow += ""+e.pruefungstyp_kurzbz+""; tableRow += ""+e.einzeln+""; tableRow += ""+e.mitarbeiter_uid+""; tableRow += ""+e.storniert+""; @@ -1966,7 +1954,7 @@ function loadAllPruefungen() { messageBox("message", data.errormsg, "red", "highlight", 1000); } - }).complete(function(event, xhr, settings){ + }).always(function(event, xhr, settings){ if($("#prfTable")[0].hasInitialized !== true) { $("#prfTable").tablesorter({ @@ -2042,7 +2030,6 @@ function resetPruefungsverwaltung() loadAllPruefungen(); $("#titel").val(""); $("#beschreibung").val(""); -// loadPruefungstypen("false"); loadStudiensemester(); $("#methode").val(""); resetLehrveranstaltungen(); @@ -2125,7 +2112,7 @@ function saveRaum(terminId, lehrveranstaltung_id) terminId: terminId }, error: loadError - }).success(function(data){ + }).done(function(data){ $("#raumDialog").dialog("close"); showAnmeldungen(terminId, lehrveranstaltung_id); }); @@ -2142,7 +2129,7 @@ function getRaeume(terminId) terminId: terminId }, error: loadError - }).success(function(data){ + }).done(function(data){ var liste = ""; data.result.forEach(function(d){ liste += "" diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php index 889d705f7..555144a67 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php @@ -53,20 +53,20 @@ $method = isset($_REQUEST['method'])?$_REQUEST['method']:''; switch($method) { case 'getPruefungByLv': - $studiensemester = isset($_REQUEST['studiensemester']) ? $_REQUEST['studiensemester'] : NULL; - $data = getPruefungByLv($studiensemester, $uid); - break; + $studiensemester = isset($_REQUEST['studiensemester']) ? $_REQUEST['studiensemester'] : NULL; + $data = getPruefungByLv($studiensemester, $uid); + break; case 'getPruefungByLvFromStudiengang': - $studiensemester = isset($_REQUEST['studiensemester']) ? $_REQUEST['studiensemester'] : NULL; - $data = getPruefungByLvFromStudiengang($studiensemester, $uid); - break; - case 'loadPruefung': - $data = loadPruefung(); - break; - case 'loadTermine': - $data = loadTermine(); - break; - case 'saveAnmeldung': + $studiensemester = isset($_REQUEST['studiensemester']) ? $_REQUEST['studiensemester'] : NULL; + $data = getPruefungByLvFromStudiengang($studiensemester, $uid); + break; + case 'loadPruefung': + $data = loadPruefung(); + break; + case 'loadTermine': + $data = loadTermine(); + break; + case 'saveAnmeldung': $student_uid = filter_input(INPUT_POST,"uid"); if($student_uid !== "" && !is_null($student_uid)) { @@ -80,56 +80,56 @@ switch($method) $data['errormsg']='Studenten UID fehlt.'; break; } - $data = saveAnmeldung($aktStudiensemester, $uid); - break; + $data = saveAnmeldung($aktStudiensemester, $uid); + break; case 'getAllPruefungen': - $data = getAllPruefungen($aktStudiensemester, $uid); - break; + $data = getAllPruefungen($aktStudiensemester, $uid); + break; case 'stornoAnmeldung': - $data = stornoAnmeldung($uid); - break; + $data = stornoAnmeldung($uid); + break; case 'getAnmeldungenTermin': - $data = getAnmeldungenTermin(); - break; + $data = getAnmeldungenTermin(); + break; case 'saveReihung': - $data = saveReihung(); - break; + $data = saveReihung(); + break; case 'anmeldungBestaetigen': - $data = anmeldungBestaetigen($uid); - break; + $data = anmeldungBestaetigen($uid); + break; case 'alleBestaetigen': - $data = alleBestaetigen($uid); - break; + $data = alleBestaetigen($uid); + break; case 'getStudiengaenge': - $data = getStudiengaenge(); - break; + $data = getStudiengaenge(); + break; case 'getPruefungenStudiengang': - $studiensemester = filter_input(INPUT_POST,"studiensemester"); - $data = getPruefungenStudiengang($uid, $studiensemester); - break; + $studiensemester = filter_input(INPUT_POST,"studiensemester"); + $data = getPruefungenStudiengang($uid, $studiensemester); + break; case 'saveKommentar': - $data = saveKommentar(); - break; + $data = saveKommentar(); + break; case 'getAllFreieRaeume': - $terminId = $_REQUEST["terminId"]; - $data = getAllFreieRaeume($terminId); - break; + $terminId = $_REQUEST["terminId"]; + $data = getAllFreieRaeume($terminId); + break; case 'saveRaum': - $terminId = $_REQUEST["terminId"]; - $ort_kurzbz = $_REQUEST["ort_kurzbz"]; - $data = saveRaum($terminId, $ort_kurzbz, $uid); - break; + $terminId = $_REQUEST["terminId"]; + $ort_kurzbz = $_REQUEST["ort_kurzbz"]; + $data = saveRaum($terminId, $ort_kurzbz, $uid); + break; case 'getLvKompatibel': - $lvid = filter_input(INPUT_POST, "lehrveranstaltung_id"); - $data = getLvKompatibel($lvid, $uid); - break; - case 'getPrestudenten': - $data = getPrestudenten($uid, $aktStudiensemester); - break; + $lvid = filter_input(INPUT_POST, "lehrveranstaltung_id"); + $data = getLvKompatibel($lvid, $uid); + break; + case 'getPrestudenten': + $data = getPrestudenten($uid, $aktStudiensemester); + break; default: - $data['error']='true'; - $data['errormsg']="unknown method: ".$method; - break; + $data['error']='true'; + $data['errormsg']="unknown method: ".$method; + break; } echo json_encode($data); @@ -144,17 +144,17 @@ echo json_encode($data); */ function getPruefungByLv($aktStudiensemester = null, $uid = null) { - $lehrveranstaltungen = new lehrveranstaltung(); - $lehrveranstaltungen->load_lva_student($uid, $aktStudiensemester); - $lvIds = array(); - foreach($lehrveranstaltungen->lehrveranstaltungen as $lvs) - { + $lehrveranstaltungen = new lehrveranstaltung(); + $lehrveranstaltungen->load_lva_student($uid, $aktStudiensemester); + $lvIds = array(); + foreach($lehrveranstaltungen->lehrveranstaltungen as $lvs) + { array_push($lvIds, $lvs->lehrveranstaltung_id); - } - $lehrveranstaltungen=$lvIds; - $pruefung = new pruefungCis(); - if($pruefung->getPruefungByLv($lehrveranstaltungen)) - { + } + $lehrveranstaltungen=$lvIds; + $pruefung = new pruefungCis(); + if($pruefung->getPruefungByLv($lehrveranstaltungen)) + { $pruefungen = array(); foreach($pruefung->lehrveranstaltungen as $key=>$lv) { @@ -198,13 +198,13 @@ function getPruefungByLv($aktStudiensemester = null, $uid = null) $data['result']=$return; $data['error']='false'; $data['errormsg']=''; - } - else - { + } + else + { $data['error']='true'; $data['errormsg']=$pruefung->errormsg; - } - return $data; + } + return $data; } /** @@ -215,50 +215,50 @@ function getPruefungByLv($aktStudiensemester = null, $uid = null) */ function getPruefungByLvFromStudiengang($aktStudiensemester = null, $uid = null) { - $lehrveranstaltungen = new lehrveranstaltung(); - $lv_angemeldet = new lehrveranstaltung(); - $lv_angemeldet->load_lva_student($uid, $aktStudiensemester); - $lvIds_angemeldet = array(); - foreach($lv_angemeldet->lehrveranstaltungen as $lv) - { + $lehrveranstaltungen = new lehrveranstaltung(); + $lv_angemeldet = new lehrveranstaltung(); + $lv_angemeldet->load_lva_student($uid, $aktStudiensemester); + $lvIds_angemeldet = array(); + foreach($lv_angemeldet->lehrveranstaltungen as $lv) + { array_push($lvIds_angemeldet, $lv->lehrveranstaltung_id); - } - $student = new student($uid); - $lehrveranstaltungen->load_lva($student->studiengang_kz); - $lvIds = array(); - foreach($lehrveranstaltungen->lehrveranstaltungen as $lvs) - { + } + $student = new student($uid); + $lehrveranstaltungen->load_lva($student->studiengang_kz); + $lvIds = array(); + foreach($lehrveranstaltungen->lehrveranstaltungen as $lvs) + { array_push($lvIds, $lvs->lehrveranstaltung_id); - } - $lehrveranstaltungen=$lvIds; - $pruefung = new pruefungCis(); - if($pruefung->getPruefungByLv($lehrveranstaltungen)) - { + } + $lehrveranstaltungen=$lvIds; + $pruefung = new pruefungCis(); + if($pruefung->getPruefungByLv($lehrveranstaltungen)) + { $pruefungen = array(); foreach($pruefung->lehrveranstaltungen as $key=>$lv) { - $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); - $lehrveranstaltung = $lehrveranstaltung->cleanResult(); - if(in_array($lehrveranstaltung[0]->lehrveranstaltung_id, $lvIds_angemeldet)) - { + $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); + $lehrveranstaltung = $lehrveranstaltung->cleanResult(); + if(in_array($lehrveranstaltung[0]->lehrveranstaltung_id, $lvIds_angemeldet)) + { $lehrveranstaltung[0]->angemeldet = true; - } - else - { + } + else + { $lehrveranstaltung[0]->angemeldet = false; - } - $lehreinheit = new lehreinheit(); - $lehreinheit->load_lehreinheiten($lehrveranstaltung[0]->lehrveranstaltung_id, $aktStudiensemester); - $lehreinheiten = $lehreinheit->lehreinheiten; - if(!empty($lehreinheiten) && $lehreinheiten !== null) - { + } + $lehreinheit = new lehreinheit(); + $lehreinheit->load_lehreinheiten($lehrveranstaltung[0]->lehrveranstaltung_id, $aktStudiensemester); + $lehreinheiten = $lehreinheit->lehreinheiten; + if(!empty($lehreinheiten) && $lehreinheiten !== null) + { $prf = new stdClass(); $temp = new pruefungCis($lv->pruefung_id); $temp->getTermineByPruefung($lv->pruefung_id); for($i=0; $i < sizeof($temp->termine); $i++) { - $termin = new pruefungstermin($temp->termine[$i]->pruefungstermin_id); - $temp->termine[$i]->teilnehmer = $termin->getNumberOfParticipants(); + $termin = new pruefungstermin($temp->termine[$i]->pruefungstermin_id); + $temp->termine[$i]->teilnehmer = $termin->getNumberOfParticipants(); } $prf->pruefung = $temp; $prf->lehrveranstaltung = $lehrveranstaltung; @@ -266,7 +266,7 @@ function getPruefungByLvFromStudiengang($aktStudiensemester = null, $uid = null) $oe = new organisationseinheit($lveranstaltung->oe_kurzbz); $prf->organisationseinheit = $oe->bezeichnung; array_push($pruefungen, $prf); - } + } } $anmeldung = new pruefungsanmeldung(); @@ -274,11 +274,11 @@ function getPruefungByLvFromStudiengang($aktStudiensemester = null, $uid = null) $anmeldungsIds = array(); foreach($anmeldungen as $anm) { - $a = new stdClass(); - $a->pruefungsanmeldung_id = $anm->pruefungsanmeldung_id; - $a->pruefungstermin_id = $anm->pruefungstermin_id; - $a->lehrveranstaltung_id = $anm->lehrveranstaltung_id; - array_push($anmeldungsIds, $a); + $a = new stdClass(); + $a->pruefungsanmeldung_id = $anm->pruefungsanmeldung_id; + $a->pruefungstermin_id = $anm->pruefungstermin_id; + $a->lehrveranstaltung_id = $anm->lehrveranstaltung_id; + array_push($anmeldungsIds, $a); } $return = new stdClass(); $return->pruefungen = $pruefungen; @@ -286,13 +286,13 @@ function getPruefungByLvFromStudiengang($aktStudiensemester = null, $uid = null) $data['result']=$return; $data['error']='false'; $data['errormsg']=''; - } - else - { + } + else + { $data['error']='true'; $data['errormsg']=$pruefung->errormsg; - } - return $data; + } + return $data; } /** @@ -301,18 +301,18 @@ function getPruefungByLvFromStudiengang($aktStudiensemester = null, $uid = null) */ function loadPruefung() { - $pruefung_id=$_REQUEST["pruefung_id"]; - $pruefung = new pruefungCis(); - if($pruefung->load($pruefung_id)) - { + $pruefung_id=$_REQUEST["pruefung_id"]; + $pruefung = new pruefungCis(); + if($pruefung->load($pruefung_id)) + { $temp = array(); $pruefung->getLehrveranstaltungenByPruefung(); $pruefung->getTermineByPruefung(); $studiengang = new studiengang(); if(!empty($pruefung->lehrveranstaltungen)) { - foreach($pruefung->lehrveranstaltungen as $lv) - { + foreach($pruefung->lehrveranstaltungen as $lv) + { $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); $lehrveranstaltung = $lehrveranstaltung->cleanResult(); $studiengang->load($lehrveranstaltung[0]->studiengang_kz); @@ -325,25 +325,25 @@ function loadPruefung() $prf->lehrveranstaltung = $lehrveranstaltung[0]; $prf->pruefung = $pruefung; array_push($temp, $prf); - } + } } else { - $prf = new stdClass(); - $prf->pruefung = $pruefung; - array_push($temp, $prf); + $prf = new stdClass(); + $prf->pruefung = $pruefung; + array_push($temp, $prf); } $data['result'] = array(); $data['result'] = $temp; $data['error']='false'; $data['errormsg']=''; - } - else - { + } + else + { $data['error']='true'; $data['errormsg']=$pruefung->errormsg; - } - return $data; + } + return $data; } /** @@ -352,20 +352,20 @@ function loadPruefung() */ function loadTermine() { - $pruefung_id=$_REQUEST["pruefung_id"]; - $pruefung = new pruefungCis($pruefung_id); - if($pruefung->getTermineByPruefung($pruefung_id)) - { + $pruefung_id=$_REQUEST["pruefung_id"]; + $pruefung = new pruefungCis($pruefung_id); + if($pruefung->getTermineByPruefung($pruefung_id)) + { $data['result'] = $pruefung->termine; $data['error']='false'; $data['errormsg']=''; - } - else - { + } + else + { $data['error']='true'; $data['errormsg']=$pruefung->errormsg; - } - return $data; + } + return $data; } /** @@ -377,24 +377,24 @@ function loadTermine() function saveAnmeldung($aktStudiensemester = null, $uid = null) { global $p; - $termin = new pruefungstermin($_REQUEST["termin_id"]); - $pruefung = new pruefung(); - $lehrveranstaltung = new lehrveranstaltung($_REQUEST["lehrveranstaltung_id"]); - $studiensemester = new studiensemester(); - $stdsem = $studiensemester->getLastOrAktSemester(0); - $lv_besucht = false; - $studienverpflichtung_id = filter_input(INPUT_POST, "studienverpflichtung_id"); - $studiengang_kz = filter_input(INPUT_POST, "studiengang_kz"); + $termin = new pruefungstermin($_REQUEST["termin_id"]); + $pruefung = new pruefung(); + $lehrveranstaltung = new lehrveranstaltung($_REQUEST["lehrveranstaltung_id"]); + $studiensemester = new studiensemester(); + $stdsem = $studiensemester->getLastOrAktSemester(0); + $lv_besucht = false; + $studienverpflichtung_id = filter_input(INPUT_POST, "studienverpflichtung_id"); + $studiengang_kz = filter_input(INPUT_POST, "studiengang_kz"); - //Defaulteinstellung für Anzahlprüfungsversuche (wird durch Addon "ktu" überschrieben) - $maxAnzahlVersuche = 0; + //Defaulteinstellung für Anzahlprüfungsversuche (wird durch Addon "ktu" überschrieben) + $maxAnzahlVersuche = 0; - //Defaulteinstellung für Code Note "unetnschuldigt ferngeblieben" (wird durch Addon "ktu" überschrieben) - $noteCode_uef = -1; + //Defaulteinstellung für Code Note "unetnschuldigt ferngeblieben" (wird durch Addon "ktu" überschrieben) + $noteCode_uef = -1; - $addon = new addon(); - foreach ($addon->aktive_addons as $a) - { + $addon = new addon(); + foreach ($addon->aktive_addons as $a) + { if($a === "ku") { require '../../../../addons/'.$a.'/cis/prfVerwaltung_array.php'; @@ -415,11 +415,11 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) { $semCounter = 99; } - } - $i=0; + } + $i=0; $stdsem_lv_besuch = null; - do - { + do + { $lehrveranstaltung->load_lva_student($uid, $stdsem); foreach($lehrveranstaltung->lehrveranstaltungen as $lv) { @@ -433,38 +433,38 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) $stdsem = $studiensemester->getPreviousFrom($stdsem); $lehrveranstaltung->lehrveranstaltungen = array(); $i++; - } - while($i<=$semCounter && $lv_besucht === FALSE); + } + while($i<=$semCounter && $lv_besucht === FALSE); - if(!$lv_besucht) - { + if(!$lv_besucht) + { $data['error']='true'; $data['errormsg']='Besuch der Lehrveranstaltung liegt zu weit in der Vergangenheit.'; return $data; - } + } - $pruefung->getPruefungen($uid, NULL, $lehrveranstaltung->lehrveranstaltung_id); - $anmeldung_moeglich = true; - $anzahlPruefungen = count($pruefung->result); + $pruefung->getPruefungen($uid, NULL, $lehrveranstaltung->lehrveranstaltung_id); + $anmeldung_moeglich = true; + $anzahlPruefungen = count($pruefung->result); // Defaulteinstellung für Prüfungstypen - schauen, ob bereits aus KTU-Addon geladen if(!isset($pruefungstyp_kurzbzArray)) $pruefungstyp_kurzbzArray = array("Termin1","Termin2","kommPruef"); - if(isset($pruefungstyp_kurzbzArray)) - { + if(isset($pruefungstyp_kurzbzArray)) + { if($anzahlPruefungen < count($pruefungstyp_kurzbzArray)) { $pruefungstyp_kurzbz = $pruefungstyp_kurzbzArray[$anzahlPruefungen]; } - } - else - { + } + else + { $pruefungstyp_kurzbz = null; - } + } - foreach($pruefung->result as $prf) - { + foreach($pruefung->result as $prf) + { $note = new note($prf->note); if($note->note === $noteCode_uef) { @@ -492,10 +492,10 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) $anmeldung_moeglich = false; } } - } + } - if($anmeldung_moeglich) - { + if($anmeldung_moeglich) + { if($termin->teilnehmer_max > $termin->getNumberOfParticipants() || $termin->teilnehmer_max == NULL) { $pruefung = new pruefungCis(); @@ -582,111 +582,111 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) $data['errormsg']=$p->t('pruefung/keineFreienPlaetzeVorhanden'); return $data; } - } - else - { + } + else + { $data['error']='true'; $data['errormsg']=$p->t('pruefung/anmeldungAufgrundVonSperreNichtMoeglich'); return $data; - } + } - $anrechnung = new anrechnung(); - $lv_komp = new lehrveranstaltung($studienverpflichtung_id); - $lehrveranstaltung = new lehrveranstaltung($_REQUEST["lehrveranstaltung_id"]); - $person = new person(); - $person->getPersonFromBenutzer($uid); - $prestudent = new prestudent(); - $prestudent->getPrestudenten($person->person_id); - $studiensemester = new studiensemester(); - $stdsem = $studiensemester->getaktorNext(); + $anrechnung = new anrechnung(); + $lv_komp = new lehrveranstaltung($studienverpflichtung_id); + $lehrveranstaltung = new lehrveranstaltung($_REQUEST["lehrveranstaltung_id"]); + $person = new person(); + $person->getPersonFromBenutzer($uid); + $prestudent = new prestudent(); + $prestudent->getPrestudenten($person->person_id); + $studiensemester = new studiensemester(); + $stdsem = $studiensemester->getaktorNext(); if ($aktStudiensemester) $stdsem = $aktStudiensemester; $prestudenten = array(); - foreach ($prestudent->result as $ps) - { - if ($ps->getLaststatus($ps->prestudent_id, $stdsem_lv_besuch)) - { - if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) - { - array_push($prestudenten, $ps); - } - } - } + foreach ($prestudent->result as $ps) + { + if ($ps->getLaststatus($ps->prestudent_id, $stdsem_lv_besuch)) + { + if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) + { + array_push($prestudenten, $ps); + } + } + } - if (count($prestudenten) > 0) - { - $prestudent_id = ""; - if (count($prestudenten) != 1) - { - foreach ($prestudenten as $ps) - { - if($ps->studiengang_kz === $studiengang_kz) - { - if ($ps->getLaststatus($ps->prestudent_id, $stdsem)) - { - if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) - { - $prestudent_id = $ps->prestudent_id; - } - else - { - if ($ps->getLaststatus($ps->prestudent_id, $stdsem_lv_besuch)) - { - if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) - { - $prestudent_id = $ps->prestudent_id; - } - } - } - } - else - { - if ($ps->getLaststatus($ps->prestudent_id, $stdsem_lv_besuch)) - { - if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) - { - $prestudent_id = $ps->prestudent_id; - } - } - } - } - } - } - else - { - foreach ($prestudenten as $ps) - { - if ($ps->getLaststatus($ps->prestudent_id, $stdsem)) - { - if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) - { - $prestudent_id = $ps->prestudent_id; - } - else - { - if ($ps->getLaststatus($ps->prestudent_id, $stdsem_lv_besuch)) - { - if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) - { - $prestudent_id = $ps->prestudent_id; - } - } - } - } - else - { - if ($ps->getLaststatus($ps->prestudent_id, $stdsem_lv_besuch)) - { - if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) - { - $prestudent_id = $ps->prestudent_id; - } - } - } - } - } + if (count($prestudenten) > 0) + { + $prestudent_id = ""; + if (count($prestudenten) != 1) + { + foreach ($prestudenten as $ps) + { + if($ps->studiengang_kz === $studiengang_kz) + { + if ($ps->getLaststatus($ps->prestudent_id, $stdsem)) + { + if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) + { + $prestudent_id = $ps->prestudent_id; + } + else + { + if ($ps->getLaststatus($ps->prestudent_id, $stdsem_lv_besuch)) + { + if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) + { + $prestudent_id = $ps->prestudent_id; + } + } + } + } + else + { + if ($ps->getLaststatus($ps->prestudent_id, $stdsem_lv_besuch)) + { + if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) + { + $prestudent_id = $ps->prestudent_id; + } + } + } + } + } + } + else + { + foreach ($prestudenten as $ps) + { + if ($ps->getLaststatus($ps->prestudent_id, $stdsem)) + { + if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) + { + $prestudent_id = $ps->prestudent_id; + } + else + { + if ($ps->getLaststatus($ps->prestudent_id, $stdsem_lv_besuch)) + { + if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) + { + $prestudent_id = $ps->prestudent_id; + } + } + } + } + else + { + if ($ps->getLaststatus($ps->prestudent_id, $stdsem_lv_besuch)) + { + if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) + { + $prestudent_id = $ps->prestudent_id; + } + } + } + } + } if($prestudent_id != "") { @@ -761,13 +761,13 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) $data['error']='true'; $data['errormsg']=$p->t('pruefung/prestudentNichtGefunden'); } - } - else - { + } + else + { $data['error']='true'; $data['errormsg']=$p->t('pruefung/prestudentNichtGefunden'); - } - return $data; + } + return $data; } /** @@ -778,34 +778,34 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) */ function getAllPruefungen($aktStudiensemester = null, $uid = null) { - $pruefung = new pruefungCis(); - if($pruefung->getAll()) - { + $pruefung = new pruefungCis(); + if($pruefung->getAll()) + { $pruefungen = array(); foreach($pruefung->lehrveranstaltungen as $lv) { - $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); - $lehrveranstaltung = $lehrveranstaltung->cleanResult(); - $lehreinheit = new lehreinheit(); - $lehreinheit->load_lehreinheiten($lehrveranstaltung[0]->lehrveranstaltung_id, $aktStudiensemester); - $lehreinheiten = $lehreinheit->lehreinheiten; - $prf = new stdClass(); - $temp = new pruefungCis($lv->pruefung_id); - $temp->getTermineByPruefung($lv->pruefung_id); - for($i=0; $i < sizeof($temp->termine); $i++) - { + $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); + $lehrveranstaltung = $lehrveranstaltung->cleanResult(); + $lehreinheit = new lehreinheit(); + $lehreinheit->load_lehreinheiten($lehrveranstaltung[0]->lehrveranstaltung_id, $aktStudiensemester); + $lehreinheiten = $lehreinheit->lehreinheiten; + $prf = new stdClass(); + $temp = new pruefungCis($lv->pruefung_id); + $temp->getTermineByPruefung($lv->pruefung_id); + for($i=0; $i < sizeof($temp->termine); $i++) + { $termin = new pruefungstermin($temp->termine[$i]->pruefungstermin_id); $temp->termine[$i]->teilnehmer = $termin->getNumberOfParticipants(); - } - $prf->pruefung = $temp; - $prf->lehrveranstaltung = $lehrveranstaltung; - if(!empty($lehreinheiten)) - { + } + $prf->pruefung = $temp; + $prf->lehrveranstaltung = $lehrveranstaltung; + if(!empty($lehreinheiten)) + { $lveranstaltung = new lehrveranstaltung($lehreinheiten[0]->lehrfach_id); $oe = new organisationseinheit($lveranstaltung->oe_kurzbz); $prf->organisationseinheit = $oe->bezeichnung; array_push($pruefungen, $prf); - } + } } $anmeldung = new pruefungsanmeldung(); @@ -813,11 +813,11 @@ function getAllPruefungen($aktStudiensemester = null, $uid = null) $anmeldungsIds = array(); foreach($anmeldungen as $anm) { - $a = new stdClass(); - $a->pruefungsanmeldung_id = $anm->pruefungsanmeldung_id; - $a->pruefungstermin_id = $anm->pruefungstermin_id; - $a->lehrveranstaltung_id = $anm->lehrveranstaltung_id; - array_push($anmeldungsIds, $a); + $a = new stdClass(); + $a->pruefungsanmeldung_id = $anm->pruefungsanmeldung_id; + $a->pruefungstermin_id = $anm->pruefungstermin_id; + $a->lehrveranstaltung_id = $anm->lehrveranstaltung_id; + array_push($anmeldungsIds, $a); } $return = new stdClass(); $return->pruefungen = $pruefungen; @@ -825,13 +825,13 @@ function getAllPruefungen($aktStudiensemester = null, $uid = null) $data['result']=$return; $data['error']='false'; $data['errormsg']=''; - } - else - { + } + else + { $data['error']='true'; $data['errormsg']=$pruefung->errormsg; - } - return $data; + } + return $data; } /** @@ -842,24 +842,24 @@ function getAllPruefungen($aktStudiensemester = null, $uid = null) function stornoAnmeldung($uid = null) { global $p; - $pruefungsanmeldung_id=$_REQUEST['pruefungsanmeldung_id']; - $pruefungsanmeldung = new pruefungsanmeldung($pruefungsanmeldung_id); - $anrechnung = new anrechnung($pruefungsanmeldung->anrechnung_id); - if($pruefungsanmeldung->delete($pruefungsanmeldung_id, $uid)) - { + $pruefungsanmeldung_id=$_REQUEST['pruefungsanmeldung_id']; + $pruefungsanmeldung = new pruefungsanmeldung($pruefungsanmeldung_id); + $anrechnung = new anrechnung($pruefungsanmeldung->anrechnung_id); + if($pruefungsanmeldung->delete($pruefungsanmeldung_id, $uid)) + { if($anrechnung->delete($anrechnung->anrechnung_id)) { - $data['result'] = $p->t('pruefung/anmeldungErfolgreichGeloescht'); - $data['error'] = 'false'; - $data['errormsg'] = ''; + $data['result'] = $p->t('pruefung/anmeldungErfolgreichGeloescht'); + $data['error'] = 'false'; + $data['errormsg'] = ''; } - } - else - { + } + else + { $data['error']='true'; $data['errormsg']=$pruefung->errormsg; - } - return $data; + } + return $data; } @@ -871,11 +871,11 @@ function stornoAnmeldung($uid = null) function getAnmeldungenTermin() { global $p; - $lehrveranstaltung_id = $_REQUEST["lehrveranstaltung_id"]; - $pruefungstermin_id = $_REQUEST["pruefungstermin_id"]; - $pruefungstermin = new pruefungstermin($pruefungstermin_id); - $pruefungsanmeldung = new pruefungsanmeldung(); - $pruefungstermin->anmeldungen = $pruefungsanmeldung->getAnmeldungenByTermin($pruefungstermin_id, $lehrveranstaltung_id); + $lehrveranstaltung_id = $_REQUEST["lehrveranstaltung_id"]; + $pruefungstermin_id = $_REQUEST["pruefungstermin_id"]; + $pruefungstermin = new pruefungstermin($pruefungstermin_id); + $pruefungsanmeldung = new pruefungsanmeldung(); + $pruefungstermin->anmeldungen = $pruefungsanmeldung->getAnmeldungenByTermin($pruefungstermin_id, $lehrveranstaltung_id); $lv = new lehrveranstaltung($lehrveranstaltung_id); $pruefungstermin->lv_bezeichnung = $lv->bezeichnung; $pruefungstermin->lv_lehrtyp = $lv->lehrtyp_kurzbz; @@ -921,20 +921,20 @@ function getAnmeldungenTermin() */ function saveReihung() { - $anmeldung = new pruefungsanmeldung(); - $reihung = $_REQUEST["reihung"]; - if($anmeldung->saveReihung($reihung)) - { + $anmeldung = new pruefungsanmeldung(); + $reihung = $_REQUEST["reihung"]; + if($anmeldung->saveReihung($reihung)) + { $data['result']=true; $data['error']='false'; $data['errormsg']=$anmeldung->errormsg; - } - else - { + } + else + { $data['error']='true'; $data['errormsg']=$anmeldung->errormsg; - } - return $data; + } + return $data; } /** @@ -945,10 +945,10 @@ function alleBestaetigen($uid) { global $p; $lehrveranstaltung_id = $_REQUEST["lehrveranstaltung_id"]; - $pruefungstermin_id = $_REQUEST["termin_id"]; - $pruefungstermin = new pruefungstermin($pruefungstermin_id); - $pruefungsanmeldung = new pruefungsanmeldung(); - $pranmeldungen = $pruefungsanmeldung->getAnmeldungenByTermin($pruefungstermin_id, $lehrveranstaltung_id); + $pruefungstermin_id = $_REQUEST["termin_id"]; + $pruefungstermin = new pruefungstermin($pruefungstermin_id); + $pruefungsanmeldung = new pruefungsanmeldung(); + $pranmeldungen = $pruefungsanmeldung->getAnmeldungenByTermin($pruefungstermin_id, $lehrveranstaltung_id); foreach($pranmeldungen as $a) { $anmeldung = new pruefungsanmeldung($a->pruefungsanmeldung_id); @@ -972,15 +972,15 @@ function alleBestaetigen($uid) $html .= $p->t('pruefung/emailBodyPruefung')." ".$lv->bezeichnung."
"; if($pruefung->einzeln) { - $date = $datum->formatDatum($termin->von, "Y-m-d H:i:s"); - $date = strtotime($date); - $date = $date+(60*$pruefung->pruefungsintervall*($anmeldung->reihung-1)); - $von = date("H:i",$date); - $html .= $p->t('pruefung/emailBodyTermin')." ".$datum->formatDatum($termin->von, "d.m.Y")." ".$p->t('pruefung/emailBodyUm')." ".$von."
"; - $html .= $p->t('pruefung/emailBodyDauer')." ".$pruefung->pruefungsintervall." ".$p->t('pruefung/emailBodyMinuten')."
"; + $date = $datum->formatDatum($termin->von, "Y-m-d H:i:s"); + $date = strtotime($date); + $date = $date+(60*$pruefung->pruefungsintervall*($anmeldung->reihung-1)); + $von = date("H:i",$date); + $html .= $p->t('pruefung/emailBodyTermin')." ".$datum->formatDatum($termin->von, "d.m.Y")." ".$p->t('pruefung/emailBodyUm')." ".$von."
"; + $html .= $p->t('pruefung/emailBodyDauer')." ".$pruefung->pruefungsintervall." ".$p->t('pruefung/emailBodyMinuten')."
"; } else - $html .= $p->t('pruefung/emailBodyTermin')." ".$datum->formatDatum($termin->von, "d.m.Y")." ".$p->t('pruefung/emailBodyUm')." ".$datum->formatDatum($termin->von, "H:i")."
"; + $html .= $p->t('pruefung/emailBodyTermin')." ".$datum->formatDatum($termin->von, "d.m.Y")." ".$p->t('pruefung/emailBodyUm')." ".$datum->formatDatum($termin->von, "H:i")."
"; $html .= $p->t('pruefung/anmeldungErfolgreich')." ".$ort->bezeichnung."
"; $html .= "
"; $html .= "".$p->t('pruefung/emailBodyLinkZurAnmeldung')."
"; @@ -1005,11 +1005,11 @@ function alleBestaetigen($uid) function anmeldungBestaetigen($uid) { global $p; - $pruefungsanmeldung_id = $_REQUEST["pruefungsanmeldung_id"]; - $status = "bestaetigt"; - $anmeldung = new pruefungsanmeldung(); - if($anmeldung->changeState($pruefungsanmeldung_id, $status, $uid)) - { + $pruefungsanmeldung_id = $_REQUEST["pruefungsanmeldung_id"]; + $status = "bestaetigt"; + $anmeldung = new pruefungsanmeldung(); + if($anmeldung->changeState($pruefungsanmeldung_id, $status, $uid)) + { $anmeldung = new pruefungsanmeldung($pruefungsanmeldung_id); $termin = new pruefungstermin($anmeldung->pruefungstermin_id); $lv = new lehrveranstaltung($anmeldung->lehrveranstaltung_id); @@ -1026,15 +1026,15 @@ function anmeldungBestaetigen($uid) $html .= $p->t('pruefung/emailBodyPruefung')." ".$lv->bezeichnung."
"; if($pruefung->einzeln) { - $date = $datum->formatDatum($termin->von, "Y-m-d H:i:s"); - $date = strtotime($date); - $date = $date+(60*$pruefung->pruefungsintervall*($anmeldung->reihung-1)); - $von = date("H:i",$date); - $html .= $p->t('pruefung/emailBodyTermin')." ".$datum->formatDatum($termin->von, "d.m.Y")." ".$p->t('pruefung/emailBodyUm')." ".$von."
"; - $html .= $p->t('pruefung/emailBodyDauer')." ".$pruefung->pruefungsintervall." ".$p->t('pruefung/emailBodyMinuten')."
"; + $date = $datum->formatDatum($termin->von, "Y-m-d H:i:s"); + $date = strtotime($date); + $date = $date+(60*$pruefung->pruefungsintervall*($anmeldung->reihung-1)); + $von = date("H:i",$date); + $html .= $p->t('pruefung/emailBodyTermin')." ".$datum->formatDatum($termin->von, "d.m.Y")." ".$p->t('pruefung/emailBodyUm')." ".$von."
"; + $html .= $p->t('pruefung/emailBodyDauer')." ".$pruefung->pruefungsintervall." ".$p->t('pruefung/emailBodyMinuten')."
"; } else - $html .= $p->t('pruefung/emailBodyTermin')." ".$datum->formatDatum($termin->von, "d.m.Y")." ".$p->t('pruefung/emailBodyUm')." ".$datum->formatDatum($termin->von, "H:i")."
"; + $html .= $p->t('pruefung/emailBodyTermin')." ".$datum->formatDatum($termin->von, "d.m.Y")." ".$p->t('pruefung/emailBodyUm')." ".$datum->formatDatum($termin->von, "H:i")."
"; $html .= $p->t('pruefung/anmeldungErfolgreich')." ".$ort->bezeichnung."
"; $html .= "
"; $html .= "".$p->t('pruefung/emailBodyLinkZurAnmeldung')."
"; @@ -1047,13 +1047,13 @@ function anmeldungBestaetigen($uid) $data['result']=true; $data['error']='false'; $data['errormsg']=''; - } - else - { + } + else + { $data['error']='true'; $data['errormsg']=$anmeldung->errormsg; - } - return $data; + } + return $data; } /** @@ -1062,29 +1062,29 @@ function anmeldungBestaetigen($uid) */ function getStudiengaenge() { - $studiengang = new studiengang(); - if($studiengang->getAll("bezeichnung", true)) - { + $studiengang = new studiengang(); + if($studiengang->getAll("bezeichnung", true)) + { $result = array(); foreach($studiengang->result as $stg) { - $studiengangTemp = new StdClass(); - $studiengangTemp->studiengang_kz = $stg->studiengang_kz; - $studiengangTemp->bezeichnung = $stg->bezeichnung; - $studiengangTemp->kurzbz = $stg->kurzbz; - $studiengangTemp->typ = $stg->typ; - array_push($result, $studiengangTemp); + $studiengangTemp = new StdClass(); + $studiengangTemp->studiengang_kz = $stg->studiengang_kz; + $studiengangTemp->bezeichnung = $stg->bezeichnung; + $studiengangTemp->kurzbz = $stg->kurzbz; + $studiengangTemp->typ = $stg->typ; + array_push($result, $studiengangTemp); } $data['result']=$result; $data['error']='false'; $data['errormsg']=''; - } - else - { + } + else + { $data['error']='true'; $data['errormsg']=$studiengang->errormsg; - } - return $data; + } + return $data; } /** @@ -1093,39 +1093,39 @@ function getStudiengaenge() */ function getPruefungenStudiengang($uid, $aktStudiensemester) { - $lehrveranstaltung = new lehrveranstaltung(); - $lehrveranstaltung->load_lva($_REQUEST["studiengang_kz"], null, null, true, true); - $result = array(); - foreach($lehrveranstaltung->lehrveranstaltungen as $lv) - { + $lehrveranstaltung = new lehrveranstaltung(); + $lehrveranstaltung->load_lva($_REQUEST["studiengang_kz"], null, null, true, true); + $result = array(); + foreach($lehrveranstaltung->lehrveranstaltungen as $lv) + { $pruefung = new pruefungCis(); $pruefung->getPruefungByLv($lv->lehrveranstaltung_id); if((!empty($pruefung->lehrveranstaltungen))) { - $lv->pruefung = array(); - foreach ($pruefung->lehrveranstaltungen as $key=>$prf) - { + $lv->pruefung = array(); + foreach ($pruefung->lehrveranstaltungen as $key=>$prf) + { $pruefung->load($prf->pruefung_id); // var_dump($aktStudiensemester); // var_dump($pruefung->studiensemester_kurzbz); if(($pruefung->storniert === true)) { - unset($pruefung->lehrveranstaltungen[$key]); + unset($pruefung->lehrveranstaltungen[$key]); } else { - $pruefung->getTermineByPruefung(); - array_push($lv->pruefung, $pruefung); + $pruefung->getTermineByPruefung(); + array_push($lv->pruefung, $pruefung); } - } - if($pruefung->studiensemester_kurzbz === $aktStudiensemester) + } + if($pruefung->studiensemester_kurzbz === $aktStudiensemester) array_push($result, $lv); } - } - $data['result']=$result; - $data['error']='false'; - $data['errormsg']=''; - return $data; + } + $data['result']=$result; + $data['error']='false'; + $data['errormsg']=''; + return $data; } /** @@ -1134,23 +1134,23 @@ function getPruefungenStudiengang($uid, $aktStudiensemester) */ function saveKommentar() { - $kommentar = $_REQUEST["kommentar"]; - $pruefungsanmeldung_id = $_REQUEST["pruefungsanmeldung_id"]; + $kommentar = $_REQUEST["kommentar"]; + $pruefungsanmeldung_id = $_REQUEST["pruefungsanmeldung_id"]; - $pruefungsanmeldung = new pruefungsanmeldung($pruefungsanmeldung_id); - $pruefungsanmeldung->kommentar = $kommentar; - if($pruefungsanmeldung->save()) - { + $pruefungsanmeldung = new pruefungsanmeldung($pruefungsanmeldung_id); + $pruefungsanmeldung->kommentar = $kommentar; + if($pruefungsanmeldung->save()) + { $data['result']=true; $data['error']='false'; $data['errormsg']=''; - } - else - { + } + else + { $data['error']='true'; $data['errormsg']=$pruefungsanmeldung->errormsg; - } - return $data; + } + return $data; } /** @@ -1158,38 +1158,38 @@ function saveKommentar() */ function getAllFreieRaeume($terminId) { - $pruefungstermin = new pruefungstermin(); - $pruefungstermin->load($terminId); - $ort = new ort(); - $datum_von = explode(" ", $pruefungstermin->von); - $datum_bis = explode(" ", $pruefungstermin->bis); - $teilnehmer = $pruefungstermin->getNumberOfParticipants(); - $teilnehmer = $teilnehmer !== false ? $teilnehmer : 0; - $pruefungstermin->getAll($pruefungstermin->von, $pruefungstermin->bis, TRUE); + $pruefungstermin = new pruefungstermin(); + $pruefungstermin->load($terminId); + $ort = new ort(); + $datum_von = explode(" ", $pruefungstermin->von); + $datum_bis = explode(" ", $pruefungstermin->bis); + $teilnehmer = $pruefungstermin->getNumberOfParticipants(); + $teilnehmer = $teilnehmer !== false ? $teilnehmer : 0; + $pruefungstermin->getAll($pruefungstermin->von, $pruefungstermin->bis, TRUE); - if($ort->search($datum_von[0], $datum_von[1], $datum_bis[1], null, $teilnehmer, true)) - { + if($ort->search($datum_von[0], $datum_von[1], $datum_bis[1], null, $teilnehmer, true)) + { foreach($pruefungstermin->result as $termin) { - if($termin->pruefungstermin_id != $pruefungstermin->pruefungstermin_id && !is_null($termin->ort_kurzbz)) - { + if($termin->pruefungstermin_id != $pruefungstermin->pruefungstermin_id && !is_null($termin->ort_kurzbz)) + { $o = new ort($termin->ort_kurzbz); $o->ort_kurzbz .= " (Sammelklausur)"; array_push($ort->result, $o); - } + } } usort($ort->result, "compareRaeume"); $data['result']=$ort->result; $data['error']='false'; $data['errormsg']=''; - } - else - { + } + else + { $data['error']='true'; $data['errormsg']=$ort->errormsg; - } - return $data; + } + return $data; } /** @@ -1200,165 +1200,165 @@ function getAllFreieRaeume($terminId) */ function compareRaeume($a, $b) { - return strcmp($a->ort_kurzbz, $b->ort_kurzbz); + return strcmp($a->ort_kurzbz, $b->ort_kurzbz); } function saveRaum($terminId, $ort_kurzbz, $uid) { - $pruefungstermin = new pruefungstermin($terminId); - $stunde = new stunde(); - $datum_von = explode(" ", $pruefungstermin->von); - $datum_bis = explode(" ", $pruefungstermin->bis); - $stunden = $stunde->getStunden($datum_von[1], $datum_bis[1]); - $reservierung = new reservierung(); - $reserviert = false; - foreach($stunden as $h) - { + $pruefungstermin = new pruefungstermin($terminId); + $stunde = new stunde(); + $datum_von = explode(" ", $pruefungstermin->von); + $datum_bis = explode(" ", $pruefungstermin->bis); + $stunden = $stunde->getStunden($datum_von[1], $datum_bis[1]); + $reservierung = new reservierung(); + $reserviert = false; + foreach($stunden as $h) + { if($reservierung->isReserviert($ort_kurzbz, $datum_von[0], $h)) - $reserviert = true; - } - if(!$reserviert || $pruefungstermin->sammelklausur == TRUE) - { + $reserviert = true; + } + if(!$reserviert || $pruefungstermin->sammelklausur == TRUE) + { $pruefung = new pruefungCis($pruefungstermin->pruefung_id); $mitarbeiter = new mitarbeiter($pruefung->mitarbeiter_uid); if($ort_kurzbz === "buero") { - $pruefungstermin->ort_kurzbz = $mitarbeiter->ort_kurzbz; - if($pruefungstermin->save(false)) - { + $pruefungstermin->ort_kurzbz = $mitarbeiter->ort_kurzbz; + if($pruefungstermin->save(false)) + { $data['result']="reserviert"; $data['error']='false'; $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefungstermin->errormsg; - } - } - else - { - $reservierung->studiengang_kz = "0"; - $reservierung->ort_kurzbz = $ort_kurzbz; - $reservierung->uid = $pruefung->mitarbeiter_uid; - $reservierung->datum = $datum_von[0]; - $reservierung->titel = $pruefung->titel; - if(strlen($pruefung->titel) > 10) - { - $reservierung->titel = "Prüfung"; - } - $reservierung->beschreibung = "Prüfung"; - $reservierung->insertamum = date('Y-m-d G:i:s'); - $reservierung->insertvon = $uid; - $reservierungError = false; - - foreach($stunden as $h) - { - $reservierung->stunde = $h; - if(!$reservierung->save(true)) - { - $reservierungError = true; - } - } - if(!$reservierungError) - { - $pruefungstermin->ort_kurzbz = $reservierung->ort_kurzbz; - if($pruefungstermin->save(false)) - { - $data['result']="reserviert"; - $data['error']='false'; - $data['errormsg']=''; } else { - $data['error']='true'; - $data['errormsg']=$pruefungstermin->errormsg; + $data['error']='true'; + $data['errormsg']=$pruefungstermin->errormsg; } - } - else - { + } + else + { + $reservierung->studiengang_kz = "0"; + $reservierung->ort_kurzbz = $ort_kurzbz; + $reservierung->uid = $pruefung->mitarbeiter_uid; + $reservierung->datum = $datum_von[0]; + $reservierung->titel = $pruefung->titel; + if(strlen($pruefung->titel) > 10) + { + $reservierung->titel = "Prüfung"; + } + $reservierung->beschreibung = "Prüfung"; + $reservierung->insertamum = date('Y-m-d G:i:s'); + $reservierung->insertvon = $uid; + $reservierungError = false; + + foreach($stunden as $h) + { + $reservierung->stunde = $h; + if(!$reservierung->save(true)) + { + $reservierungError = true; + } + } + if(!$reservierungError) + { + $pruefungstermin->ort_kurzbz = $reservierung->ort_kurzbz; + if($pruefungstermin->save(false)) + { + $data['result']="reserviert"; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefungstermin->errormsg; + } + } + else + { $data['error']='true'; $data['errormsg']=$reservierung->errormsg; - } + } } - } - else - { + } + else + { $data['error']='true'; $data['errormsg']="Reservierung nicht möglich."; - } - return $data; + } + return $data; } function getLvKompatibel($lvid, $uid) { - $person = new person(); - $person->getPersonFromBenutzer($uid); - $prestudent = new prestudent(); - $prestudent->getPrestudenten($person->person_id); + $person = new person(); + $person->getPersonFromBenutzer($uid); + $prestudent = new prestudent(); + $prestudent->getPrestudenten($person->person_id); - $stplIds = array(); + $stplIds = array(); - foreach ($prestudent->result as $ps) - { - if ($ps->getLaststatus($ps->prestudent_id)) - { - if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) - { - array_push($stplIds, $ps->studienplan_id); - } - } - } + foreach ($prestudent->result as $ps) + { + if ($ps->getLaststatus($ps->prestudent_id)) + { + if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) + { + array_push($stplIds, $ps->studienplan_id); + } + } + } - $lv = new lehrveranstaltung(); - if($lv->getLVkompatibelTo($lvid, $stplIds)) - { - $data['result']=$lv->lehrveranstaltungen; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['result']=""; - $data['error']='true'; - $data['errormsg']=$lv->errormsg; - } - return $data; + $lv = new lehrveranstaltung(); + if($lv->getLVkompatibelTo($lvid, $stplIds)) + { + $data['result']=$lv->lehrveranstaltungen; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['result']=""; + $data['error']='true'; + $data['errormsg']=$lv->errormsg; + } + return $data; } function getPrestudenten($uid, $aktStudiensemester) { - $person = new person(); - $person->getPersonFromBenutzer($uid); - $prestudent = new prestudent(); - $prestudent->getPrestudenten($person->person_id); - $result = array(); + $person = new person(); + $person->getPersonFromBenutzer($uid); + $prestudent = new prestudent(); + $prestudent->getPrestudenten($person->person_id); + $result = array(); - if (count($prestudent->result) > 0) - { - foreach ($prestudent->result as $key=>$ps) - { - if ($ps->getLaststatus($ps->prestudent_id)) - { - if(($ps->status_kurzbz === 'Student') || ($ps->status_kurzbz == 'Unterbrecher')) - { - $studiengang = new studiengang($ps->studiengang_kz); - array_push($result, $studiengang); - } - } - } + if (count($prestudent->result) > 0) + { + foreach ($prestudent->result as $key=>$ps) + { + if ($ps->getLaststatus($ps->prestudent_id)) + { + if(($ps->status_kurzbz === 'Student') || ($ps->status_kurzbz == 'Unterbrecher')) + { + $studiengang = new studiengang($ps->studiengang_kz); + array_push($result, $studiengang); + } + } + } - $data['result']=$result; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['result']=""; - $data['error']='true'; - $data['errormsg']=$lv->errormsg; - } + $data['result']=$result; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['result']=""; + $data['error']='true'; + $data['errormsg']=$lv->errormsg; + } - return $data; + return $data; } ?> diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.php b/cis/private/lehre/pruefung/pruefungsanmeldung.php index 71b427cf2..cd3b49621 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldung.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldung.php @@ -1,4 +1,3 @@ - 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(); -?> +?> - - - Prüfungsanmeldung - - - - - - - - - - - - - - - + + + + + + + + + + + + + + -

t('pruefung/anmeldungFuer'); ?> vorname." ".$benutzer->nachname." (".$uid.")"; ?>

+ }); '.$p->t('pruefung/filter').''; - echo '

'.$p->t('global/studiensemester').': '; - echo ''; + $aktuellesSemester = $studiensemester->getaktorNext(); + foreach ($studiensemester->studiensemester as $sem) + { + if ($aktuellesSemester == $sem->studiensemester_kurzbz) { - echo ''; + echo ''; } else { - echo ''; + echo ''; } - } - echo '

'; - - ?> -
-
+ } + echo '

'; +?> +
+

t('pruefung/lvDetails'); ?>

- t('global/bezeichnung'); ?>:
+ t('global/bezeichnung'); ?>:
t('global/ects'); ?>:
-
+
-
+

t('pruefung/pruefungsDetails'); ?>

- t('pruefung/typ'); ?>:
- t('pruefung/pruefungMethode'); ?>:
- t('global/beschreibung'); ?>:
-
+ t('pruefung/typ'); ?>:
+ t('pruefung/pruefungMethode'); ?>:
+ t('global/beschreibung'); ?>:
+

-
-
-
- + +
+ + -
-
+
+
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  - - -
t('global/lehrveranstaltung'); ?>: - -
t('global/von'); ?>: - - -
t('global/bis'); ?>: - -
t('pruefung/studienverpflichtung'); ?>:* - -
t('global/anmerkung'); ?>: - -
  + + +
+ t('global/lehrveranstaltung'); ?>: + + +
+ t('global/von'); ?>: + + +
+ t('global/bis'); ?>: + + +
+ t('pruefung/studienverpflichtung'); ?>:* + + +
+ t('global/anmerkung'); ?>: + + +
- -
-
-
- + +
+
+
+ + diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.pdf.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.pdf.php index 9e8bfd891..c2e0672e8 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.pdf.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.pdf.php @@ -17,6 +17,11 @@ * * Authors: Manfred Kindl */ + /** + * 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'); } diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php index a3485de46..0a35ba284 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php @@ -1,4 +1,3 @@ - getBerechtigungen($uid); -?> +?> - - - - - - - - - + +
-
-

t('pruefung/anmeldungsliste'); ?>

+
+

t('pruefung/anmeldungsliste'); ?>

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; } - ?> - t('global/lehrveranstaltung'); ?>: bezeichnung?>
- t('global/studiensemester'); ?>: bezeichnung?>
- t('pruefung/pruefer'); ?>: getFullName(FALSE)?>
- + ?> + t('global/lehrveranstaltung'); ?>: bezeichnung?>
+ t('global/studiensemester'); ?>: bezeichnung?>
+ t('pruefung/pruefer'); ?>: getFullName(FALSE)?>
+
- + @@ -234,31 +233,31 @@ $rechte->getBerechtigungen($uid); - + - 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 ''; + } + echo ''; echo ''; echo ''; echo ''; @@ -266,22 +265,24 @@ $rechte->getBerechtigungen($uid); echo ''; echo ''; echo ''; - echo ''; + echo ''; } - ?> + ?> - t('pruefung/keineBestaetigtenAnmeldungenVorhanden'); ?>
+ -
# t('global/vorname'); ?> t('global/nachname'); ?>t('global/datum'); ?> t('benotungstool/note'); ?> t('global/anmerkung'); ?>
'.$count.''.$student->vorname.''.$student->nachname.''.$date.'
+
@@ -295,7 +296,7 @@ $rechte->getBerechtigungen($uid); - + - + diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php index e4cbcfecc..21de64fcc 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php @@ -1,4 +1,3 @@ -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'); -?> +?> - - - <?php echo $p->t('pruefung/anmeldungenVerwaltenTitle'); ?> - - - + + + <?php echo $p->t('pruefung/anmeldungenVerwaltenTitle'); ?> + + + + + - - - - - - - - - + +

t('pruefung/anmeldungenVerwalten'); ?>

-
+
-

t('global/studiengang'); ?>

-
+

t('global/studiengang'); ?>

+
-
+
-

t('global/studiensemester'); ?>

- t('global/studiensemester'); ?> + '; $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 ''; - } - else - { + } + else + { echo ''; - } + } } - echo '

'; + echo '

'; ?>
-
+
-
+

t('pruefung/pruefungPruefungenTitle'); ?>

-
+
-
+

t('pruefung/pruefungsbewertungAnmeldungen'); ?>

@@ -300,17 +303,17 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
-
+
-
-
+
+
-
+
+
-
- + diff --git a/cis/private/lehre/pruefung/pruefungsbewertung.js b/cis/private/lehre/pruefung/pruefungsbewertung.js deleted file mode 100644 index 6d2900866..000000000 --- a/cis/private/lehre/pruefung/pruefungsbewertung.js +++ /dev/null @@ -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 - */ - -/** - * 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 += "
  • "+e.bezeichnung+"
      "; - e.pruefung.lehrveranstaltungen.forEach(function(d) - { - d.pruefung.termine.forEach(function(f){ - liste += "
    • "+convertDateTime(f.von)+"
    • "; - }); - }) - liste += "
    "; - }); - $("#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 = ""; - } - 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 = "
    "+d.student.vorname+" "+d.student.nachname+"
    "+notenSelect+"
    "; - } - else - { - entry = "
    "+d.student.vorname+" "+d.student.nachname+"
    "+notenSelect+"
    "; - } - $("#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 = "
    Keine Anmeldungen vorhanden.
    "; - $("#anmeldeDaten").html(entry); - } - } - else - { - entry = "
    "+data.errormsg+"
    "; - $("#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"); -} diff --git a/cis/private/lehre/pruefung/pruefungsbewertung.js.php b/cis/private/lehre/pruefung/pruefungsbewertung.js.php index f5871cd9c..dd92a874a 100644 --- a/cis/private/lehre/pruefung/pruefungsbewertung.js.php +++ b/cis/private/lehre/pruefung/pruefungsbewertung.js.php @@ -1,5 +1,4 @@ */ - - 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("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 += "
  • "+convertDateTime(f.von)+"
  • "; + liste += "
  • "+convertDateTime(f.von)+"
  • "; }); }) liste += ""; @@ -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 = "
    "+d.student.vorname+" "+d.student.nachname+"
    "+notenSelect+"'/>
    ' />
    "; + entry = "
    "; + entry = entry+"
    "+d.student.vorname+" "+d.student.nachname+"
    " + entry = entry+notenSelect; + entry = entry+"' />"; + entry = entry+"'/>"; + entry = entry+"
    "; } else { - entry = "
    "+d.student.vorname+" "+d.student.nachname+"
    "+notenSelect+"'/>
    ' value='"+d.pruefung.anmerkung+"' />
    "; + entry = "
    "; + entry = entry+"
    "+d.student.vorname+" "+d.student.nachname+"
    "; + entry = entry+notenSelect; + entry = entry+"' value='"+d.pruefung.anmerkung+"' />"; + entry = entry+"'/>"; + entry = entry+"
    "; } $("#anmeldeDaten").append(entry); if(d.pruefung.note!==null) @@ -173,7 +177,7 @@ function showTeilnehmer(pruefungstermin_id, lehrveranstaltung_id, lehrveranstalt entry = "
    "+data.errormsg+"
    "; $("#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){ }); } diff --git a/cis/private/lehre/pruefung/pruefungsbewertung.json.php b/cis/private/lehre/pruefung/pruefungsbewertung.json.php index 6e5aad377..c2f3e37f7 100644 --- a/cis/private/lehre/pruefung/pruefungsbewertung.json.php +++ b/cis/private/lehre/pruefung/pruefungsbewertung.json.php @@ -1,4 +1,22 @@ + */ 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; } diff --git a/cis/private/lehre/pruefung/pruefungsbewertung.php b/cis/private/lehre/pruefung/pruefungsbewertung.php index 112567bd0..be282b4a6 100644 --- a/cis/private/lehre/pruefung/pruefungsbewertung.php +++ b/cis/private/lehre/pruefung/pruefungsbewertung.php @@ -1,4 +1,3 @@ - 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'); -?> +?> - - - Prüfungsbewertung - - - - - + + + Prüfungsbewertung + + + + + + + - - - - - + + + + + + - - + + +
    -

    t('pruefung/pruefungsbewertungTitle'); ?>

    -
    +

    t('pruefung/pruefungsbewertungTitle'); ?>

    +
    isBerechtigt('lehre/pruefungsbeurteilungAdmin')) + if (!$rechte->isBerechtigt('lehre/pruefungsbeurteilungAdmin')) { - echo ' - '; + '; } else { - echo ''.$p->t('pruefung/pruefungLektor').': '; - echo ''; - echo ''; - echo ''; + echo ''.$p->t('pruefung/pruefungLektor').': '; + echo ''; + echo ''; + echo ''; } - ?> -
    -
    -
    -
    -

    t('pruefung/pruefungPruefungenTitle'); ?>

    -
      - -
    -
    + ?>
    -
    -
    -

    t('pruefung/pruefungsbewertungAnmeldungen'); ?>

    -
    - +
    +
    +
    +

    t('pruefung/pruefungPruefungenTitle'); ?>

    +
      +
    +
    +
    +
    +
    +

    t('pruefung/pruefungsbewertungAnmeldungen'); ?>

    +
    + +
    +
    -
    -
    - - -
    -
    -
    +
    +
    +
    - + diff --git a/cis/private/lehre/pruefung/pruefungsfenster_anlegen.php b/cis/private/lehre/pruefung/pruefungsfenster_anlegen.php index f504a08c0..64f7c5cdb 100644 --- a/cis/private/lehre/pruefung/pruefungsfenster_anlegen.php +++ b/cis/private/lehre/pruefung/pruefungsfenster_anlegen.php @@ -1,4 +1,3 @@ - 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; } -?> +?> - - - <?php echo $p->t('pruefung/titlePruefungsfenster') ?> - - - + + + <?php echo $p->t('pruefung/titlePruefungsfenster') ?> + + + + + - - - - - - - - + + + + + + + + + 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") { ?> -

    t('pruefung/pruefungsfensterVerwaltung'); ?>

    -

    t('pruefung/neuesPruefungsfensterAnlegen'); ?>

    -
    -
    -
    - - - - - - - - - - + + + + + + + + + + + + +
    t('global/studiensemester'); ?>: - -
    t('global/organisationseinheit'); ?>: - + + + + + + + + + + - - - - - - - - - - - - -
    t('global/studiensemester'); ?>: + +
    t('global/organisationseinheit'); ?>: + -
    t('pruefung/start'); ?>:
    t('pruefung/ende'); ?>:
    - - - oe_kurzbz.'">'.$result->organisationseinheittyp_kurzbz.' '.$result->bezeichnung.''; + } + ?> + +
    t('pruefung/start'); ?>:
    t('pruefung/ende'); ?>:
    + +
    + -

    t('pruefung/pruefungsfensterVerwaltung'); ?>

    -

    t('pruefung/pruefungsfensterBearbeiten'); ?>

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    t('global/studiensemester'); ?>: - -
    t('global/organisationseinheit'); ?>: - -
    t('pruefung/start'); ?>:
    t('pruefung/ende'); ?>:
    -
    -
    - +

    t('pruefung/pruefungsfensterVerwaltung'); ?>

    +

    t('pruefung/pruefungsfensterBearbeiten'); ?>

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    t('global/studiensemester'); ?>: + +
    t('global/organisationseinheit'); ?>: + +
    t('pruefung/start'); ?>:
    t('pruefung/ende'); ?>:
    +
    +
    + -

    t('pruefung/pruefungsfensterBearbeiten'); ?>

    -
    - result)){ + ?> +

    t('pruefung/pruefungsfensterBearbeiten'); ?>

    +
    + result)){ - ?> - - - - - - - - - - - - - result as $result) - { - if(in_array($result->oe_kurzbz, $oe)) - { - $organisationseinheit->load($result->oe_kurzbz); - echo - ' - - - - - - - '; - } - } - ?> - -
    t('global/studiensemester'); ?>t('global/organisationseinheit'); ?>t('pruefung/start'); ?>t('pruefung/ende'); ?>t('global/bearbeiten'); ?>t('global/loeschen'); ?>
    '.$result->studiensemester_kurzbz.''.$organisationseinheit->organisationseinheittyp_kurzbz." ".$organisationseinheit->bezeichnung.''.$result->start.''.$result->ende.''.$p->t('global/bearbeiten').''. $p->t('global/loeschen').'
    - - '.$p->t('pruefung/keinePruefungsfensterGespeichert').' - '; - } - ?> -
    + ?> + + + + + + + + + + + + + result as $result) + { + if(in_array($result->oe_kurzbz, $oe)) + { + $organisationseinheit->load($result->oe_kurzbz); + echo + ' + + + + + + + '; + } + } + ?> + +
    t('global/studiensemester'); ?>t('global/organisationseinheit'); ?>t('pruefung/start'); ?>t('pruefung/ende'); ?>t('global/bearbeiten'); ?>t('global/loeschen'); ?>
    '.$result->studiensemester_kurzbz.''.$organisationseinheit->organisationseinheittyp_kurzbz." ".$organisationseinheit->bezeichnung.''.$result->start.''.$result->ende.''.$p->t('global/bearbeiten').''. $p->t('global/loeschen').'
    + + '.$p->t('pruefung/keinePruefungsfensterGespeichert').' + '; + } + ?> +
    - + diff --git a/cis/private/lehre/pruefung/pruefungstermin.json.php b/cis/private/lehre/pruefung/pruefungstermin.json.php index 5960fe5c2..36ca332bd 100644 --- a/cis/private/lehre/pruefung/pruefungstermin.json.php +++ b/cis/private/lehre/pruefung/pruefungstermin.json.php @@ -1,4 +1,26 @@ + * Andreas Österreicher + */ header( 'Expires: -1' ); header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); header( 'Cache-Control: no-store, no-cache, must-revalidate' ); @@ -33,149 +55,148 @@ $method = isset($_REQUEST['method'])?$_REQUEST['method']:''; switch($method) { - case 'loadPruefungstypen': - $data = loadPruefungstypen("false"); - break; - case 'loadStudiensemester': - $studiensemester = new studiensemester(); - $aktStudiensemester = $studiensemester->getaktorNext(); - $data = loadStudiensemester($aktStudiensemester); - break; - case 'getPruefungsfensterByStudiensemester': - $studiensemester = new studiensemester(); - $aktStudiensemester = $studiensemester->getaktorNext(); - $studiensemester_kurzbz = isset($_REQUEST["studiensemester_kurzbz"]) ? $_REQUEST["studiensemester_kurzbz"] : $aktStudiensemester; - $data = getPruefungsfensterByStudiensemester($studiensemester_kurzbz, $aktStudiensemester); - break; - case 'savePruefungstermin': - $studiensemester_kurzbz = isset($_POST["studiensemester_kurzbz"])?$_POST["studiensemester_kurzbz"]:null; - $pruefungsfenster_id = isset($_POST["pruefungsfenster_id"])?$_POST["pruefungsfenster_id"]:null; - $pruefungstyp_kurzbz = isset($_POST["pruefungstyp_kurzbz"])?$_POST["pruefungstyp_kurzbz"]:null; - $titel = isset($_POST["titel"])?$_POST["titel"]:null; - $beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null; - $methode = isset($_POST["methode"])?$_POST["methode"]:null; - $einzeln = (isset($_POST["einzeln"]) && $_POST["einzeln"] ==="true")?true:false; - $lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null; - $termine = isset($_POST["termine"])?$_POST["termine"]:null; - $pruefungsintervall = NULL; - if(isset($_REQUEST["pruefungsintervall"]) && ($_REQUEST["pruefungsintervall"] !== "false")) - { - $pruefungsintervall = $_REQUEST["pruefungsintervall"]; - } - if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) - { - $mitarbeiter_uid = $_REQUEST["mitarbeiter_uid"]; - } - else if($rechte->isBerechtigt('lehre/pruefungstermin')) - { - $mitarbeiter_uid = $uid; - } - else - { - $data['result']='false'; - $data['error']='true'; - $data['errormsg']=$p->t('global/keineBerechtigung'); - break; - } - $data = savePruefungstermin($mitarbeiter_uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $pruefungsintervall); - break; - case 'getLehrveranstaltungenByMitarbeiter': - $mitarbeiter_uid = $_POST["mitarbeiter_uid"]; - $studiensemester_kurzbz = $_POST["studiensemester_kurzbz"]; - $data = getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz); - break; - case 'updatePruefungstermin': - $pruefung_id = isset($_POST["pruefung_id"])?$_POST["pruefung_id"]:null; - $studiensemester_kurzbz = isset($_POST["studiensemester_kurzbz"])?$_POST["studiensemester_kurzbz"]:null; - $pruefungsfenster_id = isset($_POST["pruefungsfenster_id"])?$_POST["pruefungsfenster_id"]:null; - $pruefungstyp_kurzbz = isset($_POST["pruefungstyp_kurzbz"])?$_POST["pruefungstyp_kurzbz"]:null; - $titel = isset($_POST["titel"])?$_POST["titel"]:null; - $beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null; - $methode = isset($_POST["methode"])?$_POST["methode"]:null; - $einzeln = (isset($_POST["einzeln"]) && $_POST["einzeln"] ==="true")?true:false; - $lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null; - $termine = isset($_POST["termine"])?$_POST["termine"]:null; - $termineNeu = isset($_POST["termineNeu"])?$_POST["termineNeu"]:null; - $pruefungsintervall = NULL; - if((isset($_REQUEST["pruefungsintervall"]) && $_REQUEST["pruefungsintervall"] !== false)) - { - $pruefungsintervall = $_REQUEST["pruefungsintervall"]; - } - if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) - { - $mitarbeiter_uid = $_REQUEST["mitarbeiter_uid"]; - } - else if($rechte->isBerechtigt('lehre/pruefungstermin')) - { - $mitarbeiter_uid = $uid; - } - else - { - $data['result']='false'; - $data['error']='true'; - $data['errormsg']=$p->t('global/keineBerechtigung'); - break; - } - $data = updatePruefungstermin($mitarbeiter_uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu, $pruefungsintervall); - break; - case 'deleteLehrveranstaltungFromPruefung': - if(!($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) && !($rechte->isBerechtigt('lehre/pruefungstermin'))) - { - $data['result']='false'; - $data['error']='true'; - $data['errormsg']=$p->t('global/keineBerechtigung'); - break; - } - $lvId = $_POST["lehrveranstaltung_id"]; - $pruefung_id = $_POST["pruefung_id"]; - $data = deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id); - break; - case 'stornoPruefung': - if(!($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) && !($rechte->isBerechtigt('lehre/pruefungstermin'))) - { - $data['result']='false'; - $data['error']='true'; - $data['errormsg']=$p->t('global/keineBerechtigung'); - break; - } - $pruefung_id = $_REQUEST["pruefung_id"]; - $data = stornoPruefung($pruefung_id); - break; - case 'deleteTermin': - if(!($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) && !($rechte->isBerechtigt('lehre/pruefungstermin'))) - { - $data['result']='false'; - $data['error']='true'; - $data['errormsg']=$p->t('global/keineBerechtigung'); - break; - } - $pruefung_id = $_REQUEST["pruefung_id"]; - $pruefungstermin_id = $_REQUEST["pruefungstermin_id"]; - $data = deleteTermin($pruefung_id, $pruefungstermin_id); - break; - case 'getAllPruefungen': - if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) - { - $data = getAllPruefungen($_REQUEST["uid"]); - } - else if($rechte->isBerechtigt('lehre/pruefungstermin')) - { - $data = getAllPruefungen($uid); - } - else - { - $data['result']='false'; - $data['error']='true'; - $data['errormsg']=$p->t('global/keineBerechtigung'); - break; - } - break; - default: - break; + case 'loadPruefungstypen': + $data = loadPruefungstypen("false"); + break; + case 'loadStudiensemester': + $studiensemester = new studiensemester(); + $aktStudiensemester = $studiensemester->getaktorNext(); + $data = loadStudiensemester($aktStudiensemester); + break; + case 'getPruefungsfensterByStudiensemester': + $studiensemester = new studiensemester(); + $aktStudiensemester = $studiensemester->getaktorNext(); + $studiensemester_kurzbz = isset($_REQUEST["studiensemester_kurzbz"]) ? $_REQUEST["studiensemester_kurzbz"] : $aktStudiensemester; + $data = getPruefungsfensterByStudiensemester($studiensemester_kurzbz, $aktStudiensemester); + break; + case 'savePruefungstermin': + $studiensemester_kurzbz = isset($_POST["studiensemester_kurzbz"])?$_POST["studiensemester_kurzbz"]:null; + $pruefungsfenster_id = isset($_POST["pruefungsfenster_id"])?$_POST["pruefungsfenster_id"]:null; + $pruefungstyp_kurzbz = isset($_POST["pruefungstyp_kurzbz"])?$_POST["pruefungstyp_kurzbz"]:null; + $titel = isset($_POST["titel"])?$_POST["titel"]:null; + $beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null; + $methode = isset($_POST["methode"])?$_POST["methode"]:null; + $einzeln = (isset($_POST["einzeln"]) && $_POST["einzeln"] ==="true")?true:false; + $lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null; + $termine = isset($_POST["termine"])?$_POST["termine"]:null; + $pruefungsintervall = NULL; + if(isset($_REQUEST["pruefungsintervall"]) && ($_REQUEST["pruefungsintervall"] !== "false")) + { + $pruefungsintervall = $_REQUEST["pruefungsintervall"]; + } + if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) + { + $mitarbeiter_uid = $_REQUEST["mitarbeiter_uid"]; + } + else if($rechte->isBerechtigt('lehre/pruefungstermin')) + { + $mitarbeiter_uid = $uid; + } + else + { + $data['result']='false'; + $data['error']='true'; + $data['errormsg']=$p->t('global/keineBerechtigung'); + break; + } + $data = savePruefungstermin($mitarbeiter_uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $pruefungsintervall); + break; + case 'getLehrveranstaltungenByMitarbeiter': + $mitarbeiter_uid = $_POST["mitarbeiter_uid"]; + $studiensemester_kurzbz = $_POST["studiensemester_kurzbz"]; + $data = getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz); + break; + case 'updatePruefungstermin': + $pruefung_id = isset($_POST["pruefung_id"])?$_POST["pruefung_id"]:null; + $studiensemester_kurzbz = isset($_POST["studiensemester_kurzbz"])?$_POST["studiensemester_kurzbz"]:null; + $pruefungsfenster_id = isset($_POST["pruefungsfenster_id"])?$_POST["pruefungsfenster_id"]:null; + $pruefungstyp_kurzbz = isset($_POST["pruefungstyp_kurzbz"])?$_POST["pruefungstyp_kurzbz"]:null; + $titel = isset($_POST["titel"])?$_POST["titel"]:null; + $beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null; + $methode = isset($_POST["methode"])?$_POST["methode"]:null; + $einzeln = (isset($_POST["einzeln"]) && $_POST["einzeln"] ==="true")?true:false; + $lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null; + $termine = isset($_POST["termine"])?$_POST["termine"]:null; + $termineNeu = isset($_POST["termineNeu"])?$_POST["termineNeu"]:null; + $pruefungsintervall = NULL; + if((isset($_REQUEST["pruefungsintervall"]) && $_REQUEST["pruefungsintervall"] !== false)) + { + $pruefungsintervall = $_REQUEST["pruefungsintervall"]; + } + if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) + { + $mitarbeiter_uid = $_REQUEST["mitarbeiter_uid"]; + } + else if($rechte->isBerechtigt('lehre/pruefungstermin')) + { + $mitarbeiter_uid = $uid; + } + else + { + $data['result']='false'; + $data['error']='true'; + $data['errormsg']=$p->t('global/keineBerechtigung'); + break; + } + $data = updatePruefungstermin($mitarbeiter_uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu, $pruefungsintervall); + break; + case 'deleteLehrveranstaltungFromPruefung': + if(!($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) && !($rechte->isBerechtigt('lehre/pruefungstermin'))) + { + $data['result']='false'; + $data['error']='true'; + $data['errormsg']=$p->t('global/keineBerechtigung'); + break; + } + $lvId = $_POST["lehrveranstaltung_id"]; + $pruefung_id = $_POST["pruefung_id"]; + $data = deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id); + break; + case 'stornoPruefung': + if(!($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) && !($rechte->isBerechtigt('lehre/pruefungstermin'))) + { + $data['result']='false'; + $data['error']='true'; + $data['errormsg']=$p->t('global/keineBerechtigung'); + break; + } + $pruefung_id = $_REQUEST["pruefung_id"]; + $data = stornoPruefung($pruefung_id); + break; + case 'deleteTermin': + if(!($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) && !($rechte->isBerechtigt('lehre/pruefungstermin'))) + { + $data['result']='false'; + $data['error']='true'; + $data['errormsg']=$p->t('global/keineBerechtigung'); + break; + } + $pruefung_id = $_REQUEST["pruefung_id"]; + $pruefungstermin_id = $_REQUEST["pruefungstermin_id"]; + $data = deleteTermin($pruefung_id, $pruefungstermin_id); + break; + case 'getAllPruefungen': + if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) + { + $data = getAllPruefungen($_REQUEST["uid"]); + } + else if($rechte->isBerechtigt('lehre/pruefungstermin')) + { + $data = getAllPruefungen($uid); + } + else + { + $data['result']='false'; + $data['error']='true'; + $data['errormsg']=$p->t('global/keineBerechtigung'); + break; + } + break; + default: + break; } echo json_encode($data); - /** * Lädt alle Prüfungstypen aus der Datenbank * @param boolean $abschluss Gibt an ob Prüfungstypen einer Abschlussprüfunge geladen werden sollen oder nicht @@ -183,20 +204,20 @@ echo json_encode($data); */ function loadPruefungstypen($abschluss) { - $pruefungstermin = new pruefungstermin(); - $pruefungstypen = $pruefungstermin->getAllPruefungstypen($abschluss); - if(!empty($pruefungstypen)) - { - $data['result']=$pruefungstypen; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefungstermin->errormsg; - } - return $data; + $pruefungstermin = new pruefungstermin(); + $pruefungstypen = $pruefungstermin->getAllPruefungstypen($abschluss); + if(!empty($pruefungstypen)) + { + $data['result']=$pruefungstypen; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefungstermin->errormsg; + } + return $data; } /** @@ -206,23 +227,23 @@ function loadPruefungstypen($abschluss) */ function loadStudiensemester($aktStudiensemester = null) { - $studiensemester = new studiensemester(); - if($studiensemester->getAll()) - { - $data['result']=$studiensemester->studiensemester; - if(!is_null($aktStudiensemester)) + $studiensemester = new studiensemester(); + if($studiensemester->getAll()) { - $data['aktSem']=$aktStudiensemester; + $data['result']=$studiensemester->studiensemester; + if(!is_null($aktStudiensemester)) + { + $data['aktSem']=$aktStudiensemester; + } + $data['error']='false'; + $data['errormsg']=''; } - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$studiensemester->errormsg; - } - return $data; + else + { + $data['error']='true'; + $data['errormsg']=$studiensemester->errormsg; + } + return $data; } /** @@ -232,19 +253,19 @@ function loadStudiensemester($aktStudiensemester = null) */ function getPruefungsfensterByStudiensemester($studiensemester_kurzbz) { - $pruefungsfenster = new pruefungsfenster(); - if($pruefungsfenster->getByStudiensemester($studiensemester_kurzbz)) - { - $data['result']=$pruefungsfenster->result; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefungsfenster->errormsg; - } - return $data; + $pruefungsfenster = new pruefungsfenster(); + if($pruefungsfenster->getByStudiensemester($studiensemester_kurzbz)) + { + $data['result']=$pruefungsfenster->result; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefungsfenster->errormsg; + } + return $data; } /** @@ -264,100 +285,93 @@ function getPruefungsfensterByStudiensemester($studiensemester_kurzbz) function savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $pruefungsintervall) { global $p; - if($lehrveranstaltungen === null) - { - $data['error']='true'; - $data['errormsg']=$p->t('pruefung/keineLvAngegeben'); - return $data; - } - $termineArray = array(); - foreach ($termine as $key => $t) { - $termin = new stdClass(); - $date = $t["datum"]; - $beginn = $t["beginn"]; - $ende = $t["ende"]; - $termin->min = $t["min"]; - $termin->max = $t["max"]; - $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); - $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); - $termin->sammelklausur = $t["sammelklausur"]; - //Termin soll auch außerhalb eines Prüfungsfensters angelegt werden können -// if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) -// { - if(!(checkCollision($uid, $termin->beginn, $termin->ende))) - { - array_push($termineArray, $termin); - } - else - { - $data['error']='true'; - $data['errormsg']=$p->t('pruefung/kollisionMitAnderemTermin'); - return $data; - } -// } -// else -// { -// $data['error']='true'; -// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; -// return $data; -// } - } - - $pruefung = new pruefungCis(); - $pruefung->termine = $termineArray; - $pruefung->mitarbeiter_uid = $uid; - $pruefung->studiensemester_kurzbz = $studiensemester_kurzbz; - $pruefung->pruefungsfenster_id = $pruefungsfenster_id; - $pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz; - $pruefung->titel = $titel; - $pruefung->beschreibung = $beschreibung; - $pruefung->methode = $methode; - $pruefung->einzeln = $einzeln; - $pruefung->insertvon = get_uid(); - $pruefung->pruefungsintervall = $pruefungsintervall; - - foreach ($lehrveranstaltungen as $lv) { - if($lv != "null") + if($lehrveranstaltungen === null) { - array_push($pruefung->lehrveranstaltungen, $lv); + $data['error']='true'; + $data['errormsg']=$p->t('pruefung/keineLvAngegeben'); + return $data; } - } + $termineArray = array(); + foreach ($termine as $key => $t) + { + $termin = new stdClass(); + $date = $t["datum"]; + $beginn = $t["beginn"]; + $ende = $t["ende"]; + $termin->min = $t["min"]; + $termin->max = $t["max"]; + $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); + $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); + $termin->sammelklausur = $t["sammelklausur"]; - if($pruefung->save(true)) - { - $data['result']="true"; - $data['error']='false'; - $data['errormsg']=''; + if(!(checkCollision($uid, $termin->beginn, $termin->ende))) + { + array_push($termineArray, $termin); + } + else + { + $data['error']='true'; + $data['errormsg']=$p->t('pruefung/kollisionMitAnderemTermin'); + return $data; + } + } + + $pruefung = new pruefungCis(); + $pruefung->termine = $termineArray; + $pruefung->mitarbeiter_uid = $uid; + $pruefung->studiensemester_kurzbz = $studiensemester_kurzbz; + $pruefung->pruefungsfenster_id = $pruefungsfenster_id; + $pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz; + $pruefung->titel = $titel; + $pruefung->beschreibung = $beschreibung; + $pruefung->methode = $methode; + $pruefung->einzeln = $einzeln; + $pruefung->insertvon = get_uid(); + $pruefung->pruefungsintervall = $pruefungsintervall; + + foreach ($lehrveranstaltungen as $lv) + { + if($lv != "null") + { + array_push($pruefung->lehrveranstaltungen, $lv); + } + } + + if($pruefung->save(true)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; //TODO Mail-Inhalt fehlt -// foreach ($pruefung->lehrveranstaltungen as $lvId) -// { -// $lv = new lehrveranstaltung($lvId); -// $text = "Ein Prüfungstermin zu Ihrer Lehrveranstaltung ".$lv->bezeichnung." wurde angelegt.\n" -// . "Die Prüfung kann am " -// .date('d.m.Y', strtotime($pruefung->termine[0]->beginn))." " -// . "in der Zeit von " -// .date('H:i', strtotime($pruefung->termine[0]->beginn))." bis " -// .date('H:i', strtotime($pruefung->termine[0]->ende))." abgelegt werden."; -// //$text = "test"; -// $empfaenger = $lv->getStudentsOfLv($lvId, $pruefung->studiensemester_kurzbz); -// $mailto = ""; -// foreach ($empfaenger as $e) { -// $mailto .= $e.'@'.DOMAIN.', '; -// } +// foreach ($pruefung->lehrveranstaltungen as $lvId) +// { +// $lv = new lehrveranstaltung($lvId); +// $text = "Ein Prüfungstermin zu Ihrer Lehrveranstaltung ".$lv->bezeichnung." wurde angelegt.\n" +// . "Die Prüfung kann am " +// .date('d.m.Y', strtotime($pruefung->termine[0]->beginn))." " +// . "in der Zeit von " +// .date('H:i', strtotime($pruefung->termine[0]->beginn))." bis " +// .date('H:i', strtotime($pruefung->termine[0]->ende))." abgelegt werden."; +// //$text = "test"; +// $empfaenger = $lv->getStudentsOfLv($lvId, $pruefung->studiensemester_kurzbz); +// $mailto = ""; +// foreach ($empfaenger as $e) { +// $mailto .= $e.'@'.DOMAIN.', '; +// } // -// $email = new mail($mailto, "fhcomplete", "Prüfungstermin für ".$lv->bezeichnung, $text); -// $email->setReplyTo($uid."@".DOMAIN); -//// var_dump($email); -// $email->send(); -// } - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; +// $email = new mail($mailto, "fhcomplete", "Prüfungstermin für ".$lv->bezeichnung, $text); +// $email->setReplyTo($uid."@".DOMAIN); +//// var_dump($email); +// $email->send(); +// } + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; } /** @@ -368,25 +382,25 @@ function savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id */ function getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz) { - $lehrveranstaltung = new lehrveranstaltung(); - if($lehrveranstaltung->getLVByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz)) - { - $stg = new studiengang(); - foreach($lehrveranstaltung->lehrveranstaltungen as $key=>$lv) + $lehrveranstaltung = new lehrveranstaltung(); + if($lehrveranstaltung->getLVByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz)) { - $stg->load($lv->studiengang_kz); - $lv->studiengang_bezeichnung = $stg->kurzbzlang; + $stg = new studiengang(); + foreach($lehrveranstaltung->lehrveranstaltungen as $key=>$lv) + { + $stg->load($lv->studiengang_kz); + $lv->studiengang_bezeichnung = $stg->kurzbzlang; + } + $data['result']=$lehrveranstaltung->lehrveranstaltungen; + $data['error']='false'; + $data['errormsg']=''; } - $data['result']=$lehrveranstaltung->lehrveranstaltungen; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$lehrveranstaltung->errormsg; - } - return $data; + else + { + $data['error']='true'; + $data['errormsg']=$lehrveranstaltung->errormsg; + } + return $data; } /** @@ -407,118 +421,102 @@ function getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_ function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu, $pruefungsintervall) { global $p; - $pruefungsfenster = new pruefungsfenster(); - $pruefungsfenster->load($pruefungsfenster_id); - $datum = new datum(); - $pruefung = new pruefungCis(); - $pruefung->load($pruefung_id); + $pruefungsfenster = new pruefungsfenster(); + $pruefungsfenster->load($pruefungsfenster_id); + $datum = new datum(); + $pruefung = new pruefungCis(); + $pruefung->load($pruefung_id); - if($termineNeu !== null) - { - $termineNeuArray = array(); - foreach ($termineNeu as $key => $t) { - $termin = new stdClass(); - $datum = new datum(); - $date = $t["datum"]; - $beginn = $t["beginn"]; - $ende = $t["ende"]; - $termin->min = $t["min"]; - $termin->max = $t["max"]; - $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); - $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); - $termin->sammelklausur = $t["sammelklausur"]; -// if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) -// { - if(!(checkCollision($uid, $termin->beginn, $termin->ende))) + if($termineNeu !== null) + { + $termineNeuArray = array(); + foreach ($termineNeu as $key => $t) { - array_push($termineNeuArray, $termin); + $termin = new stdClass(); + $datum = new datum(); + $date = $t["datum"]; + $beginn = $t["beginn"]; + $ende = $t["ende"]; + $termin->min = $t["min"]; + $termin->max = $t["max"]; + $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); + $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); + $termin->sammelklausur = $t["sammelklausur"]; + + if(!(checkCollision($uid, $termin->beginn, $termin->ende))) + { + array_push($termineNeuArray, $termin); + } + else + { + $data['error']='true'; + $data['errormsg']=$p->t('pruefung/kollisionMitAnderemTermin'); + return $data; + } } - else + foreach ($termineNeuArray as $t) { - $data['error']='true'; - $data['errormsg']=$p->t('pruefung/kollisionMitAnderemTermin'); - return $data; + $pruefung->saveTerminPruefung($pruefung_id, $t->beginn, $t->ende, $t->max, $t->min, $t->sammelklausur); } -// } -// else -// { -// $data['error']='true'; -// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; -// return $data; -// } } - foreach ($termineNeuArray as $t) - { - $pruefung->saveTerminPruefung($pruefung_id, $t->beginn, $t->ende, $t->max, $t->min, $t->sammelklausur); - } - } - if($termine !== null) - { - $termineArray = array(); - foreach ($termine as $key => $t) { - $termin = new stdClass(); - $datum = new datum(); - $date = $t["datum"]; - $beginn = $t["beginn"]; - $ende = $t["ende"]; - $termin->pruefungstermin_id = $t["pruefungstermin_id"]; - $termin->min = $t["min"]; - $termin->max = ($t["max"] === "null") ? NULL : $t["max"]; - $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); - $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); -// if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) -// { -// array_push($termineArray, $termin); -// } -// else -// { -// $data['error']='true'; -// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; -// return $data; -// } - } - foreach($termineArray as $key=>$t) + if($termine !== null) { - $termineArray[$key] = (object) $t; + $termineArray = array(); + foreach ($termine as $key => $t) + { + $termin = new stdClass(); + $datum = new datum(); + $date = $t["datum"]; + $beginn = $t["beginn"]; + $ende = $t["ende"]; + $termin->pruefungstermin_id = $t["pruefungstermin_id"]; + $termin->min = $t["min"]; + $termin->max = ($t["max"] === "null") ? NULL : $t["max"]; + $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); + $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); + } + foreach($termineArray as $key=>$t) + { + $termineArray[$key] = (object) $t; + } + $pruefung->termine = $termineArray; } - $pruefung->termine = $termineArray; - } - $pruefung->mitarbeiter_uid = $uid; - $pruefung->studiensemester_kurzbz = $studiensemester_kurzbz; - $pruefung->pruefungsfenster_id = $pruefungsfenster_id; - $pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz; - $pruefung->titel = $titel; - $pruefung->beschreibung = $beschreibung; - $pruefung->methode = $methode; - $pruefung->einzeln = $einzeln; - $pruefung->updatevon = get_uid(); - $pruefung->pruefungsintervall = $pruefungsintervall; - if($lehrveranstaltungen !== null) - { - foreach ($lehrveranstaltungen as $lv) + $pruefung->mitarbeiter_uid = $uid; + $pruefung->studiensemester_kurzbz = $studiensemester_kurzbz; + $pruefung->pruefungsfenster_id = $pruefungsfenster_id; + $pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz; + $pruefung->titel = $titel; + $pruefung->beschreibung = $beschreibung; + $pruefung->methode = $methode; + $pruefung->einzeln = $einzeln; + $pruefung->updatevon = get_uid(); + $pruefung->pruefungsintervall = $pruefungsintervall; + if($lehrveranstaltungen !== null) { - if($lv != "null") - { - array_push($pruefung->lehrveranstaltungen, $lv); - } + foreach ($lehrveranstaltungen as $lv) + { + if($lv != "null") + { + array_push($pruefung->lehrveranstaltungen, $lv); + } + } } - } - if($pruefung->save(false)) - { - $data['result']="true"; - $data['error']='false'; - $data['errormsg']=''; + if($pruefung->save(false)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; - //TODO Mail-Inhalt fehlt - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; + //TODO Mail-Inhalt fehlt + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; } /** @@ -529,20 +527,20 @@ function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pru */ function deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id) { - $pruefung = new pruefungCis(); - $pruefung->load($pruefung_id); - if($pruefung->deleteLehrveranstaltungPruefung($lvId, $pruefung_id)) - { - $data['result']="true"; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; + $pruefung = new pruefungCis(); + $pruefung->load($pruefung_id); + if($pruefung->deleteLehrveranstaltungPruefung($lvId, $pruefung_id)) + { + $data['result']='true'; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; } /** @@ -552,19 +550,19 @@ function deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id) */ function stornoPruefung($pruefung_id) { - $pruefung = new pruefungCis(); - if($pruefung->pruefungStornieren($pruefung_id)) - { - $data['result']="true"; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; + $pruefung = new pruefungCis(); + if($pruefung->pruefungStornieren($pruefung_id)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; } /** @@ -575,20 +573,20 @@ function stornoPruefung($pruefung_id) */ function deleteTermin($pruefung_id, $pruefungstermin_id) { - $pruefung = new pruefungCis(); - $pruefung->load($pruefung_id); - if($pruefung->deleteTerminPruefung($pruefungstermin_id)) - { - $data['result']="true"; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; + $pruefung = new pruefungCis(); + $pruefung->load($pruefung_id); + if($pruefung->deleteTerminPruefung($pruefungstermin_id)) + { + $data['result']='true'; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; } /** @@ -598,30 +596,30 @@ function deleteTermin($pruefung_id, $pruefungstermin_id) */ function getAllPruefungen($mitarbeiter_uid) { - $pruefung = new pruefungCis(); - if($pruefung->getAllPruefungen($mitarbeiter_uid)) - { - foreach ($pruefung->result as $prf) + $pruefung = new pruefungCis(); + if($pruefung->getAllPruefungen($mitarbeiter_uid)) { - $prf->getLehrveranstaltungenByPruefung(); - foreach($prf->lehrveranstaltungen as $key=>$lv) - { - $temp = new lehrveranstaltung($lv->lehrveranstaltung_id); - $array = $temp->cleanResult(); - $prf->lehrveranstaltungen[$key] = $array[0]; - } - $prf->getTermineByPruefung(); + foreach ($pruefung->result as $prf) + { + $prf->getLehrveranstaltungenByPruefung(); + foreach($prf->lehrveranstaltungen as $key=>$lv) + { + $temp = new lehrveranstaltung($lv->lehrveranstaltung_id); + $array = $temp->cleanResult(); + $prf->lehrveranstaltungen[$key] = $array[0]; + } + $prf->getTermineByPruefung(); + } + $data['result']=$pruefung->result; + $data['error']='false'; + $data['errormsg']=''; } - $data['result']=$pruefung->result; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; } /** @@ -632,13 +630,13 @@ function getAllPruefungen($mitarbeiter_uid) */ function checkTerminPruefungsfenster($pruefungsfenster_id, $datum) { - $pruefungsfenster = new pruefungsfenster($pruefungsfenster_id); - $date = new datum(); - if($date->between($pruefungsfenster->start, $pruefungsfenster->ende, $datum)) - { - return true; - } - return false; + $pruefungsfenster = new pruefungsfenster($pruefungsfenster_id); + $date = new datum(); + if($date->between($pruefungsfenster->start, $pruefungsfenster->ende, $datum)) + { + return true; + } + return false; } /** @@ -650,25 +648,25 @@ function checkTerminPruefungsfenster($pruefungsfenster_id, $datum) */ function checkCollision($uid, $beginn, $ende) { - $collision = false; - $pruefung = new pruefungCis(); - $pruefung->getAllPruefungen($uid); - $datum = new datum(); - foreach($pruefung->result as $prf) - { - $prf->getTermineByPruefung(); - foreach($prf->termine as $termin) + $collision = false; + $pruefung = new pruefungCis(); + $pruefung->getAllPruefungen($uid); + $datum = new datum(); + foreach($pruefung->result as $prf) { - if(($datum->between($termin->von, $termin->bis, $beginn)) || ($datum->between($termin->von, $termin->bis, $ende))) - { - $collision = true; - } + $prf->getTermineByPruefung(); + foreach($prf->termine as $termin) + { + if(($datum->between($termin->von, $termin->bis, $beginn)) || ($datum->between($termin->von, $termin->bis, $ende))) + { + $collision = true; + } + } } - } - if($collision) - { - return true; - } - return false; + if($collision) + { + return true; + } + return false; } ?> diff --git a/cis/private/lehre/pruefung/pruefungstermin_aendern.php b/cis/private/lehre/pruefung/pruefungstermin_aendern.php index 756d0c05b..bde0bb764 100644 --- a/cis/private/lehre/pruefung/pruefungstermin_aendern.php +++ b/cis/private/lehre/pruefung/pruefungstermin_aendern.php @@ -1,4 +1,3 @@ - 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.'
    '; } -?> +?> - - - <?php echo $p->t('pruefung/titlePruefungstermin'); ?> - - - - - - - - - - + + + <?php echo $p->t('pruefung/titlePruefungstermin'); ?> + + + + + + + + + + + + + - - + +
    @@ -220,5 +222,5 @@ foreach ($anmeldungen as $row)
    - + diff --git a/cis/private/lehre/pruefung/pruefungstermin_festlegen.php b/cis/private/lehre/pruefung/pruefungstermin_festlegen.php index 20e1717ef..e6f708d97 100644 --- a/cis/private/lehre/pruefung/pruefungstermin_festlegen.php +++ b/cis/private/lehre/pruefung/pruefungstermin_festlegen.php @@ -1,4 +1,3 @@ - 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'); -?> +?> - - - <?php echo $p->t('pruefung/titlePruefungstermin'); ?> - - - - - - - - - - + + + <?php echo $p->t('pruefung/titlePruefungstermin'); ?> + + + + + + + + + + + + + - - - -
    -

    t('pruefung/pruefungenVerwalten'); ?>

    - + + + +
    +

    t('pruefung/pruefungenVerwalten'); ?>

    +
    + + isBerechtigt('lehre/pruefungsterminAdmin')) + { + echo ' + '; + } + else + { + echo ''; + echo ''; + echo ''; + echo ''; + } + ?> + +
    '.$p->t('pruefung/pruefungLektor').':
    +
    + + - isBerechtigt('lehre/pruefungsterminAdmin')) - { - echo ' - '; - } - else - { - echo ''; - echo ''; - echo ''; - echo ''; - } - ?> - -
    '.$p->t('pruefung/pruefungLektor').':
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - -
    t('pruefung/pruefungTitel'); ?>: - -
    t('global/beschreibung'); ?>: - -
    t('global/studiensemester'); ?>: - -
    t('pruefung/pruefungsfenster'); ?>: - -
    t('pruefung/pruefungMethode'); ?>:
    t('pruefung/pruefungEinzelpruefung'); ?>:
    t('pruefung/pruefungIntervall'); ?>:t('pruefung/pruefungTitel'); ?>: - +
    t('global/beschreibung'); ?>: + +
    t('global/studiensemester'); ?>: + +
    t('pruefung/pruefungsfenster'); ?>: + +
    t('pruefung/pruefungMethode'); ?>: + +
    t('pruefung/pruefungEinzelpruefung'); ?>:
    t('pruefung/pruefungIntervall'); ?>: + +
    t('global/lehrveranstaltung'); ?>: -
    -
    -
    -
    t('pruefung/pruefungTermin'); ?>: -
    - - - - - - - - - - - - - - - - - - - - - - - -
    t('global/datum'); ?>t('global/von'); ?>t('global/bis'); ?>t('pruefung/pruefungMinTeilnehmer'); ?>t('pruefung/pruefungMaxTeilnehmer'); ?>t('pruefung/pruefungSammelklausur'); ?>
    - - - - - - - - - - - - - -
    -
    - t('pruefung/pruefungTerminHinzufuegen'); ?> -
     
    -
    -
    -
    -

    t('pruefung/pruefungPruefungenTitle'); ?>

    -
    - - - - - - - - - - - - - - - + + + + + + + + + + + + +
    t('pruefung/pruefungTitel'); ?>t('global/studiensemester'); ?>t('global/lehrveranstaltung'); ?>t('pruefung/pruefungTermin'); ?>t('pruefung/pruefungMethode'); ?>t('pruefung/pruefungTyp'); ?>t('pruefung/pruefungEinzelpruefung'); ?>t('pruefung/pruefungMitarbeiter'); ?>t('pruefung/storniert'); ?>
    t('global/lehrveranstaltung'); ?>: +
    +
    +
    +
    t('pruefung/pruefungTermin'); ?>: +
    + t('pruefung/TerminVorlaufzeit',array($terminfrist)); + ?> + + + + + + + + + + + + + + + + + + + + + + +
    t('global/datum'); ?>t('global/von'); ?>t('global/bis'); ?>t('pruefung/pruefungMinTeilnehmer'); ?>t('pruefung/pruefungMaxTeilnehmer'); ?>t('pruefung/pruefungSammelklausur'); ?>
    + + + + + + + + + + + +
    +
    + t('pruefung/pruefungTerminHinzufuegen'); ?> +
     
    + +
    +
    +

    t('pruefung/pruefungPruefungenTitle'); ?>

    +
    + + + + + + + + + + + + + + - -
    t('pruefung/pruefungTitel'); ?>t('global/studiensemester'); ?>t('global/lehrveranstaltung'); ?>t('pruefung/pruefungTermin'); ?>t('pruefung/pruefungMethode'); ?>t('pruefung/pruefungEinzelpruefung'); ?>t('pruefung/pruefungMitarbeiter'); ?>t('pruefung/storniert'); ?>
    -
    -
    -
    -
    - + + +
    +
    +
    +
    + diff --git a/content/student/studentprojektarbeit.js.php b/content/student/studentprojektarbeit.js.php index 5898ac730..2c9e4f8b0 100644 --- a/content/student/studentprojektarbeit.js.php +++ b/content/student/studentprojektarbeit.js.php @@ -1098,7 +1098,7 @@ function StudentProjektbetreuerLoadMitarbeiterDaten() // **** function StudentProjektbetreuerNeuePerson() { - window.open('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('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'); } // **** diff --git a/locale/de-AT/pruefung.php b/locale/de-AT/pruefung.php index 5ab429cc6..5062881b3 100644 --- a/locale/de-AT/pruefung.php +++ b/locale/de-AT/pruefung.php @@ -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:
    '; +$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!'; ?> diff --git a/locale/en-US/pruefung.php b/locale/en-US/pruefung.php index 01c743ff7..69d8127d0 100644 --- a/locale/en-US/pruefung.php +++ b/locale/en-US/pruefung.php @@ -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:
    '; +$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!'; ?> diff --git a/public/css/FilterWidget.css b/public/css/FilterWidget.css index 6afe36177..3d72b0b2f 100644 --- a/public/css/FilterWidget.css +++ b/public/css/FilterWidget.css @@ -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; -} diff --git a/public/css/sbadmin2/admintemplate.css b/public/css/sbadmin2/admintemplate.css index e47fdd3b2..a0064e5c2 100644 --- a/public/css/sbadmin2/admintemplate.css +++ b/public/css/sbadmin2/admintemplate.css @@ -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 */ } diff --git a/public/js/AjaxLib.js b/public/js/AjaxLib.js index abd079635..bd2b22689 100644 --- a/public/js/AjaxLib.js +++ b/public/js/AjaxLib.js @@ -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 diff --git a/public/js/FilterWidget.js b/public/js/FilterWidget.js index 004f4ddac..c96a06590 100644 --- a/public/js/FilterWidget.js +++ b/public/js/FilterWidget.js @@ -10,741 +10,878 @@ */ /** - * Global function used by MavigationWidget JS + * Global function used by NavigationWidget JS to bind events to side menu elements */ function sideMenuHook() { - $(".remove-filter").click(function() { - // + $(".remove-custom-filter").click(function() { + + // Ajax call to remove a custom filter FHC_AjaxClient.ajaxCallPost( - 'system/Filters/deleteCustomFilter', + "system/Filters/removeCustomFilter", { - filter_id: $(this).attr('value') + filter_id: $(this).attr("value"), // filter_id of the filter to be removed + filter_page: FHC_FilterWidget.getFilterPage() }, { - successCallback: refreshSideMenu // NOTE: to be checked + successCallback: function(data, textStatus, jqXHR) { + + if (FHC_AjaxClient.isError(data)) + { + console.log(FHC_AjaxClient.getError(data)); + } + else + { + // If a success and refreshSideMenu is a valid function then call it to refresh the side menu + if (typeof refreshSideMenu == "function") + { + refreshSideMenu(); + } + } + } } ); }); } /** - * FHC_FilterWidget + * FHC_FilterWidget this object is used to render the GUI of a filter widget and to operate with it */ var FHC_FilterWidget = { //------------------------------------------------------------------------------------------------------------------ // Public methods /** - * + * To display the FilterWidget using the loaded data prenset in the session */ - renderSelectedFields: function() { - // - FHC_AjaxClient.ajaxCallGet( - 'system/Filters/selectFields', - { - filter_page: FHC_FilterWidget._getFilterPage() - }, - { - successCallback: function(data, textStatus, jqXHR) { + display: function() { - FHC_FilterWidget._resetEventsSF(); - - if (data != null) - { - var arrayFieldsToDisplay = []; - - if (data.columnsAliases != null && $.isArray(data.columnsAliases)) - { - arrayFieldsToDisplay = data.columnsAliases; - } - else if (data.selectedFields != null && $.isArray(data.selectedFields)) - { - arrayFieldsToDisplay = data.selectedFields; - } - - for (var i = 0; i < arrayFieldsToDisplay.length; i++) - { - var fieldToDisplay = arrayFieldsToDisplay[i]; - var fieldName = data.selectedFields[i]; - - var strHtml = ''; - - strHtml += ''; - strHtml += fieldToDisplay; - strHtml += ''; - strHtml += ' X '; - strHtml += ''; - $("#filterSelectFieldsDnd").append(strHtml); - } - - var strDropDown = ''; - $("#addField").append(strDropDown); - - if (data.allSelectedFields != null) - { - for (var i = 0; i < data.allSelectedFields.length; i++) - { - var fieldName = data.allSelectedFields[i]; - var fieldToDisplay = data.allSelectedFields[i]; - - if (data.selectedFields.indexOf(fieldName) < 0) - { - if (data.allColumnsAliases != null && $.isArray(data.allColumnsAliases)) - { - fieldToDisplay = data.allColumnsAliases[i]; - } - - strDropDown = ''; - $("#addField").append(strDropDown); - } - } - } - } - - FHC_FilterWidget._dndSF(); - FHC_FilterWidget._addEventsSF(); - } - } - ); + FHC_FilterWidget._getFilter(FHC_FilterWidget._renderFilterWidget); }, /** - * + * Alias call to method display only to inprove the readability of the code */ - renderSelectedFilters: function() { - // - FHC_AjaxClient.ajaxCallGet( - 'system/Filters/selectFilters', - { - filter_page: FHC_FilterWidget._getFilterPage() - }, - { - successCallback: function(data, textStatus, jqXHR) { + refresh: function() { - FHC_FilterWidget._resetEventsSFilters(); - - if (data != null) - { - var strDropDown = ''; - $("#addFilter").append(strDropDown); - - if (data.selectedFilters != null) - { - for (var i = 0; i < data.selectedFilters.length; i++) - { - var selectedFilters = '
    '; - - selectedFilters += ''; - selectedFilters += data.selectedFiltersAliases[i]; - selectedFilters += ''; - - selectedFilters += FHC_FilterWidget._getSelectedFilterFields( - data.selectedFiltersMetaData[i], - data.selectedFiltersActiveFilters[i], - data.selectedFiltersActiveFiltersOperation[i], - data.selectedFiltersActiveFiltersOption[i] - ); - - selectedFilters += ''; - selectedFilters += ''; - selectedFilters += ''; - - selectedFilters += '
    '; - - $("#selectedFilters").append(selectedFilters); - } - } - - if (data.allSelectedFields != null) - { - for (var i = 0; i < data.allSelectedFields.length; i++) - { - var fieldName = data.allSelectedFields[i]; - var fieldToDisplay = data.allSelectedFields[i]; - - if (data.selectedFilters.indexOf(fieldName) < 0) - { - if (data.allColumnsAliases != null && $.isArray(data.allColumnsAliases)) - { - fieldToDisplay = data.allColumnsAliases[i]; - } - - strDropDown = ''; - $("#addFilter").append(strDropDown); - } - } - } - } - - FHC_FilterWidget._addEventsSFilters(); - } - } - ); + FHC_FilterWidget.display(); }, /** - * + * To retrive the page where the FilterWidget is used, using the FHC_JS_DATA_STORAGE_OBJECT */ - renderTableDataset: function() { - // - FHC_AjaxClient.ajaxCallGet( - 'system/Filters/tableDataset', - { - filter_page: FHC_FilterWidget._getFilterPage() - }, - { - successCallback: function(data, textStatus, jqXHR) { + getFilterPage: function() { - FHC_FilterWidget._resetTableDataset(); - - if (data != null) - { - if (data.checkboxes != null) - { - $("#filterTableDataset > thead > tr").append("Select"); - } - - var arrayFieldsToDisplay = []; - - if (data.columnsAliases != null && $.isArray(data.columnsAliases) && data.columnsAliases.length > 0) - { - arrayFieldsToDisplay = data.columnsAliases; - } - else if (data.selectedFields != null && $.isArray(data.selectedFields)) - { - arrayFieldsToDisplay = data.selectedFields; - } - - /* ------------------------------------------------------------------------------------------------ */ - if (data.checkboxes != null && data.checkboxes != "") - { - $("#filterTableDataset > thead > tr").html("Select"); - } - - for (var i = 0; i < arrayFieldsToDisplay.length; i++) - { - var th = arrayFieldsToDisplay[i]; - - $("#filterTableDataset > thead > tr").append("" + th + ""); - } - - if (data.additionalColumns != null && $.isArray(data.additionalColumns)) - { - for (var i = 0; i < data.additionalColumns.length; i++) - { - var th = data.additionalColumns[i]; - - $("#filterTableDataset > thead > tr").append("" + th + ""); - } - } - /* ------------------------------------------------------------------------------------------------ */ - - if (arrayFieldsToDisplay.length > 0) - { - if (data.dataset != null && $.isArray(data.dataset)) - { - for (var i = 0; i < data.dataset.length; i++) - { - var record = data.dataset[i]; - var strHtml = ''; - - if (data.checkboxes != null && data.checkboxes != "") - { - strHtml += ''; - strHtml += ''; - strHtml += ''; - } - - $.each(arrayFieldsToDisplay, function(i, fieldToDisplay) { - - if (record.hasOwnProperty(data.selectedFields[i])) - { - strHtml += '' + record[data.selectedFields[i]] + ''; - } - }); - - if (data.additionalColumns != null && $.isArray(data.additionalColumns)) - { - $.each(data.additionalColumns, function(i, additionalColumn) { - - if (record.hasOwnProperty(additionalColumn)) - { - strHtml += '' + record[additionalColumn] + ''; - } - - }); - } - - strHtml += ''; - - $("#filterTableDataset > tbody").append(strHtml); - } - } - else - { - // console.log("No dataset!!!"); - } - } - else - { - // console.log("No fields to display!!!"); - } - } - else - { - console.log("No data!!!"); - } - - FHC_FilterWidget._callTableSorter(); - - } - } - ); + return FHC_JS_DATA_STORAGE_OBJECT.called_path + "/" + FHC_JS_DATA_STORAGE_OBJECT.called_method; }, //------------------------------------------------------------------------------------------------------------------ // Private methods /** - * + * Utility method that checks if data contains an error and print that to the console + * otherwise the FilterWidget GUI is refreshed */ - _dndSF: function() { - $(".filter-select-field-dnd-span").draggable({ - containment: "parent", - cursor: "move", - opacity: 0.4, - revert: "invalid", - revertDuration: 200, - drag: function(event, ui) { + _failOrRefresh: function(data, textStatus, jqXHR) { - var padding = 20; - var draggedElement = $(this); - - $(".filter-select-field-dnd-span").each(function(i, e) { - - if ($(this).attr('id') != draggedElement.attr('id')) - { - $(this).removeClass("selection-after"); - $(this).removeClass("selection-before"); - - var elementCenter = $(this).offset().left + ((padding + $(this).width()) / 2); - - if (event.pageX > ($(this).offset().left - (padding / 2)) - && event.pageX < ($(this).offset().left + $(this).width() + (padding / 2))) - { - if (event.pageX > elementCenter) - { - $(this).addClass("selection-after"); - $(this).removeClass("selection-before"); - } - else if (event.pageX < elementCenter) - { - $(this).addClass("selection-before"); - $(this).removeClass("selection-after"); - } - } - } - - }); - - } - }); - - $(".filter-select-field-dnd-span").droppable({ - accept: ".filter-select-field-dnd-span", - drop: function(event, ui) { - - var padding = 20; - var elementCenter = $(this).offset().left + ((padding + $(this).width()) / 2); - var draggedElement = ui.helper; - - if (event.pageX > elementCenter) - { - draggedElement.insertAfter($(this)); - } - else if (event.pageX < elementCenter) - { - draggedElement.insertBefore($(this)); - } - - $(this).removeClass("selection-before"); - $(this).removeClass("selection-after"); - - draggedElement.css({left: '0px', top: '10px'}); - - var arrayDndId = []; - - $(".filter-select-field-dnd-span").each(function(i, e) { - - arrayDndId[i] = $(this).attr('id').replace('dnd', ''); - - }); - - // - FHC_AjaxClient.ajaxCallPost( - 'system/Filters/sortSelectedFields', - { - selectedFieldsLst: arrayDndId, - filter_page: FHC_FilterWidget._getFilterPage() - }, - { - successCallback: function(data, textStatus, jqXHR) { - FHC_FilterWidget._resetSelectedFields(); - - FHC_FilterWidget.renderSelectedFields(); - FHC_FilterWidget.renderTableDataset(); - } - } - ); - } - }); - }, - - /** - * - */ - _resetEventsSF: function() { - $("#addField").off('change'); - $(".remove-field").off('click'); - }, - - /** - * - */ - _addEventsSF: function() { - $("#addField").change(function(event) { - // - FHC_AjaxClient.ajaxCallPost( - 'system/Filters/addSelectedFields', - { - fieldName: $(this).val(), - filter_page: FHC_FilterWidget._getFilterPage() - }, - { - successCallback: function(data, textStatus, jqXHR) { - FHC_FilterWidget._resetSelectedFields(); - - FHC_FilterWidget.renderSelectedFields(); - FHC_FilterWidget.renderTableDataset(); - } - } - ); - }); - - $(".remove-field").click(function(event) { - // - FHC_AjaxClient.ajaxCallPost( - 'system/Filters/removeSelectedFields', - { - fieldName: $(this).attr('fieldToRemove'), - filter_page: FHC_FilterWidget._getFilterPage() - }, - { - successCallback: function(data, textStatus, jqXHR) { - FHC_FilterWidget._resetSelectedFields(); - - FHC_FilterWidget.renderSelectedFields(); - FHC_FilterWidget.renderTableDataset(); - } - } - ); - }); - }, - - /** - * - */ - _resetSelectedFields: function() { - $("#filterSelectFieldsDnd").html(""); - $("#addField").html(""); - }, - - /** - * - */ - _resetEventsSFilters: function() { - $("#addFilter").off('change'); - }, - - /** - * - */ - _addEventsSFilters: function() { - $("#addFilter").change(function(event) { - // - FHC_AjaxClient.ajaxCallPost( - 'system/Filters/addSelectedFilters', - { - fieldName: $(this).val(), - filter_page: FHC_FilterWidget._getFilterPage() - }, - { - successCallback: function(data, textStatus, jqXHR) { - FHC_FilterWidget._resetSelectedFilters(); - - FHC_FilterWidget.renderSelectedFilters(); - FHC_FilterWidget.renderTableDataset(); - } - } - ); - }); - - $(".select-filter-operation").change(function() { - - if ($(this).val() == "set" || $(this).val() == "nset") - { - $(this).parent().parent().find(".select-filter-operation-value").addClass("hidden-control"); - $(this).parent().parent().find(".select-filter-option").addClass("hidden-control"); - - $(this).parent().parent().find(".select-filter-operation-value").prop('disabled', true); - $(this).parent().parent().find(".select-filter-option").prop('disabled', true); - } - else - { - $(this).parent().parent().find(".select-filter-operation-value").removeClass("hidden-control"); - $(this).parent().parent().find(".select-filter-option").removeClass("hidden-control"); - - $(this).parent().parent().find(".select-filter-operation-value").prop('disabled', false); - $(this).parent().parent().find(".select-filter-option").prop('disabled', false); - } - - }); - - $("#applyFilter").click(function() { - - var selectFilterName = []; - var selectFilterOperation = []; - var selectFilterOperationValue = []; - var selectFilterOption = []; - - $("#selectedFilters > div").each(function(i, e) { - var tmpSelectFilterName = $(this).find('.hidden-field-name').val(); - var tmpSelectFilterOperation = $(this).find('.select-filter-operation').val(); - var tmpSelectFilterOperationValue = $(this).find('.select-filter-operation-value:enabled').val(); - var tmpSelectFilterOption = $(this).find('.select-filter-option:enabled').val(); - - selectFilterName.push(tmpSelectFilterName); - selectFilterOperation.push(tmpSelectFilterOperation); - selectFilterOperationValue.push(tmpSelectFilterOperationValue != null ? tmpSelectFilterOperationValue : ""); - selectFilterOption.push(tmpSelectFilterOption != null ? tmpSelectFilterOption : ""); - }); - - // - FHC_AjaxClient.ajaxCallPost( - 'system/Filters/applyFilter', - { - filterNames: selectFilterName, - filterOperations: selectFilterOperation, - filterOperationValues: selectFilterOperationValue, - filterOptions: selectFilterOption, - filter_page: FHC_FilterWidget._getFilterPage() - }, - { - successCallback: function(data, textStatus, jqXHR) { - FHC_FilterWidget._resetSelectedFilters(); - - location.reload(); - } - } - ); - }); - - $(".remove-selected-filter").click(function(event) { - // - FHC_AjaxClient.ajaxCallPost( - 'system/Filters/removeSelectedFilters', - { - fieldName: $(this).attr('filterToRemove'), - filter_page: FHC_FilterWidget._getFilterPage() - }, - { - successCallback: function(data, textStatus, jqXHR) { - FHC_FilterWidget._resetSelectedFilters(); - - location.reload(); - } - } - ); - }); - - }, - - /** - * - */ - _getSelectedFilterFields: function(metaData, activeFilters, activeFiltersOperation, activeFiltersOption) { - var html = ''; - - if (metaData.type.toLowerCase().indexOf("int") >= 0) + if (FHC_AjaxClient.isError(data)) { - html = ''; - html += ' '; - html += ''; - html += ''; - html += ' '; - html += ''; + console.log(FHC_AjaxClient.getError(data)); } - if (metaData.type.toLowerCase().indexOf('varchar') >= 0 || metaData.type.toLowerCase() == 'text') + else { - html = ''; - html += ' '; - html += ''; - html += ''; - html += ' '; - html += ''; - } - if (metaData.type.toLowerCase().indexOf('bool') >= 0) - { - html = ''; - html += ' '; - html += ''; - html += ''; - html += ' '; - html += ''; - } - if (metaData.type.toLowerCase().indexOf('timestamp') >= 0 || metaData.type.toLowerCase().indexOf('date') >= 0) - { - var classOperation = 'form-control select-filter-operation-value'; - var classOption = 'form-control select-filter-option'; - var disabled = ""; - - if (activeFiltersOperation == "set" || activeFiltersOperation == "nset") - { - classOperation += ' hidden-control'; - classOption += ' hidden-control'; - disabled = "disabled"; - } - - html = ''; - html += ' '; - html += ''; - html += ''; - html += ' '; - html += ''; - html += ''; - html += ' '; - html += ''; - } - - html += ''; - html += ' '; - html += ''; - - return html; - }, - - /** - * - */ - _resetSelectedFilters: function() { - $("#addFilter").html(""); - $("#selectedFilters").html(""); - }, - - /** - * - */ - _callTableSorter: function() { - // Checks if the table contains data (rows) - if ($('#filterTableDataset').find('tbody:empty').length == 0 - && $('#filterTableDataset').find('tr:empty').length == 0 - && $('#filterTableDataset').hasClass('table-condensed')) - { - $("#filterTableDataset").tablesorter({ - widgets: ["zebra", "filter"] - }); - - var config = $('#filterTableDataset')[0].config; - $.tablesorter.updateAll(config, true, null); + FHC_FilterWidget.refresh(); } }, /** - * + * Utility method that checks if data contains an error and print that to the console + * otherwise the page is reloaded */ - _resetTableDataset: function() { + _failOrReload: function(data, textStatus, jqXHR) { + + if (FHC_AjaxClient.isError(data)) + { + console.log(FHC_AjaxClient.getError(data)); + } + else + { + location.reload(); + } + }, + + /** + * To reset the Filter Options GUI + */ + _resetGUI: function() { + + $("#dragAndDropFieldsArea").html(""); + $("#addField").html(""); + $("#appliedFilters").html(""); + $("#addFilter").html(""); $("#filterTableDataset > thead > tr").html(""); $("#filterTableDataset > tbody").html(""); }, /** - * + * To get via Ajax all the data related to the FilterWidget present in the given page + * If the parameter renderFunction is a valid function, is called on success */ - _getFilterPage: function() { - return FHC_JS_DATA_STORAGE_OBJECT.called_path + "/" + FHC_JS_DATA_STORAGE_OBJECT.called_method; - } -}; + _getFilter: function(renderFunction) { + FHC_AjaxClient.ajaxCallGet( + "system/Filters/getFilter", + { + filter_page: FHC_FilterWidget.getFilterPage() + }, + { + successCallback: function(data, textStatus, jqXHR) { + if (FHC_AjaxClient.hasData(data) && typeof renderFunction == "function") + { + renderFunction(FHC_AjaxClient.getData(data)); + } + } + } + ); + }, + + /** + * This method calls all the other methods needed to rendere the GUI for a FilterWidget + * The parameter data contains all the data about the FilterWidget and it is given as parameter + * to all the methods that here are called + * NOTE: think very carefully before changing the order of the calls + */ + _renderFilterWidget: function(data) { + + FHC_FilterWidget._initSessionStorage(); // initialize the session storage + FHC_FilterWidget._turnOffEvents(); // turns all the events off + FHC_FilterWidget._resetGUI(); // Reset the entire GUI + + // Render the GUI for this FilterWidget + FHC_FilterWidget._setFilterName(data); // set the name in the GUI + FHC_FilterWidget._renderDragAndDropFields(data); // render the fields drag and drop GUI + FHC_FilterWidget._renderDropDownFields(data); // render the fields drop-down + FHC_FilterWidget._renderAppliedFilters(data); // render the GUI for the applied filters + FHC_FilterWidget._renderDropDownFilters(data); // render the filters drop-down + FHC_FilterWidget._renderTableDataset(data); // render the table GUI + + FHC_FilterWidget._turnOnEvents(); // turns all the events off + }, + + /** + * Initialize the session storage + */ + _initSessionStorage: function() { + + // If the browser supports storage + if (typeof(Storage) !== "undefined") + { + // Checks if the "filter-options-status" is present in the session storage and if is equal to "open" + if (sessionStorage.getItem("filter-options-status") && sessionStorage.getItem("filter-options-status") == "open") + { + $(".collapse").collapse("show"); // then open the filter options panel + } + else + { + sessionStorage.setItem("filter-options-status", "closed"); // otherwise set "filter-options-status" to "close" + } + } + }, + + /** + * Turns all the events off + * NOTE: must be aligned to _turnOnEvents + */ + _turnOffEvents: function() { + + $("[data-toggle='collapse']").off("click"); + $(".drag-and-drop-fields-span").off("draggable"); + $(".drag-and-drop-fields-span").off("droppable"); + $(".remove-selected-field").off("click"); + $("#addField").off("change"); + $(".applied-filter-operation").off("change"); + $(".remove-applied-filter").off("click"); + $("#addFilter").off("change"); + $("#applyFilter").off("click"); + $("#saveCustomFilterButton").off("click"); + FHC_FilterWidget._disableTableSorter(); + }, + + /** + * Turns all the events on + * NOTE: must be aligned to _turnOffEvents + */ + _turnOnEvents: function() { + + $("[data-toggle='collapse']").click(FHC_FilterWidget._dataToggleCollapseEvent); // Click event to collapse or to open the filter options panel + $(".drag-and-drop-fields-span").draggable(FHC_FilterWidget._draggableConf); // draggable event on selected fields + $(".drag-and-drop-fields-span").droppable(FHC_FilterWidget._droppableConf); // droppable event on selected fields + $(".remove-selected-field").click(FHC_FilterWidget._revomeSelectedFieldsEvent); // Click event on the "X" link + $("#addField").change(FHC_FilterWidget._addFieldEvent); // Change event on the fields drop-down to add new fields + $(".applied-filter-operation").change(FHC_FilterWidget._appliedFiltersOperationsEvent); // Change event on the operation drop-down + $(".remove-applied-filter").click(FHC_FilterWidget._removeAppliedFiltersEvent); // Click event to the "X" button to remove an applied filter + $("#addFilter").change(FHC_FilterWidget._addFilterEvent); // Click event on the applied filters drop-down to add a new filter to the dataset + $("#applyFilter").click(FHC_FilterWidget._applyFilterEvent); // Click event on the applied filters drop-down to apply filters to the dataset + $("#saveCustomFilterButton").click(FHC_FilterWidget._saveCustomFilterButtonEvent); // Click evento to for the save custom filter button + FHC_FilterWidget._enableTableSorter(); // enable the tablesorter + }, + + /** + * Configuration object used by draggable event on selected fields + */ + _draggableConf: { + containment: "parent", + cursor: "move", + opacity: 0.4, + revert: "invalid", + revertDuration: 200, + drag: function(event, ui) { + + var padding = 20; + var draggedElement = $(this); + + $(".drag-and-drop-fields-span").each(function(i, e) { + + if ($(this).attr("id") != draggedElement.attr("id")) + { + $(this).removeClass("selection-after"); + $(this).removeClass("selection-before"); + + var elementCenter = $(this).offset().left + ((padding + $(this).width()) / 2); + + if (event.pageX > ($(this).offset().left - (padding / 2)) + && event.pageX < ($(this).offset().left + $(this).width() + (padding / 2))) + { + if (event.pageX > elementCenter) + { + $(this).addClass("selection-after"); + $(this).removeClass("selection-before"); + } + else if (event.pageX < elementCenter) + { + $(this).addClass("selection-before"); + $(this).removeClass("selection-after"); + } + } + } + + }); + + } + }, + + /** + * Configuration object used by droppable event on selected fields + */ + _droppableConf: { + accept: ".drag-and-drop-fields-span", + drop: function(event, ui) { + + var padding = 20; + var elementCenter = $(this).offset().left + ((padding + $(this).width()) / 2); + var draggedElement = ui.helper; + + if (event.pageX > elementCenter) + { + draggedElement.insertAfter($(this)); + } + else if (event.pageX < elementCenter) + { + draggedElement.insertBefore($(this)); + } + + $(this).removeClass("selection-before"); + $(this).removeClass("selection-after"); + + draggedElement.css({left: "0px", top: "10px"}); + + var arrayDndId = []; + + $(".drag-and-drop-fields-span").each(function(i, e) { + + arrayDndId[i] = $(this).attr("id").replace("dnd", ""); + + }); + + FHC_AjaxClient.ajaxCallPost( + "system/Filters/sortSelectedFields", + { + selectedFields: arrayDndId, + filter_page: FHC_FilterWidget.getFilterPage() + }, + { + successCallback: function(data, textStatus, jqXHR) { + FHC_FilterWidget._cleanTablesorterLocalStorage(); + FHC_FilterWidget._failOrRefresh(data, textStatus, jqXHR); + } + } + ); + } + }, + + /** + * Event function used to remove selected fields + */ + _revomeSelectedFieldsEvent: function(event) { + + FHC_AjaxClient.ajaxCallPost( + "system/Filters/removeSelectedField", + { + selectedField: $(this).attr("fieldToRemove"), + filter_page: FHC_FilterWidget.getFilterPage() + }, + { + successCallback: function(data, textStatus, jqXHR) { + FHC_FilterWidget._failOrRefresh(data, textStatus, jqXHR); + } + } + ); + }, + + /** + * Event function used by the applied filter operation drop-down to hide others element when thery are not needed + */ + _appliedFiltersOperationsEvent: function(event) { + + if ($(this).val() == "set" || $(this).val() == "nset") + { + $(this).parent().parent().find(".applied-filter-condition").addClass("hidden-control"); + $(this).parent().parent().find(".applied-filter-option").addClass("hidden-control"); + $(this).parent().parent().find(".applied-filter-condition").prop("disabled", true); + $(this).parent().parent().find(".applied-filter-option").prop("disabled", true); + } + else + { + $(this).parent().parent().find(".applied-filter-condition").removeClass("hidden-control"); + $(this).parent().parent().find(".applied-filter-option").removeClass("hidden-control"); + $(this).parent().parent().find(".applied-filter-condition").prop("disabled", false); + $(this).parent().parent().find(".applied-filter-option").prop("disabled", false); + } + }, + + /** + * Event function used by the add field drop-down + */ + _addFieldEvent: function(event) { + + FHC_AjaxClient.ajaxCallPost( + "system/Filters/addSelectedField", + { + selectedField: $(this).val(), + filter_page: FHC_FilterWidget.getFilterPage() + }, + { + successCallback: function(data, textStatus, jqXHR) { + FHC_FilterWidget._cleanTablesorterLocalStorage(); + FHC_FilterWidget._failOrRefresh(data, textStatus, jqXHR); + } + } + ); + }, + + /** + * Event function used by the apply filter button + */ + _applyFilterEvent: function() { + + var appliedFilters = []; + var appliedFiltersOperations = []; + var appliedFiltersConditions = []; + var appliedFiltersOptions = []; + + $("#appliedFilters > div").each(function(i, e) { + appliedFilters.push($(this).find(".hidden-field-name").val()); + appliedFiltersOperations.push($(this).find(".applied-filter-operation").val()); + appliedFiltersConditions.push($(this).find(".applied-filter-condition:enabled").val()); + appliedFiltersOptions.push($(this).find(".applied-filter-option:enabled").val()); + }); + + FHC_AjaxClient.ajaxCallPost( + "system/Filters/applyFilters", + { + appliedFilters: appliedFilters, + appliedFiltersOperations: appliedFiltersOperations, + appliedFiltersConditions: appliedFiltersConditions, + appliedFiltersOptions: appliedFiltersOptions, + filter_page: FHC_FilterWidget.getFilterPage() + }, + { + successCallback: function(data, textStatus, jqXHR) { + FHC_FilterWidget._failOrReload(data, textStatus, jqXHR); + } + } + ); + }, + + /** + * Event function used to remove an applied filter to the dataset + */ + _removeAppliedFiltersEvent: function(event) { + + FHC_AjaxClient.ajaxCallPost( + "system/Filters/removeAppliedFilter", + { + appliedFilter: $(this).attr("filterToRemove"), + filter_page: FHC_FilterWidget.getFilterPage() + }, + { + successCallback: function(data, textStatus, jqXHR) { + FHC_FilterWidget._failOrReload(data, textStatus, jqXHR); + } + } + ); + }, + + /** + * Event function used to add a new filter to the dataset + */ + _addFilterEvent: function(event) { + + FHC_AjaxClient.ajaxCallPost( + "system/Filters/addFilter", + { + filter: $(this).val(), + filter_page: FHC_FilterWidget.getFilterPage() + }, + { + successCallback: function(data, textStatus, jqXHR) { + FHC_FilterWidget._failOrRefresh(data, textStatus, jqXHR); + } + } + ); + }, + + /** + * Event function used to collapse the filter options panel and to store the info into the session storage + */ + _dataToggleCollapseEvent: function() { + + if (typeof(Storage) !== "undefined") + { + if (sessionStorage.getItem("filter-options-status")) + { + if (sessionStorage.getItem("filter-options-status") == "closed") + { + sessionStorage.setItem("filter-options-status", "open"); + } + else + { + sessionStorage.setItem("filter-options-status", "closed"); + } + } + } + }, + + /** + * Event function used to save a custom filter + */ + _saveCustomFilterButtonEvent: function() { + + if ($("#customFilterDescription").val() != "") + { + FHC_AjaxClient.ajaxCallPost( + "system/Filters/saveCustomFilter", + { + customFilterDescription: $("#customFilterDescription").val(), + filter_page: FHC_FilterWidget.getFilterPage() + }, + { + successCallback: refreshSideMenu // NOTE: to be checked + } + ); + } + else + { + alert("Please fill the description of this filter"); + } + }, + + /** + * Retrive the filter name from data and display it in the GUI + */ + _setFilterName: function(data) { + + if (data.hasOwnProperty("filterName")) + { + $(".filter-name-title").html(data.filterName); + } + }, + + /** + * Renders the drag and drop GUI for the fields of the FilterWidget + * Retrieves the list of used fields, the list of all the fields and + * their possibly present aliases from the parameter data + */ + _renderDragAndDropFields: function(data) { + + var arrayFieldsToDisplay = FHC_FilterWidget._getFieldsToDisplay(data); + + for (var i = 0; i < arrayFieldsToDisplay.length; i++) + { + var fieldToDisplay = arrayFieldsToDisplay[i]; + var fieldName = data.selectedFields[i]; + + var strHtml = ""; + strHtml += " " + fieldToDisplay + ""; + strHtml += " "; + strHtml += " X "; + strHtml += " "; + strHtml += ""; + + $("#dragAndDropFieldsArea").append(strHtml); + } + }, + + /** + * Renders the drop-down element that contains all the usable fields in the FilterWidget + * The list of all usable fields and their possibly aliases are retrieved from the parameter data + */ + _renderDropDownFields: function(data) { + + if (data.hasOwnProperty("fields") && $.isArray(data.fields)) + { + FHC_FilterWidget._renderDropDown(data, data.selectedFields, 'addField'); + } + }, + + /** + * Renders a dropdown attached to the HTML element ddElementId, using the elements from data.fields + * and excluding the elements that are prenset in the elements parameter + */ + _renderDropDown: function(data, elements, ddElementId) { + + for (var i = 0; i < data.fields.length; i++) + { + var toBeDisplayed = true; + + for (var j = 0; j < elements.length; j++) + { + var elementName = elements[j].hasOwnProperty("name") ? elements[j].name : elements[j]; + + if (data.fields[i] == elementName) + { + toBeDisplayed = false; + break; + } + } + + if (toBeDisplayed == true) + { + var fieldName = data.fields[i]; + var fieldToDisplay = data.fields[i]; + + if (data.hasOwnProperty("columnsAliases") && $.isArray(data.columnsAliases)) + { + fieldToDisplay = data.columnsAliases[i]; + } + + if ($("#" + ddElementId).length) // checks if the element exists + { + $("#" + ddElementId).append(""); + } + } + } + }, + + /** + * Render the GUI to operate with the filters applied to the dataset + * The list of all applied filters is retrieved from the parameter data + */ + _renderAppliedFilters: function(data) { + + if (data.hasOwnProperty("datasetMetadata") && $.isArray(data.datasetMetadata) + && data.hasOwnProperty("filters") && $.isArray(data.filters)) + { + for (var i = 0; i < data.filters.length; i++) + { + for (var j = 0; j < data.datasetMetadata.length; j++) + { + if (data.filters[i].name == data.datasetMetadata[j].name) + { + var appliedFilters = "
    "; + + appliedFilters += ""; + + if (data.hasOwnProperty("columnsAliases") && $.isArray(data.columnsAliases)) + { + fieldToDisplay = data.columnsAliases[j]; + } + else + { + fieldToDisplay = data.datasetMetadata[j].name; + } + + appliedFilters += fieldToDisplay; + appliedFilters += ""; + + appliedFilters += FHC_FilterWidget._renderSingleAppliedFilter(data.filters[i], data.datasetMetadata[j]); + + appliedFilters += "
    "; + + $("#appliedFilters").append(appliedFilters); + } + } + } + } + }, + + /** + * Renders the drop-down element that contains all the possibly fields that can be used + * to apply a filter to the dataset + * The list of all usable fields and their possibly aliases are retrieved from the parameter data + */ + _renderDropDownFilters: function(data) { + + FHC_FilterWidget._renderDropDown(data, data.filters, 'addFilter'); + }, + + /** + * Renders a single applied filter to the dataset using the applied filter configuration and its related metadata + */ + _renderSingleAppliedFilter: function(appliedFilter, metaData) { + + var html = ""; + + if (metaData.type.toLowerCase().indexOf("int") >= 0) + { + if (appliedFilter.condition == null) appliedFilter.condition = 0; + + html = ""; + html += " "; + html += ""; + html += ""; + html += " "; + html += ""; + } + if (metaData.type.toLowerCase().indexOf("varchar") >= 0 || metaData.type.toLowerCase() == "text") + { + if (appliedFilter.condition == null) appliedFilter.condition = ""; + + html = ""; + html += " "; + html += ""; + html += ""; + html += " "; + html += ""; + } + if (metaData.type.toLowerCase().indexOf("bool") >= 0) + { + html = ""; + html += " "; + html += ""; + html += ""; + html += " "; + html += ""; + } + if (metaData.type.toLowerCase().indexOf("timestamp") >= 0 || metaData.type.toLowerCase().indexOf("date") >= 0) + { + var classOperation = "form-control applied-filter-condition"; + var classOption = "form-control applied-filter-option"; + var disabled = ""; + + if (appliedFilter.condition == null) appliedFilter.condition = 0; + + if (appliedFilter.operation == "set" || appliedFilter.operation == "nset") + { + classOperation += " hidden-control"; + classOption += " hidden-control"; + disabled = "disabled"; + } + + html = ""; + html += " "; + html += ""; + html += ""; + html += " "; + html += ""; + html += ""; + html += " "; + html += ""; + } + + html += ""; + html += " "; + html += ""; + + html += ""; + html += " "; + html += ""; + + return html; + }, + + /** + * Renders the table for the FilterWidget + * The data to be displayed are retrived from the parameter data + */ + _renderTableDataset: function(data) { + + if (data.hasOwnProperty("checkboxes") && data.checkboxes.trim() != "") + { + $("#filterTableDataset > thead > tr").append("Select"); + } + + var arrayFieldsToDisplay = FHC_FilterWidget._getFieldsToDisplay(data); + + for (var i = 0; i < arrayFieldsToDisplay.length; i++) + { + var columnName = arrayFieldsToDisplay[i]; + + $("#filterTableDataset > thead > tr").append("" + columnName + ""); + } + + if (data.hasOwnProperty("additionalColumns") && $.isArray(data.additionalColumns)) + { + for (var i = 0; i < data.additionalColumns.length; i++) + { + var columnName = data.additionalColumns[i]; + + $("#filterTableDataset > thead > tr").append("" + columnName + ""); + } + } + + if (arrayFieldsToDisplay.length > 0) + { + if (data.hasOwnProperty("dataset") && $.isArray(data.dataset)) + { + for (var i = 0; i < data.dataset.length; i++) + { + var record = data.dataset[i]; + var strHtml = ""; + + if (data.checkboxes != null && data.checkboxes != "") + { + strHtml += ""; + strHtml += ""; + strHtml += ""; + } + + $.each(arrayFieldsToDisplay, function(i, fieldToDisplay) { + + if (record.hasOwnProperty(data.selectedFields[i])) + { + strHtml += "" + record[data.selectedFields[i]] + ""; + } + }); + + if (data.additionalColumns != null && $.isArray(data.additionalColumns)) + { + $.each(data.additionalColumns, function(i, additionalColumn) { + + if (record.hasOwnProperty(additionalColumn)) + { + strHtml += "" + record[additionalColumn] + ""; + } + + }); + } + + strHtml += ""; + + $("#filterTableDataset > tbody").append(strHtml); + } + } + } + }, + + /** + * Enable the tablesorter libs to render the dataset table with sorting features + */ + _enableTableSorter: function() { + + // Checks if the table contains data (rows) + if ($("#filterTableDataset").find("tbody:empty").length == 0 + && $("#filterTableDataset").find("tr:empty").length == 0 + && $("#filterTableDataset").hasClass("table-condensed")) + { + $("#filterTableDataset").tablesorter({ + widgets: ["zebra", "filter"], + widgetOptions: { + filter_saveFilters : true + } + }); + + // reset filter storage if there is a filter id in url TODO: find better solution + var filter_id = FHC_AjaxClient.getUrlParameter("filter_id"); + if (typeof filter_id !== "undefined") FHC_FilterWidget._cleanTablesorterLocalStorage(); + + $.tablesorter.updateAll($("#filterTableDataset")[0].config, true, null); + } + }, + + /** + * Disable the tablesorter + */ + _disableTableSorter: function() { + + $("#filterTableDataset").trigger("disable"); + }, + + /** + * Retrives the fields to be displayed from the data parameter, if aliases are present then they are used + */ + _getFieldsToDisplay: function(data) { + + var arrayFieldsToDisplay = []; + + if (data.hasOwnProperty("selectedFields") && $.isArray(data.selectedFields)) + { + if (data.hasOwnProperty("columnsAliases") && $.isArray(data.columnsAliases)) + { + for (var i = 0; i < data.selectedFields.length; i++) + { + for (var j = 0; j < data.fields.length; j++) + { + if (data.selectedFields[i] == data.fields[j]) + { + arrayFieldsToDisplay[i] = data.columnsAliases[j]; + } + } + } + } + else + { + arrayFieldsToDisplay = data.selectedFields; + } + } + + return arrayFieldsToDisplay; + }, + + /** + * Tablesorter filter local storage clean + */ + _cleanTablesorterLocalStorage: function() { + + $("#filterTableDataset").trigger("filterResetSaved"); + } + +}; /** * When JQuery is up */ $(document).ready(function() { - $("[data-toggle='collapse']").click(function() { - - var filterOptionsStatus = sessionStorage.getItem('filter-options-status'); - - if (filterOptionsStatus != null && filterOptionsStatus == 'closed') - { - sessionStorage.setItem('filter-options-status', 'open'); - } - else - { - sessionStorage.setItem('filter-options-status', 'closed'); - } - - }); - - var filterOptionsStatus = sessionStorage.getItem('filter-options-status'); - if (filterOptionsStatus != null && filterOptionsStatus == 'open') - { - $('.collapse').collapse("show"); - } - - $("#saveCustomFilterButton").click(function() { - if ($("#customFilterDescription").val() != '') - { - // - FHC_AjaxClient.ajaxCallPost( - 'system/Filters/saveFilter', - { - customFilterDescription: $("#customFilterDescription").val(), - filter_page: FHC_FilterWidget._getFilterPage() - }, - { - successCallback: refreshSideMenu // NOTE: to be checked - } - ); - } - else - { - alert("Please fill te description of this filter"); - } - }); - - FHC_FilterWidget.renderSelectedFields(); - FHC_FilterWidget.renderSelectedFilters(); - FHC_FilterWidget.renderTableDataset(); + FHC_FilterWidget.display(); }); diff --git a/public/js/PhrasesLib.js b/public/js/PhrasesLib.js new file mode 100644 index 000000000..d8c67d4f8 --- /dev/null +++ b/public/js/PhrasesLib.js @@ -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; + } +}; diff --git a/public/js/infocenter/infocenterDetails.js b/public/js/infocenter/infocenterDetails.js index 2510476d1..d4efed894 100644 --- a/public/js/infocenter/infocenterDetails.js +++ b/public/js/infocenter/infocenterDetails.js @@ -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("Fehler beim Speichern der ZGV!  "); + $("#zgvSpeichern_" + prestudentid).before("" + FHC_PhrasesLib.t('ui', 'fehlerBeimSpeichern') + "  "); }; var prestudentid = data.prestudentid; @@ -258,7 +256,7 @@ var InfocenterDetails = { if (FHC_AjaxClient.hasData(data)) { InfocenterDetails._refreshLog(); - $("#zgvSpeichern_" + prestudentid).before("ZGV erfolgreich gespeichert!  "); + $("#zgvSpeichern_" + prestudentid).before("" + FHC_PhrasesLib.t('ui', 'gespeichert') + "  "); } 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( '
    '+ - '     '+ - 'bis  '+ + '     '+ + FHC_PhrasesLib.t('global', 'bis') + '  '+ ' '+ ''+ '
    '); @@ -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+'     '+ - ' '+ + FHC_PhrasesLib.t('infocenter', 'bewerberGeparktBis')+'  '+gerparkdate+'     '+ + ' '+ '' ); @@ -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! "); + $("#notizmsg").text(FHC_PhrasesLib.t('ui', 'fehlerBeimSpeichern')); } }; diff --git a/public/js/infocenter/infocenterPersonDataset.js b/public/js/infocenter/infocenterPersonDataset.js index 4146edc9b..a1315ef55 100644 --- a/public/js/infocenter/infocenterPersonDataset.js +++ b/public/js/infocenter/infocenterPersonDataset.js @@ -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 = '
    '; - $("#datasetActionsTop").before(formHtml); - - var selectAllHtml = - '' + - ' Alle  ' + - '' + - ' Keinen    '; - - var actionHtml = 'Mit Ausgewählten:  ' + - '' + - ' Nachricht senden'; - - var legendHtml = ' Gesperrt    ' + - ' 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( - "
    "+ - "
    " + selectAllHtml + "  " + actionHtml + "
    "+ - "
    " + legendHtml + "
    "+ - "
    " + countHtml + "
    "+ - "
    "+ - "
    " - ); - $("#datasetActionsBottom").append("

    "); + 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(""); - } - 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 = '
    '; + $("#datasetActionsTop").before(formHtml); + + var selectAllHtml = + '' + + ' Alle  ' + + '' + + ' Keinen    '; + + var actionHtml = 'Mit Ausgewählten:  ' + + '' + + ' Nachricht senden'; + + var legendHtml = ' Gesperrt    ' + + ' 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( + "
    "+ + "
    " + selectAllHtml + "  " + actionHtml + "
    "+ + "
    " + legendHtml + "
    "+ + "
    " + countHtml + "
    "+ + "
    "+ + "
    " + ); + $("#datasetActionsBottom").append("

    "); + + 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(""); + } + 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); - }); -} +}); diff --git a/public/js/tablesort/tablesort.js b/public/js/tablesort/tablesort.js index f45b55ca7..597d9e4a1 100644 --- a/public/js/tablesort/tablesort.js +++ b/public/js/tablesort/tablesort.js @@ -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') } ); } diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 585830b9d..ab29ee6e2 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -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: ' . $phrase['category'] . '/' . $phrase['phrase'] . ' hinzugefügt
    '; + echo 'Kategorie/Phrase: '. $phrase['category']. '/'. $phrase['phrase']. ' hinzugefügt
    '; } else - echo 'Fehler: ' . $phrase['category'] . '/' . $phrase['phrase'] . ' hinzufügen nicht möglich
    '; - + echo 'Fehler: '. $phrase['category']. '/'. + $phrase['phrase']. ' hinzufügen nicht möglich
    '; } //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.
    '; + echo 'Kategorie/Phrase: '. $phrase['category']. '/'. $phrase['phrase']. ' vorhanden.
    '; } //*** 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)) . ': ' . $phrase_phrases['text'] . ' hinzugefügt
    '; + echo '-- Phrasentext '. strtoupper(substr($phrase_phrases['sprache'], 0, 3)). ': '. + $phrase_phrases['text']. ' hinzugefügt
    '; } else { - echo 'Fehler: Phrasentext ' . strtoupper(substr($phrase_phrases['sprache'], 0, 3)) . ': '. $phrase_phrases['text'] . ' hinzufügen nicht möglich
    '; + echo 'Fehler: Phrasentext '. + strtoupper(substr($phrase_phrases['sprache'], 0, 3)). ': '. $phrase_phrases['text']. + ' hinzufügen nicht möglich
    '; } } } diff --git a/vilesci/personen/personen_anlegen.php b/vilesci/personen/personen_anlegen.php index bb8df4339..1ec897b78 100644 --- a/vilesci/personen/personen_anlegen.php +++ b/vilesci/personen/personen_anlegen.php @@ -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); -?> - +?> - - - + 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; + } +

    Person Anlegen

    @@ -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("