tube/app/rice-box.go

120 lines
211 KiB
Go
Raw Normal View History

package app
import (
"time"
"github.com/GeertJohan/go.rice/embedded"
)
func init() {
// define files
file2 := &embedded.EmbeddedFile{
2020-03-21 13:34:37 +03:00
Filename: "base.html",
2020-03-21 14:11:42 +03:00
FileModTime: time.Unix(1584787907, 0),
2020-03-21 13:34:37 +03:00
Content: string("{{define \"base\"}}\r\n<!DOCTYPE html>\r\n<html lang=\"en\">\r\n <head>\r\n <meta charset=\"utf-8\">\r\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/static/favicon.ico\">\r\n <link rel=\"stylesheet\" type=\"text/css\" href=\"/static/theme.css\">\r\n\r\n {{ template \"stylesheets\" . }}\r\n {{ template \"css\" . }}\r\n <title>Tube</title>\r\n </head>\r\n<body>\r\n <nav>\r\n <a href=\"/\">Tube</a>\r\n <a href=\"/upload\">Upload</a>\r\n </nav>\r\n <main>\r\n {{template \"content\" .}}\r\n </main>\r\n</body>\r\n{{ template \"scripts\" . }}\r\n</html>\r\n{{end}}\r\n{{ define \"css\" }}{{ end }}\r\n{{ define \"scripts\" }}{{ end }}\r\n{{ define \"stylesheets\" }}{{ end }}\r\n"),
}
file3 := &embedded.EmbeddedFile{
Filename: "index.html",
2020-03-21 14:11:42 +03:00
FileModTime: time.Unix(1584787907, 0),
2020-03-21 13:34:37 +03:00
Content: string("{{ define \"content\" }}\r\n{{ $playing := .Playing }}\r\n<div id=\"player\">\r\n {{ if $playing.ID }}\r\n <video id=\"video\" controls poster=\"/t/{{ $playing.ID}}\" src=\"/v/{{ $playing.ID }}.mp4\"></video>\r\n <h1>{{ $playing.Title }}</h1>\r\n <h2>{{ $playing.Modified }}</h2>\r\n <p>{{ $playing.Description }}</p>\r\n {{ else }}\r\n <video id=\"video\" controls></video>\r\n {{ end }}\r\n</div>\r\n<div id=\"playlist\">\r\n {{ range $m := .Playlist }}\r\n {{ if eq $m.ID $playing.ID }}\r\n <a href=\"/v/{{ $m.ID }}\" class=\"playing\">\r\n {{ else }}\r\n <a href=\"/v/{{ $m.ID }}\">\r\n {{ end }}\r\n <img src=\"/t/{{ $m.ID }}\">\r\n <div>\r\n <h1>{{ $m.Title }}</h1>\r\n <h2>{{ $m.Modified }}</h2>\r\n </div>\r\n </a>\r\n {{ end }}\r\n</div>\r\n{{end}}\r\n"),
}
file4 := &embedded.EmbeddedFile{
Filename: "upload.html",
2020-03-21 14:11:42 +03:00
FileModTime: time.Unix(1584787907, 0),
2020-03-21 13:34:37 +03:00
Content: string("{{define \"content\"}}\n <div id=\"upload\">\n <form id=\"upload_form\" enctype=\"multipart/form-data\" method=\"POST\" action=\"/upload\">\n <div>\n <div><label for=\"video_file\">Please select video file</label></div>\n <div><input type=\"file\" name=\"video_file\" id=\"video_file\" onchange=\"fileSelected();\" /></div>\n </div>\n\n <div>\n <input type=\"button\" value=\"Upload\" onclick=\"startUploading()\" />\n </div>\n\n <div id=\"error\">You should select valid image files only!</div>\n <div id=\"error2\">An error occurred while uploading the file</div>\n <div id=\"abort\">The upload has been canceled by the user or the browser dropped the connection</div>\n <div id=\"warnsize\">Your file is very big. We can't accept it. Please select more small file</div>\n\n <div id=\"progress_info\">\n <div id=\"progress\"></div>\n <div id=\"progress_percent\">&nbsp;</div>\n <div class=\"clear_both\"></div>\n <div>\n <div id=\"speed\">&nbsp;</div>\n <div id=\"remaining\">&nbsp;</div>\n <div id=\"b_transfered\">&nbsp;</div>\n <div class=\"clear_both\"></div>\n </div>\n\n <div id=\"upload_response\"></div>\n </div>\n </form>\n </div>\n{{end}}\n{{define \"scripts\"}}\n <script type=\"application/javascript\" src=\"/static/upload.js\"></script>\n{{end}}\n"),
}
// define dirs
dir1 := &embedded.EmbeddedDir{
Filename: "",
2020-03-21 14:11:42 +03:00
DirModTime: time.Unix(1584787907, 0),
ChildFiles: []*embedded.EmbeddedFile{
2020-03-21 13:34:37 +03:00
file2, // "base.html"
file3, // "index.html"
file4, // "upload.html"
},
}
// link ChildDirs
dir1.ChildDirs = []*embedded.EmbeddedDir{}
// register embeddedBox
embedded.RegisterEmbeddedBox(`../templates`, &embedded.EmbeddedBox{
Name: `../templates`,
2020-03-21 14:11:42 +03:00
Time: time.Unix(1584787907, 0),
Dirs: map[string]*embedded.EmbeddedDir{
"": dir1,
},
Files: map[string]*embedded.EmbeddedFile{
2020-03-21 13:34:37 +03:00
"base.html": file2,
"index.html": file3,
"upload.html": file4,
},
})
}
func init() {
// define files
2020-03-21 13:34:37 +03:00
file6 := &embedded.EmbeddedFile{
Filename: "defaulticon.jpg",
2020-03-21 14:11:42 +03:00
FileModTime: time.Unix(1584787907, 0),
Content: string("\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x02\x05\xe7\x05\xe7\x00\x00\xff\xe1\x1e\xeeExif\x00\x00II*\x00\b\x00\x00\x00\x05\x00\x1a\x01\x05\x00\x01\x00\x00\x00J\x00\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00R\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x03\x00\x00\x001\x01\x02\x00\f\x00\x00\x00Z\x00\x00\x002\x01\x02\x00\x14\x00\x00\x00f\x00\x00\x00z\x00\x00\x00\xe7\x05\x00\x00\x01\x00\x00\x00\xe7\x05\x00\x00\x01\x00\x00\x00GIMP 2.10.8\x002019:06:26 12:59:35\x00\b\x00\x00\x01\x04\x00\x01\x00\x00\x00\x00\x01\x00\x00\x01\x01\x04\x00\x01\x00\x00\x00\x00\x01\x00\x00\x02\x01\x03\x00\x03\x00\x00\x00\xe0\x00\x00\x00\x03\x01\x03\x00\x01\x00\x00\x00\x06\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00\x06\x00\x00\x00\x15\x01\x03\x00\x01\x00\x00\x00\x03\x00\x00\x00\x01\x02\x04\x00\x01\x00\x00\x00\xe6\x00\x00\x00\x02\x02\x04\x00\x01\x00\x00\x00\xff\x1d\x00\x00\x00\x00\x00\x00\b\x00\b\x00\b\x00\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff\xdb\x00C\x00\b\x06\x06\a\x06\x05\b\a\a\a\t\t\b\n\f\x14\r\f\v\v\f\x19\x12\x13\x0f\x14\x1d\x1a\x1f\x1e\x1d\x1a\x1c\x1c $.' \",#\x1c\x1c(7),01444\x1f'9=82<.342\xff\xdb\x00C\x01\t\t\t\f\v\f\x18\r\r\x182!\x1c!22222222222222222222222222222222222222222222222222\xff\xc0\x00\x11\b\x01\x00\x01\x00\x03\x01\"\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1f\x00\x00\x01\x05\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\a\b\t\n\v\xff\xc4\x00\xb5\x10\x00\x02\x01\x03\x03\x02\x04\x03\x05\x05\x04\x04\x00\x00\x01}\x01\x02\x03\x00\x04\x11\x05\x12!1A\x06\x13Qa\a\"q\x142\x81\x91\xa1\b#B\xb1\xc1\x15R\xd1\xf0$3br\x82\t\n\x16\x17\x18\x19\x1a%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\x83\x84\x85\x86\x87\x88\x89\x8a\x92\x93\x94\x95\x96\x97\x98\x99\x9a\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xff\xc4\x00\x1f\x01\x00\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\a\b\t\n\v\xff\xc4\x00\xb5\x11\x00\x02\x01\x02\x04\x04\x03\x04\a\x05\x04\x04\x00\x01\x02w\x00\x01\x02\x03\x11\x04\x05!1\x06\x12AQ\aaq\x13\"2\x81\b\x14B\x91\xa1\xb1\xc1\t#3R\xf0\x15br\xd1\n\x16$4\xe1%\xf1\x17\x18\x19\x1a&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x92\x93\x94\x95\x96\x97\x98\x99\x9a\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xff\xda\x00\f\x03\x01\x00\x02\x11\x03\x11\x00?\x00\xf7\xfa(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n)\x1d\xd64.\xec\x15G$\x93\x80+\x9e\xd4<i\xa4X\x92\xb1\xca\xd7R\x0eЌ\x8f\xfb\xeb\xa7\xe5\x9a\x00訯9\xba\xf1\xee\xa7t\xc5,mc\x84\x11\x81\xc1\x91\xf3\xfc\xbfJ\xa6\xdf\xf0\x94\xea\x9c\xc95\xd0S\xea\xfeX\xfc\x86)\\\x0fN\x96\xe2\b\x06e\x9a8\xc7\xfbl\x05R\x93^\xd2\"8mJ\xd7>\x82P\u007f\x95y\xeaxB\xfaC\xbai\xe2Rz\xf2Xդ\xf0Z\xe3\xe7\xbd9\xff\x00f?\xfe\xbd\x17\x03\xb2>)\xd1\a\xfc\xc4a\xfc3\xfe\x14\xab\xe2}\x11\x8f\x1a\x94\x1f\x89\"\xb9\x01\xe0\xc8?\xe7\xeeO\xfb\xe4P|\x19\ak\xb9?\xef\x91E\xc4v\xf1\xeb:\\\xdf\xea\xf5\x1bV>\x82e\xcf\xf3\xab\x89\"H2\x8e\xac=T\xe6\xbc\xdeO\x06q\xfb\xab\xce\u007f\xdaJ\xac|+\xa9[\x1d\xf6\xf7\b_\xfd\x86*\u007f:.3\xd4\xe8\xaf/[\x9f\x15\xe9\x9fv{\x96Q\xcf\xcc|\xc1\xfa\xe6\xaf\xda\xfc@\xbd\x85\xb6\xdf\xd8\xc7 \xf5L\xa1\xfds\x9fҋ\x81\xe84V\x16\x9f\xe2\xfd\x1fP!EǑ!\xfe\t\xc6\xdfק\xeb[\x80\x86\x00\x82\b=\b\xa6\x02\xd1E\x14\x00QE\x14\x00QE\x14\x00QE\x14\x00QE\x14\x00QE\x14\x00QE\x14\x00QER\xd4\xf5[M\"\xd4\xdc]ɵz*\x8eY\x8f\xa0\x14\x01q\x98*\x96b\x02\x81\x92Oj䵟\x1dZY\x96\x87OQs0\xe3\xc
}
2020-03-21 13:34:37 +03:00
file7 := &embedded.EmbeddedFile{
Filename: "favicon.ico",
2020-03-21 14:11:42 +03:00
FileModTime: time.Unix(1584787907, 0),
Content: string("\x00\x00\x01\x00\x04\x00@@\x00\x00\x01\x00 \x00(B\x00\x00F\x00\x00\x0000\x00\x00\x01\x00 \x00\xa8%\x00\x00nB\x00\x00 \x00\x00\x01\x00 \x00\xa8\x10\x00\x00\x16h\x00\x00\x10\x10\x00\x00\x01\x00 \x00h\x04\x00\x00\xbex\x00\x00(\x00\x00\x00@\x00\x00\x00\x80\x00\x00\x00\x01\x00 \x00\x00\x00\x00\x00\x00@\x00\x00\x12\v\x00\x00\x12\v\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x02\x01\x06\x05\a\x02\v\b\r\x03\x13\x0e\x16\x06\x19\x13\x1e\t\x1d\x16#\f!\x18'\x0f$\x1b+\x11&\x1c.\x13&\x1d.\x13%\x1b,\x11!\x19(\x0e\x1e\x16$\v\x1a\x13\x1f\b\x13\x0e\x17\x05\f\t\x0e\x03\a\x05\b\x01\x01\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\b\x06\n\x03\x11\r\x15\a\x1e\x16$\x0e2%;\x1b@/M(Q;`8^EpHgK{VmP\x82arT\x89iuV\x8cnuV\x8cmsT\x89inP\x83`hL|U_FqGR<a7B1O'3&=\x19\x1f\x17%\r\x12\x0e\x16\x06\t\x06\n\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x03\x04\x02\x13\x0e\x17\a'\x1d.\x10C1O#XAi:lO\x80W\x81^\x9az\x8fh\xac\x96\x9dr\xbc\xaf\xa7y\xc9¯\u007f\xd3е\x82\xdaڸ\x84\xde\u0e85\xe0\xe0\xdeߵ\x82\xdaٰ\u007f\xd3Шy\xc9\xc1\x9dr\xbd\xad\x90i\xad\x94\x82_\x9cxnP\x83TZBl7E3R )\x1e0\x0f\x14\x0f\x18\x06\x04\x03\x05\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x06\x04\a\a\x1e\x16$\x15F3S0iM}U\x89d\xa4\x83\x9es\xbd\xaa\xae~\xd2˼\x87\xe3\xe4ċ\xed\xf1ȍ\xf2\xf8ɍ\xf5\xfbʍ\xf6\xfdʌ\xf7\xfeʌ\xf7\xfeʋ\xf7\xfeʋ\xf7\xfeʌ\xf7\xfeʌ\xf7\xfeʍ\xf6\xfdɍ\xf5\xfbȍ\xf2\xf8ċ\xed\xf1\xbc\x87\xe3\xe3\xaf~\xd2ɟt\xbe\xa7\x8be\xa6\u007fkO\x80QH5V-\x1f\x17%\x13\x06\x05\a\x06\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
}
2020-03-21 13:34:37 +03:00
file8 := &embedded.EmbeddedFile{
Filename: "theme.css",
2020-03-21 14:11:42 +03:00
FileModTime: time.Unix(1584787907, 0),
2020-03-21 13:34:37 +03:00
Content: string(":root {\n --main-title-color: #ae81ff;\n --link-hover-color: #ae81ff;\n}\n\n/* normalize */\n* {\n font-weight: inherit;\n font-size: inherit;\n border: none;\n outline: none;\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\na {\n color: inherit;\n text-decoration: none;\n}\n\nbody {\n font-family: Arial, sans-serif;\n font-size: 16px;\n font-weight: 400;\n color: #c5c8c6;\n background: #1e1e1e;\n padding-bottom: 10px;\n}\n\nnav {\n z-index: 100;\n color: var(--main-title-color);\n text-shadow: -2px 2px 3px rgba(0, 0, 0, 0.7);\n font-weight: 700;\n font-size: 20px;\n text-indent: 20px;\n line-height: 50px;\n width: 100%;\n height: 50px;\n background: #171717;\n border-bottom: 1px solid #272727;\n}\n\nmain {\n width: 1156px;\n margin:0 auto;\n margin-top: 15px;\n white-space: nowrap;\n}\n\n#player {\n width: 854px;\n display: inline-block;\n vertical-align: top;\n}\n\n/* 480p */\n#video {\n width: 100%;\n height: 480px;\n background: #000;\n box-shadow: 0 3px 7px 0 rgba(0, 0, 0, 0.2);\n}\n\n#player > h1 {\n margin-top: 10px;\n}\n\n#player > h2 {\n margin-top: 5px;\n color: #676867;\n font-size: 90%;\n}\n\n#player > p {\n margin-top: 10px;\n font-size: 80%;\n width: 100%;\n white-space: normal;\n}\n\n#playlist {\n font-size: 13px;\n display: inline-block;\n margin-left: 10px;\n width: 290px;\n background: #282a2e;\n box-shadow: 0 3px 7px 0 rgba(0, 0, 0, 0.2);\n}\n\n#playlist > a {\n display: block;\n padding: 10px;\n position: relative;\n min-height: 54px;\n}\n\n#playlist > a:hover {\n color: var(--link-hover-color);\n}\n\n#playlist > a.playing {\n background: #383a3e;\n}\n\n#playlist > a + a {\n border-top: 1px solid #1e1e1e;\n}\n\n#playlist > a > img {\n width: 70px;\n}\n\n#playlist > a > div {\n position: absolute;\n top: 10px;\n right: 10px;\n bottom: 10px;\n left: 90px;\n}\n\n#playlist > a > div > h1 {\n white-space: normal;\n}\n\n#playlist > a > div > h2 {\n margin-top: 5px;\n color: #676867;\n font-size: 90%;\n}\n\n/* 360p */\n@media only screen and (max-width: 1180px) {\n main {\n width: 940px;\n }\n #player {\n width: 640px;\n }\n #video {\n height: 360px;\n }\n}\n\n/* 240p */\n@media only screen and (max-width: 965px) {\n main {\n width: 726px;\n }\n #player {\n width: 426px;\n }\n #video {\n height: 240px;\n }\n}\n\n/* 240p with shifted playlist */\n@media only screen and (max-width: 750px) {\n main {\n width: 426px;\n }\n #player {\n width: 426px;\n }\n #video {\n height: 240px;\n }\n #playlist {\n width: 426px;\n margin-top: 10px;\n margin-left: 0;\n display: block;\n }\n}\n\n/* responsive width with shifted playlist */\n@media only screen and (max-width: 440px) {\n main {\n width: 100%;\n }\n #player {\n width: 100%;\n }\n #video {\n height: auto;\n }\n #playlist {\n width: 100%;\n margin-top: 10px;\n margin-left: 0;\n display: block;\n }\n}\n\n/* Upload */\n.upload_form_cont {\n background: -moz-linear-gradient(#ffffff, #f2f2f2);\n background: -ms-linear-gradient(#ffffff, #f2f2f2);\n background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #f2f2f2));\n background: -webkit-linear-gradient(#ffffff, #f2f2f2);\n background: -o-linear-gradient(#ffffff, #f2f2f2);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f2f2f2');\n -ms-filter: \"progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f2f2f2')\";\n background: linear-gradient(#ffffff, #f2f2f2);\n color:#000;\n overflow:hidden;\n}\n#upload_form {\n float:left;\n padding:20px;\n width:700px;\n}\n#upload_form > div {\n margin-bottom:10px;\n}\n#speed,#r
}
file9 := &embedded.EmbeddedFile{
Filename: "upload.js",
2020-03-21 14:11:42 +03:00
FileModTime: time.Unix(1584787907, 0),
2020-03-21 13:34:37 +03:00
Content: string("// common variables\nvar iBytesUploaded = 0;\nvar iBytesTotal = 0;\nvar iPreviousBytesLoaded = 0;\nvar iMaxFilesize = 104857600; // 100MB\nvar oTimer = 0;\nvar sResultFileSize = '';\nfunction secondsToTime(secs) { // we will use this function to convert seconds in normal time format\n var hr = Math.floor(secs / 3600);\n var min = Math.floor((secs - (hr * 3600))/60);\n var sec = Math.floor(secs - (hr * 3600) - (min * 60));\n if (hr < 10) {hr = \"0\" + hr; }\n if (min < 10) {min = \"0\" + min;}\n if (sec < 10) {sec = \"0\" + sec;}\n if (hr) {hr = \"00\";}\n return hr + ':' + min + ':' + sec;\n};\nfunction bytesToSize(bytes) {\n var sizes = ['Bytes', 'KB', 'MB'];\n if (bytes == 0) return 'n/a';\n var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));\n return (bytes / Math.pow(1024, i)).toFixed(1) + ' ' + sizes[i];\n};\nfunction fileSelected() {\n // hide different warnings\n document.getElementById('upload_response').style.display = 'none';\n document.getElementById('error').style.display = 'none';\n document.getElementById('error2').style.display = 'none';\n document.getElementById('abort').style.display = 'none';\n document.getElementById('warnsize').style.display = 'none';\n // get selected file element\n var oFile = document.getElementById('image_file').files[0];\n // filter for image files\n var rFilter = /^(image\\/bmp|image\\/gif|image\\/jpeg|image\\/png|image\\/tiff)$/i;\n if (! rFilter.test(oFile.type)) {\n document.getElementById('error').style.display = 'block';\n return;\n }\n // little test for filesize\n if (oFile.size > iMaxFilesize) {\n document.getElementById('warnsize').style.display = 'block';\n return;\n }\n // get preview element\n var oImage = document.getElementById('preview');\n // prepare HTML5 FileReader\n var oReader = new FileReader();\n oReader.onload = function(e){\n // e.target.result contains the DataURL which we will use as a source of the image\n oImage.src = e.target.result;\n oImage.onload = function () { // binding onload event\n // we are going to display some custom image information here\n sResultFileSize = bytesToSize(oFile.size);\n document.getElementById('fileinfo').style.display = 'block';\n document.getElementById('filename').innerHTML = 'Name: ' + oFile.name;\n document.getElementById('filesize').innerHTML = 'Size: ' + sResultFileSize;\n document.getElementById('filetype').innerHTML = 'Type: ' + oFile.type;\n document.getElementById('filedim').innerHTML = 'Dimension: ' + oImage.naturalWidth + ' x ' + oImage.naturalHeight;\n };\n };\n // read selected file as DataURL\n oReader.readAsDataURL(oFile);\n}\nfunction startUploading() {\n // cleanup all temp states\n iPreviousBytesLoaded = 0;\n document.getElementById('upload_response').style.display = 'none';\n document.getElementById('error').style.display = 'none';\n document.getElementById('error2').style.display = 'none';\n document.getElementById('abort').style.display = 'none';\n document.getElementById('warnsize').style.display = 'none';\n document.getElementById('progress_percent').innerHTML = '';\n var oProgress = document.getElementById('progress');\n oProgress.style.display = 'block';\n oProgress.style.width = '0px';\n // get form data for POSTing\n //var vFD = document.getElementById('upload_form').getFormData(); // for FF3\n var vFD = new FormData(document.getElementById('upload_form'));\n // create XMLHttpRequest object, adding few event listeners, and POSTing our data\n var oXHR = new XMLHttpRequest();\n oXHR.upload.addEventListener('progress', uploadProgress, false);\n oXHR.addEventListener('load', uploadFinish, false);\n oXHR.addEventListener('error', uploadError, false);\n oXHR.addEventListener('abort', uploadAbort, false);\n oXHR.open('POST', '/upload');\n oXHR.send(vFD);\n // set
}
// define dirs
2020-03-21 13:34:37 +03:00
dir5 := &embedded.EmbeddedDir{
Filename: "",
2020-03-21 14:11:42 +03:00
DirModTime: time.Unix(1584787907, 0),
ChildFiles: []*embedded.EmbeddedFile{
2020-03-21 13:34:37 +03:00
file6, // "defaulticon.jpg"
file7, // "favicon.ico"
file8, // "theme.css"
file9, // "upload.js"
},
}
// link ChildDirs
2020-03-21 13:34:37 +03:00
dir5.ChildDirs = []*embedded.EmbeddedDir{}
// register embeddedBox
embedded.RegisterEmbeddedBox(`../static`, &embedded.EmbeddedBox{
Name: `../static`,
2020-03-21 14:11:42 +03:00
Time: time.Unix(1584787907, 0),
Dirs: map[string]*embedded.EmbeddedDir{
2020-03-21 13:34:37 +03:00
"": dir5,
},
Files: map[string]*embedded.EmbeddedFile{
2020-03-21 13:34:37 +03:00
"defaulticon.jpg": file6,
"favicon.ico": file7,
"theme.css": file8,
"upload.js": file9,
},
})
}