diff --git a/public/js/components/Cis/Cms/News.js b/public/js/components/Cis/Cms/News.js index bf17666a2..edf700db5 100644 --- a/public/js/components/Cis/Cms/News.js +++ b/public/js/components/Cis/Cms/News.js @@ -2,115 +2,137 @@ import Pagination from "../../Pagination/Pagination.js"; import StudiengangInformation from "./StudiengangInformation/StudiengangInformation.js"; import BsConfirm from "../../Bootstrap/Confirm.js"; -import ApiCms from '../../../api/factory/cms.js'; +import ApiCms from "../../../api/factory/cms.js"; export default { name: "NewsComponent", - components: { - Pagination, - StudiengangInformation, - }, - data() { - return { - content: null, - maxPageCount: 0, - page_size: 10, - page:1, - }; - }, - watch:{ - '$p.user_language.value':function(sprache){ - this.fetchNews(); - } - }, - computed:{ - sprache: function(){ - return this.$p.user_language.value; + components: { + Pagination, + StudiengangInformation, }, - }, - methods: { - fetchNews() { - return this.$api - .call(ApiCms.getNews(this.page, this.page_size, this.sprache)) - .then(res => res.data) - .then(result => { - this.content = result; + inject: ["isMobile"], + data() { + return { + content: null, + maxPageCount: 0, + page_size: 10, + page: 1, + }; + }, + watch: { + "$p.user_language.value": function (sprache) { + this.fetchNews(); + }, + }, + computed: { + sprache: function () { + return this.$p.user_language.value; + }, + }, + methods: { + async fetchNews() { + let newsResponse = await this.$api.call( + ApiCms.getNews(this.page, this.page_size, this.sprache), + ); + this.content = newsResponse.data; - 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)); + 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(() => { - }); - }); - }); - document.querySelectorAll("#cms [data-href]").forEach((el) => { - el.href = el.dataset.href.replace( - /^ROOT\//, - FHC_JS_DATA_STORAGE_OBJECT.app_root - ); - }); - Vue.nextTick(()=>{ - document.querySelectorAll(".card-header").forEach((el) => { - el.classList.add("fhc-primary"); - }); - document.querySelectorAll(".row").forEach((el) => { - el.classList.add("w-100"); - el.classList.add("align-items-center"); - - }); - document.querySelectorAll(".row h2").forEach((el) => { - el.classList.add("mb-0"); - }); + .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, + ); + }); - }) + await this.$nextTick(); + this.formatExternalHtml(); + }, + async loadNewPageContent(data) { + let newsResponse = await this.$api.call( + ApiCms.getNews(data.page, data.rows), + ); + this.content = newsResponse.data; + + await this.$nextTick(); + + this.formatExternalHtml(); + }, + formatExternalHtml() { + document + .querySelectorAll(".news-list-item .card-header") + .forEach((el) => { + el.classList.add("fhc-primary"); + }); + document.querySelectorAll(".news-list-item .row").forEach((el) => { + el.classList.add("w-100"); + el.classList.add("align-items-center"); + }); + document + .querySelectorAll(".news-list-item .row h2") + .forEach((el) => { + el.classList.add("mb-0"); }); }, - loadNewPageContent(data) { - this.$api - .call(ApiCms.getNews(data.page, data.rows)) - .then(res => res.data) - .then(result => { - this.content = result; - - }); - } - }, - created() { - this.fetchNews(); + afterPageUpdated(event) { + this.page = event.page; + this.page_size = event.rows; + this.$refs.newsPageHeading.scrollIntoView({block: 'end'}); + this.loadNewPageContent(event); + }, + }, + created() { + this.fetchNews(); this.$api .call(ApiCms.getNewsRowCount()) - .then(res => res.data) - .then(result => { + .then((res) => res.data) + .then((result) => { this.maxPageCount = result; }); - }, - template: /*html*/ ` -