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 @@
- Blogs
+
+
+
{{ blog.blog_name }}
+
![]()
+
+
+
+
\ 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 @@
+
+ ContentViewer
+
+
+
\ 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'