Add link to open archive and content page

This commit is contained in:
Radhi Fadlillah 2019-08-05 22:06:00 +07:00
parent af1a32ac4f
commit 5443be039e
8 changed files with 65 additions and 28 deletions

View file

@ -19,6 +19,7 @@ type Bookmark struct {
Content string `db:"content" json:"-"`
HTML string `db:"html" json:"html,omitempty"`
HasContent bool `db:"has_content" json:"hasContent"`
HasArchive bool `json:"hasArchive"`
ImageURL string `json:"imageURL"`
Tags []Tag `json:"tags"`
CreateArchive bool `json:"createArchive"`

View file

@ -28,7 +28,9 @@
<p id="title">$$.Title$$</p>
<div id="links">
<a href="$$.URL$$" target="_blank">View Original</a>
<a href="/bookmark/$$.ID$$/archive" target="_blank">View Archive</a>
$$if .HasArchive$$
<a href="/bookmark/$$.ID$$/archive">View Archive</a>
$$end$$
</div>
</div>
<div id="content">
@ -63,6 +65,10 @@
},
mounted() {
this.loadSetting();
document.querySelectorAll("#content a").forEach((elem) => {
elem.setAttribute("target", "_blank");
});
}
});
</script>

View file

@ -1 +1 @@
:root{--main:#F44336;--border:#E5E5E5;--colorLink:#999;--archiveHeaderBg:rgba(255,255,255,0.95)}@media (prefers-color-scheme:dark){:root{--border:#191919;--archiveHeaderBg:rgba(41,41,41,0.95)}}#shiori-archive-header{top:0;left:0;right:0;height:60px;position:fixed;padding:0 16px;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap;-webkit-box-align:center;align-items:center;font-size:16px;border-bottom:1px solid var(--border);background-color:var(--archiveHeaderBg);z-index:9999}#shiori-archive-header *{border-width:0;box-sizing:border-box;font-family:"Source Sans Pro",sans-serif;margin:0;padding:0}#shiori-archive-header>*:not(:last-child){margin-right:8px}#shiori-archive-header>.spacer{-webkit-box-flex:1;flex:1}#shiori-archive-header #shiori-logo{font-size:2em;font-weight:100;color:var(--main)}#shiori-archive-header #shiori-logo span{margin-right:8px}#shiori-archive-header a{font-size:1em;display:block;color:var(--colorLink);text-decoration:underline}#shiori-archive-header a:hover,#shiori-archive-header a:focus{color:var(--main)}
:root{--main:#F44336;--border:#E5E5E5;--colorLink:#999;--archiveHeaderBg:rgba(255,255,255,0.95)}@media (prefers-color-scheme:dark){:root{--border:#191919;--archiveHeaderBg:rgba(41,41,41,0.95)}}#shiori-archive-header{top:0;left:0;right:0;height:60px;position:fixed;padding:0 16px;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap;-webkit-box-align:center;align-items:center;font-size:16px;border-bottom:1px solid var(--border);background-color:var(--archiveHeaderBg);z-index:9999}#shiori-archive-header *{border-width:0;box-sizing:border-box;font-family:"Source Sans Pro",sans-serif;margin:0;padding:0}#shiori-archive-header>*:not(:last-child){margin-right:8px}#shiori-archive-header>.spacer{-webkit-box-flex:1;flex:1}#shiori-archive-header #shiori-logo{font-size:2em;font-weight:100;color:var(--main)}#shiori-archive-header #shiori-logo span{margin-right:8px}#shiori-archive-header a{display:block;color:var(--colorLink);text-decoration:underline}#shiori-archive-header a:hover,#shiori-archive-header a:focus{color:var(--main)}@media (max-width:600px){#shiori-archive-header{font-size:14px;height:50px}#shiori-archive-header #shiori-logo{font-size:1.5em}}

View file

@ -4,7 +4,7 @@ var template = `
v-if="editMode"
@click="selectBookmark">
</a>
<a class="bookmark-link" :href="url" target="_blank">
<a class="bookmark-link" :href="mainURL" target="_blank">
<span class="thumbnail" v-if="imageURL" :style="thumbnailStyleURL"></span>
<p class="title">{{title}}</p>
<p class="excerpt" v-if="!imageURL">{{excerpt}}</p>
@ -40,6 +40,8 @@ export default {
title: String,
excerpt: String,
imageURL: String,
hasContent: Boolean,
hasArchive: Boolean,
index: Number,
showId: Boolean,
editMode: Boolean,
@ -53,9 +55,14 @@ export default {
}
},
computed: {
mainURL() {
if (this.hasContent) return `/bookmark/${this.id}/content`;
else if (this.hasArchive) return `/bookmark/${this.id}/archive`;
else return this.url;
},
hostnameURL() {
var url = new URL(this.url);
return url.hostname;
return url.hostname.replace(/^www\./, "");
},
thumbnailStyleURL() {
return {

View file

@ -52,7 +52,6 @@
}
a {
font-size: 1em;
display: block;
color: var(--colorLink);
text-decoration: underline;
@ -62,4 +61,13 @@
color: var(--main);
}
}
@media (max-width: 600px) {
font-size: 14px;
height: 50px;
#shiori-logo {
font-size: 1.5em;
}
}
}

View file

@ -25,10 +25,10 @@ var assets = func() http.FileSystem {
},
"/content.html": &vfsgen۰CompressedFileInfo{
name: "content.html",
modTime: time.Date(2019, 8, 5, 10, 3, 3, 631286836, time.UTC),
uncompressedSize: 2635,
modTime: time.Date(2019, 8, 5, 15, 4, 52, 197542625, time.UTC),
uncompressedSize: 2834,
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x56\x7f\x6f\xdb\x36\x10\xfd\xdf\x9f\xe2\xc6\x11\x68\x02\x44\xd2\x9c\xa6\xc5\xa0\x48\x2e\xba\x74\xc3\x32\x34\x4d\xb1\x24\x05\x86\x61\x18\x68\xf1\x2c\xb1\xa1\x48\x81\xa4\x7f\x64\x69\xbe\xfb\x40\x49\xb6\x25\x5b\x59\x12\x4c\xff\x98\xba\x77\xf7\x1e\x75\xbc\x3b\x3a\xf9\xee\xc3\xe5\xd9\xf5\x1f\x9f\x7f\x86\xc2\x95\x72\x32\x4a\xfc\x0f\x48\xa6\xf2\x94\xa0\x22\x93\xd1\x28\x29\x90\xf1\xc9\x08\x00\x20\x71\xc2\x49\x9c\x50\x1a\x5e\xfb\x05\xa5\x10\xc0\x55\x21\xb4\x11\x10\xc0\x4f\x5a\xdf\x96\xcc\xdc\x5a\xb8\x60\x8a\xe5\x68\x92\xa8\x71\x1f\x35\xb1\x25\x3a\x06\x59\xc1\x8c\x45\x97\x92\x9b\xeb\x5f\x82\x1f\xc9\xa4\x03\x29\x56\x62\x4a\x16\x02\x97\x95\x36\x8e\x40\xa6\x95\x43\xe5\x52\xb2\x14\xdc\x15\x29\xc7\x85\xc8\x30\xa8\x5f\x8e\x40\x28\xe1\x04\x93\x81\xcd\x98\xc4\x74\x1c\xfe\x40\xd6\x32\x52\xa8\x5b\x30\x28\x53\xc2\xaa\x4a\x62\xe0\xf4\x3c\x2b\x02\x91\x69\x15\x54\x06\x33\x5d\x56\xda\x22\x27\x60\xc5\x3f\x68\x53\x32\x7e\x73\xbc\x1a\xbf\x39\x26\x50\x18\x9c\xa5\x24\x32\x68\xa3\xbd\xc0\xd6\x29\xac\x54\xbe\xde\xf2\x4b\x65\x4e\x4e\x56\xe3\x93\x93\x27\x64\x1a\xa7\x61\x19\xef\x41\xc0\xdd\x55\x98\x12\x51\xb2\x1c\x23\xef\xd6\xe5\x9b\xb1\x45\x4d\xf3\xfa\x78\xf5\xba\xd9\xeb\x5a\xbd\xb6\xfc\x1f\xca\xf1\xdb\xd5\xf8\x6d\x8f\xb2\xb6\x3c\x87\x72\x15\x34\xb6\x7d\xd6\x50\x64\xba\x7f\x6c\xad\x4f\x66\x6d\x34\xd3\xca\xb1\x25\x5a\x5d\x62\x58\x0a\x15\x66\xd6\x92\x46\xc2\xba\x3b\x89\xb6\x40\x74\x3d\xf9\x4e\xec\xd6\xe3\x45\x61\xd9\xdc\x3a\x5d\x06\x5c\x30\xa9\xf3\x17\x45\x4e\xdb\xd2\x0f\x84\xc3\xf2\xb1\xc8\x26\xd4\x66\x46\x54\x0e\xac\xc9\x52\x12\x7d\xb5\xd1\x62\xde\x7c\xdf\x57\x4b\x26\x49\xd4\xa0\x93\x51\x12\x35\x4d\x37\x4a\xa6\x9a\xdf\xb5\xaa\x5c\x2c\x40\xf0\x94\xb4\x8d\x11\xd8\x0c\x15\x12\x88\x33\xc9\xac\x4d\xc9\xbd\x12\x79\xe1\x62\xe0\xc2\x56\x92\xdd\x5d\x56\x4e\x68\x65\xc3\xda\x7a\xa1\x39\x3e\xb4\xbb\xef\x71\x79\x19\x34\x1d\xa4\x46\xab\x1a\xf3\x5d\xc9\x99\x63\x64\xf2\x9e\x73\xe4\x40\x69\x78\xa1\xb9\x98\x09\xe4\x94\xc2\xcd\xf5\x59\x12\x55\x83\x81\x75\xdb\x93\xce\x98\xd8\x77\x5c\xeb\xfb\x4c\xda\x1d\xf9\xda\x81\xb5\xf9\xa5\x34\xbc\xf9\xfd\x23\xa5\x04\x1c\x33\xb9\x9f\x1c\x7f\x4f\x25\x53\xb7\x64\xf2\x45\xe0\x12\x2e\x8d\xc8\x85\x62\x32\x89\xd8\x7f\x90\x6c\x0e\x28\xa2\x34\x3c\xff\x40\x69\xc4\x4c\x56\x88\x05\x3e\xc2\xfa\xbe\x41\xf7\x48\x93\x88\x8b\x45\x27\x8b\x3b\xaf\x3b\x07\xb4\xf3\x59\x94\xd6\xa3\x35\xfc\xf5\xfa\xe2\x23\xa5\x43\x24\xed\xb2\x57\x28\x4d\x2b\x95\x9a\xcf\x7d\x4a\x37\x51\x51\x04\x67\x06\x99\xc3\xf5\x24\x84\x05\x33\x82\x4d\x25\x6e\x5c\x44\xe9\xe7\x28\x4c\x99\xc5\xcf\x2c\x47\x98\x19\x5d\x42\x5d\x73\x95\xef\x4b\x6f\xf7\x55\x77\x3a\xda\x44\x28\x5c\xc2\x97\x39\x1e\xdc\xf7\xf6\x8d\x32\x86\x57\xdf\xf7\x8a\xee\xd5\x51\xcf\xa3\x14\x2b\xa1\x6c\x0c\x7f\xae\xb5\xfe\xda\xc1\xd1\x15\x9a\xdb\x18\xee\xf7\x8e\x48\x6a\xc6\xaf\xd0\x39\xa1\xf2\x83\xc3\x01\xdc\x3f\x0b\x66\x40\x57\xce\x42\x0a\xbf\x5d\x5d\x7e\x0a\x2b\x7f\x85\x1c\x48\x9d\x31\x79\xe5\xb4\x61\x39\x86\x39\xba\x73\x87\xe5\x01\xb1\xf5\x6d\x14\xd8\x86\x92\x1c\x1e\xc2\xb7\x6f\x70\xff\x70\x34\x48\xec\x1f\x5b\xe8\xe5\x39\x87\x14\x0e\x7c\xa6\xf5\xac\x56\x0a\xd7\xd6\x34\x05\x32\xd5\x5a\x22\x53\xe4\x10\xde\xf5\xc0\x18\x66\x4c\x5a\x7c\x9c\x5a\x0a\x5b\x37\xde\x2e\xf9\xd6\x3e\x48\xbf\x81\x9f\x14\xd8\xb4\xf6\xae\x42\x07\x18\x94\xd8\xe2\x4f\x6a\xcc\x2d\xb6\xdd\xb0\x2b\xd2\x45\x06\x55\x3a\x0e\xad\xcc\xe9\x46\x66\x50\xcf\x15\xc2\x86\xfd\xf1\x05\xe9\x23\x45\xb1\x3d\xbb\xb8\xfd\x7d\xfa\x20\xe2\xcd\xea\x19\x39\x8d\xb7\xcb\xe7\x64\x27\xee\xac\x87\xfd\x1f\x3a\x9d\xd6\x7d\xb8\xce\xe6\x25\x2a\x17\xfa\x51\x1f\xd6\xc3\xfc\x13\x2b\x7d\xba\xb7\xc7\xf4\x0e\x48\xfd\x42\x20\x06\x42\x4e\xf7\x78\x1e\x7a\x96\x9d\x72\x2f\xf5\x5c\x39\xe4\x83\xfd\x55\xa7\xbc\xd7\x84\x7d\xf2\x2d\xf1\x43\x8b\x74\x2f\xa9\xe6\x72\xf2\xb7\x95\xff\xef\xf8\x6f\x00\x00\x00\xff\xff\x36\xa9\xa6\x56\x4b\x0a\x00\x00"),
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x56\x7f\x6f\xdb\x36\x10\xfd\xdf\x9f\xe2\xc6\x11\xa8\x0d\x44\xd2\x9c\xa6\xc5\xe0\x58\x2e\xb2\xb4\x43\x33\x34\x4d\xb1\x24\x05\x86\x61\x18\x68\xf1\x2c\xb1\xa1\x48\x8d\xa4\x7f\x64\x69\xbe\xfb\x40\x49\xb6\x25\x5b\x46\x12\x4c\xff\x98\xba\x77\xf7\x1e\x75\xe4\xdd\x79\xfc\xc3\xfb\xab\xf3\x9b\x3f\xbe\x7c\x80\xcc\xe5\x72\xd2\x1b\xfb\x1f\x90\x4c\xa5\x31\x41\x45\x26\xbd\xde\x38\x43\xc6\x27\x3d\x00\x80\xb1\x13\x4e\xe2\x84\xd2\xf0\xc6\x2f\x28\x85\x00\xae\x33\xa1\x8d\x80\x00\x7e\xd1\xfa\x2e\x67\xe6\xce\xc2\x25\x53\x2c\x45\x33\x8e\x2a\xf7\x5e\x15\x9b\xa3\x63\x90\x64\xcc\x58\x74\x31\xb9\xbd\xf9\x35\xf8\x99\x4c\x1a\x90\x62\x39\xc6\x64\x21\x70\x59\x68\xe3\x08\x24\x5a\x39\x54\x2e\x26\x4b\xc1\x5d\x16\x73\x5c\x88\x04\x83\xf2\xe5\x08\x84\x12\x4e\x30\x19\xd8\x84\x49\x8c\x87\xe1\x4f\x64\x2d\x23\x85\xba\x03\x83\x32\x26\xac\x28\x24\x06\x4e\xcf\x93\x2c\x10\x89\x56\x41\x61\x30\xd1\x79\xa1\x2d\x72\x02\x56\xfc\x8b\x36\x26\xc3\x37\xc7\xab\xe1\x9b\x63\x02\x99\xc1\x59\x4c\x22\x83\x36\xda\x0b\xac\x9d\xc2\x42\xa5\xeb\x2d\xbf\x54\xe6\xe4\x64\x35\x3c\x39\x79\x42\xa6\x72\xea\x96\xf1\x1e\x04\xdc\x7d\x81\x31\x11\x39\x4b\x31\xf2\x6e\x4d\xbe\x19\x5b\x94\x34\xaf\x8f\x57\xaf\xab\xbd\xae\xd5\x4b\xcb\xff\xa1\x1c\xbe\x5d\x0d\xdf\xb6\x28\x4b\xcb\x73\x28\x57\x41\x65\xdb\x67\x0d\x45\xa2\xdb\xc7\x56\xfb\x24\xd6\x46\x33\xad\x1c\x5b\xa2\xd5\x39\x86\xb9\x50\x61\x62\x2d\xa9\x24\xac\xbb\x97\x68\x33\x44\xd7\x92\x6f\xc4\x6e\x3d\x5e\x14\x96\xcc\xad\xd3\x79\xc0\x05\x93\x3a\x7d\x51\xe4\xb4\xbe\xfa\x81\x70\x98\x1f\x8a\xac\x42\x6d\x62\x44\xe1\xc0\x9a\x24\x26\xd1\x37\x1b\x2d\xe6\xd5\xf7\x7d\xb3\x64\x32\x8e\x2a\x74\xd2\x1b\x47\x55\xd1\xf5\xc6\x53\xcd\xef\x6b\x55\x2e\x16\x20\x78\x4c\xea\xc2\x08\x6c\x82\x0a\x09\x8c\x12\xc9\xac\x8d\xc9\x83\x12\x69\xe6\x46\xc0\x85\x2d\x24\xbb\xbf\x2a\x9c\xd0\xca\x86\xa5\xf5\x52\x73\x7c\xac\x77\xdf\xe2\xf2\x32\x68\x1a\x48\x89\x16\x25\xe6\xab\x92\x33\xc7\xc8\xe4\x8c\x73\xe4\x40\x69\x78\xa9\xb9\x98\x09\xe4\x94\xc2\xed\xcd\xf9\x38\x2a\x3a\x03\xcb\xb2\x27\x8d\x36\xb1\xef\xb8\xd6\xf7\x99\xb4\x3b\xf2\xa5\x03\xab\xf3\x4b\x69\x78\xfb\xfb\x27\x4a\x09\x38\x66\x52\xdf\x39\xfe\x9e\x4a\xa6\xee\xc8\xe4\xab\xc0\x25\x5c\x19\x91\x0a\xc5\xe4\x38\x62\xfb\x24\x94\x8a\x19\x84\x1f\x99\x3d\x33\x49\x26\x16\x48\xe9\x61\x9d\xcd\x19\x46\x94\x86\x17\xef\x29\x8d\x58\x15\x54\x0b\xd5\x14\x07\x74\x50\xf1\x1d\xf2\x71\xc4\xc5\xa2\x91\xf0\x9d\xd7\x9d\xb3\xdc\xc9\x00\xa5\x65\x17\x0e\x3f\xde\x5c\x7e\x6a\xf0\x36\x48\xea\x65\xeb\x4e\x55\x55\x97\x6b\x3e\xf7\xd9\xdf\x44\x45\x11\x9c\x1b\x64\x0e\xd7\x4d\x13\x16\xcc\x08\x36\x95\xb8\x71\x11\xb9\x6f\xb9\x30\x65\x16\xbf\xb0\x14\x61\x66\x74\x0e\xe5\xf5\x2c\x7c\x09\x7b\xbb\xbf\xa0\xa7\xbd\x4d\x84\xc2\x25\x7c\x9d\x63\xff\xa1\xb5\x6f\x94\x23\x78\xf5\x63\xeb\x7e\xbe\x3a\x6a\x79\xe4\x62\x25\x94\x1d\xc1\x9f\x6b\xad\xbf\x76\x70\x74\x99\xe6\x76\x04\x0f\x7b\x59\x96\x9a\xf1\x6b\x74\x4e\xa8\xb4\x3f\xe8\xc0\xfd\xb3\x60\x06\x74\xe1\x2c\xc4\xf0\xdb\xf5\xd5\xe7\xb0\xf0\xd3\xa6\x2f\x75\xc2\xe4\xb5\xd3\x86\xa5\x18\xa6\xe8\x2e\x1c\xe6\x7d\x62\xcb\xc1\x15\xd8\x8a\x92\x0c\x06\xf0\xfd\x3b\x3c\x3c\x1e\x75\x12\xfb\xc7\x66\x7a\x79\xc1\x21\x86\xbe\xcf\xb4\x9e\x95\x4a\xe1\xda\x1a\xc7\x40\xa6\x5a\x4b\x64\x8a\x0c\xe0\x5d\x0b\x1c\xc1\x8c\x49\x8b\x87\xa9\xa5\xb0\x65\x8d\xee\x92\x6f\xed\x9d\xf4\x1b\xf8\x49\x81\x4d\x17\xd8\x55\x68\x00\x9d\x12\x5b\xfc\x49\x8d\xb9\xc5\xba\x4a\x76\x45\x9a\x48\xa7\x4a\xc3\xa1\x96\x39\xdd\xc8\x74\xea\xb9\x4c\xd8\xb0\xdd\xe9\x20\x3e\x70\x29\xb6\x67\x37\xaa\x7f\x9f\x3e\x88\xd1\x66\xf5\x8c\x9c\x8e\xb6\xcb\xe7\x64\x67\xd4\x58\x77\xfb\x3f\x36\x2a\xad\xf9\x70\x9d\xcc\x73\x54\x2e\xf4\x53\x21\x2c\xfb\xfe\x67\x96\xfb\x74\x6f\x8f\xe9\x1d\x90\xf2\x85\xc0\x08\x08\x39\xdd\xe3\x79\x6c\x59\x76\xae\x7b\xae\xe7\xca\x21\xef\xac\xaf\x32\xe5\xad\x22\xec\xd8\xe5\x66\x87\xff\xcc\xd1\xdc\x5f\xa3\xc4\xc4\x69\x73\x26\x65\x9f\xac\xfb\x02\x30\x32\x08\x67\xda\x7c\x60\x49\xd6\xef\xa3\xc4\x7c\x00\xf1\xe4\xc0\xd9\x79\x38\xb4\xe8\xce\x9c\x33\x62\x3a\x77\xd8\x27\xd5\x1c\x20\x47\xb0\x9e\x04\x83\x8e\x8f\xdc\xb1\x6d\x3f\x7a\x8d\x34\x67\x6d\x35\x63\xfd\xd0\xf5\x7f\x81\xff\x0b\x00\x00\xff\xff\x28\x7e\x32\xaf\x12\x0b\x00\x00"),
},
"/css": &vfsgen۰DirInfo{
name: "css",
@ -36,10 +36,10 @@ var assets = func() http.FileSystem {
},
"/css/archive.css": &vfsgen۰CompressedFileInfo{
name: "archive.css",
modTime: time.Date(2019, 8, 5, 9, 54, 26, 404631895, time.UTC),
uncompressedSize: 1102,
modTime: time.Date(2019, 8, 5, 14, 48, 39, 884231176, time.UTC),
uncompressedSize: 1216,
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x53\x6d\x6b\xa4\x48\x10\xfe\x2b\x92\xf9\x32\x86\xe9\xa0\x49\x26\x9c\xd5\x70\x1c\x07\x77\xec\x87\xfd\xb0\x90\x5f\xd0\xda\xa5\x16\xd3\x76\x49\x75\x4f\xc6\x8c\xe4\xbf\x2f\x8e\x6b\x32\xd9\x45\x08\xad\xb4\x76\xbd\x3c\x4f\x3d\x55\x0d\xc2\x1c\x47\xa5\x3a\x43\x1e\x36\xff\x3f\x3e\x3e\x3c\x3c\x69\xa5\x4a\x16\x8b\x02\x9b\xff\xf6\xd3\xd2\x4a\x55\xec\x58\xbe\x93\x3f\xc0\xa6\x28\x0a\xad\x94\x91\xaa\xa5\x17\xfc\x86\xc6\xa2\xfc\xdb\x80\x34\xa5\xd9\xde\xef\xf7\xbb\xe5\xcd\xee\x8a\x7d\xfa\xf6\x4f\x87\x96\x4c\xb2\xed\x05\x6b\x94\x30\xe7\x51\xa1\x6a\xb1\x43\xb0\x46\x0e\xe9\xb8\x50\x58\x30\xf3\x62\x5a\x6b\x10\x8f\xf9\x6e\x7e\xe6\xfc\x6f\x9b\xd0\x12\x0b\x2d\xce\xaa\xbd\x78\x8f\x91\x7b\xc8\xb4\xc3\x3a\x42\xa6\x85\x9a\x76\xda\x5b\xbc\x7c\x3c\x65\xfd\xa0\x7b\x0e\x14\x89\x3d\xd4\x34\xa0\xd5\xbd\xb1\x96\x7c\x03\x59\x92\x3f\xf5\x83\xb6\x14\x7a\x67\x5e\x41\x9d\xb0\x3c\x50\x54\x25\x7f\x9c\xd5\x0e\x07\x7d\x65\x50\x2c\x84\x3e\x42\xcb\x42\x67\xf6\xd1\xb8\x4f\x56\x4b\x82\xd5\x05\xc9\xb3\x74\xc6\xe9\x29\x5e\xd5\x8e\x4f\x20\x7c\x4a\x4e\x62\xfa\x4f\xfe\xc6\x51\xe3\xa1\x42\x1f\x51\xf4\xe5\x47\x51\xc4\x2e\x2c\x47\x35\xfb\xa8\x02\x9d\x11\x2e\x4c\x67\xd5\x54\xc9\x31\x72\x07\x79\x3f\x24\x81\x1d\xd9\xe4\xc5\xc8\x76\xd1\x34\xd5\xa5\xa9\x0e\x8d\xf0\xd1\xdb\xb9\x03\x30\x9b\x7f\x53\x38\xd5\x67\x45\xde\xe2\x00\x45\x51\x14\x2b\xd2\x26\xb7\xe3\x2f\xcc\x13\xd9\xd8\x42\xa6\x27\xd6\x81\xce\x93\x7c\xef\x6c\x86\x99\x67\x6d\x3a\x72\xaf\x70\xf3\xcc\x47\xa9\x30\x79\x36\x3e\x24\x3f\x84\x6f\x76\xc1\xf8\xa0\x02\x0a\xd5\xba\x33\xd2\x90\x87\xec\xa3\x07\x2b\xc8\x7f\xdf\x82\xe7\xb8\x05\x67\x42\x54\x55\x4b\xce\xa6\xe3\x1c\xac\xe6\x0e\xff\xd5\x0f\x6b\xa1\x77\xa1\x37\x15\xca\x78\xad\xf4\xd4\x08\xc8\xf5\xbc\xad\x55\xbb\x1c\x3b\x6e\x78\xfc\xd0\xfe\x1e\xbb\xb9\xc2\xd3\x3c\x53\x79\x96\xe9\x6b\x65\xa7\xfb\x94\x7e\x25\x67\x12\x7a\xe3\xbf\x5a\x46\x62\xae\x28\xe4\xd8\xbd\xcf\x64\xe9\xb8\x3a\x7c\x22\xf0\x7e\x61\x53\x1d\x71\x88\xca\x62\xc5\x62\x2e\x73\x78\xf4\x16\xc5\x91\xc7\x55\x14\x68\xf9\x05\x65\xb7\x6a\xae\xb9\x3a\x86\xf1\xcf\x7a\x7f\x06\x00\x00\xff\xff\xe3\xac\x27\xc9\x4e\x04\x00\x00"),
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x53\xdd\x6a\xe3\x3a\x10\x7e\x15\xd3\xdc\xc4\x25\x2a\x76\x9b\x84\x63\x09\x0e\x87\x03\xbb\xec\xc5\x5e\x2c\xf4\x09\x64\x6b\x6c\x0f\x91\x35\x62\xa4\x34\x6e\x4c\xde\x7d\x71\x5c\xb7\xe9\x2e\x86\x22\x1b\xd9\xf3\xf7\xcd\x7c\x33\x23\x99\x28\x0e\x42\x74\x1a\x9d\x5c\x7d\xdf\x6e\x9f\x9e\xf6\x4a\x88\x92\xd8\x00\xcb\xd5\xb7\xdd\x78\x94\x10\x15\x59\xe2\x9f\xe8\x0e\x72\x55\x14\x85\x12\x42\x73\xd5\xe2\x0b\xfc\x00\x6d\x80\xff\x6f\x24\x37\xa5\x5e\x3f\xee\x76\x9b\xf9\xcd\x1e\x8a\x5d\x7a\xf9\xaf\x03\x83\x3a\x59\x7b\x86\x1a\x38\x4c\x71\x44\xa8\x5a\xe8\x40\x1a\xcd\x87\x74\x98\x53\x98\x31\xf3\x62\x3c\x4b\x10\xdb\x7c\x33\x3d\x53\xfc\xcb\x2a\xb4\x48\x8c\xb3\xb1\x68\xaf\xd6\x43\x24\x2f\x33\x65\xa1\x8e\x32\x53\x8c\x4d\x3b\xde\x2d\x5c\x3f\xf6\x99\xef\x95\xa7\x80\x11\xc9\xc9\x1a\x7b\x30\xca\x6b\x63\xd0\x35\x32\x4b\xf2\xbd\xef\x95\xc1\xe0\xad\x7e\x95\xe2\x04\xe5\x01\xa3\x28\xe9\x43\x56\x5b\xe8\xd5\x8d\x42\x10\x23\xb8\x28\x5b\x62\x3c\x93\x8b\xda\x7e\xd2\x1a\x64\xa8\xae\x48\x8e\xb8\xd3\x56\x8d\xfe\xa2\xb6\x74\x92\x4c\xa7\xe4\xc4\xda\x7f\xb2\xd7\x16\x1b\x27\x2b\x70\x11\x58\x5d\x7f\x04\x46\xe8\xc2\x2c\xaa\xc9\x45\x11\xf0\x0c\xf2\x9a\xe9\xc4\x9a\x28\x29\x46\xea\x64\xee\xfb\x24\x90\x45\x93\xbc\x68\x5e\xcf\x9c\xa6\xaa\xd4\xd5\xa1\x61\x3a\x3a\x33\x75\x40\x4e\xea\x3f\x18\x4e\xd5\x59\xa0\x33\xd0\xcb\xa2\x28\x8a\x05\x6a\x93\xfb\xe1\x0d\xf3\x84\x26\xb6\x32\x53\x63\xd6\x01\xcf\x23\x7d\xef\xd9\xf4\x53\x9e\xb5\xee\xd0\xbe\xca\xbb\x67\x3a\x72\x05\xc9\xb3\x76\x21\xf9\xc5\x74\xb7\x09\xda\x05\x11\x80\xb1\x56\x9d\xe6\x06\x9d\xcc\x3e\x7a\xb0\x80\xfc\xef\xbd\x74\x14\xd7\xd2\xea\x10\x45\xd5\xa2\x35\xe9\x30\x39\x8b\xa9\xc3\xff\xf8\x7e\xc9\xf5\x21\x78\x5d\x01\x0f\xb7\x4c\x8f\x8d\x90\xb9\x9a\xae\xa5\x6a\x67\xb1\xa5\x86\x86\x0f\xee\x1f\xa1\x9b\x2a\x3c\x4d\x33\x95\x67\x99\xba\x65\x76\xdc\xa7\xf4\x2b\x31\x93\xe0\xb5\xfb\x6a\x19\x89\x1e\xe6\x29\x2c\x2d\x55\x87\x4f\x90\xef\x2b\x9a\xaa\x08\x7d\x14\x06\x2a\x62\x7d\x9d\xbc\xa3\x33\xc0\x16\x1d\x2c\xc6\x95\x2d\xbd\x00\x6f\x16\xd5\x35\x55\xc7\x30\xfc\x5d\xe1\xbc\xdf\x9d\xee\xdf\xe6\x61\x9f\x65\xbe\x4f\x87\x85\xbd\xbc\x99\xde\xad\xef\xe7\x8d\xdc\x65\xcb\x25\x2f\x34\x20\x7f\xd8\x41\x77\xb9\xfc\x0e\x00\x00\xff\xff\xf4\xd9\xa2\x91\xc0\x04\x00\x00"),
},
"/css/bookmark-item.css": &vfsgen۰CompressedFileInfo{
name: "bookmark-item.css",
@ -185,10 +185,10 @@ var assets = func() http.FileSystem {
},
"/js/component/bookmark.js": &vfsgen۰CompressedFileInfo{
name: "bookmark.js",
modTime: time.Date(2019, 5, 31, 8, 58, 55, 240681821, time.UTC),
uncompressedSize: 2546,
modTime: time.Date(2019, 8, 5, 13, 37, 47, 234327096, time.UTC),
uncompressedSize: 2844,
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x55\x4d\x6f\xe3\x36\x10\xbd\xfb\x57\x4c\x89\x3d\x24\x80\x14\xf7\xac\xb5\x8c\x76\xdb\x1e\x02\x6c\x7b\xd8\x20\xa7\xa2\x68\x68\x71\x2c\x11\xa1\x48\x81\xa2\xec\x04\x82\xfe\xfb\x82\xa4\xa8\x0f\x4b\x31\x1c\x1d\x6c\x8a\xf3\xe6\xcd\xe3\xcc\x70\x74\xa2\x1a\x0c\x96\x95\xa0\x06\x21\x85\x97\xcd\x8e\xf1\x13\x64\x82\xd6\x75\x4a\x0e\x4a\xbd\x96\x54\xbf\x12\x48\xfa\x9d\x56\xf0\xda\x24\x60\x7f\xff\x56\x0c\x23\xa8\x51\x60\x66\x90\x25\xc3\xaa\x23\xfb\x0d\x00\xc0\x8e\x5e\xd2\xc4\x1e\xa2\x34\x01\x87\xb0\xcf\x29\xe6\xc7\x94\x20\xe3\x8e\x6f\x62\xf8\x2d\x13\x3c\x7b\x4d\x89\xf7\xf9\x16\x94\xf4\xdc\x5b\xfa\x61\x10\xc1\xa5\x15\x5c\x68\x3c\xa6\xa4\xd1\x82\x80\xa1\x3a\x47\x93\x92\xff\x0f\x82\xca\x40\xe1\xbc\xeb\x8a\xca\x40\x60\x8a\xa6\x3c\x48\xca\x05\xe9\x45\xf1\x92\xe6\xf8\xfc\xe3\x3b\x81\xa4\x36\xef\x02\x27\x90\x27\xfb\x6e\x4d\xfb\xdd\xd6\x72\x4c\x28\xab\x81\x8f\x1b\x81\x64\xdf\xb6\x6e\xd1\x75\xbb\x6d\xb5\x06\xc3\xb7\x0c\x75\x65\x42\xd0\x5f\x86\xa8\xfb\xb6\xed\x6d\x1f\xfa\x72\x66\xdd\xea\x42\x9d\x53\x62\x7f\x1f\x99\xf5\xe2\x6c\xe2\x30\x66\x6a\xa5\xae\xb1\xa1\x79\x1d\x22\xdb\xf5\x83\x40\x99\x9b\x02\xf6\xf0\xeb\x34\x4d\x14\x4e\xf1\x51\x69\x87\x01\x2e\xc1\xbb\x85\x0a\x19\x9a\xff\x61\x57\xc8\xee\x0c\xcd\x1f\x24\x2d\xf1\xde\x9d\xbb\x7f\xb1\x6a\x82\x88\x2d\xe3\xa7\xa5\x9e\xba\xa2\x19\x6a\x9b\xcc\x55\xf3\x20\xb7\x44\xd9\xcc\x75\xf5\x08\x57\xe6\x9b\x4a\x6e\x9f\xb6\x2d\x54\x6d\xac\xb4\xe7\x1f\xdf\xbb\x6e\xe4\x0b\x32\xdd\xcb\x70\x2b\xfa\xc2\x0c\x3d\x3a\x27\xdb\x51\x70\x05\x4e\xc9\x5f\x8c\x1b\x18\xaf\x4c\x48\x8f\xf5\xbb\x68\xdf\x99\x3f\x0f\x87\x38\xd2\x1a\x8e\x34\x3e\x9e\xed\x6f\x85\x32\xe3\x22\xa6\xc2\xd8\xb4\xf0\x8b\x98\x53\xa1\x73\x11\x7f\xa2\x40\x83\x2b\x32\x98\x33\x7c\x5e\x88\xd1\xb4\x2e\x3e\xaf\xe3\xb9\x62\x36\x77\x54\x67\x05\x3f\xe1\x28\xa3\x71\xfb\x9f\x97\x91\x09\xd5\xb0\x98\xa9\xb3\x14\x8a\xb2\x5b\xf4\xec\xb6\xa1\x82\xb3\xde\xf3\x7f\x2f\x5f\x37\x1b\x7c\xab\x94\x36\xc0\xf0\x48\x1b\x61\xa0\x75\xa8\xe0\x93\x0c\xab\xc8\xed\x57\x5a\x55\x75\xd2\x83\xec\xc3\x59\x02\xff\x34\xe5\x01\x75\x34\xec\x35\x5a\x24\xf0\x64\x34\x97\xf9\xb8\xe9\x12\xb2\xdc\xee\xef\xf6\xd2\x10\x06\xc0\x8a\x45\x32\x7c\x5b\x46\xf5\x37\x3f\x81\x6f\x4a\x09\xa4\x72\x12\xa2\xef\xd8\x15\x53\x18\xe0\x2b\xa6\x71\xa2\x2f\x4c\xf6\xde\x4f\x73\xe0\xf6\xde\x2b\x4c\xe0\x77\xad\xe9\x7b\x34\x33\x84\xbc\xde\xdd\x5f\x78\xd8\x47\xa3\x69\xb4\x84\x7f\xff\x9b\x59\xc6\xab\xe8\x57\x9d\x67\xcc\x54\x59\x35\x4e\xd1\x48\x34\xb9\xc1\x8b\x00\xf6\x9b\xd6\x68\x01\x29\x48\x3c\x83\x45\x98\x82\xd7\x0f\x8d\x16\xf7\x5f\x37\x2b\x2a\x1a\x2d\x1e\x02\xdf\x08\xe8\x26\xe7\xbe\x9c\xfb\x8b\x90\x3d\xd3\xf2\xa0\x07\x9a\xbd\xe6\x5a\x35\x92\x3d\xda\xba\x26\xf0\xd2\x68\x71\x47\xbe\xb4\x4e\x52\xa8\x75\x47\xee\x5f\x3e\xca\xc4\xa4\x9e\x27\x94\xe6\xd1\x60\x79\x7b\x78\xdb\xa5\x3e\x12\x8b\x96\x46\xdf\x4f\xde\x6e\xd7\xd1\x2d\xd5\x28\xd1\x14\x8a\xcd\xfa\x60\xf2\x05\x70\xd3\xff\xb2\x45\x6c\x80\x2f\x58\x72\x73\x67\x3f\x16\x71\xe6\xb1\x24\x02\x87\x5e\x4d\xf9\xfc\xb3\xbf\x38\xf0\x94\xd2\x43\x49\xe4\x37\x87\x24\xad\xf3\x4e\xa7\xf1\x55\x56\x0b\xbc\x91\x73\x3e\x5a\xaf\xb2\x7a\xe8\x8d\xbc\xf3\x59\x79\x95\xd7\x43\xaf\xf2\xfa\x1a\x6e\xba\x9f\x01\x00\x00\xff\xff\x21\x4b\x74\x91\xf2\x09\x00\x00"),
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x56\x4d\x6f\xe3\x36\x10\xbd\xfb\x57\x4c\x89\x3d\xd8\x80\x6d\xf5\xac\xb5\x8c\xee\x6e\x7b\x08\xb0\xed\x61\x83\x9c\xfa\x65\x5a\x1c\x5b\x44\x28\x52\xa0\x28\x3b\x81\xa0\xff\x5e\x90\x22\xf5\x61\x29\xa9\xa3\x83\x43\x71\xde\xbc\x79\x9a\xe1\x70\x72\xa1\x1a\x0c\xe6\x85\xa0\x06\x21\x81\xc3\x62\xc7\xf8\x05\x52\x41\xcb\x32\x21\x47\xa5\x9e\x73\xaa\x9f\x09\xc4\x7e\xa7\x16\xbc\x34\x31\xd8\xdf\xdf\x15\xc3\x35\x94\x28\x30\x35\xc8\xe2\x6e\xd5\x90\xfd\x02\x00\x60\x47\x6f\x69\x36\x2d\x44\x69\x02\x0e\x61\x9f\xcb\x86\x9f\x12\x82\x8c\x3b\xbe\x81\xe1\x97\x54\xf0\xf4\x39\x21\xad\xcf\xd7\xa0\xc4\x73\x47\xf4\xcd\x20\x82\x4b\x2b\x38\xd3\x78\x4a\x48\x4e\xb9\x7c\xfa\xf1\x9d\x80\xa1\xfa\x8c\x26\x21\xff\x1e\x05\x95\x81\xc6\x31\x94\x05\x95\x81\xc4\x64\x55\x7e\x94\x94\x0b\xe2\x85\xf1\x9c\x9e\xd1\x11\xc4\xa5\x79\x15\x38\x80\x3c\xda\x77\x6b\xda\xef\x22\xcb\x31\xa0\x2c\x3a\x3e\x6e\x04\x92\x7d\x5d\xbb\x45\xd3\xec\xa2\x62\x0e\x86\x2f\x29\xea\xc2\x84\xa0\x3f\x75\x51\xf7\x75\xed\x6d\x6f\xfa\x72\x66\xdd\xca\x4c\x5d\x13\x62\x7f\x1f\x98\xf5\xe2\x6c\xe0\xd0\x67\x6b\xa6\xb6\x1b\x43\xcf\x65\x88\x6c\xd7\x5b\x81\xf2\x6c\x32\xd8\xc3\xcf\xc3\x34\x51\xb8\x6c\x4e\x4a\x3b\x0c\x70\x09\xad\x5b\xa8\x92\xa1\xe7\x6f\x76\x85\x6c\x69\xe8\x79\x2b\x69\x8e\x2b\xf7\xdd\xfe\xc5\xaa\x09\x22\x22\xc6\x2f\x53\x3d\x65\x41\x53\xd4\x36\x99\xb3\xe6\x4e\x6e\x8e\xb2\x1a\xeb\xf2\x88\x4a\x8b\xae\xec\x6e\xfd\x66\xc9\xed\x53\xd7\x99\x2a\x8d\x95\xf6\xf4\xe3\x7b\xd3\xf4\x7c\x41\xa6\x7b\xe9\x3a\xc3\x17\xa6\x3b\xa7\x63\xb2\x1d\x05\x57\xe0\x84\xfc\xc6\xb8\x81\xbe\x6d\x42\x7a\xac\xdf\xcd\x11\x1e\xf9\xf3\xf0\x11\x27\x5a\xc2\x89\x6e\x4e\x57\xfb\x5b\xa0\x4c\xb9\xd8\x50\x61\x6c\x5a\xf8\x4d\xcc\xa1\xd0\xb1\x88\x5f\x51\xa0\xc1\x19\x19\xcc\x19\x3e\x2e\xc4\x68\x5a\x66\x1f\xd7\xf1\x54\x30\x9b\x3b\xaa\xd3\x8c\x5f\xb0\x97\x51\xb9\xfd\x8f\xcb\x48\x85\xaa\xd8\x86\xa9\xab\x14\x8a\xb2\x7b\xf4\xec\xa2\x50\xc1\xd1\xd9\x6b\xff\x1c\x3e\x2f\x16\xf8\x52\x28\x6d\x80\xe1\x89\x56\xc2\x40\xed\x50\xc1\x27\xee\x56\x6b\xb7\x5f\x68\x55\x94\xb1\x07\xd9\x87\xb3\x18\xfe\xa8\xf2\x23\xea\x75\xb7\x57\x69\x11\xc3\xa3\xd1\x5c\x9e\xfb\x4d\x97\x90\xe9\xb6\xef\xed\xa9\x21\x5c\x00\x53\x4b\x46\xcb\x6f\x4a\x1a\x94\x26\x86\xaf\x4a\x09\xa4\x72\x64\xfc\xd2\x26\x7b\xc6\xc8\x25\xc3\x97\xa9\xde\xf6\xce\x98\xc1\x87\xb3\x3e\x63\x0a\xd7\xff\x8c\xa9\x9f\x07\x13\x93\xbd\x31\x86\xd9\x73\x7b\xaf\x05\xc6\xf0\x45\x6b\xfa\xba\x1e\x19\x42\x45\x96\xab\x1b\x0f\xfb\x68\x34\x95\x96\xf0\xe7\xdf\x23\x4b\xdf\xc4\xed\xaa\x69\x19\x53\x95\x17\x95\x53\xd4\x13\xf9\xb1\x30\x21\xe7\x27\x58\x9a\x8c\x97\xdb\x3e\xcd\xab\x10\xed\x10\x85\x86\x8a\x3e\xd5\x0e\xc4\x59\x13\xa5\x2d\xea\xf0\x79\xc4\x83\xa2\xc4\x11\x99\x2f\xcb\xff\x90\xf9\x4e\x99\x23\xf3\x7e\x0e\x5a\x69\xd1\x23\x9a\x41\xf9\xfb\x1b\x6d\xf2\x65\x76\xce\x57\x5a\x40\x02\x12\xaf\x60\x11\x81\x6a\x35\x8e\xe6\x03\x55\x5a\x6c\x03\xdf\x56\x63\x21\x68\x8a\xcb\xe8\x9f\xeb\xf5\xfa\xd7\x36\x5a\x03\x21\xab\x59\x09\x93\xe9\x38\x11\xe2\xf9\xa7\x45\x3d\xd2\xf4\xf9\xac\x55\x25\xd9\x83\x3d\xfd\x31\x1c\x2a\x2d\x96\x24\xa4\xc7\x77\x44\x43\x56\x87\xb7\xaa\x3e\x38\xbb\x17\x94\xe6\xc1\x60\x7e\x7f\x78\xdb\xcb\xbe\x10\xeb\xa9\xb1\xed\x9d\xd6\x6e\xd7\xeb\x7b\x4e\x5e\x8e\x26\x53\x6c\x74\xe6\x07\x73\xd2\xcd\xc8\xdb\x76\xb0\x01\x3e\x61\xce\xcd\xd2\x8e\xd4\x4d\xda\x62\xc9\x1a\x1c\x7a\x36\xe5\xe3\x7f\x90\x26\x1f\x3c\xa4\x6c\xa1\x64\xdd\x6e\x76\x49\x9a\xe7\x1d\xce\xac\x77\x59\x2d\xf0\x4e\xce\xf1\x00\x7a\x97\xb5\x85\xde\xc9\x3b\x9e\x28\xef\xf2\xb6\xd0\x77\x79\xdb\x1a\x2e\x9a\xff\x02\x00\x00\xff\xff\x3e\x49\xe9\xc2\x1c\x0b\x00\x00"),
},
"/js/component/dialog.js": &vfsgen۰CompressedFileInfo{
name: "dialog.js",
@ -249,10 +249,10 @@ var assets = func() http.FileSystem {
},
"/less/archive.less": &vfsgen۰CompressedFileInfo{
name: "archive.less",
modTime: time.Date(2019, 8, 5, 9, 54, 26, 357965229, time.UTC),
uncompressedSize: 1212,
modTime: time.Date(2019, 8, 5, 14, 48, 39, 790897845, time.UTC),
uncompressedSize: 1338,
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x53\x61\x6b\xdb\x30\x10\xfd\x9e\x5f\x71\x34\x30\xd2\x12\x95\xb8\x6d\xca\xa2\xc2\x18\x83\x8d\x7d\xd8\x87\x41\x7f\x81\x62\x9d\x6d\x11\x59\x67\x4e\x4a\xe3\x76\xf4\xbf\x0f\xdb\xb2\xad\x86\x6c\x31\x49\xac\xa7\x77\xba\x77\xef\x4e\x92\x89\x02\xfc\x59\x00\x00\x08\x51\x2b\xe3\x24\x2c\x7f\x3c\x3c\xdc\xdf\x3f\x3e\x45\x70\x4f\xac\x91\x25\x2c\xbf\x6f\xbb\x67\x84\x73\xb2\xc4\xbf\x8c\x3b\x48\x58\xee\x76\xbb\x11\x56\x9c\x57\xe6\x05\x7f\xa2\xd2\xc8\xdf\x4a\x09\x5c\xee\xd5\xea\x6e\xbb\x5d\xc3\xfc\xb3\xb9\xdd\x6d\xaf\x9f\x16\x7d\xc8\xd7\x1a\xb5\x51\xb0\x6a\x18\x0b\x64\x3f\x9c\x2b\x7c\x5e\x61\x8d\x12\xb4\xe2\xc3\x75\xd4\x77\x26\x27\xdb\x75\xcf\x53\xb2\x75\x39\xf7\x43\xb6\x86\xf1\x1b\x13\x77\xf4\xf7\xc5\xfb\x62\xb1\xf4\x95\x21\x36\x63\xa4\xa8\xfa\xd0\x98\x2f\x50\x23\x61\x33\xb0\x2d\x16\x61\x5a\xb0\x29\xab\x79\x55\xe1\xb0\x7c\xdc\x34\xed\x80\x34\xe4\x4d\x30\xe4\x24\x14\xa6\x45\x1d\x41\xa5\xb5\x71\xa5\x84\x0d\x64\x8f\x23\x53\x1b\xdf\x58\xf5\x2a\xa1\xb0\x18\xa1\xee\x4d\x14\x96\x4e\x12\x98\x4e\x70\x62\xd5\x0c\x1b\xca\x9a\xd2\x09\x13\xb0\xf6\x12\x72\x74\x01\x39\x46\x90\x0b\xc2\x9b\x37\x94\xc9\xc9\x83\x4d\x62\x4f\x21\x50\x2d\x21\x6b\x5a\xf0\x64\x8d\x86\x17\xc5\xab\xd1\xc5\x68\xc5\x5e\xe5\x87\x92\xe9\xe8\xf4\xe0\xbe\x8c\xa4\x33\x3f\x23\xfb\x4d\x18\xa7\xb1\x95\xb0\xeb\xdb\xde\x63\x37\x49\x8b\x62\xe6\x93\xd1\xa1\x9a\x4c\x1a\x36\xda\x4e\x66\x6f\xc2\x24\xaf\x9d\xf7\xfb\x3a\x0a\x55\x1b\xfb\x2a\xe1\xea\x99\x8e\x9c\x23\x3c\x2b\xe7\xe1\x37\xd3\xd5\x1a\xbc\x72\x5e\x78\x64\x53\xcc\x31\xb5\xe2\xb2\x9b\xd9\x24\xcd\x6c\xf4\xd8\xe8\xfe\xef\xcb\x8d\x74\x14\x56\xd2\x2a\x1f\x44\x5e\x19\xab\xd3\xb9\x1a\xce\x11\xb1\xb3\x9f\x47\x17\xc7\xd8\x5b\xdf\xa8\x7c\x1a\x8c\xb1\x4d\x12\xb2\x0f\xb4\x71\x9a\x2c\x95\x94\x52\xe7\xfe\xdc\x61\x7d\x56\xef\x29\x4e\x4f\xb6\x49\x4a\xf8\xd0\x85\xee\x52\x8e\x97\xa5\xfb\xf8\x46\xb9\xe4\xf4\xff\xa8\x1f\xa4\x25\x02\xd5\x65\x55\x59\xaa\x6a\x1a\xc9\xbd\xa5\xfc\xf0\x0f\x4d\xd3\xe5\xbf\x9e\x09\x01\xdb\x20\x34\xe6\xc4\x6a\x18\xfe\xa3\xd3\xc8\xd6\x38\x4c\xc4\x7f\x92\x15\xbd\x20\xaf\x13\xa0\xa0\xfc\xe8\xcf\x0a\xba\x64\xc0\x79\x45\xef\x7f\x03\x00\x00\xff\xff\x02\x64\x09\x5a\xbc\x04\x00\x00"),
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x54\xed\x6a\xe3\x3a\x10\xfd\x9f\xa7\x18\x1a\xb8\x24\x25\x2a\x76\x9b\x84\x1b\x15\x2e\x97\x0b\x77\xd9\x1f\xfb\x63\xa1\x4f\xa0\x58\x63\x5b\x44\xd6\x18\x49\x69\xdc\x2e\x7d\xf7\xc5\xb6\x64\xab\x21\xdd\x98\x7c\xe8\x68\x46\x73\x74\xce\x4c\xb8\x25\xf2\xf0\x6b\x01\x00\xc0\x58\x23\x94\xe1\xb0\xfc\xb6\xdd\x3e\x3d\xed\x9f\x03\x78\x24\x2b\xd1\x72\x58\xfe\xbf\xeb\x9f\x08\x17\xa4\xc9\xfe\x50\xe6\xc4\x61\x79\x38\x1c\x22\x2c\x6c\x51\xab\x57\xfc\x8e\x42\xa2\xfd\xaf\xe2\x60\xab\xa3\x58\x3d\xee\x76\x1b\x98\x3f\xb2\x87\xc3\x6e\xfd\xbc\x18\x52\xfe\x6d\x50\x2a\x01\xab\xd6\x62\x89\xd6\x8d\xe7\x32\x57\xd4\xd8\x20\x07\x29\xec\x69\x1d\xf8\x5d\xd1\xc9\x0f\xfd\xf3\x9c\x6c\xdd\xae\xbd\xcd\x37\x10\xdf\xa1\x70\x1f\xfe\xb1\xf8\x58\x2c\x96\xae\x56\x64\x55\xcc\x64\xf5\x90\x1a\xea\x79\x6a\x39\x64\x63\xb4\xc6\xd2\x4f\x0b\xab\xaa\x7a\x5e\xd5\x38\x2e\xf7\x59\xdb\x8d\x48\x4b\x4e\x79\x45\x86\x43\xa9\x3a\x94\x01\x14\x52\x2a\x53\x71\xc8\x20\xdf\xc7\x48\xa9\x5c\xab\xc5\x1b\x87\x52\x63\x80\xfa\x5f\xac\xd4\x74\xe1\x60\xe9\x02\x17\x2b\xda\x71\x43\x68\x55\x19\xa6\x3c\x36\x8e\x43\x81\xc6\xa3\x0d\x19\x64\x3c\x73\xea\x1d\x79\x72\xf2\x28\x13\x3b\x92\xf7\xd4\x70\xc8\xdb\x0e\x1c\x69\x25\xe1\x55\xd8\x55\x54\x31\x48\x71\x14\xc5\xa9\xb2\x74\x36\x72\x54\x9f\x87\xa0\x2b\x3d\x43\xf4\x3b\x53\x46\x62\xc7\xe1\x30\xd8\x3e\x60\xf7\x89\x45\xa1\xf2\x45\x49\x5f\x4f\x22\x8d\x1b\x5d\x4f\x73\x10\x61\xa2\xd7\xcd\xfb\xc3\x3d\x4a\xd1\x28\xfd\xc6\xe1\xee\x85\xce\xb6\x40\x78\x11\xc6\xc1\x4f\x4b\x77\x1b\x70\xc2\x38\xe6\xd0\xaa\x72\xce\x69\x84\xad\xfa\x9e\x4d\xca\xcc\x42\x47\xa3\x87\xaf\x7f\xee\xb9\x21\xbf\xe2\x5a\x38\xcf\x8a\x5a\x69\x99\xf6\xd5\x78\x0e\x0b\xce\xfe\x1d\x55\x8c\xb9\x0f\xae\x15\xc5\xd4\x18\xd1\x26\x0e\xf9\xa7\xb0\xd8\x4d\x9a\x2a\x4a\x43\x67\x7f\x1e\xb1\xb9\xba\xef\x25\x74\x4f\x9e\x25\x57\xf8\xe4\x42\x3f\x94\x71\x58\xfa\x97\x6b\x85\x49\x4e\xff\x03\xfb\x91\x5a\x42\x50\x24\x79\x53\xeb\x1d\x35\x15\xa7\x2f\x6a\x4f\x43\xbe\x9e\x03\x3c\x76\x9e\x49\x2c\xc8\x8a\xb1\xc9\xcf\x46\xa2\xd5\xca\x60\x42\xf2\x2f\x5e\xd3\x2b\xda\x4d\x02\x94\x54\x9c\xdd\x15\xf1\x5b\x17\xbd\xc9\x3c\xfe\x4b\x34\xa2\x8b\x9d\xb5\xcf\xb2\xb6\x5b\xdf\xd6\x39\xdf\xa6\x1a\xc4\x09\xdd\x0d\x13\x3a\xc1\x5f\xd8\x75\x7d\xd4\xc3\x2e\x35\x2d\xb2\xfa\xf8\x1d\x00\x00\xff\xff\x3b\x12\xe2\x41\x3a\x05\x00\x00"),
},
"/less/bookmark-item.less": &vfsgen۰CompressedFileInfo{
name: "bookmark-item.less",

View file

@ -152,14 +152,18 @@ func (h *handler) apiGetBookmarks(w http.ResponseWriter, r *http.Request, ps htt
bookmarks, err := h.DB.GetBookmarks(searchOptions)
checkError(err)
// Get image URL for each bookmark
// Get image URL for each bookmark, and check if it has archive
for i := range bookmarks {
strID := strconv.Itoa(bookmarks[i].ID)
imgPath := fp.Join(h.DataDir, "thumb", strID)
imgURL := path.Join("/", "bookmark", strID, "thumb")
archivePath := fp.Join(h.DataDir, "archive", strID)
if fileExists(imgPath) {
bookmarks[i].ImageURL = imgURL
bookmarks[i].ImageURL = path.Join("/", "bookmark", strID, "thumb")
}
if fileExists(archivePath) {
bookmarks[i].HasArchive = true
}
}

View file

@ -83,6 +83,12 @@ func (h *handler) serveBookmarkContent(w http.ResponseWriter, r *http.Request, p
panic(fmt.Errorf("Bookmark not found"))
}
// Check if it has archive
archivePath := fp.Join(h.DataDir, "archive", strID)
if fileExists(archivePath) {
bookmark.HasArchive = true
}
// Create template
funcMap := template.FuncMap{
"html": func(s string) template.HTML {
@ -172,18 +178,23 @@ func (h *handler) serveBookmarkArchive(w http.ResponseWriter, r *http.Request, p
checkError(err)
// Add Shiori overlay
headerHTML := fmt.Sprintf(
tpl, err := template.New("archive").Parse(
`<div id="shiori-archive-header">
<p id="shiori-logo">
<span></span>shiori
</p>
<p id="shiori-logo"><span></span>shiori</p>
<div class="spacer"></div>
<a href="%s" target="_blank">View Original</a>
<a href="/bookmark/%s/content" target="_blank">View Readable</a>
</div>`, bookmark.URL, strID)
<a href="{{.URL}}" target="_blank">View Original</a>
{{if .HasContent}}
<a href="/bookmark/{{.ID}}/content">View Readable</a>
{{end}}
</div>`)
checkError(err)
tplOutput := bytes.NewBuffer(nil)
err = tpl.Execute(tplOutput, &bookmark)
checkError(err)
doc.Find("head").AppendHtml(`<link href="/css/archive.css" rel="stylesheet">`)
doc.Find("body").PrependHtml(headerHTML)
doc.Find("body").PrependHtml(tplOutput.String())
// Revert back to HTML
outerHTML, err := goquery.OuterHtml(doc.Selection)