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>