github.com/soulteary/pocket-bookcase@v0.0.0-20240428065142-0b5a9a0fc98a/internal/view/content.html (about) 1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <base href="$$.RootPath$$"> 6 <title>$$.Book.Title$$ - Shiori - Bookmarks Manager</title> 7 8 <meta charset="UTF-8"> 9 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 10 11 <link rel="apple-touch-icon-precomposed" sizes="152x152" href="assets/res/apple-touch-icon-152x152.png"> 12 <link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/res/apple-touch-icon-144x144.png"> 13 <link rel="icon" type="image/png" href="assets/res/favicon-32x32.png" sizes="32x32"> 14 <link rel="icon" type="image/png" href="assets/res/favicon-16x16.png" sizes="16x16"> 15 <link rel="icon" type="image/x-icon" href="assets/res/favicon.ico"> 16 17 <link href="assets/css/style.css" rel="stylesheet"> 18 19 <script src="assets/js/dayjs.min.js"></script> 20 <script src="assets/js/vue.min.js"></script> 21 </head> 22 23 <body class="night"> 24 <div id="content-scene" :class="{night: appOptions.NightMode}"> 25 <div id="header"> 26 <p id="metadata" v-cloak>Added {{localtime()}}</p> 27 <p id="title" dir="auto">$$.Book.Title$$</p> 28 <div id="links"> 29 <a href="$$.Book.URL$$" target="_blank" rel="noopener noreferrer">View Original</a> 30 $$if .Book.HasArchive$$ 31 <a href="bookmark/$$.Book.ID$$/archive">View Archive</a> 32 $$end$$ 33 $$if .Book.HasEbook$$ 34 <a href="bookmark/$$.Book.ID$$/ebook" download="$$.Book.Title$$.epub">Download Ebook</a> 35 $$end$$ 36 </div> 37 </div> 38 <div id="content" dir="auto" v-pre> 39 $$.HTML$$ 40 </div> 41 </div> 42 43 <script type="module"> 44 // Create initial variable 45 import basePage from "./assets/js/page/base.js"; 46 47 new Vue({ 48 el: '#content-scene', 49 mixins: [basePage], 50 data: { 51 modified: "$$.Book.Modified$$" 52 }, 53 methods: { 54 localtime() { 55 var strTime = this.modified.replace(" ", "T"); 56 if (!strTime.endsWith("Z")) { 57 strTime += "Z"; 58 } 59 return dayjs(strTime).format("D MMMM YYYY, HH:mm:ss"); 60 }, 61 loadSetting() { 62 var opts = JSON.parse(localStorage.getItem("shiori-account")) || {}, 63 ShowId = (typeof opts.config.ShowId === "boolean") ? opts.config.ShowId : false, 64 ListMode = (typeof opts.config.ListMode === "boolean") ? opts.config.ListMode : false, 65 NightMode = (typeof opts.config.NightMode === "boolean") ? opts.config.NightMode : false, 66 UseArchive = (typeof opts.config.UseArchive === "boolean") ? opts.config.UseArchive : false; 67 CreateEbook = (typeof opts.config.CreateEbook === "boolean") ? opts.config.CreateEbook : false; 68 69 this.appOptions = { 70 ShowId: ShowId, 71 ListMode: ListMode, 72 NightMode: NightMode, 73 UseArchive: UseArchive, 74 CreateEbook: CreateEbook, 75 }; 76 77 document.body.className = NightMode ? "night" : ""; 78 } 79 }, 80 mounted() { 81 this.loadSetting(); 82 83 document.querySelectorAll("#content a").forEach(elem => { 84 elem.setAttribute("target", "_blank"); 85 elem.setAttribute("rel", "noopener noreferrer"); 86 }); 87 } 88 }); 89 </script> 90 </body> 91 92 </html>