mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-10-12 15:04:04 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1a5abba4f1 |
@@ -3,4 +3,3 @@
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
$config['infocenter_studiengang_kz'] = '10021, 10027, 10002';
|
||||
$config['infocenter_qualifikationskurs_kz'] = '10002';
|
||||
|
||||
@@ -170,6 +170,13 @@ $config['navigation_header'] = array(
|
||||
'expand' => true,
|
||||
'sort' => 51,
|
||||
'requiredPermissions' => 'vertrag/mitarbeiter:r'
|
||||
),
|
||||
'studierendenverwaltung' => array(
|
||||
'link' => site_url('studentenverwaltung'),
|
||||
'description' => 'Studierendenverwaltung',
|
||||
'expand' => true,
|
||||
'sort' => 52,
|
||||
'requiredPermissions' => ['admin:r', 'assistenz:r']
|
||||
)
|
||||
)
|
||||
),
|
||||
@@ -378,21 +385,8 @@ $config['navigation_menu']['apps'] = [
|
||||
],
|
||||
'lav' => [
|
||||
'link' => site_url('lehre/lehrauftrag/Lehrauftrag/Dashboard'),
|
||||
'description' => 'Lehraufträge',
|
||||
'description' => 'Lehrauftragsverwaltung',
|
||||
#'icon' => 'person-chalkboard',
|
||||
'requiredPermissions' => array('lehre/lehrauftrag_bestellen:r', 'lehre/lehrauftrag_erteilen:r')
|
||||
]
|
||||
];
|
||||
|
||||
$config['navigation_menu']['dashboard/*'] = [
|
||||
'dashboards' => [
|
||||
'link' => site_url('dashboard/Admin'),
|
||||
'description' => 'Dashboard',
|
||||
'requiredPermissions' => 'dashboard/admin:rw'
|
||||
],
|
||||
'widgets' => [
|
||||
'link' => site_url('dashboard/Admin/widgets'),
|
||||
'description' => 'Widgets',
|
||||
'requiredPermissions' => 'dashboard/admin:rw'
|
||||
]
|
||||
];
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
<?php
|
||||
|
||||
if (!defined('BASEPATH'))
|
||||
exit('No direct script access allowed');
|
||||
|
||||
class Compat extends Auth_Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'ci' => ['basis/cis:r'],
|
||||
'legacy' => ['basis/cis:r'],
|
||||
|
||||
]);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
|
||||
/**
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function ci()
|
||||
{
|
||||
$this->load->view('CisRouterView/CisRouterView.php',['route' => 'Compat']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function legacy()
|
||||
{
|
||||
$this->load->view('CisRouterView/CisRouterView.php',['route' => 'Compat']);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -67,11 +67,8 @@ class CisMenu extends FHCAPI_Controller
|
||||
|
||||
private function generateUrlForMenuItem($menuItem)
|
||||
{
|
||||
if(!isset($menuItem->url))
|
||||
{
|
||||
$menuItem->url = $this->menuItemUrlHelper($menuItem);
|
||||
unset($menuItem->content);
|
||||
}
|
||||
$menuItem->url = $this->menuItemUrlHelper($menuItem);
|
||||
unset($menuItem->content);
|
||||
|
||||
if ($menuItem->childs && count($menuItem->childs)) {
|
||||
$menuItem->childs = $this->generateUrlsForMenuItems($menuItem->childs);
|
||||
@@ -86,7 +83,7 @@ class CisMenu extends FHCAPI_Controller
|
||||
return site_url("/CisVue/Cms/content/" . $menuItem->content_id);
|
||||
}
|
||||
|
||||
if (!isset($menuItem->content) || !$menuItem->content || !mb_strlen($menuItem->content)) {
|
||||
if (!$menuItem->content || !mb_strlen($menuItem->content)) {
|
||||
return '';
|
||||
}
|
||||
|
||||
@@ -94,8 +91,6 @@ class CisMenu extends FHCAPI_Controller
|
||||
$doc->loadXML($menuItem->content);
|
||||
$urlElem = $doc->getElementsByTagName('url')->item(0);
|
||||
|
||||
$this->menuItemUrlTargetHelper($menuItem, $doc);
|
||||
|
||||
if (!$urlElem) {
|
||||
return '';
|
||||
}
|
||||
@@ -127,18 +122,5 @@ class CisMenu extends FHCAPI_Controller
|
||||
return $url;
|
||||
}
|
||||
|
||||
private function menuItemUrlTargetHelper($menuItem, $xmldoc)
|
||||
{
|
||||
if($menuItem->template_kurzbz === 'redirect')
|
||||
{
|
||||
$targetElem = $xmldoc->getElementsByTagName('target')->item(0);
|
||||
$target = ($targetElem) ? $targetElem->textContent : '';
|
||||
if(!in_array($target, array('_self', '_top', '_blank')))
|
||||
{
|
||||
$target = '_self';
|
||||
}
|
||||
$menuItem->target = $target;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ class Lehrveranstaltung extends FHCAPI_Controller
|
||||
{
|
||||
$studiengang_kz = $this->getStudiengangKz($stg_kz);
|
||||
|
||||
if (is_null($studiengang_kz) || !preg_match("/^(-?[1-9][0-9]*|0)$/", (string)$studiengang_kz))
|
||||
if (is_null($studiengang_kz) || !preg_match("/^-?[1-9][0-9]*$/", (string)$studiengang_kz))
|
||||
$this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
$verband = null;
|
||||
|
||||
@@ -1,258 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (C) 2026 fhcomplete.org
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
use \DateTime as DateTime;
|
||||
|
||||
class Report extends FHCAPI_Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* Object initialization
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'list' => [ 'dashboard/admin:rw', 'basis/statistik:rw' ],
|
||||
'vars' => self::PERM_LOGGED, // additional permission check inside
|
||||
'get' => self::PERM_LOGGED, // additional permission check inside
|
||||
]);
|
||||
|
||||
$this->load->model('organisation/Statistik_model', 'StatistikModel');
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* @access public
|
||||
*/
|
||||
public function list()
|
||||
{
|
||||
$this->StatistikModel->addSelect('statistik_kurzbz');
|
||||
$this->StatistikModel->addSelect('bezeichnung');
|
||||
$this->StatistikModel->addSelect('gruppe');
|
||||
|
||||
$result = $this->StatistikModel->loadWhere([
|
||||
'sql IS NOT NULL' => null
|
||||
]);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @access public
|
||||
*/
|
||||
public function vars($statistik_kurzbz)
|
||||
{
|
||||
$result = $this->StatistikModel->load($statistik_kurzbz);
|
||||
$statistik = $this->getDataOrTerminateWithError($result);
|
||||
if (!$statistik)
|
||||
show_404();
|
||||
$statistik = current($statistik);
|
||||
|
||||
// NOTE(chris): Permission check
|
||||
$permissions = [ 'vars' => $statistik->berechtigung_kurzbz . ':r' ];
|
||||
if (!$this->permissionlib->isEntitled($permissions, 'vars')) {
|
||||
$this->_outputAuthError($permissions);
|
||||
exit; // immediately terminate the execution
|
||||
}
|
||||
|
||||
$this->addMeta('berechtigung_kurzbz', $statistik->berechtigung_kurzbz);
|
||||
|
||||
$vars = $this->loadVars($statistik->sql);
|
||||
|
||||
$this->terminateWithSuccess($vars);
|
||||
}
|
||||
|
||||
/**
|
||||
* @access protected
|
||||
*/
|
||||
protected function loadVars($sql)
|
||||
{
|
||||
$result = [];
|
||||
preg_match_all('/\$\w+/', $sql ?: '', $result);
|
||||
$result = $result[0];
|
||||
|
||||
$vars = array_unique($result); // remove doubles
|
||||
|
||||
$this->load->model('system/Filter_model', 'FilterModel');
|
||||
$vars = array_map([$this, 'varToFilter'], $vars); // prep them
|
||||
|
||||
$vars = array_filter($vars); // remove null values (former: $user)
|
||||
|
||||
return array_values($vars); // reindex
|
||||
}
|
||||
|
||||
/**
|
||||
* @access protected
|
||||
*/
|
||||
protected function varToFilter($value)
|
||||
{
|
||||
if ($value == '$user')
|
||||
return null;
|
||||
|
||||
$value = str_replace('$', '', $value);
|
||||
|
||||
$result = $this->FilterModel->loadWhere([
|
||||
'kurzbz' => $value
|
||||
]);
|
||||
$filter = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$result = [];
|
||||
if (!$filter) {
|
||||
$result = [
|
||||
'kurzbz' => $value,
|
||||
'title' => $value,
|
||||
'type' => 'text',
|
||||
];
|
||||
} else {
|
||||
$filter = current($filter);
|
||||
$result = [
|
||||
'kurzbz' => $filter->kurzbz,
|
||||
'title' => $filter->bezeichnung ?: $filter->kurzbz,
|
||||
'type' => $filter->type,
|
||||
];
|
||||
switch ($filter->type) {
|
||||
case 'select':
|
||||
$sql = str_replace('$user', $this->FilterModel->escape(getAuthUID()), $filter->sql);
|
||||
$query = $this->FilterModel->execReadOnlyQuery($sql);
|
||||
$options = $this->getDataOrTerminateWithError($query);
|
||||
$showValue = $filter->showvalue;
|
||||
$result['options'] = array_map(function ($option) use ($showValue) {
|
||||
$label = '';
|
||||
if ($showValue)
|
||||
$label = '(' + $option->value + ') - ';
|
||||
if (property_exists($option, 'name'))
|
||||
$label .= $option->name;
|
||||
else
|
||||
$label .= ((array)$option)[array_find(array_keys((array)$option), function ($key) {
|
||||
return $key != 'value';
|
||||
})];
|
||||
return [
|
||||
'value' => $option->value,
|
||||
'label' => $label,
|
||||
];
|
||||
}, $options);
|
||||
|
||||
if (preg_match('/(^|\s)multiple($|\s)/', $filter->htmlattr ?: '')) {
|
||||
$result['multiple'] = true;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
if (preg_match('/(^|\s)placeholder="([^"]*)"($|\s)/', $filter->htmlattr ?: '', $matches)) {
|
||||
$result['placeholder'] = $matches[2];
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @access public
|
||||
*/
|
||||
public function get($statistik_kurzbz)
|
||||
{
|
||||
$result = $this->StatistikModel->load($statistik_kurzbz);
|
||||
$statistik = $this->getDataOrTerminateWithError($result);
|
||||
if (!$statistik)
|
||||
show_404();
|
||||
$statistik = current($statistik);
|
||||
|
||||
// NOTE(chris): Permission check
|
||||
$permissions = [ 'get' => $statistik->berechtigung_kurzbz . ':r' ];
|
||||
if (!$this->permissionlib->isEntitled($permissions, 'get')) {
|
||||
$this->_outputAuthError($permissions);
|
||||
exit; // immediately terminate the execution
|
||||
}
|
||||
|
||||
$vars = $this->loadVars($statistik->sql);
|
||||
$vars_values = [];
|
||||
|
||||
if (count($vars)) {
|
||||
$this->load->library('form_validation');
|
||||
foreach ($vars as $var) {
|
||||
$key = $var['kurzbz'];
|
||||
$label = $var['title'];
|
||||
$checks = 'required';
|
||||
|
||||
if (isset($var['multiple']) && $var['multiple']) {
|
||||
$key .= '[]';
|
||||
}
|
||||
|
||||
if ($var['type'] == 'select') {
|
||||
$options = array_map(function ($opt) {
|
||||
return $opt['value'];
|
||||
}, $var['options']);
|
||||
$checks .= '|strval|in_list[' . implode(',', $options) . ']';
|
||||
}
|
||||
|
||||
if ($var['type'] == 'datepicker')
|
||||
$checks .= '|is_valid_date';
|
||||
|
||||
$this->form_validation->set_rules($key, $label, $checks);
|
||||
|
||||
$vars_values[$var['kurzbz']] = $this->input->post($var['kurzbz']);
|
||||
|
||||
if ($var['type'] == 'datepicker') {
|
||||
try {
|
||||
$dt = new DateTime($vars_values[$var['kurzbz']]);
|
||||
$vars_values[$var['kurzbz']] = $dt->format('c');
|
||||
} catch(Exception $e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$this->form_validation->run())
|
||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||
}
|
||||
|
||||
$db = $this->StatistikModel;
|
||||
$sql = preg_replace_callback('/\$\w+/', function ($match) use ($db, $vars_values) {
|
||||
if ($match[0] == '$user')
|
||||
return $db->escape(getAuthUID());
|
||||
|
||||
$key = substr($match[0], 1);
|
||||
if (isset($vars_values[$key])) {
|
||||
$value = $vars_values[$key];
|
||||
if (is_array($value)) {
|
||||
$value = implode(', ', array_map(function ($v) use ($db) {
|
||||
return $db->escape($v);
|
||||
}, $value));
|
||||
} else {
|
||||
$value = $db->escape($value);
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
return $match[0];
|
||||
}, $statistik->sql);
|
||||
|
||||
$result = $this->StatistikModel->execReadOnlyQuery($sql);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
}
|
||||
@@ -167,9 +167,7 @@ class Studium extends FHCAPI_Controller
|
||||
if($aktuelles_studienplan){
|
||||
$lehrveranstaltungen = $this->computeStudienplanLehrveranstaltungen($aktuelles_studienplan->studienplan_id, $aktuelles_semester);
|
||||
foreach($lehrveranstaltungen as $lehrv){
|
||||
// a lehrveranstaltung without a modul has no children and gets its lektoren directly
|
||||
$lvs = isset($lehrv->lehrveranstaltungen) ? $lehrv->lehrveranstaltungen : [$lehrv];
|
||||
foreach($lvs as $lv){
|
||||
foreach($lehrv->lehrveranstaltungen as $lv){
|
||||
$lvLektoren =$this->computeLektorenFromLehrveranstaltung($lv->lehrveranstaltung_id,$aktuelles_semester, $aktuelles_studiengang->studiengang_kz, $aktuelles_studiensemester->studiensemester_kurzbz);
|
||||
$lv->lektoren = $lvLektoren;
|
||||
}
|
||||
@@ -288,7 +286,6 @@ SELECT tbl_lehrveranstaltung.*,
|
||||
$lehrveranstaltungen = $this->LehrveranstaltungModel->execReadOnlyQuery($query,[$studienplan_id, $semester]);
|
||||
|
||||
$lehrveranstaltungen = $this->getDataOrTerminateWithError($lehrveranstaltungen);
|
||||
|
||||
usort($lehrveranstaltungen, function($a, $b){
|
||||
if($a->lehrtyp_kurzbz == "modul"){
|
||||
return -1;
|
||||
@@ -305,17 +302,12 @@ SELECT tbl_lehrveranstaltung.*,
|
||||
}
|
||||
else{
|
||||
$parent =array_filter($carry, function($item)use($lehrv){
|
||||
return isset($item->lehrveranstaltungen)
|
||||
&& $item->studienplan_lehrveranstaltung_id == $lehrv->studienplan_lehrveranstaltung_id_parent;
|
||||
return $item->studienplan_lehrveranstaltung_id == $lehrv->studienplan_lehrveranstaltung_id_parent;
|
||||
});
|
||||
$parent = current($parent);
|
||||
if($parent){
|
||||
$parent->lehrveranstaltungen[] = $lehrv;
|
||||
}
|
||||
else{
|
||||
// lehrveranstaltung without a modul: keep it on the top level
|
||||
array_push($carry, $lehrv);
|
||||
}
|
||||
}
|
||||
return $carry;
|
||||
}, []);
|
||||
|
||||
@@ -18,8 +18,6 @@
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
use \DirectoryIterator as DirectoryIterator;
|
||||
|
||||
/**
|
||||
* This controller operates between (interface) the JS (GUI) and the back-end
|
||||
* Provides data to the ajax get calls about the users dashboard
|
||||
@@ -33,13 +31,7 @@ class Widget extends FHCAPI_Controller
|
||||
'get' => ['dashboard/benutzer:r', 'dashboard/admin:r'],
|
||||
'list' => 'dashboard/admin:r',
|
||||
'listAllowed' => ['dashboard/benutzer:rw', 'dashboard/admin:r'],
|
||||
'listAll' => 'dashboard/admin:r',
|
||||
'listAllOriginal' => 'dashboard/admin:rw',
|
||||
'setAllowed' => 'dashboard/admin:rw',
|
||||
'create' => 'dashboard/admin:rw',
|
||||
'update' => 'dashboard/admin:rw',
|
||||
'remove' => 'dashboard/admin:rw',
|
||||
'generators' => 'dashboard/admin:rw',
|
||||
'setAllowed' => 'dashboard/admin:rw'
|
||||
]);
|
||||
|
||||
// Libraries
|
||||
@@ -109,41 +101,6 @@ class Widget extends FHCAPI_Controller
|
||||
$tmpsetup = json_decode($widget->setup);
|
||||
$tmpsetup->file = absoluteJsImportUrl($tmpsetup->file);
|
||||
$widget->setup = $tmpsetup;
|
||||
$widget->permitted = empty($widget->berechtigung_kurzbz)
|
||||
|| $this->permissionlib->isBerechtigt($widget->berechtigung_kurzbz);
|
||||
|
||||
return $widget;
|
||||
}, $widgets);
|
||||
|
||||
$this->terminateWithSuccess($widgets);
|
||||
}
|
||||
|
||||
public function listAll()
|
||||
{
|
||||
$result = $this->WidgetModel->load();
|
||||
|
||||
$widgets = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$widgets = array_map(function ($widget) {
|
||||
$widget->arguments = json_decode($widget->arguments);
|
||||
$tmpsetup = json_decode($widget->setup);
|
||||
$tmpsetup->file = absoluteJsImportUrl($tmpsetup->file);
|
||||
$widget->setup = $tmpsetup;
|
||||
return $widget;
|
||||
}, $widgets);
|
||||
|
||||
$this->terminateWithSuccess($widgets);
|
||||
}
|
||||
|
||||
public function listAllOriginal()
|
||||
{
|
||||
$result = $this->WidgetModel->load();
|
||||
|
||||
$widgets = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$widgets = array_map(function ($widget) {
|
||||
$widget->arguments = json_decode($widget->arguments);
|
||||
$widget->setup = json_decode($widget->setup);
|
||||
return $widget;
|
||||
}, $widgets);
|
||||
|
||||
@@ -177,185 +134,4 @@ class Widget extends FHCAPI_Controller
|
||||
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$this->loadPhrases([ 'ui', 'dashboard' ]);
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$this->form_validation->set_rules(
|
||||
'widget_kurzbz',
|
||||
$this->p->t('dashboard', 'widget_kurzbz'),
|
||||
'required|is_not_in_db[dashboard/Widget_model:widget_kurzbz]',
|
||||
[
|
||||
'is_not_in_db' => $this->p->t('ui', 'error_entryExisting')
|
||||
]
|
||||
);
|
||||
$this->form_validation->set_rules(
|
||||
'setup[generator]',
|
||||
$this->p->t('dashboard', 'generator'),
|
||||
'required'
|
||||
);
|
||||
|
||||
if (!$this->form_validation->run())
|
||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||
|
||||
$setup = $this->input->post('setup');
|
||||
|
||||
$file = explode(':', $setup['generator']);
|
||||
if (count($file) == 1) {
|
||||
$setup['file'] = 'public/js/components/DashboardWidget/' . $file[0] . '.js';
|
||||
} else {
|
||||
$setup['file'] = 'public/extensions/' . $file[0] . '/js/components/DashboardWidget/' . $file[1] . '.js';
|
||||
}
|
||||
|
||||
$data = [
|
||||
'widget_kurzbz' => $this->input->post('widget_kurzbz'),
|
||||
'setup' => json_encode($setup),
|
||||
'arguments' => json_encode([]),
|
||||
];
|
||||
$result = $this->WidgetModel->insert($data);
|
||||
|
||||
$data['widget_id'] = $this->getDataOrTerminateWithError($result);
|
||||
$data['setup'] = $setup;
|
||||
$data['arguments'] = [];
|
||||
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
public function update()
|
||||
{
|
||||
$this->loadPhrases([ 'dashboard' ]);
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$this->form_validation->set_rules(
|
||||
'widget_id',
|
||||
$this->p->t('dashboard', 'widget_id'),
|
||||
'required'
|
||||
);
|
||||
|
||||
if (!$this->form_validation->run())
|
||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||
|
||||
$widget_id = $this->input->post('widget_id');
|
||||
$data = [];
|
||||
foreach ([
|
||||
'widget_kurzbz',
|
||||
'beschreibung',
|
||||
'setup',
|
||||
'arguments',
|
||||
'berechtigung_kurzbz',
|
||||
] as $post) {
|
||||
$value = $this->input->post($post);
|
||||
if ($value) {
|
||||
if ($post == 'setup' || $post == 'arguments')
|
||||
$value = json_encode($value);
|
||||
$data[$post] = $value;
|
||||
}
|
||||
}
|
||||
if (!$data)
|
||||
$this->terminateWithSuccess();
|
||||
|
||||
$result = $this->WidgetModel->update($widget_id, $data);
|
||||
|
||||
$this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->terminateWithSuccess();
|
||||
}
|
||||
|
||||
public function remove()
|
||||
{
|
||||
$this->loadPhrases([ 'dashboard' ]);
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$this->form_validation->set_rules(
|
||||
'widget_id',
|
||||
$this->p->t('dashboard', 'widget_id'),
|
||||
'required'
|
||||
);
|
||||
|
||||
if (!$this->form_validation->run())
|
||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||
|
||||
$widget_id = $this->input->post('widget_id');
|
||||
|
||||
$result = $this->WidgetModel->load($widget_id);
|
||||
$widget = $this->getDataOrTerminateWithError($result);
|
||||
$widget = current($widget);
|
||||
if (!$widget)
|
||||
show_404();
|
||||
|
||||
$setup = json_decode($widget->setup);
|
||||
|
||||
if (!property_exists($setup, 'generator'))
|
||||
$this->terminateWithError($this->p->t('dashboard', 'widget_error_delete_native'), null, REST_Controller::HTTP_METHOD_NOT_ALLOWED);
|
||||
|
||||
$result = $this->WidgetModel->delete($widget_id);
|
||||
|
||||
$this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->terminateWithSuccess();
|
||||
}
|
||||
|
||||
public function generators()
|
||||
{
|
||||
$result = $this->getGeneratorsRecursive();
|
||||
|
||||
$this->load->library('ExtensionsLib');
|
||||
$extensions = $this->extensionslib->getInstalledExtensions();
|
||||
if (hasData($extensions)) {
|
||||
foreach (getData($extensions) as $extension) {
|
||||
$result = array_merge($result, $this->getGeneratorsRecursive($extension->name));
|
||||
}
|
||||
}
|
||||
|
||||
return $this->terminateWithSuccess($result);
|
||||
}
|
||||
|
||||
protected function getGeneratorsRecursive($extension = '', $path = '')
|
||||
{
|
||||
$result = [];
|
||||
|
||||
$dashboard_widget_path = 'public/js/components/DashboardWidget/';
|
||||
|
||||
$name = '';
|
||||
$file_path = $dashboard_widget_path . $path;
|
||||
$generator_path = $dashboard_widget_path . 'Generators/' . $path;
|
||||
|
||||
if ($extension) {
|
||||
$name = $extension . ':';
|
||||
$file_path = APPPATH . 'extensions/' . $extension . '/' . $file_path;
|
||||
$generator_path = APPPATH . 'extensions/' . $extension . '/' . $generator_path;
|
||||
} else {
|
||||
$file_path = FHCPATH . $file_path;
|
||||
$generator_path = FHCPATH . $generator_path;
|
||||
}
|
||||
|
||||
$name .= $path;
|
||||
|
||||
$generator_path = str_replace('/', DIRECTORY_SEPARATOR, $generator_path);
|
||||
|
||||
if (is_dir($generator_path)) {
|
||||
$dir = new DirectoryIterator($generator_path);
|
||||
|
||||
foreach ($dir as $file) {
|
||||
if ($file->isDot())
|
||||
continue;
|
||||
$filename = $file->getFilename();
|
||||
if ($file->isDir()) {
|
||||
if (is_dir(str_replace('/', DIRECTORY_SEPARATOR, $file_path . $filename))) {
|
||||
$res = $this->getGeneratorsRecursive($extension, $path . $filename . '/');
|
||||
$result = array_merge($result, $res);
|
||||
}
|
||||
} else {
|
||||
if (file_exists(str_replace('/', DIRECTORY_SEPARATOR, $file_path . $filename))) {
|
||||
if ($file->getExtension() == 'js')
|
||||
$result[] = $name . $file->getBasename('.js');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,8 +23,7 @@ class StudiengangEP extends FHCAPI_Controller
|
||||
{
|
||||
parent::__construct(
|
||||
array(
|
||||
'getStudiengangByKz' => self::PERM_LOGGED,
|
||||
'getAllowed' => self::PERM_LOGGED,
|
||||
'getStudiengangByKz' => self::PERM_LOGGED
|
||||
)
|
||||
);
|
||||
// Load model StudiengangModel
|
||||
@@ -55,29 +54,4 @@ class StudiengangEP extends FHCAPI_Controller
|
||||
}
|
||||
$this->terminateWithSuccess($stg);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all STGs they user has the given permissions for.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function getAllowed()
|
||||
{
|
||||
$this->loadPhrases([ 'global' ]);
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$this->form_validation->set_rules('permissions[]', $this->p->t('global', 'permissions'), 'required');
|
||||
|
||||
if (!$this->form_validation->run())
|
||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||
|
||||
$permissions = $this->input->post('permissions');
|
||||
|
||||
$permittedStgs = [];
|
||||
|
||||
foreach ($permissions as $permission)
|
||||
$permittedStgs = array_merge($permittedStgs, $this->permissionlib->getSTG_isEntitledFor($permission) ?: []);
|
||||
|
||||
$this->terminateWithSuccess($permittedStgs);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,8 +24,7 @@ class Studienjahr extends FHCAPI_Controller
|
||||
parent::__construct(
|
||||
array(
|
||||
'getAll' => self::PERM_LOGGED,
|
||||
'getNext' => self::PERM_LOGGED,
|
||||
'getAktNext' => self::PERM_LOGGED
|
||||
'getNext' => self::PERM_LOGGED
|
||||
)
|
||||
);
|
||||
// Load model StudiensemesterModel
|
||||
@@ -78,32 +77,4 @@ class Studienjahr extends FHCAPI_Controller
|
||||
|
||||
$this->terminateWithSuccess(current(getData($result)));
|
||||
}
|
||||
|
||||
public function getAktNext()
|
||||
{
|
||||
$this->StudienjahrModel->addJoin('public.tbl_studiensemester', 'studienjahr_kurzbz');
|
||||
$this->StudienjahrModel->addOrder('ende');
|
||||
$this->StudienjahrModel->addLimit(1);
|
||||
|
||||
$result = $this->StudienjahrModel->loadWhere([
|
||||
'start <=' => 'NOW()',
|
||||
'ende >=' => 'NOW()'
|
||||
]);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
if (!$data) {
|
||||
$this->StudienjahrModel->addJoin('public.tbl_studiensemester', 'studienjahr_kurzbz');
|
||||
$this->StudienjahrModel->addOrder('ende');
|
||||
$this->StudienjahrModel->addLimit(1);
|
||||
|
||||
$result = $this->StudienjahrModel->loadWhere([
|
||||
'ende >=' => 'NOW()'
|
||||
]);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
}
|
||||
|
||||
$this->terminateWithSuccess(current($data));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,8 @@ class LvTermine extends FHCAPI_Controller
|
||||
$semester_range,
|
||||
$benutzer_gruppen,
|
||||
$student_lehrverband,
|
||||
true,
|
||||
$dbStundenplanTable
|
||||
$dbStundenplanTable,
|
||||
true
|
||||
);
|
||||
|
||||
if(!$stundenplan_query)
|
||||
@@ -370,7 +370,6 @@ class LvTermine extends FHCAPI_Controller
|
||||
$result->semester = $item->semester;
|
||||
$result->verband = $item->verband;
|
||||
$result->gruppe = $item->gruppe;
|
||||
$result->studiensemester_kurzbz = $item->studiensemester_kurzbz;
|
||||
return $result;
|
||||
},
|
||||
$lehrverband_query_result));
|
||||
|
||||
@@ -42,8 +42,6 @@ class Projektarbeit extends FHCAPI_Controller
|
||||
$this->load->model('education/Note_model', 'NoteModel');
|
||||
$this->load->model('education/Projektbetreuer_model', 'BetreuerModel');
|
||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
$this->load->model('crm/Student_model', 'StudentModel');
|
||||
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
|
||||
|
||||
// load libraries
|
||||
$this->load->library('PermissionLib');
|
||||
@@ -102,16 +100,16 @@ class Projektarbeit extends FHCAPI_Controller
|
||||
private function fetchProjektarbeitById($projektarbeit_id) {
|
||||
$this->ProjektarbeitModel->resetQuery();
|
||||
$this->ProjektarbeitModel->addSelect(
|
||||
'lehre.tbl_projektarbeit.projektarbeit_id, titel, titel_english, themenbereich, projekttyp_kurzbz, lehrveranstaltung_id, lehreinheit_id,
|
||||
tbl_projektarbeit.studiensemester_kurzbz, firma_id, beginn, ende, gesperrtbis, note, final, freigegeben, tbl_projektarbeit.anmerkung, fa.name AS firma_name'
|
||||
'lehre.tbl_projektarbeit.projektarbeit_id, titel, titel_english, themenbereich, projekttyp_kurzbz, lehrveranstaltung_id, lehreinheit_id,
|
||||
firma_id, beginn, ende, gesperrtbis, note, final, freigegeben, tbl_projektarbeit.anmerkung, fa.name AS firma_name'
|
||||
);
|
||||
$this->ProjektarbeitModel->addJoin('lehre.tbl_lehreinheit le', 'lehreinheit_id');
|
||||
$this->ProjektarbeitModel->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id');
|
||||
$this->ProjektarbeitModel->addJoin('public.tbl_firma fa', 'firma_id', 'LEFT');
|
||||
|
||||
|
||||
return $this->ProjektarbeitModel->loadWhere(
|
||||
array('projektarbeit_id' => $projektarbeit_id)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -248,38 +246,14 @@ class Projektarbeit extends FHCAPI_Controller
|
||||
$additional_lehrveranstaltung_id = $this->input->get('additional_lehrveranstaltung_id');
|
||||
|
||||
if (!isset($student_uid)) $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Student UID']), self::ERROR_TYPE_GENERAL);
|
||||
if (!isset($studiensemester_kurzbz)) $this->terminateWithError('Studiensemester missing', self::ERROR_TYPE_GENERAL);
|
||||
if (!isset($studiensemester_kurzbz)) $this->terminateWithError('Studiensemster missing', self::ERROR_TYPE_GENERAL);
|
||||
|
||||
// get prestudent_id from student model
|
||||
$studentRes = $this->StudentModel->load(['student_uid' => $student_uid]);
|
||||
if(hasData($studentRes)) {
|
||||
$student = getData($studentRes);
|
||||
} else {
|
||||
$this->terminateWithError($studentRes, self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
|
||||
// to get prestudent_status history
|
||||
$historyRes = $this->PrestudentstatusModel->getHistoryPrestudent($student[0]->prestudent_id);
|
||||
if(hasData($historyRes)) {
|
||||
$history = getData($historyRes);
|
||||
} else {
|
||||
$this->terminateWithError($historyRes, self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
|
||||
// query for every lva of a studiengang that has projektarbeit flag true
|
||||
// get Lvs
|
||||
$lvsResult = $this->LehrveranstaltungModel->getLvsForProjektarbeit($student_uid, $studiengang_kz, $additional_lehrveranstaltung_id);
|
||||
|
||||
if (isError($lvsResult)) return $this->terminateWithError($lvsResult, self::ERROR_TYPE_GENERAL);
|
||||
|
||||
$lvs = hasData($lvsResult) ? getData($lvsResult) : [];
|
||||
|
||||
$lvsIDs = array_column($lvs, 'lehrveranstaltung_id');
|
||||
|
||||
// get current studienplan_id from status history to find out which lva options are actually assigned to the students studienplan
|
||||
// important so the projektarbeit has the correct lva assigned to be able to find and print the thesis title on the degree documents!
|
||||
$currentStatus = $history[0];
|
||||
$lvByStudienPlanRes = $this->LehrveranstaltungModel->getLvsByStudienplanByLvaIDs($currentStatus->studienplan_id, $lvsIDs);
|
||||
if(hasData($lvByStudienPlanRes)) {
|
||||
$lvs = getData($lvByStudienPlanRes);
|
||||
}
|
||||
|
||||
foreach ($lvs as $lv)
|
||||
{
|
||||
@@ -346,18 +320,11 @@ class Projektarbeit extends FHCAPI_Controller
|
||||
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Projekttyp'])
|
||||
]);
|
||||
|
||||
$this->form_validation->set_rules('lehreinheit_id', 'Lehreinheit', 'is_natural', [
|
||||
$this->form_validation->set_rules('lehreinheit_id', 'Lehreinheit', 'required|is_natural', [
|
||||
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Lehreinheit']),
|
||||
'is_natural' => $this->p->t('ui', 'error_fieldNotNumeric', ['field' => 'Lehreinheit'])
|
||||
]);
|
||||
|
||||
$this->form_validation->set_rules('lehrveranstaltung_id', 'Lehrveranstaltung', 'required', [
|
||||
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Lehrveranstaltung'])
|
||||
]);
|
||||
|
||||
$this->form_validation->set_rules('studiensemester_kurzbz', 'Studiensemester', 'required', [
|
||||
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Studiensemester'])
|
||||
]);
|
||||
|
||||
$this->form_validation->set_rules('beginn', 'Beginn', 'is_valid_date', [
|
||||
'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field' => 'Beginn'])
|
||||
]);
|
||||
@@ -387,8 +354,6 @@ class Projektarbeit extends FHCAPI_Controller
|
||||
'projekttyp_kurzbz' => $formData['projekttyp_kurzbz'],
|
||||
'firma_id' => $formData['firma_id'] ?? null,
|
||||
'lehreinheit_id' => $formData['lehreinheit_id'],
|
||||
'lehrveranstaltung_id' => $formData['lehrveranstaltung_id'],
|
||||
'studiensemester_kurzbz' => $formData['studiensemester_kurzbz'],
|
||||
'beginn' => isset($formData['beginn']) && !isEmptyString($formData['beginn']) ? $formData['beginn'] : null,
|
||||
'ende' => isset($formData['ende']) && !isEmptyString($formData['ende']) ? $formData['ende'] : null,
|
||||
'note' => $formData['note'] ?? null,
|
||||
|
||||
@@ -108,7 +108,6 @@ class Students extends FHCAPI_Controller
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz
|
||||
]);
|
||||
|
||||
$studiensemester_kurzbz = $this->getStudiensemesterKurzbz($studiensemester_kurzbz);
|
||||
|
||||
$this->studentlistlib->addJoin(
|
||||
"(
|
||||
@@ -154,8 +153,7 @@ class Students extends FHCAPI_Controller
|
||||
$this->addMeta('ci_params', [
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz
|
||||
]);
|
||||
|
||||
$studiensemester_kurzbz = $this->getStudiensemesterKurzbz($studiensemester_kurzbz);
|
||||
|
||||
|
||||
$this->studentlistlib->addJoin(
|
||||
"(
|
||||
@@ -215,7 +213,6 @@ class Students extends FHCAPI_Controller
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz
|
||||
]);
|
||||
|
||||
$studiensemester_kurzbz = $this->getStudiensemesterKurzbz($studiensemester_kurzbz);
|
||||
|
||||
$this->studentlistlib->addJoin(
|
||||
"(
|
||||
|
||||
@@ -31,7 +31,6 @@ class Admin extends Auth_Controller
|
||||
parent::__construct(
|
||||
array(
|
||||
'index' => 'dashboard/admin:rw',
|
||||
'widgets' => 'dashboard/admin:rw',
|
||||
'preview' => 'dashboard/admin:r',
|
||||
)
|
||||
);
|
||||
@@ -44,11 +43,6 @@ class Admin extends Auth_Controller
|
||||
$this->load->view('dashboard/admin.php', []);
|
||||
}
|
||||
|
||||
public function widgets()
|
||||
{
|
||||
$this->load->view('dashboard/widgets.php');
|
||||
}
|
||||
|
||||
public function preview($dashboard_kurzbz = 'CIS')
|
||||
{
|
||||
$this->load->view('dashboard/preview.php', [
|
||||
|
||||
@@ -803,7 +803,7 @@ class ReihungstestJob extends JOB_Controller
|
||||
{
|
||||
if (!isset($studiensemester) || isEmptyString($studiensemester))
|
||||
{
|
||||
$this->logError("Studiensemester not passed as parameter");
|
||||
$this->logError("Studiensemster not passed as parameter");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -34,9 +34,6 @@ class InfoCenter extends Auth_Controller
|
||||
const PREV_FILTER_ID = 'prev_filter_id';
|
||||
const KEEP_TABLESORTER_FILTER = 'keepTsFilter';
|
||||
|
||||
const ONBOARDING_INSERTVON = 'onboarding';
|
||||
const ONBOARDING_KENNZEICHENTYP = 'eobRegistrierungsId';
|
||||
|
||||
private $_uid; // contains the UID of the logged user
|
||||
|
||||
// Used to log with PersonLogLib
|
||||
@@ -178,7 +175,6 @@ class InfoCenter extends Auth_Controller
|
||||
$this->load->model('person/Kontakt_model', 'KontaktModel');
|
||||
$this->load->model('person/Geschlecht_model', 'GeschlechtModel');
|
||||
$this->load->model('person/adresse_model', 'AdresseModel');
|
||||
$this->load->model('person/Kennzeichen_model', 'KennzeichenModel');
|
||||
|
||||
// Loads libraries
|
||||
$this->load->library('PersonLogLib');
|
||||
@@ -1456,100 +1452,6 @@ class InfoCenter extends Auth_Controller
|
||||
|
||||
$this->outputJsonSuccess("Done!");
|
||||
}
|
||||
|
||||
public function getAbsageData()
|
||||
{
|
||||
$stg_typ = $this->getStudienArtBerechtigung(['b', 'm']);
|
||||
|
||||
if (!is_null($stg_typ))
|
||||
{
|
||||
$statusgruende = $this->StatusgrundModel->getStatus(self::ABGEWIESENERSTATUS, true)->retval;
|
||||
$studienSemester = $this->variablelib->getVar('infocenter_studiensemester');
|
||||
$studiengaenge = $this->StudiengangModel->getStudiengaengeWithOrgForm(array_column($stg_typ, 'typ'), $studienSemester);
|
||||
|
||||
$data = array (
|
||||
'statusgruende' => $statusgruende,
|
||||
'studiengaenge' => $studiengaenge->retval
|
||||
);
|
||||
|
||||
$this->outputJsonSuccess($data);
|
||||
}
|
||||
else
|
||||
$this->outputJsonSuccess(null);
|
||||
}
|
||||
|
||||
public function getStudienArtBerechtigung($typ = null)
|
||||
{
|
||||
$studiengang_kz_all = $this->permissionlib->getSTG_isEntitledFor('infocenter');
|
||||
$stg_typ = $this->StudiengangModel->getStudiengangTyp($studiengang_kz_all, $typ);
|
||||
return getData($stg_typ);
|
||||
}
|
||||
|
||||
public function getStudienartData()
|
||||
{
|
||||
$this->outputJsonSuccess($this->getStudienArtBerechtigung(['b', 'm', 'l']));
|
||||
}
|
||||
|
||||
public function saveAbsageForAll()
|
||||
{
|
||||
$statusgrund = $this->input->post('statusgrund');
|
||||
$studiengang = $this->input->post('studiengang');
|
||||
$abgeschickt = $this->input->post('abgeschickt');
|
||||
$personen = $this->input->post('personen');
|
||||
$studienSemester = $this->variablelib->getVar('infocenter_studiensemester');
|
||||
|
||||
if ($statusgrund === 'null' || $studiengang === 'null' || $abgeschickt === 'null' || empty($personen))
|
||||
$this->terminateWithJsonError("Bitte füllen Sie alle Felder aus");
|
||||
|
||||
if ($studiengang === 'all' && $abgeschickt === 'all')
|
||||
{
|
||||
foreach($personen as $person)
|
||||
{
|
||||
$prestudenten = $this->PrestudentModel->getByPersonWithoutLehrgang($person, $studienSemester);
|
||||
|
||||
if (!hasData($prestudenten))
|
||||
continue;
|
||||
|
||||
$prestudentenData = getData($prestudenten);
|
||||
|
||||
foreach ($prestudentenData as $prestudent)
|
||||
{
|
||||
$this->saveAbsage($prestudent->prestudent_id, $statusgrund);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->load->model('organisation/Studienplan_model', 'StudienplanModel');
|
||||
|
||||
$this->StudienplanModel->addSelect('1');
|
||||
$this->StudienplanModel->addJoin('lehre.tbl_studienordnung so', 'studienordnung_id');
|
||||
$escaped = $this->StudienplanModel->db->escape(strtoupper($studiengang));
|
||||
$this->StudienplanModel->db->where("UPPER(so.studiengangkurzbzlang || ':' || tbl_studienplan.orgform_kurzbz) = $escaped");
|
||||
$this->StudienplanModel->addLimit(1);
|
||||
$studiengangResult = $this->StudienplanModel->load();
|
||||
|
||||
if (hasData($studiengangResult))
|
||||
{
|
||||
foreach($personen as $person)
|
||||
{
|
||||
$prestudent = $this->PrestudentModel->getPrestudentByStudiengangAndPerson($studiengang, $person, $studienSemester, $abgeschickt, $abgeschickt === 'all');
|
||||
|
||||
if (!hasData($prestudent))
|
||||
continue;
|
||||
|
||||
$prestudentData = getData($prestudent);
|
||||
$this->saveAbsage($prestudentData[0]->prestudent_id, $statusgrund);
|
||||
}
|
||||
}
|
||||
else
|
||||
$this->terminateWithJsonError("Falschen Studiengang übergeben!");
|
||||
|
||||
}
|
||||
|
||||
$this->outputJsonSuccess("Success");
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
@@ -2044,17 +1946,6 @@ class InfoCenter extends Auth_Controller
|
||||
show_error(getError($user_person));
|
||||
}
|
||||
|
||||
// add info about first electronig onboarding login
|
||||
$this->KennzeichenModel->addSelect('insertamum');
|
||||
$onboarding_first_login = $this->KennzeichenModel->loadWhere(
|
||||
array('person_id' => $person_id, 'kennzeichentyp_kurzbz' => self::ONBOARDING_KENNZEICHENTYP)
|
||||
);
|
||||
|
||||
if (isError($onboarding_first_login))
|
||||
{
|
||||
show_error(getError($onboarding_first_login));
|
||||
}
|
||||
|
||||
$data = array (
|
||||
'lockedby' => $lockedby,
|
||||
'lockedbyother' => $lockedbyother,
|
||||
@@ -2064,9 +1955,7 @@ class InfoCenter extends Auth_Controller
|
||||
'messages' => $messages->retval,
|
||||
'logs' => $logs,
|
||||
'notizen' => $notizen->retval,
|
||||
'notizenbewerbung' => $notizen_bewerbung->retval,
|
||||
'created_by_onboarding' => $stammdaten->retval->insertvon == self::ONBOARDING_INSERTVON,
|
||||
'onboarding_first_login' => hasData($onboarding_first_login) ? getData($onboarding_first_login)[0]->insertamum : null
|
||||
'notizenbewerbung' => $notizen_bewerbung->retval
|
||||
);
|
||||
|
||||
return $data;
|
||||
@@ -2486,4 +2375,97 @@ class InfoCenter extends Auth_Controller
|
||||
$this->loglib->logError('Studiengang has no mail for sending Freigabe mail');
|
||||
}
|
||||
}
|
||||
|
||||
public function getAbsageData()
|
||||
{
|
||||
$stg_typ = $this->getStudienArtBerechtigung(['b', 'm']);
|
||||
|
||||
if (!is_null($stg_typ))
|
||||
{
|
||||
$statusgruende = $this->StatusgrundModel->getStatus(self::ABGEWIESENERSTATUS, true)->retval;
|
||||
$studienSemester = $this->variablelib->getVar('infocenter_studiensemester');
|
||||
$studiengaenge = $this->StudiengangModel->getStudiengaengeWithOrgForm(array_column($stg_typ, 'typ'), $studienSemester);
|
||||
|
||||
$data = array (
|
||||
'statusgruende' => $statusgruende,
|
||||
'studiengaenge' => $studiengaenge->retval
|
||||
);
|
||||
|
||||
$this->outputJsonSuccess($data);
|
||||
}
|
||||
else
|
||||
$this->outputJsonSuccess(null);
|
||||
}
|
||||
|
||||
public function getStudienArtBerechtigung($typ = null)
|
||||
{
|
||||
$studiengang_kz_all = $this->permissionlib->getSTG_isEntitledFor('infocenter');
|
||||
$stg_typ = $this->StudiengangModel->getStudiengangTyp($studiengang_kz_all, $typ);
|
||||
return getData($stg_typ);
|
||||
}
|
||||
|
||||
public function getStudienartData()
|
||||
{
|
||||
$this->outputJsonSuccess($this->getStudienArtBerechtigung(['b', 'm', 'l']));
|
||||
}
|
||||
|
||||
public function saveAbsageForAll()
|
||||
{
|
||||
$statusgrund = $this->input->post('statusgrund');
|
||||
$studiengang = $this->input->post('studiengang');
|
||||
$abgeschickt = $this->input->post('abgeschickt');
|
||||
$personen = $this->input->post('personen');
|
||||
$studienSemester = $this->variablelib->getVar('infocenter_studiensemester');
|
||||
|
||||
if ($statusgrund === 'null' || $studiengang === 'null' || $abgeschickt === 'null' || empty($personen))
|
||||
$this->terminateWithJsonError("Bitte füllen Sie alle Felder aus");
|
||||
|
||||
if ($studiengang === 'all' && $abgeschickt === 'all')
|
||||
{
|
||||
foreach($personen as $person)
|
||||
{
|
||||
$prestudenten = $this->PrestudentModel->getByPersonWithoutLehrgang($person, $studienSemester);
|
||||
|
||||
if (!hasData($prestudenten))
|
||||
continue;
|
||||
|
||||
$prestudentenData = getData($prestudenten);
|
||||
|
||||
foreach ($prestudentenData as $prestudent)
|
||||
{
|
||||
$this->saveAbsage($prestudent->prestudent_id, $statusgrund);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->load->model('organisation/Studienplan_model', 'StudienplanModel');
|
||||
|
||||
$this->StudienplanModel->addSelect('1');
|
||||
$this->StudienplanModel->addJoin('lehre.tbl_studienordnung so', 'studienordnung_id');
|
||||
$escaped = $this->StudienplanModel->db->escape(strtoupper($studiengang));
|
||||
$this->StudienplanModel->db->where("UPPER(so.studiengangkurzbzlang || ':' || tbl_studienplan.orgform_kurzbz) = $escaped");
|
||||
$this->StudienplanModel->addLimit(1);
|
||||
$studiengangResult = $this->StudienplanModel->load();
|
||||
|
||||
if (hasData($studiengangResult))
|
||||
{
|
||||
foreach($personen as $person)
|
||||
{
|
||||
$prestudent = $this->PrestudentModel->getPrestudentByStudiengangAndPerson($studiengang, $person, $studienSemester, $abgeschickt, $abgeschickt === 'all');
|
||||
|
||||
if (!hasData($prestudent))
|
||||
continue;
|
||||
|
||||
$prestudentData = getData($prestudent);
|
||||
$this->saveAbsage($prestudentData[0]->prestudent_id, $statusgrund);
|
||||
}
|
||||
}
|
||||
else
|
||||
$this->terminateWithJsonError("Falschen Studiengang übergeben!");
|
||||
|
||||
}
|
||||
|
||||
$this->outputJsonSuccess("Success");
|
||||
}
|
||||
}
|
||||
@@ -7,8 +7,6 @@ class Rueckstellung extends Auth_Controller
|
||||
private $_ci; // Code igniter instance
|
||||
private $_uid;
|
||||
|
||||
const ZGV_UEBERPRUEFUNG_MAIL_VORLAGE = 'ZGVUEP';
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(
|
||||
@@ -25,7 +23,6 @@ class Rueckstellung extends Auth_Controller
|
||||
$this->load->model('crm/RueckstellungStatus_model', 'RueckstellungStatusModel');
|
||||
$this->load->model('person/Person_model', 'PersonModel');
|
||||
$this->load->library('PersonLogLib');
|
||||
$this->load->library('MessageLib');
|
||||
|
||||
$this->_setAuthUID(); // sets property uid
|
||||
|
||||
@@ -81,8 +78,6 @@ class Rueckstellung extends Auth_Controller
|
||||
|
||||
$this->_log($person_id, $status_kurzbz);
|
||||
|
||||
if ($status_kurzbz === 'onhold_zgv')
|
||||
$this->sendRueckstellungMessage($person_id);
|
||||
$this->outputJson($result);
|
||||
}
|
||||
|
||||
@@ -109,10 +104,6 @@ class Rueckstellung extends Auth_Controller
|
||||
if (isError($result))
|
||||
$this->terminateWithJsonError(getError($result));
|
||||
$this->_log($person, $status_kurzbz);
|
||||
|
||||
if ($status_kurzbz === 'onhold_zgv')
|
||||
$this->sendRueckstellungMessage($person);
|
||||
|
||||
}
|
||||
$this->outputJsonSuccess("Erfolgreich gespeichert!");
|
||||
}
|
||||
@@ -169,26 +160,4 @@ class Rueckstellung extends Auth_Controller
|
||||
$this->_uid
|
||||
);
|
||||
}
|
||||
|
||||
private function sendRueckstellungMessage($person_id)
|
||||
{
|
||||
$person = $this->_ci->PersonModel->load($person_id);
|
||||
|
||||
if (hasData($person))
|
||||
{
|
||||
$person = getData($person)[0];
|
||||
|
||||
return $this->messagelib->sendMessageUserTemplate(
|
||||
$person_id,
|
||||
self::ZGV_UEBERPRUEFUNG_MAIL_VORLAGE,
|
||||
array(
|
||||
'anrede' => $person->anrede,
|
||||
'nachname' => $person->nachname
|
||||
),
|
||||
null,
|
||||
getAuthPersonId(),
|
||||
'infocenter'
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -529,17 +529,6 @@ function is_in_db($key, $model = '')
|
||||
return (isSuccess($result) && hasData($result));
|
||||
}
|
||||
|
||||
/**
|
||||
* check if an entry does not exist in the database
|
||||
*/
|
||||
function is_not_in_db($key, $model = '')
|
||||
{
|
||||
if (!$model)
|
||||
return false;
|
||||
|
||||
return !is_in_db($key, $model);
|
||||
}
|
||||
|
||||
/**
|
||||
* is building an array for Dropdown Entry in Print Dropdown
|
||||
* @param $id id for the Document to add to the Document Array
|
||||
|
||||
@@ -741,7 +741,7 @@ class AnrechnungLib
|
||||
$fullname = hasData($result) ? $result->retval[0]->vorname. $result->retval[0]->nachname : '';
|
||||
|
||||
// Return filename
|
||||
return 'Anrechnungsantrag'. $orgform_kurzbz .'_LV-'. $lehrveranstaltung_id. '_'. $fullname . '.pdf';
|
||||
return 'Anrechnungsantrag'. $orgform_kurzbz .'_LV-'. $lehrveranstaltung_id. '_'. $fullname;
|
||||
}
|
||||
|
||||
public function LVhasLector($anrechnung_id)
|
||||
|
||||
@@ -31,20 +31,18 @@ class Vertrag_model extends DB_Model
|
||||
*/
|
||||
public function save($person_id, $mitarbeiter_uid, $lehrveranstaltung_id, $lehreinheit_id, $projektarbeit_id = null, $vertragsstunden, $betrag, $studiensemester_kurzbz)
|
||||
{
|
||||
$vertragstyp_kurzbz = (is_null($projektarbeit_id)) ? 'Lehrauftrag' : 'Betreuung';
|
||||
|
||||
$person_id = (isset($person_id) && is_numeric($person_id))
|
||||
$person_id = (isset($person_id) && is_numeric($person_id))
|
||||
? $person_id
|
||||
: show_error('peron_id must be set and numeric.');
|
||||
$lehreinheit_id = (isset($lehreinheit_id) && is_numeric($lehreinheit_id))
|
||||
? $lehreinheit_id
|
||||
: show_error('lehreinheit_id must be set and numeric.');
|
||||
$lehrveranstaltung_id = (isset($lehrveranstaltung_id) && is_numeric($lehrveranstaltung_id))
|
||||
? $lehrveranstaltung_id
|
||||
: show_error('lehrveranstaltung_id must be set and numeric.');
|
||||
$projektarbeit_id = (isset($projektarbeit_id) && is_numeric($projektarbeit_id))
|
||||
? $projektarbeit_id
|
||||
: null;
|
||||
$lehreinheit_id = (isset($lehreinheit_id) && is_numeric($lehreinheit_id))
|
||||
? $lehreinheit_id
|
||||
: (($vertragstyp_kurzbz == 'Betreuung') ? null : show_error('lehreinheit_id must be set and numeric.'));
|
||||
$vertragsstunden = (isset($vertragsstunden) && is_numeric($vertragsstunden))
|
||||
? $vertragsstunden
|
||||
: 0;
|
||||
@@ -55,7 +53,7 @@ class Vertrag_model extends DB_Model
|
||||
? $mitarbeiter_uid
|
||||
: show_error('mitarbeiter_uid must be set and a string value.');;
|
||||
|
||||
|
||||
$vertragstyp_kurzbz = (is_null($projektarbeit_id)) ? 'Lehrauftrag' : 'Betreuung';
|
||||
|
||||
// First check if Vertrag already exists for that Lehrauftrag or for that Projektbetreuerauftrag
|
||||
if ($vertragstyp_kurzbz == 'Lehrauftrag')
|
||||
@@ -259,7 +257,7 @@ class Vertrag_model extends DB_Model
|
||||
}
|
||||
elseif ($vertragstyp_kurzbz == 'Betreuung')
|
||||
{
|
||||
$this->addSelect('lehreinheit_id, lehre.tbl_projektarbeit.lehrveranstaltung_id, lehre.tbl_projektarbeit.studiensemester_kurzbz');
|
||||
$this->addSelect('lehreinheit_id');
|
||||
$this->addJoin('lehre.tbl_projektbetreuer', 'vertrag_id');
|
||||
$this->addJoin('lehre.tbl_projektarbeit', 'projektarbeit_id');
|
||||
if ($result = $this->loadWhere(array('vertrag_id' => $vertrag_id)))
|
||||
@@ -283,22 +281,17 @@ class Vertrag_model extends DB_Model
|
||||
{
|
||||
if ($result = getData($this->getLehreinheitID($vertrag_id)))
|
||||
{
|
||||
if (!empty($result[0]->lehreinheit_id))
|
||||
$this->load->model('education/Lehreinheit_model', 'LehreinheitModel');
|
||||
$this->LehreinheitModel->addSelect($select);
|
||||
|
||||
if($result = $this->LehreinheitModel->load($result[0]->lehreinheit_id))
|
||||
{
|
||||
$this->load->model('education/Lehreinheit_model', 'LehreinheitModel');
|
||||
$this->LehreinheitModel->addSelect($select);
|
||||
|
||||
if ($result = $this->LehreinheitModel->load($result[0]->lehreinheit_id))
|
||||
{
|
||||
return success($result->retval);
|
||||
}
|
||||
else
|
||||
{
|
||||
return error('Fehler beim Laden der Lehreinheit');
|
||||
}
|
||||
return success($result->retval);
|
||||
}
|
||||
else
|
||||
{
|
||||
return error('Fehler beim Laden der Lehreinheit');
|
||||
}
|
||||
|
||||
return success($result);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -570,13 +563,14 @@ SELECT
|
||||
null::integer as pruefung_id,
|
||||
projektarbeit_id,
|
||||
(tbl_projektbetreuer.stunden*tbl_projektbetreuer.stundensatz) as betrag1,
|
||||
tbl_projektarbeit.studiensemester_kurzbz,
|
||||
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
|
||||
FROM
|
||||
lehre.tbl_projektbetreuer
|
||||
JOIN lehre.tbl_projektarbeit USING(projektarbeit_id)
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
WHERE
|
||||
tbl_projektbetreuer.person_id=?
|
||||
AND vertrag_id IS NULL
|
||||
@@ -625,13 +619,14 @@ SELECT
|
||||
null::integer as pruefung_id,
|
||||
projektarbeit_id,
|
||||
(tbl_projektbetreuer.stunden * tbl_projektbetreuer.stundensatz) as betrag,
|
||||
tbl_projektarbeit.studiensemester_kurzbz,
|
||||
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, vertrag_id
|
||||
FROM
|
||||
lehre.tbl_projektbetreuer
|
||||
JOIN lehre.tbl_projektarbeit USING(projektarbeit_id)
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
WHERE
|
||||
tbl_projektbetreuer.person_id=?
|
||||
AND vertrag_id = ?
|
||||
|
||||
@@ -177,7 +177,7 @@ class Prestudentstatus_model extends DB_Model
|
||||
* @param prestudent_id ID of the Prestudent.
|
||||
* @param $status_kurzbz kurzbz of the status.
|
||||
* @param $ausbildungssemester ausbildungssemester of the status.
|
||||
* @param $studiensemester_kurzbz studiensemester of the status.
|
||||
* @param $studiensemester_kurzbz studiensemster of the status.
|
||||
*
|
||||
* @return result object with all the status entries
|
||||
*/
|
||||
|
||||
@@ -85,18 +85,9 @@ class Lehreinheitmitarbeiter_model extends DB_Model
|
||||
|
||||
public function getLektorenByLe($lehreinheit_id)
|
||||
{
|
||||
$this->addSelect('tbl_person.vorname, tbl_person.nachname, tbl_lehreinheitmitarbeiter.*, stundenplan.verplant,
|
||||
COALESCE(insertvonperson.vorname || \' \' || insertvonperson.nachname, tbl_lehreinheitmitarbeiter.insertvon) as insertvon,
|
||||
COALESCE(updatevonperson.vorname || \' \' || updatevonperson.nachname, tbl_lehreinheitmitarbeiter.updatevon) as updatevon');
|
||||
$this->addSelect('vorname, nachname, tbl_lehreinheitmitarbeiter.*, stundenplan.verplant');
|
||||
$this->addJoin('tbl_benutzer', 'uid = mitarbeiter_uid');
|
||||
$this->addJoin('tbl_person', 'person_id');
|
||||
$this->addJoin('tbl_benutzer insertvonbenutzer', 'insertvonbenutzer.uid = tbl_lehreinheitmitarbeiter.insertvon', 'LEFT');
|
||||
$this->addJoin('tbl_person insertvonperson', 'insertvonperson.person_id = insertvonbenutzer.person_id', 'LEFT');
|
||||
|
||||
$this->addJoin('tbl_benutzer updatevonbenutzer', 'updatevonbenutzer.uid = tbl_lehreinheitmitarbeiter.updatevon', 'LEFT');
|
||||
$this->addJoin('tbl_person updatevonperson', 'updatevonperson.person_id = updatevonbenutzer.person_id', 'LEFT');
|
||||
|
||||
|
||||
|
||||
$this->addJoin('(
|
||||
SELECT 1 as verplant, lehreinheit_id, mitarbeiter_uid
|
||||
|
||||
@@ -1263,39 +1263,6 @@ class Lehrveranstaltung_model extends DB_Model
|
||||
";
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets lehrveranstaltungen of Studienplan of a certain lva_id set
|
||||
* used if a bigger set of lva id is already available and it needs to be checked against a certain studienplan aswell
|
||||
* @param $studienplan_id ID des Studienplans
|
||||
* @param $lva_ids LVA_ID welche abgegleicht werden sollen
|
||||
* @return array|null
|
||||
*/
|
||||
public function getLvsByStudienplanByLvaIDs($studienplan_id, $lva_ids)
|
||||
{
|
||||
$params = array($studienplan_id, $lva_ids);
|
||||
|
||||
$qry = "SELECT tbl_lehrveranstaltung.*,
|
||||
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id,
|
||||
tbl_studienplan_lehrveranstaltung.semester as stpllv_semester,
|
||||
tbl_studienplan_lehrveranstaltung.pflicht as stpllv_pflicht,
|
||||
tbl_studienplan_lehrveranstaltung.koordinator as stpllv_koordinator,
|
||||
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent,
|
||||
tbl_studienplan_lehrveranstaltung.sort stpllv_sort,
|
||||
tbl_studienplan_lehrveranstaltung.curriculum,
|
||||
tbl_studienplan_lehrveranstaltung.export,
|
||||
tbl_studienplan_lehrveranstaltung.genehmigung
|
||||
FROM lehre.tbl_lehrveranstaltung
|
||||
JOIN lehre.tbl_studienplan_lehrveranstaltung
|
||||
USING(lehrveranstaltung_id)
|
||||
WHERE tbl_studienplan_lehrveranstaltung.studienplan_id = ?
|
||||
AND tbl_studienplan_lehrveranstaltung.lehrveranstaltung_id IN ?
|
||||
";
|
||||
|
||||
$qry .= " ORDER BY stpllv_sort, semester, sort";
|
||||
|
||||
return $this->execQuery($qry, $params);
|
||||
}
|
||||
|
||||
public function getAllOe($lv_id)
|
||||
{
|
||||
$qry = "SELECT DISTINCT oe_kurzbz
|
||||
|
||||
@@ -50,7 +50,8 @@ class Paabgabe_model extends DB_Model
|
||||
JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id)
|
||||
JOIN public.tbl_benutzer bn_student ON(tbl_projektarbeit.student_uid=bn_student.uid)
|
||||
JOIN public.tbl_person person_student ON(bn_student.person_id=person_student.person_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
||||
JOIN lehre.tbl_lehreinheit ON(tbl_projektarbeit.lehreinheit_id=tbl_lehreinheit.lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung ON(tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id)
|
||||
JOIN public.tbl_studiengang ON(tbl_lehrveranstaltung.studiengang_kz=tbl_studiengang.studiengang_kz)
|
||||
JOIN campus.tbl_paabgabetyp USING(paabgabetyp_kurzbz)
|
||||
WHERE
|
||||
@@ -67,13 +68,14 @@ class Paabgabe_model extends DB_Model
|
||||
campus.tbl_paabgabe.insertvon, campus.tbl_paabgabe.insertamum, campus.tbl_paabgabe.updatevon, campus.tbl_paabgabe.updateamum,
|
||||
campus.tbl_paabgabe.note, upload_allowed, beurteilungsnotiz, student_uid, tbl_projektarbeit.note, lehre.tbl_projektarbeit.titel,
|
||||
UPPER(tbl_studiengang.typ) as stgtyp, UPPER(tbl_studiengang.kurzbz) as stgkz, public.tbl_studiengang.studiengang_kz,
|
||||
public.tbl_studiengang.oe_kurzbz as stg_oe_kurzbz, tbl_projektarbeit.studiensemester_kurzbz,
|
||||
public.tbl_studiengang.oe_kurzbz as stg_oe_kurzbz, tbl_lehreinheit.studiensemester_kurzbz,
|
||||
public.tbl_person.anrede, public.tbl_person.titelpre, public.tbl_person.vorname, public.tbl_person.nachname, public.tbl_person.titelpost
|
||||
FROM campus.tbl_paabgabe
|
||||
JOIN campus.tbl_paabgabetyp USING (paabgabetyp_kurzbz)
|
||||
JOIN lehre.tbl_projektarbeit USING (projektarbeit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
||||
JOIN public.tbl_studiengang ON(lehre.tbl_lehrveranstaltung.studiengang_kz = public.tbl_studiengang.studiengang_kz)
|
||||
JOIN lehre.tbl_lehreinheit using(lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung using(lehrveranstaltung_id)
|
||||
JOIN public.tbl_studiengang on(lehre.tbl_lehrveranstaltung.studiengang_kz = public.tbl_studiengang.studiengang_kz)
|
||||
JOIN public.tbl_benutzer ON (public.tbl_benutzer.uid = student_uid)
|
||||
JOIN public.tbl_person USING (person_id)
|
||||
|
||||
@@ -91,7 +93,7 @@ class Paabgabe_model extends DB_Model
|
||||
campus.tbl_paabgabe.insertvon, campus.tbl_paabgabe.insertamum, campus.tbl_paabgabe.updatevon, campus.tbl_paabgabe.updateamum,
|
||||
campus.tbl_paabgabe.note, upload_allowed, beurteilungsnotiz, student_uid, tbl_projektarbeit.note, lehre.tbl_projektarbeit.titel,
|
||||
UPPER(tbl_studiengang.typ) as stgtyp, UPPER(tbl_studiengang.kurzbz) as stgkz, public.tbl_studiengang.studiengang_kz,
|
||||
public.tbl_studiengang.oe_kurzbz as stg_oe_kurzbz, tbl_projektarbeit.studiensemester_kurzbz,
|
||||
public.tbl_studiengang.oe_kurzbz as stg_oe_kurzbz, tbl_lehreinheit.studiensemester_kurzbz,
|
||||
lehre.tbl_projektbetreuer.betreuerart_kurzbz, lehre.tbl_projektbetreuer.person_id,
|
||||
public.tbl_person.anrede, public.tbl_person.titelpre, public.tbl_person.vorname, public.tbl_person.nachname, public.tbl_person.titelpost
|
||||
|
||||
@@ -99,7 +101,8 @@ class Paabgabe_model extends DB_Model
|
||||
JOIN campus.tbl_paabgabetyp USING (paabgabetyp_kurzbz)
|
||||
JOIN lehre.tbl_projektarbeit USING (projektarbeit_id)
|
||||
JOIN lehre.tbl_projektbetreuer USING (projektarbeit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
||||
JOIN lehre.tbl_lehreinheit using(lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung using(lehrveranstaltung_id)
|
||||
JOIN public.tbl_studiengang on(lehre.tbl_lehrveranstaltung.studiengang_kz = public.tbl_studiengang.studiengang_kz)
|
||||
JOIN public.tbl_benutzer ON (public.tbl_benutzer.uid = student_uid)
|
||||
JOIN public.tbl_person ON (public.tbl_benutzer.person_id = public.tbl_person.person_id)
|
||||
|
||||
@@ -25,7 +25,7 @@ class Projektarbeit_model extends DB_Model
|
||||
{
|
||||
$qry = "SELECT
|
||||
pa.*, tbl_projekttyp.bezeichnung,
|
||||
pa.studiensemester_kurzbz, pa.lehrveranstaltung_id,
|
||||
tbl_lehreinheit.studiensemester_kurzbz, tbl_lehrveranstaltung.lehrveranstaltung_id,
|
||||
tbl_firma.name AS firma_name,
|
||||
(
|
||||
SELECT
|
||||
@@ -41,6 +41,7 @@ class Projektarbeit_model extends DB_Model
|
||||
FROM
|
||||
lehre.tbl_projektarbeit pa
|
||||
JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
|
||||
JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id)
|
||||
LEFT JOIN public.tbl_firma USING (firma_id)
|
||||
WHERE
|
||||
@@ -56,7 +57,7 @@ class Projektarbeit_model extends DB_Model
|
||||
|
||||
if (isset($studiensemester_kurzbz))
|
||||
{
|
||||
$qry .= ' AND tbl_projektarbeit.studiensemester_kurzbz=?';
|
||||
$qry .= ' AND tbl_lehreinheit.studiensemester_kurzbz=?';
|
||||
$params[] = $studiensemester_kurzbz;
|
||||
}
|
||||
|
||||
@@ -133,7 +134,7 @@ class Projektarbeit_model extends DB_Model
|
||||
projektarbeit_id,
|
||||
lehre.tbl_projekttyp.bezeichnung as projekttypbezeichnung,
|
||||
lehre.tbl_projekttyp.projekttyp_kurzbz as projekttypkurzbz,
|
||||
lehre.tbl_projektarbeit.studiensemester_kurzbz,
|
||||
lehre.tbl_lehreinheit.studiensemester_kurzbz,
|
||||
lehre.tbl_lehrveranstaltung.studiengang_kz,
|
||||
public.tbl_studiengang.kurzbzlang,
|
||||
lehre.tbl_projektarbeit.note as note,
|
||||
@@ -156,6 +157,7 @@ class Projektarbeit_model extends DB_Model
|
||||
LEFT JOIN public.tbl_benutzer USING(person_id)
|
||||
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
|
||||
LEFT JOIN lehre.tbl_betreuerart USING(betreuerart_kurzbz)
|
||||
LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
||||
LEFT JOIN public.tbl_mitarbeiter ON(public.tbl_mitarbeiter.mitarbeiter_uid = public.tbl_benutzer.uid)
|
||||
LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
@@ -364,7 +366,7 @@ class Projektarbeit_model extends DB_Model
|
||||
tbl_studiengang.typ, tbl_studiengang.kurzbz,
|
||||
tbl_projektarbeit.projekttyp_kurzbz, tbl_projekttyp.bezeichnung,
|
||||
tbl_projektarbeit.titel, tbl_projektarbeit.projektarbeit_id, tbl_projektarbeit.note,
|
||||
student_benutzer.uid, tbl_student.matrikelnr, tbl_projektarbeit.studiensemester_kurzbz, public.tbl_student.student_uid,
|
||||
student_benutzer.uid, tbl_student.matrikelnr, tbl_lehreinheit.studiensemester_kurzbz, public.tbl_student.student_uid,
|
||||
|
||||
lehre.tbl_projektarbeit.sprache,
|
||||
lehre.tbl_projektarbeit.seitenanzahl,
|
||||
@@ -428,6 +430,7 @@ class Projektarbeit_model extends DB_Model
|
||||
LEFT JOIN public.tbl_benutzer student_benutzer ON student_benutzer.uid = lehre.tbl_projektarbeit.student_uid
|
||||
LEFT JOIN public.tbl_person student_person ON student_benutzer.person_id = student_person.person_id
|
||||
LEFT JOIN public.tbl_student ON student_benutzer.uid = public.tbl_student.student_uid
|
||||
LEFT JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
|
||||
LEFT JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id)
|
||||
LEFT JOIN public.tbl_studiengang ON public.tbl_student.studiengang_kz = public.tbl_studiengang.studiengang_kz
|
||||
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
|
||||
@@ -500,7 +503,7 @@ class Projektarbeit_model extends DB_Model
|
||||
student_person.vorname AS student_vorname,
|
||||
student_person.nachname AS student_nachname,
|
||||
public.tbl_student.matrikelnr,
|
||||
tbl_projektarbeit.studiensemester_kurzbz,
|
||||
tbl_lehreinheit.studiensemester_kurzbz,
|
||||
betreuer_benutzer.uid AS betreuer_benutzer_uid,
|
||||
betreuer_person.titelpre AS betreuer_titelpre,
|
||||
betreuer_person.vorname AS betreuer_vorname,
|
||||
@@ -562,6 +565,7 @@ class Projektarbeit_model extends DB_Model
|
||||
LEFT JOIN public.tbl_benutzer student_benutzer ON student_benutzer.uid = lehre.tbl_projektarbeit.student_uid
|
||||
LEFT JOIN public.tbl_person student_person ON student_benutzer.person_id = student_person.person_id
|
||||
LEFT JOIN public.tbl_student ON student_benutzer.uid = public.tbl_student.student_uid
|
||||
LEFT JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
|
||||
LEFT JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id)
|
||||
LEFT JOIN public.tbl_studiengang ON public.tbl_student.studiengang_kz = public.tbl_studiengang.studiengang_kz
|
||||
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
|
||||
@@ -629,7 +633,7 @@ class Projektarbeit_model extends DB_Model
|
||||
student_person.vorname AS student_vorname,
|
||||
student_person.nachname AS student_nachname,
|
||||
public.tbl_student.matrikelnr,
|
||||
tbl_projektarbeit.studiensemester_kurzbz,
|
||||
tbl_lehreinheit.studiensemester_kurzbz,
|
||||
betreuer_benutzer.uid AS betreuer_benutzer_uid,
|
||||
betreuer_person.titelpre AS betreuer_titelpre,
|
||||
betreuer_person.vorname AS betreuer_vorname,
|
||||
@@ -691,6 +695,7 @@ class Projektarbeit_model extends DB_Model
|
||||
LEFT JOIN public.tbl_benutzer student_benutzer ON student_benutzer.uid = lehre.tbl_projektarbeit.student_uid
|
||||
LEFT JOIN public.tbl_person student_person ON student_benutzer.person_id = student_person.person_id
|
||||
LEFT JOIN public.tbl_student ON student_benutzer.uid = public.tbl_student.student_uid
|
||||
LEFT JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
|
||||
LEFT JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id)
|
||||
LEFT JOIN public.tbl_studiengang ON public.tbl_student.studiengang_kz = public.tbl_studiengang.studiengang_kz
|
||||
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
|
||||
|
||||
@@ -218,7 +218,7 @@ class Studiensemester_model extends DB_Model
|
||||
*/
|
||||
public function getByDate($date)
|
||||
{
|
||||
// gets the studiensemester of a date or the next closest previous studiensemester if a date is not within a studiensemester
|
||||
// gets the studiensemster of a date or the next closest previous studiensemester if a date is not within a studiensemester
|
||||
$query = "
|
||||
SELECT studiensemester_kurzbz, start, ende
|
||||
FROM public.tbl_studiensemester
|
||||
|
||||
@@ -98,7 +98,7 @@ class Notiz_model extends DB_Model
|
||||
/**
|
||||
* Add a Notiz for a given person
|
||||
*/
|
||||
public function addNotizForPerson($person_id, $titel, $text, $erledigt, $verfasser_uid, $insertvon = null)
|
||||
public function addNotizForPerson($person_id, $titel, $text, $erledigt, $verfasser_uid)
|
||||
{
|
||||
// Loads model Notizzuordnung_model
|
||||
$this->load->model('person/Notizzuordnung_model', 'NotizzuordnungModel');
|
||||
@@ -106,15 +106,8 @@ class Notiz_model extends DB_Model
|
||||
// Start DB transaction
|
||||
$this->db->trans_start(false);
|
||||
|
||||
$result = $this->insert(
|
||||
array(
|
||||
'titel' => $titel,
|
||||
'text' => $text,
|
||||
'erledigt' => $erledigt,
|
||||
'verfasser_uid' => $verfasser_uid,
|
||||
'insertvon' => $insertvon ?? $verfasser_uid
|
||||
)
|
||||
);
|
||||
$result = $this->insert(array('titel' => $titel, 'text' => $text, 'erledigt' => $erledigt, 'verfasser_uid' => $verfasser_uid,
|
||||
"insertvon" => $verfasser_uid));
|
||||
|
||||
if (isSuccess($result))
|
||||
{
|
||||
|
||||
@@ -532,12 +532,12 @@ class Stundenplan_model extends DB_Model
|
||||
/**
|
||||
* NO STANDALONE FUNCTION - Generates a SQL query string to fetch 'stundenplan' events for a specific student within the current semester.
|
||||
*
|
||||
* @param isLvList if condition needed for Tab LV Termine is given
|
||||
* @param showLvsStundenplan if Lvs of stundenplan should be shown
|
||||
* @param db_stpl_table enables switch to db 'stundenplandev'
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getStundenplanQuery($start_date, $end_date, $semester, $gruppen, $studentlehrverbaende, $isLvList=false, $db_stpl_table='stundenplan'){
|
||||
public function getStundenplanQuery($start_date, $end_date, $semester, $gruppen, $studentlehrverbaende, $db_stpl_table='stundenplan', $showLvsStundenplan=false){
|
||||
|
||||
// helper function to check if either $gruppen or $studentlehrverbaende are empty for each semester
|
||||
$emptyCheck = function($toBeCheckedArray) use ($semester){
|
||||
@@ -559,17 +559,17 @@ class Stundenplan_model extends DB_Model
|
||||
}
|
||||
|
||||
$query =
|
||||
"select sp.*
|
||||
"select sp.*
|
||||
from lehre.vw_".$db_stpl_table." sp
|
||||
WHERE
|
||||
sp.datum >= ".$this->escape($start_date)."
|
||||
AND sp.datum <= ".$this->escape($end_date);
|
||||
|
||||
|
||||
// adds the AND sql chain only if both $gruppen and $studentlehrverbaende are not empty
|
||||
if(!$emptyCheck($gruppen) || !$emptyCheck($studentlehrverbaende))
|
||||
{
|
||||
$query .= " AND ( ";
|
||||
}
|
||||
}
|
||||
|
||||
foreach($semester as $sem => $semester_date_range)
|
||||
{
|
||||
@@ -583,10 +583,10 @@ class Stundenplan_model extends DB_Model
|
||||
}
|
||||
// converts the array of gruppen strings into a sql IN (_,_,_) chain
|
||||
$query .="(sp.gruppe_kurzbz IN (" .implode(',',$gruppen[$sem_date]).") AND sp.datum BETWEEN ".$this->escape($sem_date_range->start)." AND ".$this->escape($sem_date_range->ende)." )";
|
||||
|
||||
|
||||
$query .="OR";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if there are no studentlehrverbaende and the gruppen are not empty, we can remove the last OR added after the groups
|
||||
if($emptyCheck($studentlehrverbaende) && !$emptyCheck($gruppen))
|
||||
@@ -594,27 +594,15 @@ class Stundenplan_model extends DB_Model
|
||||
$query = substr($query, 0, -2);
|
||||
}
|
||||
|
||||
//Condition for showLVList FHC4
|
||||
if(!$isLvList)
|
||||
$stringGroupLv = "AND gruppe_kurzbz is null";
|
||||
else
|
||||
$stringGroupLv ="";
|
||||
|
||||
foreach($semester as $sem=>$semester_date_range)
|
||||
{
|
||||
foreach($semester_date_range as $sem_date => $sem_date_range)
|
||||
{
|
||||
if(!array_key_exists($sem,$studentlehrverbaende) || count($studentlehrverbaende[$sem]) == 0)
|
||||
if(!array_key_exists($sem_date,$studentlehrverbaende) || count($studentlehrverbaende[$sem_date]) == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
$studlvbds = array_filter(
|
||||
$studentlehrverbaende[$sem],
|
||||
function($value) use ($sem_date) {
|
||||
return $value->studiensemester_kurzbz === $sem_date;
|
||||
}
|
||||
);
|
||||
foreach($studlvbds as $key=>$lehrverband)
|
||||
foreach($studentlehrverbaende[$sem_date] as $key=>$lehrverband)
|
||||
{
|
||||
$query .= "(((sp.studiengang_kz = ".$this->escape($lehrverband->studiengang_kz)." AND sp.semester = ".$this->escape($lehrverband->semester)." AND sp.verband = ".$this->escape($lehrverband->verband)." AND sp.gruppe = ".$this->escape($lehrverband->gruppe)." AND sp.datum BETWEEN ".$this->escape($sem_date_range->start)." AND ".$this->escape($sem_date_range->ende).")";
|
||||
// Eintraege fuer den ganzen Verband
|
||||
@@ -623,9 +611,24 @@ class Stundenplan_model extends DB_Model
|
||||
$query .= "OR (sp.studiengang_kz = ".$this->escape($lehrverband->studiengang_kz)." AND sp.semester = ".$this->escape($lehrverband->semester)." AND (sp.verband is null OR sp.verband='') AND sp.datum BETWEEN ".$this->escape($sem_date_range->start)
|
||||
." AND ".$this->escape($sem_date_range->ende).")) AND gruppe_kurzbz is null)";
|
||||
|
||||
$query .="OR";
|
||||
// Eintraege vom Stundenplan
|
||||
if($showLvsStundenplan)
|
||||
{
|
||||
$query .= "
|
||||
OR EXISTS (
|
||||
SELECT 1
|
||||
FROM lehre.tbl_stundenplan tsp
|
||||
WHERE tsp.lehreinheit_id = sp.lehreinheit_id
|
||||
AND tsp.studiengang_kz = " . $this->escape($lehrverband->studiengang_kz) . "
|
||||
AND (tsp.semester = " . $this->escape($lehrverband->semester) . " OR tsp.semester IS NULL)
|
||||
AND (tsp.verband = " . $this->escape($lehrverband->verband) . " OR tsp.verband IS NULL OR tsp.verband = '0' OR tsp.verband = '')
|
||||
AND (tsp.gruppe = " . $this->escape($lehrverband->gruppe) . " OR tsp.gruppe IS NULL OR tsp.gruppe = '0' OR tsp.gruppe = '')
|
||||
AND tsp.gruppe_kurzbz IS NULL)";
|
||||
}
|
||||
|
||||
$query .= "OR";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if the studentlehrverbaende is not empty we can remove the last OR that was added to the query
|
||||
@@ -638,7 +641,7 @@ class Stundenplan_model extends DB_Model
|
||||
if(!$emptyCheck($gruppen) || !$emptyCheck($studentlehrverbaende))
|
||||
{
|
||||
$query .= ")";
|
||||
}
|
||||
}
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
@@ -10,7 +10,6 @@ $includesArray = array(
|
||||
'primevue3' => true,
|
||||
'skipID' => '#fhccontent',
|
||||
'vuedatepicker11' => true,
|
||||
'highcharts' => true,
|
||||
'customCSSs' => array(
|
||||
'public/css/components/verticalsplit.css',
|
||||
'public/css/components/searchbar/searchbar.css',
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
<?php
|
||||
$this->load->view(
|
||||
'templates/FHC-Header',
|
||||
array(
|
||||
'title' => 'FH-Complete',
|
||||
'bootstrap5' => true,
|
||||
'fontawesome6' => true,
|
||||
'axios027' => true,
|
||||
'restclient' => true,
|
||||
'vue3' => true,
|
||||
'tabulator6' => true,
|
||||
'primevue3' => true,
|
||||
'vuedatepicker11' => true,
|
||||
'customJSs' => [
|
||||
'vendor/npm-asset/primevue/colorpicker/colorpicker.js',
|
||||
'vendor/moment/luxonjs/luxon.min.js'
|
||||
],
|
||||
'customJSModules' => ['public/js/apps/Dashboard/WidgetAdmin.js'],
|
||||
'customCSSs' => [
|
||||
'public/css/Fhc.css',
|
||||
'public/css/components/verticalsplit.css',
|
||||
'public/css/components/dashboard.css',
|
||||
'public/css/components/primevue.css',
|
||||
'public/css/components/vue-datepicker.css',
|
||||
],
|
||||
'navigationcomponent' => true
|
||||
)
|
||||
);
|
||||
?>
|
||||
|
||||
<div id="main"></div>
|
||||
|
||||
<?php $this->load->view('templates/FHC-Footer'); ?>
|
||||
@@ -16,7 +16,7 @@ $query = '
|
||||
anrechnung.begruendung_id,
|
||||
anrechnung.dms_id,
|
||||
CASE
|
||||
WHEN stg.oe_kurzbz IN (' . $ORGANISATIONSEINHEITEN_SCHREIBBERECHTIGT . ') THEN TRUE
|
||||
WHEN stg.typ || stg.kurzbz IN (' . $ORGANISATIONSEINHEITEN_SCHREIBBERECHTIGT . ') THEN TRUE
|
||||
ELSE FALSE
|
||||
END "schreibberechtigt",
|
||||
anrechnung.studiensemester_kurzbz,
|
||||
|
||||
@@ -232,8 +232,8 @@ FROM
|
||||
SELECT
|
||||
pa.lehreinheit_id,
|
||||
lv.lehrveranstaltung_id,
|
||||
pa.projektarbeit_id::text AS "projektarbeit_id",
|
||||
pa.studiensemester_kurzbz,
|
||||
pa.projektarbeit_id::text AS "projektarbeit_id",
|
||||
le.studiensemester_kurzbz,
|
||||
stg.studiengang_kz,
|
||||
upper(stg.typ || stg.kurzbz) AS "stg_typ_kurzbz",
|
||||
lv.orgform_kurzbz,
|
||||
@@ -268,7 +268,8 @@ FROM
|
||||
FROM
|
||||
lehre.tbl_projektbetreuer pb
|
||||
JOIN lehre.tbl_projektarbeit pa USING (projektarbeit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung lv ON (pa.lehrveranstaltung_id = lv.lehrveranstaltung_id)
|
||||
JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
|
||||
JOIN PUBLIC.tbl_organisationseinheit oe USING (oe_kurzbz)
|
||||
JOIN PUBLIC.tbl_person person USING (person_id)
|
||||
LEFT JOIN lehre.tbl_vertrag vertrag USING (vertrag_id)
|
||||
@@ -279,7 +280,7 @@ FROM
|
||||
/* filter projektbetreuuer */
|
||||
pb.person_id = \'' . $PERSON_ID . '\'
|
||||
/* filter studiensemester */
|
||||
AND pa.studiensemester_kurzbz = \'' . $STUDIENSEMESTER . '\'
|
||||
AND le.studiensemester_kurzbz = \'' . $STUDIENSEMESTER . '\'
|
||||
/* filter active lehrveranstaltungen */
|
||||
AND lv.aktiv = TRUE
|
||||
/* filter active organisationseinheiten */
|
||||
|
||||
@@ -242,8 +242,8 @@ FROM
|
||||
pa.lehreinheit_id,
|
||||
lv.lehrveranstaltung_id,
|
||||
lv.bezeichnung AS "lv_bezeichnung",
|
||||
(pa.projektarbeit_id::text) AS "projektarbeit_id",
|
||||
pa.studiensemester_kurzbz,
|
||||
(pa.projektarbeit_id::text) AS "projektarbeit_id",
|
||||
le.studiensemester_kurzbz,
|
||||
stg.studiengang_kz,
|
||||
upper(stg.typ || stg.kurzbz) AS "stg_typ_kurzbz",
|
||||
lv.orgform_kurzbz,
|
||||
@@ -270,7 +270,7 @@ FROM
|
||||
ELSE (oe.organisationseinheittyp_kurzbz ||
|
||||
\' \' || oe.bezeichnung)
|
||||
END AS "lv_oe_kurzbz",
|
||||
(nachname || \' \' || vorname) AS "lektor",
|
||||
(nachname || \' \' || vorname) AS "lektor",
|
||||
TRUNC(pb.stunden, 1) AS "stunden",
|
||||
pb.stundensatz,
|
||||
TRUNC((pb.stunden * pb.stundensatz), 2) AS "betrag",
|
||||
@@ -280,7 +280,8 @@ FROM
|
||||
FROM
|
||||
lehre.tbl_projektbetreuer pb
|
||||
JOIN lehre.tbl_projektarbeit pa USING (projektarbeit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung lv ON (pa.lehrveranstaltung_id = lv.lehrveranstaltung_id)
|
||||
JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
|
||||
JOIN PUBLIC.tbl_organisationseinheit oe USING (oe_kurzbz)
|
||||
JOIN PUBLIC.tbl_person person USING (person_id)
|
||||
LEFT JOIN lehre.tbl_vertrag vertrag USING (vertrag_id)
|
||||
@@ -290,7 +291,7 @@ FROM
|
||||
/* filter organisationseinheit */
|
||||
lv.oe_kurzbz IN (\'' . implode('\',\'', $ORGANISATIONSEINHEIT) . '\')
|
||||
/* filter studiensemester */
|
||||
AND pa.studiensemester_kurzbz = \'' . $STUDIENSEMESTER . '\'
|
||||
AND le.studiensemester_kurzbz = \'' . $STUDIENSEMESTER . '\'
|
||||
/* filter active lehrveranstaltungen */
|
||||
AND lv.aktiv = TRUE
|
||||
/* filter active organisationseinheiten */
|
||||
|
||||
@@ -272,8 +272,8 @@ FROM
|
||||
pa.lehreinheit_id,
|
||||
lv.lehrveranstaltung_id,
|
||||
lv.bezeichnung AS "lv_bezeichnung",
|
||||
pa.projektarbeit_id::text AS "projektarbeit_id",
|
||||
pa.studiensemester_kurzbz,
|
||||
pa.projektarbeit_id::text AS "projektarbeit_id",
|
||||
le.studiensemester_kurzbz,
|
||||
stg.studiengang_kz,
|
||||
upper(stg.typ || stg.kurzbz) AS "stg_typ_kurzbz",
|
||||
lv.orgform_kurzbz,
|
||||
@@ -310,7 +310,8 @@ FROM
|
||||
FROM
|
||||
lehre.tbl_projektbetreuer pb
|
||||
JOIN lehre.tbl_projektarbeit pa USING (projektarbeit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung lv ON (pa.lehrveranstaltung_id = lv.lehrveranstaltung_id)
|
||||
JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
|
||||
JOIN PUBLIC.tbl_organisationseinheit oe USING (oe_kurzbz)
|
||||
JOIN PUBLIC.tbl_person person USING (person_id)
|
||||
LEFT JOIN lehre.tbl_vertrag vertrag USING (vertrag_id)
|
||||
@@ -320,7 +321,7 @@ FROM
|
||||
/* filter studiengang */
|
||||
lv.studiengang_kz IN ('. implode(',', $STUDIENGANG) . ')
|
||||
/* filter studiensemester */
|
||||
AND pa.studiensemester_kurzbz = \''. $STUDIENSEMESTER. '\'
|
||||
AND le.studiensemester_kurzbz = \''. $STUDIENSEMESTER. '\'
|
||||
/* filter active lehrveranstaltungen */
|
||||
AND lv.aktiv = TRUE
|
||||
/* filter ausbildungssemester */
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
<div class="row<?php if ($lockedbyother) echo ' alert-danger' ?>">
|
||||
<div class="col-lg-8">
|
||||
<h3 class="page-header">
|
||||
Infocenter Details: <a target="_blank" title="Studentenverwaltung" href="<?php echo site_url('/studvw/stdsem/' . $studiensemester . '/person/' . $stammdaten->person_id) ?>"><?php echo $stammdaten->vorname.' '.$stammdaten->nachname ?> <i class="fa fa-external-link" style="font-size:small"></i></a>
|
||||
Infocenter Details: <a target="_blank" title="Studentenverwaltung" href="<?php echo site_url('/Studentenverwaltung/' . $studiensemester . '/person/' . $stammdaten->person_id) ?>"><?php echo $stammdaten->vorname.' '.$stammdaten->nachname ?> <i class="fa fa-external-link" style="font-size:small"></i></a>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'Attempt to register with existing mailadress\', \'Access code sent\', \'Personal data saved\'';
|
||||
$REJECTED_STATUS = '\'Abgewiesener\'';
|
||||
$ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz');
|
||||
$QUALIFIKATIONSKURS = $this->config->item('infocenter_qualifikationskurs_kz');
|
||||
$STATUS_KURZBZ = '\'Wartender\', \'Bewerber\', \'Aufgenommener\', \'Student\'';
|
||||
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
|
||||
$ORG_NAME = '\'InfoCenter\'';
|
||||
@@ -278,26 +277,7 @@ $query = '
|
||||
WHERE konto.person_id = p.person_id
|
||||
AND konto.studiensemester_kurzbz = '. $STUDIENSEMESTER .'
|
||||
AND konto.buchungstyp_kurzbz = '. $KAUTION_DRITT_STAAT .'
|
||||
) AS "Kaution",
|
||||
(
|
||||
SELECT 1
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
|
||||
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.studiengang_kz in('.$QUALIFIKATIONSKURS.')
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM tbl_prestudentstatus spss
|
||||
WHERE spss.prestudent_id = ps.prestudent_id
|
||||
AND spss.status_kurzbz = '.$REJECTED_STATUS.'
|
||||
)
|
||||
LIMIT 1
|
||||
) AS "Qualikurs"
|
||||
) AS "Kaution"
|
||||
FROM public.tbl_person p
|
||||
LEFT JOIN (
|
||||
SELECT tpl.person_id,
|
||||
@@ -371,8 +351,7 @@ $query = '
|
||||
'ZGV Nation MA',
|
||||
'InfoCenter Mitarbeiter',
|
||||
'Identitätsnachweis',
|
||||
ucfirst($this->p->t('infocenter', 'kaution')),
|
||||
'Qualikurs'
|
||||
ucfirst($this->p->t('infocenter', 'kaution'))
|
||||
),
|
||||
'formatRow' => function($datasetRaw) {
|
||||
|
||||
@@ -501,14 +480,6 @@ $query = '
|
||||
$datasetRaw->{'Kaution'} = 'Offen';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'Qualikurs'} === null)
|
||||
{
|
||||
$datasetRaw->{'Qualikurs'} = 'Nein';
|
||||
}
|
||||
else
|
||||
{
|
||||
$datasetRaw->{'Qualikurs'} = 'Ja';
|
||||
}
|
||||
return $datasetRaw;
|
||||
},
|
||||
'markRow' => function($datasetRaw) {
|
||||
|
||||
@@ -92,14 +92,6 @@
|
||||
</table>
|
||||
</div>
|
||||
<div class="col-lg-6 table-responsive">
|
||||
<?php if ($onboarding_first_login): ?>
|
||||
<div class="row" id="onboardingRow">
|
||||
<?php if ($created_by_onboarding): ?>
|
||||
<div class="col-xs-5"><strong><?php echo $this->p->t('infocenter','onboardingRegistriert') ?></strong></div>
|
||||
<?php endif; ?>
|
||||
<div class="col-xs-7<?php echo $created_by_onboarding ? ' text-right' : '' ?>"><strong><?php echo $this->p->t('infocenter','ersterOnboardingLogin').': '.date_format(date_create($onboarding_first_login), 'd.m.Y') ?></strong></div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<table class="table table-bordered stammdaten_form">
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -199,12 +191,12 @@
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<div class="col-xs-6">
|
||||
<a class="editStammdaten" href="javascript:void(0);">
|
||||
<a class="editStammdaten">
|
||||
<i class="fa fa-edit"></i> <?php echo $this->p->t('ui','bearbeiten'); ?></a>
|
||||
<div class="editActionStammdaten" style="display:none">
|
||||
<a class="cancelStammdaten" href="javascript:void(0);">
|
||||
<a class="cancelStammdaten">
|
||||
<i class="fa fa-trash"></i> <?php echo $this->p->t('ui','abbrechen');?></a>
|
||||
<a class="saveStammdaten" href="javascript:void(0);">
|
||||
<a class="saveStammdaten">
|
||||
<i class="fa fa-save"></i> <?php echo $this->p->t('ui','speichern'); ?></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -351,7 +351,7 @@ if (!$berechtigung->isBerechtigt('admin')
|
||||
{
|
||||
$worksheet->write($lines,3,$elem->vorname);
|
||||
}
|
||||
$worksheet->writeString($lines,4,$elem->semester.$elem->verband.$elem->gruppe);
|
||||
$worksheet->write($lines,4,$elem->semester.$elem->verband.$elem->gruppe);
|
||||
$worksheet->write($lines,5,trim($elem->matrikelnr),$format_highlight);
|
||||
$worksheet->write($lines,6, $note, $format_highlightright);
|
||||
|
||||
|
||||
@@ -345,10 +345,11 @@ $qry = "SELECT
|
||||
WHERE uid=student_uid) as student, tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.semester,
|
||||
tbl_studiengang.email, tbl_betreuerart.beschreibung AS beutreuerart_beschreibung, tbl_projektbetreuer.stunden
|
||||
FROM
|
||||
lehre.tbl_lehrveranstaltung, lehre.tbl_projektarbeit, lehre.tbl_projektbetreuer, public.tbl_studiengang, lehre.tbl_betreuerart
|
||||
lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung, lehre.tbl_projektarbeit, lehre.tbl_projektbetreuer, public.tbl_studiengang, lehre.tbl_betreuerart
|
||||
WHERE
|
||||
tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_projektarbeit.lehrveranstaltung_id AND
|
||||
tbl_projektarbeit.studiensemester_kurzbz=".$db->db_add_param($stdsem)." AND
|
||||
tbl_lehreinheit.lehreinheit_id=tbl_projektarbeit.lehreinheit_id AND
|
||||
tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
|
||||
tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stdsem)." AND
|
||||
tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id AND
|
||||
tbl_lehrveranstaltung.studiengang_kz=tbl_studiengang.studiengang_kz AND
|
||||
tbl_projektbetreuer.betreuerart_kurzbz=tbl_betreuerart.betreuerart_kurzbz AND
|
||||
|
||||
@@ -143,6 +143,7 @@ if($aktion!='zip')
|
||||
JOIN campus.tbl_paabgabe USING(projektarbeit_id)
|
||||
LEFT JOIN public.tbl_benutzer ON(uid=student_uid)
|
||||
LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id)
|
||||
LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
||||
LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
|
||||
@@ -213,6 +214,7 @@ if(isset($_REQUEST['ok']) || (isset($_REQUEST['aktion']) && $_REQUEST['aktion']=
|
||||
JOIN campus.tbl_paabgabe USING(projektarbeit_id)
|
||||
LEFT JOIN public.tbl_benutzer ON(uid=student_uid)
|
||||
LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id)
|
||||
LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
||||
LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
|
||||
|
||||
@@ -87,6 +87,7 @@ cellSeparator (default value: "|")
|
||||
JOIN campus.tbl_paabgabe USING(projektarbeit_id)
|
||||
LEFT JOIN public.tbl_benutzer ON(uid=student_uid)
|
||||
LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id)
|
||||
LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
||||
LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
|
||||
|
||||
@@ -632,7 +632,6 @@ elseif (isset($prestudent_id))
|
||||
|
||||
$ps_obj->lastStatus = $ps_tmp->status_kurzbz; // letzten Status dem result array hinzufügen
|
||||
$ps_obj->status_mehrsprachig = $ps_tmp->status_mehrsprachig;
|
||||
$ps_obj->ausbildungssemester = $ps_tmp->ausbildungssemester;
|
||||
}
|
||||
|
||||
// Falls Status 'Abgewiesene' vorhanden, nach hinten reihen
|
||||
|
||||
+15
-33
@@ -29,7 +29,6 @@ require_once('../../include/sprache.class.php');
|
||||
require_once '../../include/phrasen.class.php';
|
||||
require_once '../../include/studiengang.class.php';
|
||||
require_once('../../include/gebiet.class.php');
|
||||
require_once('../../include/gebiet_pruefling.class.php');
|
||||
|
||||
if (!$db = new basis_db())
|
||||
die('Fehler beim Oeffnen der Datenbankverbindung');
|
||||
@@ -199,8 +198,8 @@ else if (isset($_SESSION['pruefling_id']))
|
||||
)
|
||||
|
||||
|
||||
SELECT * FROM (SELECT DISTINCT ON
|
||||
(gebiet_id)
|
||||
SELECT DISTINCT ON
|
||||
(gebiet_id, semester, reihung)
|
||||
semester,
|
||||
gebiet_id,
|
||||
STRING_AGG(studiengang_kz::TEXT, ', ' ORDER BY studiengang_kz) AS studiengang_kz_list,
|
||||
@@ -227,7 +226,13 @@ else if (isset($_SESSION['pruefling_id']))
|
||||
JOIN
|
||||
testtool.tbl_gebiet USING (gebiet_id)
|
||||
WHERE
|
||||
tbl_ablauf.semester <= prestudent_data.semester
|
||||
(
|
||||
(prestudent_data.semester= 1 AND tbl_ablauf.semester = 1)
|
||||
OR
|
||||
(prestudent_data.semester= 2 AND tbl_ablauf.semester = 2)
|
||||
OR
|
||||
(prestudent_data.semester= 3 AND tbl_ablauf.semester IN (1,3))
|
||||
)
|
||||
AND (
|
||||
prestudent_data.studienplan_id = tbl_ablauf.studienplan_id
|
||||
OR
|
||||
@@ -254,7 +259,9 @@ else if (isset($_SESSION['pruefling_id']))
|
||||
JOIN
|
||||
testtool.tbl_gebiet USING (gebiet_id)
|
||||
WHERE
|
||||
tbl_ablauf.semester <= prestudent_data.semester
|
||||
(prestudent_data.semester= 1 AND tbl_ablauf.semester = 1)
|
||||
OR
|
||||
(prestudent_data.semester= 3 AND tbl_ablauf.semester IN (1,3))
|
||||
)
|
||||
) temp
|
||||
) temp2
|
||||
@@ -263,7 +270,7 @@ else if (isset($_SESSION['pruefling_id']))
|
||||
semester,
|
||||
gebiet_id,
|
||||
bezeichnung,
|
||||
". $bezeichnung_mehrsprachig_sel ." ) temp3
|
||||
". $bezeichnung_mehrsprachig_sel ."
|
||||
|
||||
ORDER BY
|
||||
semester,
|
||||
@@ -276,8 +283,6 @@ else if (isset($_SESSION['pruefling_id']))
|
||||
$lastsemester = '';
|
||||
$quereinsteiger_stg = '';
|
||||
$_SESSION['alleGebiete']= [];
|
||||
$gebiet_pruefling = new gebiet_pruefling();
|
||||
$quereinsteiger_menu = false;
|
||||
while($row = $db->db_fetch_object($result))
|
||||
{
|
||||
//Jedes Semester in einer eigenen Tabelle anzeigen
|
||||
@@ -289,25 +294,8 @@ else if (isset($_SESSION['pruefling_id']))
|
||||
}
|
||||
$lastsemester = $row->semester;
|
||||
|
||||
if ($row->semester == '1')
|
||||
{
|
||||
// Basisgebiete anzeigen
|
||||
echo '<table border="0" cellspacing="0" cellpadding="0" id="Gebiet" style="display: visible; border-collapse: separate; border-spacing: 0 3px; margin-top: 5px;">';
|
||||
echo '<tr><td class="HeaderTesttool">' . $p->t('testtool/basisgebiete') . '</td></tr>';
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!$quereinsteiger_menu)
|
||||
{
|
||||
echo '<table border="0" cellspacing="0" cellpadding="0" id="Gebiet" style="display: visible; border-collapse: separate; border-spacing: 0 3px; margin-top: 5px;">';
|
||||
echo '<tr><td class="HeaderTesttool">' . $p->t('testtool/quereinstiegsgebiete') . '</td></tr>';
|
||||
$quereinsteiger_menu = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo '<table border="0" cellspacing="0" cellpadding="0" id="Gebiet" style="display: visible; border-collapse: separate; border-spacing: 0 3px; margin-top: 5px;">';
|
||||
}
|
||||
}
|
||||
echo '<table border="0" cellspacing="0" cellpadding="0" id="Gebiet" style="display: visible; border-collapse: separate; border-spacing: 0 3px; margin-top: 5px;">';
|
||||
echo '<tr><td class="HeaderTesttool">'. ($row->semester == '1' ? $p->t('testtool/basisgebiete') : $p->t('testtool/quereinstiegsgebiete')).'</td></tr>';
|
||||
}
|
||||
|
||||
// Bei Quereinstiegsgebieten nach STG clustern und die STG anzeigen
|
||||
@@ -406,12 +394,6 @@ else if (isset($_SESSION['pruefling_id']))
|
||||
</td>
|
||||
<!--<td width="10" class="ItemTesttoolRight" nowrap> </td>-->
|
||||
</tr>';
|
||||
if (!$gebiet_pruefling->checkIfExists($_SESSION['pruefling_id'], $row->gebiet_id))
|
||||
{
|
||||
$gebiet_pruefling->pruefling_id = $_SESSION['pruefling_id'];
|
||||
$gebiet_pruefling->gebiet_id = $row->gebiet_id;
|
||||
$gebiet_pruefling->saveGebietForPruefling();
|
||||
}
|
||||
$_SESSION['alleGebiete'][] = $row->gebiet_id;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -122,7 +122,8 @@ foreach ($project_arr as $project)
|
||||
|
||||
// * get studiensemester
|
||||
$pa = new Projektarbeit($pa_id);
|
||||
$studiensemester_kurzbz = $pa->studiensemester_kurzbz;
|
||||
$le = new Lehreinheit($pa->lehreinheit_id);
|
||||
$studiensemester_kurzbz = $le->studiensemester_kurzbz;
|
||||
|
||||
// * get begin- and end date of studiensemester
|
||||
$ss = new Studiensemester($studiensemester_kurzbz);
|
||||
|
||||
@@ -107,14 +107,16 @@ SELECT
|
||||
FROM
|
||||
lehre.tbl_projektarbeit,
|
||||
lehre.tbl_lehrveranstaltung,
|
||||
lehre.tbl_lehreinheit,
|
||||
lehre.tbl_projektbetreuer,
|
||||
public.tbl_person
|
||||
WHERE
|
||||
tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id AND
|
||||
tbl_projektarbeit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
|
||||
tbl_lehreinheit.lehreinheit_id=tbl_projektarbeit.lehreinheit_id AND
|
||||
tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
|
||||
tbl_projektbetreuer.person_id=tbl_person.person_id AND
|
||||
tbl_projektbetreuer.stunden<>0 AND
|
||||
tbl_projektarbeit.studiensemester_kurzbz=".$db->db_add_param($stsem)."
|
||||
tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stsem)."
|
||||
GROUP BY studiengang_kz,geschlecht";
|
||||
|
||||
if(!$result = $db->db_query($qry))
|
||||
@@ -229,7 +231,7 @@ if($format=='xls')
|
||||
if(!isset($stunden['w']))
|
||||
$stunden['w']=0;
|
||||
$summe_w+=$stunden['w'];
|
||||
if(!isset($summe_oe[$oe]['w']))
|
||||
if(!isset($summe_oe[$oe]['w']))
|
||||
$summe_oe[$oe]['w']=0;
|
||||
$summe_oe[$oe]['w']+=$stunden['w'];
|
||||
$worksheet->write($zeile,$organisationseinheiten_idx[$oe]+1,$stunden['w'],$format_data);
|
||||
|
||||
@@ -85,7 +85,7 @@ $db = new basis_db();
|
||||
//Daten holen
|
||||
$qry = "SELECT * FROM (
|
||||
SELECT
|
||||
tbl_person.vorname, tbl_person.nachname, tbl_person.titelpre,
|
||||
tbl_lehreinheit.*, tbl_person.vorname, tbl_person.nachname, tbl_person.titelpre,
|
||||
tbl_mitarbeiter.personalnummer, tbl_person.person_id, tbl_mitarbeiter.mitarbeiter_uid,
|
||||
tbl_mitarbeiter.fixangestellt,
|
||||
tbl_lehreinheitmitarbeiter.stundensatz as stundensatz,
|
||||
@@ -109,20 +109,21 @@ if($semester!='')
|
||||
//Projektsbetreuungen
|
||||
$qry.= " UNION
|
||||
SELECT
|
||||
tbl_person.vorname, tbl_person.nachname, tbl_person.titelpre,
|
||||
tbl_lehreinheit.*, tbl_person.vorname, tbl_person.nachname, tbl_person.titelpre,
|
||||
tbl_mitarbeiter.personalnummer, tbl_person.person_id, tbl_mitarbeiter.mitarbeiter_uid,
|
||||
tbl_mitarbeiter.fixangestellt,
|
||||
0 as stundensatz,
|
||||
0 as semesterstunden
|
||||
FROM
|
||||
lehre.tbl_projektarbeit, lehre.tbl_projektbetreuer,
|
||||
lehre.tbl_lehreinheit, lehre.tbl_projektarbeit, lehre.tbl_projektbetreuer,
|
||||
public.tbl_mitarbeiter, public.tbl_benutzer, lehre.tbl_lehrveranstaltung, public.tbl_person
|
||||
WHERE
|
||||
tbl_mitarbeiter.mitarbeiter_uid = tbl_benutzer.uid AND
|
||||
tbl_benutzer.person_id = tbl_projektbetreuer.person_id AND
|
||||
tbl_projektarbeit.projektarbeit_id = tbl_projektbetreuer.projektarbeit_id AND
|
||||
tbl_projektarbeit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id AND
|
||||
tbl_projektarbeit.studiensemester_kurzbz = ".$db->db_add_param($semester_aktuell)." AND
|
||||
tbl_projektarbeit.lehreinheit_id = tbl_lehreinheit.lehreinheit_id AND
|
||||
tbl_lehreinheit.studiensemester_kurzbz = ".$db->db_add_param($semester_aktuell)." AND
|
||||
tbl_lehreinheit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id AND
|
||||
tbl_lehrveranstaltung.studiengang_kz = ".$db->db_add_param($studiengang_kz, FHC_INTEGER)." AND
|
||||
tbl_person.person_id = tbl_projektbetreuer.person_id";
|
||||
if($semester!='')
|
||||
@@ -163,15 +164,16 @@ if($result = $db->db_query($qry))
|
||||
$qry = "
|
||||
SELECT
|
||||
tbl_projektbetreuer.stunden, tbl_projektbetreuer.stundensatz
|
||||
FROM lehre.tbl_projektbetreuer, lehre.tbl_lehrveranstaltung,
|
||||
FROM lehre.tbl_projektbetreuer, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung,
|
||||
public.tbl_benutzer, lehre.tbl_projektarbeit, campus.vw_student
|
||||
WHERE
|
||||
tbl_projektbetreuer.person_id=tbl_benutzer.person_id
|
||||
AND tbl_benutzer.uid=".$db->db_add_param($uid)."
|
||||
AND tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id
|
||||
AND student_uid=vw_student.uid
|
||||
AND tbl_projektarbeit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)."
|
||||
AND tbl_projektarbeit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id
|
||||
AND tbl_lehreinheit.lehreinheit_id=tbl_projektarbeit.lehreinheit_id
|
||||
AND tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)."
|
||||
AND tbl_lehreinheit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id
|
||||
AND tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER);
|
||||
if($semester!='')
|
||||
$qry.=" AND tbl_lehrveranstaltung.semester=".$db->db_add_param($semester, FHC_INTEGER);
|
||||
|
||||
@@ -99,9 +99,10 @@ $qry_stg = "SELECT distinct studiengang_kz, typ, kurzbz
|
||||
studiengang_kz
|
||||
FROM
|
||||
lehre.tbl_projektbetreuer JOIN lehre.tbl_projektarbeit ON tbl_projektbetreuer.projektarbeit_id=tbl_projektarbeit.projektarbeit_id
|
||||
JOIN lehre.tbl_lehrveranstaltung ON tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_projektarbeit.lehrveranstaltung_id
|
||||
JOIN lehre.tbl_lehreinheit ON tbl_lehreinheit.lehreinheit_id = tbl_projektarbeit.lehreinheit_id
|
||||
JOIN lehre.tbl_lehrveranstaltung ON tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_lehreinheit.lehrveranstaltung_id
|
||||
WHERE
|
||||
lehre.tbl_projektarbeit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)."
|
||||
lehre.tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)."
|
||||
) as foo
|
||||
JOIN public.tbl_studiengang USING (studiengang_kz)
|
||||
";
|
||||
@@ -505,9 +506,10 @@ if ($result_stg = $db->db_query($qry_stg))
|
||||
JOIN public.tbl_benutzer ON tbl_benutzer.person_id=tbl_person.person_id
|
||||
JOIN public.tbl_mitarbeiter ON tbl_mitarbeiter.mitarbeiter_uid=tbl_benutzer.uid
|
||||
JOIN lehre.tbl_projektarbeit ON tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id
|
||||
JOIN lehre.tbl_lehrveranstaltung ON tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_projektarbeit.lehrveranstaltung_id
|
||||
JOIN lehre.tbl_lehreinheit ON tbl_lehreinheit.lehreinheit_id=tbl_projektarbeit.lehreinheit_id
|
||||
JOIN lehre.tbl_lehrveranstaltung ON tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_lehreinheit.lehrveranstaltung_id
|
||||
WHERE
|
||||
tbl_projektarbeit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." AND
|
||||
tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." AND
|
||||
tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER)." AND
|
||||
NOT EXISTS (SELECT
|
||||
mitarbeiter_uid
|
||||
@@ -587,11 +589,12 @@ if ($result_stg = $db->db_query($qry_stg))
|
||||
FROM
|
||||
lehre.tbl_projektbetreuer JOIN public.tbl_benutzer ON tbl_projektbetreuer.person_id = tbl_benutzer.person_id
|
||||
JOIN lehre.tbl_projektarbeit ON tbl_projektarbeit.projektarbeit_id = tbl_projektbetreuer.projektarbeit_id
|
||||
JOIN lehre.tbl_lehrveranstaltung ON tbl_projektarbeit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id
|
||||
JOIN lehre.tbl_lehreinheit ON tbl_lehreinheit.lehreinheit_id = tbl_projektarbeit.lehreinheit_id
|
||||
JOIN lehre.tbl_lehrveranstaltung ON tbl_lehreinheit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id
|
||||
JOIN campus.vw_student ON vw_student.uid = student_uid
|
||||
WHERE
|
||||
tbl_benutzer.uid = ".$db->db_add_param($uid)."
|
||||
AND tbl_projektarbeit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)."
|
||||
AND tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)."
|
||||
AND tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER);
|
||||
|
||||
if ($result = $db->db_query($qry))
|
||||
@@ -822,14 +825,15 @@ if ($result_stg = $db->db_query($qry_stg))
|
||||
$worksheet =& $workbook->addWorksheet('Betreuerstunden');
|
||||
$worksheet->setInputEncoding('utf-8');
|
||||
$qry = "SELECT
|
||||
lehre.tbl_projektarbeit.studiensemester_kurzbz, nachname, vorname, sum(stunden) AS stunden, titelpre,
|
||||
studiensemester_kurzbz, nachname, vorname, sum(stunden) AS stunden, titelpre,
|
||||
sum(tbl_projektbetreuer.stundensatz*tbl_projektbetreuer.stunden)::numeric(8, 2) AS euro, person_id
|
||||
FROM
|
||||
public.tbl_person JOIN lehre.tbl_projektbetreuer USING (person_id)
|
||||
JOIN lehre.tbl_projektarbeit USING (projektarbeit_id)
|
||||
JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
||||
WHERE
|
||||
lehre.tbl_projektarbeit.studiensemester_kurzbz = ".$db->db_add_param($semester_aktuell)." AND
|
||||
studiensemester_kurzbz = ".$db->db_add_param($semester_aktuell)." AND
|
||||
stunden > 0";
|
||||
|
||||
if (count($stg_arr) > 0)
|
||||
@@ -837,7 +841,7 @@ if ($result_stg = $db->db_query($qry_stg))
|
||||
|
||||
$qry .= "
|
||||
GROUP BY
|
||||
lehre.tbl_projektarbeit.studiensemester_kurzbz, person_id, nachname, vorname, titelpre
|
||||
studiensemester_kurzbz, person_id, nachname, vorname, titelpre
|
||||
ORDER BY
|
||||
nachname, vorname
|
||||
";
|
||||
|
||||
@@ -304,14 +304,15 @@ if($studiengang_kz!='')
|
||||
$qry = "SELECT
|
||||
*
|
||||
FROM
|
||||
lehre.tbl_projektarbeit, lehre.tbl_lehrveranstaltung,
|
||||
lehre.tbl_projektarbeit, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung,
|
||||
lehre.tbl_projektbetreuer, public.tbl_person
|
||||
WHERE
|
||||
tbl_projektarbeit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
|
||||
tbl_projektarbeit.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND
|
||||
tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
|
||||
tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id AND
|
||||
tbl_person.person_id=tbl_projektbetreuer.person_id AND
|
||||
tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER)." AND
|
||||
tbl_projektarbeit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)."
|
||||
tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)."
|
||||
";
|
||||
|
||||
if($semester!='')
|
||||
@@ -322,13 +323,14 @@ elseif($mitarbeiter_uid!='')
|
||||
$qry = "SELECT
|
||||
*
|
||||
FROM
|
||||
lehre.tbl_projektarbeit, lehre.tbl_lehrveranstaltung, lehre.tbl_projektbetreuer, public.tbl_person
|
||||
lehre.tbl_projektarbeit, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung, lehre.tbl_projektbetreuer, public.tbl_person
|
||||
WHERE
|
||||
tbl_projektarbeit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
|
||||
tbl_projektarbeit.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND
|
||||
tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
|
||||
tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id AND
|
||||
tbl_person.person_id=tbl_projektbetreuer.person_id AND
|
||||
tbl_projektbetreuer.person_id=".$db->db_add_param($mitarbeiter->person_id, FHC_INTEGER)." AND
|
||||
tbl_projektarbeit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)."
|
||||
tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)."
|
||||
";
|
||||
}
|
||||
elseif($oe_kurzbz!='')
|
||||
@@ -336,14 +338,15 @@ elseif($oe_kurzbz!='')
|
||||
$qry = "SELECT
|
||||
*
|
||||
FROM
|
||||
lehre.tbl_projektarbeit, lehre.tbl_lehrveranstaltung, lehre.tbl_projektbetreuer,
|
||||
lehre.tbl_projektarbeit, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung, lehre.tbl_projektbetreuer,
|
||||
public.tbl_person, lehre.tbl_lehrveranstaltung as lehrfach
|
||||
WHERE
|
||||
tbl_projektarbeit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
|
||||
tbl_projektarbeit.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND
|
||||
tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
|
||||
tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id AND
|
||||
tbl_projektarbeit.lehrveranstaltung_id=lehrfach.lehrveranstaltung_id AND
|
||||
tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND
|
||||
tbl_person.person_id=tbl_projektbetreuer.person_id AND
|
||||
tbl_projektarbeit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." AND
|
||||
tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." AND
|
||||
lehrfach.oe_kurzbz=".$db->db_add_param($oe_kurzbz)."
|
||||
";
|
||||
}
|
||||
|
||||
@@ -490,13 +490,15 @@ if($result = $db->db_query($qry))
|
||||
tbl_projektbetreuer.person_id,
|
||||
tbl_lehrveranstaltung.orgform_kurzbz
|
||||
FROM lehre.tbl_projektarbeit,
|
||||
lehre.tbl_lehreinheit,
|
||||
lehre.tbl_lehrveranstaltung,
|
||||
lehre.tbl_projektbetreuer,
|
||||
PUBLIC.tbl_person
|
||||
WHERE tbl_projektarbeit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id
|
||||
WHERE tbl_projektarbeit.lehreinheit_id = tbl_lehreinheit.lehreinheit_id
|
||||
AND tbl_lehreinheit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id
|
||||
AND tbl_projektarbeit.projektarbeit_id = tbl_projektbetreuer.projektarbeit_id
|
||||
AND tbl_person.person_id = tbl_projektbetreuer.person_id
|
||||
AND tbl_projektarbeit.studiensemester_kurzbz = ".$db->db_add_param($studiensemester_kurzbz);
|
||||
AND tbl_lehreinheit.studiensemester_kurzbz = ".$db->db_add_param($studiensemester_kurzbz);
|
||||
|
||||
if($uid!=='')
|
||||
{
|
||||
|
||||
@@ -84,14 +84,15 @@ $qry = "SELECT
|
||||
ende, CASE WHEN freigegeben THEN 'Ja' ELSE 'Nein' END, gesperrtbis, themenbereich,
|
||||
tbl_projektarbeit.anmerkung, projektarbeit_id
|
||||
FROM
|
||||
lehre.tbl_projektarbeit, lehre.tbl_lehrveranstaltung,
|
||||
lehre.tbl_projektarbeit, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung,
|
||||
public.tbl_benutzer, public.tbl_person, lehre.tbl_projekttyp
|
||||
WHERE
|
||||
tbl_projektarbeit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id AND
|
||||
tbl_projektarbeit.lehreinheit_id = tbl_lehreinheit.lehreinheit_id AND
|
||||
tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_lehreinheit.lehrveranstaltung_id AND
|
||||
tbl_projektarbeit.student_uid = tbl_benutzer.uid AND
|
||||
tbl_benutzer.person_id = tbl_person.person_id AND
|
||||
tbl_projektarbeit.projekttyp_kurzbz = tbl_projekttyp.projekttyp_kurzbz AND
|
||||
tbl_projektarbeit.studiensemester_kurzbz = ".$db->db_add_param($studiensemester_kurzbz)." AND
|
||||
tbl_lehreinheit.studiensemester_kurzbz = ".$db->db_add_param($studiensemester_kurzbz)." AND
|
||||
tbl_lehrveranstaltung.studiengang_kz = ".$db->db_add_param($studiengang_kz)." AND
|
||||
tbl_projektarbeit.projekttyp_kurzbz IN ('Bachelor','Diplom','Projekt')";
|
||||
|
||||
|
||||
@@ -4374,8 +4374,6 @@ if(!$error)
|
||||
$projektarbeit->titel = $_POST['titel'];
|
||||
$projektarbeit->titel_english = $_POST['titel_english'];
|
||||
$projektarbeit->lehreinheit_id = $_POST['lehreinheit_id'];
|
||||
$projektarbeit->lehrveranstaltung_id = $_POST['lehrveranstaltung_id'];
|
||||
$projektarbeit->studiensemester_kurzbz = $_POST['studiensemester_kurzbz'];
|
||||
$projektarbeit->student_uid = $_POST['student_uid'];
|
||||
$projektarbeit->firma_id = $_POST['firma_id'];
|
||||
$projektarbeit->note = $_POST['note'];
|
||||
|
||||
@@ -239,7 +239,6 @@ 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-studiensemester').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;
|
||||
@@ -291,7 +290,6 @@ function StudentProjektarbeitResetFields()
|
||||
document.getElementById('student-projektarbeit-menulist-firma').value='';
|
||||
document.getElementById('student-projektarbeit-menulist-note').value='';
|
||||
document.getElementById('student-projektarbeit-checkbox-final').checked=true;
|
||||
document.getElementById('student-projektarbeit-menulist-studiensemester').value=getStudiensemester();
|
||||
|
||||
var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value;
|
||||
|
||||
@@ -381,7 +379,6 @@ function StudentProjektarbeitAuswahl()
|
||||
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" ));
|
||||
projektarbeit_stsem = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#projektarbeit_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" ));
|
||||
@@ -402,7 +399,7 @@ function StudentProjektarbeitAuswahl()
|
||||
|
||||
//Lehrveranstaltung DropDown laden
|
||||
var LvDropDown = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung');
|
||||
url='<?php echo APP_ROOT;?>rdf/lehrveranstaltung.rdf.php?uid='+student_uid+"&stg_kz="+stg_kz+"&projektarbeit=true&withlv="+lehrveranstaltung_id+"&"+gettimestamp();
|
||||
url='<?php echo APP_ROOT;?>rdf/lehrveranstaltung.rdf.php?uid='+student_uid+"&projektarbeit=true&withlv="+lehrveranstaltung_id+"&"+gettimestamp();
|
||||
|
||||
//Alte DS entfernen
|
||||
var oldDatasources = LvDropDown.database.GetDataSources();
|
||||
@@ -423,7 +420,7 @@ function StudentProjektarbeitAuswahl()
|
||||
|
||||
// Lehreinheit Drop Down laden
|
||||
var LeDropDown = document.getElementById('student-projektarbeit-menulist-lehreinheit');
|
||||
url='<?php echo APP_ROOT;?>rdf/lehreinheit.rdf.php?lehrveranstaltung_id='+lehrveranstaltung_id+"&studiensemester_kurzbz="+projektarbeit_stsem+"&"+gettimestamp();
|
||||
url='<?php echo APP_ROOT;?>rdf/lehreinheit.rdf.php?lehrveranstaltung_id='+lehrveranstaltung_id+"&studiensemester_kurzbz="+lehreinheit_stsem+"&"+gettimestamp();
|
||||
|
||||
//Alte DS entfernen
|
||||
var oldDatasources = LeDropDown.database.GetDataSources();
|
||||
@@ -445,7 +442,6 @@ function StudentProjektarbeitAuswahl()
|
||||
//Werte setzen
|
||||
document.getElementById('student-projektarbeit-textbox-projektarbeit_id').value=projektarbeit_id;
|
||||
document.getElementById('student-projektarbeit-textbox-lehreinheit_stsem').value=lehreinheit_stsem;
|
||||
document.getElementById('student-projektarbeit-menulist-studiensemester').value=projektarbeit_stsem;
|
||||
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;
|
||||
@@ -543,7 +539,6 @@ function StudentProjektarbeitSpeichern()
|
||||
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;
|
||||
studiensemester_kurzbz = document.getElementById('student-projektarbeit-menulist-studiensemester').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;
|
||||
@@ -590,18 +585,12 @@ function StudentProjektarbeitSpeichern()
|
||||
return false;
|
||||
}
|
||||
|
||||
if(lehrveranstaltung_id=='')
|
||||
if(lehreinheit_id=='')
|
||||
{
|
||||
alert('Bitte eine Lehrveranstaltung auswaehlen');
|
||||
alert('Bitte einen LV-Teil auswaehlen');
|
||||
return false;
|
||||
}
|
||||
|
||||
if(studiensemester_kurzbz=='')
|
||||
{
|
||||
alert('Bitte ein Studiensemester auswaehlen');
|
||||
return false;
|
||||
}
|
||||
|
||||
if(isNaN(gesamtstunden))
|
||||
gesamtstunden=0;
|
||||
|
||||
@@ -614,8 +603,6 @@ function StudentProjektarbeitSpeichern()
|
||||
req.add('projekttyp_kurzbz', projekttyp_kurzbz );
|
||||
req.add('titel', titel);
|
||||
req.add('titel_english', titel_english);
|
||||
req.add('lehrveranstaltung_id', lehrveranstaltung_id);
|
||||
req.add('studiensemester_kurzbz', studiensemester_kurzbz);
|
||||
req.add('lehreinheit_id', lehreinheit_id);
|
||||
req.add('student_uid', student_uid);
|
||||
req.add('firma_id', firma_id);
|
||||
@@ -751,7 +738,7 @@ function StudentProjektarbeitLVAChange()
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
|
||||
lehrveranstaltung_id = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').value;
|
||||
studiensemester_kurzbz = document.getElementById('student-projektarbeit-menulist-studiensemester').value;
|
||||
studiensemester_kurzbz = getStudiensemester();
|
||||
|
||||
// Lehreinheit Drop Down laden
|
||||
var LeDropDown = document.getElementById('student-projektarbeit-menulist-lehreinheit');
|
||||
@@ -910,8 +897,8 @@ function StudentProjektbetreuerAuswahl()
|
||||
document.getElementById('student-projektbetreuer-textbox-person_id').value=person_id;
|
||||
document.getElementById('student-projektbetreuer-checkbox-neu').checked=false;
|
||||
|
||||
var projektarbeitstsem = document.getElementById('student-projektarbeit-menulist-studiensemester').value;
|
||||
var default_stundensatz = StudentProjektbetreuerLoadStundensatz(person_id, projektarbeitstsem);
|
||||
var lehreinheitstsem = document.getElementById('student-projektarbeit-textbox-lehreinheit_stsem').value;
|
||||
var default_stundensatz = StudentProjektbetreuerLoadStundensatz(person_id, lehreinheitstsem);
|
||||
|
||||
if (default_stundensatz != '')
|
||||
default_stundensatz = 'Stundensatz (Default '+default_stundensatz+'):';
|
||||
@@ -1423,10 +1410,9 @@ function StudentProjektbetreuerLoadStundensatz(person_id, studiensemester)
|
||||
function StudentProjektbetreuerLoadMitarbeiterDaten()
|
||||
{
|
||||
var person_id = MenulistGetSelectedValue('student-projektbetreuer-menulist-person');
|
||||
var projektarbeitstsem = document.getElementById('student-projektarbeit-menulist-studiensemester').value;
|
||||
var lehreinheitstsem = document.getElementById('student-projektarbeit-textbox-lehreinheit_stsem').value;
|
||||
|
||||
|
||||
var stundensatz = StudentProjektbetreuerLoadStundensatz(person_id, projektarbeitstsem);
|
||||
var stundensatz = StudentProjektbetreuerLoadStundensatz(person_id, lehreinheitstsem);
|
||||
|
||||
if (stundensatz != '')
|
||||
default_stundensatz = 'Stundensatz (Default '+stundensatz+'):';
|
||||
|
||||
@@ -104,10 +104,6 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN')
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/projektarbeit/rdf#projektarbeit_id" />
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-projektarbeit-tree-lehrveranstaltung_id" label="LehrveranstaltungID" flex="2" hidden="true"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/projektarbeit/rdf#lehrveranstaltung_id" />
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-projektarbeit-tree-lehreinheit_id" label="LehreinheitID" flex="2" hidden="true"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/projektarbeit/rdf#lehreinheit_id" />
|
||||
@@ -135,7 +131,7 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN')
|
||||
<treeitem uri="rdf:*">
|
||||
<treerow>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#bezeichnung"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#projektarbeit_stsem"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#lehreinheit_stsem"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#titel"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#note"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#beginn"/>
|
||||
@@ -145,7 +141,6 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN')
|
||||
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#themenbereich"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#anmerkung"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#projektarbeit_id"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#lehrveranstaltung_id"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#lehreinheit_id"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#student_uid"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#firma_id"/>
|
||||
@@ -254,20 +249,6 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN')
|
||||
</template>
|
||||
</menulist>
|
||||
</row>
|
||||
<row>
|
||||
<label value="Studiensemester" control="student-projektarbeit-menulist-studiensemester"/>
|
||||
<menulist id="student-projektarbeit-menulist-studiensemester" disabled="true"
|
||||
datasources="<?php echo APP_ROOT ?>rdf/studiensemester.rdf.php?order=desc" flex="1"
|
||||
ref="http://www.technikum-wien.at/studiensemester/liste">
|
||||
<template>
|
||||
<menupopup>
|
||||
<menuitem value="rdf:http://www.technikum-wien.at/studiensemester/rdf#kurzbz"
|
||||
label="rdf:http://www.technikum-wien.at/studiensemester/rdf#kurzbz"
|
||||
uri="rdf:*"/>
|
||||
</menupopup>
|
||||
</template>
|
||||
</menulist>
|
||||
</row>
|
||||
<row>
|
||||
<label value="LV-Teil" control="student-projektarbeit-menulist-lehreinheit"/>
|
||||
<menulist id="student-projektarbeit-menulist-lehreinheit" disabled="true"
|
||||
|
||||
@@ -271,8 +271,7 @@ foreach ($uid_arr as $uid)
|
||||
'matr_nr' => $person->matr_nr,
|
||||
'ausstellungsdatum' => date('M.Y'),
|
||||
'gueltigbis' => $datum_obj->formatDatum($gueltigbis, 'd.m.Y'),
|
||||
'gueltigbis_3jahre' => date('d.m.Y', strtotime('+3 years')),
|
||||
'gueltigbis_2jahre' => date('d.m.Y', strtotime('+2 years'))
|
||||
'gueltigbis_3jahre' => date('d.m.Y', strtotime('+3 years'))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -521,63 +521,5 @@ class adresse extends basis_db
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt die österreichische Zustell Adresse einer Person
|
||||
* @param $person_id ID der Person
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function loadOesterreichischeZustellAdresse($person_id, $typ = null)
|
||||
{
|
||||
//Pruefen ob person_id eine gueltige Zahl ist
|
||||
if(!is_numeric($person_id) || $person_id == '')
|
||||
{
|
||||
$this->errormsg = 'PersonID muss eine Zahl sein';
|
||||
return false;
|
||||
}
|
||||
$typ_clause = '';
|
||||
if (isset($typ)) $typ_clause = "AND typ=".$this->db_add_param($typ);
|
||||
|
||||
//Daten aus der Datenbank lesen
|
||||
$qry = "SELECT * FROM public.tbl_adresse WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER, false)."
|
||||
AND nation = 'A'
|
||||
{$typ_clause}
|
||||
ORDER BY zustelladresse DESC, adresse_id DESC LIMIT 1";
|
||||
|
||||
if(!$this->db_query($qry))
|
||||
{
|
||||
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
|
||||
return false;
|
||||
}
|
||||
|
||||
if($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->adresse_id = $row->adresse_id;
|
||||
$this->heimatadresse = $this->db_parse_bool($row->heimatadresse);
|
||||
$this->zustelladresse = $this->db_parse_bool($row->zustelladresse);
|
||||
$this->gemeinde = $row->gemeinde;
|
||||
$this->name = $row->name;
|
||||
$this->nation = $row->nation;
|
||||
$this->ort = $row->ort;
|
||||
$this->person_id = $row->person_id;
|
||||
$this->plz = $row->plz;
|
||||
$this->strasse = $row->strasse;
|
||||
$this->typ = $row->typ;
|
||||
$this->updateamum = $row->updateamum;
|
||||
$this->updatevon = $row->updatevon;
|
||||
$this->insertamum = $row->insertamum;
|
||||
$this->insertvon = $row->insertvon;
|
||||
$this->firma_id = $row->firma_id;
|
||||
$this->rechnungsadresse = $this->db_parse_bool($row->rechnungsadresse);
|
||||
$this->anmerkung = $row->anmerkung;
|
||||
$this->co_name = $row->co_name;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden';
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -48,7 +48,7 @@ class bisarchiv extends basis_db
|
||||
*/
|
||||
protected function validate()
|
||||
{
|
||||
if($this->studiensemester_kurzbz == null || mb_strlen($this->studiensemester_kurzbz) > 6)
|
||||
if($this->studiensemster_kurzbz == null || mb_strlen($this->studiensemster_kurzbz) > 6)
|
||||
{
|
||||
$this->errormsg = "Studiensemester ist ungueltig";
|
||||
return false;
|
||||
@@ -107,7 +107,7 @@ class bisarchiv extends basis_db
|
||||
return false;
|
||||
|
||||
$qry = "INSERT INTO bis.tbl_archiv (studiensemester_kurzbz, meldung, html, studiengang_kz, insertamum, insertvon, typ) VALUES ("
|
||||
. $this->db_add_param($this->studiensemester_kurzbz) . ","
|
||||
. $this->db_add_param($this->studiensemster_kurzbz) . ","
|
||||
. $this->db_add_param($this->meldung) . ","
|
||||
. $this->db_add_param($this->html) . ","
|
||||
. $this->db_add_param($this->studiengang_kz) . ","
|
||||
|
||||
@@ -1,97 +0,0 @@
|
||||
<?php
|
||||
/* Copyright (C) 2024 Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
require_once(dirname(__FILE__).'/basis_db.class.php');
|
||||
|
||||
class gebiet_pruefling extends basis_db
|
||||
{
|
||||
//Tabellenspalten
|
||||
public $prueflinggebiet_id;
|
||||
public $pruefling_id;
|
||||
public $gebiet_id;
|
||||
public $insertamum;
|
||||
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function loadByPruefling($pruefling_id)
|
||||
{
|
||||
$qry = "SELECT *
|
||||
FROM testtool.tbl_pruefling_gebiet
|
||||
WHERE pruefling_id = ".$this->db_add_param($pruefling_id, FHC_INTEGER);
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->prueflinggebiet_id = $row->prueflinggebiet_id;
|
||||
$this->pruefling_id = $row->pruefling_id;
|
||||
$this->gebiet_id = $row->gebiet_id;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Pruefling nicht gefunden";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Fehler beim Laden der Gebiete für den Pruefling";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function checkIfExists($pruefling_id, $gebiet_id)
|
||||
{
|
||||
$qry = "SELECT 1
|
||||
FROM testtool.tbl_pruefling_gebiet
|
||||
WHERE pruefling_id =".$this->db_add_param($pruefling_id, FHC_INTEGER) ." AND gebiet_id =".$this->db_add_param($gebiet_id, FHC_INTEGER);
|
||||
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
if ($this->db_num_rows($result) > 0)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function saveGebietForPruefling()
|
||||
{
|
||||
$qry = "INSERT INTO testtool.tbl_pruefling_gebiet
|
||||
(pruefling_id, gebiet_id)
|
||||
VALUES(".
|
||||
$this->db_add_param($this->pruefling_id, FHC_INTEGER).','.
|
||||
$this->db_add_param($this->gebiet_id, FHC_INTEGER).');';
|
||||
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Speichern der Daten';
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
@@ -2088,7 +2088,7 @@ class lehrveranstaltung extends basis_db
|
||||
/**
|
||||
* lädt die Lehrveranstaltungen zum zugehörigen Mitarbeiter
|
||||
* @param String $uid User ID des Mitarbeiters
|
||||
* @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters
|
||||
* @param String $studiensemster_kurzbz Kurzbezeichnung des Studiensemesters
|
||||
*/
|
||||
public function getLVByMitarbeiter($uid, $studiensemester_kurzbz = null)
|
||||
{
|
||||
@@ -2911,176 +2911,5 @@ class lehrveranstaltung extends basis_db
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Filtert die geladenen Lehrveranstaltungen gegen den aktuellen Studienplan des Studenten.
|
||||
* Ermittelt den Studienplan über den Prestudent-Status (aktuellster Eintrag) und gleicht
|
||||
* die vorhandenen IDs mit der Tabelle tbl_studienplan_lehrveranstaltung ab.
|
||||
* Die interne Liste wird nur bei gefundenen Treffern aktualisiert.
|
||||
*
|
||||
* @param string $student_uid Student uid.
|
||||
* @return bool True bei erfolgreicher Abwicklung oder leeren Ausgangsdaten, False bei Datenbankfehlern.
|
||||
*/
|
||||
public function checkLvaAgainstStudentCurrentStudienplan($student_uid) {
|
||||
$qryStudent = "SELECT prestudent_id FROM tbl_student WHERE student_uid = ".$this->db_add_param($student_uid)."";
|
||||
|
||||
if($result = $this->db_query($qryStudent))
|
||||
{
|
||||
if($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$prestudent_id = $row->prestudent_id;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Ermitteln der des aktuellen studienplan für studenten über prestudent';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg='Fehler bei Datenbankabfrage ' .$this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
|
||||
$qryHistory = "SELECT studienplan_id
|
||||
FROM public.tbl_prestudentstatus
|
||||
WHERE prestudent_id = ".$this->db_add_param($prestudent_id)."
|
||||
ORDER BY public.tbl_prestudentstatus.datum DESC";
|
||||
if($result = $this->db_query($qryHistory))
|
||||
{
|
||||
if($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$studienplan_id = $row->studienplan_id;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Ermitteln der des aktuellen studienplan für studenten über prestudentstatus';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg='Fehler bei Datenbankabfrage ' .$this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
|
||||
// needs to have lva_ids from previous query in this context
|
||||
$lvsIDs = array_column($this->lehrveranstaltungen, 'lehrveranstaltung_id');
|
||||
|
||||
if (empty($lvsIDs)) {
|
||||
// exit without modifying object state if no lva_id to query by are found
|
||||
return true;
|
||||
}
|
||||
|
||||
$ids = $this->db_implode4SQL($lvsIDs);
|
||||
|
||||
$qry = "SELECT tbl_lehrveranstaltung.*,
|
||||
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id,
|
||||
tbl_studienplan_lehrveranstaltung.semester as stpllv_semester,
|
||||
tbl_studienplan_lehrveranstaltung.pflicht as stpllv_pflicht,
|
||||
tbl_studienplan_lehrveranstaltung.koordinator as stpllv_koordinator,
|
||||
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent,
|
||||
tbl_studienplan_lehrveranstaltung.sort stpllv_sort,
|
||||
tbl_studienplan_lehrveranstaltung.curriculum,
|
||||
tbl_studienplan_lehrveranstaltung.export,
|
||||
tbl_studienplan_lehrveranstaltung.genehmigung
|
||||
FROM lehre.tbl_lehrveranstaltung
|
||||
JOIN lehre.tbl_studienplan_lehrveranstaltung
|
||||
USING(lehrveranstaltung_id)
|
||||
WHERE tbl_studienplan_lehrveranstaltung.studienplan_id = ".$this->db_add_param($studienplan_id)."
|
||||
AND tbl_studienplan_lehrveranstaltung.lehrveranstaltung_id IN (".$ids.");";
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
// reset the lva array and fill it with the new set
|
||||
$temp_lvas = array();
|
||||
while($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$obj = new lehrveranstaltung();
|
||||
|
||||
$obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
|
||||
$obj->studiengang_kz = $row->studiengang_kz;
|
||||
$obj->bezeichnung = $row->bezeichnung;
|
||||
$obj->kurzbz = $row->kurzbz;
|
||||
$obj->lehrform_kurzbz = $row->lehrform_kurzbz;
|
||||
$obj->semester = $row->semester;
|
||||
$obj->ects = $row->ects;
|
||||
$obj->semesterstunden = $row->semesterstunden;
|
||||
$obj->anmerkung = $row->anmerkung;
|
||||
$obj->lehre = $this->db_parse_bool($row->lehre);
|
||||
$obj->lehreverzeichnis = $row->lehreverzeichnis;
|
||||
$obj->aktiv = $this->db_parse_bool($row->aktiv);
|
||||
$obj->ext_id = $row->ext_id;
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->planfaktor = $row->planfaktor;
|
||||
$obj->planlektoren = $row->planlektoren;
|
||||
$obj->planpersonalkosten = $row->planpersonalkosten;
|
||||
$obj->plankostenprolektor = $row->plankostenprolektor;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
$obj->sprache = $row->sprache;
|
||||
$obj->sort = $row->sort;
|
||||
$obj->incoming = $row->incoming;
|
||||
$obj->zeugnis = $this->db_parse_bool($row->zeugnis);
|
||||
$obj->projektarbeit = $this->db_parse_bool($row->projektarbeit);
|
||||
$obj->koordinator = $row->koordinator;
|
||||
$obj->bezeichnung_english = $row->bezeichnung_english;
|
||||
$obj->orgform_kurzbz = $row->orgform_kurzbz;
|
||||
$obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
|
||||
$obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
|
||||
$obj->oe_kurzbz = $row->oe_kurzbz;
|
||||
$obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
|
||||
$obj->anzahlsemester = $row->anzahlsemester;
|
||||
$obj->semesterwochen = $row->semesterwochen;
|
||||
$obj->lvnr = $row->lvnr;
|
||||
$obj->semester_alternativ = $row->semester_alternativ;
|
||||
$obj->farbe = $row->farbe;
|
||||
$obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
|
||||
$obj->stpllv_sort = $row->stpllv_sort;
|
||||
$obj->benotung = $this->db_parse_bool($row->benotung);
|
||||
$obj->lvinfo = $this->db_parse_bool($row->lvinfo);
|
||||
$obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
|
||||
$obj->evaluierung = $this->db_parse_bool($row->evaluierung);
|
||||
|
||||
$obj->bezeichnung_arr['German'] = $row->bezeichnung;
|
||||
$obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
|
||||
if ($obj->bezeichnung_arr['English'] == '')
|
||||
$obj->bezeichnung_arr['English'] = $obj->bezeichnung_arr['German'];
|
||||
|
||||
$obj->sws = $row->sws;
|
||||
$obj->lvs = $row->lvs;
|
||||
$obj->alvs = $row->alvs;
|
||||
$obj->lvps = $row->lvps;
|
||||
$obj->las = $row->las;
|
||||
|
||||
$obj->stpllv_semester = $row->stpllv_semester;
|
||||
$obj->stpllv_pflicht = $this->db_parse_bool($row->stpllv_pflicht);
|
||||
$obj->stpllv_koordinator = $row->stpllv_koordinator;
|
||||
$obj->studienplan_lehrveranstaltung_id = $row->studienplan_lehrveranstaltung_id;
|
||||
$obj->studienplan_lehrveranstaltung_id_parent = $row->studienplan_lehrveranstaltung_id_parent;
|
||||
$obj->curriculum = $this->db_parse_bool($row->curriculum);
|
||||
$obj->export = $this->db_parse_bool($row->export);
|
||||
$obj->genehmigung = $this->db_parse_bool($row->genehmigung);
|
||||
$obj->new = false;
|
||||
|
||||
$temp_lvas[] = $obj;
|
||||
}
|
||||
|
||||
// Only update the class property if we actually found matching records.
|
||||
// If $temp_lvas is empty, $this->lehrveranstaltungen remains unchanged.
|
||||
if (!empty($temp_lvas)) {
|
||||
$this->lehrveranstaltungen = $temp_lvas;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg='Fehler bei Datenbankabfrage ' .$this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -37,8 +37,6 @@ class projektarbeit extends basis_db
|
||||
public $titel; // string
|
||||
public $titel_english; // string
|
||||
public $lehreinheit_id; // integer
|
||||
public $lehrveranstaltung_id; // integer
|
||||
public $studiensemester_kurzbz; // string
|
||||
public $student_uid; // integer
|
||||
public $firma_id; // integer
|
||||
public $note; // integer
|
||||
@@ -131,8 +129,6 @@ class projektarbeit extends basis_db
|
||||
$this->titel = $row->titel;
|
||||
$this->titel_english = $row->titel_english;
|
||||
$this->lehreinheit_id = $row->lehreinheit_id;
|
||||
$this->lehrveranstaltung_id = $row->lehrveranstaltung_id;
|
||||
$this->studiensemester_kurzbz = $row->studiensemester_kurzbz;
|
||||
$this->student_uid = $row->student_uid;
|
||||
$this->firma_id = $row->firma_id;
|
||||
$this->note = $row->note;
|
||||
@@ -182,13 +178,9 @@ class projektarbeit extends basis_db
|
||||
{
|
||||
$this->errormsg='Projekttyp_kurzbz darf nicht NULL sein!';
|
||||
}
|
||||
if ($this->lehrveranstaltung_id==null)
|
||||
if ($this->lehreinheit_id==null)
|
||||
{
|
||||
$this->errormsg='Lehrveranstaltung_id darf nicht NULL sein!';
|
||||
}
|
||||
if ($this->studiensemester_kurzbz==null)
|
||||
{
|
||||
$this->errormsg='Studiensemester_kurzbz darf nicht NULL sein!';
|
||||
$this->errormsg='Lehreinheit_id darf nicht NULL sein!';
|
||||
}
|
||||
if(mb_strlen($this->projekttyp_kurzbz)>16)
|
||||
{
|
||||
@@ -269,15 +261,12 @@ class projektarbeit extends basis_db
|
||||
{
|
||||
//Neuen Datensatz einfuegen
|
||||
|
||||
$qry='BEGIN; INSERT INTO lehre.tbl_projektarbeit (projekttyp_kurzbz, titel, lehreinheit_id,
|
||||
lehrveranstaltung_id, studiensemester_kurzbz, student_uid, firma_id, note, punkte,
|
||||
$qry='BEGIN; INSERT INTO lehre.tbl_projektarbeit (projekttyp_kurzbz, titel, lehreinheit_id, student_uid, firma_id, note, punkte,
|
||||
beginn, ende, faktor, freigegeben, gesperrtbis, stundensatz, gesamtstunden, themenbereich, anmerkung,
|
||||
insertamum, insertvon, updateamum, updatevon, titel_english, final) VALUES('.
|
||||
$this->db_add_param($this->projekttyp_kurzbz).', '.
|
||||
$this->db_add_param($this->titel).', '.
|
||||
$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).', '.
|
||||
$this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER).', '.
|
||||
$this->db_add_param($this->studiensemester_kurzbz).', '.
|
||||
$this->db_add_param($this->student_uid).', '.
|
||||
$this->db_add_param($this->firma_id, FHC_INTEGER).', '.
|
||||
$this->db_add_param($this->note).', '.
|
||||
@@ -312,8 +301,6 @@ class projektarbeit extends basis_db
|
||||
'titel='.$this->db_add_param($this->titel).', '.
|
||||
'titel_english='.$this->db_add_param($this->titel_english).', '.
|
||||
'lehreinheit_id='.$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).', '.
|
||||
'lehrveranstaltung_id='.$this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER).', '.
|
||||
'studiensemester_kurzbz='.$this->db_add_param($this->studiensemester_kurzbz).', '.
|
||||
'student_uid='.$this->db_add_param($this->student_uid).', '.
|
||||
'firma_id='.$this->db_add_param($this->firma_id, FHC_INTEGER).', '.
|
||||
'note='.$this->db_add_param($this->note).', '.
|
||||
@@ -419,8 +406,6 @@ class projektarbeit extends basis_db
|
||||
$obj->titel = $row->titel;
|
||||
$obj->titel_english = $row->titel_english;
|
||||
$obj->lehreinheit_id = $row->lehreinheit_id;
|
||||
$obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
|
||||
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
|
||||
$obj->student_uid = $row->student_uid;
|
||||
$obj->firma_id = $row->firma_id;
|
||||
$obj->note = $row->note;
|
||||
@@ -464,13 +449,14 @@ class projektarbeit extends basis_db
|
||||
tbl_projektarbeit.* , tbl_projekttyp.bezeichnung
|
||||
FROM
|
||||
lehre.tbl_projektarbeit
|
||||
JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
|
||||
JOIN lehre.tbl_lehrveranstaltung ON (lehre.tbl_projektarbeit.lehrveranstaltung_id = lehre.tbl_lehrveranstaltung.lehrveranstaltung_id)
|
||||
JOIN
|
||||
lehre.tbl_projekttyp USING (projekttyp_kurzbz), lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung
|
||||
|
||||
WHERE
|
||||
tbl_projektarbeit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
|
||||
tbl_projektarbeit.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND
|
||||
tbl_lehreinheit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id AND
|
||||
tbl_lehrveranstaltung.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER)." AND
|
||||
tbl_projektarbeit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
|
||||
tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
@@ -484,8 +470,6 @@ class projektarbeit extends basis_db
|
||||
$obj->titel = $row->titel;
|
||||
$obj->titel_english = $row->titel_english;
|
||||
$obj->lehreinheit_id = $row->lehreinheit_id;
|
||||
$obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
|
||||
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
|
||||
$obj->student_uid = $row->student_uid;
|
||||
$obj->firma_id = $row->firma_id;
|
||||
$obj->note = $row->note;
|
||||
@@ -550,6 +534,7 @@ class projektarbeit extends basis_db
|
||||
pa.projekttyp_kurzbz
|
||||
FROM
|
||||
lehre.tbl_projektarbeit pa
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
JOIN public.tbl_studiensemester sem USING(studiensemester_kurzbz)
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
|
||||
+15
-11
@@ -121,7 +121,7 @@ class vertrag extends basis_db
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
WHERE
|
||||
vertrag_id=tbl_vertrag.vertrag_id
|
||||
AND studiensemester_kurzbz in (SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE start>".$this->db_add_param($datum).")
|
||||
AND studiensemester_kurzbz in (SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE start>=".$this->db_add_param($datum).")
|
||||
)
|
||||
)";
|
||||
}
|
||||
@@ -371,14 +371,14 @@ class vertrag extends basis_db
|
||||
null::integer as pruefung_id,
|
||||
projektarbeit_id,
|
||||
(tbl_projektbetreuer.stunden*tbl_projektbetreuer.stundensatz) as betrag,
|
||||
tbl_projektarbeit.studiensemester_kurzbz,
|
||||
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
|
||||
FROM
|
||||
lehre.tbl_projektbetreuer
|
||||
JOIN lehre.tbl_projektarbeit USING(projektarbeit_id)
|
||||
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
WHERE
|
||||
tbl_projektbetreuer.person_id=".$this->db_add_param($person_id, FHC_INTEGER)."
|
||||
AND vertrag_id IS NULL";
|
||||
@@ -461,8 +461,9 @@ class vertrag extends basis_db
|
||||
OR
|
||||
EXISTS (SELECT 1 FROM lehre.tbl_projektbetreuer
|
||||
JOIN lehre.tbl_projektarbeit USING(projektarbeit_id)
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
WHERE
|
||||
tbl_projektarbeit.studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)."
|
||||
tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)."
|
||||
AND tbl_projektbetreuer.person_id=tbl_person.person_id
|
||||
AND tbl_projektbetreuer.vertrag_id IS NULL
|
||||
)
|
||||
@@ -534,12 +535,12 @@ class vertrag extends basis_db
|
||||
UNION
|
||||
SELECT
|
||||
'Betreuung' as type,
|
||||
NULL as lehreinheit_id,
|
||||
tbl_projektarbeit.lehreinheit_id as lehreinheit_id,
|
||||
null as mitarbeiter_uid,
|
||||
null::integer as pruefung_id,
|
||||
projektarbeit_id,
|
||||
(tbl_projektbetreuer.stunden*tbl_projektbetreuer.stundensatz) as betrag,
|
||||
tbl_projektarbeit.studiensemester_kurzbz,
|
||||
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,
|
||||
@@ -548,6 +549,7 @@ class vertrag extends basis_db
|
||||
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).";";
|
||||
@@ -940,16 +942,17 @@ class vertrag extends basis_db
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
WHERE
|
||||
vertrag_id=tbl_vertrag.vertrag_id
|
||||
AND lehre.tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($stsem).")
|
||||
AND studiensemester_kurzbz=".$this->db_add_param($stsem).")
|
||||
OR
|
||||
EXISTS (SELECT
|
||||
1
|
||||
FROM
|
||||
lehre.tbl_projektbetreuer
|
||||
JOIN lehre.tbl_projektarbeit USING(projektarbeit_id)
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
WHERE
|
||||
vertrag_id=tbl_vertrag.vertrag_id
|
||||
AND lehre.tbl_projektarbeit.studiensemester_kurzbz=".$this->db_add_param($stsem).")
|
||||
AND studiensemester_kurzbz=".$this->db_add_param($stsem).")
|
||||
OR
|
||||
(NOT EXISTS (SELECT
|
||||
1
|
||||
@@ -977,7 +980,7 @@ class vertrag extends basis_db
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
WHERE
|
||||
vertrag_id=tbl_vertrag.vertrag_id
|
||||
AND lehre.tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($stsem).")
|
||||
AND studiensemester_kurzbz=".$this->db_add_param($stsem).")
|
||||
)
|
||||
AND tbl_benutzer.uid=".$this->db_add_param($mitarbeiter_uid);
|
||||
|
||||
@@ -1074,7 +1077,7 @@ class vertrag extends basis_db
|
||||
JOIN lehre.tbl_lehreinheitmitarbeiter USING(vertrag_id)
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
WHERE
|
||||
lehre.tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
|
||||
studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
|
||||
AND tbl_lehreinheitmitarbeiter.mitarbeiter_uid NOT IN(SELECT uid FROM public.tbl_benutzer WHERE person_id=tbl_vertrag.person_id)
|
||||
UNION
|
||||
SELECT
|
||||
@@ -1083,8 +1086,9 @@ class vertrag extends basis_db
|
||||
lehre.tbl_vertrag
|
||||
JOIN lehre.tbl_projektbetreuer USING(vertrag_id)
|
||||
JOIN lehre.tbl_projektarbeit USING(projektarbeit_id)
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
WHERE
|
||||
tbl_projektarbeit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
|
||||
studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
|
||||
AND tbl_projektbetreuer.person_id!=tbl_vertrag.person_id";
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
|
||||
@@ -748,14 +748,17 @@ or not exists
|
||||
UNION
|
||||
SELECT sum(pb.stunden) AS semstunden
|
||||
FROM
|
||||
lehre.tbl_projektarbeit pa
|
||||
JOIN lehre.tbl_projektbetreuer pb ON(pa.projektarbeit_id = pb.projektarbeit_id)
|
||||
JOIN public.tbl_benutzer b ON(pb.person_id = b.person_id)
|
||||
JOIN lehre.tbl_lehreinheit l ON(pa.lehrveranstaltung_id = l.lehrveranstaltung_id AND pa.studiensemester_kurzbz = l.studiensemester_kurzbz)
|
||||
JOIN lehre.tbl_lehrveranstaltung lv ON (l.lehrveranstaltung_id = lv.lehrveranstaltung_id)
|
||||
JOIN public.tbl_studiengang s USING (studiengang_kz)
|
||||
lehre.tbl_projektarbeit pa,
|
||||
lehre.tbl_projektbetreuer pb,
|
||||
public.tbl_benutzer b,
|
||||
lehre.tbl_lehreinheit l
|
||||
JOIN
|
||||
lehre.tbl_lehrveranstaltung lv using (lehrveranstaltung_id)
|
||||
JOIN
|
||||
public.tbl_studiengang s using (studiengang_kz)
|
||||
|
||||
WHERE
|
||||
pa.lehreinheit_id = l.lehreinheit_id AND
|
||||
pb.projektarbeit_id = pa.projektarbeit_id AND
|
||||
pb.person_id = b.person_id AND
|
||||
b.uid = ".$this->db_add_param($user)." AND
|
||||
|
||||
+2
-25
@@ -1,26 +1,3 @@
|
||||
.fhc-page-grid {
|
||||
height: 100vh;
|
||||
display: grid;
|
||||
grid: "header header" auto "nav main" 1fr / auto 1fr;
|
||||
}
|
||||
.fhc-page-grid > * {
|
||||
grid-area: header;
|
||||
}
|
||||
.fhc-page-grid > .navbar-left-side {
|
||||
grid-area: nav;
|
||||
position: initial;
|
||||
align-items: start;
|
||||
}
|
||||
.fhc-page-grid > .content {
|
||||
grid-area: main;
|
||||
margin: 0;
|
||||
}
|
||||
@media (max-width: 992px) {
|
||||
.fhc-page-grid {
|
||||
grid: "header main" auto "nav main" 1fr / auto 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
.fhc-header {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
@@ -123,10 +100,10 @@
|
||||
}
|
||||
|
||||
.modal-msg {
|
||||
max-width: 1378px;
|
||||
max-width: 1378px;
|
||||
}
|
||||
.modal-msg .modal-content {
|
||||
height: 95vh;
|
||||
height: 95vh;
|
||||
}
|
||||
|
||||
.fhcSkipLink {
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
}
|
||||
|
||||
/* special bootstrap5 styling for tableWidget and their accordion-item ::after content */
|
||||
.tabulator .accordion-button::after{
|
||||
.accordion-button::after{
|
||||
content:none !important;
|
||||
}
|
||||
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
}
|
||||
|
||||
/* special bootstrap5 styling for tableWidget and their accordion-item ::after content */
|
||||
.tabulator .accordion-button::after{
|
||||
.accordion-button::after{
|
||||
content:none !important;
|
||||
}
|
||||
|
||||
|
||||
@@ -714,10 +714,6 @@
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
}
|
||||
.input-group-text .p-colorpicker-preview {
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.p-colorpicker-panel {
|
||||
background: #212529;
|
||||
|
||||
@@ -107,9 +107,4 @@
|
||||
|
||||
.gesperrtoption {
|
||||
color: gray;
|
||||
}
|
||||
|
||||
#onboardingRow
|
||||
{
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<defs>
|
||||
<linearGradient id="g" x1="0" x2="0" y1="0" y2="1">
|
||||
<stop offset="0%" stop-color="rgba(139,179,29,1)" />
|
||||
<stop offset="100%" stop-color="rgba(114,120,122,0)" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect x="90" y="322" width="80" height="90" fill="url(#g)" stroke="#72777A" stroke-width="3" />
|
||||
<rect x="216" y="212" width="80" height="200" fill="url(#g)" stroke="#72777A" stroke-width="3" />
|
||||
<rect x="342" y="100" width="80" height="312" fill="url(#g)" stroke="#72777A" stroke-width="3" />
|
||||
<path d="M75,370l150,-150l50,50l120,-120l-10,-10l45,-15l-15,45l-10,-10l-130,130l-50,-50l-140,140" fill="rgb(0, 100, 156)" stroke="rgb(0, 100, 156)" stroke-width="5" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 739 B |
@@ -1,12 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<defs>
|
||||
<clipPath id="c">
|
||||
<path d="M92,320A1,1,0,0,1,420,192l41,-16A1,1,0,1,0,51,336z"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<text x="256" style="fill: rgb(0, 100, 156); font-family: "Arial", sans-serif; font-size: 150px; font-weight: 700;text-anchor: middle;" y="300">KPI</text>
|
||||
<foreignObject width="512" height="512" clip-path="url(#c)">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="width: 100%;height: 100%;background: conic-gradient(from -112deg, rgba(114,120,122,0),rgba(139,179,29,1));"></div>
|
||||
</foreignObject>
|
||||
<path fill="transparent" d="M92,320A1,1,0,0,1,420,192l41,-16A1,1,0,1,0,51,336" stroke="#72777A" stroke-width="3"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 714 B |
@@ -34,18 +34,6 @@ export default {
|
||||
url: '/api/frontend/v1/dashboard/widget/listAllowed/' + dashboard
|
||||
};
|
||||
},
|
||||
listAll() {
|
||||
return {
|
||||
method: 'get',
|
||||
url: '/api/frontend/v1/dashboard/widget/listAll'
|
||||
};
|
||||
},
|
||||
listAllOriginal() {
|
||||
return {
|
||||
method: 'get',
|
||||
url: '/api/frontend/v1/dashboard/widget/listAllOriginal'
|
||||
};
|
||||
},
|
||||
setAllowed(dashboard_id, widget_id, allowed) {
|
||||
return {
|
||||
method: 'post',
|
||||
@@ -54,32 +42,5 @@ export default {
|
||||
dashboard_id, widget_id, allowed
|
||||
}
|
||||
};
|
||||
},
|
||||
create(params) {
|
||||
return {
|
||||
method: 'post',
|
||||
url: '/api/frontend/v1/dashboard/widget/create',
|
||||
params
|
||||
};
|
||||
},
|
||||
update(params) {
|
||||
return {
|
||||
method: 'post',
|
||||
url: '/api/frontend/v1/dashboard/widget/update',
|
||||
params
|
||||
};
|
||||
},
|
||||
remove(widget_id) {
|
||||
return {
|
||||
method: 'post',
|
||||
url: '/api/frontend/v1/dashboard/widget/remove',
|
||||
params: { widget_id }
|
||||
};
|
||||
},
|
||||
generators() {
|
||||
return {
|
||||
method: 'get',
|
||||
url: '/api/frontend/v1/dashboard/widget/generators'
|
||||
};
|
||||
},
|
||||
}
|
||||
};
|
||||
@@ -1,38 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2026 fhcomplete.org
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
export default {
|
||||
list() {
|
||||
return {
|
||||
method: 'get',
|
||||
url: '/api/frontend/v1/report/list',
|
||||
};
|
||||
},
|
||||
vars(statistik_kurzbz) {
|
||||
return {
|
||||
method: 'get',
|
||||
url: '/api/frontend/v1/report/vars/' + statistik_kurzbz,
|
||||
};
|
||||
},
|
||||
get(statistik_kurzbz, params) {
|
||||
return {
|
||||
method: 'post',
|
||||
url: '/api/frontend/v1/report/get/' + statistik_kurzbz,
|
||||
params,
|
||||
};
|
||||
},
|
||||
};
|
||||
@@ -28,15 +28,5 @@ export default {
|
||||
url: '/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz',
|
||||
params: { studiengang_kz }
|
||||
};
|
||||
},
|
||||
getAllowed(permissions) {
|
||||
if (!Array.isArray(permissions))
|
||||
permissions = permissions.split(',');
|
||||
|
||||
return {
|
||||
method: 'post',
|
||||
url: '/api/frontend/v1/organisation/StudiengangEP/getAllowed',
|
||||
params: { permissions }
|
||||
};
|
||||
},
|
||||
}
|
||||
};
|
||||
@@ -1,25 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2026 fhcomplete.org
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
export default {
|
||||
getAktNext() {
|
||||
return {
|
||||
method: 'get',
|
||||
url: '/api/frontend/v1/organisation/studienjahr/getAktNext',
|
||||
};
|
||||
},
|
||||
};
|
||||
@@ -1,6 +1,5 @@
|
||||
import FhcDashboard from '../../components/Dashboard/Dashboard.js';
|
||||
import PluginsPhrasen from '../../plugins/Phrasen.js';
|
||||
import PluginsCharts from '../../plugins/highchartsVue.js';
|
||||
import Theme from '../../plugins/Theme.js';
|
||||
import contrast from '../../directives/contrast.js';
|
||||
import {setScrollbarWidth} from "../../helpers/CssVarCalcHelpers.js";
|
||||
@@ -20,7 +19,6 @@ import DeadlineOverview from "../../components/Cis/Abgabetool/DeadlineOverview.j
|
||||
import Studium from "../../components/Cis/Studium/Studium.js";
|
||||
import StgOrgLvPlan from "../../components/Cis/LvPlan/StgOrg.js";
|
||||
import OtherLvPlan from "../../components/Cis/LvPlan/OtherLvPlan.js";
|
||||
import Compat from "../../components/Cis/Compat.js";
|
||||
|
||||
import ApiRouteInfo from '../../api/factory/routeinfo.js';
|
||||
import {capitalize} from "../../helpers/StringHelpers.js";
|
||||
@@ -31,18 +29,6 @@ const isMobile = window.matchMedia("(max-width: 767px)").matches;
|
||||
const router = VueRouter.createRouter({
|
||||
history: VueRouter.createWebHistory(`/${ciPath}`),
|
||||
routes: [
|
||||
{
|
||||
path: `/Cis/Compat/:mode(ci|legacy)/:path(.*)`,
|
||||
name: 'Compat',
|
||||
component: Compat,
|
||||
props: (route) => {
|
||||
return {
|
||||
mode: route.params.mode,
|
||||
path: route.params.path,
|
||||
query_string: VueRouter.stringifyQuery(route.query)
|
||||
};
|
||||
}
|
||||
},
|
||||
{
|
||||
path: `/Cis/Studium`,
|
||||
name: 'Studium',
|
||||
@@ -291,7 +277,7 @@ const app = Vue.createApp({
|
||||
if (target && this.isInternalRoute(target.href)) {
|
||||
const url = new URL(target.href)
|
||||
|
||||
const path = url.pathname + url.search;
|
||||
const path = url.pathname
|
||||
const base = this.$router.options.history.base
|
||||
const route = path.replace(base, '') || '/'
|
||||
|
||||
@@ -349,7 +335,6 @@ app.use(PluginsPhrasen);
|
||||
app.use(Theme);
|
||||
app.directive('contrast', contrast);
|
||||
app.mount('#fhccontent');
|
||||
app.use(PluginsCharts);
|
||||
|
||||
router.afterEach((to, from, failure) => {
|
||||
app.config.globalProperties.$api.call(ApiRouteInfo.info('cis4', to.fullPath));
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
import { CoreNavigationCmpt } from '../../components/navigation/Navigation.js';
|
||||
import WidgetAdmin from '../../components/Dashboard/WidgetAdmin.js';
|
||||
|
||||
import PluginsPhrasen from '../../plugins/Phrasen.js';
|
||||
|
||||
const app = Vue.createApp({
|
||||
name: 'WidgetsAdminApp',
|
||||
data: () => ({
|
||||
appSideMenuEntries: {}
|
||||
}),
|
||||
components: {
|
||||
CoreNavigationCmpt,
|
||||
WidgetAdmin
|
||||
},
|
||||
provide() {
|
||||
return {
|
||||
timezone: FHC_JS_DATA_STORAGE_OBJECT.timezone
|
||||
};
|
||||
},
|
||||
template: /* html */`
|
||||
<div class="widgets-admin-app fhc-page-grid">
|
||||
<core-navigation-cmpt :add-side-menu-entries="appSideMenuEntries" />
|
||||
|
||||
<div class="content d-flex flex-column gap-3 w-100 h-100 overflow-hidden">
|
||||
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3">
|
||||
<h1 class="h2 pb-3 border-bottom mb-0 w-100">
|
||||
{{ $p.t('dashboard/widgets') || ' ' }}
|
||||
</h1>
|
||||
</div>
|
||||
<widget-admin class="h-100 overflow-hidden" />
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
});
|
||||
app.use(primevue.config.default, {
|
||||
zIndex: {
|
||||
overlay: 9000,
|
||||
tooltip: 8000
|
||||
}
|
||||
})
|
||||
app.use(PluginsPhrasen);
|
||||
app.directive('tooltip', primevue.tooltip);
|
||||
app.mount('#main');
|
||||
@@ -6,16 +6,10 @@ export const FhcChart = {
|
||||
type: Object,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
reflow() {
|
||||
if (this.$refs.chart?.chart)
|
||||
this.$refs.chart.chart.reflow();
|
||||
},
|
||||
},
|
||||
template: /* html */`
|
||||
template: `
|
||||
<div style="width:100%;height:100%;overflow:auto">
|
||||
<figure class="h-100 m-0">
|
||||
<highcharts ref="chart" class="chart h-100" :options="chartOptions"></highcharts>
|
||||
<figure>
|
||||
<highcharts class="chart" :options="chartOptions"></highcharts>
|
||||
</figure>
|
||||
</div>
|
||||
`
|
||||
|
||||
@@ -1,93 +0,0 @@
|
||||
export default {
|
||||
name: "Compat",
|
||||
props: {
|
||||
mode: { type: String, required: true },
|
||||
path: { type: String, required: true },
|
||||
query_string: { type: String, required: true, default: ''}
|
||||
},
|
||||
data: function() {
|
||||
return {
|
||||
lastLoadediFrameURL: '',
|
||||
srcUrl: ''
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
propsWatchHelper: function() {
|
||||
return this.mode + '#' + this.path + '#' + this.query_string;
|
||||
}
|
||||
},
|
||||
mounted: function() {
|
||||
this.srcUrl = this.buildSrcUrl();
|
||||
},
|
||||
watch: {
|
||||
propsWatchHelper: function() {
|
||||
if(this.lastLoadediFrameURL === '') {
|
||||
return;
|
||||
}
|
||||
|
||||
let currentiFrameURL = this.$refs.compatiframe ? this.$refs.compatiframe.src : '';
|
||||
|
||||
let url = this.buildSrcUrl();
|
||||
if(this.lastLoadediFrameURL !== url) {
|
||||
this.srcUrl = url;
|
||||
if(this.srcUrl === url) {
|
||||
this.$refs.compatiframe.contentWindow.location.href = url;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
buildSrcUrl: function() {
|
||||
let url = false;
|
||||
switch(this.mode) {
|
||||
case 'ci':
|
||||
url = FHC_JS_DATA_STORAGE_OBJECT.app_root + 'index.ci.php/' + this.path;
|
||||
break;
|
||||
case 'legacy':
|
||||
url = FHC_JS_DATA_STORAGE_OBJECT.app_root + this.path;
|
||||
break;
|
||||
default:
|
||||
url = false;
|
||||
}
|
||||
if(this.query_string !== '' && url) {
|
||||
url += '?' + this.query_string;
|
||||
}
|
||||
|
||||
return url;
|
||||
},
|
||||
loadHandler: function() {
|
||||
let iframe_href = this.$refs.compatiframe.contentWindow.location.href;
|
||||
let ci_urlstart = FHC_JS_DATA_STORAGE_OBJECT.app_root + 'index.ci.php/';
|
||||
let legacy_urlstart = FHC_JS_DATA_STORAGE_OBJECT.app_root;
|
||||
let routerpath = null;
|
||||
|
||||
this.lastLoadediFrameURL = iframe_href;
|
||||
|
||||
if(iframe_href.startsWith(ci_urlstart)) {
|
||||
routerpath = iframe_href.replace(
|
||||
ci_urlstart, '/Cis/Compat/ci/');
|
||||
} else if(iframe_href.startsWith(legacy_urlstart)) {
|
||||
routerpath = iframe_href.replace(
|
||||
legacy_urlstart, '/Cis/Compat/legacy/');
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
if(this.$route.fullPath !== routerpath) {
|
||||
this.$router.push(routerpath);
|
||||
}
|
||||
}
|
||||
},
|
||||
template: `
|
||||
<div class="w-100">
|
||||
<iframe
|
||||
ref="compatiframe"
|
||||
v-if="srcUrl"
|
||||
:src="srcUrl"
|
||||
@load="loadHandler"
|
||||
style="width:100%; height:90vh; border:0; display:block;"
|
||||
></iframe>
|
||||
<div v-else class="alert alert-warning">Keine URL gefunden.</div>
|
||||
</div>
|
||||
`
|
||||
};
|
||||
@@ -72,10 +72,20 @@ export default {
|
||||
return this.entry.url.startsWith(FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router)
|
||||
},
|
||||
target() {
|
||||
if (this.entry?.target) {
|
||||
return this.entry.target;
|
||||
if (this.entry.template_kurzbz == 'redirect') {
|
||||
if (!this.entry.content)
|
||||
return '';
|
||||
let xmlDoc = (new DOMParser()).parseFromString(this.entry.content,"text/xml");
|
||||
let target = xmlDoc.getElementsByTagName('target')[0];
|
||||
if (!target)
|
||||
return '';
|
||||
|
||||
target = target.childNodes[0].nodeValue + "";
|
||||
if (target == 'content' || target == '_self')
|
||||
target = "";
|
||||
return target;
|
||||
}
|
||||
return '_self';
|
||||
return ''
|
||||
},
|
||||
hasChilds() {
|
||||
return this.entry.childs && this.entry.childs.length !== 0;
|
||||
|
||||
@@ -2,16 +2,15 @@ export default {
|
||||
props: {
|
||||
data: {
|
||||
type: String,
|
||||
},
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {};
|
||||
return {}
|
||||
},
|
||||
template: /*html*/ `
|
||||
template: /*html*/`
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<span v-if="data">{{$p.t('profil','fhAusweisStatus',[data])}}</span>
|
||||
<span v-else>{{$p.t('profil','fhAusweisStatusNichtAusgegeben')}}</span>
|
||||
<span >{{$p.t('profil','fhAusweisStatus',[data])}}</span>
|
||||
</div>
|
||||
</div>`,
|
||||
};
|
||||
}
|
||||
@@ -206,8 +206,6 @@ export default {
|
||||
});
|
||||
|
||||
this.lehrveranstaltungen.forEach((lehrveranstaltung)=>{
|
||||
// a lehrveranstaltung without a modul has no children
|
||||
if(!Array.isArray(lehrveranstaltung.lehrveranstaltungen)) return;
|
||||
lehrveranstaltung.lehrveranstaltungen.sort((lv1,lv2)=>{
|
||||
if (lv1.bezeichnung.toLowerCase() > lv2.bezeichnung.toLowerCase()) {
|
||||
return 1;
|
||||
@@ -395,16 +393,6 @@ export default {
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card" v-else-if="!Array.isArray(lehrveranstaltung.lehrveranstaltungen)">
|
||||
<div class="card-body">
|
||||
<ul class="list-group list-group-flush">
|
||||
<li class="d-flex list-group-item">
|
||||
<a class="fhc-link-color d-block me-auto" href="#" @click="openLvUebersicht(lehrveranstaltung)">{{isGermanLanguage ? lehrveranstaltung.bezeichnung : lehrveranstaltung.bezeichnung_english}}</a>
|
||||
<p>{{lehrveranstaltung.lehrform_kurzbz}}</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import BsModal from "../Bootstrap/Modal.js";
|
||||
import HeightTransition from "../Tranistion/HeightTransition.js";
|
||||
import MissingPermissionWidget from "../DashboardWidget/MissingPermission.js";
|
||||
|
||||
import { enableDragDropTouch } from "../../../../vendor/drag-drop-touch-js/dragdroptouch/dist/drag-drop-touch.esm.min.js";
|
||||
|
||||
@@ -113,12 +112,6 @@ export default {
|
||||
isPinned() {
|
||||
return this.place?.pinned ? true : false;
|
||||
},
|
||||
permitted() {
|
||||
// widgets without a linked permission (or before the template loaded)
|
||||
// are considered permitted; the backend sets permitted === false only
|
||||
// when the user is missing the widget's required permission
|
||||
return this.widgetTemplate?.permitted !== false;
|
||||
},
|
||||
ready() {
|
||||
return this.component && this.arguments !== null;
|
||||
}
|
||||
@@ -145,11 +138,8 @@ export default {
|
||||
handleHideBsModal() {
|
||||
this.$emit('configClosed')
|
||||
},
|
||||
createTmpConfig() {
|
||||
this.tmpConfig = JSON.parse(JSON.stringify(this.arguments));
|
||||
},
|
||||
openConfig() {
|
||||
this.createTmpConfig();
|
||||
this.tmpConfig = { ...this.arguments };
|
||||
this.$refs.config.show();
|
||||
},
|
||||
setConfig(hasConfig) {
|
||||
@@ -166,7 +156,7 @@ export default {
|
||||
},
|
||||
sendChangeConfig(config) {
|
||||
for (var k in config) {
|
||||
if (JSON.stringify(this.widgetTemplate.arguments[k]) == JSON.stringify(config[k])) {
|
||||
if (this.widgetTemplate.arguments[k] == config[k]) {
|
||||
delete config[k];
|
||||
}
|
||||
}
|
||||
@@ -179,22 +169,18 @@ export default {
|
||||
&& this.widgetTemplate.widget_id
|
||||
&& this.widgetTemplate.arguments
|
||||
) {
|
||||
// render the "missing permission" screen instead of the actual
|
||||
// widget when the user does not hold the widget's linked permission
|
||||
let component = this.permitted
|
||||
? (await import(this.widgetTemplate.setup.file)).default
|
||||
: MissingPermissionWidget;
|
||||
let component = (await import(this.widgetTemplate.setup.file)).default;
|
||||
this.$options.components["widget" + this.widgetTemplate.widget_id] = component;
|
||||
this.component = "widget" + this.widgetTemplate.widget_id;
|
||||
this.arguments = { ...this.widgetTemplate.arguments, ...this.config };
|
||||
this.createTmpConfig();
|
||||
this.tmpConfig = { ...this.arguments };
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
config() {
|
||||
this.arguments = { ...this.widgetTemplate?.arguments, ...this.config };
|
||||
this.createTmpConfig();
|
||||
this.tmpConfig = { ...this.arguments };
|
||||
this.$refs.config && this.$refs.config.hide();
|
||||
this.isLoading = false;
|
||||
},
|
||||
@@ -283,7 +269,7 @@ export default {
|
||||
</template>
|
||||
<!-- widget link -->
|
||||
<a
|
||||
v-if="widgetTemplate.setup.cis4link && permitted"
|
||||
v-if="widgetTemplate.setup.cis4link"
|
||||
:href="getWidgetC4Link(widgetTemplate)"
|
||||
class="col-auto ms-auto"
|
||||
:aria-label="$p.t('dashboard/widget_link')"
|
||||
@@ -345,7 +331,7 @@ export default {
|
||||
</template>
|
||||
<template v-slot:default>
|
||||
<component
|
||||
:is="hasConfig !== true ? hasConfig : component"
|
||||
:is="component"
|
||||
v-if="ready && !isLoading"
|
||||
v-model:shared-data="sharedData"
|
||||
:config="tmpConfig"
|
||||
|
||||
@@ -14,14 +14,10 @@ export default {
|
||||
callbacks: {}
|
||||
}),
|
||||
computed: {
|
||||
// filter widgets away the user has no permissions for
|
||||
availableWidgets() {
|
||||
return (this.widgets || []).filter(widget => widget.permitted !== false);
|
||||
},
|
||||
hasAnyWidgets() {
|
||||
if (!this.widgets)
|
||||
return false;
|
||||
if (!this.availableWidgets.length && !this.hiddenWidgets?.length)
|
||||
if (!this.widgets.length && !this.hiddenWidgets?.length)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
@@ -58,7 +54,7 @@ export default {
|
||||
<template v-slot:default>
|
||||
<template v-if="widgets && hiddenWidgets">
|
||||
<div
|
||||
v-if="!availableWidgets.length && !hiddenWidgets.length"
|
||||
v-if="!widgets.length && !hiddenWidgets.length"
|
||||
class="row g-2"
|
||||
>
|
||||
<div>{{ $p.t('dashboard/noWidgetsAvailable') }}</div>
|
||||
@@ -78,17 +74,16 @@ export default {
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
v-if="availableWidgets.length"
|
||||
v-if="widgets.length"
|
||||
class="row g-2"
|
||||
>
|
||||
<template
|
||||
v-for="widget in availableWidgets"
|
||||
<div
|
||||
v-for="widget in widgets"
|
||||
:key="widget.widget_id"
|
||||
class="widget-icon-container col-sm-6 col-md-4 col-lg-3 col-xl-2"
|
||||
>
|
||||
<div v-if="widget.permitted" class="widget-icon-container col-sm-6 col-md-4 col-lg-3 col-xl-2">
|
||||
<widget-icon @select="pick" :widget="widget"></widget-icon>
|
||||
</div>
|
||||
</template>
|
||||
<widget-icon @select="pick" :widget="widget"></widget-icon>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
import VerticalSplit from "../verticalsplit/verticalsplit.js";
|
||||
import WidgetNew from "./WidgetAdmin/New.js";
|
||||
import WidgetList from "./WidgetAdmin/List.js";
|
||||
import WidgetEdit from "./WidgetAdmin/Edit.js";
|
||||
|
||||
export default {
|
||||
name: 'WidgetAdmin',
|
||||
components: {
|
||||
VerticalSplit,
|
||||
WidgetNew,
|
||||
WidgetList,
|
||||
WidgetEdit,
|
||||
},
|
||||
provide() {
|
||||
return {
|
||||
imageSrc(src) {
|
||||
if (!src)
|
||||
return FHC_JS_DATA_STORAGE_OBJECT.app_root + 'skin/images/fh_technikum_wien_illustration_klein.png';
|
||||
else if (src[0] == '/')
|
||||
return FHC_JS_DATA_STORAGE_OBJECT.app_root + src.substr(1);
|
||||
return src;
|
||||
},
|
||||
};
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
originalData: null,
|
||||
currentData: null,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
unsavedProgress() {
|
||||
if (JSON.stringify(this.originalData) != JSON.stringify(this.currentData))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
select(data) {
|
||||
this.originalData = data;
|
||||
this.currentData = JSON.parse(JSON.stringify(data));
|
||||
},
|
||||
create(data) {
|
||||
data.arguments = {};
|
||||
this.currentData = JSON.parse(JSON.stringify(data));
|
||||
this.save();
|
||||
},
|
||||
remove(widget) {
|
||||
this.$refs.list.$refs.table.tabulator.deleteRow(widget.widget_id);
|
||||
this.originalData = this.currentData = null;
|
||||
},
|
||||
save() {
|
||||
this.select(this.currentData);
|
||||
this.$nextTick(() => this.$refs.list.updateOrAddDataAndSelect(this.originalData));
|
||||
},
|
||||
},
|
||||
template: /* html */`
|
||||
<div class="widgets-admin">
|
||||
<widget-new ref="new" @create="create" />
|
||||
<vertical-split class="h-100 position-relative" use-div-height>
|
||||
<template #top>
|
||||
<widget-list
|
||||
ref="list"
|
||||
:unsaved-progress="unsavedProgress"
|
||||
@new="$refs.new?.show"
|
||||
@select="select"
|
||||
/>
|
||||
</template>
|
||||
<template #bottom>
|
||||
<widget-edit
|
||||
v-if="currentData"
|
||||
ref="edit"
|
||||
:key="currentData.widget_id"
|
||||
v-model="currentData"
|
||||
:original-data="originalData"
|
||||
:unsaved-progress="unsavedProgress"
|
||||
@remove="remove"
|
||||
@saved="save"
|
||||
/>
|
||||
<div v-else class="h-100 d-flex justify-content-center align-items-center">
|
||||
{{ $p.t('dashboard/no_widget_selected') }}
|
||||
</div>
|
||||
</template>
|
||||
</vertical-split>
|
||||
</div>`
|
||||
}
|
||||
@@ -1,141 +0,0 @@
|
||||
import CoreForm from "../../Form/Form.js";
|
||||
import EditBasics from "./Edit/Basics.js";
|
||||
import EditSetup from "./Edit/Setup.js";
|
||||
import EditPermission from "./Edit/Permission.js";
|
||||
|
||||
import ApiWidget from "../../../api/factory/dashboard/widget.js";
|
||||
|
||||
export default {
|
||||
name: 'WidgetsAdminEdit',
|
||||
components: {
|
||||
CoreForm,
|
||||
EditBasics,
|
||||
EditSetup,
|
||||
EditPermission,
|
||||
},
|
||||
props: {
|
||||
originalData: Object,
|
||||
modelValue: Object,
|
||||
unsavedProgress: Boolean,
|
||||
},
|
||||
emits: [
|
||||
"saved",
|
||||
"remove",
|
||||
"update:modelValue",
|
||||
],
|
||||
data() {
|
||||
return {
|
||||
generator: null,
|
||||
saving: false,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
value: {
|
||||
get() {
|
||||
return this.modelValue;
|
||||
},
|
||||
set(modelValue) {
|
||||
this.$emit('update:modelValue', modelValue);
|
||||
},
|
||||
},
|
||||
setup: {
|
||||
get() {
|
||||
return this.modelValue.setup;
|
||||
},
|
||||
set(setup) {
|
||||
this.$emit('update:modelValue', { ...this.modelValue, setup });
|
||||
},
|
||||
},
|
||||
permission: {
|
||||
get() {
|
||||
return this.modelValue.berechtigung_kurzbz;
|
||||
},
|
||||
set(berechtigung_kurzbz) {
|
||||
this.$emit('update:modelValue', { ...this.modelValue, berechtigung_kurzbz });
|
||||
},
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
'originalData.setup.generator': {
|
||||
async handler(gen) {
|
||||
if (!gen)
|
||||
return this.generator = null;
|
||||
|
||||
gen = gen.split(':').reverse();
|
||||
let file = '../../DashboardWidget/Generators/' + gen[0] + '.js';
|
||||
if (gen.length > 1)
|
||||
file = '../../../../extensions/' + gen[1] + '/js/components' + file.substr(5);
|
||||
|
||||
this.generator = Vue.markRaw((await import(file)).default);
|
||||
},
|
||||
immediate: true,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
save() {
|
||||
this.saving = true;
|
||||
this.$refs.form.clearValidation();
|
||||
const data = JSON.parse(JSON.stringify(this.modelValue));
|
||||
this.$refs.form
|
||||
.call(ApiWidget.update(data))
|
||||
.then(() => {
|
||||
this.$emit('update:modelValue', data);
|
||||
this.$emit('saved');
|
||||
})
|
||||
.catch(this.$fhcAlert.handleSystemError)
|
||||
.finally(() => this.saving = false);
|
||||
},
|
||||
remove() {
|
||||
this.$fhcAlert.confirmDelete()
|
||||
.then(result => {
|
||||
if (!result)
|
||||
return Promise.reject({ handled: true });
|
||||
|
||||
this.saving = true;
|
||||
return this.$api
|
||||
.call(ApiWidget.remove(this.modelValue.widget_id));
|
||||
})
|
||||
.then(() => {
|
||||
this.$emit('remove', this.modelValue);
|
||||
})
|
||||
.catch(this.$fhcAlert.handleSystemError)
|
||||
.finally(() => this.saving = false);
|
||||
},
|
||||
},
|
||||
template: /* html */`
|
||||
<core-form
|
||||
v-if="modelValue"
|
||||
ref="form"
|
||||
class="widgets-admin-edit mx-2 pb-5"
|
||||
@submit.prevent="save"
|
||||
>
|
||||
<edit-basics v-model="value" :original="originalData" class="border-bottom mb-3" />
|
||||
<template v-if="generator">
|
||||
<component
|
||||
:is="generator"
|
||||
v-model="value"
|
||||
:original="originalData"
|
||||
:key="modelValue.widget_id"
|
||||
/>
|
||||
</template>
|
||||
<template v-else>
|
||||
<edit-setup v-model="setup" class="border-bottom mb-3" />
|
||||
<edit-permission v-model="permission" />
|
||||
</template>
|
||||
<div class="position-absolute mx-2 my-1 bottom-0 end-0 z-3">
|
||||
<button
|
||||
v-if="generator"
|
||||
type="button"
|
||||
:disabled="saving"
|
||||
class="btn btn-danger me-2"
|
||||
@click="remove"
|
||||
>{{ $p.t('ui/loeschen') }}</button>
|
||||
<button
|
||||
type="submit"
|
||||
:disabled="saving || !unsavedProgress"
|
||||
class="btn btn-primary"
|
||||
>{{ $p.t('ui/speichern') }}</button>
|
||||
</div>
|
||||
</core-form>
|
||||
`
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
import FormInput from "../../../Form/Input.js";
|
||||
|
||||
export default {
|
||||
name: 'WidgetsAdminEditBasics',
|
||||
components: {
|
||||
FormInput,
|
||||
},
|
||||
inject: {
|
||||
imageSrc: "imageSrc",
|
||||
},
|
||||
props: {
|
||||
original: Object,
|
||||
modelValue: Object,
|
||||
},
|
||||
emits: [
|
||||
"update:modelValue",
|
||||
],
|
||||
computed: {
|
||||
img() {
|
||||
return this.imageSrc(this.modelValue.setup?.icon);
|
||||
},
|
||||
},
|
||||
template: /* html */`
|
||||
<div class="widgets-admin-edit-basics">
|
||||
<div class="d-flex gap-3 my-2">
|
||||
<div class="col-auto">
|
||||
<img
|
||||
:src="img"
|
||||
class="object-fit-contain"
|
||||
style="height: calc(3em + 1.75rem + var(--bs-border-width) * 2 + 2 * var(--bs-body-font-size) * var(--bs-body-line-height)); width: calc(3em + 1.75rem + var(--bs-border-width) * 2 + 2 * var(--bs-body-font-size) * var(--bs-body-line-height))"
|
||||
>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="d-flex gap-3 mb-2">
|
||||
<div class="col">
|
||||
<b>{{ $p.t('dashboard/widget_kurzbz') }}: </b>
|
||||
{{ modelValue.widget_kurzbz }}
|
||||
</div>
|
||||
<div v-if="modelValue.widget_id !== undefined" class="col-auto">
|
||||
<b>{{ $p.t('dashboard/widget_id') }}: </b>
|
||||
{{ modelValue.widget_id }}
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<form-input
|
||||
:label="$p.t('global/beschreibung') + ':'"
|
||||
type="textarea"
|
||||
v-model="modelValue.beschreibung"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
import FormInput from "../../../Form/Input.js";
|
||||
|
||||
export default {
|
||||
name: 'WidgetsAdminEditPermission',
|
||||
components: {
|
||||
FormInput,
|
||||
},
|
||||
props: {
|
||||
modelValue: String,
|
||||
disabled: Boolean,
|
||||
},
|
||||
emits: [
|
||||
"update:modelValue"
|
||||
],
|
||||
computed: {
|
||||
value: {
|
||||
get() {
|
||||
return this.modelValue;
|
||||
},
|
||||
set(modelValue) {
|
||||
this.$emit('update:modelValue', modelValue);
|
||||
},
|
||||
},
|
||||
},
|
||||
template: /* html */`
|
||||
<div class="widgets-admin-edit-permission">
|
||||
<form-input
|
||||
v-model="value"
|
||||
type="text"
|
||||
:label="$p.t('global/permission')"
|
||||
:disabled="disabled"
|
||||
/>
|
||||
</div>
|
||||
`
|
||||
}
|
||||
@@ -1,101 +0,0 @@
|
||||
import ReportAggregator from './Aggregators/Aggregator.js';
|
||||
|
||||
let counter = 0;
|
||||
|
||||
export default {
|
||||
name: "WidgetsGenteratorReportAggregators",
|
||||
components: {
|
||||
ReportAggregator,
|
||||
},
|
||||
provide() {
|
||||
return {
|
||||
defaultAggregatorIndex: Vue.computed({
|
||||
get: () => this.defaultAggregatorIndex,
|
||||
set: v => {
|
||||
const curr = this.modelValue.find(agg => agg.default);
|
||||
if (curr)
|
||||
delete curr.default;
|
||||
this.modelValue[v].default = true;
|
||||
},
|
||||
}),
|
||||
};
|
||||
},
|
||||
props: {
|
||||
modelValue: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
},
|
||||
emits: [
|
||||
"update:modelValue",
|
||||
],
|
||||
data() {
|
||||
return {
|
||||
myId: 0,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
defaultAggregatorIndex() {
|
||||
return this.modelValue.findIndex(agg => agg.default);
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
addAggregator() {
|
||||
this.modelValue.push({});
|
||||
},
|
||||
removeAggregator(index) {
|
||||
this.$emit('update:modelValue', this.modelValue.toSpliced(index, 1));
|
||||
},
|
||||
getHeaderStyle(isDefault) {
|
||||
if (!isDefault)
|
||||
return undefined;
|
||||
return {
|
||||
'--bs-accordion-btn-bg': 'var(--bs-success-bg-subtle)',
|
||||
'--bs-accordion-btn-color': 'var(--bs-success-text-emphasis)',
|
||||
'--bs-accordion-active-bg': 'var(--bs-success)',
|
||||
'--bs-accordion-active-color': '#fff',
|
||||
};
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.myId = counter++;
|
||||
},
|
||||
template: /*html*/ `
|
||||
<div class="widgets-report-config-aggregators">
|
||||
<label class="form-label">{{ $p.t('dashboard/widget_report_kpi_aggregators') }}</label>
|
||||
<div class="accordion mb-2">
|
||||
<div
|
||||
v-for="(agg, i) in modelValue"
|
||||
:key="i"
|
||||
class="accordion-item"
|
||||
>
|
||||
<h3
|
||||
class="accordion-header"
|
||||
:style="getHeaderStyle(defaultAggregatorIndex == i)"
|
||||
>
|
||||
<button
|
||||
type="button"
|
||||
class="accordion-button collapsed"
|
||||
data-bs-toggle="collapse"
|
||||
:data-bs-target="'#aggregator_' + myId + '_' + i"
|
||||
aria-expanded="false"
|
||||
:aria-controls="'aggregator_' + myId + '_' + i"
|
||||
>
|
||||
<span v-if="agg.label">{{ agg.label }}</span>
|
||||
<i v-else>{{ $p.t('ui/neu') }}</i>
|
||||
</button>
|
||||
</h3>
|
||||
<div :id="'aggregator_' + myId + '_' + i" class="accordion-collapse collapse">
|
||||
<report-aggregator v-model="agg" class="accordion-body" :index="i" @remove="removeAggregator" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<button type="button" class="btn btn-primary" @click="addAggregator">
|
||||
<i class="fa fa-plus" />
|
||||
{{ $p.t('dashboard/widget_report_kpi_aggregator') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
};
|
||||
@@ -1,76 +0,0 @@
|
||||
import FormInput from '../../../../../Form/Input.js';
|
||||
|
||||
export default {
|
||||
name: "WidgetsGenteratorReportAggregatorsAggregator",
|
||||
components: {
|
||||
FormInput,
|
||||
},
|
||||
inject: {
|
||||
defaultAggregatorIndex: 'defaultAggregatorIndex',
|
||||
},
|
||||
props: {
|
||||
modelValue: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
index: {
|
||||
type: Number,
|
||||
required: true
|
||||
},
|
||||
},
|
||||
emits: [
|
||||
"update:modelValue",
|
||||
"remove",
|
||||
],
|
||||
methods: {
|
||||
remove() {
|
||||
this.$fhcAlert.confirmDelete()
|
||||
.then(result => {
|
||||
if (result)
|
||||
this.$emit('remove', this.index);
|
||||
})
|
||||
.catch(this.$fhcAlert.handleSystemError);
|
||||
},
|
||||
},
|
||||
template: /*html*/ `
|
||||
<div class="widgets-report-config-aggregators-aggregator">
|
||||
<form-input
|
||||
v-model="modelValue.label"
|
||||
type="text"
|
||||
:label="$p.t('global/label')"
|
||||
class="mb-3"
|
||||
/>
|
||||
<form-input
|
||||
v-model="modelValue.type"
|
||||
type="select"
|
||||
:label="$p.t('global/typ')"
|
||||
class="mb-3"
|
||||
>
|
||||
<option value="sum">{{ $p.t('dashboard/widget_report_kpi_aggregator_type_sum') }}</option>
|
||||
<option value="count">{{ $p.t('dashboard/widget_report_kpi_aggregator_type_count') }}</option>
|
||||
</form-input>
|
||||
<form-input
|
||||
v-if="modelValue.type == 'sum'"
|
||||
v-model="modelValue.fields"
|
||||
type="text"
|
||||
:label="$p.t('dashboard/widget_report_kpi_aggregator_fields')"
|
||||
:placeholder="$p.t('dashboard/widget_report_kpi_aggregator_fields_placeholder')"
|
||||
class="mb-3"
|
||||
/>
|
||||
<div class="d-flex justify-content-between align-items-baseline">
|
||||
<form-input
|
||||
v-model="defaultAggregatorIndex"
|
||||
type="radio"
|
||||
name="aggregatordefault"
|
||||
container-class="form-switch"
|
||||
:label="$p.t('ui/default')"
|
||||
:value="index"
|
||||
/>
|
||||
<button type="button" class="btn btn-danger" @click="remove">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
{{ $p.t('ui/loeschen') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
};
|
||||
@@ -1,56 +0,0 @@
|
||||
import FormInput from '../../../../Form/Input.js';
|
||||
|
||||
export default {
|
||||
name: "WidgetsGenteratorReportAxis",
|
||||
components: {
|
||||
FormInput,
|
||||
},
|
||||
props: {
|
||||
modelValue: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
},
|
||||
emits: [
|
||||
"update:modelValue",
|
||||
],
|
||||
computed: {
|
||||
field: {
|
||||
get() {
|
||||
return this.modelValue?.field || '';
|
||||
},
|
||||
set(field) {
|
||||
this.$emit('update:modelValue', { ...this.modelValue, field });
|
||||
}
|
||||
},
|
||||
title: {
|
||||
get() {
|
||||
return this.modelValue?.title || '';
|
||||
},
|
||||
set(title) {
|
||||
this.$emit('update:modelValue', { ...this.modelValue, title });
|
||||
}
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
addChart() {
|
||||
this.modelValue.push({});
|
||||
},
|
||||
removeChart(index) {
|
||||
this.$emit('update:modelValue', this.modelValue.toSpliced(index, 1));
|
||||
},
|
||||
},
|
||||
template: /*html*/ `
|
||||
<div class="widgets-report-config-axis">
|
||||
<label class="form-label">{{ $p.t('dashboard/widget_report_graph_axis') }}</label>
|
||||
<form-input
|
||||
v-model="field"
|
||||
:label="$p.t('dashboard/widget_report_graph_field')"
|
||||
/>
|
||||
<form-input
|
||||
v-model="title"
|
||||
:label="$p.t('global/label')"
|
||||
/>
|
||||
</div>
|
||||
`,
|
||||
};
|
||||
@@ -1,71 +0,0 @@
|
||||
import ReportChart from './Charts/Chart.js';
|
||||
|
||||
let counter = 0;
|
||||
|
||||
export default {
|
||||
name: "WidgetsGenteratorReportCharts",
|
||||
components: {
|
||||
ReportChart,
|
||||
},
|
||||
props: {
|
||||
modelValue: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
},
|
||||
emits: [
|
||||
"update:modelValue",
|
||||
],
|
||||
data() {
|
||||
return {
|
||||
myId: 0,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
addChart() {
|
||||
this.modelValue.push({});
|
||||
},
|
||||
removeChart(index) {
|
||||
this.$emit('update:modelValue', this.modelValue.toSpliced(index, 1));
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.myId = counter++;
|
||||
},
|
||||
template: /*html*/ `
|
||||
<div class="widgets-report-config-charts">
|
||||
<label class="form-label">{{ $p.t('dashboard/widget_report_graph_charts') }}</label>
|
||||
<div class="accordion mb-2">
|
||||
<div
|
||||
v-for="(opt, i) in modelValue"
|
||||
:key="i"
|
||||
class="accordion-item"
|
||||
>
|
||||
<h3 class="accordion-header">
|
||||
<button
|
||||
type="button"
|
||||
class="accordion-button collapsed"
|
||||
data-bs-toggle="collapse"
|
||||
:data-bs-target="'#chart_' + myId + '_' + i"
|
||||
aria-expanded="false"
|
||||
:aria-controls="'chart_' + myId + '_' + i"
|
||||
>
|
||||
<span v-if="opt.label">{{ opt.label }}</span>
|
||||
<span v-else-if="opt.field">{{ opt.field }}</span>
|
||||
<i v-else>{{ $p.t('ui/neu') }}</i>
|
||||
</button>
|
||||
</h3>
|
||||
<div :id="'chart_' + myId + '_' + i" class="accordion-collapse collapse">
|
||||
<report-chart v-model="modelValue[i]" class="accordion-body" @remove="removeChart(i)" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<button type="button" class="btn btn-primary" @click="addChart">
|
||||
<i class="fa fa-plus" />
|
||||
{{ $p.t('dashboard/widget_report_graph_chart') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
};
|
||||
@@ -1,154 +0,0 @@
|
||||
import FormInput from '../../../../../Form/Input.js';
|
||||
|
||||
export default {
|
||||
name: "WidgetsGenteratorReportChartsChart",
|
||||
components: {
|
||||
FormInput,
|
||||
PvDropdown: primevue.dropdown,
|
||||
PvColorpicker: primevue.colorpicker, // NOTE(chris): colorpicker must be loaded in view
|
||||
},
|
||||
props: {
|
||||
modelValue: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
},
|
||||
emits: [
|
||||
"update:modelValue",
|
||||
"remove",
|
||||
],
|
||||
data() {
|
||||
return {
|
||||
typeOptions: [
|
||||
{
|
||||
value: 'bar',
|
||||
title: this.$p.t('dashboard/widget_report_graph_chart_type_bar'),
|
||||
optionHtml: /* html */`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 10"><rect x="0" y="5" width="8" height="5" fill="black"/><rect x="11" y="2" width="8" height="8" fill="black"/><rect x="22" y="6" width="8" height="4" fill="black"/></svg>`,
|
||||
},
|
||||
{
|
||||
value: 'line',
|
||||
title: this.$p.t('dashboard/widget_report_graph_chart_type_line'),
|
||||
optionHtml: /* html */`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 10"><path d="M0,5h30" stroke="black"/></svg>`,
|
||||
},
|
||||
{
|
||||
value: 'dashed',
|
||||
title: this.$p.t('dashboard/widget_report_graph_chart_type_dashed'),
|
||||
optionHtml: /* html */`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 10"><path d="M0,5h30" stroke="black" stroke-dasharray="4 4"/></svg>`,
|
||||
},
|
||||
{
|
||||
value: 'dotted',
|
||||
title: this.$p.t('dashboard/widget_report_graph_chart_type_dotted'),
|
||||
optionHtml: /* html */`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 10"><path d="M0,5h30" stroke="black" stroke-dasharray="0 4" stroke-linecap="round"/></svg>`,
|
||||
},
|
||||
],
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
field: {
|
||||
get() {
|
||||
return this.modelValue.field || '';
|
||||
},
|
||||
set(field) {
|
||||
this.$emit('update:modelValue', { ...this.modelValue, field });
|
||||
}
|
||||
},
|
||||
label: {
|
||||
get() {
|
||||
return this.modelValue.label || '';
|
||||
},
|
||||
set(label) {
|
||||
this.$emit('update:modelValue', { ...this.modelValue, label });
|
||||
}
|
||||
},
|
||||
color: {
|
||||
get() {
|
||||
return this.modelValue.color || '';
|
||||
},
|
||||
set(color) {
|
||||
this.$emit('update:modelValue', { ...this.modelValue, color });
|
||||
}
|
||||
},
|
||||
text: {
|
||||
get() {
|
||||
return this.modelValue.text || '';
|
||||
},
|
||||
set(text) {
|
||||
this.$emit('update:modelValue', { ...this.modelValue, text });
|
||||
}
|
||||
},
|
||||
type: {
|
||||
get() {
|
||||
if (!this.modelValue.type)
|
||||
return undefined;
|
||||
return this.typeOptions.find(opt => opt.value == this.modelValue.type);
|
||||
},
|
||||
set({ value: type }) {
|
||||
this.$emit('update:modelValue', { ...this.modelValue, type });
|
||||
}
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
remove() {
|
||||
this.$fhcAlert.confirmDelete()
|
||||
.then(result => {
|
||||
if (result)
|
||||
this.$emit('remove');
|
||||
})
|
||||
.catch(this.$fhcAlert.handleSystemError);
|
||||
},
|
||||
},
|
||||
template: /*html*/ `
|
||||
<div class="widgets-report-config-charts-chart">
|
||||
<form-input
|
||||
v-model="field"
|
||||
:label="$p.t('dashboard/widget_report_graph_field')"
|
||||
class="mb-3"
|
||||
/>
|
||||
<form-input
|
||||
v-model="label"
|
||||
:label="$p.t('global/label')"
|
||||
class="mb-3"
|
||||
/>
|
||||
<label class="form-label">{{ $p.t('dashboard/widget_report_graph_chart_layout') }}</label>
|
||||
<div class="input-group mb-3">
|
||||
<span class="input-group-text">{{ $p.t('global/typ') }}</span>
|
||||
<pv-dropdown
|
||||
v-model="type"
|
||||
:options="typeOptions"
|
||||
>
|
||||
<template #value="{ value, placeholder }">
|
||||
<div
|
||||
v-html="value ? value.optionHtml : placeholder"
|
||||
style="width:3rem"
|
||||
></div>
|
||||
</template>
|
||||
<template #option="{ option }">
|
||||
<div v-html="option.optionHtml"></div>
|
||||
</template>
|
||||
</pv-dropdown>
|
||||
<span
|
||||
class="input-group-text"
|
||||
:title="$p.t('dashboard/widget_report_graph_chart_bg_color')"
|
||||
>
|
||||
<i class="fa-solid fa-fill"></i>
|
||||
</span>
|
||||
<pv-colorpicker v-model="color" class="input-group-text"/>
|
||||
<form-input v-model="color" input-group></form-input>
|
||||
<span
|
||||
class="input-group-text"
|
||||
:title="$p.t('dashboard/widget_report_graph_chart_text_color')"
|
||||
>
|
||||
<i class="fa-solid fa-font"></i>
|
||||
</span>
|
||||
<pv-colorpicker v-model="text" class="input-group-text"/>
|
||||
<form-input v-model="text" input-group></form-input>
|
||||
</div>
|
||||
<div class="d-flex justify-content-end align-items-baseline">
|
||||
<button type="button" class="btn btn-danger" @click="remove">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
{{ $p.t('ui/loeschen') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
};
|
||||
@@ -1,89 +0,0 @@
|
||||
import FormInput from '../../../../Form/Input.js';
|
||||
import PickerOption from './Picker/Option.js';
|
||||
|
||||
import ApiReport from '../../../../../api/factory/report.js';
|
||||
|
||||
export default {
|
||||
name: "WidgetsGenteratorReportPicker",
|
||||
components: {
|
||||
FormInput,
|
||||
PickerOption,
|
||||
},
|
||||
props: {
|
||||
modelValue: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
},
|
||||
emits: [
|
||||
"update:modelValue",
|
||||
],
|
||||
data() {
|
||||
return {
|
||||
allItems: null,
|
||||
filteredItems: [],
|
||||
selectedValue: '',
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
initSelectedValue() {
|
||||
if (this.modelValue) {
|
||||
const res = this.allItems.find(item => item.statistik_kurzbz == this.modelValue);
|
||||
|
||||
if (res)
|
||||
return this.selectedValue = res;
|
||||
|
||||
this.selectedValue = this.modelValue;
|
||||
} else {
|
||||
this.selectedValue = '';
|
||||
}
|
||||
},
|
||||
searchItems(event) {
|
||||
if (this.allItems) {
|
||||
if (!event.query) {
|
||||
this.filteredItems = this.allItems;
|
||||
} else {
|
||||
const regex = new RegExp(event.query, 'i');
|
||||
this.filteredItems = this.allItems.filter(t => regex.test(t.bezeichnung) || regex.test(t.statistik_kurzbz) || regex.test(t.gruppe));
|
||||
}
|
||||
}
|
||||
},
|
||||
updateSelectedItem(v) {
|
||||
if (v?.statistik_kurzbz) {
|
||||
this.$emit('update:modelValue', v.statistik_kurzbz);
|
||||
}
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.$api
|
||||
.call(ApiReport.list())
|
||||
.then(result => {
|
||||
this.allItems = result.data;
|
||||
this.initSelectedValue();
|
||||
})
|
||||
.catch(this.$fhcAlert.handleSystemErrors);
|
||||
},
|
||||
template: /*html*/ `
|
||||
<div class="widgets-report-config-picker">
|
||||
<form-input
|
||||
type="autocomplete"
|
||||
:label="$p.t('dashboard/widget_report_statistik')"
|
||||
v-model="selectedValue"
|
||||
:suggestions="filteredItems"
|
||||
field="statistik_kurzbz"
|
||||
dropdown-mode="blank"
|
||||
dropdown
|
||||
force-selection
|
||||
@complete="searchItems"
|
||||
@update:modelValue="updateSelectedItem"
|
||||
>
|
||||
<template #option="{ option }">
|
||||
<picker-option :option="option" />
|
||||
</template>
|
||||
</form-input>
|
||||
<div v-if="selectedValue?.statistik_kurzbz" class="text-muted">
|
||||
{{ selectedValue.bezeichnung || selectedValue.statistik_kurzbz }}
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
};
|
||||
@@ -1,18 +0,0 @@
|
||||
export default {
|
||||
name: "WidgetsGenteratorReportPickerOption",
|
||||
props: {
|
||||
option: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
},
|
||||
template: /*html*/ `
|
||||
<div class="widgets-report-config-picker-option">
|
||||
<span>{{ option.bezeichnung || option.statistik_kurzbz }} </span>
|
||||
<small class="text-muted">
|
||||
[<b v-if="option.gruppe" class="text-muted">{{ option.gruppe }}: </b>
|
||||
{{ option.statistik_kurzbz }}]
|
||||
</small>
|
||||
</div>
|
||||
`,
|
||||
};
|
||||
@@ -1,33 +0,0 @@
|
||||
import ReportVar from './Vars/Var.js';
|
||||
|
||||
export default {
|
||||
name: "WidgetsGenteratorReportVars",
|
||||
components: {
|
||||
ReportVar,
|
||||
},
|
||||
props: {
|
||||
modelValue: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
details: {
|
||||
type: Array,
|
||||
required: true
|
||||
},
|
||||
},
|
||||
emits: [
|
||||
"update:modelValue",
|
||||
],
|
||||
template: /*html*/ `
|
||||
<div class="widgets-report-config-vars">
|
||||
<label v-if="details.length" class="form-label">{{ $p.t('dashboard/widget_report_vars') }}</label>
|
||||
<template v-for="detail in details" :key="detail.kurzbz">
|
||||
<report-var
|
||||
:model-value="modelValue[detail.kurzbz]"
|
||||
:detail="detail"
|
||||
@update:model-value="$emit('update:modelValue', { ...modelValue, [detail.kurzbz]: $event })"
|
||||
/>
|
||||
</template>
|
||||
</div>
|
||||
`,
|
||||
};
|
||||
@@ -1,37 +0,0 @@
|
||||
import FormInput from '../../../../../../Form/Input.js';
|
||||
|
||||
export default {
|
||||
name: "WidgetsGenteratorReportVarsVarCalcDate",
|
||||
components: {
|
||||
FormInput,
|
||||
},
|
||||
props: {
|
||||
modelValue: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
},
|
||||
emits: [
|
||||
"update:modelValue",
|
||||
],
|
||||
computed: {
|
||||
modelValueCmp: {
|
||||
get() {
|
||||
return this.modelValue;
|
||||
},
|
||||
set(v) {
|
||||
this.$emit('update:modelValue', v);
|
||||
},
|
||||
},
|
||||
},
|
||||
template: /*html*/ `
|
||||
<form-input
|
||||
v-model="modelValueCmp"
|
||||
class="widgets-report-config-vars-var-calc-date"
|
||||
type="text"
|
||||
input-group
|
||||
:placeholder="$p.t('dashboard/widget_report_vars_calc_date_placeholder')"
|
||||
>
|
||||
</form-input>
|
||||
`,
|
||||
};
|
||||
@@ -1,37 +0,0 @@
|
||||
import FormInput from '../../../../../../Form/Input.js';
|
||||
|
||||
export default {
|
||||
name: "WidgetsGenteratorReportVarsVarCalcRight",
|
||||
components: {
|
||||
FormInput,
|
||||
},
|
||||
props: {
|
||||
modelValue: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
},
|
||||
emits: [
|
||||
"update:modelValue",
|
||||
],
|
||||
computed: {
|
||||
modelValueCmp: {
|
||||
get() {
|
||||
return this.modelValue;
|
||||
},
|
||||
set(v) {
|
||||
this.$emit('update:modelValue', v);
|
||||
},
|
||||
},
|
||||
},
|
||||
template: /*html*/ `
|
||||
<form-input
|
||||
v-model="modelValueCmp"
|
||||
class="widgets-report-config-vars-var-calc-right"
|
||||
type="text"
|
||||
input-group
|
||||
:placeholder="$p.t('dashboard/widget_report_vars_calc_right_placeholder')"
|
||||
>
|
||||
</form-input>
|
||||
`,
|
||||
};
|
||||
@@ -1,163 +0,0 @@
|
||||
import FormInput from '../../../../../Form/Input.js';
|
||||
|
||||
import { useCalculatedVars } from '../../../../../../composables/DashboardWidget/Report/CalculatedVars.js';
|
||||
|
||||
import { capitalize } from '../../../../../../helpers/StringHelpers.js';
|
||||
|
||||
import ApiReport from '../../../../../../api/factory/report.js';
|
||||
|
||||
export default {
|
||||
name: "WidgetsGenteratorReportVarsVar",
|
||||
components: {
|
||||
FormInput,
|
||||
},
|
||||
props: {
|
||||
modelValue: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
detail: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
noType: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
},
|
||||
emits: [
|
||||
"update:modelValue",
|
||||
],
|
||||
computed: {
|
||||
fixedInputAttrs() {
|
||||
let attrs = {
|
||||
type: this.detail.type,
|
||||
};
|
||||
|
||||
if (this.detail.placeholder)
|
||||
attrs.placeholder = this.detail.placeholder;
|
||||
|
||||
if (this.detail.multiple)
|
||||
attrs.multiple = this.detail.multiple;
|
||||
|
||||
return attrs;
|
||||
},
|
||||
saveValue() {
|
||||
if (this.fixedInputAttrs.multiple)
|
||||
if (this.modelValue.value === undefined)
|
||||
return [];
|
||||
|
||||
return this.modelValue.value;
|
||||
},
|
||||
extendedType() {
|
||||
if (!this.modelValue?.type)
|
||||
return [];
|
||||
return this.modelValue.type.split(':');
|
||||
},
|
||||
calcTypeExtra: {
|
||||
get() {
|
||||
if (this.extendedType.length > 1)
|
||||
return this.extendedType[2];
|
||||
return undefined;
|
||||
},
|
||||
set(v) {
|
||||
this.setType([this.extendedType[0], this.extendedType[1], v].join(':'));
|
||||
},
|
||||
},
|
||||
calcComponent() {
|
||||
if (this.noType)
|
||||
return null;
|
||||
if (this.extendedType.length < 2)
|
||||
return null;
|
||||
if (this.extendedType[0] != 'calc')
|
||||
return null;
|
||||
if (!this.calcComponents[this.extendedType[1]])
|
||||
return null;
|
||||
|
||||
return this.calcComponents[this.extendedType[1]];
|
||||
},
|
||||
options() {
|
||||
if (this.extendedType.length < 1 && !this.noType)
|
||||
return [];
|
||||
if (this.extendedType[0] == 'calc' && !this.noType)
|
||||
return this.calcOptions;
|
||||
if (this.detail.type == 'select')
|
||||
return this.detail.options;
|
||||
return [];
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
getComponent(string) {
|
||||
return 'Report' + capitalize(string);
|
||||
},
|
||||
setType(type) {
|
||||
if (type == 'user' || type.substr(0, 5) == 'calc:') {
|
||||
this.$emit('update:modelValue', { type, detail: this.detail });
|
||||
} else {
|
||||
this.$emit('update:modelValue', { type });
|
||||
}
|
||||
},
|
||||
setSubType(subtype) {
|
||||
let type = 'calc:' + subtype;
|
||||
this.$emit('update:modelValue', { type, detail: this.detail });
|
||||
},
|
||||
setValue(value) {
|
||||
this.modelValue.value = value;
|
||||
this.$emit('update:modelValue', this.modelValue);
|
||||
},
|
||||
},
|
||||
setup() {
|
||||
const { components, options } = useCalculatedVars();
|
||||
return {
|
||||
calcComponents: components,
|
||||
calcOptions: options,
|
||||
};
|
||||
},
|
||||
created() {
|
||||
if (!this.modelValue?.type) {
|
||||
this.setType('fix');
|
||||
}
|
||||
},
|
||||
template: /*html*/ `
|
||||
<div class="widgets-report-config-vars-var input-group">
|
||||
<span class="input-group-text">
|
||||
{{ detail.title }}
|
||||
</span>
|
||||
<form-input
|
||||
v-if="!noType"
|
||||
type="select"
|
||||
:modelValue="extendedType[0]"
|
||||
container-class="d-flex"
|
||||
input-group
|
||||
@update:modelValue="setType"
|
||||
>
|
||||
<option value="fix">{{ $p.t('dashboard/widget_report_vars_var_type_fix') }}</option>
|
||||
<option value="calc">{{ $p.t('dashboard/widget_report_vars_var_type_calc') }}</option>
|
||||
<option value="user">{{ $p.t('dashboard/widget_report_vars_var_type_user') }}</option>
|
||||
</form-input>
|
||||
<form-input
|
||||
v-if="modelValue.type == 'fix' || noType"
|
||||
:modelValue="saveValue"
|
||||
v-bind="fixedInputAttrs"
|
||||
input-group
|
||||
@update:modelValue="setValue"
|
||||
>
|
||||
<option v-for="option in options" :key="option.value" :value="option.value">
|
||||
{{ option.label }}
|
||||
</option>
|
||||
</form-input>
|
||||
<form-input
|
||||
v-if="extendedType[0] == 'calc' && !noType"
|
||||
:modelValue="extendedType[1]"
|
||||
type="select"
|
||||
input-group
|
||||
@update:modelValue="setSubType"
|
||||
>
|
||||
<option v-for="option in options" :key="option.value" :value="option.value">
|
||||
{{ option.label }}
|
||||
</option>
|
||||
</form-input>
|
||||
<component v-if="calcComponent" :is="calcComponent" v-model="calcTypeExtra" />
|
||||
</div>
|
||||
`,
|
||||
};
|
||||
@@ -1,47 +0,0 @@
|
||||
import FormInput from "../../../Form/Input.js";
|
||||
import EditSize from "./Size.js";
|
||||
|
||||
export default {
|
||||
name: 'WidgetsAdminEditSetup',
|
||||
components: {
|
||||
FormInput,
|
||||
EditSize,
|
||||
},
|
||||
props: {
|
||||
modelValue: Object,
|
||||
editName: Boolean,
|
||||
editSize: Boolean,
|
||||
editHideFooter: Boolean,
|
||||
},
|
||||
emits: [
|
||||
"update:modelValue"
|
||||
],
|
||||
template: /* html */`
|
||||
<div class="widgets-admin-edit-setup">
|
||||
<form-input
|
||||
v-model="modelValue.name"
|
||||
type="text"
|
||||
container-class="mb-3"
|
||||
:label="$p.t('global/name')"
|
||||
:disabled="!editName"
|
||||
/>
|
||||
<label class="form-label">{{ $p.t('dashboard/widget_setup_size') }}</label>
|
||||
<div class="d-flex gap-3 mb-3">
|
||||
<edit-size v-model="modelValue.width" :disabled="!editSize">
|
||||
{{ $p.t('dashboard/widget_setup_width') }}
|
||||
</edit-size>
|
||||
<edit-size v-model="modelValue.height" :disabled="!editSize">
|
||||
{{ $p.t('dashboard/widget_setup_height') }}
|
||||
</edit-size>
|
||||
</div>
|
||||
<form-input
|
||||
v-model="modelValue.hideFooter"
|
||||
type="checkbox"
|
||||
container-class="form-switch mb-3"
|
||||
role="switch"
|
||||
:label="$p.t('dashboard/widget_setup_hidefooter')"
|
||||
:disabled="!editHideFooter"
|
||||
/>
|
||||
</div>
|
||||
`
|
||||
}
|
||||
@@ -1,91 +0,0 @@
|
||||
import FormInput from "../../../Form/Input.js";
|
||||
|
||||
export default {
|
||||
name: 'WidgetsAdminEditSize',
|
||||
components: {
|
||||
FormInput,
|
||||
},
|
||||
props: {
|
||||
modelValue: [ Object, Number ],
|
||||
disabled: Boolean,
|
||||
},
|
||||
emits: [
|
||||
"update:modelValue"
|
||||
],
|
||||
computed: {
|
||||
min: {
|
||||
get() {
|
||||
if (Number.isInteger(this.modelValue))
|
||||
return this.modelValue;
|
||||
if (this.modelValue?.min === undefined)
|
||||
return '';
|
||||
return this.modelValue.min;
|
||||
},
|
||||
set(v) {
|
||||
if (v === '') {
|
||||
if (this.max === '')
|
||||
this.$emit('update:modelValue', undefined);
|
||||
else
|
||||
this.$emit('update:modelValue', { max: this.max });
|
||||
} else if (v == this.max) {
|
||||
this.$emit('update:modelValue', v);
|
||||
} else {
|
||||
if (this.max === '')
|
||||
this.$emit('update:modelValue', { min: v });
|
||||
else
|
||||
this.$emit('update:modelValue', {
|
||||
min: v,
|
||||
max: this.max,
|
||||
});
|
||||
}
|
||||
},
|
||||
},
|
||||
max: {
|
||||
get() {
|
||||
if (Number.isInteger(this.modelValue))
|
||||
return this.modelValue;
|
||||
if (this.modelValue?.max === undefined)
|
||||
return '';
|
||||
return this.modelValue.max;
|
||||
},
|
||||
set(v) {
|
||||
if (v === '') {
|
||||
if (this.min === '')
|
||||
this.$emit('update:modelValue', undefined);
|
||||
else
|
||||
this.$emit('update:modelValue', { min: this.min });
|
||||
} else if (v == this.min) {
|
||||
this.$emit('update:modelValue', v);
|
||||
} else {
|
||||
if (this.min === '')
|
||||
this.$emit('update:modelValue', { max: v });
|
||||
else
|
||||
this.$emit('update:modelValue', {
|
||||
min: this.min,
|
||||
max: v,
|
||||
});
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
template: /* html */`
|
||||
<div class="widgets-admin-edit-size input-group">
|
||||
<span class="input-group-text"><slot /></span>
|
||||
<form-input
|
||||
v-model="min"
|
||||
type="text"
|
||||
placeholder="1"
|
||||
:disabled="disabled"
|
||||
input-group
|
||||
/>
|
||||
<span class="input-group-text">-</span>
|
||||
<form-input
|
||||
v-model="max"
|
||||
type="text"
|
||||
placeholder="∞"
|
||||
:disabled="disabled"
|
||||
input-group
|
||||
/>
|
||||
</div>
|
||||
`
|
||||
}
|
||||
@@ -1,173 +0,0 @@
|
||||
import { CoreFilterCmpt } from "../../filter/Filter.js";
|
||||
import BsConfirm from "../../Bootstrap/Confirm.js";
|
||||
|
||||
import ApiDashboardWidget from "../../../api/factory/dashboard/widget.js";
|
||||
|
||||
export default {
|
||||
name: 'WidgetsAdminList',
|
||||
components: {
|
||||
CoreFilterCmpt,
|
||||
},
|
||||
inject: {
|
||||
imageSrc: "imageSrc",
|
||||
},
|
||||
props: {
|
||||
unsavedProgress: Boolean,
|
||||
},
|
||||
emit: [
|
||||
"new",
|
||||
"select",
|
||||
],
|
||||
data() {
|
||||
return {
|
||||
tabulatorOptions: {
|
||||
ajaxURL: 'dummy',
|
||||
ajaxRequestFunc: () => this.$api.call(ApiDashboardWidget.listAllOriginal()),
|
||||
ajaxResponse: (url, params, response) => response?.data,
|
||||
columns: [
|
||||
{
|
||||
field: 'setup.icon',
|
||||
title: 'Icon',
|
||||
titlePhrase: 'dashboard/widget_icon',
|
||||
formatter: (cell, formatterParams) => {
|
||||
const img = document.createElement('img');
|
||||
img.src = this.imageSrc(cell.getData().setup?.icon);
|
||||
|
||||
if (formatterParams?.height)
|
||||
img.style.height = formatterParams.height;
|
||||
|
||||
return img;
|
||||
},
|
||||
formatterParams: {
|
||||
height: '1.5em',
|
||||
},
|
||||
hozAlign: 'center'
|
||||
},
|
||||
{
|
||||
field: 'setup.name',
|
||||
title: 'Name',
|
||||
titlePhrase: 'global/name',
|
||||
},
|
||||
{
|
||||
field: 'widget_kurzbz',
|
||||
title: 'Kurzbz',
|
||||
titlePhrase: 'dashboard/widget_kurzbz',
|
||||
},
|
||||
{
|
||||
field: 'berechtigung_kurzbz',
|
||||
title: 'Berechtigung',
|
||||
titlePhrase: 'global/permission',
|
||||
},
|
||||
],
|
||||
locale: true,
|
||||
selectableRows: 1,
|
||||
index: 'widget_id',
|
||||
persistenceID: 'widgets-admin-list',
|
||||
height: '100%',
|
||||
selectableRowsCheck: this.selectableCheck,
|
||||
},
|
||||
tabulatorEvents: [
|
||||
{
|
||||
event: 'rowSelected',
|
||||
handler: this.selectWidget,
|
||||
},
|
||||
{
|
||||
event: 'dataLoading',
|
||||
handler: () => {
|
||||
// save current
|
||||
const selected = this.$refs.table.tabulator.getSelectedRows();
|
||||
if (selected.length)
|
||||
this.lastSelected = selected[0].getData().widget_id;
|
||||
},
|
||||
},
|
||||
{
|
||||
event: 'dataProcessing',
|
||||
handler: () => {
|
||||
this.adding = true;
|
||||
},
|
||||
},
|
||||
{
|
||||
event: 'dataProcessed',
|
||||
handler: () => {
|
||||
// reselect current
|
||||
this.adding = false;
|
||||
if (this.lastSelected !== null) {
|
||||
this.$refs.table.tabulator.selectRow(this.lastSelected);
|
||||
this.lastSelected = null;
|
||||
}
|
||||
},
|
||||
},
|
||||
],
|
||||
lastSelected: null,
|
||||
adding: false,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
selectRow(row) {
|
||||
// deselect
|
||||
row.getTable().getSelectedRows().forEach(r => r.deselect());
|
||||
// select
|
||||
row.select();
|
||||
},
|
||||
updateOrAddDataAndSelect(data) {
|
||||
this.$refs.table.tabulator
|
||||
.updateOrAddData([ data ])
|
||||
.then(res => this.selectRow(res[0]))
|
||||
.catch(this.$fhcAlert.handleSystemError);
|
||||
|
||||
},
|
||||
selectableCheck(row) {
|
||||
if (this.adding)
|
||||
return true;
|
||||
if (!this.unsavedProgress)
|
||||
return true;
|
||||
|
||||
BsConfirm
|
||||
.popup(this.$p.t('dashboard/confirm_unsaved_progress'))
|
||||
.then(() => this.selectRow(row))
|
||||
.catch(() => {});
|
||||
|
||||
return false;
|
||||
},
|
||||
newWidget() {
|
||||
if (this.unsavedProgress) {
|
||||
BsConfirm
|
||||
.popup(this.$p.t('dashboard/confirm_unsaved_progress'))
|
||||
.then(() => this.$emit('new'))
|
||||
.catch(() => {});
|
||||
} else {
|
||||
this.$emit('new');
|
||||
}
|
||||
},
|
||||
selectWidget(data) {
|
||||
if (this.lastSelected === null)
|
||||
this.$emit('select', data.getData());
|
||||
|
||||
if (!data.isSelected()) {
|
||||
/** NOTE(chris): There is a bug in Tabulator where the selected
|
||||
* object gets duplicated and doesnt't match in comparisons.
|
||||
* This results in two visible selected entries, but only one of
|
||||
* them is really selected. This seems to happen if a newly
|
||||
* added row is selected the second time.
|
||||
*/
|
||||
this.selectRow(data);
|
||||
}
|
||||
},
|
||||
},
|
||||
template: /* html */`
|
||||
<div class="widgets-admin-list h-100 d-flex flex-column">
|
||||
<core-filter-cmpt
|
||||
ref="table"
|
||||
:tabulator-options="tabulatorOptions"
|
||||
:tabulator-events="tabulatorEvents"
|
||||
:side-menu="false"
|
||||
table-only
|
||||
reload
|
||||
new-btn-show
|
||||
:new-btn-label="$p.t('dashboard/widget')"
|
||||
@click:new="newWidget"
|
||||
>
|
||||
</core-filter-cmpt>
|
||||
</div>
|
||||
`
|
||||
}
|
||||
@@ -1,92 +0,0 @@
|
||||
import BsModal from '../../Bootstrap/Modal.js';
|
||||
import CoreForm from '../../Form/Form.js';
|
||||
import FormInput from '../../Form/Input.js';
|
||||
|
||||
import ApiWidget from '../../../api/factory/dashboard/widget.js';
|
||||
|
||||
export default {
|
||||
name: 'WidgetsAdminNew',
|
||||
components: {
|
||||
BsModal,
|
||||
CoreForm,
|
||||
FormInput,
|
||||
},
|
||||
emit: [
|
||||
"create",
|
||||
],
|
||||
data() {
|
||||
return {
|
||||
generators: [],
|
||||
result: { setup: {} },
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
show() {
|
||||
this.result = {
|
||||
widget_kurzbz: '',
|
||||
setup: {
|
||||
generator: null,
|
||||
},
|
||||
};
|
||||
this.$refs.form.clearValidation();
|
||||
this.$refs.modal.show();
|
||||
},
|
||||
finish() {
|
||||
this.$refs.form
|
||||
.call(ApiWidget.create(this.result))
|
||||
.then(res => {
|
||||
this.$emit('create', res.data);
|
||||
this.$refs.modal.hide();
|
||||
})
|
||||
.catch(this.$fhcAlert.handleSystemError);
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.$api
|
||||
.call(ApiWidget.generators())
|
||||
.then(res => {
|
||||
this.generators = res.data
|
||||
})
|
||||
.catch(this.$fhcAlert.handleSystemError);
|
||||
},
|
||||
template: /* html */`
|
||||
<core-form
|
||||
class="widgets-admin-new"
|
||||
ref="form"
|
||||
@submit.prevent="finish"
|
||||
>
|
||||
<bs-modal ref="modal">
|
||||
<template #default>
|
||||
<form-input
|
||||
v-model="result.setup.generator"
|
||||
type="select"
|
||||
:label="$p.t('dashboard/generator')"
|
||||
class="mb-3"
|
||||
>
|
||||
<option v-for="(generator, name) in generators" :key="name" :value="generator">
|
||||
{{ generator }}
|
||||
</option>
|
||||
</form-input>
|
||||
<form-input
|
||||
v-model="result.widget_kurzbz"
|
||||
type="text"
|
||||
name="widget_kurzbz"
|
||||
:label="$p.t('dashboard/widget_kurzbz') + ':'"
|
||||
/>
|
||||
</template>
|
||||
<template #footer>
|
||||
<button type="submit" class="btn btn-primary">
|
||||
{{ $p.t('ui/ok') }}
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-secondary"
|
||||
data-bs-dismiss="modal"
|
||||
>
|
||||
{{ $p.t('ui/cancel') }}
|
||||
</button>
|
||||
</template>
|
||||
</bs-modal>
|
||||
</core-form>
|
||||
`
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user