From 266ba7523f3f4232fd81480b7129c10a3bf1fc6a Mon Sep 17 00:00:00 2001 From: cgfhtw Date: Tue, 29 Nov 2022 08:48:50 +0100 Subject: [PATCH] s&d --- application/config/routes.php | 2 + application/controllers/cis/Cms.php | 120 ++ application/controllers/cis/Dashboard.php | 35 + application/models/content/Content_model.php | 163 +++ .../models/content/Contentgruppe_model.php | 46 + .../models/content/Contentsprache_model.php | 28 + application/views/cis/Dashboard.php | 17 + application/views/cis/Error.php | 18 + application/views/cis/cms/Content.php | 17 + application/views/templates/CIS-Footer.php | 21 + application/views/templates/CIS-Header.php | 161 +++ .../views/templates/CIS-Menu/Entry.php | 39 + .../views/templates/CIS-Menu/EntryBase.php | 25 + .../views/templates/CIS-Menu/EntryInclude.php | 4 + public/css/Cis4/Cis.css | 117 ++ public/css/Cis4/Cms.css | 1002 +++++++++++++++++ public/js/apps/Cis.js | 7 + public/js/apps/Dashboard/Admin.js | 12 + public/js/apps/Dashboard/Fhc.js | 10 + system/dbupdate_3.4.php | 2 + system/dbupdate_3.4/25999_cis4_cms.php | 17 + 21 files changed, 1863 insertions(+) create mode 100644 application/controllers/cis/Cms.php create mode 100644 application/controllers/cis/Dashboard.php create mode 100644 application/views/cis/Dashboard.php create mode 100644 application/views/cis/Error.php create mode 100644 application/views/cis/cms/Content.php create mode 100644 application/views/templates/CIS-Footer.php create mode 100644 application/views/templates/CIS-Header.php create mode 100644 application/views/templates/CIS-Menu/Entry.php create mode 100644 application/views/templates/CIS-Menu/EntryBase.php create mode 100644 application/views/templates/CIS-Menu/EntryInclude.php create mode 100644 public/css/Cis4/Cis.css create mode 100644 public/css/Cis4/Cms.css create mode 100644 public/js/apps/Cis.js create mode 100644 public/js/apps/Dashboard/Admin.js create mode 100644 public/js/apps/Dashboard/Fhc.js create mode 100644 system/dbupdate_3.4/25999_cis4_cms.php diff --git a/application/config/routes.php b/application/config/routes.php index 15da5698f..0dc1ecc73 100644 --- a/application/config/routes.php +++ b/application/config/routes.php @@ -61,6 +61,8 @@ $route['api/v1/organisation/[O|o]rganisationseinheit/(:any)'] = 'api/v1/organisa $route['api/v1/ressource/[B|b]etriebsmittelperson/(:any)'] = 'api/v1/ressource/betriebsmittelperson2/$1'; $route['api/v1/system/[S|s]prache/(:any)'] = 'api/v1/system/sprache2/$1'; +$route['cis'] = 'cis/dashboard'; + // load routes from extensions $subdir = 'application/config/extensions'; $dirlist = scandir($subdir); diff --git a/application/controllers/cis/Cms.php b/application/controllers/cis/Cms.php new file mode 100644 index 000000000..4698bc462 --- /dev/null +++ b/application/controllers/cis/Cms.php @@ -0,0 +1,120 @@ + 'user:r' + ) + ); + + // Loads WidgetLib + $this->load->library('WidgetLib'); + + // Load Models + $this->load->model('content/Content_model', 'ContentModel'); + $this->load->model('content/Contentgruppe_model', 'ContentgruppeModel'); + $this->load->model('content/Template_model', 'TemplateModel'); + if (defined('LOG_CONTENT') && LOG_CONTENT) + $this->load->model('system/Webservicelog_model', 'WebservicelogModel'); + + // Loads phrases system + $this->loadPhrases( + array() + ); + } + + // ----------------------------------------------------------------------------------------------------------------- + // Public methods + + /** + * @param int $content_id + * @param int $version + * @param string $sprache + * @param boolean $sichtbar + * + * @return void + */ + public function content($content_id, $version = null, $sprache = null, $sichtbar = true) + { + if(!is_numeric($content_id)) + return $this->load->view('cis/Error.php', ['error' => 'ContentID ist ungueltig']); + + if ($sprache === null) + $sprache = getUserLanguage(); + + $islocked = $this->ContentgruppeModel->loadWhere(['content_id' => $content_id]); + if (isError($islocked)) + return $this->load->view('cis/Error.php', ['error' => getError($islocked)]); + + if (getData($islocked)) { + $uid = getAuthUID(); + $isberechtigt = $this->ContentgruppeModel->berechtigt($content_id, $uid); + if (isError($isberechtigt)) + return $this->load->view('cis/Error.php', ['error' => getError($isberechtigt)]); + + if (!getData($isberechtigt)) + return $this->load->view('cis/Error.php', ['error' => 'global/keineBerechtigungFuerDieseSeite']); + } + + $content = $this->ContentModel->getContent($content_id, $sprache, $version, $sichtbar, true); + + if (isError($content)) + return $this->load->view('cis/Error.php', ['error' => getError($content)]); + + // Legt einen Logeintrag für die Klickstatistik an + if (defined('LOG_CONTENT') && LOG_CONTENT) + { + // Nur eingeloggte User werden geloggt, das sonst auch alle Infoscreenaufrufe und dgl. mitgeloggt werden + if (isLogged()) + { + $request_data = 'content_id=' . $content_id; + if ($version !== null) + $request_data .= '&version=' . $version; + if ($sichtbar !== true) + $request_data .= '&sichtbar=' . $sichtbar; + $this->WebservicelogModel->insert([ + 'webservicetyp_kurzbz' => 'content', + 'request_id' => $content_id, + 'beschreibung' => 'content', + 'request_data' => $request_data . '&sprache=' . $sprache, + 'execute_time' => 'now()', + 'execute_user' => getAuthUID() + ]); + } + } + + $content = getData($content); + + //XSLT Vorlage laden + $template = $this->TemplateModel->load($content->template_kurzbz); + if (isError($template)) + return $this->load->view('cis/Error.php', ['error' => getError($template)]); + $template = current(getData($template)); + + $XML = new \DOMDocument(); + $XML->loadXML($content->content); + + $xsltemplate = new \DOMDocument(); + $xsltemplate->loadXML($template->xslt_xhtml_c4); + + //Transformation + $processor = new \XSLTProcessor(); + $processor->importStylesheet($xsltemplate); + + $content = $processor->transformToXML($XML); + $content = str_replace('dms.php', APP_ROOT . 'cms/dms.php', $content); + + $this->load->view('cis/cms/Content.php', ['content' => $content]); + } +} diff --git a/application/controllers/cis/Dashboard.php b/application/controllers/cis/Dashboard.php new file mode 100644 index 000000000..d81536bec --- /dev/null +++ b/application/controllers/cis/Dashboard.php @@ -0,0 +1,35 @@ + 'user:r' + ) + ); + } + + // ----------------------------------------------------------------------------------------------------------------- + // Public methods + + /** + * @return void + */ + public function index() + { + $this->load->view('cis/Dashboard.php'); + } + + + +} diff --git a/application/models/content/Content_model.php b/application/models/content/Content_model.php index ee4315ebd..f36425169 100644 --- a/application/models/content/Content_model.php +++ b/application/models/content/Content_model.php @@ -11,4 +11,167 @@ class Content_model extends DB_Model $this->dbTable = 'campus.tbl_content'; $this->pk = 'content_id'; } + + /** + * Laedt den Content in der angegebenen Sprache + * Sollte der Content in dieser Sprache nicht vorhanden sein, wird der Content in der Default Sprache geladen + * + * @param integer $content_id + * @param string $sprache optional + * @param integer $version optional + * @param boolean | null $sichtbar optional + * + * @return stdClass + */ + public function getContent($content_id, $sprache=DEFAULT_LANGUAGE, $version=null, $sichtbar=null, $load_default_language=false) + { + $this->load->model('content/Contentsprache_model', 'ContentspracheModel'); + $spracheExists = $this->ContentspracheModel->exists($content_id, $sprache, $version, $sichtbar); + if (isError($spracheExists)) + return $spracheExists; + + if(!getData($spracheExists)) + { + if($load_default_language) + $sprache = DEFAULT_LANGUAGE; + else + return error('Der Content existiert in dieser Sprache nicht '); + } + + $condition = ['content_id' => $content_id, 'sprache' => $sprache]; + + if ($sichtbar === true || $sichtbar === false) + $condition['sichtbar'] = $sichtbar; + if ($version) + $condition['version'] = $version; + + $this->addSelect(['*', 'tbl_contentsprache.insertamum', 'tbl_contentsprache.insertvon', 'tbl_contentsprache.updateamum', 'tbl_contentsprache.updatevon']); + $this->addJoin('campus.tbl_contentsprache', 'content_id'); + $this->addOrder('version', 'DESC'); + $this->addLimit(1); + + $result = $this->loadWhere($condition); + + if (isError($result)) + return $result; + if (!getData($result)) + return error('Dieser Eintrag wurde nicht gefunden'); + + return success(current(getData($result))); + } + + /** + * Laedt alle Content Eintraege unterhalb eines Contents + * (Ohne Newseintraege) + * + * @param integer $root_content_id + * @param string $uid + * @param string $sprache optional + * + * @return stdClass on success an array with menu objects + */ + public function getMenu($root_content_id, $uid, $sprache=DEFAULT_LANGUAGE) + { + $sql = " + SELECT + c.content_id, + c.template_kurzbz, + s.titel, + s.content, + "./*c.oe_kurzbz, + s.sprache, + s.contentsprache_id, + s.version, + s.sichtbar, + s.reviewvon, + s.reviewamum, + s.updateamum, + s.updatevon, + s.insertamum, + s.insertvon, */" + c.menu_open, + c.aktiv, + "./*s.gesperrt_uid, + c.beschreibung,*/" + k.child_content_id, + k.sort FROM ( + SELECT + c.content_id, + s.contentsprache_id + FROM + campus.tbl_content c + JOIN (SELECT s5.content_id, s5.contentsprache_id FROM (SELECT content_id, sprache, MAX(version) AS version FROM (SELECT c1.content_id, COALESCE(s1.sprache, ?) AS sprache FROM campus.tbl_content c1 LEFT JOIN campus.tbl_contentsprache s1 ON c1.content_id=s1.content_id AND s1.sprache=? WHERE sichtbar=true) s2 LEFT JOIN campus.tbl_contentsprache s3 USING(content_id, sprache) WHERE sichtbar=true GROUP BY content_id, sprache) s4 LEFT JOIN campus.tbl_contentsprache s5 USING(content_id, sprache, version) WHERE version IS NOT NULL) t USING (content_id) + JOIN + campus.tbl_contentsprache s USING (contentsprache_id) + WHERE + c.template_kurzbz<>'news' + AND + c.content_id IN ( + WITH RECURSIVE childs(content_id, child_content_id) as + ( + SELECT content_id, child_content_id FROM campus.tbl_contentchild + WHERE content_id=? + UNION ALL + SELECT cc.child_content_id, null FROM campus.tbl_contentchild cc, childs + WHERE cc.content_id=childs.content_id + ) + SELECT content_id + FROM childs + GROUP BY content_id + ) + GROUP BY c.content_id, + s.contentsprache_id + ) m + JOIN + campus.tbl_content c USING(content_id) + JOIN + campus.tbl_contentsprache s USING(contentsprache_id) + LEFT JOIN + campus.tbl_contentchild k ON(m.content_id=k.content_id) + ORDER BY content_id, sort"; + + #DEFAULT_LANGUAGE, $sprache, $root_content_id + $result = $this->execQuery($sql, [DEFAULT_LANGUAGE, $sprache, $root_content_id]); + + if (isError($result)) + return $result; + + $contents = getData($result) ?? []; + $result = []; + foreach ($contents as $content) { + if (!isset($result[$content->content_id])) { + $result[$content->content_id] = clone($content); + unset($result[$content->content_id]->child_content_id); + unset($result[$content->content_id]->sort); + $result[$content->content_id]->childs = []; + } + if ($content->child_content_id !== null) + $result[$content->content_id]->childs[] = $content->child_content_id; + } + foreach ($result as $content) { + foreach ($content->childs as $k => $v) { + if (isset($result[$v])) { + $content->childs[$k] = $result[$v]; + } else { + unset($content->childs[$k]); + } + } + } + + return success($result[$root_content_id]); + + # !LOCKED || + $berechtigt = "SELECT + 1 + FROM + campus.tbl_contentgruppe + JOIN public.vw_gruppen USING(gruppe_kurzbz) + WHERE + (tbl_contentgruppe.content_id=$content_id + OR NOT EXISTS (SELECT 1 FROM campus.tbl_contentgruppe WHERE content_id=$content_id)) + AND vw_gruppen.uid=$uid"; + + + } + } diff --git a/application/models/content/Contentgruppe_model.php b/application/models/content/Contentgruppe_model.php index 03efc87b1..23dc897a1 100644 --- a/application/models/content/Contentgruppe_model.php +++ b/application/models/content/Contentgruppe_model.php @@ -11,4 +11,50 @@ class Contentgruppe_model extends DB_Model $this->dbTable = 'campus.tbl_contentgruppe'; $this->pk = array('gruppe_kurzbz', 'content_id'); } + + /** + * Prueft ob der Zugriff auf den Content eingeschraenkt ist auf + * eine bestimmte Benutzergruppe + * + * @param int $content_id + * + * @return stdClass success(true) wenn eingeschraenkt sonst success(false) + */ + public function islocked($content_id) + { + $islocked = $this->loadWhere(['content_id' => $content_id]); + + if (isError($islocked)) + return $islocked; + return success(!!getData($islocked)); + } + + /** + * Prueft ob ein User die Berechtigung fuer das Anzeigen des + * Contents besitzt + * + * @param int $content_id ID des Contents + * @param string $uid User der versucht auf den Content zuzugreifen + * + * @return stdClass + */ + public function berechtigt($content_id, $uid) + { + $islocked = $this->islocked($content_id); + if (isError($islocked)) + return $islocked; + + $condition = ['uid' => $uid]; + if (getData($islocked)) { + $condition['content_id'] = $content_id; + } + $this->addJoin('public.vw_gruppen', 'gruppe_kurzbz'); + + $result = $this->loadWhere($condition); + + if (isError($result)) + return $result; + return success(!!getData($result)); + } + } diff --git a/application/models/content/Contentsprache_model.php b/application/models/content/Contentsprache_model.php index eb7e257b2..80b053e28 100644 --- a/application/models/content/Contentsprache_model.php +++ b/application/models/content/Contentsprache_model.php @@ -11,4 +11,32 @@ class Contentsprache_model extends DB_Model $this->dbTable = 'campus.tbl_contentsprache'; $this->pk = 'contentsprache_id'; } + + /** + * Prueft ob der Content in der angegeben Sprache vorhanden ist + * + * @param int $content_id + * @param string $sprache + * @param int | null $version (optional) + * @param boolean | null $sichtbar (optional) + * @return stdClass + */ + public function exists($content_id, $sprache, $version=null, $sichtbar=null) + { + $condition = ['content_id' => $content_id, 'sprache' => $sprache]; + + if ($version) + $condition['version'] = $version; + + if ($sichtbar !== null) + $condition['sichtbar'] = $sichtbar; + + $result = $this->loadWhere($condition); + + if (isError($result)) + return $result; + + return success(!!getData($result)); + } + } diff --git a/application/views/cis/Dashboard.php b/application/views/cis/Dashboard.php new file mode 100644 index 000000000..48e9f1dc9 --- /dev/null +++ b/application/views/cis/Dashboard.php @@ -0,0 +1,17 @@ + ['public/js/apps/Dashboard/Fhc.js'], + 'customCSSs' => [ + 'public/css/components/dashboard.css' + ], +); + +$this->load->view('templates/CIS-Header', $includesArray); +?> + +
+ +
+ +load->view('templates/CIS-Footer', $includesArray); ?> + diff --git a/application/views/cis/Error.php b/application/views/cis/Error.php new file mode 100644 index 000000000..7b6a6beb2 --- /dev/null +++ b/application/views/cis/Error.php @@ -0,0 +1,18 @@ + 'FH-Complete', + 'bootstrap5' => true, + 'fontawesome6' => true, + ); + + $this->load->view('templates/FHC-Header', $includesArray); +?> + +
+ +
+ +load->view('templates/FHC-Footer', $includesArray); ?> + diff --git a/application/views/cis/cms/Content.php b/application/views/cis/cms/Content.php new file mode 100644 index 000000000..b8f0aa45a --- /dev/null +++ b/application/views/cis/cms/Content.php @@ -0,0 +1,17 @@ + [ + 'public/css/Cis4/Cms.css', + #'skin/style.css.php' + ] +); + +$this->load->view('templates/CIS-Header', $includesArray); +?> + +
+ +
+ +load->view('templates/CIS-Footer', $includesArray); ?> + diff --git a/application/views/templates/CIS-Footer.php b/application/views/templates/CIS-Footer.php new file mode 100644 index 000000000..24fcc8b98 --- /dev/null +++ b/application/views/templates/CIS-Footer.php @@ -0,0 +1,21 @@ + $title ?? 'FH-Complete', + 'vue3' => true, + 'bootstrap5' => true, + 'fontawesome6' => true, + 'axios027' => true, + 'customJSModules' => array_merge([ + 'public/js/apps/Cis.js' + ], $customJSModules ?? []), + 'customCSSs' => array_merge([ + 'public/css/Cis4/Cis.css' + ], $customCSSs ?? []) +); +?> + + + + + +load->view('templates/FHC-Footer', $includesArray); ?> \ No newline at end of file diff --git a/application/views/templates/CIS-Header.php b/application/views/templates/CIS-Header.php new file mode 100644 index 000000000..7b5c78c3f --- /dev/null +++ b/application/views/templates/CIS-Header.php @@ -0,0 +1,161 @@ + $title ?? 'FH-Complete', + 'vue3' => true, + 'bootstrap5' => true, + 'fontawesome6' => true, + 'axios027' => true, + 'customJSModules' => array_merge([ + 'public/js/apps/Cis.js' + ], $customJSModules ?? []), + 'customCSSs' => array_merge([ + 'public/css/Cis4/Cis.css' + ], $customCSSs ?? []) +); + +$this->load->view('templates/FHC-Header', $includesArray); + + +$ci =& get_instance(); // get CI instance +$ci->load->model('content/Content_model', 'ContentModel'); +$result = $ci->ContentModel->getMenu(6739, null); +$menu = getData($result) ?? (object)['childs' => []]; + +?> + +
+
+ +
+ +
+ + +
\ No newline at end of file diff --git a/application/views/templates/CIS-Menu/Entry.php b/application/views/templates/CIS-Menu/Entry.php new file mode 100644 index 000000000..01e5ab67f --- /dev/null +++ b/application/views/templates/CIS-Menu/Entry.php @@ -0,0 +1,39 @@ +content_id; + +switch ($entry->template_kurzbz) { + case 'redirect': { + $url = ''; + $target = ''; + $xml = new DOMDocument(); + if($entry->content!='') + { + $xml->loadXML($entry->content); + if ($xml->getElementsByTagName('url')->item(0)) + $url = $xml->getElementsByTagName('url')->item(0)->nodeValue; + // TODO(chris): get params + if (isset($params) && is_array($params)) + foreach ($params as $key=>$value) + $url = str_replace('$' . $key, addslashes($value), $url); + if ($xml->getElementsByTagName('target')->item(0)) + $target = $xml->getElementsByTagName('target')->item(0)->nodeValue; + + if (strpos($url, '../') === 0) + $url = APP_ROOT . substr($url, 3); + } + if ($target == 'content') + $target = ''; + + $this->load->view('templates/CIS-Menu/EntryBase', ['entry' => $entry, 'menu_id' => $menu_id, 'link' => $url, 'target' => $target]); + break; + } + case 'include': { + $this->load->view('templates/CIS-Menu/EntryInclude', ['entry' => $entry, 'menu_id' => $menu_id . '-' . $entry->content_id]); + break; + } + default: { + $this->load->view('templates/CIS-Menu/EntryBase', ['entry' => $entry, 'menu_id' => $menu_id, 'link' => APP_ROOT . 'index.ci.php/cis/cms/content/' . $entry->content_id]); + break; + } +} +?> diff --git a/application/views/templates/CIS-Menu/EntryBase.php b/application/views/templates/CIS-Menu/EntryBase.php new file mode 100644 index 000000000..610c1e580 --- /dev/null +++ b/application/views/templates/CIS-Menu/EntryBase.php @@ -0,0 +1,25 @@ +childs) { ?> + + + titel); ?> + + +
+ class="btn btn-default rounded-0 text-start btn-level-"> + titel); ?> + + + Toggle Dropdown + +
+ + + + class="btn btn-default rounded-0 w-100 text-start btn-level-"> + titel); ?> + + diff --git a/application/views/templates/CIS-Menu/EntryInclude.php b/application/views/templates/CIS-Menu/EntryInclude.php new file mode 100644 index 000000000..0fd9f7b16 --- /dev/null +++ b/application/views/templates/CIS-Menu/EntryInclude.php @@ -0,0 +1,4 @@ + +
+ INCLUDE +
diff --git a/public/css/Cis4/Cis.css b/public/css/Cis4/Cis.css new file mode 100644 index 000000000..0e6a93d5f --- /dev/null +++ b/public/css/Cis4/Cis.css @@ -0,0 +1,117 @@ +@import '../components/searchbar.css'; + +#cis-navigation-top .fhc-searchbar > .input-group { + margin: 0!important; +} +#cis-navigation-top .fhc-searchbar > .input-group > * { + border-radius: 0!important; +} + +.avatar { + object-fit: cover; + height: 45px; + width: 45px; +} + +#cis4 { + min-height: 100vh; + display: flex; + flex-direction: column; +} +#cis4 > header { + height: 48px; +} +/*body { + padding-top: 48px; +}*/ +#cis-navigation-top.navbar-expand-lg .offcanvas { + margin-top: 48px; +} +@media (min-width: 992px) { + #cis4 > header { + height: 61px; + } + /*body { + padding-top: 61px; + }*/ + #cis-navigation-top.navbar-expand-lg .offcanvas { + background-color: transparent!important; + position: initial; + } +} + +#cis-navigation-left { + --fhc-menu-level-1-bg: #0d6efd; + --fhc-menu-level-1-color: #fff; + --fhc-menu-level-1-border: #0d6efd; + --fhc-menu-level-1-hover-bg: #0b5ed7; + --fhc-menu-level-1-hover-color: #fff; + --fhc-menu-level-1-hover-border: #0a58ca; + --fhc-menu-level-2-bg: #6c757d; + --fhc-menu-level-2-color: #fff; + --fhc-menu-level-2-border: #6c757d; + --fhc-menu-level-2-hover-bg: #5c636a; + --fhc-menu-level-2-hover-color: #fff; + --fhc-menu-level-2-hover-border: #565e64; + --fhc-menu-level-3-bg: #212529; + --fhc-menu-level-3-color: #fff; + --fhc-menu-level-3-border: #212529; + --fhc-menu-level-3-hover-bg: #1c1f23; + --fhc-menu-level-3-hover-color: #fff; + --fhc-menu-level-3-hover-border: #1a1e21; +} +#cis-navigation-left .btn-level-1, +#cis-navigation-left .btn-level-1 + .btn { + color: var(--fhc-menu-level-1-color); + border-color: var(--fhc-menu-level-1-border); + background-color: var(--fhc-menu-level-1-bg); +} +#cis-navigation-left .btn-level-1:hover, +#cis-navigation-left .btn-level-1:focus, +#cis-navigation-left .btn-level-1 + .btn:hover, +#cis-navigation-left .btn-level-1 + .btn:focus { + color: var(--fhc-menu-level-1-hover-color); + border-color: var(--fhc-menu-level-1-hover-border); + background-color: var(--fhc-menu-level-1-hover-bg); +} +#cis-navigation-left .btn-level-2, +#cis-navigation-left .btn-level-2 + .btn { + color: var(--fhc-menu-level-2-color); + border-color: var(--fhc-menu-level-2-border); + background-color: var(--fhc-menu-level-2-bg); +} +#cis-navigation-left .btn-level-2:hover, +#cis-navigation-left .btn-level-2:focus, +#cis-navigation-left .btn-level-2 + .btn:hover, +#cis-navigation-left .btn-level-2 + .btn:focus { + color: var(--fhc-menu-level-2-hover-color); + border-color: var(--fhc-menu-level-2-hover-border); + background-color: var(--fhc-menu-level-2-hover-bg); +} +#cis-navigation-left .btn-level-3, +#cis-navigation-left .btn-level-3 + .btn { + color: var(--fhc-menu-level-3-color); + border-color: var(--fhc-menu-level-3-border); + background-color: var(--fhc-menu-level-3-bg); +} +#cis-navigation-left .btn-level-3:hover, +#cis-navigation-left .btn-level-3:focus, +#cis-navigation-left .btn-level-3 + .btn:hover, +#cis-navigation-left .btn-level-3 + .btn:focus { + color: var(--fhc-menu-level-3-hover-color); + border-color: var(--fhc-menu-level-3-hover-border); + background-color: var(--fhc-menu-level-3-hover-bg); +} + +#cis-navigation-left .btn.dropdown-toggle { + padding-right: .5625rem; + display: flex; + justify-content: space-between; + align-items: center; +} +#cis-navigation-left .dropdown-toggle:after { + transition: all .2s ease-in-out; +} +#cis-navigation-left .dropdown-toggle.collapsed:after { + transform: rotate(-90deg); +} \ No newline at end of file diff --git a/public/css/Cis4/Cms.css b/public/css/Cis4/Cms.css new file mode 100644 index 000000000..b35d04d6b --- /dev/null +++ b/public/css/Cis4/Cms.css @@ -0,0 +1,1002 @@ +/* Allgemein */ +#cms { + background-color: white; + font-family: Arial, Helvetica, sans-serif; + font-size: 13px; + width: 100%; + height: 100%; + margin:0px; + border-width:0px; + border-style:none; + padding:0px; +} +#cms.main /* Workaround fuer Farbverlauf im IE statt ShadowBox */ { + background-color: white; + font-family: Arial, Helvetica, sans-serif; + font-size: 13px; + height: 100%; + width: 100%; + margin:0px; + border-width: 2px; + border-style: none; + padding:0px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc',endColorstr='#ffffff'); +} +#cms iframe { + margin:0px; + padding:0px; + height: 100%; + + /* border-width:1px; + border-style:solid; */ +} +#cms textarea { + font-family: Arial, Helvetica, sans-serif; +} +#cms form { + font-family: Arial, Helvetica, sans-serif; +} +#cms p { + margin-top: 0px; +} +#cms hr { + color:#CCCCCC; + height:1px; +} +#cms ul { + padding-left: 0px; + padding-top: 2px; + padding-bottom: 2px; + margin-left: 6px; +} +#cms ol { + padding-left: 13px; + padding-top: 2px; + padding-bottom: 2px; + margin-left: 6px; +} +#cms ul li { + list-style-image:url(images/square_blue.png); + padding-left: 0px; + padding-top: 2px; + padding-bottom: 2px; + margin-left: 6px; +} +#cms li.ui-menu-item { + list-style-image:none; +} +#cms .btn-testtool { + width: 200px; + margin-top: 20px; +} +#cms #menue { + bottom: 2%; + width: 17%; + height: 81%; + z-index: 10; + padding: 0px; + margin: 0px; +} +#cms #menue { + position:absolute; +} + +#cms #content { + bottom: 2%; + width:81%; + height:81%; + z-index: 10; + left:18%; + padding: 0px; + margin: 0px; +} +#cms #content /* Hack für IE8 */ { + *width: 75\%; + *left: 21\%; +} +#cms #content { + position:absolute; +} + +/* Druckausgabe */ +@media print +{ + #cms #menue { + display:none; + } + #cms #content { + width:98%; + z-index: 10; + left:1%; + } +} +#cms input.TextBox { + background-color: White; +} +/* +==== Formularfelder und Buttons ==== +*/ + +/* Such-Feld CIS-Suche */ +#cms input.search input.text { + background-color: #E9ECEE; + border-width: 1px; + border-style:solid; + border-color: #A5AFB6; +} +#cms #globalsearch { + background-color: #E9ECEE; + border-width: 1px; + border-style:solid; + border-color: #A5AFB6; + height: 25px; +} +/* Login-Button CIS-Seite */ +#cms input.cis_login { + cursor: pointer; + color: #666666; + border: 1px solid #A5AFB6; + background-color: #E9ECEE; + width: 150px; + height: 35px; + font-size: 20px; +} +#cms #GlobalMenu { + margin-top: 3px; + text-align: right; +} +#cms .home_logo { + background-image:url(styles/tw/TWLogo_klein.jpg); + background-repeat: no-repeat; + width:170px; + height:53px; +} + +#cms div.tip { + position: absolute; + display: none; + width: 300px; + background-color: #f7f7ee; + padding: 3px 7px 4px 6px; + border: 1px solid #336; + background-color: #f7f7ee; + text-align: left; +} +#cms #header { + vertical-align:middle; +} + +/* +==== Links ==== +*/ +#cms a /*allgmeiner Link, Hauptmenuelinks*/ { + color: #0086CC; /*tw-blau*/ + text-decoration: none; + cursor: pointer; +} +#cms a:hover /*link ohne Item-Definition*/ { + color: #0086CC; /*tw-blau*/ + text-decoration: underline; +} +#cms a.ItemTesttool { + color: #000; + line-height: 25px; + display:block; + padding: 5px 10px 5px 10px; +} + +#cms a.ItemTesttool.navButton { + background-color: #0a629c; + color: white; + padding: 10px; +} +#cms a.ItemTesttoolAktiv { + color: #000; + line-height: 25px; + display:block; + padding: 5px 10px 5px 10px; + text-decoration: none; +} +#cms a.ItemTesttoolBeendet { + color: #C7C8C9; + line-height: 25px; + display:block; + padding: 5px 10px 5px 10px; + cursor: default; + text-decoration: none; +} +#cms a:hover.ItemTesttool { + color: #000; + line-height: 25px; + text-decoration: none; + padding: 5px 10px 5px 10px; +} +#cms a:hover.ItemTesttool.navButton { + background-color: steelblue; + color: white; + padding: 10px; +} +#cms a.HyperItem /* ? */ { + color: Black; text-decoration: none; + font-weight: bold; +} +#cms a:hover.HyperItem /* ? */ { + color: #008381; text-decoration: none; + font-weight: bold; +} +#cms a[onClick]:hover.Item /* ? */ { + color: Black; text-decoration: none; +} +#cms a:hover.Item /*allgemeine Links, Hauptmenuelink*/ { + color: #0086CC; /*tw-blau*/ + text-decoration: underline; +} +#cms a.Item2 /* zB in den Lehrveranstaltungen (Buttons) verwendet bei den Lektoren */ { + color: Black; text-decoration: none; +} +#cms a:hover.Item2 /* zB in den Lehrveranstaltungen (Buttons) verwendet bei den Lektoren */ { + color: #008381; text-decoration: none; +} +#cms a.MenuItem /* Hauptmenuelink zum aufklappen */ { + color: #0086CC; text-decoration: none; + font-weight: bold; +} +#cms a:hover.MenuItem /* Hauptmenuelink zum aufklappen */ { + color: #0086CC; /*tw-blau*/ + text-decoration: none; + font-weight: bold; +} +#cms a:focus.MenuItem /* Hauptmenuelink zum aufklappen */ { + color: #0086CC; /*tw-blau*/ + text-decoration: none; + font-weight: bold; +} +#cms A.stpl_detail { + font-size:x-small; + color:#000000; + text-decoration:none; +} +#cms A.stpl_detail:hover { + font-size:x-small; + color:#000000; + text-decoration:underline; + /*cursor:hand;*/ +} +#cms a.head { + color:#ffffff; +} +#cms a.head:hover { + color:#000000; +} + + +/* +==== Tables ==== +*/ +#cms TABLE { + font-size: 13px; +} +#cms TABLE.header { + width:100%; + height:100%; + /* background-image:url(../skin/images/header.png); */ + /* background-repeat:no-repeat; */ + background-color: white; + position: relative; +} +#cms TABLE.header_content { + height: 13%; + width: 100%; + position: absolute; + z-index:4; +} +/* Firefox Hack, da er den absolute-Wert der position als einziger nicht richtig dargestellt hat*/ +#cms @-moz-document url-prefix() { + TABLE.header_content + #cms { + height: 13%; + width: 100%; + position: relative; + z-index:4; + } +} +#cms TABLE.cmstable /* Die Haupttable aller CMS-Contentseiten */ { + margin: 0px; + padding: 0px; + border: none; + width: 100%; +} +#cms TABLE.tabcontent { + margin: 0px; + padding: 0px; + border-style: none; + width: 100%; + background-color: white; + vertical-align: top; + border-spacing:0; +} +#cms TABLE.menue { + margin: 0px; + padding: 0px; + border-style: none; + width: 100%; +} +#cms TABLE.menue TD { + padding-bottom: 2px; + padding-top: 2px; +} +#cms TABLE.tabcontent2 { + margin: 0px; + padding: 0px; + border-style: none; +} +#cms TABLE.tabborder { + width: 100%; + /*border: 1px solid black; foo*/ +} +#cms TABLE#tabterm { + margin:auto; +} + +#cms .well { + background-color: white; + border: 2px solid #add4ea; +} +#cms td.rand /* Seitenraender des CIS */ { + font-size: 11px; + padding-top: 0px; + padding-left: 6px; + width: 3%; + height: 100%; + vertical-align: middle; +} +#cms td.boxshadow /* Farbverlauf im Hintergrund der CIS*/ { + position: relative; + width:94%; + height: 100%; + box-shadow: 0px 100px 0px 0px #FFFFFF, /* Unterer weisser Rand bei sehr kleinen Aufloesungen */ + 0px 0px 5px 5px #888, /* schmaler dunkler Schatten */ + /*0px 300px 5px 5px #888, /* schmaler dunkler Schatten unten bei sehr kleinen Aufloesungen*/ + 20px 20px 70px 30px #DDDDDD, /* heller Verlauf rechts */ + -20px 20px 70px 30px #DDDDDD; /* heller Verlauf links */ +} +#cms td.ContentHeader { + background-color: #A5AFB6; /*#DCE4EF;*/ + font-weight: bold; + height: 19px; +} +#cms td.ContentHeader2 { + color: #0086CC; /*tw-blau */ + font-weight: normal; +} +#cms td.ContentHeader3 { + color: #0086CC;; /*tw-blau */ + font-weight: bold; +} +#cms td.MarkLine { + background-color: #F2F2F2; /*wie EEEEEE; also grau fast weiss */ +} +#cms td.HeaderTesttool /*fuer die Button-Optik beim Testtool*/ { + color: #FFFFFF; + background-color: #00639C; + white-space:nowrap; + line-height: 25px; + box-shadow: inset 0 0 2px #FFFFFF; + padding: 10px; + width: 170px; +} +#cms td.HeaderTesttoolSTG /*fuer die Button-Optik der Quereinstiegs-Studiengänge beim Testtool*/ { + color: white; + border: 2px solid #73a9d6; + padding: 10px; + max-width: 100px; + overflow: hidden; + text-overflow: ellipsis; + white-space: normal; +} +#cms td.Inaktiv /*fuer Inaktive Items bei der Raumbeschreibung */ { + background-color: #F2F2F2; /*wie EEEEEE; also grau fast weiss */ + color: #CFCFCF; + text-decoration: line-through; +} +#cms td.ItemTesttool /*fuer die Button-Optik beim Testtool*/ { + color: #000; + white-space: initial; + box-shadow: inset 0 0 2px #00639C; + width: 170px; + display: inline-block; +} +#cms td:hover.ItemTesttool { + color: #000; + white-space: initial; + box-shadow: inset 0px 0px 2px 2px #00639C; + width: 170px; + display: inline-block; +} +#cms td.ItemTesttoolAktiv /*fuer die Button-Optik beim Testtool*/ { + color: #000; + white-space: initial; + box-shadow: 0px 0px 2px 2px #00639C; +} +#cms td.ItemTesttoolBeendet /*fuer die Button-Optik beim Testtool*/ { + background-color: #FFFFFF; + white-space: initial; + box-shadow: inset 0px 0px 2px 2px #EAECED; +} +#cms td:hover.ItemTesttoolBeendet { + color: #EAECED; + background-color: #FFFFFF; + white-space: initial; + box-shadow: inset 0px 0px 2px 2px #EAECED; +} +#cms div.TesttoolTitle /* Ueberschrift auf den Titelfolien */ { + font-size: 400%; + font-family: Helvetica, Arial, sans-serif; + text-transform: uppercase; + color: #FFFFFF; + white-space: nowrap; + text-shadow: -1px 0 #00639C, 0 1px #00639C, 1px 0 #00639C, 0 -1px #00639C; + margin: 0 0 20px 0; +} +#cms td.tdwidth10 { + width: 5px; + /* width: 10px; */ +} +#cms td.tdwidth30 { + width: 30px; +} +#cms td.tdgreen { + background-color: #CCFFCC; +} +#cms td.tdborder { + text-align: center; + border:2px solid black; + background-color: #ffffff; +} +#cms td.tdwrap { + white-space: nowrap; + color: #0086CC; +} +#cms td.tdvertical /* Für Ausrichtung der Icons bei der LV-Übersicht */ { + vertical-align: top; + padding: 10px 0 10px 0; + width: 33.33%; + /* height: 100px; */ +} +#cms td.menubox /* Navigationsboxen in den CIS-Contentseiten */ { + width: 20%; + height: 10px; + background-color: #eeeeee; + padding: 20px 15px 20px 15px; + vertical-align: middle; +} +#cms td.menubox p { + line-height: 110%; +} +#cms td.cmscontent { + vertical-align: top; + padding-right: 25px; + padding-left: 0px; +} +#cms td.teambox { + vertical-align: top; + padding-top: 20px; +} +#cms TR.liste { + background-color: #D3DCE3; /*grau wie #DDDDDD*/ +} +#cms TR.liste0 { + background-color: #FFFFFF; /*wei�*/ +} +#cms TR.liste1 { + background-color: #EEEEEE; /*grau fast wei�*/ +} +#cms TR.tryellow { + background-color: #FFFF99; +} + +/* private/profile/zeitsperre.php */ +#cms TABLE#zeitsperren { + /*border: 1px solid black; foo*/ + width:100%; +} +#cms TABLE#zeitsperren TH { + background-color: #DDDDDD; /*hellgrau*/ +} +#cms TABLE#zeitsperren TH.feiertag { + background-color: #FFFF00; /*grelles gelb*/ +} +#cms TABLE#zeitsperren TD.feiertag { + background-color: #FFFF22; /*bissi helleres gelb*/ +} +#cms TABLE#zeitsperren TD { + background-color: #EEEEEE; /*grau fast wei�*/ +} + +/* +==== Stundenplan ==== +*/ + +#cms TABLE.stdplan { + margin: 0px; + padding: 0px; + /* border: 1px solid; */ + width: 100%; + background-color: white; + vertical-align: top; + border-spacing:1; +} +#cms TABLE.stdplan TH { + background-color: #A5AFB6; +} +#cms TABLE.stdplan TD { + background-color: #E9ECEE; +} + +/*reservation delete-"x"*/ +#cms TABLE.stdplan div.reservdelete { + text-align: right; + margin-bottom:-4px; + padding-top: 2px; + padding-right: 2px; +} + +#cms .row-even { /*liste1*/ + background-color:#f2f2f2; +} + +#cms .row-odd { /*liste0*/ + background-color:#ffffff; +} + +/*lecturer reservation rows*/ +#cms td.lecturercell { + border: 1px solid; +} + +#cms td.lecturercell div.lecturercellname { + width: 95%; + float: left; +} + +#cms td.lecturercell div.lecturercelldelete { + width: 5%; + float: left; + text-align: right; + cursor: pointer; +} + +/* +==== Fonts ==== +*/ + +#cms h1 { + color: black; + padding: 0px; + padding-bottom: 20px; + /* padding-left: 10px; */ + /* width:20%; */ + margin:0px; + white-space:nowrap; + font-size: 20px; + /* letter-spacing: 2px; + border-bottom:solid 1px #0086CC;*/ + font-weight:normal; +} +#cms h1 td { + color: #ffffff; + background-color: #009e84; +} +#cms h2 { + margin: 0px; + padding-top: 0px; + padding-bottom: 15px; + /* padding-left: 10px; */ + font-weight: bold; + font-size: 15px; +} +#cms h3 { + margin: 0px; + padding-top: 0px; /* 20px */ + padding-bottom: 2px; + font-weight: bold; + font-size:13px; +} +#cms h4 { + margin: 0px; + padding: 0px; + text-decoration: underline; + font-weight: normal; + font-size:13px; +} +#cms .error { + color: #ff0000; +} +#cms #news .news { + width: 99%; + background-color: #A5AFB6; /* grauvariante A5AFB6 */ +} +#cms #news .news .titel table { + padding: 3px 10px 3px 10px; + color: #ffffff; + font-weight: 500; + border-collapse: initial; +} +#cms #news .news .text { + background-color: #E9ECEE; /* grauvariante E9ECEE */ + padding: 10px; +} + +/* Margin von ersten und letzten P tag entfernen, da sonst + breite Raender entstehen koenne*/ +#cms #news .news .text p:first-child { + margin-top:0px; + +} +#cms #news .news .text p:last-child { + margin-bottom:0px; +} + +/* +==== Images ==== +*/ +#cms img.testtoolfrage { + max-width:400px; + max-height:300px; +} +#cms img.testtoolvorschlag { + max-width:200px; + max-height:150px; +} +#cms img { + border: 0; +} +#cms img.lvplanbutton { + border:0; + vertical-align: bottom; +} +#cms img#layout { + border: 1px solid #AAAAAA; +} +#cms img.lv { + width: 40px; + height: 40px; + padding-bottom: 5px; +} +#cms /*img.header_left { + position: absolute; + left: 0px; + z-index: 1; + max-width: 100%; + height: 16%; +} +#cms img.header_right { + position: absolute; + right: 0px; + z-index: 2; + max-width: 100%; + height: 16%; +}*/ +#cms img.header_logo { + position: absolute; + left: 16px; + top: 3%; + z-index: 5000; + height: 8%; +} +#cms img.screenshot_boxshadow { + border: 1px solid grey; + box-shadow: 0px 0px 5px 5px #888888; + margin-left: 10px; +} +#cms a:hover img.screenshot_boxshadow { + border: 1px solid grey; + box-shadow: 0px 0px 5px 5px #0086CC; + margin-left: 10px; +} +/* +==== Farben ==== +*/ + +#cms .grey { + color: #999999; +} +#cms #bgcolor0 { + background-color: #CC0000; +} +#cms #bgcolor1 { + background-color: #FF2200; +} +#cms #bgcolor2 { + background-color: #FF9922; +} +#cms #bgcolor3 { + background-color: #FFFF55; +} +#cms #bgcolor4 { + background-color: #88FF88; +} +#cms #bgcolor5 { + background-color: #AAFFAA; +} +#cms #bgcolor6 { + background-color: #CCFFCC; +} +#cms .studentnote { + font-weight:bold; +} +#cms .benotungstool_tabs { + border-top: 1px solid gray; + border-left: 1px solid gray; + border-right: 1px solid gray; + text-align: center; +} +#cms .benotungstool_tabs_active { + border-top: 2px solid gray; + border-left: 2px solid gray; + border-right: 2px solid gray; + background-color: #eeeeee; + text-align: center; +} +#cms .benotungstool_subtab { + border-top: 1px solid gray; + border-bottom: 1px solid gray; +} +#cms .ok { + color: green; +} +#cms .ausblenden {display:none;} +#cms .einblenden {display:block;} + +/* Inaktive Elemente in einem DropDown */ +#cms option.inactive { + text-decoration:line-through; +} + +/* Difference Engine */ +#cms .diffchange-inline { + background-color: yellow; +} +#cms .diff-deletedline { + background-color: lightgray; +} +#cms .diff-marker { + background-color: none; +} +#cms .diff-addedline { + background-color: lightgreen; +} + +#cms .suchmarker { + font-weight: bold; + text-decoration: underline; + font-size: medium; +} +#cms .suchergebnis:hover { + background-color: #EEEEEE; +} +#cms .suchergebnis a { + font-weight: bold; +} +#cms .suchergebnis { + padding-bottom: 15px; +} +#cms .suchicon { + margin:0px; + height: 14px; +} +#cms .suchicon:hover { + cursor:pointer; + cursor:hand; +} + +/* +==== Kalender-Jump-Effekt im LV-Plan ==== +*/ +#cms div.hoverbox div.preview div.hoverbox_inhalt { + display:none; + vertical-align: top; +} +#cms div.preview { + position: relative; + vertical-align: top; +} +#cms div.hoverbox div.preview:hover div.hoverbox_inhalt { + display: block; + position: absolute; + top: 15px; + left: -190px; + z-index: 2; + border:1px; + border-color:grey; + background-color:white; +} +#cms table.hoverbox { + border:1px; + border-style:solid; + border-color:grey; + padding: 5px; +} + +/* +==== Gestaltung des Hauptmenues ==== +*/ + +#cms ul.menu { + padding:0; + margin:0; + font-family:Arial, Helvetica, sans-serif; + color:#0086CC; + font-size:13px; + line-height:15px; + width:200px; + list-style-type:none; +} +#cms #menu { + padding:0; + margin:0; + font-family:Arial, Helvetica, sans-serif; + color:#0086CC; + font-size:13px; + line-height:18px; + width:200px; + list-style-type:none; +} +#cms #menu a { + display:block; + padding:0 0 0 5px; + outline:none; + text-decoration:none; +} +#cms #menu li { + margin:0 0 0 10px; + padding: 5px 0 0 0; + display:block; + border:1px solid #FFFFFF; +} +#cms #menu a.selected { + padding:0 0 0 5px; +} +#cms #menu a:hover { + text-decoration: underline; +} +#cms #menu a.leaf { + color: #616B71; + padding-left: 5px; +} + + +/* LV Angebot im Studienplan */ +#cms .angebot { + border: 1px solid #edd400; +} + +/* Empfehlung im Studienplan */ +#cms .empfehlung { + border: 1px solid green; +} + +/* +==== Menubox-Effekt am Seitenrand. Nettes Feature aber dzt. nicht sinnvoll einsetzbar ==== +*/ + +#cms.bewerbung table, +#cms.anwesenheit table { + border-collapse: collapse; + width: 100%; +} + +#cms.bewerbung table.reihungstest, +#cms.anwesenheit table { + table-layout: fixed; +} + +#cms.bewerbung table th, +#cms.bewerbung table td, +#cms.anwesenheit table th, +#cms.anwesenheit table td { + padding: 3px; + border: 1px solid black; + text-align: center; +} + +#cms.bewerbung table.reihungstest td:nth-child(5) { + text-align: left; +} + +#cms.bewerbung .ui-tabs-vertical .ui-tabs-panel { + width: 75em; +} + +#cms.bewerbung table.reihungstest th:nth-child(1), +#cms.bewerbung table.reihungstest th:nth-child(2), +#cms.bewerbung table.reihungstest th:nth-child(3), +#cms.bewerbung table.reihungstest th:nth-child(4), +#cms.bewerbung table.reihungstest th:nth-child(6) { + width: 10%; +} + +#cms.bewerbung table.reihungstest th:nth-child(5) { + width: 50%; +} + +#cms.anwesenheit { + padding-bottom: 20px; +} + +#cms.anwesenheit div.lv { + margin: 10px; + padding-top: 10px; + padding-left: 10px; + background-color: #f2f8ff; + border: 1px solid #2353b2; +} + +#cms.anwesenheit div.lv + div.lv { +/* border-top: 1px dashed rgb(193,193,193);*/ +} + +#cms.anwesenheit div.lv > div { + width: 300px; + display: inline-block; + vertical-align: middle; +} + +#cms.anwesenheit div.progress-wrapper { + border: 1px solid black; +} + +#cms.anwesenheit div.progress { + height: 20px; +} + +#cms.anwesenheit div.progress.green { + background-color: #008000; +} + +#cms.anwesenheit div.progress.yellow { + background-color: #ffa500; +} + +#cms.anwesenheit div.progress.red { + background-color: #dc143c; +} + +#cms.anwesenheit span.fehlstunden-details { + cursor: pointer; + font-weight: bold; +} + +#cms.anwesenheit table { + margin: 5px; +} + +#cms.anwesenheit form { + margin: 10px; +} + +#cms div.header_logo { + position: absolute; + left: 16px; + top: 3%; + z-index: 5000; + + background-image:url(styles/tw/logo_250x130.png); + background-repeat: no-repeat; + width:170px; + height:51px; + background-size: contain; +} + +#cms td.headerbar { + background-image: url(styles/tw/header.png); + background-position: top; + background-repeat: repeat-x;" +} + +#cms div.cis_logo { + background-image:url(styles/tw/cis_logo_text_400x78.png); + background-repeat: no-repeat; + width: 400px; + height: 78px; +} diff --git a/public/js/apps/Cis.js b/public/js/apps/Cis.js new file mode 100644 index 000000000..09896e521 --- /dev/null +++ b/public/js/apps/Cis.js @@ -0,0 +1,7 @@ +import FhcSearchbar from "../components/searchbar/searchbar.js"; + +Vue.createApp({ + components: { + FhcSearchbar + } +}).mount('#cis-navigation-top'); \ No newline at end of file diff --git a/public/js/apps/Dashboard/Admin.js b/public/js/apps/Dashboard/Admin.js new file mode 100644 index 000000000..05734fb28 --- /dev/null +++ b/public/js/apps/Dashboard/Admin.js @@ -0,0 +1,12 @@ +import {CoreNavigationCmpt} from '../../components/navigation/Navigation.js'; +import DashboardAdmin from '../../components/Dashboard/Admin.js'; + +Vue.createApp({ + data: () => ({ + appSideMenuEntries: {} + }), + components: { + CoreNavigationCmpt, + DashboardAdmin + } +}).mount('#main'); diff --git a/public/js/apps/Dashboard/Fhc.js b/public/js/apps/Dashboard/Fhc.js new file mode 100644 index 000000000..661d6ebb2 --- /dev/null +++ b/public/js/apps/Dashboard/Fhc.js @@ -0,0 +1,10 @@ +import FhcDashboard from '../../components/Dashboard/Dashboard.js'; + +Vue.createApp({ + data: () => ({ + appSideMenuEntries: {} + }), + components: { + FhcDashboard + } +}).mount('#content'); diff --git a/system/dbupdate_3.4.php b/system/dbupdate_3.4.php index 28366d073..8e4c19d40 100644 --- a/system/dbupdate_3.4.php +++ b/system/dbupdate_3.4.php @@ -350,6 +350,8 @@ $tabellen=array( "wawi.tbl_aufteilung_default" => array("aufteilung_id","kostenstelle_id","oe_kurzbz","anteil","insertamum","insertvon","updateamum","updatevon"), ); +require_once('dbupdate_3.4/25999_cis4_cms.php'); + $tabs=array_keys($tabellen); //print_r($tabs); $i=0; diff --git a/system/dbupdate_3.4/25999_cis4_cms.php b/system/dbupdate_3.4/25999_cis4_cms.php new file mode 100644 index 000000000..5ff40d1d0 --- /dev/null +++ b/system/dbupdate_3.4/25999_cis4_cms.php @@ -0,0 +1,17 @@ +db_query("SELECT xslt_xhtml_c4 FROM campus.tbl_template LIMIT 1")) +{ + $qry = "ALTER TABLE campus.tbl_template ADD COLUMN xslt_xhtml_c4 xml;"; + + if(!$db->db_query($qry)) + echo 'campus.tbl_template: '.$db->db_last_error().'
'; + else + echo '
campus.tbl_template: Spalte xslt_xhtml_c4 hinzugefuegt'; + + // TODO(chris): add default values +} + +$tabellen['campus.tbl_template'][] = 'xslt_xhtml_c4';