mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-23 18:02:18 +00:00
s&d
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -0,0 +1,120 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class Cms extends Auth_Controller
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(
|
||||
array(
|
||||
'content' => '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]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class Dashboard extends Auth_Controller
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(
|
||||
array(
|
||||
'index' => 'user:r'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->load->view('cis/Dashboard.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";
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
$includesArray = array(
|
||||
'customJSModules' => ['public/js/apps/Dashboard/Fhc.js'],
|
||||
'customCSSs' => [
|
||||
'public/css/components/dashboard.css'
|
||||
],
|
||||
);
|
||||
|
||||
$this->load->view('templates/CIS-Header', $includesArray);
|
||||
?>
|
||||
|
||||
<div id="content">
|
||||
<fhc-dashboard dashboard="CIS"/>
|
||||
</div>
|
||||
|
||||
<?php $this->load->view('templates/CIS-Footer', $includesArray); ?>
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
$includesArray = array(
|
||||
'title' => 'FH-Complete',
|
||||
'bootstrap5' => true,
|
||||
'fontawesome6' => true,
|
||||
);
|
||||
|
||||
$this->load->view('templates/FHC-Header', $includesArray);
|
||||
?>
|
||||
|
||||
<div id="wrapper">
|
||||
<div class="alert alert-primary" role="alert">
|
||||
<?= $error; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php $this->load->view('templates/FHC-Footer', $includesArray); ?>
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
$includesArray = array(
|
||||
'customCSSs' => [
|
||||
'public/css/Cis4/Cms.css',
|
||||
#'skin/style.css.php'
|
||||
]
|
||||
);
|
||||
|
||||
$this->load->view('templates/CIS-Header', $includesArray);
|
||||
?>
|
||||
|
||||
<div id="cms">
|
||||
<?= $content; ?>
|
||||
</div>
|
||||
|
||||
<?php $this->load->view('templates/CIS-Footer', $includesArray); ?>
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
$includesArray = array(
|
||||
'title' => $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 ?? [])
|
||||
);
|
||||
?>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php $this->load->view('templates/FHC-Footer', $includesArray); ?>
|
||||
@@ -0,0 +1,161 @@
|
||||
<?php
|
||||
$includesArray = array(
|
||||
'title' => $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' => []];
|
||||
|
||||
?>
|
||||
|
||||
<div id="cis4">
|
||||
<header>
|
||||
<div id="cis-navigation-top" class="navbar navbar-expand-lg fixed-top navbar-dark bg-primary p-0">
|
||||
<button class="navbar-toggler border-0" type="button" data-bs-toggle="offcanvas" data-bs-target="#cis-navigation-top-offcanvas">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<a class="navbar-brand col-auto col-lg-2 px-3 py-0 m-0" href="<?= site_url('cis'); ?>">
|
||||
<img src="<?= base_url('/public/images/logo-300x160.png'); ?>" width="90">
|
||||
</a>
|
||||
<div id="cis-navigation-top-offcanvas" class="offcanvas offcanvas-start align-items-stretch mt-lg-0 w-100 px-3 px-lg-0 d-flex flex-column flex-lg-row bg-dark border-0 pt-3 pt-lg-0" tabindex="-1" data-bs-backdrop="false">
|
||||
<fhc-searchbar class="fhc-searchbar w-100" :searchoptions="{types:[],actions:{}}" :searchfunction="search"></fhc-searchbar>
|
||||
<ul class="navbar-nav flex-grow-1">
|
||||
<!-- TODO(chris): foreach menu -->
|
||||
<li class="nav-item d-lg-none">
|
||||
<a class="nav-link" href="#">Mein CIS</a>
|
||||
</li>
|
||||
<li class="nav-item d-lg-none">
|
||||
<a class="nav-link" href="#">FHTW Campus</a>
|
||||
</li>
|
||||
<li class="nav-item d-lg-none">
|
||||
<a class="nav-link" href="#">FHTW Services</a>
|
||||
</li>
|
||||
<li class="nav-item d-lg-none">
|
||||
<a class="nav-link" href="<?= site_url('cis/cms/content/10012'); ?>">COVID 19</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<div class="dropdown pe-lg-3">
|
||||
<a class="nav-link" href="#" id="dropdown01" data-bs-toggle="dropdown" data-bs-reference="parent" aria-expanded="false">
|
||||
<img src="<?= base_url('/cis/public/bild.php?src=person&person_id=' . getAuthPersonId()); ?>" class="avatar rounded-circle" width="45" height="45"/>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-menu-dark dropdown-menu-end m-0" aria-labelledby="dropdown01">
|
||||
<!-- TODO(chris): foreach menu -->
|
||||
<li><a class="dropdown-item" href="#" id="menu-profil">Profil</a></li>
|
||||
<li><a class="dropdown-item" href="#">Ampeln</a></li>
|
||||
<li><hr class="dropdown-divider"></li>
|
||||
<li><a class="dropdown-item" href="#">Logout</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="container-fluid px-0 flex-grow-1 row mx-0">
|
||||
<nav id="cis-navigation-left" class="d-none d-lg-block position-sticky col-lg-2 px-0 bg-secondary">
|
||||
<div class="btn btn-dark text-muted rounded-0 w-100 text-start"><small>MAIN MENU</small></div>
|
||||
<?php foreach($menu->childs as $entry)
|
||||
$this->load->view('templates/CIS-Menu/Entry', ['entry' => $entry, 'menu_id' => 'menu']);
|
||||
?>
|
||||
</nav>
|
||||
<!--nav class="list-group list-group-flush d-none d-lg-block position-sticky col-lg-2 px-0">
|
||||
< !-- Separator with title -- >
|
||||
<div class="list-group-item sidebar-separator-title text-muted d-flex align-items-center menu-collapsed">
|
||||
<small>MAIN MENU</small>
|
||||
</div>
|
||||
< !-- /end Separator -- >
|
||||
<a href="#submenu1" data-bs-toggle="collapse" aria-expanded="true" class="bg-primary text-white list-group-item list-group-item-action flex-column align-items-start">
|
||||
<div class="d-flex w-100 justify-content-start align-items-center">
|
||||
<i class="fa fa-user fa-fw me-3"></i>
|
||||
<span class="menu-collapsed">Mein CIS</span>
|
||||
</div>
|
||||
</a>
|
||||
<div id='submenu1' class="collapse show sidebar-submenu">
|
||||
<a href="#" class="list-group-item list-group-item-action list-group-item-dark active" id="menu-mein-bereich">
|
||||
<span class="menu-collapsed">Mein Bereich</span>
|
||||
</a>
|
||||
<a href="#" class="list-group-item list-group-item-action list-group-item-dark">
|
||||
<span class="menu-collapsed">Studium</span>
|
||||
</a>
|
||||
<a href="#" class="list-group-item list-group-item-action list-group-item-dark" id="menu-lvplan">
|
||||
<span class="menu-collapsed">LV Plan</span>
|
||||
</a>
|
||||
<a href="#" class="list-group-item list-group-item-action list-group-item-dark">
|
||||
<span class="menu-collapsed">Campus Life</span>
|
||||
</a>
|
||||
</div>
|
||||
<a href="#submenu2" data-bs-toggle="collapse" aria-expanded="false" class="bg-primary text-white list-group-item list-group-item-action flex-column align-items-start">
|
||||
<div class="d-flex w-100 justify-content-start align-items-center">
|
||||
<i class="fa fa-user fa-fw me-3"></i>
|
||||
<span class="menu-collapsed">FHTW Hochschule</span>
|
||||
</div>
|
||||
</a>
|
||||
<div id='submenu2' class="collapse sidebar-submenu">
|
||||
<a href="#" class="list-group-item list-group-item-action list-group-item-dark" id="menu-organisation">
|
||||
<span class="menu-collapsed">Organisation</span>
|
||||
</a>
|
||||
<a href="#" class="list-group-item list-group-item-action list-group-item-dark">
|
||||
<span class="menu-collapsed">Studiengänge</span>
|
||||
</a>
|
||||
<a href="#" class="list-group-item list-group-item-action list-group-item-dark">
|
||||
<span class="menu-collapsed">Forschung & Entwicklung</span>
|
||||
</a>
|
||||
<a href="#" class="list-group-item list-group-item-action list-group-item-dark">
|
||||
<span class="menu-collapsed">Technikum Wien Acadamy</span>
|
||||
</a>
|
||||
</div>
|
||||
<a href="#submenu3" data-bs-toggle="collapse" aria-expanded="false" class="bg-primary text-white list-group-item flex-column align-items-start">
|
||||
<div class="d-flex w-100 justify-content-start align-items-center">
|
||||
<i class="fa fa-user fa-fw me-3"></i>
|
||||
<span class="menu-collapsed">FHTW Services</span>
|
||||
</div>
|
||||
</a>
|
||||
<div id='submenu3' class="collapse sidebar-submenu">
|
||||
<a href="#" class="list-group-item list-group-item-action list-group-item-dark">
|
||||
<span class="menu-collapsed">Teaching & Learning Center</span>
|
||||
</a>
|
||||
<a href="#" class="list-group-item list-group-item-action list-group-item-dark">
|
||||
<span class="menu-collapsed">International Office</span>
|
||||
</a>
|
||||
<a href="#" class="list-group-item list-group-item-action list-group-item-dark">
|
||||
<span class="menu-collapsed">Bibliothek</span>
|
||||
</a>
|
||||
<a href="#" class="list-group-item list-group-item-action list-group-item-dark">
|
||||
<span class="menu-collapsed">IT-Services</span>
|
||||
</a>
|
||||
</div>
|
||||
<a href="#submenu4" data-bs-toggle="collapse" aria-expanded="false" class="bg-primary text-white list-group-item flex-column align-items-start">
|
||||
<div class="d-flex w-100 justify-content-start align-items-center">
|
||||
<i class="fa fa-user fa-fw me-3"></i>
|
||||
<span class="menu-collapsed">Links & Downloads</span>
|
||||
</div>
|
||||
</a>
|
||||
<div class="list-group-item sidebar-separator-title text-muted d-flex align-items-center menu-collapsed">
|
||||
<small>AKTUELL</small>
|
||||
</div>
|
||||
<a href="<?= site_url('cis/cms/content/10012'); ?>" class="bg-primary text-white list-group-item">
|
||||
<div class="d-flex w-100 justify-content-start align-items-center">
|
||||
<i class="fa fa-medkit fa-fw me-3"></i>
|
||||
<span class="menu-collapsed">COVID 19</span>
|
||||
</div>
|
||||
</a>
|
||||
<div class="list-group-item sidebar-separator menu-collapsed"></div>
|
||||
</ul>
|
||||
</nav-->
|
||||
<main class="ms-sm-auto col-lg-10 px-md-4 p-4 overflow-hidden">
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
$menu_id .= '-' . $entry->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;
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php if ($entry->childs) { ?>
|
||||
<?php if (substr($link, 0, 1) == '#') { ?>
|
||||
<a href="#<?= $menu_id; ?>" data-bs-toggle="collapse" aria-expanded="<?= $entry->menu_open ? 'true' : 'false'; ?>" class="btn btn-default rounded-0 w-100 text-start dropdown-toggle btn-level-<?= substr_count($menu_id, '-'); ?><?= $entry->menu_open ? '' : ' collapsed'; ?>">
|
||||
<span><?= htmlspecialchars($entry->titel); ?></span>
|
||||
</a>
|
||||
<?php } else { ?>
|
||||
<div class="btn-group w-100">
|
||||
<a<?= $link ? ' href="' . $link . '"' : ''; ?><?= $target ? ' target="' . $target . '"' : ''; ?> class="btn btn-default rounded-0 text-start btn-level-<?= substr_count($menu_id, '-'); ?>">
|
||||
<?= htmlspecialchars($entry->titel); ?>
|
||||
</a>
|
||||
<a href="#<?= $menu_id; ?>" data-bs-toggle="collapse" aria-expanded="<?= $entry->menu_open ? 'true' : 'false'; ?>"class="btn btn-default rounded-0 dropdown-toggle dropdown-toggle-split flex-grow-0<?= $entry->menu_open ? '' : ' collapsed'; ?>" >
|
||||
<span class="visually-hidden">Toggle Dropdown</span>
|
||||
</a>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<ul id="<?= $menu_id; ?>" class="nav w-100 collapse<?= $entry->menu_open ? ' show' : ''; ?>">
|
||||
<?php foreach ($entry->childs as $child)
|
||||
$this->load->view('templates/CIS-Menu/Entry', ['entry' => $child, 'menu_id' => $menu_id]);
|
||||
?>
|
||||
</ul>
|
||||
<?php } else { ?>
|
||||
<a<?= $link ? ' href="' . $link . '"' : ''; ?><?= $target ? ' target="' . $target . '"' : ''; ?> class="btn btn-default rounded-0 w-100 text-start btn-level-<?= substr_count($menu_id, '-'); ?>">
|
||||
<?= htmlspecialchars($entry->titel); ?>
|
||||
</a>
|
||||
<?php } ?>
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
<div>
|
||||
INCLUDE
|
||||
</div>
|
||||
Reference in New Issue
Block a user