diff --git a/frontend/package.json b/frontend/package.json index 394f656..77ef82c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -26,6 +26,7 @@ "@popperjs/core": "^2.11.8", "axios": "^1.4.0", "bootstrap": "^5.3.1", + "buffer": "^6.0.3", "pdfjs-dist": "^4.2.67", "pinia": "^2.1.6", "quill": "^1.3.7", diff --git a/frontend/src/mixins/navigator.js b/frontend/src/mixins/navigator.js index ff86cb4..4692825 100644 --- a/frontend/src/mixins/navigator.js +++ b/frontend/src/mixins/navigator.js @@ -14,6 +14,9 @@ export default { mnx_navToContact() { this.$router.push('/contact') }, + mnx_navToContentViewer(content_id) { + this.$router.push('/content-viewer/' + content_id) + }, //common mnx_navToFrontDoor() { diff --git a/frontend/src/pages/public/Blogs.vue b/frontend/src/pages/public/Blogs.vue index 2bc6986..1c0d495 100644 --- a/frontend/src/pages/public/Blogs.vue +++ b/frontend/src/pages/public/Blogs.vue @@ -1,8 +1,14 @@ + \ No newline at end of file diff --git a/frontend/src/pages/public/ContentViewer.vue b/frontend/src/pages/public/ContentViewer.vue new file mode 100644 index 0000000..e7411a8 --- /dev/null +++ b/frontend/src/pages/public/ContentViewer.vue @@ -0,0 +1,48 @@ + + + \ No newline at end of file diff --git a/frontend/src/plugins/pdfjs/pdfjs.js b/frontend/src/plugins/pdfjs/pdfjs.js index 024a011..062e5af 100644 --- a/frontend/src/plugins/pdfjs/pdfjs.js +++ b/frontend/src/plugins/pdfjs/pdfjs.js @@ -1,6 +1,7 @@ import * as pdfjsLib from 'pdfjs-dist' - -//pdfjsLib.GlobalWorkerOptions.workerPort = new Worker() -//new URL('pdfjs-dist/build/pdf.worker.js', import.meta.url) +//need to set worker before the pdfjs can be used. +// pdfjsLib.GlobalWorkerOptions.workerPort = new Worker( +// new URL('pdfjs-dist/build/pdf.worker.mjs', import.meta.url) +// ) export { pdfjsLib } diff --git a/frontend/src/plugins/router/router.js b/frontend/src/plugins/router/router.js index a4daef5..3257d4e 100644 --- a/frontend/src/plugins/router/router.js +++ b/frontend/src/plugins/router/router.js @@ -1,10 +1,12 @@ import { createRouter, createWebHistory } from 'vue-router' import { store, userRoleEnum } from '../store/index' + //public import About from '../../pages/public/About.vue' import Blogs from '../../pages/public/Blogs.vue' import Career from '../../pages/public/Career.vue' import Contact from '../../pages/public/Contact.vue' +import ContentViewer from '../../pages/public/ContentViewer.vue' //guest import FrontDoor from '../../pages/guest/FrontDoor.vue' @@ -107,6 +109,14 @@ const router = createRouter({ components: { default: Contact, footer: FooterGuest, header: HeaderGuest } }, + { + name: 'content-viewer', + path: '/content-viewer/:content_id', + meta: { requiredRoles: [userRoleEnum.NONE] }, + components: { default: ContentViewer, footer: FooterGuest, header: HeaderGuest }, + props: true + }, + // guest { name: 'front-door', diff --git a/frontend/src/utils/backend/content.js b/frontend/src/utils/backend/content.js index 5aa2db5..68a48f4 100644 --- a/frontend/src/utils/backend/content.js +++ b/frontend/src/utils/backend/content.js @@ -11,5 +11,17 @@ class ContentApi { ) return request } + static retrieve_blog_content(document_id) { + const request = backendAxios.post( + '/api/content/retrieve-blog-content', + { + document_id: document_id + }, + { + + } + ) + return request + } } export { ContentApi } diff --git a/frontend/src/utils/html/index.js b/frontend/src/utils/html/index.js index 9914c12..c64d1e5 100644 --- a/frontend/src/utils/html/index.js +++ b/frontend/src/utils/html/index.js @@ -1,3 +1,4 @@ export { textAreaAujuster } from './textArea' export { tooltip } from './tooltip' export { elementHandler } from './element' +export { mediaDataHandler } from './mediaData' \ No newline at end of file diff --git a/frontend/src/utils/html/mediaData.js b/frontend/src/utils/html/mediaData.js new file mode 100644 index 0000000..33f40d1 --- /dev/null +++ b/frontend/src/utils/html/mediaData.js @@ -0,0 +1,14 @@ +class MediaDataHandler { + retrieveText(mediaData) { + let prefix = "data:text/plain;base64," + let pos = mediaData.search(prefix); + if (pos < 0) return ""; + return atob(mediaData.substring(pos + prefix.length)) + } +} + + + +const mediaDataHandler = new MediaDataHandler() + +export { mediaDataHandler } diff --git a/frontend/src/utils/index.js b/frontend/src/utils/index.js index bcabe6f..353bee8 100644 --- a/frontend/src/utils/index.js +++ b/frontend/src/utils/index.js @@ -16,4 +16,4 @@ export { ValueChecker, DateUtils, OIDUtils } from './common/index' export { userProfileValidator } from './validator/index' -export { textAreaAujuster, tooltip, elementHandler } from './html/index' +export { textAreaAujuster, tooltip, elementHandler, mediaDataHandler } from './html/index'