Merge branch 'feature-25999/task-39464' into feature-25999/C4_TEST

This commit is contained in:
SimonGschnell
2024-05-08 11:29:39 +02:00
12 changed files with 429 additions and 124 deletions
+54 -5
View File
@@ -1,6 +1,7 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
if (!defined('BASEPATH'))
exit('No direct script access allowed');
/**
*
@@ -76,6 +77,17 @@ class Cms extends Auth_Controller
$this->load->view('CisHmvc/Cms/Content', ['content' => getData($content)]);
}
/**
* @param boolean $infoscreen
* @param string | null $studiengang_kz
* @param int | null $semester
* @param boolean $mischen
* @param string $titel
* @param boolean $edit
* @param boolean $sichtbar
*
* @return void
*/
/**
* @param boolean $infoscreen
* @param string | null $studiengang_kz
@@ -89,11 +101,48 @@ class Cms extends Auth_Controller
*/
public function news($infoscreen = false, $studiengang_kz = null, $semester = null, $mischen = true, $titel = '', $edit = false, $sichtbar = true)
{
$news = $this->cmslib->getNews($infoscreen, $studiengang_kz, $semester, $mischen, $titel, $edit, $sichtbar);
$this->load->view('CisHtml/Cms/Content', ['infoscreen' => $infoscreen, 'studiengang_kz' => $studiengang_kz, 'semester' => $semester, 'mischen' => $mischen, 'titel' => $titel, 'edit' => $edit, 'sichtbar' => $sichtbar]);
}
if (isError($news))
return $this->load->view('CisHmvc/Error', ['error' => getError($news)]);
public function getNews($infoscreen = false, $studiengang_kz = null, $semester = null, $mischen = true, $titel = '', $edit = false, $sichtbar = true)
{
$get_page = intval($this->input->get('page', true));
$get_page_size = intval($this->input->get('page_size', true));
if ($get_page) {
$page = $get_page;
}
if ($get_page_size) {
$page_size = $get_page_size;
} else {
$page_size = $this->page_size;
}
$news = $this->cmslib->getNews($infoscreen, $studiengang_kz, $semester, $mischen, $titel, $edit, $sichtbar, $page, $page_size);
$this->load->view('CisHmvc/Cms/Content', ['content' => getData($news)]);
if (isError($news)) {
$this->terminateWithJsonError(getError($news));
}
$news = hasData($news) ? getData($news) : null;
if ($news) {
echo json_encode($news);
} else {
show_error("News: No data found");
}
}
public function getNewsRowCount($infoscreen = false, $studiengang_kz = null, $semester = null, $mischen = true, $titel = '', $fachbereich_kurzbz = null, $maxalter = 0, $edit = false, $sichtbar = true, $page = 1, $page_size = 10)
{
list($studiengang_kz, $semester) = $this->cmslib->getStgAndSem($studiengang_kz, $semester);
$all = $edit;
$num_rows = $this->NewsModel->countNewsWithContent(getSprache(), $studiengang_kz, $semester, $fachbereich_kurzbz, $sichtbar, $maxalter, $page, $this->page_size, $all, $mischen);
if (isError($num_rows)) {
$this->terminateWithJsonError(getError($num_rows));
}
$num_rows = hasData($num_rows) ? getData($num_rows) : null;
if ($num_rows) {
echo json_encode($num_rows);
} else {
show_error("News number rows: No data found");
}
}
}
+49 -5
View File
@@ -1,6 +1,7 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
if (!defined('BASEPATH'))
exit('No direct script access allowed');
/**
*
@@ -10,6 +11,7 @@ class Cms extends FHC_Controller
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
@@ -23,6 +25,11 @@ class Cms extends FHC_Controller
$this->loadPhrases([
'global'
]);
$this->load->model('content/News_model', 'NewsModel');
// setting up the papgination_size
$this->page_size = 10;
}
// -----------------------------------------------------------------------------------------------------------------
@@ -59,11 +66,48 @@ class Cms extends FHC_Controller
*/
public function news($infoscreen = false, $studiengang_kz = null, $semester = null, $mischen = true, $titel = '', $edit = false, $sichtbar = true)
{
$news = $this->cmslib->getNews($infoscreen, $studiengang_kz, $semester, $mischen, $titel, $edit, $sichtbar);
$this->load->view('CisHtml/Cms/Content', ['infoscreen' => $infoscreen, 'studiengang_kz' => $studiengang_kz, 'semester' => $semester, 'mischen' => $mischen, 'titel' => $titel, 'edit' => $edit, 'sichtbar' => $sichtbar]);
}
if (isError($news))
return $this->load->view('CisHtml/Error', ['error' => getError($news)]);
public function getNews($infoscreen = false, $studiengang_kz = null, $semester = null, $mischen = true, $titel = '', $edit = false, $sichtbar = true)
{
$get_page = intval($this->input->get('page', true));
$get_page_size = intval($this->input->get('page_size', true));
if ($get_page) {
$page = $get_page;
}
if ($get_page_size) {
$page_size = $get_page_size;
} else {
$page_size = $this->page_size;
}
$news = $this->cmslib->getNews($infoscreen, $studiengang_kz, $semester, $mischen, $titel, $edit, $sichtbar, $page, $page_size);
$this->load->view('CisHtml/Cms/Content', ['content' => getData($news)]);
if (isError($news)) {
$this->terminateWithJsonError(getError($news));
}
$news = hasData($news) ? getData($news) : null;
if ($news) {
echo json_encode($news);
} else {
show_error("News: No data found");
}
}
public function getNewsRowCount($infoscreen = false, $studiengang_kz = null, $semester = null, $mischen = true, $titel = '', $fachbereich_kurzbz = null, $maxalter = 0, $edit = false, $sichtbar = true, $page = 1, $page_size = 10)
{
list($studiengang_kz, $semester) = $this->cmslib->getStgAndSem($studiengang_kz, $semester);
$all = $edit;
$num_rows = $this->NewsModel->countNewsWithContent(getSprache(), $studiengang_kz, $semester, $fachbereich_kurzbz, $sichtbar, $maxalter, $page, $this->page_size, $all, $mischen);
if (isError($num_rows)) {
$this->terminateWithJsonError(getError($num_rows));
}
$num_rows = hasData($num_rows) ? getData($num_rows) : null;
if ($num_rows) {
echo json_encode($num_rows);
} else {
show_error("News number rows: No data found");
}
}
}
+54 -5
View File
@@ -1,6 +1,7 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
if (!defined('BASEPATH'))
exit('No direct script access allowed');
/**
*
@@ -46,6 +47,17 @@ class Cms extends FHC_Controller
$this->load->view('CisHtml/Cms/Content', ['content' => getData($content)]);
}
/**
* @param boolean $infoscreen
* @param string | null $studiengang_kz
* @param int | null $semester
* @param boolean $mischen
* @param string $titel
* @param boolean $edit
* @param boolean $sichtbar
*
* @return void
*/
/**
* @param boolean $infoscreen
* @param string | null $studiengang_kz
@@ -59,11 +71,48 @@ class Cms extends FHC_Controller
*/
public function news($infoscreen = false, $studiengang_kz = null, $semester = null, $mischen = true, $titel = '', $edit = false, $sichtbar = true)
{
$news = $this->cmslib->getNews($infoscreen, $studiengang_kz, $semester, $mischen, $titel, $edit, $sichtbar);
$this->load->view('CisHtml/Cms/Content', ['infoscreen' => $infoscreen, 'studiengang_kz' => $studiengang_kz, 'semester' => $semester, 'mischen' => $mischen, 'titel' => $titel, 'edit' => $edit, 'sichtbar' => $sichtbar]);
}
if (isError($news))
return $this->load->view('CisHtml/Error', ['error' => getError($news)]);
public function getNews($infoscreen = false, $studiengang_kz = null, $semester = null, $mischen = true, $titel = '', $edit = false, $sichtbar = true)
{
$get_page = intval($this->input->get('page', true));
$get_page_size = intval($this->input->get('page_size', true));
if ($get_page) {
$page = $get_page;
}
if ($get_page_size) {
$page_size = $get_page_size;
} else {
$page_size = $this->page_size;
}
$news = $this->cmslib->getNews($infoscreen, $studiengang_kz, $semester, $mischen, $titel, $edit, $sichtbar, $page, $page_size);
$this->load->view('CisHtml/Cms/Content', ['content' => getData($news)]);
if (isError($news)) {
$this->terminateWithJsonError(getError($news));
}
$news = hasData($news) ? getData($news) : null;
if ($news) {
echo json_encode($news);
} else {
show_error("News: No data found");
}
}
public function getNewsRowCount($infoscreen = false, $studiengang_kz = null, $semester = null, $mischen = true, $titel = '', $fachbereich_kurzbz = null, $maxalter = 0, $edit = false, $sichtbar = true, $page = 1, $page_size = 10)
{
list($studiengang_kz, $semester) = $this->cmslib->getStgAndSem($studiengang_kz, $semester);
$all = $edit;
$num_rows = $this->NewsModel->countNewsWithContent(getSprache(), $studiengang_kz, $semester, $fachbereich_kurzbz, $sichtbar, $maxalter, $page, $this->page_size, $all, $mischen);
if (isError($num_rows)) {
$this->terminateWithJsonError(getError($num_rows));
}
$num_rows = hasData($num_rows) ? getData($num_rows) : null;
if ($num_rows) {
echo json_encode($num_rows);
} else {
show_error("News number rows: No data found");
}
}
}
+50 -1
View File
@@ -60,6 +60,9 @@ class DB_Model extends CI_Model
protected $pk; // Name of the PrimaryKey for DB-Update, Load, ...
protected $hasSequence; // False if this table has a composite primary key that is not using a sequence
// True if this table has a primary key that uses a sequence
//protected $paginationOptions; // $page and $page_size together in an associative array
protected $page;
protected $page_size;
private $executedQueryMetaData;
private $executedQueryListFields;
@@ -531,7 +534,7 @@ class DB_Model extends CI_Model
if (!is_numeric($start) || (is_numeric($start) && $start <= 0))
return error('The start parameter is not valid', EXIT_MODEL);
if (is_numeric($end) && $end > $start)
if (is_numeric($end))
{
$this->db->limit($start, $end);
}
@@ -1342,5 +1345,51 @@ class DB_Model extends CI_Model
return $udfs;
}
/**
* addPagination
* adds a limit and an optional offset depending on the arguments passed to the function
* @param int $page page to be queried
* @param int $page_size page_size used to calculate the offset of the pagination
* @param int | null $num_rows used to calculate the total amout of pages that are available with the $page and $page_size arguments
*
* @return void
*/
function addPagination( $page, $page_size, $num_rows=null)
{
if (isset($page) && is_numeric($page) && isset($page_size) && is_numeric($page_size) && $page > 0 && $page_size > 0) {
if (isset($num_rows) && is_numeric($num_rows) && $num_rows > 0) {
$floatMaxPageCount = $num_rows / $page_size;
$maxPageCount = ceil($floatMaxPageCount);
if($page > $maxPageCount){
$page = $maxPageCount;
}
}
$offset = (($page-1) * $page_size);
$this->addLimit($page_size, $offset);
} else {
$this->addLimit($page_size);
}
}
/**
* getQueryNumRows
* returns the number of rows of the current build query of the codeigniter query builder instance
* @param bool $reset resets the select of the query
*
* @return Result_object $num_rows
*/
function getNumRows($reset=false)
{
// returns the number of rows when executing the current query without reseting the select statement of the query
$num_rows = $this->db->count_all_results($this->dbTable,$reset);
if($num_rows){
return success($num_rows);
}else{
return error($this->db->error(), EXIT_DATABASE);
}
}
}
+40 -36
View File
@@ -1,6 +1,7 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
if (!defined('BASEPATH'))
exit('No direct script access allowed');
use \DateTime as DateTime;
use \DOMDocument as DOMDocument;
@@ -46,16 +47,16 @@ class CmsLib
*/
public function getContent($content_id, $version = null, $sprache = null, $sichtbar = true)
{
if(!is_numeric($content_id))
if (!is_numeric($content_id))
return error('ContentID ist ungueltig');
if ($sprache === null)
$sprache = getUserLanguage();
$islocked = $this->ci->ContentgruppeModel->loadWhere(['content_id' => $content_id]);
if (isError($islocked))
return $islocked;
if (getData($islocked)) {
$uid = getAuthUID();
$isberechtigt = $this->ci->ContentgruppeModel->berechtigt($content_id, $uid);
@@ -72,11 +73,9 @@ class CmsLib
return $content;
// Legt einen Logeintrag für die Klickstatistik an
if (defined('LOG_CONTENT') && LOG_CONTENT)
{
if (defined('LOG_CONTENT') && LOG_CONTENT) {
// Nur eingeloggte User werden geloggt, das sonst auch alle Infoscreenaufrufe und dgl. mitgeloggt werden
if (isLogged())
{
if (isLogged()) {
$request_data = 'content_id=' . $content_id;
if ($version !== null)
$request_data .= '&version=' . $version;
@@ -174,6 +173,30 @@ class CmsLib
], true));
}
/**
* @param string $studiengang_kz
* @param string $semester
*
* @return array queried studiengang_kz and semester
*/
public function getStgAndSem($studiengang_kz, $semester)
{
$this->ci->load->model('crm/Student_model', 'StudentModel');
//Zum anzeigen der Studiengang-Details neben den News
$student = $this->ci->StudentModel->loadWhere(['student_uid' => getAuthUID()]);
if (isError($student))
return $student;
if (getData($student)) {
$student = current(getData($student));
if ($studiengang_kz === null)
$studiengang_kz = $student->studiengang_kz;
if ($semester === null)
$semester = $student->semester;
}
return [$studiengang_kz, $semester];
}
/**
* @param boolean $infoscreen
* @param string | null $studiengang_kz
@@ -185,36 +208,21 @@ class CmsLib
*
* @return void
*/
public function getNews($infoscreen = false, $studiengang_kz = null, $semester = null, $mischen = true, $titel = '', $edit = false, $sichtbar = true)
public function getNews($infoscreen = false, $studiengang_kz = null, $semester = null, $mischen = true, $titel = '', $edit = false, $sichtbar = true, $page = 1, $page_size = 10)
{
$this->ci->load->model('crm/Student_model', 'StudentModel');
$this->ci->load->model('organisation/Studiengang_model', 'StudiengangModel');
if (!$infoscreen && ($studiengang_kz === null || $semester === null))
{
//Zum anzeigen der Studiengang-Details neben den News
$student = $this->ci->StudentModel->loadWhere(['student_uid' => get_uid()]);
if (isError($student))
return $student;
if (getData($student)) {
$student = current(getData($student));
if ($studiengang_kz === null)
$studiengang_kz = $student->studiengang_kz;
if ($semester === null)
$semester = $student->semester;
}
}
list($studiengang_kz, $semester) = $this->getStgAndSem($studiengang_kz, $semester);
$all = $edit;
$xml = '<?xml version="1.0" encoding="UTF-8"?><content>';
$this->ci->load->model('content/News_model', 'NewsModel');
$news = $this->ci->NewsModel->getNewsWithContent(getSprache(), $studiengang_kz, $semester, null, $sichtbar, 0, 0, $all, $mischen);
$news = $this->ci->NewsModel->getNewsWithContent(getSprache(), $studiengang_kz, $semester, null, $sichtbar, 0, $page, $page_size, $all, $mischen);
if (isError($news))
return $news;
$news = getData($news);
//var_dump($news->maxPageCount);
foreach ($news as $newsobj) {
if ($studiengang_kz && $edit && !$newsobj->studiengang_kz)
continue;
@@ -225,17 +233,14 @@ class CmsLib
$xml .= "<newswrapper>" . $newsobj->content . $datum . $id . "</newswrapper>";
}
if ($studiengang_kz != 0)
{
if ($studiengang_kz != 0) {
$stg_obj = $this->ci->StudiengangModel->load($studiengang_kz);
if (isError($stg_obj))
return $stg_obj;
$stg_obj = current(getData($stg_obj) ?: []);
if ($stg_obj)
{
if (!$edit && !$infoscreen)
{
if ($stg_obj) {
if (!$edit && !$infoscreen) {
$extras = $this->getNewsExtras($stg_obj, $semester);
if (isError($extras))
return $extras;
@@ -245,8 +250,7 @@ class CmsLib
}
}
if ($titel != '')
{
if ($titel != '') {
$xml .= '<news_titel>' . $titel . '</news_titel>';
}
@@ -260,7 +264,7 @@ class CmsLib
$XML = new DOMDocument();
$XML->loadXML($xml);
$xsltemplate = new DOMDocument();
$xsltemplate->loadXML($template->xslt_xhtml_c4);
+52 -51
View File
@@ -23,10 +23,12 @@ class News_model extends DB_Model
text IS NOT NULL
AND datum <= NOW() AND (datum_bis IS NULL OR datum_bis >= now()::date)
ORDER BY datum DESC
LIMIT '. $this->escape($limit)
LIMIT ' . $this->escape($limit)
);
}
/**
* @param string $sprache
* @param string $studiengang_kz
@@ -34,87 +36,86 @@ class News_model extends DB_Model
* @param string $fachbereich_kurzbz
* @param boolean $sichtbar
* @param integer $maxalter
* @param integer $maxnews
* @param integer $page
* @param integer $page_size
* @param boolean $all
* @param boolean $mischen
*
* TODO(chris): this is not a good function -> the params are all over the place
*
* @return stdObj
*/
public function getNewsWithContent($sprache, $studiengang_kz, $semester, $fachbereich_kurzbz = null, $sichtbar = true, $maxalter = 0, $maxnews = 0, $all = false, $mischen = true)
protected function prepareNewsWithContent($sprache, $studiengang_kz, $semester, $fachbereich_kurzbz = null, $sichtbar = true, $maxalter = 0, $page = 1, $page_size = 10, $all = false, $mischen = true)
{
$this->addOrder('datum', 'DESC');
$studiengang_kz = trim($studiengang_kz);
$fachbereich_kurzbz = trim($fachbereich_kurzbz);
$where = [];
$params = [];
if (trim($maxalter) != '0')
{
$where[] = "(now()-datum) < interval ? days";
$params[] = $maxalter;
if (trim($maxalter) != '0') {
$where[] = "(now()-datum) < interval " . $this->db->escape($maxalter) . " days";
}
if (!$all)
{
if (!$all) {
$where[] = "datum <= now()";
$where[] = "(datum_bis >= now()::date OR datum_bis IS NULL)";
}
if ($fachbereich_kurzbz != '*')
{
if ($fachbereich_kurzbz == '')
{
if ($fachbereich_kurzbz != '*') {
if ($fachbereich_kurzbz == '') {
$where[] = "fachbereich_kurzbz IS NULL";
}
else
{
$where[] = "fachbereich_kurzbz = ?";
$params[] = $fachbereich_kurzbz;
} else {
$where[] = "fachbereich_kurzbz = " . $this->db->escape($fachbereich_kurzbz);
}
}
if ($studiengang_kz == '0')
{
$where[] = "studiengang_kz = ?";
$params[] = $studiengang_kz;
if ($studiengang_kz == '0') {
$where[] = "studiengang_kz = " . $this->db->escape($studiengang_kz);
if ($semester === NULL)
$where[] = "semester IS NULL";
elseif ($semester === 0)
$where[] = "semester = 0";
}
elseif ($studiengang_kz != '')
{
} elseif ($studiengang_kz != '') {
$add = $mischen === true ? " OR (studiengang_kz = 0 AND semester IS NULL)" : "";
$where[] = "((studiengang_kz = ? AND semester = ?) OR (studiengang_kz = ? AND semester = 0) OR (studiengang_kz = 0 AND semester = ?)" . $add . ")";
$params[] = $studiengang_kz;
$params[] = $semester;
$params[] = $studiengang_kz;
$params[] = $semester;
$where[] = "((studiengang_kz = " . $this->db->escape($studiengang_kz) . " AND semester = " . $this->db->escape($semester) . ") OR (studiengang_kz = " . $this->db->escape($studiengang_kz) . " AND semester = 0) OR (studiengang_kz = 0 AND semester = " . $this->db->escape($semester) . ")" . $add . ")";
}
$this->addJoin('campus.tbl_contentsprache cs', 'content_id');
$where[] = "cs.sichtbar = " . ($sichtbar ? "true" : "false");
$where[] = "cs.sprache = (CASE WHEN EXISTS(SELECT 1 FROM campus.tbl_contentsprache cs2 WHERE cs2.content_id=" . $this->dbTable . ".content_id AND sprache=?) THEN ? ELSE ? END)";
$params[] = $sprache;
$params[] = $sprache;
$params[] = DEFAULT_LANGUAGE;
$where[] = "cs.version = (SELECT MAX(version) FROM campus.tbl_contentsprache cs3 WHERE cs3.content_id=" . $this->dbTable . ".content_id AND cs3.sprache = (CASE WHEN EXISTS(SELECT 1 FROM campus.tbl_contentsprache cs2 WHERE cs2.content_id=" . $this->dbTable . ".content_id AND sprache=?) THEN ? ELSE ? END))";
$params[] = $sprache;
$params[] = $sprache;
$params[] = DEFAULT_LANGUAGE;
$where[] = "cs.sprache = (CASE WHEN EXISTS(SELECT 1 FROM campus.tbl_contentsprache cs2 WHERE cs2.content_id=" . $this->dbTable . ".content_id AND sprache=" . $this->db->escape($sprache) . ") THEN " . $this->db->escape($sprache) . " ELSE " . $this->db->escape(DEFAULT_LANGUAGE) . " END)";
$where[] = "cs.version = (SELECT MAX(version) FROM campus.tbl_contentsprache cs3 WHERE cs3.content_id=" . $this->dbTable . ".content_id AND cs3.sprache = (CASE WHEN EXISTS(SELECT 1 FROM campus.tbl_contentsprache cs2 WHERE cs2.content_id=" . $this->dbTable . ".content_id AND sprache=" . $this->db->escape($sprache) . ") THEN " . $this->db->escape($sprache) . " ELSE " . $this->db->escape(DEFAULT_LANGUAGE) . " END))";
$where = implode(" AND ", $where);
$this->addOrder('datum', 'DESC');
if ($maxnews)
$this->addLimit($maxnews);
$this->db->where($where, NULL, FALSE);
$sql = $this->db->get_compiled_select($this->dbTable);
return $this->execQuery($sql, $params);
}
public function getNewsWithContent($sprache, $studiengang_kz, $semester, $fachbereich_kurzbz = null, $sichtbar = true, $maxalter = 0, $page = 1, $page_size = 10, $all = false, $mischen = true)
{
$this->prepareNewsWithContent($sprache, $studiengang_kz, $semester, $fachbereich_kurzbz, $sichtbar, $maxalter, $page, $page_size, $all, $mischen);
// getting the number of rows of the query and adding pagination to the query result
$num_rows = $this->getNumRows(true);
$this->addPagination($page, $page_size, $num_rows);
// preparing the query again because every call to get_compiled_select or cour_all_results will add the from clause to the query
$this->prepareNewsWithContent($sprache, $studiengang_kz, $semester, $fachbereich_kurzbz, $sichtbar, $maxalter, $page, $page_size, $all, $mischen);
return $this->load();
}
public function countNewsWithContent($sprache, $studiengang_kz, $semester, $fachbereich_kurzbz = null, $sichtbar = true, $maxalter = 0, $page = 1, $page_size = 10, $all = false, $mischen = true)
{
$this->prepareNewsWithContent($sprache, $studiengang_kz, $semester, $fachbereich_kurzbz, $sichtbar, $maxalter, $page, $page_size, $all, $mischen);
return $this->getNumRows();
}
}
+4 -3
View File
@@ -1,5 +1,6 @@
<?php
$includesArray = array(
'primevue3' => true,
'customJSModules' => ['public/js/apps/Cis/Cms.js'],
'customCSSs' => [
'public/css/Cis4/Cms.css',
@@ -11,8 +12,8 @@ $this->load->view('templates/CISHTML-Header', $includesArray);
?>
<div id="cms">
<?= $content; ?>
<content />
</div>
<?php $this->load->view('templates/CISHTML-Footer', $includesArray); ?>
<?php $this->load->view('templates/CISHTML-Footer', $includesArray); ?>
+36 -18
View File
@@ -1,20 +1,38 @@
import BsConfirm from "../../components/Bootstrap/Confirm.js";
//import Pagination from "../../components/Pagination/Pagination.js";
import Content from "../../components/Cis/Cms/Content.js";
import Fhcapi from "../api/fhcapifactory.js";
Vue.createApp({
mounted() {
document.querySelectorAll('#cms [data-confirm]').forEach(el => {
el.addEventListener('click', evt => {
evt.preventDefault();
BsConfirm.popup(el.dataset.confirm).then(() => {
Axios.get(el.href).then(res => {
// TODO(chris): check for success then show message and/or reload
location = location;
}).catch(err => console.error('ERROR:', err));
}).catch(()=>{});
});
});
document.querySelectorAll('#cms [data-href]').forEach(el => {
el.href = el.dataset.href.replace(/^ROOT\//, FHC_JS_DATA_STORAGE_OBJECT.app_root);
});
}
}).mount('#cms [data-confirm], #cms [data-href]');
Vue.$fhcapi = Fhcapi;
const app = Vue.createApp({
components: {
Content,
},
mounted() {
document.querySelectorAll("#cms [data-confirm]").forEach((el) => {
el.addEventListener("click", (evt) => {
evt.preventDefault();
BsConfirm.popup(el.dataset.confirm)
.then(() => {
Axios.get(el.href)
.then((res) => {
// TODO(chris): check for success then show message and/or reload
location = location;
})
.catch((err) => console.error("ERROR:", err));
})
.catch(() => {});
});
});
document.querySelectorAll("#cms [data-href]").forEach((el) => {
el.href = el.dataset.href.replace(
/^ROOT\//,
FHC_JS_DATA_STORAGE_OBJECT.app_root
);
});
},
});
app.use(primevue.config.default, { zIndex: { overlay: 9999 } });
app.mount("#cms");
//#cms [data-confirm], #cms [data-href]
+21
View File
@@ -0,0 +1,21 @@
export default {
getNews: function (page = 1, page_size = 10) {
const url =
FHC_JS_DATA_STORAGE_OBJECT.app_root +
FHC_JS_DATA_STORAGE_OBJECT.ci_router +
"/CisHtml/Cms/getNews";
return axios.get(url, {
params: {
page,
page_size,
},
});
},
getNewsRowCount: function () {
const url =
FHC_JS_DATA_STORAGE_OBJECT.app_root +
FHC_JS_DATA_STORAGE_OBJECT.ci_router +
"/CisHtml/Cms/getNewsRowCount";
return axios.get(url);
},
};
+2
View File
@@ -1,4 +1,5 @@
import Search from "./search.js";
import Cms from "./cms.js";
import UserData from "./userdata.js";
import ProfilUpdate from "./profilUpdate.js"
@@ -6,4 +7,5 @@ export default {
"Search": Search,
"UserData": UserData,
"ProfilUpdate": ProfilUpdate,
"Cms": Cms,
};
+34
View File
@@ -0,0 +1,34 @@
import Pagination from "../../Pagination/Pagination.js";
export default {
components: {
Pagination,
},
data() {
return {
content: null,
maxPageCount: 0,
page_size: 10,
};
},
methods: {
loadNewPageContent: function (data) {
Vue.$fhcapi.Cms.getNews(data.page, data.rows).then((result) => {
this.content = result.data;
});
},
},
created() {
Vue.$fhcapi.Cms.getNews(1, this.page_size).then((result) => {
this.content = result.data;
});
Vue.$fhcapi.Cms.getNewsRowCount().then((result) => {
this.maxPageCount = result.data;
});
},
template: /*html*/ `
<pagination :page_size="page_size" @page="loadNewPageContent" :maxPageCount="maxPageCount">
<div v-html="content"></div>
</pagination>`,
};
@@ -0,0 +1,33 @@
export default {
components: {
paginator: primevue.paginator,
},
emits: ["update:rows"],
props: {
maxPageCount: {
type: Number,
default: 0,
},
page_size: {
type: Number,
required: true,
},
},
data() {
return {};
},
methods: {
newPageEvent: function (data) {
//console.log("hier", data.page);
},
},
mounted() {},
template: /*html*/ `
<paginator v-model:rows="page_size" @page="(data)=>$emit('page',{...data, page:data.page+1})" :rows="page_size" :totalRecords="maxPageCount" :rowsPerPageOptions="[10, 20, 30]" ></paginator>
<slot>
Placeholder
</slot>
`,
};