+ Sobald Ihnen ein oder mehrere Lehraufträge erteilt wurden, können Sie diese annehmen.
+
+
Klicken Sie unten auf das Status-Icon 'Nur erteilte anzeigen' oder 'Alle anzeigen'
+
Wählen Sie einzelne Lehraufträge mit Klick auf die Zeilen oder alle über den Button 'Alle auswählen'.
+
Geben Sie Ihr CIS-Passwort ein und klicken auf Lehrauftrag annehmen.
+
+
+
+
+
Warum kann ich manche Lehraufträge nicht auswählen?
+
+
+ Nur Lehraufträge mit dem Status 'erteilt' können gewählt werden.
+ Angenommene Lehraufträge oder Lehraufträge in Bearbeitung werden nur zu Ihrer Information angezeigt.
+
+ Sobald Lehraufträge bestellt wurden, können Sie diese hier erteilen.
+ Erteilte Lehraufträge können von den Lehrenden angenommen werden.
+
+
Klicken Sie unten auf das Status-Icon 'Nur bestellte anzeigen' oder 'Alle anzeigen'
+
Wählen Sie die zu erteilenden Lehraufträge selbst oder alle über den Button 'Alle auswählen'.
+
Klicken Sie auf Lehrauftrag erteilen.
+
+
+
+
+
Geänderte Lehraufträge
+
+ Im FAS können Änderungen an Stunden/Stundensatz eines Lehrauftrags durchgeführt werden, solange dieser nicht vom Lehrenden angenommen wurde.
+ Wenn Änderungen an bereits bestellten oder erteilten Lehraufträgen vorgenommen wurden, müssen diese vom Studiengang erneut bestellt werden.
+ Bei bereits erteilten Lehraufträgen wird zusätzlich der Status 'erteilt' zurückgesetzt.
+
+
+
+
Warum kann ich manche Lehraufträge nicht auswählen?
+
+ Nur Lehraufträge mit dem Status 'bestellt' können gewählt werden.
+ Neue, Bestellte, Akzeptierte oder geänderte Lehraufträge werden nur zu Ihrer Information angezeigt und sind daher NICHT wählbar.
+
+
+
+
Filter
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Alle Alle Lehraufträge mit jedem Status, auch geänderte und Dummy-Aufträge
+
Neu Nur Lehraufträge, die im FAS über die Zuteilung eines Lehrenden zu einer Lehreinheit/einem Projekt angelegt und noch nicht bestellt worden sind
+
Bestellt Nur bestellte UND geänderte bestellte Lehraufträge
+
Erteilt Nur erteilte UND geänderte erteilte Lehraufträge
+
Angenommen Nur vom Lehrenden angenommene Lehraufträge
+
Geändert Nur geänderte Lehraufträge, die den Status 'bestellt' oder 'erteilt' haben
+
Dummies Nur Lehraufträge, die mit einem Dummylektor angelegt sind
+
+
+
+
+
+
Auswahl
+
+
+
Einzeln auswählen: Strg + Klick auf einzelne Zeile(n)
+
Bereich auswählen: Shift + Klick auf Anfangs- und Endzeile
+ Sobald im FAS ein Lehrauftrag/eine Projektbetreuung angelegt wurde, können Sie diese hier bestellen.
+ Bestellte Lehraufträge sind zur Erteilung freigegeben.
+
+
Klicken Sie unten auf das Status-Icon 'Nur neue anzeigen', 'Nur geänderte anzeigen' oder 'Alle anzeigen'
+
Wählen Sie die zu bestellenden Lehraufträge selbst oder über den Button 'Alle auswählen'.
+
Klicken Sie auf Lehrauftrag bestellen.
+
+ Für jeden bestellten Lehrauftrag legt das System einen Vertrag an.
+
+
+
+
Geänderte Lehraufträge
+
+ Im FAS können Änderungen an Stunden/Stundensatz eines Lehrauftrags durchgeführt werden, solange dieser nicht vom Lehrenden angenommen wurde.
+ Wenn Änderungen an bereits bestellten oder erteilten Lehraufträgen vorgenommen wurden, werden diese in einem tooltip angezeigt.
+ Fahren Sie dazu mit der Maus über dem Status-Icon am Beginn der Zeile.
+
+
+
+
Warum kann ich manche Lehraufträge nicht auswählen?
+
+ Nur Lehraufträge mit dem Status 'neu' und 'geändert' können bestellt werden.
+ Erteilte oder akzeptierte Lehraufträge werden nur zu Ihrer Information angezeigt und sind daher NICHT wählbar.
+
+
+
+
Filter
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Alle Alle Lehraufträge mit jedem Status, auch geänderte und Dummy-Aufträge
+
Neu Nur Lehraufträge, die im FAS über die Zuteilung eines Lehrenden zu einer Lehreinheit/einem Projekt angelegt und noch nicht bestellt worden sind
+
Bestellt Nur bestellte UND geänderte bestellte Lehraufträge
+
Erteilt Nur erteilte UND geänderte erteilte Lehraufträge
+
Angenommen Nur vom Lehrenden angenommene Lehraufträge
+
Geändert Nur geänderte Lehraufträge, die den Status 'bestellt' oder 'erteilt' haben
+
Dummies Nur Lehraufträge, die mit einem Dummylektor angelegt sind
+
+
+
+
+
+
Auswahl
+
+
+
Einzeln auswählen: Strg + Klick auf einzelne Zeile(n)
+
Bereich auswählen: Shift + Klick auf Anfangs- und Endzeile
diff --git a/application/views/widgets/filter/tabulatorDataset.php b/application/views/widgets/filter/tabulatorDataset.php
new file mode 100644
index 000000000..f5efc50b3
--- /dev/null
+++ b/application/views/widgets/filter/tabulatorDataset.php
@@ -0,0 +1 @@
+
diff --git a/application/views/widgets/table/pivotUIDataset.php b/application/views/widgets/table/pivotUIDataset.php
new file mode 100644
index 000000000..0b43fcdac
--- /dev/null
+++ b/application/views/widgets/table/pivotUIDataset.php
@@ -0,0 +1 @@
+
diff --git a/application/views/widgets/table/table.php b/application/views/widgets/table/table.php
new file mode 100644
index 000000000..e73aec335
--- /dev/null
+++ b/application/views/widgets/table/table.php
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/application/views/widgets/table/tableDataset.php b/application/views/widgets/table/tableDataset.php
new file mode 100644
index 000000000..7c2f26ea5
--- /dev/null
+++ b/application/views/widgets/table/tableDataset.php
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/application/views/widgets/table/tabulatorDataset.php b/application/views/widgets/table/tabulatorDataset.php
new file mode 100644
index 000000000..4984284bc
--- /dev/null
+++ b/application/views/widgets/table/tabulatorDataset.php
@@ -0,0 +1 @@
+
diff --git a/application/widgets/Ausbildungssemester_widget.php b/application/widgets/Ausbildungssemester_widget.php
new file mode 100644
index 000000000..8200d8a63
--- /dev/null
+++ b/application/widgets/Ausbildungssemester_widget.php
@@ -0,0 +1,43 @@
+id = $i;
+ $ausbildungssemester_obj->description = $i;
+
+ $ausbildungssemester_arr []= $ausbildungssemester_obj;
+ }
+
+ $this->setElementsArray(
+ success($ausbildungssemester_arr),
+ true,
+ $this->p->t('lehre', 'ausbildungssemester'),
+ 'No Ausbildungssemester found'
+ );
+
+ $this->loadDropDownView($widgetData);
+ }
+}
\ No newline at end of file
diff --git a/application/widgets/FilterWidget.php b/application/widgets/FilterWidget.php
index 84a4d138b..d168744c8 100644
--- a/application/widgets/FilterWidget.php
+++ b/application/widgets/FilterWidget.php
@@ -7,9 +7,11 @@ class FilterWidget extends Widget
{
// Paths of the views
const WIDGET_URL_FILTER = 'widgets/filter/filter';
+ const WIDGET_URL_FILTER_OPTIONS = 'widgets/filter/filterOptions';
const WIDGET_URL_SELECT_FIELDS = 'widgets/filter/selectFields';
const WIDGET_URL_DATASET_TABLESORTER = 'widgets/filter/tableDataset';
const WIDGET_URL_DATASET_PIVOTUI = 'widgets/filter/pivotUIDataset';
+ const WIDGET_URL_DATASET_TABULATOR = 'widgets/filter/tabulatorDataset';
const WIDGET_URL_SELECT_FILTERS = 'widgets/filter/selectFilters';
const WIDGET_URL_SAVE_FILTER = 'widgets/filter/saveFilter';
@@ -40,14 +42,19 @@ class FilterWidget extends Widget
// To have a column in the GUI with checkboxes to select rows in the table
private $_checkboxes;
- // To hide the GUI to operate or save the filter widget
- private $_hideHeader;
- private $_hideSave;
+ // To hide the GUI to operate with the filter widget or to save a custom filter
+ private $_hideOptions; // if true hides all the options
+ private $_hideSelectFields; // if true hides the fields selection
+ private $_hideSelectFilters; // if true hides the filters selections
+ private $_hideSave; // if true hides the GUI to save a custom filter
+ private $_hideMenu; // if true then the menu is not shown
private $_customMenu; // if true then method _setFilterMenu is NOT called
private $_datasetRepresentation; // dataset representation (ex: tablesorter, pivotUI, ...)
private $_datasetRepresentationOptions; // dataset representation options for tablesorter, pivotUI, ...
+ private $_datasetRepFieldsDefs; // dataset representation attributes for each record field
+
private $_reloadDataset; // Force Reload of Dataset
private static $_FilterWidgetInstance; // static property that contains the instance of itself
@@ -61,18 +68,20 @@ class FilterWidget extends Widget
self::$_FilterWidgetInstance = $this; // set static property $_FilterWidgetInstance with this instance
- $this->load->library('FiltersLib'); // Loads the FiltersLib that contains all the used logic
+ $this->load->library('FilterWidgetLib'); // Loads the FilterWidgetLib that contains all the used logic
$this->_initFilterWidget($args); // checks parameters and initialize properties
+ $this->filterwidgetlib->setFilterUniqueIdByParams($args);
+
// Let's start if it's allowed
// NOTE: If it is NOT allowed then no data are loaded
- if ($this->filterslib->isAllowed($this->_requiredPermissions))
+ if ($this->filterwidgetlib->isAllowed($this->_requiredPermissions))
{
$this->_startFilterWidget();
// If a custom menu is not used, then default menu is used
- if ($this->_customMenu != true) $this->_setFilterMenu();
+ if ($this->_hideMenu != true && $this->_customMenu != true) $this->_setFilterMenu();
}
}
@@ -84,18 +93,33 @@ class FilterWidget extends Widget
*/
public function display($widgetData)
{
- $this->view(self::WIDGET_URL_FILTER); // GUI starts here
+ $this->view(self::WIDGET_URL_FILTER, array(
+ 'app' => $this->_app,
+ 'dataset' => $this->_datasetName,
+ 'filterid' => $this->_filterId
+ )); // GUI starts here
}
//------------------------------------------------------------------------------------------------------------------
// Public static methods used to load views and to access statically to some properies of the FilterWidget
+ /**
+ * Loads the view related to the filter options
+ */
+ public static function loadViewFilterOptions()
+ {
+ if (self::$_FilterWidgetInstance->_hideOptions != true)
+ {
+ self::_loadView(self::WIDGET_URL_FILTER_OPTIONS);
+ }
+ }
+
/**
* Loads the view related to the selected fields
*/
public static function loadViewSelectFields()
{
- if (self::$_FilterWidgetInstance->_hideHeader != true)
+ if (self::$_FilterWidgetInstance->_hideSelectFields != true)
{
self::_loadView(self::WIDGET_URL_SELECT_FIELDS);
}
@@ -106,7 +130,7 @@ class FilterWidget extends Widget
*/
public static function loadViewSelectFilters()
{
- if (self::$_FilterWidgetInstance->_hideHeader != true)
+ if (self::$_FilterWidgetInstance->_hideSelectFilters != true)
{
self::_loadView(self::WIDGET_URL_SELECT_FILTERS);
}
@@ -128,15 +152,20 @@ class FilterWidget extends Widget
*/
public static function loadViewDataset()
{
- if (self::$_FilterWidgetInstance->_datasetRepresentation == FiltersLib::DATASET_REP_TABLESORTER)
+ if (self::$_FilterWidgetInstance->_datasetRepresentation == FilterWidgetLib::DATASET_REP_TABLESORTER)
{
self::_loadView(self::WIDGET_URL_DATASET_TABLESORTER);
}
- if (self::$_FilterWidgetInstance->_datasetRepresentation == FiltersLib::DATASET_REP_PIVOTUI)
+ if (self::$_FilterWidgetInstance->_datasetRepresentation == FilterWidgetLib::DATASET_REP_PIVOTUI)
{
self::_loadView(self::WIDGET_URL_DATASET_PIVOTUI);
}
+
+ if (self::$_FilterWidgetInstance->_datasetRepresentation == FilterWidgetLib::DATASET_REP_TABULATOR)
+ {
+ self::_loadView(self::WIDGET_URL_DATASET_TABULATOR);
+ }
}
//------------------------------------------------------------------------------------------------------------------
@@ -164,115 +193,144 @@ class FilterWidget extends Widget
$this->_formatRow = null;
$this->_markRow = null;
$this->_checkboxes = null;
- $this->_hideHeader = null;
+ $this->_hideOptions = null;
+ $this->_hideSelectFields = null;
+ $this->_hideSelectFilters = null;
$this->_hideSave = null;
+ $this->_hideMenu = null;
$this->_customMenu = null;
$this->_datasetRepresentation = null;
$this->_datasetRepresentationOptions = null;
+ $this->_datasetRepFieldsDefs = null;
// Retrieved the required permissions parameter if present
- if (isset($args[FiltersLib::REQUIRED_PERMISSIONS_PARAMETER]))
+ if (isset($args[FilterWidgetLib::REQUIRED_PERMISSIONS_PARAMETER]))
{
- $this->_requiredPermissions = $args[FiltersLib::REQUIRED_PERMISSIONS_PARAMETER];
+ $this->_requiredPermissions = $args[FilterWidgetLib::REQUIRED_PERMISSIONS_PARAMETER];
}
// Parameters needed to retrieve univocally a filter from DB
- if (isset($args[FiltersLib::APP_PARAMETER]))
+ if (isset($args[FilterWidgetLib::APP_PARAMETER]))
{
- $this->_app = $args[FiltersLib::APP_PARAMETER];
+ $this->_app = $args[FilterWidgetLib::APP_PARAMETER];
}
- if (isset($args[FiltersLib::DATASET_NAME_PARAMETER]))
+ if (isset($args[FilterWidgetLib::DATASET_NAME_PARAMETER]))
{
- $this->_datasetName = $args[FiltersLib::DATASET_NAME_PARAMETER];
+ $this->_datasetName = $args[FilterWidgetLib::DATASET_NAME_PARAMETER];
}
- if (isset($args[FiltersLib::FILTER_KURZBZ_PARAMETER]))
+ if (isset($args[FilterWidgetLib::FILTER_KURZBZ_PARAMETER]))
{
- $this->_filterKurzbz = $args[FiltersLib::FILTER_KURZBZ_PARAMETER];
+ $this->_filterKurzbz = $args[FilterWidgetLib::FILTER_KURZBZ_PARAMETER];
}
- if (isset($args[FiltersLib::FILTER_ID]))
+ if (isset($args[FilterWidgetLib::FILTER_ID]))
{
- $this->_filterId = $args[FiltersLib::FILTER_ID];
+ $this->_filterId = $args[FilterWidgetLib::FILTER_ID];
}
// How to retrieve data for the filter: SQL statement or a result from DB
- if (isset($args[FiltersLib::QUERY_PARAMETER]))
+ if (isset($args[FilterWidgetLib::QUERY_PARAMETER]))
{
- $this->_query = $args[FiltersLib::QUERY_PARAMETER];
+ $this->_query = $args[FilterWidgetLib::QUERY_PARAMETER];
}
- if (isset($args[FiltersLib::DATASET_RELOAD_PARAMETER]))
+ if (isset($args[FilterWidgetLib::DATASET_RELOAD_PARAMETER]))
{
- $this->_reloadDataset = $args[FiltersLib::DATASET_RELOAD_PARAMETER];
+ $this->_reloadDataset = $args[FilterWidgetLib::DATASET_RELOAD_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)
+ if (isset($args[FilterWidgetLib::ADDITIONAL_COLUMNS])
+ && is_array($args[FilterWidgetLib::ADDITIONAL_COLUMNS])
+ && count($args[FilterWidgetLib::ADDITIONAL_COLUMNS]) > 0)
{
- $this->_additionalColumns = $args[FiltersLib::ADDITIONAL_COLUMNS];
+ $this->_additionalColumns = $args[FilterWidgetLib::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)
+ if (isset($args[FilterWidgetLib::COLUMNS_ALIASES])
+ && is_array($args[FilterWidgetLib::COLUMNS_ALIASES])
+ && count($args[FilterWidgetLib::COLUMNS_ALIASES]) > 0)
{
- $this->_columnsAliases = $args[FiltersLib::COLUMNS_ALIASES];
+ $this->_columnsAliases = $args[FilterWidgetLib::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]))
+ if (isset($args[FilterWidgetLib::FORMAT_ROW]) && is_callable($args[FilterWidgetLib::FORMAT_ROW]))
{
- $this->_formatRow = $args[FiltersLib::FORMAT_ROW];
+ $this->_formatRow = $args[FilterWidgetLib::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]))
+ if (isset($args[FilterWidgetLib::MARK_ROW]) && is_callable($args[FilterWidgetLib::MARK_ROW]))
{
- $this->_markRow = $args[FiltersLib::MARK_ROW];
+ $this->_markRow = $args[FilterWidgetLib::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]))
+ if (isset($args[FilterWidgetLib::CHECKBOXES]))
{
- $this->_checkboxes = $args[FiltersLib::CHECKBOXES];
+ $this->_checkboxes = $args[FilterWidgetLib::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]))
+ // To specify if the filter options are shown ot not
+ if (isset($args[FilterWidgetLib::HIDE_OPTIONS]) && is_bool($args[FilterWidgetLib::HIDE_OPTIONS]))
{
- $this->_hideHeader = $args[FiltersLib::HIDE_HEADER];
+ $this->_hideOptions = $args[FilterWidgetLib::HIDE_OPTIONS];
+ }
+
+ // To specify if the form to select fields is shown or not
+ if (isset($args[FilterWidgetLib::HIDE_SELECT_FIELDS]) && is_bool($args[FilterWidgetLib::HIDE_SELECT_FIELDS]))
+ {
+ $this->_hideSelectFields = $args[FilterWidgetLib::HIDE_SELECT_FIELDS];
+ }
+
+ // To specify if the form to select filters is shown or not
+ if (isset($args[FilterWidgetLib::HIDE_SELECT_FILTERS]) && is_bool($args[FilterWidgetLib::HIDE_SELECT_FILTERS]))
+ {
+ $this->_hideSelectFilters = $args[FilterWidgetLib::HIDE_SELECT_FILTERS];
}
// 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]))
+ if (isset($args[FilterWidgetLib::HIDE_SAVE]) && is_bool($args[FilterWidgetLib::HIDE_SAVE]))
{
- $this->_hideSave = $args[FiltersLib::HIDE_SAVE];
+ $this->_hideSave = $args[FilterWidgetLib::HIDE_SAVE];
+ }
+
+ // If the menu should be shown or not
+ if (isset($args[FilterWidgetLib::HIDE_MENU]) && is_bool($args[FilterWidgetLib::HIDE_MENU]))
+ {
+ $this->_hideMenu = $args[FilterWidgetLib::HIDE_MENU];
}
// If a custom menu is set
- if (isset($args[FiltersLib::CUSTOM_MENU]) && is_bool($args[FiltersLib::CUSTOM_MENU]))
+ if (isset($args[FilterWidgetLib::CUSTOM_MENU]) && is_bool($args[FilterWidgetLib::CUSTOM_MENU]))
{
- $this->_customMenu = $args[FiltersLib::CUSTOM_MENU];
+ $this->_customMenu = $args[FilterWidgetLib::CUSTOM_MENU];
}
// To specify how to represent the dataset (ex: tablesorter, pivotUI, ...)
- if (isset($args[FiltersLib::DATASET_REPRESENTATION])
- && ($args[FiltersLib::DATASET_REPRESENTATION] == FiltersLib::DATASET_REP_TABLESORTER
- || $args[FiltersLib::DATASET_REPRESENTATION] == FiltersLib::DATASET_REP_PIVOTUI))
+ if (isset($args[FilterWidgetLib::DATASET_REPRESENTATION])
+ && ($args[FilterWidgetLib::DATASET_REPRESENTATION] == FilterWidgetLib::DATASET_REP_TABLESORTER
+ || $args[FilterWidgetLib::DATASET_REPRESENTATION] == FilterWidgetLib::DATASET_REP_PIVOTUI
+ || $args[FilterWidgetLib::DATASET_REPRESENTATION] == FilterWidgetLib::DATASET_REP_TABULATOR))
{
- $this->_datasetRepresentation = $args[FiltersLib::DATASET_REPRESENTATION];
+ $this->_datasetRepresentation = $args[FilterWidgetLib::DATASET_REPRESENTATION];
}
// To specify options for the dataset representation (ex: tablesorter, pivotUI, ...)
- if (isset($args[FiltersLib::DATASET_REP_OPTIONS]) && !isEmptyString($args[FiltersLib::DATASET_REP_OPTIONS]))
+ if (isset($args[FilterWidgetLib::DATASET_REP_OPTIONS]) && !isEmptyString($args[FilterWidgetLib::DATASET_REP_OPTIONS]))
{
- $this->_datasetRepresentationOptions = $args[FiltersLib::DATASET_REP_OPTIONS];
+ $this->_datasetRepresentationOptions = $args[FilterWidgetLib::DATASET_REP_OPTIONS];
+ }
+
+ // To specify how to represent each record field
+ if (isset($args[FilterWidgetLib::DATASET_REP_FIELDS_DEFS]) && !isEmptyString($args[FilterWidgetLib::DATASET_REP_FIELDS_DEFS]))
+ {
+ $this->_datasetRepFieldsDefs = $args[FilterWidgetLib::DATASET_REP_FIELDS_DEFS];
}
}
@@ -287,32 +345,36 @@ class FilterWidget extends Widget
}
else
{
- if ((!isset($args[FiltersLib::APP_PARAMETER]) && !isset($args[FiltersLib::DATASET_NAME_PARAMETER]))
- && !isset($args[FiltersLib::FILTER_ID]))
+ if ((!isset($args[FilterWidgetLib::APP_PARAMETER]) && !isset($args[FilterWidgetLib::DATASET_NAME_PARAMETER]))
+ && !isset($args[FilterWidgetLib::FILTER_ID]))
{
show_error(
- 'The parameters ("'.FiltersLib::APP_PARAMETER.'" and "'.FiltersLib::DATASET_NAME_PARAMETER.') OR "'.
- FiltersLib::FILTER_ID.'" must be specified'
+ 'The parameters ("'.FilterWidgetLib::APP_PARAMETER.'" AND "'.FilterWidgetLib::DATASET_NAME_PARAMETER.') OR "'.
+ FilterWidgetLib::FILTER_ID.'" must be specified'
);
}
- if (!isset($args[FiltersLib::QUERY_PARAMETER]))
+ if (!isset($args[FilterWidgetLib::QUERY_PARAMETER]))
{
- show_error('The parameters "'.FiltersLib::QUERY_PARAMETER.'" must be specified');
+ show_error('The parameters "'.FilterWidgetLib::QUERY_PARAMETER.'" must be specified');
}
- if (!isset($args[FiltersLib::DATASET_REPRESENTATION]))
+ if (!isset($args[FilterWidgetLib::DATASET_REPRESENTATION]))
{
- show_error('The parameter "'.FiltersLib::DATASET_REPRESENTATION.'" must be specified');
+ show_error('The parameter "'.FilterWidgetLib::DATASET_REPRESENTATION.'" must be specified');
}
- if (isset($args[FiltersLib::DATASET_REPRESENTATION])
- && $args[FiltersLib::DATASET_REPRESENTATION] != FiltersLib::DATASET_REP_TABLESORTER
- && $args[FiltersLib::DATASET_REPRESENTATION] != FiltersLib::DATASET_REP_PIVOTUI)
+ if (isset($args[FilterWidgetLib::DATASET_REPRESENTATION])
+ && $args[FilterWidgetLib::DATASET_REPRESENTATION] != FilterWidgetLib::DATASET_REP_TABLESORTER
+ && $args[FilterWidgetLib::DATASET_REPRESENTATION] != FilterWidgetLib::DATASET_REP_PIVOTUI
+ && $args[FilterWidgetLib::DATASET_REPRESENTATION] != FilterWidgetLib::DATASET_REP_TABULATOR)
{
show_error(
- 'The parameter "'.FiltersLib::DATASET_REPRESENTATION.
- '" must be IN ("'.FiltersLib::DATASET_REP_TABLESORTER.'", "'.FiltersLib::DATASET_REP_PIVOTUI.'")'
+ 'The parameter "'.FilterWidgetLib::DATASET_REPRESENTATION.
+ '" must be IN ("'
+ .FilterWidgetLib::DATASET_REP_TABLESORTER.'", "'
+ .FilterWidgetLib::DATASET_REP_PIVOTUI.'", "'
+ .FilterWidgetLib::DATASET_REP_TABULATOR.'")'
);
}
}
@@ -324,51 +386,49 @@ class FilterWidget extends Widget
private function _startFilterWidget()
{
// Read the all session for this filter widget
- $session = $this->filterslib->getSession();
+ $session = $this->filterwidgetlib->getSession();
// If session is NOT empty -> a filter was already loaded
if ($session != null)
{
// Retrieve the filterId stored in the session
- $sessionFilterId = $this->filterslib->getSessionElement(FiltersLib::FILTER_ID);
+ $sessionFilterId = $this->filterwidgetlib->getSessionElement(FilterWidgetLib::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);
+ $this->filterwidgetlib->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
- $sessionReloadDataset = $this->filterslib->getSessionElement(FiltersLib::SESSION_RELOAD_DATASET);
+ $sessionReloadDataset = $this->filterwidgetlib->getSessionElement(FilterWidgetLib::SESSION_RELOAD_DATASET);
// if Filter changed or reload is forced by parameter then reload the Dataset
if ($this->_reloadDataset === true || $sessionReloadDataset === true)
{
// Set as false to stop changing the dataset
- $this->filterslib->setSessionElement(FiltersLib::SESSION_RELOAD_DATASET, false);
+ $this->filterwidgetlib->setSessionElement(FilterWidgetLib::SESSION_RELOAD_DATASET, false);
// Generate dataset query using filters from the session
- $datasetQuery = $this->filterslib->generateDatasetQuery(
+ $datasetQuery = $this->filterwidgetlib->generateDatasetQuery(
$this->_query,
- $this->filterslib->getSessionElement(FiltersLib::SESSION_FILTERS)
+ $this->filterwidgetlib->getSessionElement(FilterWidgetLib::SESSION_FILTERS)
);
// Then retrieve dataset from DB
- $dataset = $this->filterslib->getDataset($datasetQuery);
+ $dataset = $this->filterwidgetlib->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
- $this->load->model('system/Filters_model', 'FiltersModel');
-
// Set the new dataset and its attributes in the session
- $this->filterslib->setSessionElement(FiltersLib::SESSION_METADATA, $this->FiltersModel->getExecutedQueryMetaData());
- $this->filterslib->setSessionElement(FiltersLib::SESSION_ROW_NUMBER, count($dataset->retval));
- $this->filterslib->setSessionElement(FiltersLib::SESSION_DATASET, $dataset->retval);
+ $this->filterwidgetlib->setSessionElement(FilterWidgetLib::SESSION_METADATA, $this->FiltersModel->getExecutedQueryMetaData());
+ $this->filterwidgetlib->setSessionElement(FilterWidgetLib::SESSION_ROW_NUMBER, count($dataset->retval));
+ $this->filterwidgetlib->setSessionElement(FilterWidgetLib::SESSION_DATASET, $dataset->retval);
}
}
}
@@ -378,7 +438,7 @@ class FilterWidget extends Widget
if ($session == null)
{
// Load filter definition data from DB
- $definition = $this->filterslib->loadDefinition(
+ $definition = $this->filterwidgetlib->loadDefinition(
$this->_filterId,
$this->_app,
$this->_datasetName,
@@ -386,44 +446,43 @@ class FilterWidget extends Widget
);
// Checks and parse json present into the definition
- $parsedFilterJson = $this->filterslib->parseFilterJson($definition);
+ $parsedFilterJson = $this->filterwidgetlib->parseFilterJson($definition);
if ($parsedFilterJson != null) // if the json is valid
{
// Generate dataset query
- $datasetQuery = $this->filterslib->generateDatasetQuery($this->_query, $parsedFilterJson->filters);
+ $datasetQuery = $this->filterwidgetlib->generateDatasetQuery($this->_query, $parsedFilterJson->filters);
// Then retrieve dataset from DB
- $dataset = $this->filterslib->getDataset($datasetQuery);
+ $dataset = $this->filterwidgetlib->getDataset($datasetQuery);
// Try to load the name of the filter using the PhrasesLib
- $filterName = $this->filterslib->getFilterName($parsedFilterJson);
+ $filterName = $this->filterwidgetlib->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
- $this->load->model('system/Filters_model', 'FiltersModel');
-
// Stores an array that contains all the data useful for
- $this->filterslib->setSession(
+ $this->filterwidgetlib->setSession(
array(
- FiltersLib::FILTER_ID => $this->_filterId, // the current filter id
- FiltersLib::APP_PARAMETER => $this->_app, // the current app parameter
- FiltersLib::DATASET_NAME_PARAMETER => $this->_datasetName, // the carrent dataset name
- FiltersLib::SESSION_FILTER_NAME => $filterName, // the current filter name
- FiltersLib::SESSION_FIELDS => $this->FiltersModel->getExecutedQueryListFields(), // all the fields of the dataset
- FiltersLib::SESSION_SELECTED_FIELDS => $this->_getColumnsNames($parsedFilterJson->columns), // all the selected fields
- FiltersLib::SESSION_COLUMNS_ALIASES => $this->_columnsAliases, // all the fields aliases
- FiltersLib::SESSION_ADDITIONAL_COLUMNS => $this->_additionalColumns, // additional columns
- FiltersLib::SESSION_CHECKBOXES => $this->_checkboxes, // the name of the field used to build the checkboxes column
- FiltersLib::SESSION_FILTERS => $parsedFilterJson->filters, // all the filters used to filter the dataset
- FiltersLib::SESSION_METADATA => $this->FiltersModel->getExecutedQueryMetaData(), // the metadata of the dataset
- FiltersLib::SESSION_ROW_NUMBER => count($dataset->retval), // the number of loaded rows by this filter
- FiltersLib::SESSION_DATASET => $dataset->retval, // the entire dataset
- FiltersLib::SESSION_RELOAD_DATASET => false, // if the dataset must be reloaded, not needed the first time
- FiltersLib::SESSION_DATASET_REPRESENTATION => $this->_datasetRepresentation, // the choosen dataset representation
- FiltersLib::SESSION_DATASET_REP_OPTIONS => $this->_datasetRepresentationOptions // the choosen dataset representation options
+ FilterWidgetLib::FILTER_ID => $this->_filterId, // the current filter id
+ FilterWidgetLib::APP_PARAMETER => $this->_app, // the current app parameter
+ FilterWidgetLib::DATASET_NAME_PARAMETER => $this->_datasetName, // the carrent dataset name
+ FilterWidgetLib::SESSION_FILTER_NAME => $filterName, // the current filter name
+ FilterWidgetLib::SESSION_FIELDS => $this->FiltersModel->getExecutedQueryListFields(), // all the fields of the dataset
+ FilterWidgetLib::SESSION_SELECTED_FIELDS => $this->_getColumnsNames($parsedFilterJson->columns), // all the selected fields
+ FilterWidgetLib::SESSION_COLUMNS_ALIASES => $this->_columnsAliases, // all the fields aliases
+ FilterWidgetLib::SESSION_ADDITIONAL_COLUMNS => $this->_additionalColumns, // additional columns
+ FilterWidgetLib::SESSION_CHECKBOXES => $this->_checkboxes, // the name of the field used to build the checkboxes column
+ FilterWidgetLib::SESSION_FILTERS => $parsedFilterJson->filters, // all the filters used to filter the dataset
+ FilterWidgetLib::SESSION_METADATA => $this->FiltersModel->getExecutedQueryMetaData(), // the metadata of the dataset
+ FilterWidgetLib::SESSION_ROW_NUMBER => count($dataset->retval), // the number of loaded rows by this filter
+ FilterWidgetLib::SESSION_DATASET => $dataset->retval, // the entire dataset
+ FilterWidgetLib::SESSION_RELOAD_DATASET => false, // if the dataset must be reloaded, not needed the first time
+ FilterWidgetLib::SESSION_DATASET_REPRESENTATION => $this->_datasetRepresentation, // the choosen dataset representation
+ FilterWidgetLib::SESSION_DATASET_REP_OPTIONS => $this->_datasetRepresentationOptions, // the choosen dataset representation options
+ FilterWidgetLib::SESSION_DATASET_REP_FIELDS_DEFS => $this->_datasetRepFieldsDefs // the choosen dataset representation record fields definition
)
);
}
@@ -432,7 +491,7 @@ class FilterWidget extends Widget
// To be always stored in the session, otherwise is not possible to load data from Filters controller
// NOTE: must the latest operation to be performed in the session to be shure that is always present
- $this->filterslib->setSessionElement(FiltersLib::REQUIRED_PERMISSIONS_PARAMETER, $this->_requiredPermissions);
+ $this->filterwidgetlib->setSessionElement(FilterWidgetLib::REQUIRED_PERMISSIONS_PARAMETER, $this->_requiredPermissions);
}
/**
@@ -441,7 +500,7 @@ class FilterWidget extends Widget
private function _setFilterMenu()
{
// Generates the filters structure array
- $filterMenu = $this->filterslib->generateFilterMenu(
+ $filterMenu = $this->filterwidgetlib->generateFilterMenu(
$this->router->directory.$this->router->class.'/'.$this->router->method
);
}
diff --git a/application/widgets/Organisationseinheit_widget.php b/application/widgets/Organisationseinheit_widget.php
index 67d1598b0..e4fbfe2ba 100644
--- a/application/widgets/Organisationseinheit_widget.php
+++ b/application/widgets/Organisationseinheit_widget.php
@@ -5,16 +5,34 @@ class Organisationseinheit_widget extends DropdownWidget
public function display($widgetData)
{
$this->load->model('organisation/Organisationseinheit_model', 'OrganisationseinheitModel');
-
+
if (isset($widgetData['typ']))
- $typ = $widgetData['typ'];
+ {
+ $this->setElementsArray($this->OrganisationseinheitModel->getRecursiveList($widgetData['typ']));
+ }
+ // If 'organisationseinheit' (array of specific oe_kurzbz) is given, retrieve these organisational units only
+ elseif (isset($widgetData['organisationseinheit']) && !empty($widgetData['organisationseinheit']))
+ {
+ $condition = '
+ oe_kurzbz IN (\''. implode('\',\'', $widgetData['organisationseinheit']) . '\') AND
+ aktiv = TRUE
+ ';
+ $this->addSelectToModel($this->OrganisationseinheitModel, 'oe_kurzbz', 'organisationseinheittyp_kurzbz || \' \' || bezeichnung');
+ $this->OrganisationseinheitModel->addOrder('organisationseinheittyp_kurzbz', 'ASC');
+ $this->setElementsArray(
+ $this->OrganisationseinheitModel->loadWhere($condition),
+ true,
+ $this->p->t('lehre', 'organisationseinheit'),
+ 'No organisational units found'
+ );
+ }
+ // Default: retrieve tree of all organisational units
else
- $typ = null;
-
- // NOTE: no need to call addSelectToModel because getRecursiveList already returns
- // the correct names of the fields
-
- $this->setElementsArray($this->OrganisationseinheitModel->getRecursiveList($typ));
+ {
+ // NOTE: no need to call addSelectToModel because getRecursiveList already returns
+ // the correct names of the fields
+ $this->setElementsArray($this->OrganisationseinheitModel->getRecursiveList());
+ }
$this->loadDropDownView($widgetData);
}
diff --git a/application/widgets/Studiengang_widget.php b/application/widgets/Studiengang_widget.php
index a09c865f5..250f2a9bc 100644
--- a/application/widgets/Studiengang_widget.php
+++ b/application/widgets/Studiengang_widget.php
@@ -8,15 +8,29 @@ class Studiengang_widget extends DropdownWidget
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
$this->StudiengangModel->addOrder('kurzbzlang');
- $this->addSelectToModel($this->StudiengangModel, 'studiengang_kz', '\'(\' || kurzbzlang || \') \' || bezeichnung');
-
- $this->setElementsArray(
- $this->StudiengangModel->loadWhere(array('aktiv' => true)),
- true,
- 'Select a studiengang...',
- 'No studiengaenge found'
- );
-
+ $this->addSelectToModel($this->StudiengangModel, 'studiengang_kz', '\'(\' || upper(typ||kurzbz) || \') \' || tbl_studiengang.bezeichnung');
+
+ // If 'studiengang' (array of specific studiengaenge) is given, retrieve these studiengaenge only
+ if (isset($widgetData['studiengang']) && !empty($widgetData['studiengang']))
+ {
+ $condition = '
+ studiengang_kz IN ('. implode(',', $widgetData['studiengang']) . ') AND
+ aktiv = true
+ ';
+ }
+ // Default: retrieve all studiengaenge
+ else
+ {
+ $condition = array('aktiv' => true);
+ }
+
+ $this->setElementsArray(
+ $this->StudiengangModel->loadWhere($condition),
+ true,
+ $this->p->t('lehre', 'studiengang'),
+ 'No studiengaenge found'
+ );
+
$this->loadDropDownView();
}
}
\ No newline at end of file
diff --git a/application/widgets/Studiensemester_widget.php b/application/widgets/Studiensemester_widget.php
index bc1c0a201..dc6e28d38 100644
--- a/application/widgets/Studiensemester_widget.php
+++ b/application/widgets/Studiensemester_widget.php
@@ -6,14 +6,14 @@ class Studiensemester_widget extends DropdownWidget
{
// Studiensemester
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
- $this->StudiensemesterModel->addOrder('studiensemester_kurzbz', 'DESC');
+ $this->StudiensemesterModel->addOrder('start', 'DESC');
$this->addSelectToModel($this->StudiensemesterModel, 'studiensemester_kurzbz', 'studiensemester_kurzbz');
$this->setElementsArray(
$this->StudiensemesterModel->load(),
true,
- 'Select a studiensemester...',
+ $this->p->t('lehre', 'studiensemester'),
'No studiensemester found'
);
diff --git a/application/widgets/TableWidget.php b/application/widgets/TableWidget.php
new file mode 100644
index 000000000..a0f64b291
--- /dev/null
+++ b/application/widgets/TableWidget.php
@@ -0,0 +1,415 @@
+load->library('TableWidgetLib'); // Loads the TableWidgetLib that contains all the used logic
+
+ $this->_initTableWidget($args); // checks parameters and initialize properties
+
+ $this->tablewidgetlib->setTableUniqueIdByParams($args);
+
+ // Let's start if it's allowed
+ // NOTE: If it is NOT allowed then no data are loaded
+ if ($this->tablewidgetlib->isAllowed($this->_requiredPermissions))
+ {
+ $this->_startTableWidget($args[TableWidgetLib::TABLE_UNIQUE_ID]);
+ }
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ // Public methods
+
+ /**
+ * Called when echoing the table widget call
+ */
+ public function display($widgetData)
+ {
+ $this->view(self::WIDGET_URL_TABLE, array(
+ 'tableUniqueId' => $widgetData[TableWidgetLib::TABLE_UNIQUE_ID]
+ )); // GUI starts here
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ // Public static methods used to load views and to access statically to some properies of the TableWidget
+
+ /**
+ * Loads the view related to the dataset, here is decided how to represent the dataset (ex: tablesorter, pivotUI, ...)
+ */
+ public static function loadViewDataset()
+ {
+ if (self::$_TableWidgetInstance->_datasetRepresentation == TableWidgetLib::DATASET_REP_TABLESORTER)
+ {
+ self::_loadView(self::WIDGET_URL_DATASET_TABLESORTER);
+ }
+
+ if (self::$_TableWidgetInstance->_datasetRepresentation == TableWidgetLib::DATASET_REP_PIVOTUI)
+ {
+ self::_loadView(self::WIDGET_URL_DATASET_PIVOTUI);
+ }
+
+ if (self::$_TableWidgetInstance->_datasetRepresentation == TableWidgetLib::DATASET_REP_TABULATOR)
+ {
+ self::_loadView(self::WIDGET_URL_DATASET_TABULATOR);
+ }
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ // Private methods
+
+ /**
+ * Checks parameters and initialize all the properties of this TableWidget
+ */
+ private function _initTableWidget($args)
+ {
+ $this->_checkParameters($args);
+
+ // If here then everything is ok
+
+ // Initialize class properties
+ $this->_requiredPermissions = null;
+ $this->_reloadDataset = null;
+ $this->_query = null;
+ $this->_additionalColumns = null;
+ $this->_columnsAliases = null;
+ $this->_formatRow = null;
+ $this->_markRow = null;
+ $this->_checkboxes = null;
+ $this->_datasetRepresentation = null;
+ $this->_datasetRepresentationOptions = null;
+ $this->_datasetRepFieldsDefs = null;
+
+ // Retrieved the required permissions parameter if present
+ if (isset($args[TableWidgetLib::REQUIRED_PERMISSIONS_PARAMETER]))
+ {
+ $this->_requiredPermissions = $args[TableWidgetLib::REQUIRED_PERMISSIONS_PARAMETER];
+ }
+
+ // How to retrieve data for the table: SQL statement or a result from DB
+ if (isset($args[TableWidgetLib::QUERY_PARAMETER]))
+ {
+ $this->_query = $args[TableWidgetLib::QUERY_PARAMETER];
+ }
+
+ if (isset($args[TableWidgetLib::DATASET_RELOAD_PARAMETER]))
+ {
+ $this->_reloadDataset = $args[TableWidgetLib::DATASET_RELOAD_PARAMETER];
+ }
+
+ // Parameter is used to add extra columns to the dataset
+ if (isset($args[TableWidgetLib::ADDITIONAL_COLUMNS])
+ && is_array($args[TableWidgetLib::ADDITIONAL_COLUMNS])
+ && count($args[TableWidgetLib::ADDITIONAL_COLUMNS]) > 0)
+ {
+ $this->_additionalColumns = $args[TableWidgetLib::ADDITIONAL_COLUMNS];
+ }
+
+ // Parameter is used to add use aliases for the columns fo the dataset
+ if (isset($args[TableWidgetLib::COLUMNS_ALIASES])
+ && is_array($args[TableWidgetLib::COLUMNS_ALIASES])
+ && count($args[TableWidgetLib::COLUMNS_ALIASES]) > 0)
+ {
+ $this->_columnsAliases = $args[TableWidgetLib::COLUMNS_ALIASES];
+ }
+
+ // Parameter that contains a function to format the rows of the dataset
+ if (isset($args[TableWidgetLib::FORMAT_ROW]) && is_callable($args[TableWidgetLib::FORMAT_ROW]))
+ {
+ $this->_formatRow = $args[TableWidgetLib::FORMAT_ROW];
+ }
+
+ // Parameter that contains a function to mark in the GUI the rows of the dataset
+ if (isset($args[TableWidgetLib::MARK_ROW]) && is_callable($args[TableWidgetLib::MARK_ROW]))
+ {
+ $this->_markRow = $args[TableWidgetLib::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[TableWidgetLib::CHECKBOXES]))
+ {
+ $this->_checkboxes = $args[TableWidgetLib::CHECKBOXES];
+ }
+
+ // To specify how to represent the dataset (ex: tablesorter, pivotUI, ...)
+ if (isset($args[TableWidgetLib::DATASET_REPRESENTATION])
+ && ($args[TableWidgetLib::DATASET_REPRESENTATION] == TableWidgetLib::DATASET_REP_TABLESORTER
+ || $args[TableWidgetLib::DATASET_REPRESENTATION] == TableWidgetLib::DATASET_REP_PIVOTUI
+ || $args[TableWidgetLib::DATASET_REPRESENTATION] == TableWidgetLib::DATASET_REP_TABULATOR))
+ {
+ $this->_datasetRepresentation = $args[TableWidgetLib::DATASET_REPRESENTATION];
+ }
+
+ // To specify options for the dataset representation (ex: tablesorter, pivotUI, ...)
+ if (isset($args[TableWidgetLib::DATASET_REP_OPTIONS]) && !isEmptyString($args[TableWidgetLib::DATASET_REP_OPTIONS]))
+ {
+ $this->_datasetRepresentationOptions = $args[TableWidgetLib::DATASET_REP_OPTIONS];
+ }
+
+ // To specify how to represent each record field
+ if (isset($args[TableWidgetLib::DATASET_REP_FIELDS_DEFS]) && !isEmptyString($args[TableWidgetLib::DATASET_REP_FIELDS_DEFS]))
+ {
+ $this->_datasetRepFieldsDefs = $args[TableWidgetLib::DATASET_REP_FIELDS_DEFS];
+ }
+ }
+
+ /**
+ * Checks the required parameters used to call this TableWidget
+ */
+ 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[TableWidgetLib::TABLE_UNIQUE_ID]))
+ {
+ show_error('The parameter "'.TableWidgetLib::TABLE_UNIQUE_ID.'" must be specified');
+ }
+
+ if (!isset($args[TableWidgetLib::QUERY_PARAMETER]))
+ {
+ show_error('The parameters "'.TableWidgetLib::QUERY_PARAMETER.'" must be specified');
+ }
+
+ if (!isset($args[TableWidgetLib::DATASET_REPRESENTATION]))
+ {
+ show_error('The parameter "'.TableWidgetLib::DATASET_REPRESENTATION.'" must be specified');
+ }
+
+ if (isset($args[TableWidgetLib::DATASET_REPRESENTATION])
+ && $args[TableWidgetLib::DATASET_REPRESENTATION] != TableWidgetLib::DATASET_REP_TABLESORTER
+ && $args[TableWidgetLib::DATASET_REPRESENTATION] != TableWidgetLib::DATASET_REP_PIVOTUI
+ && $args[TableWidgetLib::DATASET_REPRESENTATION] != TableWidgetLib::DATASET_REP_TABULATOR)
+ {
+ show_error(
+ 'The parameter "'.TableWidgetLib::DATASET_REPRESENTATION.
+ '" must be IN ("'
+ .TableWidgetLib::DATASET_REP_TABLESORTER.'", "'
+ .TableWidgetLib::DATASET_REP_PIVOTUI.'", "'
+ .TableWidgetLib::DATASET_REP_TABULATOR.'")'
+ );
+ }
+ }
+ }
+
+ /**
+ * Contains all the logic used to load all the data needed to the TableWidget
+ */
+ private function _startTableWidget($tableUniqueId)
+ {
+ // Read the all session for this table widget
+ $session = $this->tablewidgetlib->getSession();
+
+ // If session is NOT empty -> a table was already loaded
+ if ($session != null)
+ {
+ // Get SESSION_RELOAD_DATASET from the session
+ $sessionReloadDataset = $this->tablewidgetlib->getSessionElement(TableWidgetLib::SESSION_RELOAD_DATASET);
+
+ // if Filter changed or reload is forced by parameter then reload the Dataset
+ if ($this->_reloadDataset === true || $sessionReloadDataset === true)
+ {
+ // Set as false to stop changing the dataset
+ $this->tablewidgetlib->setSessionElement(TableWidgetLib::SESSION_RELOAD_DATASET, false);
+
+ // Generate dataset query using tables from the session
+ $datasetQuery = $this->tablewidgetlib->generateDatasetQuery($this->_query);
+
+ // Then retrieve dataset from DB
+ $dataset = $this->tablewidgetlib->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->tablewidgetlib->setSessionElement(TableWidgetLib::SESSION_METADATA, $this->tablewidgetlib->getExecutedQueryMetaData());
+ $this->tablewidgetlib->setSessionElement(TableWidgetLib::SESSION_ROW_NUMBER, count($dataset->retval));
+ $this->tablewidgetlib->setSessionElement(TableWidgetLib::SESSION_DATASET, $dataset->retval);
+ }
+ }
+ }
+
+ // If the session is empty -> first time that this table is loaded
+ if ($session == null)
+ {
+ // Generate dataset query
+ $datasetQuery = $this->tablewidgetlib->generateDatasetQuery($this->_query);
+
+ // Then retrieve dataset from DB
+ $dataset = $this->tablewidgetlib->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
+
+ // Stores an array that contains all the data useful for
+ $this->tablewidgetlib->setSession(
+ array(
+ TableWidgetLib::TABLE_UNIQUE_ID => $tableUniqueId, // table unique id
+ TableWidgetLib::SESSION_FIELDS => $this->tablewidgetlib->getExecutedQueryListFields(), // all the fields of the dataset
+ TableWidgetLib::SESSION_COLUMNS_ALIASES => $this->_columnsAliases, // all the fields aliases
+ TableWidgetLib::SESSION_ADDITIONAL_COLUMNS => $this->_additionalColumns, // additional columns
+ TableWidgetLib::SESSION_CHECKBOXES => $this->_checkboxes, // the name of the field used to build the checkboxes column
+ TableWidgetLib::SESSION_METADATA => $this->tablewidgetlib->getExecutedQueryMetaData(), // the metadata of the dataset
+ TableWidgetLib::SESSION_ROW_NUMBER => count($dataset->retval), // the number of loaded rows by this table
+ TableWidgetLib::SESSION_DATASET => $dataset->retval, // the entire dataset
+ TableWidgetLib::SESSION_RELOAD_DATASET => false, // if the dataset must be reloaded, not needed the first time
+ TableWidgetLib::SESSION_DATASET_REPRESENTATION => $this->_datasetRepresentation, // the choosen dataset representation
+ TableWidgetLib::SESSION_DATASET_REP_OPTIONS => $this->_datasetRepresentationOptions, // the choosen dataset representation options
+ TableWidgetLib::SESSION_DATASET_REP_FIELDS_DEFS => $this->_datasetRepFieldsDefs // the choosen dataset representation record fields definition
+ )
+ );
+ }
+ }
+
+ // To be always stored in the session, otherwise is not possible to load data from Filters controller
+ // NOTE: must the latest operation to be performed in the session to be shure that is always present
+ $this->tablewidgetlib->setSessionElement(TableWidgetLib::REQUIRED_PERMISSIONS_PARAMETER, $this->_requiredPermissions);
+ }
+
+ /**
+ * Calls the method _markRow and _formatRow to marks rows using markRow and format rowns using formatRow
+ * NOTE: this method operates directly on the retrieved 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 retrieved 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))
+ {
+ $rawDatasetRow->{$columnName} = ($columnValue === true ? 'true' : 'false');
+ }
+ elseif (DateTime::createFromFormat('Y-m-d H:i:s', $columnValue) !== false)
+ {
+ $rawDatasetRow->{$columnName} = date(self::DEFAULT_DATE_FORMAT, strtotime($columnValue));
+ }
+ }
+
+ // If a valid function call the given formatRow
+ if ($this->_formatRow != null && is_callable($this->_formatRow))
+ {
+ $formatRowFunction = $this->_formatRow;
+ $rawDatasetRow = $formatRowFunction($rawDatasetRow);
+ }
+ }
+
+ /**
+ * 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($rawDatasetRow)
+ {
+ // If a valid function call the given markRow
+ if ($this->_markRow != null && is_callable($this->_markRow))
+ {
+ $markRowFunction = $this->_markRow;
+ $class = $markRowFunction($rawDatasetRow);
+ }
+
+ return !isset($class) ? '' : $class;
+ }
+
+ /**
+ * Utility method that retrieves the name of the columns present in a table JSON definition
+ */
+ private function _getColumnsNames($columns)
+ {
+ $columnsNames = array();
+
+ foreach ($columns as $key => $obj)
+ {
+ if (isset($obj->name))
+ {
+ $columnsNames[] = $obj->name;
+ }
+ }
+
+ return $columnsNames;
+ }
+
+ /**
+ * 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);
+ }
+}
diff --git a/composer.json b/composer.json
index c37ee91c6..636c6da42 100644
--- a/composer.json
+++ b/composer.json
@@ -162,6 +162,17 @@
}
}
},
+ {
+ "type": "package",
+ "package": {
+ "name": "moment/momentjs",
+ "version": "2.24.0",
+ "dist": {
+ "url": "https://github.com/moment/moment/archive/2.24.0.zip",
+ "type": "zip"
+ }
+ }
+ },
{
"type": "package",
"package": {
@@ -173,6 +184,17 @@
}
}
},
+ {
+ "type": "package",
+ "package": {
+ "name": "olifolkerd/tabulator",
+ "version": "4.2.7",
+ "dist": {
+ "url": "https://github.com/olifolkerd/tabulator/archive/4.2.7.zip",
+ "type": "zip"
+ }
+ }
+ },
{
"type": "package",
"package": {
@@ -253,6 +275,7 @@
"ludo/jquery-treetable": "^3.2",
+ "moment/momentjs": "2.24.0",
"michelf/php-markdown": "1.5.0",
"ml/json-ld": "1.*",
"mottie/tablesorter": "^2.29",
@@ -261,6 +284,8 @@
"netcarver/textile": "^3.5",
"nicolaskruchten/pivottable": "^2.21.0",
+ "olifolkerd/tabulator": "4.2.7",
+
"phpseclib/phpseclib": "^2.0",
"rmariuzzo/jquery-checkboxes": "1.0.7",
diff --git a/composer.lock b/composer.lock
index e5b050e96..0b869361a 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1134,6 +1134,17 @@
],
"time": "2018-11-18T20:26:18+00:00"
},
+ {
+ "name": "moment/momentjs",
+ "version": "2.24.0",
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/moment/moment/archive/2.24.0.zip",
+ "reference": null,
+ "shasum": null
+ },
+ "type": "library"
+ },
{
"name": "mottie/tablesorter",
"version": "v2.31.1",
@@ -1237,16 +1248,16 @@
},
{
"name": "netcarver/textile",
- "version": "v3.7.1",
+ "version": "v3.7.2",
"source": {
"type": "git",
"url": "https://github.com/textile/php-textile.git",
- "reference": "377933125dd30d708804c545bf33da87a3c1b0f4"
+ "reference": "c24d68d9f4d099f9c2434e71024f2a6140dc1594"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/textile/php-textile/zipball/377933125dd30d708804c545bf33da87a3c1b0f4",
- "reference": "377933125dd30d708804c545bf33da87a3c1b0f4",
+ "url": "https://api.github.com/repos/textile/php-textile/zipball/c24d68d9f4d099f9c2434e71024f2a6140dc1594",
+ "reference": "c24d68d9f4d099f9c2434e71024f2a6140dc1594",
"shasum": ""
},
"require": {
@@ -1331,18 +1342,29 @@
],
"time": "2018-11-04T18:21:09+00:00"
},
+ {
+ "name": "olifolkerd/tabulator",
+ "version": "4.2.7",
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/olifolkerd/tabulator/archive/4.2.7.zip",
+ "reference": null,
+ "shasum": null
+ },
+ "type": "library"
+ },
{
"name": "phpseclib/phpseclib",
- "version": "2.0.15",
+ "version": "2.0.20",
"source": {
"type": "git",
"url": "https://github.com/phpseclib/phpseclib.git",
- "reference": "11cf67cf78dc4acb18dc9149a57be4aee5036ce0"
+ "reference": "d6819a55b05e123db1e881d8b230d57f912126be"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/11cf67cf78dc4acb18dc9149a57be4aee5036ce0",
- "reference": "11cf67cf78dc4acb18dc9149a57be4aee5036ce0",
+ "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/d6819a55b05e123db1e881d8b230d57f912126be",
+ "reference": "d6819a55b05e123db1e881d8b230d57f912126be",
"shasum": ""
},
"require": {
@@ -2138,16 +2160,16 @@
},
{
"name": "tinymce/tinymce",
- "version": "4.9.4",
+ "version": "4.9.5",
"source": {
"type": "git",
"url": "https://github.com/tinymce/tinymce-dist.git",
- "reference": "3a997f24eb54d890b1c88f22cff03092e0b73378"
+ "reference": "5c6d8f4a6dda33b379068bb12678a2b2b2271fb4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/tinymce/tinymce-dist/zipball/3a997f24eb54d890b1c88f22cff03092e0b73378",
- "reference": "3a997f24eb54d890b1c88f22cff03092e0b73378",
+ "url": "https://api.github.com/repos/tinymce/tinymce-dist/zipball/5c6d8f4a6dda33b379068bb12678a2b2b2271fb4",
+ "reference": "5c6d8f4a6dda33b379068bb12678a2b2b2271fb4",
"shasum": ""
},
"type": "component",
@@ -2245,16 +2267,16 @@
},
{
"name": "twig/twig",
- "version": "v1.41.0",
+ "version": "v1.42.2",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
- "reference": "575cd5028362da591facde1ef5d7b94553c375c9"
+ "reference": "21707d6ebd05476854805e4f91b836531941bcd4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/575cd5028362da591facde1ef5d7b94553c375c9",
- "reference": "575cd5028362da591facde1ef5d7b94553c375c9",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/21707d6ebd05476854805e4f91b836531941bcd4",
+ "reference": "21707d6ebd05476854805e4f91b836531941bcd4",
"shasum": ""
},
"require": {
@@ -2264,12 +2286,12 @@
"require-dev": {
"psr/container": "^1.0",
"symfony/debug": "^2.7",
- "symfony/phpunit-bridge": "^3.4.19|^4.1.8"
+ "symfony/phpunit-bridge": "^3.4.19|^4.1.8|^5.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.41-dev"
+ "dev-master": "1.42-dev"
}
},
"autoload": {
diff --git a/config/global.config-default.inc.php b/config/global.config-default.inc.php
index fa131a8aa..308058fba 100644
--- a/config/global.config-default.inc.php
+++ b/config/global.config-default.inc.php
@@ -126,6 +126,12 @@ define('FAS_UDF', true);
// Legt fest ob Aufnahmegruppen bei Reihungstests verwaltet werden true|false
define('FAS_REIHUNGSTEST_AUFNAHMEGRUPPEN',false);
+// Legt fest, ob Vertragsdetails zum Lehrauftrag im Reiter LektorInnenzuteilung angezeigt werden
+define('FAS_LV_LEKTORINNENZUTEILUNG_VERTRAGSDETAILS_ANZEIGEN', false);
+
+// Legt fest, ob Vertragsdetails zum Projektauftrag im Reiter Projektarbeit angezeigt werden
+define('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN', false);
+
// Anzeigeoptionen für LV-Plan Menü
define('CIS_LVPLAN_EXPORT_ANZEIGEN',true);
define('CIS_LVPLAN_PERSONENAUSWAHL_ANZEIGEN',true);
diff --git a/content/lvplanung/lehrveranstaltungDBDML.php b/content/lvplanung/lehrveranstaltungDBDML.php
index a150a0262..2b3090221 100644
--- a/content/lvplanung/lehrveranstaltungDBDML.php
+++ b/content/lvplanung/lehrveranstaltungDBDML.php
@@ -17,7 +17,8 @@
*
* Authors: Christian Paminger ,
* Andreas Oesterreicher and
- * Rudolf Hangl .
+ * Rudolf Hangl
+ * Cristina Hainberger .
*/
// ****************************************
@@ -31,6 +32,7 @@
// * - Lehreinheitmitarbeiter Zuteilung hinzufuegen/bearbeiten/loeschen
// * - Lehreinheitgruppe Zutelung hinzufuegen/loeschen
// * - Lehreinheit anlegen/bearbeiten/loeschen
+// * - Lehrauftrag (Vertrag) loeschen (stornieren)
// ****************************************
require_once('../../config/vilesci.config.inc.php');
@@ -691,50 +693,58 @@ if(!$error)
//Lehreinheitmitarbeiterzuteilung loeschen
if(isset($_POST['lehreinheit_id']) && is_numeric($_POST['lehreinheit_id']) && isset($_POST['mitarbeiter_uid']))
{
- //Wenn der Mitarbeiter im Stundenplan verplant ist, dann wird das Loeschen verhindert
- $qry = "SELECT stundenplandev_id as id FROM lehre.tbl_stundenplandev WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." AND mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid'])."
- UNION
- SELECT stundenplan_id as id FROM lehre.tbl_stundenplan WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." AND mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid']);
- if($db->db_query($qry))
+ // Wenn der Mitarbeiter schon einen Vertrag hat, wird das Loeschen verhindert
+ if (isset($_POST['vertrag_id']) && is_numeric($_POST['vertrag_id']))
{
- if($db->db_num_rows()>0)
+ $return = false;
+ $errormsg = 'Löschen nur nach Stornierung des Vertrags möglich.';
+ }
+ else
+ {
+ //Wenn der Mitarbeiter im Stundenplan verplant ist, dann wird das Loeschen verhindert
+ $qry = "SELECT stundenplandev_id as id FROM lehre.tbl_stundenplandev WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." AND mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid'])."
+ UNION
+ SELECT stundenplan_id as id FROM lehre.tbl_stundenplan WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." AND mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid']);
+ if($db->db_query($qry))
{
- $return = false;
- $errormsg = 'Diese/r LektorIn kann nicht gelöscht werden da er schon verplant ist';
- }
- else
- {
- $leg = new lehreinheitmitarbeiter();
- if($leg->load($_POST['lehreinheit_id'], $_POST['mitarbeiter_uid']))
+ if($db->db_num_rows()>0)
{
- // Wenn ein Vertrag dazu angelegt ist, dann diesen mitloeschen
- if($leg->vertrag_id!='')
+ $return = false;
+ $errormsg = 'Diese/r LektorIn kann nicht gelöscht werden da er schon verplant ist';
+ }
+ else
+ {
+ $leg = new lehreinheitmitarbeiter();
+ if($leg->load($_POST['lehreinheit_id'], $_POST['mitarbeiter_uid']))
{
- $vertrag = new vertrag();
- $vertrag->delete($leg->vertrag_id);
- }
-
- if($leg->delete($_POST['lehreinheit_id'], $_POST['mitarbeiter_uid']))
- {
- $return = true;
+ // Wenn ein Vertrag dazu angelegt ist, dann diesen mitloeschen
+ if($leg->vertrag_id!='')
+ {
+ $vertrag = new vertrag();
+ $vertrag->delete($leg->vertrag_id);
+ }
+ if($leg->delete($_POST['lehreinheit_id'], $_POST['mitarbeiter_uid']))
+ {
+ $return = true;
+ }
+ else
+ {
+ $return = false;
+ $errormsg = $leg->errormsg;
+ }
}
else
{
$return = false;
- $errormsg = $leg->errormsg;
+ $errormsg='Fehlgeschlagen:'.$leg->errormsg;
}
}
- else
- {
- $return = false;
- $errormsg='Fehlgeschlagen:'.$leg->errormsg;
- }
}
- }
- else
- {
- $return = false;
- $errormsg = 'Fehler:'.$qry;
+ else
+ {
+ $return = false;
+ $errormsg = 'Fehler:'.$qry;
+ }
}
}
else
@@ -1715,6 +1725,102 @@ if(!$error)
}
}
}
+ elseif(isset($_POST['type']) && $_POST['type']=='getLastVertragsstatus')
+ {
+ if(isset($_POST['vertrag_id']))
+ {
+ $vertrag = new vertrag();
+ if($vertrag->getAllStatus($_POST['vertrag_id']))
+ {
+ $vertraege = $vertrag->result;
+ foreach($vertraege as $vertrag)
+ {
+ $data = $vertrag->vertragsstatus_kurzbz;
+ $return = true;
+ break; // exit loop because only last (most actual) vertrag item is needed
+ }
+
+ }
+ else
+ {
+ $errormsg = 'Fehler beim Laden des Vertragsstatus';
+ $return = false;
+ }
+ }
+ else
+ {
+ $errormsg = 'VertragsID muss uebergeben werden';
+ $return = false;
+ }
+ }
+ elseif(isset($_POST['type']) && $_POST['type']=='cancelVertrag')
+ {
+ $error = false;
+
+ // Check if user is entitled to cancel this contract
+ if (isset($_POST['vertrag_id']) && is_numeric($_POST['vertrag_id']))
+ {
+ // * first find lehrveranstaltung_id of the contracts lehrveranstaltung
+ $vertrag = new vertrag();
+ $vertrag->load($_POST['vertrag_id']);
+ $lva = new lehrveranstaltung($vertrag->lehrveranstaltung_id);
+
+ // * then check if the user has permissions to cancel the corresponding lv-organisational units
+ if (!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') &&
+ !$rechte->isBerechtigtMultipleOe('lehre/lehrauftrag_bestellen', $lva->getAllOe(), 'suid'))
+ {
+ $error = true;
+ $return = false;
+ $errormsg = 'Keine Berechtigung';
+ }
+ }
+
+ if (!$error)
+ {
+ if(isset($_POST['mitarbeiter_uid']))
+ {
+ $vertrag = new vertrag();
+ if($vertrag->cancel($_POST['vertrag_id'], $_POST['mitarbeiter_uid']))
+ {
+ $return = true;
+ }
+ else
+ {
+ $errormsg = 'Fehler beim Ausführen des Vertragsstornos';
+ $return = false;
+ }
+ }
+ elseif(isset($_POST['person_id']))
+ {
+ $benutzer = new Benutzer();
+ if($benutzer->getBenutzerFromPerson($_POST['person_id']))
+ {
+ $mitarbeiter_uid = $benutzer->result[0]->uid;
+
+ $vertrag = new vertrag();
+ if($vertrag->cancel($_POST['vertrag_id'], $mitarbeiter_uid))
+ {
+ $return = true;
+ }
+ else
+ {
+ $errormsg = 'Fehler beim Ausführen des Vertragsstornos';
+ $return = false;
+ }
+ }
+ else
+ {
+ $errormsg = 'Benutzer konnte nicht von PersonID geladen werden';
+ $return = false;
+ }
+ }
+ }
+ else
+ {
+ $errormsg = 'VertragsID und MitarbeiterUID müssen uebergeben werden';
+ $return = false;
+ }
+ }
else
{
$return = false;
diff --git a/content/lvplanung/lehrveranstaltungdetailoverlay.xul.php b/content/lvplanung/lehrveranstaltungdetailoverlay.xul.php
index de6c7cf17..57338add2 100644
--- a/content/lvplanung/lehrveranstaltungdetailoverlay.xul.php
+++ b/content/lvplanung/lehrveranstaltungdetailoverlay.xul.php
@@ -35,6 +35,9 @@ $rechte->getBerechtigungen($user);
echo '';
+// Vertragsdetails: Anzeige wird über config Eintrag bestimmt
+$is_hidden = (!defined('FAS_LV_LEKTORINNENZUTEILUNG_VERTRAGSDETAILS_ANZEIGEN') || FAS_LV_LEKTORINNENZUTEILUNG_VERTRAGSDETAILS_ANZEIGEN == true) ? 'false' : 'true';
+
?>
';
-
+
isBerechtigt('lv-plan/lektorentfernen'))
{
@@ -429,10 +432,10 @@ echo '';
-
+
-
+ ';
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/content/lvplanung/lehrveranstaltungoverlay.js.php b/content/lvplanung/lehrveranstaltungoverlay.js.php
index 3caead944..38091a33f 100644
--- a/content/lvplanung/lehrveranstaltungoverlay.js.php
+++ b/content/lvplanung/lehrveranstaltungoverlay.js.php
@@ -1131,6 +1131,7 @@ function LeMitarbeiterDel()
req.add('type', 'lehreinheit_mitarbeiter_del');
req.add('lehreinheit_id', lehreinheit_id);
req.add('mitarbeiter_uid', uid);
+ req.add('vertrag_id', vertrag_id);
var response = req.executePOST();
var val = new ParseReturnValue(response)
@@ -1222,7 +1223,7 @@ function LeMitarbeiterDisableFields(val)
// ****
// * Bei Auswaehlen eines Mitarbeiters werden zu zugehoerigen
-// * Details geladen und angezeigt
+// * Details sowie ggf. die Vertragsdetails geladen und angezeigt
// ****
function LeMitarbeiterAuswahl()
{
@@ -1308,6 +1309,7 @@ function LeMitarbeiterAuswahl()
faktor = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#faktor" ));
anmerkung = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#anmerkung" ));
bismelden = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#bismelden" ));
+ vertrag_id = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#vertrag_id" ));
//Felder aktivieren
LeMitarbeiterDisableFields(false);
@@ -1328,7 +1330,186 @@ function LeMitarbeiterAuswahl()
else
document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-checkbox-bismelden').checked=false;
- LeMitarbeiterGesamtkosten();
+ var gesamtkosten = LeMitarbeiterGesamtkosten();
+
+ // Prüfe ob Vertragsdetails angezeigt werden
+ var vertragsdetails_anzeigen = new Boolean();
+
+ // Wenn Vertragsdetails angezeigt werden
+ if (vertragsdetails_anzeigen) {
+
+ // Reset attributes
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-label-vertragsstatus').setAttribute("style", "font-weight: normal");
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-button-vertrag-stornieren').setAttribute("tooltiptext",
+ "Stornieren erst nötig, sobald Lektor einen Vertrag hat. (Ab Status 'Bestellt')");
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-button-vertrag-stornieren').disabled = true;
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-menulist-lektor').disabled = false;
+ document.getElementById('lehrveranstaltung-lektor-tree-popup-label').disabled = false;
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-textbox-semesterstunden').disabled= false;
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-textbox-stundensatz').disabled= false;
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-textbox-semesterstunden').setAttribute("tooltiptext", "");
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-textbox-stundensatz').setAttribute("tooltiptext", "");
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-menulist-lektor').setAttribute("tooltiptext", "");
+ document.getElementById('lehrveranstaltung-lektor-tree-popup-label').setAttribute("tooltiptext", "");
+
+ // Wenn es einen Vertrag zum Lehrauftrag gibt
+ if (vertrag_id != null && vertrag_id != '')
+ {
+ // Änderung und Entfernen des Lektors disablen
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-menulist-lektor').disabled = true;
+ document.getElementById('lehrveranstaltung-lektor-tree-popup-label').disabled = true;
+
+ // Tooltip für Blockierung von Aenderung und Entfernen des Lektors
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-menulist-lektor').setAttribute("tooltiptext",
+ "Änderung nur nach Stornierung des Vertrags möglich.");
+ document.getElementById('lehrveranstaltung-lektor-tree-popup-label').setAttribute("tooltiptext",
+ "Änderung nur nach Stornierung des Vertrags möglich.");
+
+ // Stornieren ermoeglichen und tooltip entfernen
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-button-vertrag-stornieren').disabled = false;
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-button-vertrag-stornieren').setAttribute("tooltiptext", "");
+
+ // Url zum RDF
+ var url = "rdf/vertrag.rdf.php?"+gettimestamp();
+ //
+ ////RDF laden
+ var req = new phpRequest(url, '', '');
+ req.add('vertrag_id', vertrag_id);
+ var response = req.execute();
+
+ // Trick 17 (sonst gibt's ein Permission denied)
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+
+ // XML in Datasource parsen
+ var dsource = parseRDFString(response, 'http://www.technikum-wien.at/vertrag/liste');
+ var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
+ getService(Components.interfaces.nsIRDFService);
+ var subject = rdfService.GetResource("http://www.technikum-wien.at/vertrag/" + vertrag_id);
+ var predicateNS = "http://www.technikum-wien.at/vertrag/rdf";
+
+ //Daten holen
+ betrag = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#betrag" ));
+ vertragsdatum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#vertragsdatum" ));
+ vertragsstunden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#vertragsstunden" ));
+ vertragsstunden_studiensemester_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#vertragsstunden_studiensemester_kurzbz" ));
+
+
+ // Letzten (aktuellsten) Vertragsstatus laden
+ var url_letzterStatus = 'content/lvplanung/lehrveranstaltungDBDML.php';
+ var req_letzterStatus = new phpRequest(url_letzterStatus,'','');
+
+ req_letzterStatus.add('type', 'getLastVertragsstatus');
+ req_letzterStatus.add('vertrag_id', vertrag_id);
+
+
+ var response_letzterStatus = req_letzterStatus.executePOST();
+
+ var val_letzterStatus = new ParseReturnValue(response_letzterStatus);
+
+ if (!val_letzterStatus.dbdml_return)
+ {
+ if(val_letzterStatus.dbdml_errormsg=='')
+ alert(response_letzterStatus);
+ else
+ alert(val_letzterStatus.dbdml_errormsg);
+ }
+ else
+ {
+ var letzterStatus = val_letzterStatus.dbdml_data;
+ }
+
+ // Vertragsstatus setzen
+ // * wenn Gesamtkosten im Lehrauftrag nicht gleich Betrag im Vertrag ist ODER
+ // wenn Semesterstunden im Lehrauftrag nicht gleich Stunden im Vertrag:
+ // dann: Status 'geändert' hardcoden
+ if(gesamtkosten != parseFloat(betrag) || semesterstunden != vertragsstunden)
+ {
+ vertragsstatus = 'Geändert';
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-label-vertragsstatus').setAttribute("style", "font-weight: bold")
+ }
+ // * ansonsten Vertragsstatus zeigen
+ else
+ {
+ vertragsstatus = letzterStatus;
+ }
+
+ // Uppercase status
+ vertragsstatus = vertragsstatus.charAt(0).toUpperCase() + vertragsstatus.slice(1);
+
+ /**
+ * Stornierung
+ * Nur wenn Vertragsstatus 'akzeptiert' ist:
+ * - button Stornierung aktivieren
+ * - tooltip ausblenden
+ * - Felder zur Bearbeitung von LektorInnendaten deaktivieren
+ */
+ if(letzterStatus == 'akzeptiert')
+ {
+ // Semesterstunden und Stundensatz disablen
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-textbox-semesterstunden').disabled= true;
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-textbox-stundensatz').disabled= true;
+
+ // Tooltip für Semesterstunden und Stundensatz
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-textbox-semesterstunden').setAttribute("tooltiptext",
+ "Änderung nur nach Stornierung des Vertrags möglich.");
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-textbox-stundensatz').setAttribute("tooltiptext",
+ "Änderung nur nach Stornierung des Vertrags möglich.");
+ }
+ }
+ // Wenn kein Vertrag vorhanden
+ else {
+ vertragsstatus = 'Noch kein Vertrag';
+ vertragsstunden = '-';
+ vertragsstunden_studiensemester_kurzbz = '-';
+ }
+
+ // Felder befüllen
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-label-vertragsstatus').value = vertragsstatus;
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-label-vertragsstunden').value = vertragsstunden;
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-label-vertragsstunden_studiensemester_kurzbz').value = vertragsstunden_studiensemester_kurzbz;
+ document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-label-vertrag_id').value = vertrag_id;
+ }
+}
+
+// ****
+// * Storniert einen Vertrag
+// ****
+function VertragStornieren(){
+
+ var result = confirm("Möchten Sie den Vertrag wirklich stornieren?");
+
+ if (result == true) {
+
+ var vertrag_id = document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-label-vertrag_id').value;
+ var mitarbeiter_uid = document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-menulist-lektor').value;
+
+ // Vertrag stornieren
+ var url_storniert = 'content/lvplanung/lehrveranstaltungDBDML.php';
+ var req_storniert = new phpRequest(url_storniert,'','');
+
+ req_storniert.add('type', 'cancelVertrag');
+ req_storniert.add('vertrag_id', vertrag_id);
+ req_storniert.add('mitarbeiter_uid', mitarbeiter_uid);
+
+ var response_storniert = req_storniert.executePOST();
+
+ var val_storniert = new ParseReturnValue(response_storniert);
+
+ if (!val_storniert.dbdml_return)
+ {
+ if(val_storniert.dbdml_errormsg=='')
+ alert(response_storniert);
+ else
+ alert(val_storniert.dbdml_errormsg);
+ }
+ else
+ {
+ // Reiter wieder aufbauen
+ LeMitarbeiterAuswahl();
+ }
+ }
+
+
}
// ****
@@ -2076,22 +2257,22 @@ function LehrveranstaltungNotenAuswahl()
var col = tree.columns ? tree.columns["lehrveranstaltung-noten-tree-studiensemester_kurzbz"] : "lehrveranstaltung-noten-tree-studiensemester_kurzbz";
var studiensemester_kurzbz=tree.view.getCellText(tree.currentIndex,col);
- //Daten holen
- var url = 'rdf/zeugnisnote.rdf.php?lehrveranstaltung_id='+lehrveranstaltung_id+'&uid='+student_uid+'&studiensemester_kurzbz='+studiensemester_kurzbz+'&'+gettimestamp();
-
- var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
- getService(Components.interfaces.nsIRDFService);
+ var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
+ getService(Components.interfaces.nsIRDFService);
var dsource = rdfService.GetDataSourceBlocking(url);
- var subject = rdfService.GetResource("http://www.technikum-wien.at/zeugnisnote/" + lehrveranstaltung_id+'/'+student_uid+'/'+studiensemester_kurzbz);
+ var subject = rdfService.GetResource("http://www.technikum-wien.at/zeugnisnote/" + lehrveranstaltung_id+'/'+student_uid+'/'+studiensemester_kurzbz);
- var predicateNS = "http://www.technikum-wien.at/zeugnisnote/rdf";
+ var predicateNS = "http://www.technikum-wien.at/zeugnisnote/rdf";
+
+ //Daten holen
+
+ note = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#note" ));
+ punkte = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#punkte" ));
//Daten holen
-
- note = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#note" ));
- punkte = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#punkte" ));
+ var url = 'rdf/zeugnisnote.rdf.php?lehrveranstaltung_id='+lehrveranstaltung_id+'&uid='+student_uid+'&studiensemester_kurzbz='+studiensemester_kurzbz+'&'+gettimestamp();
if(note=='')
note='9';
@@ -2375,6 +2556,8 @@ function LeMitarbeiterGesamtkosten()
document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-label-gesamtkosten').setAttribute("style",'color: red');
else
document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-label-gesamtkosten').setAttribute("style",'color: black');
+
+ return gesamtkosten;
}
/*
diff --git a/content/mitarbeiter/mitarbeitervertrag.js.php b/content/mitarbeiter/mitarbeitervertrag.js.php
index 00834c6d5..338b80859 100644
--- a/content/mitarbeiter/mitarbeitervertrag.js.php
+++ b/content/mitarbeiter/mitarbeitervertrag.js.php
@@ -208,6 +208,8 @@ function MitarbeiterVertragGenerateVertrag(windowdocument)
mitarbeiter_uid = getTreeCellText(tree, "mitarbeiter-vertrag-tree-nichtzugeordnet-mitarbeiter_uid",v);
lehreinheit_id = getTreeCellText(tree, "mitarbeiter-vertrag-tree-nichtzugeordnet-lehreinheit_id",v);
betreuerart_kurzbz = getTreeCellText(tree, "mitarbeiter-vertrag-tree-nichtzugeordnet-betreuerart_kurzbz",v);
+ vertragsstunden = getTreeCellText(tree, "mitarbeiter-vertrag-tree-nichtzugeordnet-vertragsstunden",v);
+ vertragsstunden_studiensemester_kurzbz = getTreeCellText(tree, "mitarbeiter-vertrag-tree-nichtzugeordnet-vertragsstunden_studiensemester_kurzbz",v);
req.add('type_'+anzahl, type);
req.add('stsem_'+anzahl, stsem);
@@ -216,6 +218,8 @@ function MitarbeiterVertragGenerateVertrag(windowdocument)
req.add('mitarbeiter_uid_'+anzahl, mitarbeiter_uid);
req.add('lehreinheit_id_'+anzahl, lehreinheit_id);
req.add('betreuerart_kurzbz_'+anzahl, betreuerart_kurzbz);
+ req.add('vertragsstunden'+anzahl, vertragsstunden);
+ req.add('vertragsstunden_studiensemester_kurzbz'+anzahl, vertragsstunden_studiensemester_kurzbz);
anzahl++;
}
diff --git a/content/mitarbeiter/mitarbeitervertragneudialog.js.php b/content/mitarbeiter/mitarbeitervertragneudialog.js.php
index 9f488f17f..666742f22 100644
--- a/content/mitarbeiter/mitarbeitervertragneudialog.js.php
+++ b/content/mitarbeiter/mitarbeitervertragneudialog.js.php
@@ -85,6 +85,8 @@ function MitarbeiterVertragNeuInit(person_id, vertrag_id)
bezeichnung = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bezeichnung" ));
anmerkung = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmerkung" ));
vertragsdatum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#vertragsdatum" ));
+ vertragsstunden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#vertragsstunden" ));
+ vertragsstunden_studiensemester_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#vertragsstunden_studiensemester_kurzbz" ));
MitarbeiterVertragNeuBetragOld = betrag;
@@ -94,6 +96,8 @@ function MitarbeiterVertragNeuInit(person_id, vertrag_id)
document.getElementById('mitarbeiter-vertrag-neu-textbox-vertrag_id').value=vertrag_id;
document.getElementById('mitarbeiter-vertrag-neu-textbox-anmerkung').value=anmerkung;
document.getElementById('mitarbeiter-vertrag-neu-box-vertragsdatum').value=vertragsdatum;
+ document.getElementById('mitarbeiter-vertrag-neu-textbox-vertragsstunden').value = vertragsstunden;
+ document.getElementById('mitarbeiter-vertrag-neu-textbox-vertragsstunden_studiensemester_kurzbz').value = vertragsstunden_studiensemester_kurzbz;
}
for(i in addon)
diff --git a/content/mitarbeiter/mitarbeitervertragneudialog.xul.php b/content/mitarbeiter/mitarbeitervertragneudialog.xul.php
index db8cc407f..d3d7a0bfa 100644
--- a/content/mitarbeiter/mitarbeitervertragneudialog.xul.php
+++ b/content/mitarbeiter/mitarbeitervertragneudialog.xul.php
@@ -110,8 +110,19 @@ foreach($addon_obj->result as $addon)
sort="rdf:http://www.technikum-wien.at/vertragdetails/rdf#lehreinheit_id" />
+ class="sortDirectionIndicator"
+ sort="rdf:http://www.technikum-wien.at/vertragdetails/rdf#betreuerart_kurzbz"/>
+
+
+
+
+
@@ -127,6 +138,8 @@ foreach($addon_obj->result as $addon)
+
+
@@ -181,6 +194,28 @@ foreach($addon_obj->result as $addon)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ';
+ }
+ ?>
diff --git a/content/mitarbeiter/mitarbeitervertragoverlay.xul.php b/content/mitarbeiter/mitarbeitervertragoverlay.xul.php
index a0c9cbd94..44ee60392 100644
--- a/content/mitarbeiter/mitarbeitervertragoverlay.xul.php
+++ b/content/mitarbeiter/mitarbeitervertragoverlay.xul.php
@@ -117,6 +117,14 @@ echo '';
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/vertrag/rdf#vertragsdatum_iso" />
+
+
+
+
@@ -131,6 +139,8 @@ echo '';
+
+
diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php
index 62c978c26..91988a062 100644
--- a/content/student/studentDBDML.php
+++ b/content/student/studentDBDML.php
@@ -4031,25 +4031,27 @@ if(!$error)
}
else
{
- //Loescht einen Projektbetreuer Eintrag
- if(isset($_POST['person_id']) && is_numeric($_POST['person_id']))
+ // Wenn der Projektbetreuer schon einen Vertrag hat, wird das Loeschen verhindert
+ if (isset($_POST['vertrag_id']) && is_numeric($_POST['vertrag_id']))
{
- $projektbetreuer = new projektbetreuer();
-
- if($projektbetreuer->delete($_POST['person_id'], $_POST['projektarbeit_id'], $_POST['betreuerart_kurzbz']))
- {
- $return = true;
- }
- else
- {
- $errormsg = $projektbetreuer->errormsg;
- $return = false;
- }
+ $return = false;
+ $errormsg = 'Löschen nur nach Stornierung des Vertrags möglich.';
}
else
{
- $return = false;
- $errormsg = 'Fehlerhafte Parameteruebergabe';
+ //Loescht einen Projektbetreuer Eintrag
+ if (isset($_POST['person_id']) && is_numeric($_POST['person_id'])) {
+ $projektbetreuer = new projektbetreuer();
+ if ($projektbetreuer->delete($_POST['person_id'], $_POST['projektarbeit_id'], $_POST['betreuerart_kurzbz'])) {
+ $return = true;
+ } else {
+ $errormsg = $projektbetreuer->errormsg;
+ $return = false;
+ }
+ } else {
+ $return = false;
+ $errormsg = 'Fehlerhafte Parameteruebergabe';
+ }
}
}
}
diff --git a/content/student/studentprojektarbeit.js.php b/content/student/studentprojektarbeit.js.php
index 4ab33167d..765f3738c 100644
--- a/content/student/studentprojektarbeit.js.php
+++ b/content/student/studentprojektarbeit.js.php
@@ -1,1126 +1,1397 @@
-,
- * Andreas Oesterreicher and
- * Rudolf Hangl .
- */
-
-require_once('../../config/vilesci.config.inc.php');
-
-?>
-// *********** Globale Variablen *****************//
-var StudentProjektarbeitSelectID=null; //Id der Projektarbeit die nach dem Rebuild markiert werden soll
-var StudentProjektarbeitTreeDatasource=null; //Datasource des Projektarbeit Trees
-var StudentProjektbetreuerTreeDatasource=null; //Datasource des Projektbetreuer Trees
-var StudentProjektbetreuerSelectPersonID=null;
-var StudentProjektbetreuerSelectProjektarbeitID=null;
-var StudentProjektbetreuerSelectBetreuerartKurzbz=null;
-// ********** Observer und Listener ************* //
-
-// ****
-// * Observer fuer Projektarbeit Tree
-// * startet Rebuild nachdem das Refresh
-// * der Datasource fertig ist
-// ****
-var StudentProjektarbeitTreeSinkObserver =
-{
- onBeginLoad : function(pSink)
- {
- //Eventlistener waehrend des Ladevorganges deaktivieren da es sonst
- //zu Problemen kommt
- tree = document.getElementById('student-projektarbeit-tree');
- tree.removeEventListener('select', StudentProjektarbeitAuswahl, false);
- },
- onInterrupt : function(pSink) {},
- onResume : function(pSink) {},
- onError : function(pSink, pStatus, pError) {},
- onEndLoad : function(pSink)
- {
- netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
- document.getElementById('student-projektarbeit-tree').builder.rebuild();
- }
-};
-
-// ****
-// * Nach dem Rebuild wird die Projektarbeit wieder
-// * markiert
-// ****
-var StudentProjektarbeitTreeListener =
-{
- willRebuild : function(builder) { },
- didRebuild : function(builder)
- {
- tree = document.getElementById('student-projektarbeit-tree');
- tree.addEventListener('select', StudentProjektarbeitAuswahl, false);
- //timeout nur bei Mozilla notwendig da sonst die rows
- //noch keine values haben. Ab Seamonkey funktionierts auch
- //ohne dem setTimeout
- window.setTimeout(StudentProjektarbeitTreeSelectID,10);
- }
-};
-
-// ****
-// * Observer fuer Projektbetreuer Tree
-// * startet Rebuild nachdem das Refresh
-// * der Datasource fertig ist
-// ****
-var StudentProjektbetreuerTreeSinkObserver =
-{
- onBeginLoad : function(pSink)
- {
- //Eventlistener waehrend des Ladevorganges deaktivieren da es sonst
- //zu Problemen kommt
- tree = document.getElementById('student-projektbetreuer-tree');
- tree.removeEventListener('select', StudentProjektbetreuerAuswahl, false);
- },
- onInterrupt : function(pSink) {},
- onResume : function(pSink) {},
- onError : function(pSink, pStatus, pError) {},
- onEndLoad : function(pSink)
- {
- netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
- document.getElementById('student-projektbetreuer-tree').builder.rebuild();
- }
-};
-
-// ****
-// * Nach dem Rebuild wird die Projektbetreuer wieder
-// * markiert
-// ****
-var StudentProjektbetreuerTreeListener =
-{
- willRebuild : function(builder) { },
- didRebuild : function(builder)
- {
- tree = document.getElementById('student-projektbetreuer-tree');
- tree.addEventListener('select', StudentProjektbetreuerAuswahl, false);
- //timeout nur bei Mozilla notwendig da sonst die rows
- //noch keine values haben. Ab Seamonkey funktionierts auch
- //ohne dem setTimeout
- window.setTimeout(StudentProjektbetreuerTreeSelectID,10);
- }
-};
-// ****************** FUNKTIONEN ************************** //
-
-// ****
-// * Laedt die Daten fuer den Projektarbeiten Tree
-// ****
-function StudentProjektarbeitTreeLoad(uid)
-{
- var tree = document.getElementById('student-projektarbeit-tree');
- var url='rdf/projektarbeit.rdf.php?student_uid='+uid+"&"+gettimestamp();
-
- //Alte Observer entfernen
- try
- {
- StudentProjektarbeitTreeDatasource.removeXMLSinkObserver(StudentProjektarbeitTreeSinkObserver);
- tree.builder.removeListener(StudentProjektarbeitTreeListener);
- }
- catch(e)
- {}
-
- //Alte DS entfernen
- var oldDatasources = tree.database.GetDataSources();
- while(oldDatasources.hasMoreElements())
- {
- tree.database.RemoveDataSource(oldDatasources.getNext());
- }
- //Refresh damit die entfernten DS auch wirklich entfernt werden
- tree.builder.rebuild();
-
- var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
- StudentProjektarbeitTreeDatasource = rdfService.GetDataSource(url);
- StudentProjektarbeitTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
- StudentProjektarbeitTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
- tree.database.AddDataSource(StudentProjektarbeitTreeDatasource);
- StudentProjektarbeitTreeDatasource.addXMLSinkObserver(StudentProjektarbeitTreeSinkObserver);
- tree.builder.addListener(StudentProjektarbeitTreeListener);
-
- StudentProjektarbeitDisableFields(false);
-}
-
-// ****
-// * Deaktiviert alle Felder in diesem Tab
-// ****
-function StudentProjektarbeitDisableAll()
-{
- //Tree Leeren
- var tree = document.getElementById('student-projektarbeit-tree');
-
- //Alte DS entfernen
- var oldDatasources = tree.database.GetDataSources();
- while(oldDatasources.hasMoreElements())
- {
- tree.database.RemoveDataSource(oldDatasources.getNext());
- }
- //Refresh damit die entfernten DS auch wirklich entfernt werden
- tree.builder.rebuild();
-
- StudentProjektarbeitDisableFields(true);
-}
-
-// ****
-// * De-/Aktiviert die ProjektarbeitFelder
-// ****
-function StudentProjektarbeitDisableFields(val)
-{
- document.getElementById('student-projektarbeit-button-neu').disabled=val;
- document.getElementById('student-projektarbeit-button-loeschen').disabled=val;
-
- if(val)
- {
- StudentProjektarbeitDetailDisableFields(val);
- }
-}
-
-// ****
-// * De-/Aktiviert die ProjektarbeitDetailFelder
-// ****
-function StudentProjektarbeitDetailDisableFields(val)
-{
- document.getElementById('student-projektarbeit-button-speichern').disabled=val;
- document.getElementById('student-projektarbeit-menulist-projekttyp').disabled=val;
- document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').disabled=val;
- document.getElementById('student-projektarbeit-menulist-lehreinheit').disabled=val;
- document.getElementById('student-projektarbeit-menulist-firma').disabled=val;
- document.getElementById('student-projektarbeit-menulist-note').disabled=val;
- document.getElementById('student-projektarbeit-textbox-titel').disabled=val;
- document.getElementById('student-projektarbeit-textbox-titel_english').disabled=val;
- document.getElementById('student-projektarbeit-textbox-punkte').disabled=val;
- document.getElementById('student-projektarbeit-datum-beginn').disabled=val;
- document.getElementById('student-projektarbeit-datum-ende').disabled=val;
- document.getElementById('student-projektarbeit-textbox-faktor').disabled=val;
- document.getElementById('student-projektarbeit-checkbox-freigegeben').disabled=val;
- document.getElementById('student-projektarbeit-datum-gesperrtbis').disabled=val;
- document.getElementById('student-projektarbeit-textbox-stundensatz').disabled=val;
- document.getElementById('student-projektarbeit-textbox-gesamtstunden').disabled=val;
- document.getElementById('student-projektarbeit-textbox-themenbereich').disabled=val;
- document.getElementById('student-projektarbeit-textbox-anmerkung').disabled=val;
- document.getElementById('student-projektarbeit-checkbox-final').disabled=val;
-
- if(val)
- StudentProjektarbeitResetFields();
-}
-
-// ****
-// * Wenn in das Gesperrt-Feld ein Wert eingetragen wird, dann wird das Freigegeben Hackerl entfernt
-function StudentProjektarbeitGesperrtChanged()
-{
- if(document.getElementById('student-projektarbeit-datum-gesperrtbis').value!='')
- {
- document.getElementById('student-projektarbeit-checkbox-freigegeben').checked=false;
- }
-}
-
-// ****
-// * Resetet die ProjektarbeitDetailFelder
-// ****
-function StudentProjektarbeitResetFields()
-{
- document.getElementById('student-projektarbeit-textbox-titel').value='';
- document.getElementById('student-projektarbeit-textbox-titel_english').value='';
- document.getElementById('student-projektarbeit-textbox-punkte').value='0.0';
- document.getElementById('student-projektarbeit-datum-beginn').value='';
- document.getElementById('student-projektarbeit-datum-ende').value='';
- document.getElementById('student-projektarbeit-textbox-faktor').value='1.0';
- document.getElementById('student-projektarbeit-checkbox-freigegeben').checked=true;
- document.getElementById('student-projektarbeit-datum-gesperrtbis').value='';
- document.getElementById('student-projektarbeit-textbox-stundensatz').value='80.0';
- document.getElementById('student-projektarbeit-textbox-gesamtstunden').value='3.0';
- document.getElementById('student-projektarbeit-textbox-themenbereich').value='';
- document.getElementById('student-projektarbeit-textbox-anmerkung').value='';
- document.getElementById('student-projektarbeit-menulist-firma').value='';
- document.getElementById('student-projektarbeit-menulist-note').value='';
- document.getElementById('student-projektarbeit-checkbox-final').checked=true;
-
- var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value;
-
- var url = 'rdf/studiengang.rdf.php?studiengang_kz='+stg_kz+'&'+gettimestamp();
- var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
- getService(Components.interfaces.nsIRDFService);
-
- var dsource = rdfService.GetDataSourceBlocking(url);
- var subject = rdfService.GetResource("http://www.technikum-wien.at/studiengang/" + stg_kz);
- var predicateNS = "http://www.technikum-wien.at/studiengang/rdf";
- studiengangstyp = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#typ" ));
-
- if(studiengangstyp=='m')
- document.getElementById('student-projektarbeit-menulist-projekttyp').value='Diplom';
- else
- document.getElementById('student-projektarbeit-menulist-projekttyp').value='Bachelor';
-}
-
-// *****
-// * Markiert einen Datensatz im Tree
-// *****
-function StudentProjektarbeitTreeSelectID()
-{
- var tree=document.getElementById('student-projektarbeit-tree');
- if(tree.view)
- var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln
- else
- return false;
-
- //In der globalen Variable ist die zu selektierende Eintrag gespeichert
- if(StudentProjektarbeitSelectID!=null)
- {
- for(var i = 0;i < items; i++)
- {
- //ID der row holen
- col = tree.columns ? tree.columns["student-projektarbeit-tree-projektarbeit_id"] : "student-projektarbeit-tree-projektarbeit_id";
- var id=tree.view.getCellText(i,col);
-
- //wenn dies die zu selektierende Zeile
- if(id == StudentProjektarbeitSelectID)
- {
- //Zeile markieren
- tree.view.selection.select(i);
- //Sicherstellen, dass die Zeile im sichtbaren Bereich liegt
- tree.treeBoxObject.ensureRowIsVisible(i);
- StudentIOSelectID=null;
- return true;
- }
- }
- }
-}
-
-// ****
-// * Laedt die Daten der Projektarbeit zum Bearbeiten
-// ****
-function StudentProjektarbeitAuswahl()
-{
- netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
- var tree = document.getElementById('student-projektarbeit-tree');
-
- if (tree.currentIndex==-1) return;
-
- StudentProjektarbeitDetailDisableFields(false);
- StudentProjektbetreuerDetailDisableFields(true);
-
- //Ausgewaehlte Nr holen
- var col = tree.columns ? tree.columns["student-projektarbeit-tree-projektarbeit_id"] : "student-projektarbeit-treecol-projektarbeit_id";
- var projektarbeit_id=tree.view.getCellText(tree.currentIndex,col);
-
- //Daten holen
- var url = 'rdf/projektarbeit.rdf.php?projektarbeit_id='+projektarbeit_id+'&'+gettimestamp();
-
- var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
- getService(Components.interfaces.nsIRDFService);
-
- var dsource = rdfService.GetDataSourceBlocking(url);
-
- var subject = rdfService.GetResource("http://www.technikum-wien.at/projektarbeit/" + projektarbeit_id);
-
- var predicateNS = "http://www.technikum-wien.at/projektarbeit/rdf";
-
- //Daten holen
-
- projekttyp_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#projekttyp_kurzbz" ));
- titel = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#titel" ));
- titel_english = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#titel_english" ));
- lehreinheit_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehreinheit_id" ));
- lehrveranstaltung_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehrveranstaltung_id" ));
- lehreinheit_stsem = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehreinheit_stsem" ));
- student_uid = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#student_uid" ));
- firma_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#firma_id" ));
- note = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#note" ));
- punkte = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#punkte" ));
- beginn = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#beginn" ));
- ende = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#ende" ));
- faktor = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#faktor" ));
- freigegeben = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#freigegeben" ));
- gesperrtbis = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#gesperrtbis" ));
- stundensatz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#stundensatz" ));
- themenbereich = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#themenbereich" ));
- anmerkung = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmerkung" ));
- gesamtstunden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#gesamtstunden" ));
- final = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#final" ));
-
- var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value;
-
- //Lehrveranstaltung DropDown laden
- var LvDropDown = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung');
- url='rdf/lehrveranstaltung.rdf.php?stg_kz='+stg_kz+"&projektarbeit=true&withlv="+lehrveranstaltung_id+"&"+gettimestamp();
-
- //Alte DS entfernen
- var oldDatasources = LvDropDown.database.GetDataSources();
- while(oldDatasources.hasMoreElements())
- {
- LvDropDown.database.RemoveDataSource(oldDatasources.getNext());
- }
- //Refresh damit die entfernten DS auch wirklich entfernt werden
- LvDropDown.builder.rebuild();
-
- var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
- var datasource = rdfService.GetDataSourceBlocking(url);
- datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
- datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
- LvDropDown.database.AddDataSource(datasource);
-
- LvDropDown.builder.rebuild();
-
- // Lehreinheit Drop Down laden
- var LeDropDown = document.getElementById('student-projektarbeit-menulist-lehreinheit');
- url='rdf/lehreinheit.rdf.php?lehrveranstaltung_id='+lehrveranstaltung_id+"&studiensemester_kurzbz="+lehreinheit_stsem+"&"+gettimestamp();
-
- //Alte DS entfernen
- var oldDatasources = LeDropDown.database.GetDataSources();
- while(oldDatasources.hasMoreElements())
- {
- LeDropDown.database.RemoveDataSource(oldDatasources.getNext());
- }
- //Refresh damit die entfernten DS auch wirklich entfernt werden
- LeDropDown.builder.rebuild();
-
- var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
- var datasource = rdfService.GetDataSourceBlocking(url);
- datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
- datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
- LeDropDown.database.AddDataSource(datasource);
-
- LeDropDown.builder.rebuild();
-
- //Werte setzen
- document.getElementById('student-projektarbeit-textbox-projektarbeit_id').value=projektarbeit_id;
- document.getElementById('student-projektarbeit-menulist-projekttyp').value=projekttyp_kurzbz;
- document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').value=lehrveranstaltung_id;
- document.getElementById('student-projektarbeit-menulist-lehreinheit').value=lehreinheit_id;
- document.getElementById('student-projektarbeit-textbox-titel').value=titel;
- document.getElementById('student-projektarbeit-textbox-titel_english').value=titel_english;
- document.getElementById('student-projektarbeit-menulist-firma').value=firma_id;
- document.getElementById('student-projektarbeit-menulist-note').value=note;
- document.getElementById('student-projektarbeit-textbox-punkte').value=punkte;
- document.getElementById('student-projektarbeit-datum-beginn').value=beginn;
- document.getElementById('student-projektarbeit-datum-ende').value=ende;
- document.getElementById('student-projektarbeit-textbox-faktor').value=faktor;
- if(freigegeben=='Ja')
- document.getElementById('student-projektarbeit-checkbox-freigegeben').checked=true;
- else
- document.getElementById('student-projektarbeit-checkbox-freigegeben').checked=false;
- document.getElementById('student-projektarbeit-datum-gesperrtbis').value=gesperrtbis;
- document.getElementById('student-projektarbeit-textbox-stundensatz').value=stundensatz;
- document.getElementById('student-projektarbeit-textbox-gesamtstunden').value=gesamtstunden;
- document.getElementById('student-projektarbeit-textbox-themenbereich').value=themenbereich;
- document.getElementById('student-projektarbeit-textbox-anmerkung').value=anmerkung;
- document.getElementById('student-projektarbeit-checkbox-neu').checked=false;
- if(final=='Ja')
- document.getElementById('student-projektarbeit-checkbox-final').checked=true;
- else
- document.getElementById('student-projektarbeit-checkbox-final').checked=false;
-
- // **** BETREUER **** //
- var tree = document.getElementById('student-projektbetreuer-tree');
- var url='rdf/projektbetreuer.rdf.php?projektarbeit_id='+projektarbeit_id+"&"+gettimestamp();
-
- try
- {
- StudentProjektbetreuerTreeDatasource.removeXMLSinkObserver(StudentProjektbetreuerTreeSinkObserver);
- tree.builder.removeListener(StudentProjektbetreuerTreeListener);
- }
- catch(e)
- {}
-
- //Alte DS entfernen
- var oldDatasources = tree.database.GetDataSources();
- while(oldDatasources.hasMoreElements())
- {
- tree.database.RemoveDataSource(oldDatasources.getNext());
- }
- //Refresh damit die entfernten DS auch wirklich entfernt werden
- tree.builder.rebuild();
-
- var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
- StudentProjektbetreuerTreeDatasource = rdfService.GetDataSource(url);
- StudentProjektbetreuerTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
- StudentProjektbetreuerTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
- tree.database.AddDataSource(StudentProjektbetreuerTreeDatasource);
- StudentProjektbetreuerTreeDatasource.addXMLSinkObserver(StudentProjektbetreuerTreeSinkObserver);
- tree.builder.addListener(StudentProjektbetreuerTreeListener);
- StudentProjektbetreuerDisableFields(false);
-
-}
-
-// ****
-// * Refresht das Firma DropDown
-// ****
-function StudentProjektarbeitFirmaRefresh()
-{
- netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
- var tree = document.getElementById('student-projektarbeit-menulist-firma');
- var url="rdf/firma.rdf.php?optional=true&"+gettimestamp();
-
- //Alte DS entfernen
- var oldDatasources = tree.database.GetDataSources();
- while(oldDatasources.hasMoreElements())
- {
- tree.database.RemoveDataSource(oldDatasources.getNext());
- }
- //Refresh damit die entfernten DS auch wirklich entfernt werden
- tree.builder.rebuild();
-
- var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
- var myDatasource = rdfService.GetDataSource(url);
- tree.database.AddDataSource(myDatasource);
-}
-
-// ****
-// * Speichert die Projektarbeit Daten
-// ****
-function StudentProjektarbeitSpeichern()
-{
- netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-
- projektarbeit_id = document.getElementById('student-projektarbeit-textbox-projektarbeit_id').value;
- projekttyp_kurzbz = document.getElementById('student-projektarbeit-menulist-projekttyp').value;
- lehrveranstaltung_id = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').value;
- lehreinheit_id = document.getElementById('student-projektarbeit-menulist-lehreinheit').value;
- titel = document.getElementById('student-projektarbeit-textbox-titel').value;
- titel_english = document.getElementById('student-projektarbeit-textbox-titel_english').value;
- firma_id = document.getElementById('student-projektarbeit-menulist-firma').value;
- note = document.getElementById('student-projektarbeit-menulist-note').value;
- punkte = document.getElementById('student-projektarbeit-textbox-punkte').value;
- beginn = document.getElementById('student-projektarbeit-datum-beginn').value;
- ende = document.getElementById('student-projektarbeit-datum-ende').value;
- faktor = document.getElementById('student-projektarbeit-textbox-faktor').value;
- freigegeben = document.getElementById('student-projektarbeit-checkbox-freigegeben').checked;
- gesperrtbis = document.getElementById('student-projektarbeit-datum-gesperrtbis').value;
- stundensatz = document.getElementById('student-projektarbeit-textbox-stundensatz').value;
- gesamtstunden = document.getElementById('student-projektarbeit-textbox-gesamtstunden').value;
- themenbereich = document.getElementById('student-projektarbeit-textbox-themenbereich').value;
- anmerkung = document.getElementById('student-projektarbeit-textbox-anmerkung').value;
- neu = document.getElementById('student-projektarbeit-checkbox-neu').checked;
- final = document.getElementById('student-projektarbeit-checkbox-final').checked;
-
- student_uid =document.getElementById('student-detail-textbox-uid').value;
- studiengang_kz = document.getElementById('student-prestudent-menulist-studiengang_kz').value;
-
- if(student_uid=='')
- {
- alert('UID dieser Person konnte nicht ermittelt werden');
- return false;
- }
-
- //Datum pruefen
- if(beginn!='' && !CheckDatum(beginn))
- {
- alert('Beginn ist ungueltig');
- return false;
- }
-
- if(ende!='' && !CheckDatum(ende))
- {
- alert('Ende ist ungueltig');
- return false;
- }
-
- if(gesperrtbis!='' && !CheckDatum(gesperrtbis))
- {
- alert('gesperrtbis ist ungueltig');
- return false;
- }
-
- if(lehreinheit_id=='')
- {
- alert('Bitte eine Lehreinheit Auswaehlen');
- return false;
- }
-
- if(isNaN(gesamtstunden))
- gesamtstunden=0;
-
- var url = 'content/student/studentDBDML.php';
- var req = new phpRequest(url,'','');
-
- req.add('type', 'saveprojektarbeit');
-
- req.add('projektarbeit_id', projektarbeit_id);
- req.add('projekttyp_kurzbz', projekttyp_kurzbz );
- req.add('titel', titel);
- req.add('titel_english', titel_english);
- req.add('lehreinheit_id', lehreinheit_id);
- req.add('student_uid', student_uid);
- req.add('firma_id', firma_id);
- req.add('note', note);
- req.add('punkte', punkte);
- req.add('beginn', ConvertDateToISO(beginn));
- req.add('ende', ConvertDateToISO(ende));
- req.add('faktor', faktor);
- req.add('freigegeben', freigegeben);
- req.add('gesperrtbis', ConvertDateToISO(gesperrtbis));
- req.add('stundensatz', stundensatz);
- req.add('gesamtstunden', gesamtstunden);
- req.add('themenbereich', themenbereich);
- req.add('anmerkung', anmerkung);
- req.add('neu', neu);
- req.add('studiengang_kz', studiengang_kz);
- req.add('final', final);
-
- var response = req.executePOST();
-
- var val = new ParseReturnValue(response)
-
- if (!val.dbdml_return)
- {
- if(val.dbdml_errormsg=='')
- alert(response)
- else
- alert(val.dbdml_errormsg)
- }
- else
- {
- StudentProjektarbeitSelectID=val.dbdml_data;
- StudentProjektarbeitTreeDatasource.Refresh(false); //non blocking
- SetStatusBarText('Daten wurden gespeichert');
- StudentProjektarbeitDetailDisableFields(true);
- }
-}
-
-// ****
-// * Aktiviert die Detailfelder zum Neu Anlegen einer Projektarbeit
-// ****
-
-function StudentProjektarbeitNeu()
-{
- netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-
- document.getElementById('student-projektarbeit-checkbox-neu').checked=true;
- document.getElementById('student-projektarbeit-textbox-projektarbeit_id').value='';
- StudentProjektarbeitResetFields();
- StudentProjektarbeitDetailDisableFields(false);
- StudentProjektbetreuerDisableFields(true);
- var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value;
-
- //Lehrveranstaltung DropDown laden
- var LvDropDown = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung');
- url='rdf/lehrveranstaltung.rdf.php?stg_kz='+stg_kz+"&projektarbeit=true&"+gettimestamp();
-
- //Alte DS entfernen
- var oldDatasources = LvDropDown.database.GetDataSources();
- while(oldDatasources.hasMoreElements())
- {
- LvDropDown.database.RemoveDataSource(oldDatasources.getNext());
- }
- //Refresh damit die entfernten DS auch wirklich entfernt werden
- LvDropDown.builder.rebuild();
-
- var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
- var datasource = rdfService.GetDataSourceBlocking(url);
- datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
- datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
- LvDropDown.database.AddDataSource(datasource);
-
- LvDropDown.builder.rebuild();
-}
-
-// ****
-// * Loescht den markierten Eintrag
-// ****
-function StudentProjektarbeitLoeschen()
-{
- netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
- var tree = document.getElementById('student-projektarbeit-tree');
-
- studiengang_kz = document.getElementById('student-prestudent-menulist-studiengang_kz').value;
-
- if (tree.currentIndex==-1)
- {
- alert('Bitte zuerst einen Eintrag markieren');
- return false;
- }
-
- //Ausgewaehlte Nr holen
- var col = tree.columns ? tree.columns["student-projektarbeit-tree-projektarbeit_id"] : "student-projektarbeit-tree-projektarbeit_id";
- var projektarbeit_id=tree.view.getCellText(tree.currentIndex,col);
- var url = 'content/student/studentDBDML.php';
-
- var req = new phpRequest(url,'','');
-
- req.add('type', 'deleteprojektarbeit');
-
- req.add('projektarbeit_id', projektarbeit_id);
- req.add('studiengang_kz', studiengang_kz);
-
- var response = req.executePOST();
-
- var val = new ParseReturnValue(response)
-
- if (!val.dbdml_return)
- {
- if(val.dbdml_errormsg=='')
- alert(response)
- else
- alert(val.dbdml_errormsg)
- }
- else
- {
- StudentProjektarbeitSelectID=null;
- StudentProjektarbeitTreeDatasource.Refresh(false); //non blocking
- SetStatusBarText('Daten wurden geloescht');
- StudentProjektarbeitDetailDisableFields(true);
- }
-}
-
-// ****
-// * Wenn die Lehrveranstaltung geaendert wird, dann
-// * muss das LehreinheitenDropDown neu geladen werden
-// ****
-function StudentProjektarbeitLVAChange()
-{
- netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-
- lehrveranstaltung_id = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').value;
- studiensemester_kurzbz = getStudiensemester();
-
- // Lehreinheit Drop Down laden
- var LeDropDown = document.getElementById('student-projektarbeit-menulist-lehreinheit');
- url='rdf/lehreinheit.rdf.php?lehrveranstaltung_id='+lehrveranstaltung_id+"&studiensemester_kurzbz="+studiensemester_kurzbz+"&"+gettimestamp();
-
- //Alte DS entfernen
- var oldDatasources = LeDropDown.database.GetDataSources();
- while(oldDatasources.hasMoreElements())
- {
- LeDropDown.database.RemoveDataSource(oldDatasources.getNext());
- }
- //Refresh damit die entfernten DS auch wirklich entfernt werden
- LeDropDown.builder.rebuild();
-
- var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
- var datasource = rdfService.GetDataSourceBlocking(url);
- datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
- datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
- LeDropDown.database.AddDataSource(datasource);
-
- LeDropDown.selectedIndex=-1;
-
- LeDropDown.builder.rebuild();
-}
-
-// ******************* PROJEKTBETREUER ************************* //
-
-// *****
-// * Markiert eine Zeile im Projektbetreuer Tree
-// *****
-function StudentProjektbetreuerTreeSelectID()
-{
- var tree=document.getElementById('student-projektbetreuer-tree');
- if(tree.view)
- var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln
- else
- return false;
-
-
- //In der globalen Variable ist die zu selektierende Eintrag gespeichert
- if(StudentProjektbetreuerSelectPersonID!=null)
- {
- for(var i = 0;i < items; i++)
- {
- //ID der row holen
- col = tree.columns ? tree.columns["student-projektbetreuer-tree-projektarbeit_id"] : "student-projektbetreuer-tree-projektarbeit_id";
- var projektarbeit_id=tree.view.getCellText(i,col);
- col = tree.columns ? tree.columns["student-projektbetreuer-tree-person_id"] : "student-projektbetreuer-tree-person_id";
- var person_id=tree.view.getCellText(i,col);
- col = tree.columns ? tree.columns["student-projektbetreuer-tree-betreuerart_kurzbz"] : "student-projektbetreuer-tree-betreuerart_kurzbz";
- var betreuerart_kurzbz=tree.view.getCellText(i,col);
-
- //wenn dies die zu selektierende Zeile
- if(person_id == StudentProjektbetreuerSelectPersonID && projektarbeit_id == StudentProjektbetreuerSelectProjektarbeitID && betreuerart_kurzbz == StudentProjektbetreuerSelectBetreuerartKurzbz)
- {
- //Zeile markieren
- tree.view.selection.select(i);
- //Sicherstellen, dass die Zeile im sichtbaren Bereich liegt
- tree.treeBoxObject.ensureRowIsVisible(i);
- StudentIOSelectID=null;
- return true;
- }
- }
- }
-}
-
-// *****
-// * Bei Auswahl eines Betreuers, wird dieser zum Bearbeiten geladen
-// *****
-function StudentProjektbetreuerAuswahl()
-{
- netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
- var tree = document.getElementById('student-projektbetreuer-tree');
-
- if (tree.currentIndex==-1) return;
-
- StudentProjektbetreuerDetailDisableFields(false);
-
- //Ausgewaehlte Nr holen
- var col = tree.columns ? tree.columns["student-projektbetreuer-tree-projektarbeit_id"] : "student-projektbetreuer-treecol-projektarbeit_id";
- var projektarbeit_id=tree.view.getCellText(tree.currentIndex,col);
- var col = tree.columns ? tree.columns["student-projektbetreuer-tree-person_id"] : "student-projektbetreuer-treecol-person_id";
- var person_id=tree.view.getCellText(tree.currentIndex,col);
- var col = tree.columns ? tree.columns["student-projektbetreuer-tree-betreuerart_kurzbz"] : "student-projektbetreuer-treecol-betreuerart_kurzbz";
- var betreuerart_kurzbz=tree.view.getCellText(tree.currentIndex,col);
-
- if(projektarbeit_id=='' || person_id=='' || betreuerart_kurzbz=='')
- {
- debug('StudentProjektbetreuerAuswahl: Fehler beim Laden');
- return false;
- }
-
- //Daten holen
- var url = 'rdf/projektbetreuer.rdf.php?projektarbeit_id='+projektarbeit_id+'&person_id='+person_id+'&betreuerart_kurzbz='+betreuerart_kurzbz+'&'+gettimestamp();
-
- var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
- getService(Components.interfaces.nsIRDFService);
-
- var dsource = rdfService.GetDataSourceBlocking(url);
-
- var subject = rdfService.GetResource("http://www.technikum-wien.at/projektbetreuer/" + person_id+'/'+projektarbeit_id+'/'+betreuerart_kurzbz);
-
- var predicateNS = "http://www.technikum-wien.at/projektbetreuer/rdf";
-
- //Daten holen
-
- note = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#note" ));
- faktor = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#faktor" ));
- name = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#name" ));
- punkte = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#punkte" ));
- stunden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#stunden" ));
- stundensatz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#stundensatz" ));
- betreuerart_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#betreuerart_kurzbz" ));
- person_nachname = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#person_nachname" ));
-
- StudentProjektbetreuerMenulistPersonLoad(document.getElementById('student-projektbetreuer-menulist-person'), person_nachname);
-
- //Werte setzen
- MenulistSelectItemOnValue('student-projektbetreuer-menulist-person', person_id);
- document.getElementById('student-projektbetreuer-menulist-note').value=note;
- document.getElementById('student-projektbetreuer-textbox-faktor').value=faktor;
- document.getElementById('student-projektbetreuer-textbox-name').value=name;
- document.getElementById('student-projektbetreuer-textbox-punkte').value=punkte;
- document.getElementById('student-projektbetreuer-textbox-stunden').value=stunden;
- document.getElementById('student-projektbetreuer-textbox-stundensatz').value=stundensatz;
- document.getElementById('student-projektbetreuer-menulist-betreuerart').value=betreuerart_kurzbz;
- document.getElementById('student-projektbetreuer-textbox-betreuerart_kurzbz_old').value=betreuerart_kurzbz;
- document.getElementById('student-projektbetreuer-textbox-person_id').value=person_id;
- document.getElementById('student-projektbetreuer-checkbox-neu').checked=false;
-}
-
-// *****
-// * De-/Aktiviert die Buttons
-// *****
-function StudentProjektbetreuerDisableFields(val)
-{
- document.getElementById('student-projektbetreuer-button-neu').disabled=val;
- document.getElementById('student-projektbetreuer-button-loeschen').disabled=val;
-
- if(val)
- {
- tree = document.getElementById('student-projektbetreuer-tree');
- var oldDatasources = tree.database.GetDataSources();
- while(oldDatasources.hasMoreElements())
- {
- tree.database.RemoveDataSource(oldDatasources.getNext());
- }
- tree.builder.rebuild();
-
- StudentProjektbetreuerDetailDisableFields(val);
- }
-}
-
-// ****
-// * De-/Aktiviert die Detailfelder
-// ****
-function StudentProjektbetreuerDetailDisableFields(val)
-{
- document.getElementById('student-projektbetreuer-menulist-person').disabled=val;
- document.getElementById('student-projektbetreuer-menulist-note').disabled=val;
- document.getElementById('student-projektbetreuer-menulist-betreuerart').disabled=val;
- document.getElementById('student-projektbetreuer-textbox-faktor').disabled=val;
- document.getElementById('student-projektbetreuer-textbox-name').disabled=val;
- document.getElementById('student-projektbetreuer-textbox-punkte').disabled=val;
- document.getElementById('student-projektbetreuer-textbox-stunden').disabled=val;
- document.getElementById('student-projektbetreuer-textbox-stundensatz').disabled=val;
- document.getElementById('student-projektbetreuer-button-speichern').disabled=val;
- document.getElementById('student-projektbetreuer-button-neueperson').disabled=val;
- document.getElementById('student-projektbetreuer-button-kontaktdaten').disabled=val;
-}
-
-// ****
-// * Resettet die Detailfelder
-// ****
-function StudentProjektbetreuerDetailReset()
-{
- document.getElementById('student-projektbetreuer-textbox-faktor').value='1';
- document.getElementById('student-projektbetreuer-textbox-name').value='';
- document.getElementById('student-projektbetreuer-menulist-note').value='';
-
- document.getElementById('student-projektbetreuer-textbox-punkte').value='0.0';
-
- if(document.getElementById('student-projektarbeit-menulist-projekttyp').value=='Diplom')
- {
- document.getElementById('student-projektbetreuer-textbox-stunden').value='5.0';
- document.getElementById('student-projektbetreuer-menulist-betreuerart').value='Erstbegutachter';
- }
- else if(document.getElementById('student-projektarbeit-menulist-projekttyp').value=='Bachelor')
- {
- document.getElementById('student-projektbetreuer-textbox-stunden').value='4.0';
- document.getElementById('student-projektbetreuer-menulist-betreuerart').value='Begutachter';
- }
- else if(document.getElementById('student-projektarbeit-menulist-projekttyp').value=='Praktikum')
- {
- document.getElementById('student-projektbetreuer-menulist-betreuerart').value='Betreuer';
- }
- else if(document.getElementById('student-projektarbeit-menulist-projekttyp').value=='Projekt')
- {
- document.getElementById('student-projektbetreuer-menulist-betreuerart').value='Betreuer';
- }
- else
- {
- document.getElementById('student-projektbetreuer-textbox-stunden').value='0.0';
- document.getElementById('student-projektbetreuer-menulist-betreuerart').value='Begutachter';
- }
- document.getElementById('student-projektbetreuer-textbox-stundensatz').value='80.0';
- document.getElementById('student-projektbetreuer-menulist-person').value='';
-}
-
-// ****
-// * Laedt dynamisch die Personen fuer das DropDown Menue
-// * Es muessen mindestens 3 Zeichen in das DropDown Menue eingegeben werden
-// ****
-function StudentProjektbetreuerMenulistPersonLoad(menulist, filter)
-{
- netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-
- if(typeof(filter)=='undefined')
- v = menulist.value;
- else
- v = filter;
-
- if(v.length>2)
- {
- var url = 'rdf/person.rdf.php?filter='+encodeURIComponent(v)+'&'+gettimestamp();
- //nurmittitel=&
- var oldDatasources = menulist.database.GetDataSources();
- while(oldDatasources.hasMoreElements())
- {
- menulist.database.RemoveDataSource(oldDatasources.getNext());
- }
- //Refresh damit die entfernten DS auch wirklich entfernt werden
- menulist.builder.rebuild();
-
- var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
- if(typeof(filter)=='undefined')
- var datasource = rdfService.GetDataSource(url);
- else
- var datasource = rdfService.GetDataSourceBlocking(url);
- datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
- datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
- menulist.database.AddDataSource(datasource);
- if(typeof(filter)!='undefined')
- menulist.builder.rebuild();
- }
-}
-
-// ****
-// * Speichert die Projektbetreuer Daten
-// ****
-function StudentProjektbetreuerSpeichern()
-{
- netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-
- person_id = MenulistGetSelectedValue('student-projektbetreuer-menulist-person');
- note = document.getElementById('student-projektbetreuer-menulist-note').value;
- faktor = document.getElementById('student-projektbetreuer-textbox-faktor').value;
- name = document.getElementById('student-projektbetreuer-textbox-name').value;
- punkte = document.getElementById('student-projektbetreuer-textbox-punkte').value;
- stunden = document.getElementById('student-projektbetreuer-textbox-stunden').value;
- stundensatz = document.getElementById('student-projektbetreuer-textbox-stundensatz').value;
- betreuerart_kurzbz = document.getElementById('student-projektbetreuer-menulist-betreuerart').value;
- betreuerart_kurzbz_old = document.getElementById('student-projektbetreuer-textbox-betreuerart_kurzbz_old').value;
- person_id_old = document.getElementById('student-projektbetreuer-textbox-person_id').value;
- neu = document.getElementById('student-projektbetreuer-checkbox-neu').checked;
-
- studiengang_kz = document.getElementById('student-prestudent-menulist-studiengang_kz').value;
-
- var tree = document.getElementById('student-projektarbeit-tree');
-
- if(person_id=='')
- {
- alert('Bitte zuerst eine/n BetreuerIn auswaehlen');
- return false;
- }
-
- if (tree.currentIndex==-1)
- {
- alert('Projektarbeit muss ausgewaehlt sein');
- return;
- }
- var col = tree.columns ? tree.columns["student-projektarbeit-tree-projektarbeit_id"] : "student-projektarbeit-tree-projektarbeit_id";
- var projektarbeit_id=tree.view.getCellText(tree.currentIndex,col);
-
- var url = 'content/student/studentDBDML.php';
- var req = new phpRequest(url,'','');
-
- req.add('type', 'saveprojektbetreuer');
-
- req.add('person_id', person_id);
- req.add('note', note);
- req.add('faktor', faktor);
- req.add('name', name);
- req.add('punkte', punkte);
- req.add('stunden', stunden);
- req.add('stundensatz', stundensatz);
- req.add('betreuerart_kurzbz', betreuerart_kurzbz);
- req.add('betreuerart_kurzbz_old', betreuerart_kurzbz_old);
- req.add('projektarbeit_id', projektarbeit_id);
- req.add('person_id_old', person_id_old);
- req.add('neu', neu);
- req.add('studiengang_kz', studiengang_kz);
-
- var response = req.executePOST();
-
- var val = new ParseReturnValue(response)
-
- if (!val.dbdml_return)
- {
- if(val.dbdml_errormsg=='')
- alert(response)
- else
- alert(val.dbdml_errormsg)
- }
- else
- {
- StudentProjektbetreuerSelectPersonID=person_id;
- StudentProjektbetreuerSelectProjektarbeitID=projektarbeit_id;
- StudentProjektbetreuerSelectBetreuerartKurzbz=betreuerart_kurzbz;
- StudentProjektbetreuerDetailDisableFields(true);
- StudentProjektbetreuerTreeDatasource.Refresh(false); //non blocking
- SetStatusBarText('Daten wurden gespeichert');
-
- }
-}
-
-// ****
-// * Deaktiviert die Detailfelder um einen Neuen Datensatz zu erstellen
-// ****
-function StudentProjektbetreuerNeu()
-{
- StudentProjektbetreuerDetailReset();
- document.getElementById('student-projektbetreuer-checkbox-neu').checked=true;
- StudentProjektbetreuerDetailDisableFields(false);
-}
-
-// ****
-// * Loescht einen Projektbetreuer
-// ****
-function StudentProjektbetreuerLoeschen()
-{
- netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-
- var tree = document.getElementById('student-projektbetreuer-tree');
-
- if (tree.currentIndex==-1)
- {
- alert('Projektbetreuer muss ausgewaehlt sein');
- return;
- }
- var col = tree.columns ? tree.columns["student-projektbetreuer-tree-projektarbeit_id"] : "student-projektbetreuer-tree-projektarbeit_id";
- var projektarbeit_id=tree.view.getCellText(tree.currentIndex,col);
- var col = tree.columns ? tree.columns["student-projektbetreuer-tree-person_id"] : "student-projektbetreuer-tree-person_id";
- var person_id=tree.view.getCellText(tree.currentIndex,col);
- var col = tree.columns ? tree.columns["student-projektbetreuer-tree-betreuerart_kurzbz"] : "student-projektbetreuer-tree-betreuerart_kurzbz";
- var betreuerart_kurzbz=tree.view.getCellText(tree.currentIndex,col);
-
- studiengang_kz = document.getElementById('student-prestudent-menulist-studiengang_kz').value;
-
- var url = 'content/student/studentDBDML.php';
- var req = new phpRequest(url,'','');
-
- req.add('type', 'deleteprojektbetreuer');
-
- req.add('person_id', person_id);
- req.add('projektarbeit_id', projektarbeit_id);
- req.add('betreuerart_kurzbz', betreuerart_kurzbz);
- req.add('studiengang_kz', studiengang_kz);
-
- var response = req.executePOST();
-
- var val = new ParseReturnValue(response)
-
- if (!val.dbdml_return)
- {
- if(val.dbdml_errormsg=='')
- alert(response)
- else
- alert(val.dbdml_errormsg)
- }
- else
- {
- StudentProjektbetreuerSelectPersonID=null;
- StudentProjektbetreuerSelectProjektarbeitID=null;
- StudentProjektbetreuerSelectBetreuerartKurzbz=null;
- StudentProjektbetreuerTreeDatasource.Refresh(false); //non blocking
- SetStatusBarText('Daten wurden geloescht');
- StudentProjektbetreuerDetailDisableFields(true);
- }
-}
-
-function StudentProjektbetreuerLoadMitarbeiterDaten()
-{
- person_id = MenulistGetSelectedValue('student-projektbetreuer-menulist-person');
-
- var url = 'content/student/studentDBDML.php';
- var req = new phpRequest(url,'','');
-
- req.add('type', 'getstundensatz');
- req.add('person_id', person_id);
-
- var response = req.executePOST();
-
- var val = new ParseReturnValue(response)
-
- if (!val.dbdml_return)
- {
- if(val.dbdml_errormsg=='')
- alert(response)
- else
- alert(val.dbdml_errormsg)
- }
- else
- {
- stundensatz = val.dbdml_data
- }
-
- document.getElementById('student-projektbetreuer-textbox-stundensatz').value=stundensatz;
-}
-
-// ****
-// * Neuen Projektbetreuer anlegen
-// ****
-function StudentProjektbetreuerNeuePerson()
-{
- 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');
-}
-
-// ****
-// * Kontaktdaten eines Betreuers Bearbeiten
-// ****
-function StudentProjektbetreuerKontaktdaten()
-{
- person_id = MenulistGetSelectedValue('student-projektbetreuer-menulist-person');
- if(person_id!='')
- window.open('vilesci/personen/kontaktdaten_edit.php?person_id='+person_id,'Kontaktdaten');
- else
- alert('Bitte zuerst eine Person auswaehlen');
-}
+,
+ * Andreas Oesterreicher and
+ * Rudolf Hangl .
+ */
+
+require_once('../../config/vilesci.config.inc.php');
+require_once('../../config/global.config.inc.php');
+
+?>
+// *********** Globale Variablen *****************//
+var StudentProjektarbeitSelectID=null; //Id der Projektarbeit die nach dem Rebuild markiert werden soll
+var StudentProjektarbeitTreeDatasource=null; //Datasource des Projektarbeit Trees
+var StudentProjektbetreuerTreeDatasource=null; //Datasource des Projektbetreuer Trees
+var StudentProjektbetreuerSelectPersonID=null;
+var StudentProjektbetreuerSelectProjektarbeitID=null;
+var StudentProjektbetreuerSelectBetreuerartKurzbz=null;
+vertragsdetails_anzeigen = new Boolean();
+
+// ********** Observer und Listener ************* //
+
+// ****
+// * Observer fuer Projektarbeit Tree
+// * startet Rebuild nachdem das Refresh
+// * der Datasource fertig ist
+// ****
+var StudentProjektarbeitTreeSinkObserver =
+{
+ onBeginLoad : function(pSink)
+ {
+ //Eventlistener waehrend des Ladevorganges deaktivieren da es sonst
+ //zu Problemen kommt
+ tree = document.getElementById('student-projektarbeit-tree');
+ tree.removeEventListener('select', StudentProjektarbeitAuswahl, false);
+ },
+ onInterrupt : function(pSink) {},
+ onResume : function(pSink) {},
+ onError : function(pSink, pStatus, pError) {},
+ onEndLoad : function(pSink)
+ {
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+ document.getElementById('student-projektarbeit-tree').builder.rebuild();
+ }
+};
+
+// ****
+// * Nach dem Rebuild wird die Projektarbeit wieder
+// * markiert
+// ****
+var StudentProjektarbeitTreeListener =
+{
+ willRebuild : function(builder) { },
+ didRebuild : function(builder)
+ {
+ tree = document.getElementById('student-projektarbeit-tree');
+ tree.addEventListener('select', StudentProjektarbeitAuswahl, false);
+ //timeout nur bei Mozilla notwendig da sonst die rows
+ //noch keine values haben. Ab Seamonkey funktionierts auch
+ //ohne dem setTimeout
+ window.setTimeout(StudentProjektarbeitTreeSelectID,10);
+ }
+};
+
+// ****
+// * Observer fuer Projektbetreuer Tree
+// * startet Rebuild nachdem das Refresh
+// * der Datasource fertig ist
+// ****
+var StudentProjektbetreuerTreeSinkObserver =
+{
+ onBeginLoad : function(pSink)
+ {
+ //Eventlistener waehrend des Ladevorganges deaktivieren da es sonst
+ //zu Problemen kommt
+ tree = document.getElementById('student-projektbetreuer-tree');
+ tree.removeEventListener('select', StudentProjektbetreuerAuswahl, false);
+ },
+ onInterrupt : function(pSink) {},
+ onResume : function(pSink) {},
+ onError : function(pSink, pStatus, pError) {},
+ onEndLoad : function(pSink)
+ {
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+ document.getElementById('student-projektbetreuer-tree').builder.rebuild();
+ }
+};
+
+// ****
+// * Nach dem Rebuild wird die Projektbetreuer wieder
+// * markiert
+// ****
+var StudentProjektbetreuerTreeListener =
+{
+ willRebuild : function(builder) { },
+ didRebuild : function(builder)
+ {
+ tree = document.getElementById('student-projektbetreuer-tree');
+ tree.addEventListener('select', StudentProjektbetreuerAuswahl, false);
+ //timeout nur bei Mozilla notwendig da sonst die rows
+ //noch keine values haben. Ab Seamonkey funktionierts auch
+ //ohne dem setTimeout
+ window.setTimeout(StudentProjektbetreuerTreeSelectID,10);
+
+ if(vertragsdetails_anzeigen)
+ {
+ var mindEinVertragExistiert = StudentProjektbetreuer_VertragExistiert();
+
+ // Wenn für diese Projektarbeit zumindest ein Projektbetreuer einen Vertrag besitzt
+ if (mindEinVertragExistiert === true)
+ {
+ // Entfernen der Bachelorarbeit disablen
+ document.getElementById('student-projektarbeit-button-loeschen').disabled = true;
+
+ // Tooltip setzen
+ document.getElementById('student-projektarbeit-button-loeschen').setAttribute("tooltiptext",
+ "Projektarbeit kann nurmehr nach Vertragsstorno gelöscht werden.");
+ }
+ else {
+ // Entfernen der Bachelorarbeit enablen
+ document.getElementById('student-projektarbeit-button-loeschen').disabled = false;
+
+ // Tooltip setzen
+ document.getElementById('student-projektarbeit-button-loeschen').setAttribute("tooltiptext",
+ "");
+
+ }
+ }
+
+ }
+};
+// ****************** FUNKTIONEN ************************** //
+
+// ****
+// * Laedt die Daten fuer den Projektarbeiten Tree
+// ****
+function StudentProjektarbeitTreeLoad(uid)
+{
+ var tree = document.getElementById('student-projektarbeit-tree');
+ var url='rdf/projektarbeit.rdf.php?student_uid='+uid+"&"+gettimestamp();
+
+ //Alte Observer entfernen
+ try
+ {
+ StudentProjektarbeitTreeDatasource.removeXMLSinkObserver(StudentProjektarbeitTreeSinkObserver);
+ tree.builder.removeListener(StudentProjektarbeitTreeListener);
+ }
+ catch(e)
+ {}
+
+ //Alte DS entfernen
+ var oldDatasources = tree.database.GetDataSources();
+ while(oldDatasources.hasMoreElements())
+ {
+ tree.database.RemoveDataSource(oldDatasources.getNext());
+ }
+ //Refresh damit die entfernten DS auch wirklich entfernt werden
+ tree.builder.rebuild();
+
+ var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
+ StudentProjektarbeitTreeDatasource = rdfService.GetDataSource(url);
+ StudentProjektarbeitTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
+ StudentProjektarbeitTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
+ tree.database.AddDataSource(StudentProjektarbeitTreeDatasource);
+ StudentProjektarbeitTreeDatasource.addXMLSinkObserver(StudentProjektarbeitTreeSinkObserver);
+ tree.builder.addListener(StudentProjektarbeitTreeListener);
+
+ StudentProjektarbeitDisableFields(false);
+ var vertragsdetails_anzeigen = new Boolean();
+
+ // Wenn Vertragsdetails angezeigt werden
+ if (vertragsdetails_anzeigen) {
+ //Reset attributes
+ document.getElementById('student-projektbetreuer-label-vertragsstatus').value = '';
+ document.getElementById('student-projektbetreuer-label-vertragsstunden').value = '';
+ document.getElementById('student-projektbetreuer-label-vertragsstunden_studiensemester_kurzbz').value = '';
+ document.getElementById('student-projektbetreuer-label-vertrag_id').value = '';
+ }
+}
+
+// ****
+// * Deaktiviert alle Felder in diesem Tab
+// ****
+function StudentProjektarbeitDisableAll()
+{
+ //Tree Leeren
+ var tree = document.getElementById('student-projektarbeit-tree');
+
+ //Alte DS entfernen
+ var oldDatasources = tree.database.GetDataSources();
+ while(oldDatasources.hasMoreElements())
+ {
+ tree.database.RemoveDataSource(oldDatasources.getNext());
+ }
+ //Refresh damit die entfernten DS auch wirklich entfernt werden
+ tree.builder.rebuild();
+
+ StudentProjektarbeitDisableFields(true);
+}
+
+// ****
+// * De-/Aktiviert die ProjektarbeitFelder
+// ****
+function StudentProjektarbeitDisableFields(val)
+{
+ document.getElementById('student-projektarbeit-button-neu').disabled=val;
+ document.getElementById('student-projektarbeit-button-loeschen').disabled=val;
+ // Tooltip setzen
+ document.getElementById('student-projektarbeit-button-loeschen').setAttribute("tooltiptext",
+ "");
+
+ if(val)
+ {
+ StudentProjektarbeitDetailDisableFields(val);
+ }
+}
+
+// ****
+// * De-/Aktiviert die ProjektarbeitDetailFelder
+// ****
+function StudentProjektarbeitDetailDisableFields(val)
+{
+ document.getElementById('student-projektarbeit-button-speichern').disabled=val;
+ document.getElementById('student-projektarbeit-menulist-projekttyp').disabled=val;
+ document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').disabled=val;
+ document.getElementById('student-projektarbeit-menulist-lehreinheit').disabled=val;
+ document.getElementById('student-projektarbeit-menulist-firma').disabled=val;
+ document.getElementById('student-projektarbeit-menulist-note').disabled=val;
+ document.getElementById('student-projektarbeit-textbox-titel').disabled=val;
+ document.getElementById('student-projektarbeit-textbox-titel_english').disabled=val;
+ document.getElementById('student-projektarbeit-textbox-punkte').disabled=val;
+ document.getElementById('student-projektarbeit-datum-beginn').disabled=val;
+ document.getElementById('student-projektarbeit-datum-ende').disabled=val;
+ document.getElementById('student-projektarbeit-textbox-faktor').disabled=val;
+ document.getElementById('student-projektarbeit-checkbox-freigegeben').disabled=val;
+ document.getElementById('student-projektarbeit-datum-gesperrtbis').disabled=val;
+ document.getElementById('student-projektarbeit-textbox-stundensatz').disabled=val;
+ document.getElementById('student-projektarbeit-textbox-gesamtstunden').disabled=val;
+ document.getElementById('student-projektarbeit-textbox-themenbereich').disabled=val;
+ document.getElementById('student-projektarbeit-textbox-anmerkung').disabled=val;
+ document.getElementById('student-projektarbeit-checkbox-final').disabled=val;
+
+ if(val)
+ StudentProjektarbeitResetFields();
+}
+
+// ****
+// * Wenn in das Gesperrt-Feld ein Wert eingetragen wird, dann wird das Freigegeben Hackerl entfernt
+function StudentProjektarbeitGesperrtChanged()
+{
+ if(document.getElementById('student-projektarbeit-datum-gesperrtbis').value!='')
+ {
+ document.getElementById('student-projektarbeit-checkbox-freigegeben').checked=false;
+ }
+}
+
+// ****
+// * Resetet die ProjektarbeitDetailFelder
+// ****
+function StudentProjektarbeitResetFields()
+{
+ document.getElementById('student-projektarbeit-textbox-titel').value='';
+ document.getElementById('student-projektarbeit-textbox-titel_english').value='';
+ document.getElementById('student-projektarbeit-textbox-punkte').value='0.0';
+ document.getElementById('student-projektarbeit-datum-beginn').value='';
+ document.getElementById('student-projektarbeit-datum-ende').value='';
+ document.getElementById('student-projektarbeit-textbox-faktor').value='1.0';
+ document.getElementById('student-projektarbeit-checkbox-freigegeben').checked=true;
+ document.getElementById('student-projektarbeit-datum-gesperrtbis').value='';
+ document.getElementById('student-projektarbeit-textbox-stundensatz').value='80.0';
+ document.getElementById('student-projektarbeit-textbox-gesamtstunden').value='3.0';
+ document.getElementById('student-projektarbeit-textbox-themenbereich').value='';
+ document.getElementById('student-projektarbeit-textbox-anmerkung').value='';
+ document.getElementById('student-projektarbeit-menulist-firma').value='';
+ document.getElementById('student-projektarbeit-menulist-note').value='';
+ document.getElementById('student-projektarbeit-checkbox-final').checked=true;
+
+ var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value;
+
+ var url = 'rdf/studiengang.rdf.php?studiengang_kz='+stg_kz+'&'+gettimestamp();
+ var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
+ getService(Components.interfaces.nsIRDFService);
+
+ var dsource = rdfService.GetDataSourceBlocking(url);
+ var subject = rdfService.GetResource("http://www.technikum-wien.at/studiengang/" + stg_kz);
+ var predicateNS = "http://www.technikum-wien.at/studiengang/rdf";
+ studiengangstyp = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#typ" ));
+
+ if(studiengangstyp=='m')
+ document.getElementById('student-projektarbeit-menulist-projekttyp').value='Diplom';
+ else
+ document.getElementById('student-projektarbeit-menulist-projekttyp').value='Bachelor';
+}
+
+// *****
+// * Markiert einen Datensatz im Tree
+// *****
+function StudentProjektarbeitTreeSelectID()
+{
+ var tree=document.getElementById('student-projektarbeit-tree');
+ if(tree.view)
+ var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln
+ else
+ return false;
+
+ //In der globalen Variable ist die zu selektierende Eintrag gespeichert
+ if(StudentProjektarbeitSelectID!=null)
+ {
+ for(var i = 0;i < items; i++)
+ {
+ //ID der row holen
+ col = tree.columns ? tree.columns["student-projektarbeit-tree-projektarbeit_id"] : "student-projektarbeit-tree-projektarbeit_id";
+ var id=tree.view.getCellText(i,col);
+
+ //wenn dies die zu selektierende Zeile
+ if(id == StudentProjektarbeitSelectID)
+ {
+ //Zeile markieren
+ tree.view.selection.select(i);
+ //Sicherstellen, dass die Zeile im sichtbaren Bereich liegt
+ tree.treeBoxObject.ensureRowIsVisible(i);
+ StudentIOSelectID=null;
+ return true;
+ }
+ }
+ }
+}
+
+// ****
+// * Laedt die Daten der Projektarbeit zum Bearbeiten
+// ****
+function StudentProjektarbeitAuswahl()
+{
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+ var tree = document.getElementById('student-projektarbeit-tree');
+
+ if (tree.currentIndex==-1) return;
+
+ StudentProjektarbeitDetailDisableFields(false);
+ StudentProjektbetreuerDetailDisableFields(true);
+
+ //Ausgewaehlte Nr holen
+ var col = tree.columns ? tree.columns["student-projektarbeit-tree-projektarbeit_id"] : "student-projektarbeit-treecol-projektarbeit_id";
+ var projektarbeit_id=tree.view.getCellText(tree.currentIndex,col);
+
+ //Daten holen
+ var url = 'rdf/projektarbeit.rdf.php?projektarbeit_id='+projektarbeit_id+'&'+gettimestamp();
+
+ var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
+ getService(Components.interfaces.nsIRDFService);
+
+ var dsource = rdfService.GetDataSourceBlocking(url);
+
+ var subject = rdfService.GetResource("http://www.technikum-wien.at/projektarbeit/" + projektarbeit_id);
+
+ var predicateNS = "http://www.technikum-wien.at/projektarbeit/rdf";
+
+ //Daten holen
+
+ projekttyp_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#projekttyp_kurzbz" ));
+ titel = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#titel" ));
+ titel_english = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#titel_english" ));
+ lehreinheit_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehreinheit_id" ));
+ lehrveranstaltung_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehrveranstaltung_id" ));
+ lehreinheit_stsem = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehreinheit_stsem" ));
+ student_uid = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#student_uid" ));
+ firma_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#firma_id" ));
+ note = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#note" ));
+ punkte = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#punkte" ));
+ beginn = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#beginn" ));
+ ende = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#ende" ));
+ faktor = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#faktor" ));
+ freigegeben = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#freigegeben" ));
+ gesperrtbis = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#gesperrtbis" ));
+ stundensatz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#stundensatz" ));
+ themenbereich = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#themenbereich" ));
+ anmerkung = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmerkung" ));
+ gesamtstunden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#gesamtstunden" ));
+ final = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#final" ));
+
+ var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value;
+
+ //Lehrveranstaltung DropDown laden
+ var LvDropDown = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung');
+ url='rdf/lehrveranstaltung.rdf.php?stg_kz='+stg_kz+"&projektarbeit=true&withlv="+lehrveranstaltung_id+"&"+gettimestamp();
+
+ //Alte DS entfernen
+ var oldDatasources = LvDropDown.database.GetDataSources();
+ while(oldDatasources.hasMoreElements())
+ {
+ LvDropDown.database.RemoveDataSource(oldDatasources.getNext());
+ }
+ //Refresh damit die entfernten DS auch wirklich entfernt werden
+ LvDropDown.builder.rebuild();
+
+ var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
+ var datasource = rdfService.GetDataSourceBlocking(url);
+ datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
+ datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
+ LvDropDown.database.AddDataSource(datasource);
+
+ LvDropDown.builder.rebuild();
+
+ // Lehreinheit Drop Down laden
+ var LeDropDown = document.getElementById('student-projektarbeit-menulist-lehreinheit');
+ url='rdf/lehreinheit.rdf.php?lehrveranstaltung_id='+lehrveranstaltung_id+"&studiensemester_kurzbz="+lehreinheit_stsem+"&"+gettimestamp();
+
+ //Alte DS entfernen
+ var oldDatasources = LeDropDown.database.GetDataSources();
+ while(oldDatasources.hasMoreElements())
+ {
+ LeDropDown.database.RemoveDataSource(oldDatasources.getNext());
+ }
+ //Refresh damit die entfernten DS auch wirklich entfernt werden
+ LeDropDown.builder.rebuild();
+
+ var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
+ var datasource = rdfService.GetDataSourceBlocking(url);
+ datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
+ datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
+ LeDropDown.database.AddDataSource(datasource);
+
+ LeDropDown.builder.rebuild();
+
+ //Werte setzen
+ document.getElementById('student-projektarbeit-textbox-projektarbeit_id').value=projektarbeit_id;
+ document.getElementById('student-projektarbeit-menulist-projekttyp').value=projekttyp_kurzbz;
+ document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').value=lehrveranstaltung_id;
+ document.getElementById('student-projektarbeit-menulist-lehreinheit').value=lehreinheit_id;
+ document.getElementById('student-projektarbeit-textbox-titel').value=titel;
+ document.getElementById('student-projektarbeit-textbox-titel_english').value=titel_english;
+ document.getElementById('student-projektarbeit-menulist-firma').value=firma_id;
+ document.getElementById('student-projektarbeit-menulist-note').value=note;
+ document.getElementById('student-projektarbeit-textbox-punkte').value=punkte;
+ document.getElementById('student-projektarbeit-datum-beginn').value=beginn;
+ document.getElementById('student-projektarbeit-datum-ende').value=ende;
+ document.getElementById('student-projektarbeit-textbox-faktor').value=faktor;
+ if(freigegeben=='Ja')
+ document.getElementById('student-projektarbeit-checkbox-freigegeben').checked=true;
+ else
+ document.getElementById('student-projektarbeit-checkbox-freigegeben').checked=false;
+ document.getElementById('student-projektarbeit-datum-gesperrtbis').value=gesperrtbis;
+ document.getElementById('student-projektarbeit-textbox-stundensatz').value=stundensatz;
+ document.getElementById('student-projektarbeit-textbox-gesamtstunden').value=gesamtstunden;
+ document.getElementById('student-projektarbeit-textbox-themenbereich').value=themenbereich;
+ document.getElementById('student-projektarbeit-textbox-anmerkung').value=anmerkung;
+ document.getElementById('student-projektarbeit-checkbox-neu').checked=false;
+ if(final=='Ja')
+ document.getElementById('student-projektarbeit-checkbox-final').checked=true;
+ else
+ document.getElementById('student-projektarbeit-checkbox-final').checked=false;
+
+ // **** BETREUER **** //
+ var tree = document.getElementById('student-projektbetreuer-tree');
+ var url='rdf/projektbetreuer.rdf.php?projektarbeit_id='+projektarbeit_id+"&"+gettimestamp();
+
+ StudentProjektbetreuerDisableFields(false);
+
+ try
+ {
+ StudentProjektbetreuerTreeDatasource.removeXMLSinkObserver(StudentProjektbetreuerTreeSinkObserver);
+ tree.builder.removeListener(StudentProjektbetreuerTreeListener);
+ }
+ catch(e)
+ {}
+
+ //Alte DS entfernen
+ var oldDatasources = tree.database.GetDataSources();
+ while(oldDatasources.hasMoreElements())
+ {
+ tree.database.RemoveDataSource(oldDatasources.getNext());
+ }
+ //Refresh damit die entfernten DS auch wirklich entfernt werden
+ tree.builder.rebuild();
+
+ var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
+ StudentProjektbetreuerTreeDatasource = rdfService.GetDataSource(url);
+ StudentProjektbetreuerTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
+ StudentProjektbetreuerTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
+ tree.database.AddDataSource(StudentProjektbetreuerTreeDatasource);
+ StudentProjektbetreuerTreeDatasource.addXMLSinkObserver(StudentProjektbetreuerTreeSinkObserver);
+ tree.builder.addListener(StudentProjektbetreuerTreeListener);
+
+ //Reset attributes
+ document.getElementById('student-projektbetreuer-label-vertragsstatus').value = '';
+ document.getElementById('student-projektbetreuer-label-vertragsstunden').value = '';
+ document.getElementById('student-projektbetreuer-label-vertragsstunden_studiensemester_kurzbz').value = '';
+ document.getElementById('student-projektbetreuer-label-vertrag_id').value = '';
+}
+
+// ****
+// * Refresht das Firma DropDown
+// ****
+function StudentProjektarbeitFirmaRefresh()
+{
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+ var tree = document.getElementById('student-projektarbeit-menulist-firma');
+ var url="rdf/firma.rdf.php?optional=true&"+gettimestamp();
+
+ //Alte DS entfernen
+ var oldDatasources = tree.database.GetDataSources();
+ while(oldDatasources.hasMoreElements())
+ {
+ tree.database.RemoveDataSource(oldDatasources.getNext());
+ }
+ //Refresh damit die entfernten DS auch wirklich entfernt werden
+ tree.builder.rebuild();
+
+ var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
+ var myDatasource = rdfService.GetDataSource(url);
+ tree.database.AddDataSource(myDatasource);
+}
+
+// ****
+// * Speichert die Projektarbeit Daten
+// ****
+function StudentProjektarbeitSpeichern()
+{
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+
+ projektarbeit_id = document.getElementById('student-projektarbeit-textbox-projektarbeit_id').value;
+ projekttyp_kurzbz = document.getElementById('student-projektarbeit-menulist-projekttyp').value;
+ lehrveranstaltung_id = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').value;
+ lehreinheit_id = document.getElementById('student-projektarbeit-menulist-lehreinheit').value;
+ titel = document.getElementById('student-projektarbeit-textbox-titel').value;
+ titel_english = document.getElementById('student-projektarbeit-textbox-titel_english').value;
+ firma_id = document.getElementById('student-projektarbeit-menulist-firma').value;
+ note = document.getElementById('student-projektarbeit-menulist-note').value;
+ punkte = document.getElementById('student-projektarbeit-textbox-punkte').value;
+ beginn = document.getElementById('student-projektarbeit-datum-beginn').value;
+ ende = document.getElementById('student-projektarbeit-datum-ende').value;
+ faktor = document.getElementById('student-projektarbeit-textbox-faktor').value;
+ freigegeben = document.getElementById('student-projektarbeit-checkbox-freigegeben').checked;
+ gesperrtbis = document.getElementById('student-projektarbeit-datum-gesperrtbis').value;
+ stundensatz = document.getElementById('student-projektarbeit-textbox-stundensatz').value;
+ gesamtstunden = document.getElementById('student-projektarbeit-textbox-gesamtstunden').value;
+ themenbereich = document.getElementById('student-projektarbeit-textbox-themenbereich').value;
+ anmerkung = document.getElementById('student-projektarbeit-textbox-anmerkung').value;
+ neu = document.getElementById('student-projektarbeit-checkbox-neu').checked;
+ final = document.getElementById('student-projektarbeit-checkbox-final').checked;
+
+ student_uid =document.getElementById('student-detail-textbox-uid').value;
+ studiengang_kz = document.getElementById('student-prestudent-menulist-studiengang_kz').value;
+
+ if(student_uid=='')
+ {
+ alert('UID dieser Person konnte nicht ermittelt werden');
+ return false;
+ }
+
+ //Datum pruefen
+ if(beginn!='' && !CheckDatum(beginn))
+ {
+ alert('Beginn ist ungueltig');
+ return false;
+ }
+
+ if(ende!='' && !CheckDatum(ende))
+ {
+ alert('Ende ist ungueltig');
+ return false;
+ }
+
+ if(gesperrtbis!='' && !CheckDatum(gesperrtbis))
+ {
+ alert('gesperrtbis ist ungueltig');
+ return false;
+ }
+
+ if(lehreinheit_id=='')
+ {
+ alert('Bitte eine Lehreinheit Auswaehlen');
+ return false;
+ }
+
+ if(isNaN(gesamtstunden))
+ gesamtstunden=0;
+
+ var url = 'content/student/studentDBDML.php';
+ var req = new phpRequest(url,'','');
+
+ req.add('type', 'saveprojektarbeit');
+
+ req.add('projektarbeit_id', projektarbeit_id);
+ req.add('projekttyp_kurzbz', projekttyp_kurzbz );
+ req.add('titel', titel);
+ req.add('titel_english', titel_english);
+ req.add('lehreinheit_id', lehreinheit_id);
+ req.add('student_uid', student_uid);
+ req.add('firma_id', firma_id);
+ req.add('note', note);
+ req.add('punkte', punkte);
+ req.add('beginn', ConvertDateToISO(beginn));
+ req.add('ende', ConvertDateToISO(ende));
+ req.add('faktor', faktor);
+ req.add('freigegeben', freigegeben);
+ req.add('gesperrtbis', ConvertDateToISO(gesperrtbis));
+ req.add('stundensatz', stundensatz);
+ req.add('gesamtstunden', gesamtstunden);
+ req.add('themenbereich', themenbereich);
+ req.add('anmerkung', anmerkung);
+ req.add('neu', neu);
+ req.add('studiengang_kz', studiengang_kz);
+ req.add('final', final);
+
+ var response = req.executePOST();
+
+ var val = new ParseReturnValue(response)
+
+ if (!val.dbdml_return)
+ {
+ if(val.dbdml_errormsg=='')
+ alert(response)
+ else
+ alert(val.dbdml_errormsg)
+ }
+ else
+ {
+ StudentProjektarbeitSelectID=val.dbdml_data;
+ StudentProjektarbeitTreeDatasource.Refresh(false); //non blocking
+ SetStatusBarText('Daten wurden gespeichert');
+ StudentProjektarbeitDetailDisableFields(true);
+ }
+}
+
+// ****
+// * Aktiviert die Detailfelder zum Neu Anlegen einer Projektarbeit
+// ****
+
+function StudentProjektarbeitNeu()
+{
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+
+ document.getElementById('student-projektarbeit-checkbox-neu').checked=true;
+ document.getElementById('student-projektarbeit-textbox-projektarbeit_id').value='';
+ StudentProjektarbeitResetFields();
+ StudentProjektarbeitDetailDisableFields(false);
+ StudentProjektbetreuerDisableFields(true);
+ var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value;
+
+ //Lehrveranstaltung DropDown laden
+ var LvDropDown = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung');
+ url='rdf/lehrveranstaltung.rdf.php?stg_kz='+stg_kz+"&projektarbeit=true&"+gettimestamp();
+
+ //Alte DS entfernen
+ var oldDatasources = LvDropDown.database.GetDataSources();
+ while(oldDatasources.hasMoreElements())
+ {
+ LvDropDown.database.RemoveDataSource(oldDatasources.getNext());
+ }
+ //Refresh damit die entfernten DS auch wirklich entfernt werden
+ LvDropDown.builder.rebuild();
+
+ var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
+ var datasource = rdfService.GetDataSourceBlocking(url);
+ datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
+ datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
+ LvDropDown.database.AddDataSource(datasource);
+
+ LvDropDown.builder.rebuild();
+}
+
+// ****
+// * Loescht den markierten Eintrag
+// ****
+function StudentProjektarbeitLoeschen()
+{
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+ var tree = document.getElementById('student-projektarbeit-tree');
+
+ studiengang_kz = document.getElementById('student-prestudent-menulist-studiengang_kz').value;
+
+ if (tree.currentIndex==-1)
+ {
+ alert('Bitte zuerst einen Eintrag markieren');
+ return false;
+ }
+
+ //Ausgewaehlte Nr holen
+ var col = tree.columns ? tree.columns["student-projektarbeit-tree-projektarbeit_id"] : "student-projektarbeit-tree-projektarbeit_id";
+ var projektarbeit_id=tree.view.getCellText(tree.currentIndex,col);
+ var url = 'content/student/studentDBDML.php';
+
+ var req = new phpRequest(url,'','');
+
+ req.add('type', 'deleteprojektarbeit');
+
+ req.add('projektarbeit_id', projektarbeit_id);
+ req.add('studiengang_kz', studiengang_kz);
+
+ var response = req.executePOST();
+
+ var val = new ParseReturnValue(response)
+
+ if (!val.dbdml_return)
+ {
+ if(val.dbdml_errormsg=='')
+ alert(response)
+ else
+ alert(val.dbdml_errormsg)
+ }
+ else
+ {
+ StudentProjektarbeitSelectID=null;
+ StudentProjektarbeitTreeDatasource.Refresh(false); //non blocking
+ SetStatusBarText('Daten wurden geloescht');
+ StudentProjektarbeitDetailDisableFields(true);
+ }
+}
+
+// ****
+// * Wenn die Lehrveranstaltung geaendert wird, dann
+// * muss das LehreinheitenDropDown neu geladen werden
+// ****
+function StudentProjektarbeitLVAChange()
+{
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+
+ lehrveranstaltung_id = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').value;
+ studiensemester_kurzbz = getStudiensemester();
+
+ // Lehreinheit Drop Down laden
+ var LeDropDown = document.getElementById('student-projektarbeit-menulist-lehreinheit');
+ url='rdf/lehreinheit.rdf.php?lehrveranstaltung_id='+lehrveranstaltung_id+"&studiensemester_kurzbz="+studiensemester_kurzbz+"&"+gettimestamp();
+
+ //Alte DS entfernen
+ var oldDatasources = LeDropDown.database.GetDataSources();
+ while(oldDatasources.hasMoreElements())
+ {
+ LeDropDown.database.RemoveDataSource(oldDatasources.getNext());
+ }
+ //Refresh damit die entfernten DS auch wirklich entfernt werden
+ LeDropDown.builder.rebuild();
+
+ var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
+ var datasource = rdfService.GetDataSourceBlocking(url);
+ datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
+ datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
+ LeDropDown.database.AddDataSource(datasource);
+
+ LeDropDown.selectedIndex=-1;
+
+ LeDropDown.builder.rebuild();
+}
+
+// ******************* PROJEKTBETREUER ************************* //
+
+// *****
+// * Markiert eine Zeile im Projektbetreuer Tree
+// *****
+function StudentProjektbetreuerTreeSelectID()
+{
+ var tree=document.getElementById('student-projektbetreuer-tree');
+ if(tree.view)
+ var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln
+ else
+ return false;
+
+
+ //In der globalen Variable ist die zu selektierende Eintrag gespeichert
+ if(StudentProjektbetreuerSelectPersonID!=null)
+ {
+ for(var i = 0;i < items; i++)
+ {
+ //ID der row holen
+ col = tree.columns ? tree.columns["student-projektbetreuer-tree-projektarbeit_id"] : "student-projektbetreuer-tree-projektarbeit_id";
+ var projektarbeit_id=tree.view.getCellText(i,col);
+ col = tree.columns ? tree.columns["student-projektbetreuer-tree-person_id"] : "student-projektbetreuer-tree-person_id";
+ var person_id=tree.view.getCellText(i,col);
+ col = tree.columns ? tree.columns["student-projektbetreuer-tree-betreuerart_kurzbz"] : "student-projektbetreuer-tree-betreuerart_kurzbz";
+ var betreuerart_kurzbz=tree.view.getCellText(i,col);
+
+ //wenn dies die zu selektierende Zeile
+ if(person_id == StudentProjektbetreuerSelectPersonID && projektarbeit_id == StudentProjektbetreuerSelectProjektarbeitID && betreuerart_kurzbz == StudentProjektbetreuerSelectBetreuerartKurzbz)
+ {
+ //Zeile markieren
+ tree.view.selection.select(i);
+ //Sicherstellen, dass die Zeile im sichtbaren Bereich liegt
+ tree.treeBoxObject.ensureRowIsVisible(i);
+ StudentIOSelectID=null;
+ return true;
+ }
+ }
+ }
+}
+
+// *****
+// * Prüft, ob zu einer Projektarbeit zumindest ein Lektor einen Vertrag besitzt
+// *****
+function StudentProjektbetreuer_VertragExistiert(){
+
+ var tree = document.getElementById('student-projektbetreuer-tree');
+
+ if(tree.view)
+ var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln
+ else
+ return false;
+
+ for(var i = 0;i < items; i++)
+ {
+ //ID der row holen
+ col = tree.columns ? tree.columns["student-projektbetreuer-tree-vertrag_id"] : "student-projektbetreuer-tree-vertrag_id";
+ var vertrag_id = tree.view.getCellText(i,col);
+
+ if(vertrag_id != '')
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
+// *****
+// * Bei Auswahl eines Betreuers, wird dieser zum Bearbeiten geladen
+// *****
+function StudentProjektbetreuerAuswahl()
+{
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+ var tree = document.getElementById('student-projektbetreuer-tree');
+
+ if (tree.currentIndex==-1) return;
+
+ StudentProjektbetreuerDetailDisableFields(false);
+
+ //Ausgewaehlte Nr holen
+ var col = tree.columns ? tree.columns["student-projektbetreuer-tree-projektarbeit_id"] : "student-projektbetreuer-treecol-projektarbeit_id";
+ var projektarbeit_id=tree.view.getCellText(tree.currentIndex,col);
+ var col = tree.columns ? tree.columns["student-projektbetreuer-tree-person_id"] : "student-projektbetreuer-treecol-person_id";
+ var person_id=tree.view.getCellText(tree.currentIndex,col);
+ var col = tree.columns ? tree.columns["student-projektbetreuer-tree-betreuerart_kurzbz"] : "student-projektbetreuer-treecol-betreuerart_kurzbz";
+ var betreuerart_kurzbz=tree.view.getCellText(tree.currentIndex,col);
+
+ if(projektarbeit_id=='' || person_id=='' || betreuerart_kurzbz=='')
+ {
+ debug('StudentProjektbetreuerAuswahl: Fehler beim Laden');
+ return false;
+ }
+
+ //Daten holen
+ var url = 'rdf/projektbetreuer.rdf.php?projektarbeit_id='+projektarbeit_id+'&person_id='+person_id+'&betreuerart_kurzbz='+betreuerart_kurzbz+'&'+gettimestamp();
+
+ var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
+ getService(Components.interfaces.nsIRDFService);
+
+ var dsource = rdfService.GetDataSourceBlocking(url);
+
+ var subject = rdfService.GetResource("http://www.technikum-wien.at/projektbetreuer/" + person_id+'/'+projektarbeit_id+'/'+betreuerart_kurzbz);
+
+ var predicateNS = "http://www.technikum-wien.at/projektbetreuer/rdf";
+
+ //Daten holen
+
+ note = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#note" ));
+ faktor = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#faktor" ));
+ name = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#name" ));
+ punkte = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#punkte" ));
+ stunden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#stunden" ));
+ stundensatz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#stundensatz" ));
+ betreuerart_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#betreuerart_kurzbz" ));
+ person_nachname = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#person_nachname" ));
+ vertrag_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#vertrag_id" ));
+
+ StudentProjektbetreuerMenulistPersonLoad(document.getElementById('student-projektbetreuer-menulist-person'), person_nachname);
+
+ //Werte setzen
+ MenulistSelectItemOnValue('student-projektbetreuer-menulist-person', person_id);
+ document.getElementById('student-projektbetreuer-menulist-note').value=note;
+ document.getElementById('student-projektbetreuer-textbox-faktor').value=faktor;
+ document.getElementById('student-projektbetreuer-textbox-name').value=name;
+ document.getElementById('student-projektbetreuer-textbox-punkte').value=punkte;
+ document.getElementById('student-projektbetreuer-textbox-stunden').value=stunden;
+ document.getElementById('student-projektbetreuer-textbox-stundensatz').value=stundensatz;
+ document.getElementById('student-projektbetreuer-menulist-betreuerart').value=betreuerart_kurzbz;
+ document.getElementById('student-projektbetreuer-textbox-betreuerart_kurzbz_old').value=betreuerart_kurzbz;
+ document.getElementById('student-projektbetreuer-textbox-person_id').value=person_id;
+ document.getElementById('student-projektbetreuer-checkbox-neu').checked=false;
+
+ var gesamtkosten = StudentProjektbetreuerGesamtkosten();
+
+ // Prüfe ob Vertragsdetails angezeigt werden
+ var vertragsdetails_anzeigen = new Boolean();
+
+ // Wenn Vertragsdetails angezeigt werden
+ if (vertragsdetails_anzeigen) {
+ //Reset attributes
+ document.getElementById('student-projektbetreuer-label-vertragsstatus').setAttribute("style", "font-weight: normal");
+ document.getElementById('student-projektbetreuer-button-vertrag-stornieren').setAttribute("tooltiptext",
+ "Stornieren erst nötig, sobald Lektor einen Vertrag hat. (Ab Status 'Bestellt')");
+ document.getElementById('student-projektbetreuer-button-vertrag-stornieren').disabled = true;
+ document.getElementById('student-projektbetreuer-button-loeschen').disabled = false;
+ document.getElementById('student-projektbetreuer-menulist-person').disabled = false;
+ document.getElementById('student-projektbetreuer-textbox-stunden').disabled= false;
+ document.getElementById('student-projektbetreuer-textbox-stundensatz').disabled= false;
+ document.getElementById('student-projektbetreuer-textbox-stunden').setAttribute("tooltiptext", "");
+ document.getElementById('student-projektbetreuer-textbox-stundensatz').setAttribute("tooltiptext", "");
+ document.getElementById('student-projektbetreuer-button-loeschen').setAttribute("tooltiptext", "");
+ document.getElementById('student-projektbetreuer-menulist-person').setAttribute("tooltiptext", "");
+
+ // Wenn es einen Vertrag zum Lehrauftrag gibt
+ if (vertrag_id != null && vertrag_id != '')
+ {
+ // Änderung und Entfernen des Lektors disablen
+ document.getElementById('student-projektbetreuer-button-loeschen').disabled = true;
+ document.getElementById('student-projektbetreuer-menulist-person').disabled = true;
+
+ // Tooltip für Blockierung von Aenderung und Entfernen des Lektors
+ document.getElementById('student-projektbetreuer-button-loeschen').setAttribute("tooltiptext",
+ "Änderung nur nach Stornierung des Vertrags möglich.");
+ document.getElementById('student-projektbetreuer-menulist-person').setAttribute("tooltiptext",
+ "Änderung nur nach Stornierung des Vertrags möglich.");
+
+ // Stornieren ermoeglichen und tooltip entfernen
+ document.getElementById('student-projektbetreuer-button-vertrag-stornieren').disabled = false;
+ document.getElementById('student-projektbetreuer-button-vertrag-stornieren').setAttribute("tooltiptext", "");
+
+ // Url zum RDF
+ var url = "rdf/vertrag.rdf.php?"+gettimestamp();
+
+ ////RDF laden
+ var req = new phpRequest(url, '', '');
+ req.add('vertrag_id', vertrag_id);
+ var response = req.execute();
+
+ // Trick 17 (sonst gibt's ein Permission denied)
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+
+ // XML in Datasource parsen
+ var dsource = parseRDFString(response, 'http://www.technikum-wien.at/vertrag/liste');
+ var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
+ getService(Components.interfaces.nsIRDFService);
+ var subject = rdfService.GetResource("http://www.technikum-wien.at/vertrag/" + vertrag_id);
+ var predicateNS = "http://www.technikum-wien.at/vertrag/rdf";
+
+ //Daten holen
+ betrag = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#betrag" ));
+ vertragsdatum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#vertragsdatum" ));
+ vertragsstunden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#vertragsstunden" ));
+ vertragsstunden_studiensemester_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#vertragsstunden_studiensemester_kurzbz" ));
+
+ // Letzten (aktuellsten) Vertragsstatus laden
+ var url_letzterStatus = 'content/lvplanung/lehrveranstaltungDBDML.php';
+ var req_letzterStatus = new phpRequest(url_letzterStatus,'','');
+
+ req_letzterStatus.add('type', 'getLastVertragsstatus');
+ req_letzterStatus.add('vertrag_id', vertrag_id);
+
+
+ var response_letzterStatus = req_letzterStatus.executePOST();
+
+ var val_letzterStatus = new ParseReturnValue(response_letzterStatus);
+
+ if (!val_letzterStatus.dbdml_return)
+ {
+ if(val_letzterStatus.dbdml_errormsg=='')
+ alert(response_letzterStatus);
+ else
+ alert(val_letzterStatus.dbdml_errormsg);
+ }
+ else
+ {
+ var letzterStatus = val_letzterStatus.dbdml_data;
+ }
+
+ // Vertragsstatus setzen
+ // * wenn Gesamtkosten des Projektbetreuers nicht gleich Betrag im Vertrag ist ODER
+ // wenn Semesterstunden des Projektbetreuers nicht gleich Stunden im Vertrag:
+ // dann: Status 'geändert' hardcoden
+ if(parseFloat(gesamtkosten) != parseFloat(betrag) || parseFloat(stunden) != vertragsstunden)
+ {
+ vertragsstatus = 'Geändert';
+ document.getElementById('student-projektbetreuer-label-vertragsstatus').setAttribute("style", "font-weight: bold")
+ }
+ // * ansonsten Vertragsstatus zeigen
+ else
+ {
+ vertragsstatus = letzterStatus;
+ }
+
+ // Uppercase status
+ vertragsstatus = vertragsstatus.charAt(0).toUpperCase() + vertragsstatus.slice(1);
+
+ /**
+ * Stornierung
+ * Nur wenn Vertragsstatus 'akzeptiert' ist:
+ * - button Stornierung aktivieren
+ * - tooltip ausblenden
+ * - Felder zur Bearbeitung von LektorInnendaten deaktivieren
+ */
+ if(letzterStatus == 'akzeptiert')
+ {
+ // Semesterstunden und Stundensatz disablen
+ document.getElementById('student-projektbetreuer-textbox-stunden').disabled= true;
+ document.getElementById('student-projektbetreuer-textbox-stundensatz').disabled= true;
+
+ // Tooltip für Semesterstunden und Stundensatz
+ document.getElementById('student-projektbetreuer-textbox-stunden').setAttribute("tooltiptext",
+ "Änderung nur nach Stornierung des Vertrags möglich.");
+ document.getElementById('student-projektbetreuer-textbox-stundensatz').setAttribute("tooltiptext",
+ "Änderung nur nach Stornierung des Vertrags möglich.");
+ }
+ }
+ // Wenn kein Vertrag vorhanden
+ else {
+ vertragsstatus = 'Noch kein Vertrag';
+ vertragsstunden = '-';
+ vertragsstunden_studiensemester_kurzbz = '-';
+ }
+
+ // Felder befüllen
+ document.getElementById('student-projektbetreuer-label-vertragsstatus').value = vertragsstatus;
+ document.getElementById('student-projektbetreuer-label-vertragsstunden').value = vertragsstunden;
+ document.getElementById('student-projektbetreuer-label-vertragsstunden_studiensemester_kurzbz').value = vertragsstunden_studiensemester_kurzbz;
+ document.getElementById('student-projektbetreuer-label-vertrag_id').value = vertrag_id;
+ }
+}
+
+// *****
+// * Berechnet die Projektbetreuungskosten
+// *****
+function StudentProjektbetreuerGesamtkosten(){
+ var semesterstunden = document.getElementById('student-projektbetreuer-textbox-stunden').value
+ var stundensatz = document.getElementById('student-projektbetreuer-textbox-stundensatz').value
+
+ if(!isNaN(semesterstunden) && !isNaN(stundensatz))
+ gesamtkosten = semesterstunden*stundensatz;
+ else
+ gesamtkosten = 0;
+
+ return gesamtkosten;
+}
+
+// ****
+// * Storniert einen Vertrag
+// ****
+function StudentProjektbetreuerVertragStornieren(){
+
+ var result = confirm("Möchten Sie den Vertrag wirklich stornieren?");
+
+ if (result == true) {
+
+ var vertrag_id = document.getElementById('student-projektbetreuer-label-vertrag_id').value;
+ var person_id = document.getElementById('student-projektbetreuer-textbox-person_id').value;
+
+ // Vertrag stornieren
+ var url_storniert = 'content/lvplanung/lehrveranstaltungDBDML.php';
+ var req_storniert = new phpRequest(url_storniert,'','');
+
+ req_storniert.add('type', 'cancelVertrag');
+ req_storniert.add('vertrag_id', vertrag_id);
+ req_storniert.add('person_id', person_id);
+
+ var response_storniert = req_storniert.executePOST();
+
+ var val_storniert = new ParseReturnValue(response_storniert);
+
+ if (!val_storniert.dbdml_return)
+ {
+ if(val_storniert.dbdml_errormsg=='')
+ alert(response_storniert);
+ else
+ alert(val_storniert.dbdml_errormsg);
+ }
+ else
+ {
+ // Reiter wieder aufbauen
+ // Kompletten Aufbau, um wieder alle Projektbetreuer zu ermitteln und prüfen zu können,
+ // ob zumindesteiner einen Vertrag besitzt.
+ StudentProjektarbeitAuswahl();
+ }
+ }
+
+}
+
+// *****
+// * De-/Aktiviert die Buttons
+// *****
+function StudentProjektbetreuerDisableFields(val)
+{
+ document.getElementById('student-projektbetreuer-button-neu').disabled=val;
+ document.getElementById('student-projektbetreuer-button-loeschen').disabled=val;
+
+ if(val)
+ {
+ tree = document.getElementById('student-projektbetreuer-tree');
+ var oldDatasources = tree.database.GetDataSources();
+ while(oldDatasources.hasMoreElements())
+ {
+ tree.database.RemoveDataSource(oldDatasources.getNext());
+ }
+ tree.builder.rebuild();
+
+ StudentProjektbetreuerDetailDisableFields(val);
+ }
+}
+
+// ****
+// * De-/Aktiviert die Detailfelder
+// ****
+function StudentProjektbetreuerDetailDisableFields(val)
+{
+ document.getElementById('student-projektbetreuer-menulist-person').disabled=val;
+ document.getElementById('student-projektbetreuer-menulist-note').disabled=val;
+ document.getElementById('student-projektbetreuer-menulist-betreuerart').disabled=val;
+ document.getElementById('student-projektbetreuer-textbox-faktor').disabled=val;
+ document.getElementById('student-projektbetreuer-textbox-name').disabled=val;
+ document.getElementById('student-projektbetreuer-textbox-punkte').disabled=val;
+ document.getElementById('student-projektbetreuer-textbox-stunden').disabled=val;
+ document.getElementById('student-projektbetreuer-textbox-stundensatz').disabled=val;
+ document.getElementById('student-projektbetreuer-button-speichern').disabled=val;
+ document.getElementById('student-projektbetreuer-button-neueperson').disabled=val;
+ document.getElementById('student-projektbetreuer-button-kontaktdaten').disabled=val;
+}
+
+// ****
+// * Resettet die Detailfelder
+// ****
+function StudentProjektbetreuerDetailReset()
+{
+ document.getElementById('student-projektbetreuer-textbox-faktor').value='1';
+ document.getElementById('student-projektbetreuer-textbox-name').value='';
+ document.getElementById('student-projektbetreuer-menulist-note').value='';
+
+ document.getElementById('student-projektbetreuer-textbox-punkte').value='0.0';
+
+ if(document.getElementById('student-projektarbeit-menulist-projekttyp').value=='Diplom')
+ {
+ document.getElementById('student-projektbetreuer-textbox-stunden').value='5.0';
+ document.getElementById('student-projektbetreuer-menulist-betreuerart').value='Erstbegutachter';
+ }
+ else if(document.getElementById('student-projektarbeit-menulist-projekttyp').value=='Bachelor')
+ {
+ document.getElementById('student-projektbetreuer-textbox-stunden').value='4.0';
+ document.getElementById('student-projektbetreuer-menulist-betreuerart').value='Begutachter';
+ }
+ else if(document.getElementById('student-projektarbeit-menulist-projekttyp').value=='Praktikum')
+ {
+ document.getElementById('student-projektbetreuer-menulist-betreuerart').value='Betreuer';
+ }
+ else if(document.getElementById('student-projektarbeit-menulist-projekttyp').value=='Projekt')
+ {
+ document.getElementById('student-projektbetreuer-menulist-betreuerart').value='Betreuer';
+ }
+ else
+ {
+ document.getElementById('student-projektbetreuer-textbox-stunden').value='0.0';
+ document.getElementById('student-projektbetreuer-menulist-betreuerart').value='Begutachter';
+ }
+ document.getElementById('student-projektbetreuer-textbox-stundensatz').value='80.0';
+ document.getElementById('student-projektbetreuer-menulist-person').value='';
+}
+
+// ****
+// * Laedt dynamisch die Personen fuer das DropDown Menue
+// * Es muessen mindestens 3 Zeichen in das DropDown Menue eingegeben werden
+// ****
+function StudentProjektbetreuerMenulistPersonLoad(menulist, filter)
+{
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+
+ if(typeof(filter)=='undefined')
+ v = menulist.value;
+ else
+ v = filter;
+
+ if(v.length>2)
+ {
+ var url = 'rdf/person.rdf.php?filter='+encodeURIComponent(v)+'&'+gettimestamp();
+ //nurmittitel=&
+ var oldDatasources = menulist.database.GetDataSources();
+ while(oldDatasources.hasMoreElements())
+ {
+ menulist.database.RemoveDataSource(oldDatasources.getNext());
+ }
+ //Refresh damit die entfernten DS auch wirklich entfernt werden
+ menulist.builder.rebuild();
+
+ var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
+ if(typeof(filter)=='undefined')
+ var datasource = rdfService.GetDataSource(url);
+ else
+ var datasource = rdfService.GetDataSourceBlocking(url);
+ datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
+ datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
+ menulist.database.AddDataSource(datasource);
+ if(typeof(filter)!='undefined')
+ menulist.builder.rebuild();
+ }
+}
+
+// ****
+// * Speichert die Projektbetreuer Daten
+// ****
+function StudentProjektbetreuerSpeichern()
+{
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+
+ person_id = MenulistGetSelectedValue('student-projektbetreuer-menulist-person');
+ note = document.getElementById('student-projektbetreuer-menulist-note').value;
+ faktor = document.getElementById('student-projektbetreuer-textbox-faktor').value;
+ name = document.getElementById('student-projektbetreuer-textbox-name').value;
+ punkte = document.getElementById('student-projektbetreuer-textbox-punkte').value;
+ stunden = document.getElementById('student-projektbetreuer-textbox-stunden').value;
+ stundensatz = document.getElementById('student-projektbetreuer-textbox-stundensatz').value;
+ betreuerart_kurzbz = document.getElementById('student-projektbetreuer-menulist-betreuerart').value;
+ betreuerart_kurzbz_old = document.getElementById('student-projektbetreuer-textbox-betreuerart_kurzbz_old').value;
+ person_id_old = document.getElementById('student-projektbetreuer-textbox-person_id').value;
+ neu = document.getElementById('student-projektbetreuer-checkbox-neu').checked;
+
+ studiengang_kz = document.getElementById('student-prestudent-menulist-studiengang_kz').value;
+
+ var tree = document.getElementById('student-projektarbeit-tree');
+
+ if(person_id=='')
+ {
+ alert('Bitte zuerst eine/n BetreuerIn auswaehlen');
+ return false;
+ }
+
+ if (tree.currentIndex==-1)
+ {
+ alert('Projektarbeit muss ausgewaehlt sein');
+ return;
+ }
+ var col = tree.columns ? tree.columns["student-projektarbeit-tree-projektarbeit_id"] : "student-projektarbeit-tree-projektarbeit_id";
+ var projektarbeit_id=tree.view.getCellText(tree.currentIndex,col);
+
+ var url = 'content/student/studentDBDML.php';
+ var req = new phpRequest(url,'','');
+
+ req.add('type', 'saveprojektbetreuer');
+
+ req.add('person_id', person_id);
+ req.add('note', note);
+ req.add('faktor', faktor);
+ req.add('name', name);
+ req.add('punkte', punkte);
+ req.add('stunden', stunden);
+ req.add('stundensatz', stundensatz);
+ req.add('betreuerart_kurzbz', betreuerart_kurzbz);
+ req.add('betreuerart_kurzbz_old', betreuerart_kurzbz_old);
+ req.add('projektarbeit_id', projektarbeit_id);
+ req.add('person_id_old', person_id_old);
+ req.add('neu', neu);
+ req.add('studiengang_kz', studiengang_kz);
+
+ var response = req.executePOST();
+
+ var val = new ParseReturnValue(response)
+
+ if (!val.dbdml_return)
+ {
+ if(val.dbdml_errormsg=='')
+ alert(response)
+ else
+ alert(val.dbdml_errormsg)
+ }
+ else
+ {
+ StudentProjektbetreuerSelectPersonID=person_id;
+ StudentProjektbetreuerSelectProjektarbeitID=projektarbeit_id;
+ StudentProjektbetreuerSelectBetreuerartKurzbz=betreuerart_kurzbz;
+ StudentProjektbetreuerDetailDisableFields(true);
+ StudentProjektbetreuerTreeDatasource.Refresh(false); //non blocking
+ SetStatusBarText('Daten wurden gespeichert');
+
+ }
+}
+
+// ****
+// * Deaktiviert die Detailfelder um einen Neuen Datensatz zu erstellen
+// ****
+function StudentProjektbetreuerNeu()
+{
+ StudentProjektbetreuerDetailReset();
+ document.getElementById('student-projektbetreuer-checkbox-neu').checked=true;
+ StudentProjektbetreuerDetailDisableFields(false);
+}
+
+// ****
+// * Loescht einen Projektbetreuer
+// ****
+function StudentProjektbetreuerLoeschen()
+{
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+
+ var tree = document.getElementById('student-projektbetreuer-tree');
+
+ if (tree.currentIndex==-1)
+ {
+ alert('Projektbetreuer muss ausgewaehlt sein');
+ return;
+ }
+ var col = tree.columns ? tree.columns["student-projektbetreuer-tree-projektarbeit_id"] : "student-projektbetreuer-tree-projektarbeit_id";
+ var projektarbeit_id=tree.view.getCellText(tree.currentIndex,col);
+ var col = tree.columns ? tree.columns["student-projektbetreuer-tree-person_id"] : "student-projektbetreuer-tree-person_id";
+ var person_id=tree.view.getCellText(tree.currentIndex,col);
+ var col = tree.columns ? tree.columns["student-projektbetreuer-tree-betreuerart_kurzbz"] : "student-projektbetreuer-tree-betreuerart_kurzbz";
+ var betreuerart_kurzbz=tree.view.getCellText(tree.currentIndex,col);
+
+ studiengang_kz = document.getElementById('student-prestudent-menulist-studiengang_kz').value;
+
+ var url = 'content/student/studentDBDML.php';
+ var req = new phpRequest(url,'','');
+
+ req.add('type', 'deleteprojektbetreuer');
+
+ req.add('person_id', person_id);
+ req.add('projektarbeit_id', projektarbeit_id);
+ req.add('betreuerart_kurzbz', betreuerart_kurzbz);
+ req.add('studiengang_kz', studiengang_kz);
+ req.add('vertrag_id', vertrag_id);
+
+ var response = req.executePOST();
+
+ var val = new ParseReturnValue(response)
+
+ if (!val.dbdml_return)
+ {
+ if(val.dbdml_errormsg=='')
+ alert(response)
+ else
+ alert(val.dbdml_errormsg)
+ }
+ else
+ {
+ StudentProjektbetreuerSelectPersonID=null;
+ StudentProjektbetreuerSelectProjektarbeitID=null;
+ StudentProjektbetreuerSelectBetreuerartKurzbz=null;
+ StudentProjektbetreuerTreeDatasource.Refresh(false); //non blocking
+ SetStatusBarText('Daten wurden geloescht');
+ StudentProjektbetreuerDetailDisableFields(true);
+ }
+}
+
+function StudentProjektbetreuerLoadMitarbeiterDaten()
+{
+ person_id = MenulistGetSelectedValue('student-projektbetreuer-menulist-person');
+
+ var url = 'content/student/studentDBDML.php';
+ var req = new phpRequest(url,'','');
+
+ req.add('type', 'getstundensatz');
+ req.add('person_id', person_id);
+
+ var response = req.executePOST();
+
+ var val = new ParseReturnValue(response)
+
+ if (!val.dbdml_return)
+ {
+ if(val.dbdml_errormsg=='')
+ alert(response)
+ else
+ alert(val.dbdml_errormsg)
+ }
+ else
+ {
+ stundensatz = val.dbdml_data
+ }
+
+ document.getElementById('student-projektbetreuer-textbox-stundensatz').value=stundensatz;
+}
+
+// ****
+// * Neuen Projektbetreuer anlegen
+// ****
+function StudentProjektbetreuerNeuePerson()
+{
+ 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');
+}
+
+// ****
+// * Kontaktdaten eines Betreuers Bearbeiten
+// ****
+function StudentProjektbetreuerKontaktdaten()
+{
+ person_id = MenulistGetSelectedValue('student-projektbetreuer-menulist-person');
+ if(person_id!='')
+ window.open('vilesci/personen/kontaktdaten_edit.php?person_id='+person_id,'Kontaktdaten');
+ else
+ alert('Bitte zuerst eine Person auswaehlen');
+}
diff --git a/content/student/studentprojektarbeitoverlay.xul.php b/content/student/studentprojektarbeitoverlay.xul.php
index 80c09df16..39dcaed20 100644
--- a/content/student/studentprojektarbeitoverlay.xul.php
+++ b/content/student/studentprojektarbeitoverlay.xul.php
@@ -26,8 +26,12 @@ header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Pragma: no-cache");
header("Content-type: application/vnd.mozilla.xul+xml");
require_once('../../config/vilesci.config.inc.php');
+require_once('../../config/global.config.inc.php');
echo '';
+// Vertragsdetails: Anzeige wird über config Eintrag bestimmt
+$is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN') || FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN == true) ? 'false' : 'true';
+
?>
';
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/projektbetreuer/rdf#projektarbeit_id" />
+
+
@@ -400,6 +408,7 @@ echo '';
+
@@ -433,7 +442,7 @@ echo '';
oncommand="StudentProjektbetreuerLoadMitarbeiterDaten()">
-
@@ -508,6 +517,40 @@ echo '';
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/include/lehreinheitmitarbeiter.class.php b/include/lehreinheitmitarbeiter.class.php
index e1933cfa7..48d0de485 100644
--- a/include/lehreinheitmitarbeiter.class.php
+++ b/include/lehreinheitmitarbeiter.class.php
@@ -146,6 +146,7 @@ class lehreinheitmitarbeiter extends basis_db
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->ext_id = $row->ext_id;
+ $obj->vertrag_id = $row->vertrag_id;
$this->lehreinheitmitarbeiter[] = $obj;
}
diff --git a/include/statistik.class.php b/include/statistik.class.php
index 89ae1c752..f45cfde53 100644
--- a/include/statistik.class.php
+++ b/include/statistik.class.php
@@ -514,6 +514,13 @@ class statistik extends basis_db
if($this->sql!='')
{
$sql = $this->sql;
+
+ // Wenn im SQL ein $user vorkommt wird das durch den eingeloggten User ersetzt
+ if(strpos($sql, '$user')!==false)
+ {
+ $uid = get_uid();
+ $sql = str_replace('$user',$this->db_add_param($uid),$sql);
+ }
foreach($_REQUEST as $name=>$value)
{
if (is_array($value))
@@ -615,11 +622,15 @@ class statistik extends basis_db
$check = '/\$[0-9A-z]+/';
preg_match_all($check, $value, $result);
$result = $result[0];
-
+ $vars = array();
for($i=0;$i
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
+require_once(dirname(__FILE__).'/functions.inc.php');
class vertrag extends basis_db
{
@@ -65,6 +66,8 @@ class vertrag extends basis_db
$this->anmerkung = $row->anmerkung;
$this->vertragsdatum = $row->vertragsdatum;
$this->lehrveranstaltung_id = $row->lehrveranstaltung_id;
+ $this->vertragsstunden = $row->vertragsstunden;
+ $this->vertragsstunden_studiensemester_kurzbz = $row->vertragsstunden_studiensemester_kurzbz;
$this->new=false;
@@ -142,6 +145,8 @@ class vertrag extends basis_db
$obj->anmerkung = $row->anmerkung;
$obj->vertragsdatum = $row->vertragsdatum;
$obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
+ $obj->vertragsstunden = $row->vertragsstunden;
+ $obj->vertragsstunden_studiensemester_kurzbz = $row->vertragsstunden_studiensemester_kurzbz;
$obj->vertragstyp_bezeichnung = $row->vertragstyp_bezeichnung;
@@ -375,7 +380,7 @@ class vertrag extends basis_db
JOIN lehre.tbl_projektarbeit USING(projektarbeit_id)
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
WHERE
- person_id=".$this->db_add_param($person_id, FHC_INTEGER)."
+ tbl_projektbetreuer.person_id=".$this->db_add_param($person_id, FHC_INTEGER)."
AND vertrag_id IS NULL";
/*
UNION
@@ -518,10 +523,13 @@ class vertrag extends basis_db
JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE
lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id)
- as bezeichnung
+ as bezeichnung,
+ vertragsstunden,
+ vertragsstunden_studiensemester_kurzbz
FROM
lehre.tbl_lehreinheitmitarbeiter
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
+ JOIN lehre.tbl_vertrag USING (vertrag_id)
WHERE
vertrag_id=".$this->db_add_param($vertrag_id, FHC_INTEGER)."
UNION
@@ -535,11 +543,14 @@ class vertrag extends basis_db
tbl_lehreinheit.studiensemester_kurzbz,
tbl_projektbetreuer.betreuerart_kurzbz,
(SELECT nachname || ' ' || vorname FROM public.tbl_person JOIN public.tbl_benutzer USING(person_id) WHERE uid=tbl_projektarbeit.student_uid)
- as bezeichnung
+ as bezeichnung,
+ vertragsstunden,
+ vertragsstunden_studiensemester_kurzbz
FROM
lehre.tbl_projektbetreuer
JOIN lehre.tbl_projektarbeit USING(projektarbeit_id)
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
+ JOIN lehre.tbl_vertrag USING (vertrag_id)
WHERE
vertrag_id=".$this->db_add_param($vertrag_id, FHC_INTEGER).";";
/* UNION
@@ -580,6 +591,8 @@ class vertrag extends basis_db
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$obj->betreuerart_kurzbz = $row->betreuerart_kurzbz;
$obj->bezeichnung = $row->bezeichnung;
+ $obj->vertragsstunden = $row->vertragsstunden;
+ $obj->vertragsstunden_studiensemester_kurzbz = $row->vertragsstunden_studiensemester_kurzbz;
$this->result[] = $obj;
}
return true;
@@ -1016,6 +1029,38 @@ class vertrag extends basis_db
}
}
+ /**
+ * Storniert einen Vertrag und seine Verbindungen
+ * @param $vertrag_id ID des Vertrags
+ * @param $mitarbeiter_uid
+ */
+ public function cancel($vertrag_id, $mitarbeiter_uid)
+ {
+ $insertvon = get_uid();
+
+ $qry = "
+ UPDATE lehre.tbl_lehreinheitmitarbeiter SET vertrag_id=null WHERE vertrag_id=".$this->db_add_param($vertrag_id, FHC_INTEGER).";
+ UPDATE lehre.tbl_projektbetreuer SET vertrag_id=null WHERE vertrag_id=".$this->db_add_param($vertrag_id, FHC_INTEGER).";
+ INSERT INTO lehre.tbl_vertrag_vertragsstatus(vertragsstatus_kurzbz, vertrag_id, uid, datum, insertamum, insertvon)
+ VALUES(".
+ $this->db_qoute('storno'). ", ".
+ $this->db_add_param($vertrag_id, FHC_INTEGER). ", ".
+ $this->db_add_param($mitarbeiter_uid). ", ".
+ $this->db_qoute('NOW()'). ", ".
+ $this->db_qoute('NOW()'). ", ".
+ $this->db_qoute($insertvon). "
+ );
+ ";
+
+ if($this->db_query($qry))
+ return true;
+ else
+ {
+ $this->errormsg = 'Fehler beim Stornieren des Vertrags';
+ return false;
+ }
+ }
+
/**
* Liefert alle Vertraege bei denen die Lehraufträge nicht zur Person passen.
* (zB Aufgrund Lektorenaenderung)
diff --git a/public/css/Tabulator.css b/public/css/Tabulator.css
new file mode 100644
index 000000000..359f29e72
--- /dev/null
+++ b/public/css/Tabulator.css
@@ -0,0 +1,14 @@
+.tabulator-col {
+ font-size: 14px;
+}
+
+.tabulator-page {
+ color: black;
+ opacity: 1 !important;
+ padding: 2px 7px !important;
+ border: 0px !important;
+}
+
+.tabulator-page.active {
+ color: #337ab7 !important;
+}
diff --git a/public/images/icons/fa-user-check.png b/public/images/icons/fa-user-check.png
new file mode 100644
index 000000000..040fdfa73
Binary files /dev/null and b/public/images/icons/fa-user-check.png differ
diff --git a/public/images/icons/fa-user-clock.png b/public/images/icons/fa-user-clock.png
new file mode 100644
index 000000000..7ddb54c28
Binary files /dev/null and b/public/images/icons/fa-user-clock.png differ
diff --git a/public/images/icons/fa-user-cog.png b/public/images/icons/fa-user-cog.png
new file mode 100644
index 000000000..3aca7cf09
Binary files /dev/null and b/public/images/icons/fa-user-cog.png differ
diff --git a/public/images/icons/fa-user-edit.png b/public/images/icons/fa-user-edit.png
new file mode 100644
index 000000000..1742e63b6
Binary files /dev/null and b/public/images/icons/fa-user-edit.png differ
diff --git a/public/images/icons/fa-user-graduate.png b/public/images/icons/fa-user-graduate.png
new file mode 100644
index 000000000..29c7d1d37
Binary files /dev/null and b/public/images/icons/fa-user-graduate.png differ
diff --git a/public/images/icons/fa-user-lock.png b/public/images/icons/fa-user-lock.png
new file mode 100644
index 000000000..1dfd1726d
Binary files /dev/null and b/public/images/icons/fa-user-lock.png differ
diff --git a/public/images/icons/fa-user-minus.png b/public/images/icons/fa-user-minus.png
new file mode 100644
index 000000000..6844e353b
Binary files /dev/null and b/public/images/icons/fa-user-minus.png differ
diff --git a/public/images/icons/fa-user-ninja.png b/public/images/icons/fa-user-ninja.png
new file mode 100644
index 000000000..30f3d0653
Binary files /dev/null and b/public/images/icons/fa-user-ninja.png differ
diff --git a/public/images/icons/fa-user-tag.png b/public/images/icons/fa-user-tag.png
new file mode 100644
index 000000000..c18d3b07e
Binary files /dev/null and b/public/images/icons/fa-user-tag.png differ
diff --git a/public/images/icons/fa-user-times.png b/public/images/icons/fa-user-times.png
new file mode 100644
index 000000000..650b7325f
Binary files /dev/null and b/public/images/icons/fa-user-times.png differ
diff --git a/public/images/icons/fa-users-cog.png b/public/images/icons/fa-users-cog.png
new file mode 100644
index 000000000..ac1545631
Binary files /dev/null and b/public/images/icons/fa-users-cog.png differ
diff --git a/public/js/FilterWidget.js b/public/js/FilterWidget.js
index a9e0f6cf9..95aac9f95 100644
--- a/public/js/FilterWidget.js
+++ b/public/js/FilterWidget.js
@@ -13,14 +13,14 @@
* Global function used by FilterWidget JS to refresh the side menu
* NOTE: it is called from the FilterWidget JS therefore must be a global function
* It may be overwritten by a custom refreshSideMenuHook included in a javascript which will be loaded after this one
- * The given parameters, filter_page and navigation_page, are required
+ * The given parameters, filterUniqueId and navigation_page, are required
*/
function refreshSideMenuHook()
{
FHC_NavigationWidget.refreshSideMenuHook(
- 'system/Filters/setNavigationMenu',
+ 'widgets/Filters/setNavigationMenu',
{
- filter_page: FHC_FilterWidget.getFilterPage(),
+ filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix(),
navigation_page: FHC_NavigationWidget.getNavigationPage()
}
);
@@ -33,34 +33,37 @@ function refreshSideMenuHook()
*/
function sideMenuHook()
{
- $(".remove-custom-filter").click(function() {
+ // If menu is present
+ if (FHC_FilterWidget._hideMenu != true)
+ {
+ $(".remove-custom-filter").click(function() {
- // Ajax call to remove a custom filter
- FHC_AjaxClient.ajaxCallPost(
- "system/Filters/removeCustomFilter",
- {
- filter_id: $(this).attr("value"), // filter_id of the filter to be removed
- filter_page: FHC_FilterWidget.getFilterPage()
- },
- {
- successCallback: function(data, textStatus, jqXHR) {
+ // Ajax call to remove a custom filter
+ FHC_AjaxClient.ajaxCallPost(
+ "widgets/Filters/removeCustomFilter",
+ {
+ filter_id: $(this).attr("value"), // filter_id of the filter to be removed
+ filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix()
+ },
+ {
+ successCallback: function(data, textStatus, jqXHR) {
- if (FHC_AjaxClient.isError(data))
- {
- console.log(FHC_AjaxClient.getError(data));
- }
- else
- {
- // If a success and refreshSideMenuHook is a valid function then call it to refresh the side menu
- if (typeof refreshSideMenuHook == "function")
+ if (FHC_AjaxClient.isError(data))
{
- refreshSideMenuHook();
+ console.log(FHC_AjaxClient.getError(data));
+ }
+ else
+ {
+ if (typeof refreshSideMenuHook == "function")
+ {
+ refreshSideMenuHook();
+ }
}
}
}
- }
- );
- });
+ );
+ });
+ }
}
//--------------------------------------------------------------------------------------------------------------------
@@ -69,6 +72,7 @@ function sideMenuHook()
// Success
const DATASET_REP_TABLESORTER = "tablesorter";
const DATASET_REP_PIVOTUI = "pivotUI";
+const DATASET_REP_TABULATOR = "tabulator";
/**
* FHC_FilterWidget this object is used to render the GUI of a filter widget and to operate with it
@@ -78,7 +82,9 @@ var FHC_FilterWidget = {
//------------------------------------------------------------------------------------------------------------------
// Properties
- _datasetRepresentation: null, //
+ _datasetRepresentation: null, // contains the current data representation
+ _hideMenu: false, //
+ _hideOptions: false, //
//------------------------------------------------------------------------------------------------------------------
// Public methods
@@ -102,7 +108,7 @@ var FHC_FilterWidget = {
/**
* To retrieve the page where the FilterWidget is used, using the FHC_JS_DATA_STORAGE_OBJECT
*/
- getFilterPage: function() {
+ getFilterUniqueIdPrefix: function() {
return FHC_JS_DATA_STORAGE_OBJECT.called_path + "/" + FHC_JS_DATA_STORAGE_OBJECT.called_method;
},
@@ -181,6 +187,12 @@ var FHC_FilterWidget = {
{
$("#filterPivotUI").html("");
}
+
+ // If the choosen dataset representation is tabulator
+ if (FHC_FilterWidget._datasetRepresentation == DATASET_REP_TABULATOR)
+ {
+ $("#filterTabulator").html("");
+ }
},
/**
@@ -190,9 +202,9 @@ var FHC_FilterWidget = {
_getFilter: function(renderFunction) {
FHC_AjaxClient.ajaxCallGet(
- "system/Filters/getFilter",
+ "widgets/Filters/getFilter",
{
- filter_page: FHC_FilterWidget.getFilterPage()
+ filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix()
},
{
successCallback: function(data, textStatus, jqXHR) {
@@ -224,16 +236,23 @@ var FHC_FilterWidget = {
FHC_FilterWidget._initSessionStorage(); // initialize the session storage
FHC_FilterWidget._setDatasetRepresentation(data); // set what type of dataset representation was choosen
+ FHC_FilterWidget._setHideMenu(data); // sets the _hideMenu property
+ FHC_FilterWidget._setHideOptions(data);
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
+
+ if (FHC_FilterWidget._hideOptions != true)
+ {
+ 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._renderDataset(data);
FHC_FilterWidget._turnOnEvents(); // turns all the events off
@@ -265,7 +284,7 @@ var FHC_FilterWidget = {
*/
_turnOffEvents: function() {
- $("[data-toggle='collapse']").off("click");
+ $('[data-toggle="collapse"]').off("click");
$(".drag-and-drop-fields-span").off("draggable");
$(".drag-and-drop-fields-span").off("droppable");
$(".remove-selected-field").off("click");
@@ -279,7 +298,7 @@ var FHC_FilterWidget = {
// If the choosen dataset representation is tablesorter
if (FHC_FilterWidget._datasetRepresentation == DATASET_REP_TABLESORTER)
{
- FHC_FilterWidget._disableTableSorter(); // disable the tablesorter
+ FHC_FilterWidget._disableTablesorter(); // disable the tablesorter
}
},
@@ -289,7 +308,7 @@ var FHC_FilterWidget = {
*/
_turnOnEvents: function() {
- $("[data-toggle='collapse']").click(FHC_FilterWidget._dataToggleCollapseEvent); // Click event to collapse or to open the filter options panel
+ $('[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
@@ -385,10 +404,10 @@ var FHC_FilterWidget = {
});
FHC_AjaxClient.ajaxCallPost(
- "system/Filters/sortSelectedFields",
+ "widgets/Filters/sortSelectedFields",
{
selectedFields: arrayDndId,
- filter_page: FHC_FilterWidget.getFilterPage()
+ filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix()
},
{
successCallback: function(data, textStatus, jqXHR) {
@@ -405,10 +424,10 @@ var FHC_FilterWidget = {
_revomeSelectedFieldsEvent: function(event) {
FHC_AjaxClient.ajaxCallPost(
- "system/Filters/removeSelectedField",
+ "widgets/Filters/removeSelectedField",
{
selectedField: $(this).attr("fieldToRemove"),
- filter_page: FHC_FilterWidget.getFilterPage()
+ filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix()
},
{
successCallback: function(data, textStatus, jqXHR) {
@@ -445,10 +464,10 @@ var FHC_FilterWidget = {
_addFieldEvent: function(event) {
FHC_AjaxClient.ajaxCallPost(
- "system/Filters/addSelectedField",
+ "widgets/Filters/addSelectedField",
{
selectedField: $(this).val(),
- filter_page: FHC_FilterWidget.getFilterPage()
+ filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix()
},
{
successCallback: function(data, textStatus, jqXHR) {
@@ -476,13 +495,13 @@ var FHC_FilterWidget = {
});
FHC_AjaxClient.ajaxCallPost(
- "system/Filters/applyFilters",
+ "widgets/Filters/applyFilters",
{
appliedFilters: appliedFilters,
appliedFiltersOperations: appliedFiltersOperations,
appliedFiltersConditions: appliedFiltersConditions,
appliedFiltersOptions: appliedFiltersOptions,
- filter_page: FHC_FilterWidget.getFilterPage()
+ filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix()
},
{
successCallback: function(data, textStatus, jqXHR) {
@@ -498,10 +517,10 @@ var FHC_FilterWidget = {
_removeAppliedFiltersEvent: function(event) {
FHC_AjaxClient.ajaxCallPost(
- "system/Filters/removeAppliedFilter",
+ "widgets/Filters/removeAppliedFilter",
{
appliedFilter: $(this).attr("filterToRemove"),
- filter_page: FHC_FilterWidget.getFilterPage()
+ filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix()
},
{
successCallback: function(data, textStatus, jqXHR) {
@@ -517,10 +536,10 @@ var FHC_FilterWidget = {
_addFilterEvent: function(event) {
FHC_AjaxClient.ajaxCallPost(
- "system/Filters/addFilter",
+ "widgets/Filters/addFilter",
{
filter: $(this).val(),
- filter_page: FHC_FilterWidget.getFilterPage()
+ filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix()
},
{
successCallback: function(data, textStatus, jqXHR) {
@@ -559,17 +578,22 @@ var FHC_FilterWidget = {
if ($("#customFilterDescription").val() != "")
{
FHC_AjaxClient.ajaxCallPost(
- "system/Filters/saveCustomFilter",
+ "widgets/Filters/saveCustomFilter",
{
customFilterDescription: $("#customFilterDescription").val(),
- filter_page: FHC_FilterWidget.getFilterPage()
+ filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix()
},
{
successCallback: function(data, textStatus, jqXHR) {
- // If a success and refreshSideMenuHook is a valid function then call it to refresh the side menu
- if (typeof refreshSideMenuHook == "function")
+
+ // If menu is present
+ if (FHC_FilterWidget._hideMenu != true)
{
- refreshSideMenuHook();
+ // If a success and refreshSideMenuHook is a valid function then call it to refresh the side menu
+ if (typeof refreshSideMenuHook == "function")
+ {
+ refreshSideMenuHook();
+ }
}
}
}
@@ -827,6 +851,12 @@ var FHC_FilterWidget = {
{
FHC_FilterWidget._renderDatasetPivotUI(data); // ...render the pivotUI GUI
}
+
+ // If the choosen dataset representation is tabulator then...
+ if (FHC_FilterWidget._datasetRepresentation == DATASET_REP_TABULATOR)
+ {
+ FHC_FilterWidget._renderDatasetTabulator(data); // ...render the tabulator GUI
+ }
},
/**
@@ -843,7 +873,7 @@ var FHC_FilterWidget = {
FHC_FilterWidget._clearTablesorterLocalStorage();
}
- if (data.hasOwnProperty("checkboxes") && data.checkboxes!=null && data.checkboxes.trim() != "")
+ if (data.hasOwnProperty("checkboxes") && data.checkboxes != null && data.checkboxes.trim() != "")
{
$("#filterTableDataset > thead > tr").append("
Select
");
}
@@ -928,12 +958,14 @@ var FHC_FilterWidget = {
*/
_enableTableSorter: function() {
+ var filterWidgetTablesorter = $("#filterTableDataset");
+
// Checks if the table contains data (rows)
- if ($("#filterTableDataset").find("tbody:empty").length == 0
- && $("#filterTableDataset").find("tr:empty").length == 0
- && $("#filterTableDataset").hasClass("table-condensed"))
+ if (filterWidgetTablesorter.find("tbody:empty").length == 0
+ && filterWidgetTablesorter.find("tr:empty").length == 0
+ && filterWidgetTablesorter.hasClass("table-condensed"))
{
- $("#filterTableDataset").tablesorter({
+ filterWidgetTablesorter.tablesorter({
dateFormat: "ddmmyyyy",
widgets: ["zebra", "filter"],
widgetOptions: {
@@ -941,37 +973,34 @@ var FHC_FilterWidget = {
}
});
- $.tablesorter.updateAll($("#filterTableDataset")[0].config, true, null);
+ $.tablesorter.updateAll(filterWidgetTablesorter[0].config, true, null);
}
},
/**
* Disable the tablesorter
*/
- _disableTableSorter: function() {
+ _disableTablesorter: function() {
$("#filterTableDataset").trigger("disable");
},
+ /**
+ * Tablesorter filter local storage clean
+ */
+ _cleanTablesorterLocalStorage: function() {
+
+ $("#filterTableDataset").trigger("filterResetSaved");
+ },
+
/**
* Renders the pivotUI for the FilterWidget
* The data to be displayed are retrived from the parameter data
*/
_renderDatasetPivotUI: function(data) {
- var options = {}; // eventually contains options fot the pivotUI
-
- // Checks if options were given
- if (data.hasOwnProperty("datasetRepresentationOptions") && data.datasetRepresentationOptions != "")
- {
- var tmpOptions = eval("(" + data.datasetRepresentationOptions + ")"); // and converts them from string to javascript code
-
- // If it is an object then can be used
- if (typeof tmpOptions == "object")
- {
- options = tmpOptions;
- }
- }
+ // Checks if options were given and returns them
+ var options = FHC_FilterWidget._getRepresentationOptions(data);
// Manipulation for the representation!
var arrayFieldsToDisplay = FHC_FilterWidget._getFieldsToDisplay(data);
@@ -1057,8 +1086,145 @@ var FHC_FilterWidget = {
},
/**
- * Tablesorter filter local storage clean
+ * Renders the tabulator for the FilterWidget
+ * The data to be displayed are retrived from the parameter data
*/
+ _renderDatasetTabulator: function(data) {
+
+ // Checks if options were given and returns them
+ var options = FHC_FilterWidget._getRepresentationOptions(data);
+ // Checks if record fields definitions were given and returns them
+ var recordFieldsDefinitions = FHC_FilterWidget._getRepresentationFieldsDefinitions(data);
+
+ // Manipulation for the representation!
+ var arrayTabulatorColumns = FHC_FilterWidget._getTabulatorColumns(data, recordFieldsDefinitions);
+
+ if (arrayTabulatorColumns.length > 0)
+ {
+ // ...if there are data to be displayed...
+ if (data.hasOwnProperty("dataset") && $.isArray(data.dataset))
+ {
+ if (options == null) options = {};
+
+ options.columns = arrayTabulatorColumns;
+ options.data = data.dataset;
+
+ // Renders the tabulator
+ $("#filterTabulator").tabulator(options);
+ }
+ }
+ },
+
+ /**
+ * Retrives the fields to be displayed from the data parameter, if aliases are present then they are used
+ */
+ _getTabulatorColumns: function(data, recordFieldsDefinitions) {
+
+ var fieldsToDisplayTabulator = [];
+
+ if (data.hasOwnProperty("selectedFields") && $.isArray(data.selectedFields))
+ {
+ for (var sfc = 0; sfc < data.selectedFields.length; sfc++)
+ {
+ for (var fc = 0; fc < data.fields.length; fc++)
+ {
+ if (data.selectedFields[sfc] == data.fields[fc])
+ {
+ // Build the array of objects (columns) used by tabulator and store it in tabulatorColumns
+ var tmpColumnObj = {}; // New object that represents a column
+
+ // If was given a definition for this field then use it!
+ if (recordFieldsDefinitions != null && recordFieldsDefinitions.hasOwnProperty(data.selectedFields[sfc]))
+ {
+ tmpColumnObj = recordFieldsDefinitions[data.selectedFields[sfc]];
+ }
+
+ tmpColumnObj.field = data.selectedFields[sfc]; // Field name to be linked with dataset field name
+
+ // If there is an alias for this field use it to give a title to this field (header)
+ if (data.hasOwnProperty("columnsAliases") && $.isArray(data.columnsAliases))
+ {
+ tmpColumnObj.title = data.columnsAliases[fc];
+ }
+ else // otherwise use the field name itself
+ {
+ tmpColumnObj.title = data.selectedFields[sfc];
+ }
+
+ fieldsToDisplayTabulator.push(tmpColumnObj); // Add tmpColumnObj to tabulatorColumns
+ }
+ }
+ }
+ }
+
+ // If additional columns are present...
+ if (data.hasOwnProperty("additionalColumns") && data.additionalColumns != null && $.isArray(data.additionalColumns))
+ {
+ // ...loops through them
+ $.each(data.additionalColumns, function(i, additionalColumn) {
+
+ var tmpColumnObj = {}; // New object that represents a column
+
+ // If was given a definition for this field then use it!
+ if (recordFieldsDefinitions != null && recordFieldsDefinitions.hasOwnProperty(additionalColumn))
+ {
+ tmpColumnObj = recordFieldsDefinitions[additionalColumn];
+ }
+
+ tmpColumnObj.title = additionalColumn; // Give a title to this field (header)
+ tmpColumnObj.field = additionalColumn; // Field name to be linked with dataset field name
+
+ fieldsToDisplayTabulator.push(tmpColumnObj); // Add tmpColumnObj to tabulatorColumns
+ });
+ }
+
+ return fieldsToDisplayTabulator;
+ },
+
+ /**
+ * Gets options for the representation
+ */
+ _getRepresentationOptions: function(data) {
+
+ var options = {}; // eventually contains options fot the representation
+
+ // Checks if options were given
+ if (data.hasOwnProperty("datasetRepresentationOptions") && data.datasetRepresentationOptions != "")
+ {
+ var tmpOptions = eval("(" + data.datasetRepresentationOptions + ")"); // and converts them from string to javascript code
+
+ // If it is an object then can be used
+ if (typeof tmpOptions == "object")
+ {
+ options = tmpOptions;
+ }
+ }
+
+ return options;
+ },
+
+ /**
+ * Gets record fields definitions to represent the dataset
+ */
+ _getRepresentationFieldsDefinitions: function(data) {
+
+ var fieldsDefinitions = {}; // eventually contains record fields definitions
+
+ // Checks if record fields definitions was given as parameter
+ if (data.hasOwnProperty("datasetRepresentationFieldsDefinitions") && data.datasetRepresentationFieldsDefinitions != "")
+ {
+ var tmpFDefs = eval("(" + data.datasetRepresentationFieldsDefinitions + ")"); // and converts them from string to javascript code
+
+ // If it is an object then can be used
+ if (typeof tmpFDefs == "object")
+ {
+ fieldsDefinitions = tmpFDefs;
+ }
+ }
+
+ return fieldsDefinitions;
+ },
+
_clearTablesorterLocalStorage: function() {
localStorage.removeItem("tablesorter-filters");
},
@@ -1072,8 +1238,29 @@ var FHC_FilterWidget = {
{
FHC_FilterWidget._datasetRepresentation = data.datasetRepresentation;
}
- }
+ },
+ /**
+ * Set what type of dataset representation was choosen
+ */
+ _setHideMenu: function(data) {
+
+ if (data.hasOwnProperty("hideMenu"))
+ {
+ FHC_FilterWidget._hideMenu = data.hideMenu;
+ }
+ },
+
+ /**
+ * Set what type of dataset representation was choosen
+ */
+ _setHideOptions: function(data) {
+
+ if (data.hasOwnProperty("hideOptions"))
+ {
+ FHC_FilterWidget._hideOptions = data.hideOptions;
+ }
+ }
};
/**
diff --git a/public/js/TableWidget.js b/public/js/TableWidget.js
new file mode 100644
index 000000000..89e7cf3d5
--- /dev/null
+++ b/public/js/TableWidget.js
@@ -0,0 +1,594 @@
+/**
+ * TableWidget JS magic
+ */
+
+//--------------------------------------------------------------------------------------------------------------------
+// Constants
+
+//
+const DATASET_REP_TABLESORTER = "tablesorter";
+const DATASET_REP_PIVOTUI = "pivotUI";
+const DATASET_REP_TABULATOR = "tabulator";
+
+/**
+ * FHC_TableWidget this object is used to render the GUI of a table widget and to operate with it
+ */
+var FHC_TableWidget = {
+
+ //------------------------------------------------------------------------------------------------------------------
+ // Properties
+
+ _datasetRepresentation: null, // contains the current data representation
+
+ //------------------------------------------------------------------------------------------------------------------
+ // Public methods
+
+ /**
+ * To display the TableWidget using the loaded data prenset in the session
+ */
+ display: function() {
+
+ FHC_TableWidget._getTables(FHC_TableWidget._renderTableWidget);
+ },
+
+ /**
+ * Alias call to method display only to inprove the readability of the code
+ */
+ refresh: function() {
+
+ FHC_TableWidget.display();
+ },
+
+ //------------------------------------------------------------------------------------------------------------------
+ // Private methods
+
+ /**
+ * To retrive the page where the TableWidget is used, using the FHC_JS_DATA_STORAGE_OBJECT
+ */
+ _getTableUniqueIdPrefix: function() {
+
+ return FHC_JS_DATA_STORAGE_OBJECT.called_path + "/" + FHC_JS_DATA_STORAGE_OBJECT.called_method;
+ },
+
+ /**
+ * Utility method that checks if data contains an error and print that to the console
+ * otherwise the TableWidget GUI is refreshed
+ */
+ _failOrRefresh: function(data, textStatus, jqXHR) {
+
+ if (FHC_AjaxClient.isError(data))
+ {
+ console.log(FHC_AjaxClient.getError(data));
+ }
+ else
+ {
+ FHC_TableWidget.refresh();
+ }
+ },
+
+ /**
+ * Utility method that checks if data contains an error and print that to the console
+ * otherwise the page is reloaded
+ */
+ _failOrReload: function(data, textStatus, jqXHR) {
+
+ if (FHC_AjaxClient.isError(data))
+ {
+ console.log(FHC_AjaxClient.getError(data));
+ }
+ else
+ {
+ location.reload();
+ }
+ },
+
+ /**
+ * To reset the Table Widget GUI
+ */
+ _resetGUI: function(tableWidgetDiv) {
+
+ // If the choosen dataset representation is tablesorter
+ if (FHC_TableWidget._datasetRepresentation == DATASET_REP_TABLESORTER)
+ {
+ tableWidgetDiv.find("#tableWidgetTableDataset > thead > tr").html("");
+ tableWidgetDiv.find("#tableWidgetTableDataset > tbody").html("");
+ }
+
+ // If the choosen dataset representation is pivotUI
+ if (FHC_TableWidget._datasetRepresentation == DATASET_REP_PIVOTUI)
+ {
+ tableWidgetDiv.find("#tableWidgetPivotUI").html("");
+ }
+
+ // If the choosen dataset representation is tabulator
+ if (FHC_TableWidget._datasetRepresentation == DATASET_REP_TABULATOR)
+ {
+ tableWidgetDiv.find("#tableWidgetTabulator").html("");
+ }
+ },
+
+ /**
+ * To get via Ajax all the data related to the TableWidget present in the given page
+ * If the parameter renderFunction is a valid function, is called on success
+ */
+ _getTables: function(renderFunction) {
+
+ var tableWidgetUniqueIdArray = FHC_TableWidget._getTableWidgetUniqueIdArray();
+
+ for (var tableWidgetsCounter = 0; tableWidgetsCounter < tableWidgetUniqueIdArray.length; tableWidgetsCounter++)
+ {
+ FHC_AjaxClient.ajaxCallGet(
+ "widgets/Tables/getTable",
+ {
+ tableUniqueId: FHC_TableWidget._getTableUniqueIdPrefix() + "/" + tableWidgetUniqueIdArray[tableWidgetsCounter]
+ },
+ {
+ successCallback: function(data, textStatus, jqXHR) {
+
+ if (FHC_AjaxClient.hasData(data))
+ {
+ if (typeof renderFunction == "function")
+ {
+ renderFunction(FHC_AjaxClient.getData(data));
+ }
+ }
+ else
+ {
+ console.log(FHC_AjaxClient.getError(data));
+ }
+ }
+ }
+ );
+ }
+ },
+
+ /**
+ * This method calls all the other methods needed to rendere the GUI for a TableWidget
+ * The parameter data contains all the data about the TableWidget 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
+ */
+ _renderTableWidget: function(data) {
+
+ FHC_TableWidget._setDatasetRepresentation(data); // set what type of dataset representation was choosen
+
+ var tableWidgetDiv = $('div[tableUniqueId="' + data.tableUniqueId + '"]');
+
+ FHC_TableWidget._turnOffEvents(tableWidgetDiv); // turns all the events off
+
+ FHC_TableWidget._resetGUI(tableWidgetDiv); // Reset the entire GUI
+
+ FHC_TableWidget._renderDataset(tableWidgetDiv, data);
+
+ FHC_TableWidget._turnOnEvents(tableWidgetDiv); // turns all the events off
+ },
+
+ /**
+ * Turns all the events off
+ * NOTE: must be aligned to _turnOnEvents
+ */
+ _turnOffEvents: function(tableWidgetDiv) {
+
+ // If the choosen dataset representation is tablesorter
+ if (FHC_TableWidget._datasetRepresentation == DATASET_REP_TABLESORTER)
+ {
+ FHC_TableWidget._disableTablesorter(tableWidgetDiv); // disable the tablesorter
+ }
+ },
+
+ /**
+ * Turns all the events on
+ * NOTE: must be aligned to _turnOffEvents
+ */
+ _turnOnEvents: function(tableWidgetDiv) {
+
+ // If the choosen dataset representation is tablesorter
+ if (FHC_TableWidget._datasetRepresentation == DATASET_REP_TABLESORTER)
+ {
+ FHC_TableWidget._enableTableSorter(tableWidgetDiv); // enable the tablesorter
+ }
+ },
+
+ _renderDataset: function(tableWidgetDiv, data) {
+
+ // If the choosen dataset representation is tablesorter then...
+ if (FHC_TableWidget._datasetRepresentation == DATASET_REP_TABLESORTER)
+ {
+ FHC_TableWidget._renderDatasetTablesorter(tableWidgetDiv, data); // ...render the tablesorter GUI
+ }
+
+ // If the choosen dataset representation is pivotUI then...
+ if (FHC_TableWidget._datasetRepresentation == DATASET_REP_PIVOTUI)
+ {
+ FHC_TableWidget._renderDatasetPivotUI(tableWidgetDiv, data); // ...render the pivotUI GUI
+ }
+
+ // If the choosen dataset representation is tabulator then...
+ if (FHC_TableWidget._datasetRepresentation == DATASET_REP_TABULATOR)
+ {
+ FHC_TableWidget._renderDatasetTabulator(tableWidgetDiv, data); // ...render the tabulator GUI
+ }
+ },
+
+ /**
+ * Renders the tablesorter for the TableWidget
+ * The data to be displayed are retrived from the parameter data
+ */
+ _renderDatasetTablesorter: function(tableWidgetDiv, data) {
+
+ if (data.hasOwnProperty("checkboxes") && data.checkboxes != null && data.checkboxes.trim() != "")
+ {
+ tableWidgetDiv.find("#tableWidgetTableDataset > thead > tr").append("
Select
");
+ }
+
+ var arrayFieldsToDisplay = FHC_TableWidget._getFieldsToDisplay(data);
+
+ for (var i = 0; i < arrayFieldsToDisplay.length; i++)
+ {
+ var columnName = arrayFieldsToDisplay[i];
+
+ tableWidgetDiv.find("#tableWidgetTableDataset > 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];
+
+ tableWidgetDiv.find("#tableWidgetTableDataset > thead > tr").append("
" + columnName + "
");
+ }
+ }
+
+ if (arrayFieldsToDisplay.length > 0)
+ {
+ if (data.hasOwnProperty("dataset") && $.isArray(data.dataset))
+ {
+ if (data.checkboxes != null && data.checkboxes != "")
+ {
+ // select checkbox range with shift key
+ if (typeof tableWidgetDiv.find("#tableWidgetTableDataset").checkboxes === 'function')
+ tableWidgetDiv.find("#tableWidgetTableDataset").checkboxes("range", true);
+ }
+
+ for (var i = 0; i < data.dataset.length; i++)
+ {
+ var record = data.dataset[i];
+
+ if ($.isEmptyObject(record))
+ {
+ continue;
+ }
+
+ var strHtml = "