diff --git a/data/css/data_table.css b/data/css/data_table.css index 4fb62999..5846855c 100644 --- a/data/css/data_table.css +++ b/data/css/data_table.css @@ -1,9 +1,12 @@ .dataTables_wrapper { - border-radius: 5px; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - width: 100%; - background-color: #313131; + border-radius: 20px; + -webkit-border-radius: 20px; + -moz-border-radius: 20px; + width: 88%; + margin: 20px auto 0 auto; + padding: 25px; + background-color: white; + position: relative; min-height: 155px; clear: both; _height: 302px; @@ -23,25 +26,26 @@ text-align: center; color: #999; font-size: 14px; - background-color: #343434; + background-color: white; } .dataTables_length { - /* - * Look in styles.css - * */ + width: 40%; + float: left; } .dataTables_filter { - /* - * Look in style.css - * */ + width: 50%; + float: right; + text-align: right; + margin-bottom: 15px; } .dataTables_info { - /* - * Look in style.css - * */ + width: 50%; + float: left; + background-color: white; + font-weight: bold; } .dataTables_paginate { @@ -49,7 +53,7 @@ * width: 50px; float: right; text-align: right; - margin-top: 15px; + background-color: white; } /* Pagination nested */ @@ -82,8 +86,7 @@ * DataTables display */ table.display { - margin: auto; - width: 100%; + margin: 20px auto; clear: both; /* Note Firefox 3.5 and before have a bug with border-collapse @@ -101,11 +104,10 @@ table.display { } table.display thead th { - padding: 3px 15px 6px 15px; - background-color: #414141; - color: White; + padding: 3px 18px 3px 10px; + background-color: white; font-weight: bold; - font-size: 12px; + font-size: 16px; cursor: pointer; * cursor: hand; } @@ -122,7 +124,7 @@ table.display tr.heading2 td { table.display td { padding: 3px 10px; - font-size: 12px; + font-size: 16px; } table.display td.center { @@ -163,47 +165,44 @@ table.display td.center { * DataTables row classes */ table.display tr.odd.gradeA { - background-color: #546B00; + background-color: #ddffdd; } table.display tr.even.gradeA { - background-color: #445014; + background-color: #ddffdd; } table.display tr.odd.gradeC { - background-color: #7A51A5; + background-color: #ddddff; } table.display tr.even.gradeC { - background-color: #6A33A5; + background-color: #ddddff; } -/* - * GradeSkipped - * */ table.display tr.odd.gradeX { - background-color: #4F0043; + background-color: #ffdddd; } table.display tr.even.gradeX { - background-color: #3B0F34; + background-color: #ffdddd; } table.display tr.odd.gradeU { - background-color: #28064C; + background-color: #ddd; } table.display tr.even.gradeU { - background-color: #241239; + background-color: #eee; } table.display tr.odd.gradeZ { - background-color: #313131; + background-color: #FCFAFA; } table.display tr.even.gradeZ { - background-color: #272727; + background-color: white; } @@ -236,11 +235,10 @@ table.display tr.even.gradeZ { } .dataTables_empty { - color: #575757; font-size: 24px; text-align: center; vertical-align: middle; - background-color: #343434; + background-color: white; height: 50px; width: 90%; } @@ -274,49 +272,33 @@ td.details { .paging_full_numbers span.paginate_button, .paging_full_numbers span.paginate_active { - border: 1px solid #000; - color: #000; - font-weight: bold; - padding: 3px 5px; + border: 1px solid #aaa; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + padding: 2px 5px; margin: 0 3px; cursor: pointer; *cursor: hand; - border-radius: 3px; - text-shadow: rgb(255,255,255); } .paging_full_numbers span.paginate_button { - background-image: linear-gradient(bottom, rgb(82,0,0) 0%, rgb(117,0,10) 100%); - background-image: -o-linear-gradient(bottom, rgb(82,0,0) 0%, rgb(117,0,10) 100%); - background-image: -moz-linear-gradient(bottom, rgb(82,0,0) 0%, rgb(117,0,10) 100%); - background-image: -webkit-linear-gradient(bottom, rgb(82,0,0) 0%, rgb(117,0,10) 100%); - background-image: -ms-linear-gradient(bottom, rgb(82,0,0) 0%, rgb(117,0,10) 100%); - border-bottom: 1px solid #000; + background-color: #ddd; } .paging_full_numbers span.paginate_button:hover { - background-image: linear-gradient(bottom, rgb(117,0,10) 0%, rgb(82,0,0) 100%); - background-image: -o-linear-gradient(bottom, rgb(117,0,10) 0%, rgb(82,0,0) 100%); - background-image: -moz-linear-gradient(bottom, rgb(117,0,10) 0%, rgb(82,0,0) 100%); - background-image: -webkit-linear-gradient(bottom, rgb(117,0,10) 0%, rgb(82,0,0) 100%); - background-image: -ms-linear-gradient(bottom, rgb(117,0,10) 0%, rgb(82,0,0) 100%); - border-bottom: 1px solid #000; - color: #fff; + background-color: #ccc; } .paging_full_numbers span.paginate_active { - background-color: #800000; - color: #fff; + background-color: #99B3FF; } table.display tr.even.row_selected td { - background-color: #660000; - color: #fff; + background-color: #B0BED9; } table.display tr.odd.row_selected td { - background-color: #4d0000; - color: #fff; + background-color: #9FAFD1; } div.box { diff --git a/data/css/style.css b/data/css/style.css new file mode 100644 index 00000000..7641d431 --- /dev/null +++ b/data/css/style.css @@ -0,0 +1,310 @@ +/* HTML5 ✰ Boilerplate */ + +html, body, div, span, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp, +small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, figcaption, figure, +footer, header, hgroup, menu, nav, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} + +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} + +blockquote, q { quotes: none; } +blockquote:before, blockquote:after, +q:before, q:after { content: ''; content: none; } +ins { background-color: #ff9; color: #000; text-decoration: none; } +mark { background-color: #ff9; color: #000; font-style: italic; font-weight: bold; } +del { text-decoration: line-through; } +abbr[title], dfn[title] { border-bottom: 1px dotted; cursor: help; } +table { border-collapse: collapse; border-spacing: 0; } +hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; } +input, select { vertical-align: middle; } + +body { font:13px/1.231 sans-serif; *font-size:small; } +select, input, textarea, button { font:99% sans-serif; } +pre, code, kbd, samp { font-family: monospace, sans-serif; } + +html { overflow-y: scroll; } +a:hover, a:active { outline: none; } +ul, ol { margin-left: 2em; } +ol { list-style-type: decimal; } +nav ul, nav li { margin: 0; list-style:none; list-style-image: none; } +small { font-size: 85%; } +strong, th { font-weight: bold; } +td { vertical-align: top; } + +sub, sup { font-size: 75%; line-height: 0; position: relative; } +sup { top: -0.5em; } +sub { bottom: -0.25em; } + +pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; padding: 15px; } +textarea { overflow: auto; } +.ie6 legend, .ie7 legend { margin-left: -7px; } +input[type="radio"] { vertical-align: text-bottom; } +input[type="checkbox"] { vertical-align: bottom; } +.ie7 input[type="checkbox"] { vertical-align: baseline; } +.ie6 input { vertical-align: text-bottom; } +label, input[type="button"], input[type="submit"], input[type="image"], button { cursor: pointer; } +button, input, select, textarea { margin: 0; } +input:valid, textarea:valid { } +input:invalid, textarea:invalid { border-radius: 1px; -moz-box-shadow: 0px 0px 5px red; -webkit-box-shadow: 0px 0px 5px red; box-shadow: 0px 0px 5px red; } +.no-boxshadow input:invalid, .no-boxshadow textarea:invalid { background-color: #f0dddd; } + +::-moz-selection{ background: grey; color:#fff; text-shadow: none; } +::selection { background: grey; color:#fff; text-shadow: none; } + +button { width: auto; overflow: visible; } +.ie7 img { -ms-interpolation-mode: bicubic; } + +body, select, input, textarea { color: #444; } +h1, h2, h3, h4, h5, h6 { font-weight: bold; } + +/* + // ========================================== \\ + || || + || Custom Styles || + || || + \\ ========================================== // +*/ + +a:link { + color: #5E2612; + text-decoration: none; + } +a:visited { + color: #5E2612; + text-decoration: none; + } +a:hover { /*this effect is not shown in NN4.xx*/ + color: #999999; + text-decoration: underline; + } +a:active {/*colour in NN4.xx is red*/ + color: #5E2612; + text-decoration: underline; + } +a.blue { + color: blue; + } + +container { } + +body { background-color: #EBF4FB; min-width: 935px; } + +header { min-height: 68px; width: 100%; min-width: 935px; padding-left: 0px; padding-right: 10px; background-color: #CDC9C9; position: fixed; z-index: 998; } + +h1 { font-size: 24px; } +h2 { font-size: 20px; } +h3 { font-size: 16px; } +h4 { font-size: 14px; } + +p.indented { padding-top: 20px; margin-left: 20px; font-size: 14px; } +p.center { text-align: center; font-size: 18px; } +.smalltext2 { font-size: 12px; margin-left: 45px; } + +div#updatebar { text-align: center; min-width: 970px; width: 100%; background-color: light-blue; float: left; } +div#logo { float: left; padding-left: 10px; } + +ul#nav { margin: 25px 0 0 0; float: left; list-style-type: none; } +ul#nav li { margin: 40px 0px auto 10px; display: inline; } +ul#nav li a { padding: 5px; font-size: 16px; font-weight: bold; color: #330000; text-decoration: none; } +ul#nav li a:hover { background-color: #a3e532; } + +div#subhead_container { height: 30px; width:100%; min-width: 1000px; background-color:#330000; float: left; list-style-type: none; z-index: 998; overflow: hidden; } +ul#subhead_menu { margin-top: 5px; } +ul#subhead_menu li { width: 100%; height: 100%; display: inline; } +ul#subhead_menu li a { padding: 5px 15px 10px 15px; vertical-align: middle; color: white; font-size: 16px; text-decoration: none; } +ul#subhead_menu li a:hover { width: 100%; height: 100%; background-color: #grey; } + +div#searchbar { margin: 24px 30px auto auto; float: right; } + +div#main { margin: 0; padding: 80px 0 0 0; } + +.table_wrapper { border-radius: 20px; -webkit-border-radius: 20px; -moz-border-radius: 20px; width: 88%; margin: 20px auto 0 auto; padding: 25px; background-color: white; position: relative; min-height: 200px; clear: both; _height: 302px; zoom: 1; } +.manage_wrapper { width: 88%; margin: 20px auto 0 auto; padding: 25px; min-height: 150px; clear: both; _height: 302px; zoom: 1; } +.table_wrapper_left { padding: 25px; background-color: #ffffff; float: left; width: 40%; min-height: 100px; margin-top: 25px; margin-left: 30px; margin-right: auto; -moz-border-radius: 20px; border-radius: 20px; } +.table_wrapper_right{ padding: 25px; background-color: #ffffff; width: 40%; min-height: 100px; margin-top: 25px; margin-left: auto; margin-right: 30px; -moz-border-radius: 20px; border-radius: 20px; } + +.configtable { font-size: 14px; line-height:18px; } +.configtable td { width: 350px; padding: 10px; } +.configtable td#middle { vertical-align: middle; } + +table#artist_table { background-color: white; width: 100%; padding: 20px; } + +table#artist_table th#select { text-align: left; } +table#artist_table th#name { text-align: left; min-width: 200px; } +table#artist_table th#status { text-align: left; min-width: 50px; } +table#artist_table th#album { text-align: left; min-width: 300px; } +table#artist_table th#have { text-align: center; } +table#artist_table td#name { vertical-align: middle; text-align: left; min-width:200px; } +table#artist_table td#status { vertical-align: middle; text-align: left; min-width: 50px; } +table#artist_table td#album { vertical-align: middle; text-align: left; min-width: 300px; } +table#artist_table td#have { vertical-align: middle; } + +div#paddingheader { padding-top: 48px; font-size: 24px; font-weight: bold; text-align: center; } +div#nopaddingheader { font-size: 24px; font-weight: bold; text-align: center; } +table#album_table { background-color: white; } + +table#album_table th#select { vertical-align: middle; text-align: left; min-width: 10px; } +table#album_table th#albumart { text-align: left; min-width: 50px; } +table#album_table th#albumname { text-align: center; min-width: 150px; } +table#album_table th#reldate { width: 175px; text-align: center; min-width: 70px; } +table#album_table th#status { width: 175px; text-align: center; min-width: 80px; } +table#album_table th#type { width: 175px; text-align: center; min-width: 100px; } +table#album_table th#bitrate { text-align: center; min-width: 60px; } +table#album_table td#select { vertical-align: middle; text-align: left; } +table#album_table td#albumart { vertical-align: middle; text-align: left; } +table#album_table td#albumname { vertical-align: middle; text-align: center; } +table#album_table td#reldate { vertical-align: middle; text-align: center; } +table#album_table td#status { vertical-align: middle; text-align: center; font-size: 13px; } +table#album_table td#type { vertical-align: middle; text-align: center; } +table#album_table td#have { vertical-align: middle; } +table#album_table td#bitrate { vertical-align: middle; text-align: center; font-size: 13px; } + +img.albumArt { float: left; padding-right: 5px; } +div#albumheader { padding-top: 48px; height: 200px; } +div#track_wrapper { margin-left: -50px; padding-top: 20px; font-size: 16px; width: 100%; } + +table#track_table th#number { text-align: right; min-width: 10px; } +table#track_table th#name { text-align: center; min-width: 350px; } +table#track_table th#duration { width: 175px; text-align: center; min-width: 100px; } +table#track_table th#location { text-align: center; width: 250px; } +table#track_table th#bitrate { text-align: center; min-width: 75px; } + +table#track_table td#number { vertical-align: middle; text-align: right; } +table#track_table td#name { vertical-align: middle; text-align: center; font-size: 15px; } +table#track_table td#duration { vertical-align: middle; text-align: center; } +table#track_table td#location { vertical-align: middle; text-align: center; font-size: 11px; } +table#track_table td#bitrate { vertical-align: middle; text-align: center; font-size: 12px; } + +table#history_table { background-color: white; width: 100%; font-size: 13px; } + +table#history_table td#dateadded { vertical-align: middle; text-align: center; min-width: 150px; font-size: 14px; } +table#history_table td#filename { vertical-align: middle; text-align: center; min-width: 100px; font-size: 15px; } +table#history_table td#size { vertical-align: middle; text-align: center; min-width: 75px; font-size: 14px; } +table#history_table td#status { vertical-align: middle; text-align: center; font-size: 14px; } +table#history_table td#action { vertical-align: middle; text-align: center; font-size: 14px; } + +table#log_table { background-color: white; } + +table#log_table th#timestamp { text-align: left; min-width: 150px; } +table#log_table th#level { text-align: left; min-width: 60px; } +table#log_table th#message { text-align: left; min-width: 500px; } + +table#upcoming_table th#albumart { text-align: center; min-width: 50px; } +table#upcoming_table th#albumname { text-align: center; min-width: 200px; } +table#upcoming_table th#artistname { text-align: center; min-width: 150px; } +table#upcoming_table th#reldate { text-align: center; min-width: 100px; } +table#upcoming_table th#type { text-align: center; min-width: 75px; } + +table#upcoming_table td#select { vertical-align: middle; text-align: center; } +table#upcoming_table td#albumart { vertical-align: middle; text-align: center; min-width: 50px; } +table#upcoming_table td#albumname { vertical-align: middle; text-align: center; min-width: 200px; } +table#upcoming_table td#artistname { vertical-align: middle; text-align: center; min-width: 150px; } +table#upcoming_table td#reldate { vertical-align: middle; text-align: center; min-width: 100px; } +table#upcoming_table td#type { vertical-align: middle; text-align: center; min-width: 75px; } +table#upcoming_table td#status { vertical-align: middle; text-align: center; } + +table#wanted_table th#albumart { text-align: center; min-width: 50px; } +table#wanted_table th#albumname { text-align: center; min-width: 200px; } +table#wanted_table th#artistname { text-align: center; min-width: 150px; } +table#wanted_table th#reldate { text-align: center; min-width: 100px; } +table#wanted_table th#type { text-align: center; min-width: 75px; } + +table#wanted_table td#select { vertical-align: middle; text-align: center; } +table#wanted_table td#albumart { vertical-align: middle; text-align: center; min-width: 50px; } +table#wanted_table td#albumname { vertical-align: middle; text-align: center; min-width: 200px; } +table#wanted_table td#artistname { vertical-align: middle; text-align: center; min-width: 150px; } +table#wanted_table td#reldate { vertical-align: middle; text-align: center; min-width: 100px; } +table#wanted_table td#type { vertical-align: middle; text-align: center; min-width: 75px; } +table#wanted_table td#status { vertical-align: middle; text-align: center; } + +table#searchresults_table th#albumname { text-align: left; min-width: 225px; } +table#searchresults_table th#artistname { text-align: center; min-width: 325px; } +table#searchresults_table th#score { text-align: center; min-width: 75px; } + +table#searchresults_table td#albumname { vertical-align: middle; text-align: left; min-width: 200px; } +table#searchresults_table td#artistname { vertical-align: middle; text-align: left; min-width: 300px; } +table#searchresults_table td#score { vertical-align: middle; text-align: center; min-width: 75px; } + +div.progress-container { border: 1px solid #ccc; width: 100px; height: 14px; margin: 2px 5px 2px 0; padding: 1px; float: left; background: white; } +div.progress-container > div { background-color: #a3e532; height: 14px; } +.havetracks { font-size: 13px; margin-left: 36px; padding-bottom: 3px; vertical-align: middle; } + +footer { margin: 20px auto 20px auto; } +div#version { text-align: center; font-weight: bold; } +div#donate { text-align: center; margin: 20px auto 20px auto; } + +div#shutdown{ text-align: center; vertical-align: middle; } + +.cloudtag { padding-top: 30px; font-size:16px; } +#cloud a.tag1 { font-size: 0.7em; font-weight: 100; } +#cloud a.tag2 { font-size: 0.8em; font-weight: 200; } +#cloud a.tag3 { font-size: 0.9em; font-weight: 300; } +#cloud a.tag4 { font-size: 1.0em; font-weight: 400; } +#cloud a.tag5 { font-size: 1.2em; font-weight: 500; } +#cloud a.tag6 { font-size: 1.4em; font-weight: 600; } +#cloud a.tag7 { font-size: 1.6em; font-weight: 700; } +#cloud a.tag8 { font-size: 1.8em; font-weight: 800; } +#cloud a.tag9 { font-size: 2.2em; font-weight: 900; } +#cloud a.tag10 { font-size: 2.5em; font-weight: 900; } + +#cloud { padding: 2px; line-height: 1.5em; text-align: center; } +#cloud a { padding: 0px; } +#cloud { margin: 0; } +#cloud li { display: inline; } + + + +.ir { display: block; text-indent: -999em; overflow: hidden; background-repeat: no-repeat; text-align: left; direction: ltr; } +.hidden { display: none; visibility: hidden; } +.visuallyhidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } +.visuallyhidden.focusable:active, +.visuallyhidden.focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } +.invisible { visibility: hidden; } +.clearfix:before, .clearfix:after { content: "\0020"; display: block; height: 0; overflow: hidden; } +.clearfix:after { clear: both; } +.clearfix { zoom: 1; } + + +@media all and (orientation:portrait) { + +} + +@media all and (orientation:landscape) { + +} + +@media screen and (max-device-width: 480px) { + + html { -webkit-text-size-adjust:none; -ms-text-size-adjust:none; } +} + + +@media print { + * { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important; + -ms-filter: none !important; } + a, a:visited { color: #444 !important; text-decoration: underline; } + a[href]:after { content: " (" attr(href) ")"; } + abbr[title]:after { content: " (" attr(title) ")"; } + .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } + pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } + thead { display: table-header-group; } + tr, img { page-break-inside: avoid; } + @page { margin: 0.5cm; } + p, h2, h3 { orphans: 3; widows: 3; } + h2, h3{ page-break-after: avoid; } +} \ No newline at end of file diff --git a/data/css/StyleSheet.css b/data/interfaces/brink/CSS/StyleSheet.css similarity index 81% rename from data/css/StyleSheet.css rename to data/interfaces/brink/CSS/StyleSheet.css index ffbc89e4..a469c31b 100644 --- a/data/css/StyleSheet.css +++ b/data/interfaces/brink/CSS/StyleSheet.css @@ -77,16 +77,6 @@ h1, h2, h3, h4, h5, h6 { font-weight: bold; } || || \\ ========================================== // */ -table thead.fixed -{ -position: fixed; -width: 100%; -} -table thead.fixed tr -{ -display: block; -width: 100%; -} /* * Univarsal @@ -105,7 +95,7 @@ width: 100%; * Links Styles * */ a:link { - color: #fff; + color: rgb(240,240,240); text-decoration: none; } a:visited { @@ -113,31 +103,18 @@ a:visited { text-decoration: none; } a:hover { /*this effect is not shown in NN4.xx*/ - color: #fff; + color: rgb(255,255,255); text-decoration: underline; } a:active {/*colour in NN4.xx is red*/ color: #fff; text-decoration: underline; } -a.blue { - color: blue; - } #container { width: 100%; margin: auto; } body { background-color: #313131; color: rgb(190,190,190); overflow: hidden; overflow-y: hidden; overflow-x: hidden; } - - -table.display thead tr th -{ -border: 1px solid #000; -color: #000; -text-shadow: 1px 1px rgb(100,100,100); -line-height: 100%; -} - h1, h1 a, h1 a:hover @@ -175,16 +152,20 @@ box-shadow: 0px 0px 2px #000; div#logo { - padding-left: 10px; + padding-left: 5px; height: 30px; width: 30px; } /*Update box*/ +div.btnClose:after +{ + content: "X"; +} div.btnClose { overflow: hidden; -moz-border-radius: 0px 0px 0px 5px; -webkit-border-radius: 0px 0px 0px 5px; border-radius: 0px 0px 0px 5px; - background-color: rgb(60,0,5); + background-color: rgba(0,0,0,0.2); cursor: pointer; width: 20px; height: 20px; @@ -240,30 +221,24 @@ ul#nav width: 200px; padding: 0; margin: 0; - background-color: rgba(0,0,0,0.2); + background-color: rgba(255,255,255,0.1); border-right: 1px solid #000; padding-top: 30px; z-index: 300; box-shadow: 0px 0px 3px #000; } -ul#nav li { display: block; width: 100%; padding: 0; margin: 0;} -ul#nav li:hover { -display: block; -width: 100%; -background: rgba(0,0,0,0.2); +ul#nav li +{ + display: block; + width: 100%; + padding: 0; + margin: 0; } - -ul#nav li.selected -{ -background-image: linear-gradient(bottom, rgb(69,69,69) 0%, rgb(102,102,102) 100%); -background-image: -o-linear-gradient(bottom, rgb(69,69,69) 0%, rgb(102,102,102) 100%); -background-image: -moz-linear-gradient(bottom, rgb(69,69,69) 0%, rgb(102,102,102) 100%); -background-image: -webkit-linear-gradient(bottom, rgb(69,69,69) 0%, rgb(102,102,102) 100%); -background-image: -ms-linear-gradient(bottom, rgb(69,69,69) 0%, rgb(102,102,102) 100%); -border-bottom: 1px solid #000; -border-top: 1px solid #000; -font-weight: bold; +ul#nav li:hover { + display: block; + width: 100%; + background: rgba(0,0,0,0.2); } ul#nav li a @@ -333,35 +308,30 @@ ul#subhead_menu li a ul#subhead_menu li a:hover { -color: rgb(255,255,255); -font-weight: bold; + color: rgb(255,255,255); + font-weight: bold; } /* Searchbar Styles */ div#searchbar { position: fixed; + padding-left: 16px; top: 5px; right: 20px; - border-radius: 20px; - color: #fff; - background-color: rgb(70,0,10); - border-top: 1px solid rgb(90,0,20); - border-left: 1px solid rgb(90,0,20); - box-shadow: 1px 1px 2px rgb(240,0,20); + border-radius: 20px; + background-position: 5px center; + background-repeat: no-repeat; } div#searchbar input[type=text] { -background-color: rgb(70,0,10); -border-radius: 20px 0px 0px 20px; -color: #fff; -padding: 2px 10px 2px 10px; -border: 0; -box-shadow: none; + background-color: rgba(0,0,0,0.0); + color: #fff; + border: 0px; + box-shadow: none; } div#searchbar select { - color: #fff; - background-color: rgb(80,0,10); + background-color: rgba(0,0,0,0.0); border: 0; } div#searchbar input[type=submit] @@ -374,7 +344,6 @@ height: 22px; width: 40px; line-height: 13px; margin-top: -1px; -margin-right: -15px; color: #000; text-align: center; } @@ -409,7 +378,7 @@ div#main font-size: 12px; font-weight: bold; color: rgb(20,0,5); - text-shadow: 1px 1px rgb(123,0,10); + text-shadow: 1px 1px 0px rgba(0,0,0,0.1); } /*Filter text input styles*/ @@ -422,9 +391,9 @@ div#main -moz-border-radius: 20px; height: 12px; padding-left: 10px; - background-color: rgb(30,0,10); + background-color: rgba(0,0,0,0.8); border: 1px solid #000; - box-shadow: 1px 1px 2px rgb(123,0,10); + box-shadow: 1px 1px 0px rgba(255,255,255,0.3); } .dataTables_length @@ -587,8 +556,8 @@ text-shadow: 1px 1px 0px rgb(173,61,0); .select{ position: absolute; height: 20px; - width: 110px; - padding: 0 10px 0 8px; + width: 115px; + padding: 0px 15px 0px 10px; color: #000; font-weight: bold; text-shadow: 1px 1px 0px rgb(170,170,170); @@ -597,19 +566,13 @@ text-shadow: 1px 1px 0px rgb(173,61,0); border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; - box-shadow: 1px 1px 0px rgb(90,90,90); + box-shadow: 1px 1px 0px rgba(255,255,255,0.2); border: 1px solid #000; - background-image: url(../images/select.png) right center; - background-image: linear-gradient(bottom, rgb(117,117,117) 0%, rgb(156,156,156) 100%); - background-image: -o-linear-gradient(bottom, rgb(117,117,117) 0%, rgb(156,156,156) 100%); - background-image: -moz-linear-gradient(bottom, rgb(117,117,117) 0%, rgb(156,156,156) 100%); - background-image: -webkit-linear-gradient(bottom, rgb(117,117,117) 0%, rgb(156,156,156) 100%); - background-image: -ms-linear-gradient(bottom, rgb(117,117,117) 0%, rgb(156,156,156) 100%); - background-image: linear-gradient(bottom, rgb(117,117,117) 0%, rgb(156,156,156) 100%); - background-position: right; + background: url(../Images/sort_asc.png); + background-position: 98% 50%; background-repeat: no-repeat; - overflow: hidden; background-color: rgb(160,160,160); + overflow: hidden; } /*Tooltip*/ @@ -688,7 +651,7 @@ input[type="text"] box-shadow: 1px 1px 1px rgb(70,70,70); } .manage_wrapper { width: 88%; margin: 20px auto 0 auto; padding: 25px; min-height: 150px; clear: both; _height: 302px; zoom: 1; } -.table_wrapper_half { float: left; width: 50%; min-height: 100px; margin-top: 25px; } +.table_wrapper_half { float: left; width: 50%; min-height: 100px; padding-bottom: 15px; } .configtable { font-size: 14px; line-height:18px; } .configtable td { width: 350px; padding: 10px; } @@ -724,19 +687,29 @@ div#nopaddingheader { font-size: 24px; font-weight: bold; text-align: left; } table#album_table { width: 100%; } /* Album Tableheader*/ -table#album_table th#select { vertical-align: middle; text-align: left; min-width: 10px; } -table#album_table th#albumart { text-align: left; min-width: 50px; } -table#album_table th#albumname { text-align: left; min-width: 150px; } -table#album_table th#reldate { width: 175px; text-align: left; min-width: 70px; } -table#album_table th#status { width: 175px; text-align: left; min-width: 80px; } -table#album_table th#type { width: 175px; text-align: left; min-width: 100px; } -table#album_table th#bitrate { text-align: left; min-width: 60px; } +table#album_table th#select { vertical-align: middle; text-align: left; width: 25px; } +table#album_table th#albumart {vertical-align: middle; text-align: left; width: 70px; } +table#album_table th#albumname {vertical-align: middle; text-align: left; min-width: 150px; } +table#album_table th#reldate {vertical-align: middle; width: 175px; text-align: left; min-width: 70px; } +table#album_table th#status {vertical-align: middle; width: 175px; text-align: left; min-width: 80px; } +table#album_table th#type {vertical-align: middle; width: 175px; text-align: left; min-width: 60px; max-width: 100px; } +table#album_table th#bitrate {vertical-align: middle; text-align: left; min-width: 60px; } /* Album tabledata */ table#album_table td#select { vertical-align: middle; text-align: left; } table#album_table td#albumart { vertical-align: middle; text-align: left; } /* Album art image sizes */ -.album-art-small { float: left; border-radius: 8px; overflow: hidden; box-shadow: 0px 0px 3px #000; background-color: #000;} +.album-art-small +{ + margin: 3px; + float: left; + overflow: hidden; + background-color: #000; + width: 60px; + height: 60px; + box-shadow: 1px 1px 1px #000; + border-radius: 3px; +} .album-art-small img { width: 60px; height: 60px; z-index: 200; } .album-art-big { @@ -867,7 +840,7 @@ div.progress-container width: 100%; height: 15px; margin: 2px 5px 2px 0px; - background: rgb(30,30,30); + background-color: rgba(0,0,0,0.2); color: rgb(30,30,30); text-shadow: 1px 1px rgb(50,50,50); text-align: center; @@ -878,7 +851,7 @@ div.progress-container div.progress-container div { height: 100%; - background-image: url(../images/progress.png); + background-color: rgba(255,255,255,0.1); } /*text format for match/procent*/ .searchmatch, @@ -967,4 +940,230 @@ div#shutdown{ text-align: center; vertical-align: middle; } @page { margin: 0.5cm; } p, h2, h3 { orphans: 3; widows: 3; } h2, h3{ page-break-after: avoid; } +} + +/******************************** + * Data_tables.css moved here * + ********************************/ + +table.display thead tr th +{ + cursor: pointer; + * cursor: hand; + padding-left: 15px; + border: 1px solid #000; + color: #000; + text-shadow: 1px 1px rgba(255,255,255,0.2); + height: 20px; + line-height: 20px; + overflow: hidden; +} + +table.display td +{ + padding: 0px 5px 0px 15px; + font-size: 12px; +} + +table.display tfoot th +{ + padding: 3px 18px 3px 15px; + border-top: 1px solid black; + font-weight: bold; +} + +table.display tr.heading2 td +{ + border-bottom: 1px solid #aaa; +} + +table.display td.center +{ + text-align: center; +} + +/*Sorting*/ +.sorting_asc { + background: url(../images/sort_asc.png) no-repeat center right; +} + +.sorting_desc { + background: url(../images/sort_desc.png) no-repeat center right; +} + +.sorting { + background: url(../images/sort_both.png) no-repeat center right; +} + +.sorting_asc_disabled { + background: url(../images/sort_asc_disabled.png) no-repeat center right; +} + +.sorting_desc_disabled { + background: url(../images/sort_desc_disabled.png) no-repeat center right; +} + +/* + * Grades + * */ + +table.display tr.odd.gradeA { + background-color: #546B00; +} + +table.display tr.even.gradeA { + background-color: #445014; +} + + + +/*Wanted*/ +table.display tr.odd.gradeC { + background-color: #7A51A5; +} + +table.display tr.even.gradeC { + background-color: #6A33A5; +} + +/* + * GradeSkipped + * */ +table.display tr.odd.gradeX { + background-color: #4F0043; +} + +table.display tr.even.gradeX { + background-color: #3B0F34; +} + +table.display tr.odd.gradeU { + background-color: #28064C; +} + +table.display tr.even.gradeU { + background-color: #241239; +} + +/*Skipped*/ +table.display tr.odd.gradeZ { + background-color: #373737; +} + +table.display tr.even.gradeZ { + background-color: #313131; +} + +.dataTables_scroll { + clear: both; +} + +.dataTables_scrollBody { + *margin-top: -1px; +} + +.top, .bottom { + padding: 15px; + background-color: #F5F5F5; + border: 1px solid #CCCCCC; +} + +.top .dataTables_info { + float: none; +} + +.clear { + clear: both; +} + +.dataTables_empty { + color: #575757; + font-size: 24px; + text-align: center; + vertical-align: middle; + background-color: #343434; + height: 50px; + width: 90%; +} + +tfoot input { + margin: 0.5em 0; + width: 100%; + color: #444; +} + +tfoot input.search_init { + color: #999; +} + +td.group { + background-color: #d1cfd0; + border-bottom: 2px solid #A19B9E; + border-top: 2px solid #A19B9E; +} + +td.details { + background-color: #d1cfd0; + border: 2px solid #A19B9E; +} + +.paging_full_numbers { + width: 400px; + height: 22px; + line-height: 22px; +} + +.paging_full_numbers span.paginate_button, + .paging_full_numbers span.paginate_active { + border: 1px solid #000; + color: #000; + font-weight: bold; + padding: 3px 5px; + margin: 0 3px; + cursor: pointer; + *cursor: hand; + border-radius: 3px; + text-shadow: rgb(255,255,255); +} + +.paging_full_numbers span.paginate_button { + background-image: linear-gradient(bottom, rgb(82,0,0) 0%, rgb(117,0,10) 100%); + background-image: -o-linear-gradient(bottom, rgb(82,0,0) 0%, rgb(117,0,10) 100%); + background-image: -moz-linear-gradient(bottom, rgb(82,0,0) 0%, rgb(117,0,10) 100%); + background-image: -webkit-linear-gradient(bottom, rgb(82,0,0) 0%, rgb(117,0,10) 100%); + background-image: -ms-linear-gradient(bottom, rgb(82,0,0) 0%, rgb(117,0,10) 100%); + border-bottom: 1px solid #000; +} + +.paging_full_numbers span.paginate_button:hover { + background-image: linear-gradient(bottom, rgb(117,0,10) 0%, rgb(82,0,0) 100%); + background-image: -o-linear-gradient(bottom, rgb(117,0,10) 0%, rgb(82,0,0) 100%); + background-image: -moz-linear-gradient(bottom, rgb(117,0,10) 0%, rgb(82,0,0) 100%); + background-image: -webkit-linear-gradient(bottom, rgb(117,0,10) 0%, rgb(82,0,0) 100%); + background-image: -ms-linear-gradient(bottom, rgb(117,0,10) 0%, rgb(82,0,0) 100%); + border-bottom: 1px solid #000; + color: #fff; +} + +.paging_full_numbers span.paginate_active { + background-color: #800000; + color: #fff; +} + +table.display tr.even.row_selected td { + background-color: #660000; + color: #fff; +} + +table.display tr.odd.row_selected td { + background-color: #4d0000; + color: #fff; +} + +div.box { + height: 100px; + padding: 10px; + overflow: auto; + border: 1px solid #8080FF; + background-color: #E5E5FF; } \ No newline at end of file diff --git a/data/interfaces/brink/CSS/data_table.css b/data/interfaces/brink/CSS/data_table.css new file mode 100644 index 00000000..d39f51d0 --- /dev/null +++ b/data/interfaces/brink/CSS/data_table.css @@ -0,0 +1,143 @@ +.dataTables_wrapper { + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + width: 100%; + background-color: #313131; + min-height: 155px; + clear: both; + _height: 302px; + zoom: 1; /* Feeling sorry for IE */ +} + +.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 20px; + height: 30px; + margin-left: -125px; + margin-top: -15px; + padding: 14px 0 2px 0; + border: 1px solid #ddd; + text-align: center; + color: #999; + font-size: 14px; + background-color: #343434; +} + +.dataTables_length { + /* + * Look in styles.css + * */ +} + +.dataTables_filter { + /* + * Look in style.css + * */ +} + +.dataTables_info { + /* + * Look in style.css + * */ +} + +.dataTables_paginate { + width: 44px; + * width: 50px; + float: right; + text-align: right; + margin-top: 15px; +} + +/* Pagination nested */ +.paginate_disabled_previous, .paginate_enabled_previous, .paginate_disabled_next, .paginate_enabled_next { + height: 19px; + width: 19px; + margin-left: 3px; + float: left; +} + +.paginate_disabled_previous { + background-image: url('../images/back_disabled.jpg'); +} + +.paginate_enabled_previous { + background-image: url('../images/back_enabled.jpg'); +} + +.paginate_disabled_next { + background-image: url('../images/forward_disabled.jpg'); +} + +.paginate_enabled_next { + background-image: url('../images/forward_enabled.jpg'); +} + + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * DataTables display + */ +table.display { + margin: auto; + width: 100%; + clear: both; + + /* Note Firefox 3.5 and before have a bug with border-collapse + * ( https://bugzilla.mozilla.org/show%5Fbug.cgi?id=155955 ) + * border-spacing: 0; is one possible option. Conditional-css.com is + * useful for this kind of thing + * + * Further note IE 6/7 has problems when calculating widths with border width. + * It subtracts one px relative to the other browsers from the first column, and + * adds one to the end... + * + * If you want that effect I'd suggest setting a border-top/left on th/td's and + * then filling in the gaps with other borders. + */ +} + +table.display thead th { + /*Moved*/ +} + +table.display tfoot th { + /*Moved*/ +} + +table.display tr.heading2 td { + border-bottom: 1px solid #aaa; +} + +table.display td { + /* Moved */ +} + +table.display td.center { + text-align: center; +} + + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * DataTables sorting + */ + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * DataTables row classes + */ + /*Downloaded*/ +/*Moved*/ + + + + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Misc + */ + diff --git a/data/css/jquery.jscrollpane.css b/data/interfaces/brink/CSS/jquery.jscrollpane.css similarity index 100% rename from data/css/jquery.jscrollpane.css rename to data/interfaces/brink/CSS/jquery.jscrollpane.css diff --git a/data/css/selectFix.css b/data/interfaces/brink/CSS/selectFix.css similarity index 100% rename from data/css/selectFix.css rename to data/interfaces/brink/CSS/selectFix.css diff --git a/data/images/box-big.png b/data/interfaces/brink/Images/box-big.png similarity index 100% rename from data/images/box-big.png rename to data/interfaces/brink/Images/box-big.png diff --git a/data/images/cd-big.png b/data/interfaces/brink/Images/cd-big.png similarity index 100% rename from data/images/cd-big.png rename to data/interfaces/brink/Images/cd-big.png diff --git a/data/interfaces/brink/Images/checkbox-original.png b/data/interfaces/brink/Images/checkbox-original.png new file mode 100644 index 00000000..c27eb5bf Binary files /dev/null and b/data/interfaces/brink/Images/checkbox-original.png differ diff --git a/data/images/checkbox.png b/data/interfaces/brink/Images/checkbox.png similarity index 100% rename from data/images/checkbox.png rename to data/interfaces/brink/Images/checkbox.png diff --git a/data/images/cover.ai b/data/interfaces/brink/Images/cover.ai similarity index 100% rename from data/images/cover.ai rename to data/interfaces/brink/Images/cover.ai diff --git a/data/images/cover.psd b/data/interfaces/brink/Images/cover.psd similarity index 100% rename from data/images/cover.psd rename to data/interfaces/brink/Images/cover.psd diff --git a/data/interfaces/brink/Images/headphoneslogo-black.png b/data/interfaces/brink/Images/headphoneslogo-black.png new file mode 100644 index 00000000..c6203434 Binary files /dev/null and b/data/interfaces/brink/Images/headphoneslogo-black.png differ diff --git a/data/interfaces/brink/Images/headphoneslogo.png b/data/interfaces/brink/Images/headphoneslogo.png new file mode 100644 index 00000000..f2622dc5 Binary files /dev/null and b/data/interfaces/brink/Images/headphoneslogo.png differ diff --git a/data/images/progress.png b/data/interfaces/brink/Images/progress.png similarity index 100% rename from data/images/progress.png rename to data/interfaces/brink/Images/progress.png diff --git a/data/interfaces/brink/Images/radio and checkboxes.psd b/data/interfaces/brink/Images/radio and checkboxes.psd new file mode 100644 index 00000000..1b095e87 Binary files /dev/null and b/data/interfaces/brink/Images/radio and checkboxes.psd differ diff --git a/data/interfaces/brink/Images/radio-original.png b/data/interfaces/brink/Images/radio-original.png new file mode 100644 index 00000000..b9b75e02 Binary files /dev/null and b/data/interfaces/brink/Images/radio-original.png differ diff --git a/data/images/radio.png b/data/interfaces/brink/Images/radio.png similarity index 100% rename from data/images/radio.png rename to data/interfaces/brink/Images/radio.png diff --git a/data/interfaces/brink/Images/remove.png b/data/interfaces/brink/Images/remove.png new file mode 100644 index 00000000..9db471b6 Binary files /dev/null and b/data/interfaces/brink/Images/remove.png differ diff --git a/data/interfaces/brink/Images/screen/album.PNG b/data/interfaces/brink/Images/screen/album.PNG new file mode 100644 index 00000000..b6ffd080 Binary files /dev/null and b/data/interfaces/brink/Images/screen/album.PNG differ diff --git a/data/interfaces/brink/Images/screen/artist.PNG b/data/interfaces/brink/Images/screen/artist.PNG new file mode 100644 index 00000000..802a5307 Binary files /dev/null and b/data/interfaces/brink/Images/screen/artist.PNG differ diff --git a/data/interfaces/brink/Images/screen/history.PNG b/data/interfaces/brink/Images/screen/history.PNG new file mode 100644 index 00000000..03f539b7 Binary files /dev/null and b/data/interfaces/brink/Images/screen/history.PNG differ diff --git a/data/interfaces/brink/Images/screen/index.png b/data/interfaces/brink/Images/screen/index.png new file mode 100644 index 00000000..0181a881 Binary files /dev/null and b/data/interfaces/brink/Images/screen/index.png differ diff --git a/data/interfaces/brink/Images/screen/manage.PNG b/data/interfaces/brink/Images/screen/manage.PNG new file mode 100644 index 00000000..2fe47b4f Binary files /dev/null and b/data/interfaces/brink/Images/screen/manage.PNG differ diff --git a/data/interfaces/brink/Images/screen/settings.png b/data/interfaces/brink/Images/screen/settings.png new file mode 100644 index 00000000..019a251c Binary files /dev/null and b/data/interfaces/brink/Images/screen/settings.png differ diff --git a/data/interfaces/brink/Images/screen/upcomming.png b/data/interfaces/brink/Images/screen/upcomming.png new file mode 100644 index 00000000..74243fdc Binary files /dev/null and b/data/interfaces/brink/Images/screen/upcomming.png differ diff --git a/data/interfaces/brink/Images/search-black.png b/data/interfaces/brink/Images/search-black.png new file mode 100644 index 00000000..43c7f3de Binary files /dev/null and b/data/interfaces/brink/Images/search-black.png differ diff --git a/data/interfaces/brink/Images/search-grey.png b/data/interfaces/brink/Images/search-grey.png new file mode 100644 index 00000000..7bc644d6 Binary files /dev/null and b/data/interfaces/brink/Images/search-grey.png differ diff --git a/data/interfaces/brink/Images/search-white.png b/data/interfaces/brink/Images/search-white.png new file mode 100644 index 00000000..214b92b7 Binary files /dev/null and b/data/interfaces/brink/Images/search-white.png differ diff --git a/data/interfaces/brink/Images/search.png b/data/interfaces/brink/Images/search.png new file mode 100644 index 00000000..ed59f53e Binary files /dev/null and b/data/interfaces/brink/Images/search.png differ diff --git a/data/images/select.psd b/data/interfaces/brink/Images/select.psd similarity index 100% rename from data/images/select.psd rename to data/interfaces/brink/Images/select.psd diff --git a/data/images/select.png b/data/interfaces/brink/Images/sort_asc.png similarity index 93% rename from data/images/select.png rename to data/interfaces/brink/Images/sort_asc.png index 20468519..6889905f 100644 Binary files a/data/images/select.png and b/data/interfaces/brink/Images/sort_asc.png differ diff --git a/data/interfaces/brink/Images/sort_both.png b/data/interfaces/brink/Images/sort_both.png new file mode 100644 index 00000000..9da76e20 Binary files /dev/null and b/data/interfaces/brink/Images/sort_both.png differ diff --git a/data/interfaces/brink/Images/sort_desc.png b/data/interfaces/brink/Images/sort_desc.png new file mode 100644 index 00000000..8e924216 Binary files /dev/null and b/data/interfaces/brink/Images/sort_desc.png differ diff --git a/data/js/FancyScript.js b/data/interfaces/brink/JS/FancyScript.js similarity index 95% rename from data/js/FancyScript.js rename to data/interfaces/brink/JS/FancyScript.js index 7cd45cc1..8fb36f34 100644 --- a/data/js/FancyScript.js +++ b/data/interfaces/brink/JS/FancyScript.js @@ -71,6 +71,7 @@ function rotate(degree) { }); //Acesskey -$(document).ready(function(){ - $("dataTables_filter div input").attr("acesskey", "a"); -}); \ No newline at end of file +function accesskey() +{ + document.getElementByClassName('.dataTables_filter div input').accessKey="q"; +} \ No newline at end of file diff --git a/data/js/custom-form-elements.js b/data/interfaces/brink/JS/custom-form-elements.js similarity index 99% rename from data/js/custom-form-elements.js rename to data/interfaces/brink/JS/custom-form-elements.js index e09ca9c2..89df2489 100644 --- a/data/js/custom-form-elements.js +++ b/data/interfaces/brink/JS/custom-form-elements.js @@ -25,7 +25,7 @@ Visit http://ryanfait.com/ for more information. var checkboxHeight = "25"; var radioHeight = "25"; -var selectWidth = "130"; +var selectWidth = "143"; /* No need to change anything after this */ diff --git a/data/js/jquery-1.7.1.js b/data/interfaces/brink/JS/jquery-1.7.1.js similarity index 100% rename from data/js/jquery-1.7.1.js rename to data/interfaces/brink/JS/jquery-1.7.1.js diff --git a/data/js/jquery.jscrollpane.js b/data/interfaces/brink/JS/jquery.jscrollpane.js similarity index 100% rename from data/js/jquery.jscrollpane.js rename to data/interfaces/brink/JS/jquery.jscrollpane.js diff --git a/data/js/jquery.jscrollpane.min.js b/data/interfaces/brink/JS/jquery.jscrollpane.min.js similarity index 100% rename from data/js/jquery.jscrollpane.min.js rename to data/interfaces/brink/JS/jquery.jscrollpane.min.js diff --git a/data/js/jquery.mousewheel.js b/data/interfaces/brink/JS/jquery.mousewheel.js similarity index 100% rename from data/js/jquery.mousewheel.js rename to data/interfaces/brink/JS/jquery.mousewheel.js diff --git a/data/interfaces/brink/Themes/Default.css b/data/interfaces/brink/Themes/Default.css new file mode 100644 index 00000000..1ddd7c67 --- /dev/null +++ b/data/interfaces/brink/Themes/Default.css @@ -0,0 +1,92 @@ +/* + * * * * * * * * * + * Colors Styles * + * * * * * * * * * + * A great site to adjust the colors is: + * http://gradients.glrzad.com/ + * Just copy the lines, and replace it in here. + */ +/* Main Header */ +header +{ + background-image: linear-gradient(bottom, rgb(207,207,207) 0%, rgb(245,245,245) 100%); + background-image: -o-linear-gradient(bottom, rgb(207,207,207) 0%, rgb(245,245,245) 100%); + background-image: -moz-linear-gradient(bottom, rgb(207,207,207) 0%, rgb(245,245,245) 100%); + background-image: -webkit-linear-gradient(bottom, rgb(207,207,207) 0%, rgb(245,245,245) 100%); + background-image: -ms-linear-gradient(bottom, rgb(207,207,207) 0%, rgb(245,245,245) 100%); + border-bottom: 1px solid #000; +} + +#subhead_container{ + background-image: linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(255,255,255,0.1) 100%); + background-image: -o-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(255,255,255,0.1) 100%); + background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(255,255,255,0.1) 100%); + background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(255,255,255,0.1) 100%); + background-image: -ms-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(255,255,255,0.1) 100%); + border-bottom: 1px solid #000; +} + +footer { + background-image: linear-gradient(bottom, rgb(82,82,82) 0%, rgb(117,117,117) 100%); + background-image: -o-linear-gradient(bottom, rgb(82,82,82) 0%, rgb(117,117,117) 100%); + background-image: -moz-linear-gradient(bottom, rgb(82,82,82) 0%, rgb(117,117,117) 100%); + background-image: -webkit-linear-gradient(bottom, rgb(82,82,82) 0%, rgb(117,117,117) 100%); + background-image: -ms-linear-gradient(bottom, rgb(82,82,82) 0%, rgb(117,117,117) 100%); + border-top: 1px solid #000; +} +/*Main menu current page*/ +#nav li.selected, +#nav li.selected:hover +{ + background-image: linear-gradient(bottom, rgb(23,23,23) 0%, rgb(48,48,48) 100%); + background-image: -o-linear-gradient(bottom, rgb(23,23,23) 0%, rgb(48,48,48) 100%); + background-image: -moz-linear-gradient(bottom, rgb(23,23,23) 0%, rgb(48,48,48) 100%); + background-image: -webkit-linear-gradient(bottom, rgb(23,23,23) 0%, rgb(48,48,48) 100%); + background-image: -ms-linear-gradient(bottom, rgb(23,23,23) 0%, rgb(48,48,48) 100%); +} + +/*Tooltip Color*/ +.tooltip +{ + background-image: linear-gradient(bottom, rgb(117,117,117) 0%, rgb(156,156,156) 100%); + background-image: -o-linear-gradient(bottom, rgb(117,117,117) 0%, rgb(156,156,156) 100%); + background-image: -moz-linear-gradient(bottom, rgb(117,117,117) 0%, rgb(156,156,156) 100%); + background-image: -webkit-linear-gradient(bottom, rgb(117,117,117) 0%, rgb(156,156,156) 100%); + background-image: -ms-linear-gradient(bottom, rgb(117,117,117) 0%, rgb(156,156,156) 100%); +} +/*Tooltip popup Color*/ +div#updatebar, +.tooltip span +{ + background-image: linear-gradient(bottom, rgb(117,117,117) 0%, rgb(156,156,156) 100%); + background-image: -o-linear-gradient(bottom, rgb(117,117,117) 0%, rgb(156,156,156) 100%); + background-image: -moz-linear-gradient(bottom, rgb(117,117,117) 0%, rgb(156,156,156) 100%); + background-image: -webkit-linear-gradient(bottom, rgb(117,117,117) 0%, rgb(156,156,156) 100%); + background-image: -ms-linear-gradient(bottom, rgb(117,117,117) 0%, rgb(156,156,156) 100%); + /*Font Color*/ + color: #000; +} +/*Tablehead color*/ +h1, +table.display thead tr th +{ + background-image: linear-gradient(bottom, rgb(134,134,134) 0%, rgb(168,168,168) 100%); + background-image: -o-linear-gradient(bottom, rgb(134,134,134) 0%, rgb(168,168,168) 100%); + background-image: -moz-linear-gradient(bottom, rgb(134,134,134) 0%, rgb(168,168,168) 100%); + background-image: -webkit-linear-gradient(bottom, rgb(134,134,134) 0%, rgb(168,168,168) 100%); + background-image: -ms-linear-gradient(bottom, rgb(134,134,134) 0%, rgb(168,168,168) 100%); +} + +/*Top left search field*/ +div#searchbar select, +div#searchbar input[type=text] +{ + color: #000; +} +div#searchbar +{ + background-image: url(../images/search.png); + background-color:#FFF; + border: 1px solid rgba(0,0,0,0.5); + box-shadow: 1px 1px 0px rgba(255,255,255,0.5); +} \ No newline at end of file diff --git a/data/css/ColorStyles.css b/data/interfaces/brink/Themes/Radisse.css similarity index 88% rename from data/css/ColorStyles.css rename to data/interfaces/brink/Themes/Radisse.css index cf0379fc..d2fe0b20 100644 --- a/data/css/ColorStyles.css +++ b/data/interfaces/brink/Themes/Radisse.css @@ -75,9 +75,9 @@ div#updatebar h1, table.display thead tr th { - background-image: linear-gradient(bottom, rgb(69,69,69) 0%, rgb(102,102,102) 100%); - background-image: -o-linear-gradient(bottom, rgb(69,69,69) 0%, rgb(102,102,102) 100%); - background-image: -moz-linear-gradient(bottom, rgb(69,69,69) 0%, rgb(102,102,102) 100%); - background-image: -webkit-linear-gradient(bottom, rgb(69,69,69) 0%, rgb(102,102,102) 100%); - background-image: -ms-linear-gradient(bottom, rgb(69,69,69) 0%, rgb(102,102,102) 100%); + background-image: linear-gradient(bottom, rgb(134,134,134) 0%, rgb(168,168,168) 100%); + background-image: -o-linear-gradient(bottom, rgb(134,134,134) 0%, rgb(168,168,168) 100%); + background-image: -moz-linear-gradient(bottom, rgb(134,134,134) 0%, rgb(168,168,168) 100%); + background-image: -webkit-linear-gradient(bottom, rgb(134,134,134) 0%, rgb(168,168,168) 100%); + background-image: -ms-linear-gradient(bottom, rgb(134,134,134) 0%, rgb(168,168,168) 100%); } \ No newline at end of file diff --git a/data/interfaces/brink/album.html b/data/interfaces/brink/album.html new file mode 100644 index 00000000..64223a8a --- /dev/null +++ b/data/interfaces/brink/album.html @@ -0,0 +1,138 @@ +<%inherit file="base.html" /> +<%! + from headphones import db, helpers + myDB = db.DBConnection() +%> + +<%def name="headerIncludes()"> +
+ +
+ + +<%def name="body()"> +
+ + Back to ${album['ArtistName']} + +
+
+
+ albumart +
+
+
+

${album['AlbumTitle']}

+ by ${album['ArtistName']} +
+ <% + totalduration = myDB.action("SELECT SUM(TrackDuration) FROM tracks WHERE AlbumID=?", [album['AlbumID']]).fetchone()[0] + totaltracks = len(myDB.select("SELECT TrackTitle from tracks WHERE AlbumID=?", [album['AlbumID']])) + try: + albumduration = helpers.convert_milliseconds(totalduration) + except: + albumduration = 'n/a' + + %> +
+ %if description: +

Description:

+ ${description['Summary']} + %endif +
+
+ Playtime: ${albumduration} +
+
+
+ + + + + + + + + + + + %for track in tracks: + <% + if track['Location']: + grade = 'A' + location = track['Location'] + else: + grade = 'X' + location = '' + + if track['BitRate']: + bitrate = str(track['BitRate']/1000) + ' kbps' + else: + bitrate = '' + + try: + trackduration = helpers.convert_milliseconds(track['TrackDuration']) + except: + trackduration = 'n/a' + %> + + + + + + + + %endfor + <% + unmatched = myDB.select('SELECT * from have WHERE ArtistName LIKE ? AND AlbumTitle LIKE ?', [album['ArtistName'], album['AlbumTitle']]) + %> + %if unmatched: + %for track in unmatched: + <% + duration = helpers.convert_seconds(float(track['TrackLength'])) + %> + + + + + + + + %endfor + %endif + +
#Track TitleDurationLocal FileBit Rate
${track['TrackNumber']}${track['TrackTitle']}${trackduration}${location}${bitrate}
${track['TrackNumber']}${track['TrackTitle']}${duration}${track['Location']}${int(track['BitRate'])/1000} kbps
+
+
+ + +<%def name="headIncludes()"> + + + +<%def name="javascriptIncludes()"> + + + \ No newline at end of file diff --git a/data/interfaces/brink/artist.html b/data/interfaces/brink/artist.html new file mode 100644 index 00000000..186b9446 --- /dev/null +++ b/data/interfaces/brink/artist.html @@ -0,0 +1,161 @@ +<%inherit file="base.html"/> +<%! + from headphones import db +%> + +<%def name="headerIncludes()"> +
+ +
+ + +<%def name="body()"> +
+

+ ${artist['ArtistName']} +

+ %if artist['Status'] == 'Loading': +

(Album information for this artist is currently being loaded)

+ %endif +
+
+

Mark selected albums as + + +

+ + + + + + + + + + + + + + + %for album in albums: + <% + if album['Status'] == 'Skipped': + grade = 'Z' + elif album['Status'] == 'Wanted': + grade = 'X' + elif album['Status'] == 'Snatched': + grade = 'C' + else: + grade = 'A' + + myDB = db.DBConnection() + totaltracks = len(myDB.select('SELECT TrackTitle from tracks WHERE AlbumID=?', [album['AlbumID']])) + havetracks = len(myDB.select('SELECT TrackTitle from tracks WHERE AlbumID=? AND Location IS NOT NULL', [album['AlbumID']])) + len(myDB.select('SELECT TrackTitle from have WHERE ArtistName like ? AND AlbumTitle LIKE ?', [album['ArtistName'], album['AlbumTitle']])) + + try: + percent = (havetracks*100.0)/totaltracks + if percent > 100: + percent = 100 + except (ZeroDivisionError, TypeError): + percent = 0 + totaltracks = '?' + + avgbitrate = myDB.action("SELECT AVG(BitRate) FROM tracks WHERE AlbumID=?", [album['AlbumID']]).fetchone()[0] + if avgbitrate: + bitrate = str(int(avgbitrate)/1000) + ' kbps' + else: + bitrate = '' + + %> + + + + + + + + + + + %endfor + +
NameDateTypeStatusHaveBitrate
+
+ + + +
+
${album['AlbumTitle']}${album['ReleaseDate']}${album['Type']}${album['Status']} + %if album['Status'] == 'Skipped': + Get + %elif album['Status'] == 'Wanted': + Abort + %else: + Retry + New + %endif + +
+
+ +
+
+
${bitrate}
+
+ + +<%def name="headIncludes()"> + + %if artist['Status'] == 'Loading': + + %endif + + +<%def name="javascriptIncludes()"> + + + diff --git a/data/interfaces/brink/base.html b/data/interfaces/brink/base.html new file mode 100644 index 00000000..1ff3ec5e --- /dev/null +++ b/data/interfaces/brink/base.html @@ -0,0 +1,124 @@ +<% + import headphones + from headphones import version +%> + + + + + + + + + + + Headphones - ${title} + + + + + + + + + + + + + + ${next.javascriptIncludes()} + + + + + + + + + + + + + + + + + + + ${next.headIncludes()} + + + + +
+ % if not headphones.CURRENT_VERSION: +
+
+ You're running an unknown version of Headphones. +
+
+
+ Update +
+ % elif headphones.CURRENT_VERSION != headphones.LATEST_VERSION and headphones.INSTALL_TYPE != 'win': +
+
+ A newer version is available.
+ You're ${headphones.COMMITS_BEHIND} commits behind. +
+
+
+ Version + Update +
+ % endif +
+ + + ${next.headerIncludes()} + +
+
+ +
+ ${next.body()} +
+ + +
+ + + + + + +<%def name="javascriptIncludes()"> +<%def name="headIncludes()"> +<%def name="headerIncludes()"> diff --git a/data/interfaces/brink/config.html b/data/interfaces/brink/config.html new file mode 100644 index 00000000..407064bc --- /dev/null +++ b/data/interfaces/brink/config.html @@ -0,0 +1,680 @@ +<%inherit file="base.html"/> +<%! + import headphones +%> + +<%def name="headerIncludes()"> +
+ +
+ +<%def name="body()"> +
+
+

Web Interface

+ + + + + + + + + + + + + + + +
+

HTTP Host:

+ +
+ + i.e. localhost or 0.0.0.0 + +
+
+

HTTP Username:

+ +
+

HTTP Port:

+ +
+ + Default is: 8181 + +
+
+

+

HTTP Password:

+ +

+
+

+ Launch Browser on Startup + +

+
+
+
+

Download Settings

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

SABnzbd:

+
+

+ SABnzbd Host: +

+ +
+ + Usually http://localhost:8080 + +
+
+

+ SABnzbd Username: +

+ +
+

+ SABnzbd API: +

+ +
+

SABnzbd Password:

+ +
+

SABnzbd Category:

+
+

Music Download Directory:

+
+ + Full path to the directory where SAB downloads your music | i.e. /Users/name/Downloads/music + +
+
+

+ Use Black Hole: + +

+
+

+ Black Hole Directory: +

+ +
+ + Folder your Download program watches for NZBs + +
+
+

+ Usenet Retention: +

+ +
+

Torrent:

+
+

Black Hole Directory:

+
+ Folder your Download program watches for Torrents +
+
+

+ Minimum seeders: +

+ +
+ + Number of minimum seeders a torrent must have to be accepted + +
+
+

+ Music Download Directory: +

+ + +
+ + Full path to the directory where your torrent client downloads your music + i.e. /Users/name/Downloads/music + +
+
+
+
+ +

+ Search Providers +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ NZBMatrix: + +

+ +
+

+ NZBMatrix Username + +

+ +
+

NZBMatrix API: + +

+
+

+ + Newznab: +

+
+

Newznab Host:

+ +
+ + i.e. http://nzb.su + +
+
+

Newznab API:

+ +
+

NZBs.org: + +

+
+ +

NZBs.org UID:

+ + +
+ +

NZBs.org Hash:

+ + +
+

+ Newzbin + + +

+
+

+ Newzbin UID: + +

+ +
+

Newzbin Password + +

+
+

Torrent:

+

+ + Isohunt: +

+

+ + Mininova +

+

+ + Kick Ass Torrents +

+
+
+
+ +

+ Quality & Post Processing +

+
+ + + + + + + + + + +
+

Album Quality:

+

+ + Highest Quality excluding Lossless +

+

+ + Highest Quality including Lossless +

+

+ + Lossless Only +

+

+ + Preferred Bitrate: + kbps +

+

+ + Auto-Detect Preferred Bitrate +

+
+

Post-Processing:

+

+ + Move downloads to Destination Folder +

+

+ + Rename files +

+

+ + Correct metadata +

+

+ + Delete leftover files (.m3u, .nfo, .sfv, .nzb, etc.) +

+

+ + Add album art as 'folder.jpg' to album folder +

+

+ + Embed album art in each file +

+

+ + Embed lyrics +

+
+
+ +

+ Path to Destination folder: +

+ +
+ + i.e. /Users/name/Music/iTunes or /Volumes/share/music + +
+
+
+
+

Advanced Settings

+ + + + + + + + + + + + + + + +
+

Renaming Options:

+
+

+ Folder Format: +

+ +
+ + Use: artist, album, year, releasetype and first (first letter in artist name) + E.g.: first/artist/album [year] = G/Girl Talk/All Day [2010] + +
+

+

+ File Format: +

+ +
+ + Use: tracknumber, title, artist, album and year + +
+
+

Miscellaneous:

+
+

+ + Automatically Include Extras When Adding an Artist +

+
(EPs, Compilations, Live Albums, Remix Albums and Singles)
+

+

+ Interface: +

+ + + +

+

Log Directory:

+ +
+
+ + Note: this option requires the lame or ffmpeg encoder + +
+

Re-Encoding Options:

+

+ + Re-encode downloads during postprocessing +

+
+ + Only re-encode lossless files (.flac) +
+ <% + if config['encoder'] == 'lame': + lameselect = 'selected="selected"' + ffmpegselect = '' + else: + lameselect = '' + ffmpegselect = 'selected="selected"' + %> +

Encoder:

+ + +

Format:

+ +
+

+ Audio Properties: +

+
+

VBR/CBR: + +

+

+ Quality: + +

+
+

Bitrate: + + + <% + if config["samplingfrequency"] == 44100: + freq44100 = 'selected="selected"' + freq48000 = '' + else: + freq44100 = '' + freq48000 = 'selected="selected"' + %> +

+

+ Sampling: + +

+
+
+

Advanced Encoding Options:

+

+ (ignores audio properties) +

+ +
+

Path to Encoder:

+ +
+
+

+ Prowl Notification: +

+

+ + Enable Prowl Notifications +

+
+

+ API key: +

+ +
+
+

+ + Notify on snatch? +

+
+

+ Priority (-2,-1,0,1 or 2): +

+ +
+
+

Muscbrainz Mirror:

+ +
+
+ +

+ +
+ (Web Interface changes require a restart to take effect) +

+
+ + +<%def name="javascriptIncludes()"> + + diff --git a/data/interfaces/brink/extras.html b/data/interfaces/brink/extras.html new file mode 100644 index 00000000..d9dbbe2f --- /dev/null +++ b/data/interfaces/brink/extras.html @@ -0,0 +1,13 @@ +<%inherit file="base.html" /> +<%def name="body()"> +
+

Artists You Might Like

+
+ +
+
+ diff --git a/data/interfaces/brink/history.html b/data/interfaces/brink/history.html new file mode 100644 index 00000000..75667d78 --- /dev/null +++ b/data/interfaces/brink/history.html @@ -0,0 +1,82 @@ +<%inherit file="base.html"/> +<%! + from headphones import helpers +%> + +<%def name="headerIncludes()"> +
+ +
+ + +<%def name="body()"> + + + + + + + + + + + + %for item in history: + <% + if item['Status'] == 'Processed': + grade = 'A' + elif item['Status'] == 'Snatched': + grade = 'C' + elif item['Status'] == 'Unprocessed': + grade = 'X' + else: + grade = 'U' + + fileid = 'unknown' + if item['URL'].find('nzb') != -1: + fileid = 'nzb' + if item['URL'].find('torrent') != -1: + fileid = 'torrent' + %> + + + + + + + + %endfor + +
Date AddedFile NameSizeStatus
${item['DateAdded']}${item['Title']} [${fileid}][album page]${helpers.bytes_to_mb(item['Size'])}${item['Status']}[retry][new]
+ + +<%def name="headIncludes()"> + + + +<%def name="javascriptIncludes()"> + + + \ No newline at end of file diff --git a/data/interfaces/brink/index.html b/data/interfaces/brink/index.html new file mode 100644 index 00000000..b1130861 --- /dev/null +++ b/data/interfaces/brink/index.html @@ -0,0 +1,90 @@ +<%inherit file="base.html"/> +<%! + from headphones import helpers +%> + +<%def name="body()"> + + + + + + + + + + + %for artist in artists: + <% + totaltracks = artist['TotalTracks'] + havetracks = artist['HaveTracks'] + if not havetracks: + havetracks = 0 + try: + percent = (havetracks*100.0)/totaltracks + if percent > 100: + percent = 100 + except (ZeroDivisionError, TypeError): + percent = 0 + totaltracks = '?' + + if artist['ReleaseDate'] and artist['LatestAlbum']: + releasedate = artist['ReleaseDate'] + albumdisplay = '%s (%s)' % (artist['LatestAlbum'], artist['ReleaseDate']) + if releasedate > helpers.today(): + grade = 'A' + else: + grade = 'Z' + elif artist['LatestAlbum']: + releasedate = '' + grade = 'Z' + albumdisplay = '%s' % artist['LatestAlbum'] + else: + releasedate = '' + grade = 'Z' + albumdisplay = 'None' + + if artist['Status'] == 'Paused': + grade = 'X' + + %> + + + + + + + %endfor + +
Artist NameStatusLatest AlbumHave
${artist['ArtistName']}${artist['Status']}${albumdisplay} +
+ ${havetracks}/${totaltracks} +
+
+
+ + +<%def name="headIncludes()"> + link rel="stylesheet" href="css/interfaces/brink/css/data_table.css"> + + +<%def name="javascriptIncludes()"> + + + \ No newline at end of file diff --git a/data/interfaces/brink/logs.html b/data/interfaces/brink/logs.html new file mode 100644 index 00000000..e6c48d19 --- /dev/null +++ b/data/interfaces/brink/logs.html @@ -0,0 +1,60 @@ +<%inherit file="base.html"/> +<%! + from headphones import helpers +%> + +<%def name="body()"> + + + + + + + + + + %for line in lineList: + <% + timestamp, message, level, threadname = line + + if level == 'WARNING' or level == 'ERROR': + grade = 'X' + else: + grade = 'Z' + %> + + + + + + %endfor + +
TimestampLevelMessage
${timestamp}${level}${message}
+ + +<%def name="headIncludes()"> + + + +<%def name="javascriptIncludes()"> + + + \ No newline at end of file diff --git a/data/interfaces/brink/manage.html b/data/interfaces/brink/manage.html new file mode 100644 index 00000000..359822dc --- /dev/null +++ b/data/interfaces/brink/manage.html @@ -0,0 +1,118 @@ +<%inherit file="base.html" /> +<%! + import headphones + from headphones.helpers import checked +%> +<%def name="headerIncludes()"> +
+ +
+ + +<%def name="body()"> +
+

Scan Music Library

+ + + + +
+

+ Where do you keep your music? +

+
+ %if headphones.MUSIC_DIR: + +
+ + You can put in any directory, and it will scan for audio files in that folder + (including all subdirectories)
+ For example: '/Users/name/Music' +
+
+ %else: +

+ +

+ + You can put in any directory, and it will scan for audio files in that folder + (including all subdirectories)
+ For example: '/Users/name/Music' +
+
+

+ %endif +
+

+ Automatically add new artists +

+ +
+ + This process runs in the background. + +
+
+
+
+ +
+

Import Last.FM Artists

+ + + + +
+

+ Enter the username whose artists you want to import: +

+
+ <% + if headphones.LASTFM_USERNAME: + lastfmvalue = headphones.LASTFM_USERNAME + else: + lastfmvalue = 'Last.fm Username' + %> + +
+
+ +
+
+
+ +
+

Placeholder :-)

+ + + + +
+
+ +
+
+ +
+
+
+ +
+

Force Search


+ + + + +
+

Force Check for Wanted Albums

+

Force Update Active Artists

+

Force Post-Process Albums in Download Folder



+

Check for Headphones Updates

+
+
+ \ No newline at end of file diff --git a/data/interfaces/brink/manageartists.html b/data/interfaces/brink/manageartists.html new file mode 100644 index 00000000..865b1a63 --- /dev/null +++ b/data/interfaces/brink/manageartists.html @@ -0,0 +1,82 @@ +<%inherit file="base.html" /> + +<%def name="body()"> +
+

Manage Artists

+

+
+

+ + selected artists + +

+ + + + + + + + + + + %for artist in artists: + <% + if artist['Status'] == 'Paused': + grade = 'X' + elif artist['Status'] == 'Loading': + grade = 'C' + else: + grade = 'Z' + + if artist['ReleaseDate'] and artist['LatestAlbum']: + releasedate = artist['ReleaseDate'] + albumdisplay = '%s (%s)' % (artist['LatestAlbum'], artist['ReleaseDate']) + elif artist['LatestAlbum']: + releasedate = '' + albumdisplay = '%s' % artist['LatestAlbum'] + else: + releasedate = '' + albumdisplay = 'None' + %> + + + + + + + %endfor + +
Artist NameStatusLatest Album
${artist['ArtistName']}${artist['Status']}${albumdisplay}
+
+ + +<%def name="headIncludes()"> + + + +<%def name="javascriptIncludes()"> + + + \ No newline at end of file diff --git a/data/interfaces/brink/managenew.html b/data/interfaces/brink/managenew.html new file mode 100644 index 00000000..e039c951 --- /dev/null +++ b/data/interfaces/brink/managenew.html @@ -0,0 +1,52 @@ +<%inherit file="base.html" /> +<%! + import headphones +%> +<%def name="body()"> +
+

Manage New Artists

+

Scan Music Library

+
+
+

+ Add selected artists + +

+ + + + + + + + + %for artist in headphones.NEW_ARTISTS: + + + + + %endfor + +
Artist Name
${artist}
+
+ + +<%def name="headIncludes()"> + + + +<%def name="javascriptIncludes()"> + + + \ No newline at end of file diff --git a/data/interfaces/brink/searchresults.html b/data/interfaces/brink/searchresults.html new file mode 100644 index 00000000..c29088f0 --- /dev/null +++ b/data/interfaces/brink/searchresults.html @@ -0,0 +1,79 @@ +<%inherit file="base.html" /> + +<%def name="body()"> + +
+

Search Results

+
+ + + + %if type == 'album': + + %endif + + + + + + + %if searchresults: + %for result in searchresults: + <% + if result['score'] == 100: + grade = 'A' + else: + grade = 'Z' + %> + + %if type == 'album': + + %endif + + + %if type == 'album': + + %else: + + %endif + + %endfor + %endif + +
Album NameArtist NameScore
${result['title']}${result['uniquename']} +
+ + +
+ ${result['score']}% +
+
+
+
Add this albumAdd this artist
+ + +<%def name="headIncludes()"> + + + +<%def name="javascriptIncludes()"> + + + \ No newline at end of file diff --git a/data/interfaces/brink/shutdown.html b/data/interfaces/brink/shutdown.html new file mode 100644 index 00000000..be7ca21d --- /dev/null +++ b/data/interfaces/brink/shutdown.html @@ -0,0 +1,13 @@ +<%inherit file="base.html"/> + +<%def name="headIncludes()"> + + + +<%def name="body()"> +
+
+

Headphones is ${message}

+
+
+ \ No newline at end of file diff --git a/data/interfaces/brink/upcoming.html b/data/interfaces/brink/upcoming.html new file mode 100644 index 00000000..f5b74c21 --- /dev/null +++ b/data/interfaces/brink/upcoming.html @@ -0,0 +1,108 @@ +<%inherit file="base.html" /> +<%def name="body()"> +
+

Upcoming Albums

+ + + + + + + + + + + + + %for album in upcoming: + + + + + + + + + + %endfor + +
ArtistAlbum NameRelease DateTypeStatus
+
+ + + +
+
+ + ${album['ArtistName']} + + ${album['AlbumTitle']}${album['ReleaseDate']}${album['Type']}${album['Status']}
+
+ +
+
+

Mark selected albums as + + +

+
+
+

Wanted Albums

+ + + + + + + + + + + + + %for album in wanted: + + + + + + + + %endfor + +
ArtistAlbum NameRelease DateType
+ +
+ + + +
+
+ + ${album['ArtistName']} + ${album['AlbumTitle']}${album['ReleaseDate']}${album['Type']}
+ +
+ + +<%def name="headIncludes()"> + + + +<%def name="javascriptIncludes()"> + + + \ No newline at end of file diff --git a/data/interfaces/default/album.html b/data/interfaces/default/album.html index 09cf1820..1e38f419 100644 --- a/data/interfaces/default/album.html +++ b/data/interfaces/default/album.html @@ -23,18 +23,11 @@ <%def name="body()">
- - Back to ${album['ArtistName']} - -
-
-
- albumart -
-
-
+

<- Back to ${album['ArtistName']}

+
+ albumart

${album['AlbumTitle']}

- by ${album['ArtistName']} +

${album['ArtistName']}


<% totalduration = myDB.action("SELECT SUM(TrackDuration) FROM tracks WHERE AlbumID=?", [album['AlbumID']]).fetchone()[0] @@ -45,15 +38,12 @@ albumduration = 'n/a' %> -
+

Tracks: ${totaltracks}

+

Duration: ${albumduration}

%if description: -

Description:

+

Description:

${description['Summary']} %endif -
-
- Playtime: ${albumduration} -
diff --git a/data/interfaces/default/artist.html b/data/interfaces/default/artist.html index 687666ac..164658a2 100644 --- a/data/interfaces/default/artist.html +++ b/data/interfaces/default/artist.html @@ -24,27 +24,25 @@ <%def name="body()">
-

- ${artist['ArtistName']} -

+

${artist['ArtistName']}

%if artist['Status'] == 'Loading':

(Album information for this artist is currently being loaded)

%endif

Mark selected albums as - - +

- + @@ -86,34 +84,21 @@ %> - - + + - - + %endfor diff --git a/data/interfaces/default/base.html b/data/interfaces/default/base.html index 68af5ce8..7053f803 100755 --- a/data/interfaces/default/base.html +++ b/data/interfaces/default/base.html @@ -20,97 +20,81 @@ - - - - - - ${next.javascriptIncludes()} - - - - - - - - - - - - - - - - - - + ${next.headIncludes()}
- % if not headphones.CURRENT_VERSION: +
+ % if not headphones.CURRENT_VERSION:
-
X
- You're running an unknown version of Headphones. -
-
-
- Update + You're running an unknown version of Headphones. Click here to update
% elif headphones.CURRENT_VERSION != headphones.LATEST_VERSION and headphones.INSTALL_TYPE != 'win':
-
X
- A newer version is available.
- You're ${headphones.COMMITS_BEHIND} commits behind. -
-
-
- Version - Update + A newer version is available. You're ${headphones.COMMITS_BEHIND} commits behind. Click here to update
% endif -
- - ${next.headerIncludes()} + -
-
- -
- ${next.body()} +
+ ${next.headerIncludes()}
+
+ +
+ ${next.body()} +
+
+ Version: ${headphones.CURRENT_VERSION} + %if version.HEADPHONES_VERSION != 'master': + (${version.HEADPHONES_VERSION}) + %endif +
+
+ + + + ${next.javascriptIncludes()} - + + + + + + + + + + + + Headphones::Remix - ${title} + + + + + + + + + ${next.headIncludes()} + + + + +
+
+ % if not headphones.CURRENT_VERSION: +
+ You're running an unknown version of Headphones. Click here to update +
+ % elif headphones.CURRENT_VERSION != headphones.LATEST_VERSION and headphones.INSTALL_TYPE != 'win': +
+ A newer version is available. You're ${headphones.COMMITS_BEHIND} commits behind. Click here to update +
+ % endif + + + +
+ ${next.headerIncludes()} +
+
+ +
+ ${next.body()} +
+ +
+
+ Version: ${headphones.CURRENT_VERSION} + %if version.HEADPHONES_VERSION != 'master': + (${version.HEADPHONES_VERSION}) + %endif +
+ +
+
+ + + + ${next.javascriptIncludes()} + + + + + + + + +<%def name="javascriptIncludes()"> +<%def name="headIncludes()"> +<%def name="headerIncludes()"> diff --git a/data/interfaces/remix/config.html b/data/interfaces/remix/config.html new file mode 100644 index 00000000..bb176af5 --- /dev/null +++ b/data/interfaces/remix/config.html @@ -0,0 +1,537 @@ +<%inherit file="base.html"/> +<%! + import headphones +%> + +<%def name="headerIncludes()"> +
+ +
+ +<%def name="body()"> +
+

+

+
+
+

Web Interface

+ +
Name Date
-
- - - -
-
${album['AlbumTitle']} ${album['ReleaseDate']} ${album['Type']}${album['Status']} + ${album['Status']} %if album['Status'] == 'Skipped': - Get + [want] %elif album['Status'] == 'Wanted': - Abort + [skip] %else: - Retry - New + [retry][new] %endif -
-
- -
-
-
${havetracks}/${totaltracks}
${bitrate}
+ + + + + + + + + + + + + + +
+

HTTP Host:

+
+ i.e. localhost or 0.0.0.0 +
+

HTTP Username:

+ +
+

HTTP Port:

+ +
+

HTTP Password:

+ +
+

Launch Browser on Startup:

+
+
+
+

Download Settings

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

SABnzbd:

+
+

SABnzbd Host:


+ + usually http://localhost:8080 +
+

SABnzbd Username:

+
+

SABnzbd API:

+
+

SABnzbd Password:

+
+

SABnzbd Category:

+
+

Music Download Directory:


+ + Full path to the directory where SAB downloads your music
+ i.e. /Users/name/Downloads/music
+
+

Use Black Hole:

+
+

Black Hole Directory:


+ + Folder your Download program watches for NZBs +
+

Usenet Retention:

+
+



Torrent:

+
+

Black Hole Directory:


+ + Folder your Download program watches for Torrents +
+

Minimum seeders:


+ + Number of minimum seeders a torrent must have to be accepted +
+

Music Download Directory:


+ + Full path to the directory where your torrent client downloads your music
+ i.e. /Users/name/Downloads/music
+
+
+
+

Search Providers

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

SABnzbd:

+
+

NZBMatrix:

+
+

NZBMatrix Username:

+ +
+

NZBMatrix API:

+ +
+

Newznab:

+
+

Newznab Host:

+
+ i.e. http://nzb.su +
+

Newznab API:

+ +
+

NZBs.org:

+
+ +

NZBs.org UID:

+ + +
+ +

NZBs.org Hash:

+ + +
+

Newzbin:

+
+

Newzbin UID:

+ + +
+

Newzbin Password:

+ +
+

Torrent:


+
+

Isohunt:


+
+

Mininova:


+
+

Kick Ass Torrents:

+
+
+
+

Quality & Post Processing

+ + + + + + + + + + +
+

Album Quality:


+

Highest Quality excluding Lossless

+

Highest Quality including Lossless

+

Lossless Only

+

Preferred Bitrate: + kbps

+ Auto-Detect Preferred Bitrate +
+

Post-Processing:

+

Move downloads to Destination Folder

+

Rename files

+

Correct metadata

+

Delete leftover files (.m3u, .nfo, .sfv, .nzb, etc.)

+

Add album art as 'folder.jpg' to album folder

+

Embed album art in each file

+

Embed lyrics

+
+
+ +

Path to Destination folder:

+
+ i.e. /Users/name/Music/iTunes or /Volumes/share/music +
+
+
+

Advanced Settings

+ + + + + + + + + + + +
+

Renaming Options:

+
+

Folder Format:


+ Use: artist, album, year, releasetype and first (first letter in artist name)
+ E.g.: first/artist/album [year] = G/Girl Talk/All Day [2010]
+

+

File Format:

+
+ Use: tracknumber, title, artist, album and year +
+

Miscellaneous:

+
+

Automatically Include Extras When Adding an Artist

+ (EPs, Compilations, Live Albums, Remix Albums and Singles) +

+

Interface: +

+

Log Directory:

+
+

Re-Encoding Options:

+ Note: this option requires the lame or ffmpeg encoder +

+

Re-encode downloads during postprocessing

+
+
+

Only re-encode lossless files (.flac)

+
+ <% + if config['encoder'] == 'lame': + lameselect = 'selected="selected"' + ffmpegselect = '' + else: + lameselect = '' + ffmpegselect = 'selected="selected"' + %> +

Encoder: + + Format:

+
+ +

Audio Properties:

+
+

VBR/CBR: + + Quality:

+ +
+

Bitrate: + + <% + if config["samplingfrequency"] == 44100: + freq44100 = 'selected="selected"' + freq48000 = '' + else: + freq44100 = '' + freq48000 = 'selected="selected"' + %> + Sampling:

+
+
+

Advanced Encoding Options:

+

+ (ignores audio properties) +

+ +
+

Path to Encoder:

+
+
+

Prowl Notification:


+

Enable Prowl Notifications


+
+

API key:



+

Notify on snatch?


+

Priority (-2,-1,0,1 or 2):

+
+
+

Muscbrainz Mirror: + +
+

Host:

+

Port:

+

Sleep Interval:

+
+ +
+

Username:

+

Password:

+ Get an Account

+
+

+
+ +


+ (Web Interface changes require a restart to take effect) + + + +<%def name="javascriptIncludes()"> + + diff --git a/data/interfaces/remix/extras.html b/data/interfaces/remix/extras.html new file mode 100644 index 00000000..d9dbbe2f --- /dev/null +++ b/data/interfaces/remix/extras.html @@ -0,0 +1,13 @@ +<%inherit file="base.html" /> +<%def name="body()"> +

+

Artists You Might Like

+
+ +
+
+ diff --git a/data/interfaces/remix/history.html b/data/interfaces/remix/history.html new file mode 100644 index 00000000..ac7c4f6d --- /dev/null +++ b/data/interfaces/remix/history.html @@ -0,0 +1,85 @@ +<%inherit file="base.html"/> +<%! + from headphones import helpers +%> + +<%def name="headerIncludes()"> + + + +<%def name="body()"> +
+ History +
+ + + + + + + + + + + + %for item in history: + <% + if item['Status'] == 'Processed': + grade = 'A' + elif item['Status'] == 'Snatched': + grade = 'C' + elif item['Status'] == 'Unprocessed': + grade = 'X' + else: + grade = 'U' + + fileid = 'unknown' + if item['URL'].find('nzb') != -1: + fileid = 'nzb' + if item['URL'].find('torrent') != -1: + fileid = 'torrent' + %> + + + + + + + + %endfor + +
Date AddedFile NameSizeStatus
${item['DateAdded']}${item['Title']} [${fileid}][album page]${helpers.bytes_to_mb(item['Size'])}${item['Status']}[retry][new]
+ + +<%def name="headIncludes()"> + + + +<%def name="javascriptIncludes()"> + + + \ No newline at end of file diff --git a/data/interfaces/remix/index.html b/data/interfaces/remix/index.html new file mode 100644 index 00000000..83a594b6 --- /dev/null +++ b/data/interfaces/remix/index.html @@ -0,0 +1,86 @@ +<%inherit file="base.html"/> +<%! + from headphones import helpers +%> + +<%def name="body()"> + + + + + + + + + + + %for artist in artists: + <% + totaltracks = artist['TotalTracks'] + havetracks = artist['HaveTracks'] + if not havetracks: + havetracks = 0 + try: + percent = (havetracks*100.0)/totaltracks + if percent > 100: + percent = 100 + except (ZeroDivisionError, TypeError): + percent = 0 + totaltracks = '?' + + if artist['ReleaseDate'] and artist['LatestAlbum']: + releasedate = artist['ReleaseDate'] + albumdisplay = '%s (%s)' % (artist['LatestAlbum'], artist['ReleaseDate']) + if releasedate > helpers.today(): + grade = 'A' + else: + grade = 'Z' + elif artist['LatestAlbum']: + releasedate = '' + grade = 'Z' + albumdisplay = '%s' % artist['LatestAlbum'] + else: + releasedate = '' + grade = 'Z' + albumdisplay = 'None' + + if artist['Status'] == 'Paused': + grade = 'X' + + %> + + + + + + + %endfor + +
Artist NameStatusLatest AlbumHave
${artist['ArtistName']}${artist['Status']}${albumdisplay}
${havetracks}/${totaltracks}
+ + +<%def name="headIncludes()"> + + + +<%def name="javascriptIncludes()"> + + + \ No newline at end of file diff --git a/data/interfaces/remix/logs.html b/data/interfaces/remix/logs.html new file mode 100644 index 00000000..98004034 --- /dev/null +++ b/data/interfaces/remix/logs.html @@ -0,0 +1,60 @@ +<%inherit file="base.html"/> +<%! + from headphones import helpers +%> + +<%def name="body()"> + + + + + + + + + + %for line in lineList: + <% + timestamp, message, level, threadname = line + + if level == 'WARNING' or level == 'ERROR': + grade = 'X' + else: + grade = 'Z' + %> + + + + + + %endfor + +
TimestampLevelMessage
${timestamp}${level}${message}
+ + +<%def name="headIncludes()"> + + + +<%def name="javascriptIncludes()"> + + + \ No newline at end of file diff --git a/data/interfaces/remix/manage.html b/data/interfaces/remix/manage.html new file mode 100644 index 00000000..cf5a476a --- /dev/null +++ b/data/interfaces/remix/manage.html @@ -0,0 +1,74 @@ +<%inherit file="base.html" /> +<%! + import headphones + from headphones.helpers import checked +%> +<%def name="headerIncludes()"> +
+ +
+ + +<%def name="body()"> +
+

+

+
+

Scan Music Library


+ Where do you keep your music?

+ You can put in any directory, and it will scan for audio files in that folder + (including all subdirectories)

For example: '/Users/name/Music' +

+ It may take a while depending on how many files you have. You can navigate away from the page
+ as soon as you click 'Submit' +

+
+ %if headphones.MUSIC_DIR: + + %else: + + %endif +
+

Automatically add new artists

+

+
+
+ +
+

Import Last.FM Artists


+ Enter the username whose artists you want to import:

+
+ <% + if headphones.LASTFM_USERNAME: + lastfmvalue = headphones.LASTFM_USERNAME + else: + lastfmvalue = 'Last.fm Username' + %> + +


+
+ +
+

Placeholder :-)


+

+
+ +


+
+ + + \ No newline at end of file diff --git a/data/interfaces/remix/manageartists.html b/data/interfaces/remix/manageartists.html new file mode 100644 index 00000000..368d653c --- /dev/null +++ b/data/interfaces/remix/manageartists.html @@ -0,0 +1,82 @@ +<%inherit file="base.html" /> + +<%def name="body()"> +
+

Manage Artists

+

+
+

+ + selected artists + +

+ + + + + + + + + + + %for artist in artists: + <% + if artist['Status'] == 'Paused': + grade = 'X' + elif artist['Status'] == 'Loading': + grade = 'C' + else: + grade = 'Z' + + if artist['ReleaseDate'] and artist['LatestAlbum']: + releasedate = artist['ReleaseDate'] + albumdisplay = '%s (%s)' % (artist['LatestAlbum'], artist['ReleaseDate']) + elif artist['LatestAlbum']: + releasedate = '' + albumdisplay = '%s' % artist['LatestAlbum'] + else: + releasedate = '' + albumdisplay = 'None' + %> + + + + + + + %endfor + +
Artist NameStatusLatest Album
${artist['ArtistName']}${artist['Status']}${albumdisplay}
+
+ + +<%def name="headIncludes()"> + + + +<%def name="javascriptIncludes()"> + + + \ No newline at end of file diff --git a/data/interfaces/remix/managenew.html b/data/interfaces/remix/managenew.html new file mode 100644 index 00000000..bea493b2 --- /dev/null +++ b/data/interfaces/remix/managenew.html @@ -0,0 +1,52 @@ +<%inherit file="base.html" /> +<%! + import headphones +%> +<%def name="body()"> +
+

Manage New Artists

+

Scan Music Library

+
+
+

+ Add selected artists + +

+ + + + + + + + + %for artist in headphones.NEW_ARTISTS: + + + + + %endfor + +
Artist Name
${artist}
+
+ + +<%def name="headIncludes()"> + + + +<%def name="javascriptIncludes()"> + + + \ No newline at end of file diff --git a/data/interfaces/remix/searchresults.html b/data/interfaces/remix/searchresults.html new file mode 100644 index 00000000..b02fedd6 --- /dev/null +++ b/data/interfaces/remix/searchresults.html @@ -0,0 +1,70 @@ +<%inherit file="base.html" /> + +<%def name="body()"> + +
+

Search Results

+

+ + + + %if type == 'album': + + %endif + + + + + + + %if searchresults: + %for result in searchresults: + <% + if result['score'] == 100: + grade = 'A' + else: + grade = 'Z' + %> + + %if type == 'album': + + %endif + + + %if type == 'album': + + %else: + + %endif + + %endfor + %endif + +
Album NameArtist NameScore
${result['title']}${result['uniquename']}${result['score']}Add this albumAdd this artist
+ + +<%def name="headIncludes()"> + + + +<%def name="javascriptIncludes()"> + + + \ No newline at end of file diff --git a/data/interfaces/remix/shutdown.html b/data/interfaces/remix/shutdown.html new file mode 100644 index 00000000..be7ca21d --- /dev/null +++ b/data/interfaces/remix/shutdown.html @@ -0,0 +1,13 @@ +<%inherit file="base.html"/> + +<%def name="headIncludes()"> + + + +<%def name="body()"> +
+
+

Headphones is ${message}

+
+
+ \ No newline at end of file diff --git a/data/interfaces/remix/style.css b/data/interfaces/remix/style.css new file mode 100644 index 00000000..28fc9c97 --- /dev/null +++ b/data/interfaces/remix/style.css @@ -0,0 +1,298 @@ +/* HTML5 ✰ Boilerplate */ + +html, body, div, span, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp, +small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, figcaption, figure, +footer, header, hgroup, menu, nav, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} + +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} + +blockquote, q { quotes: none; } +blockquote:before, blockquote:after, +q:before, q:after { content: ''; content: none; } +ins { background-color: #ff9; color: #000; text-decoration: none; } +mark { background-color: #ff9; color: #000; font-style: italic; font-weight: bold; } +del { text-decoration: line-through; } +abbr[title], dfn[title] { border-bottom: 1px dotted; cursor: help; } +table { border-collapse: collapse; border-spacing: 0; } +hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; } +input, select { vertical-align: middle; } + +body { font:13px/1.231 sans-serif; *font-size:small; } +select, input, textarea, button { font:99% sans-serif; } +pre, code, kbd, samp { font-family: monospace, sans-serif; } + +html { overflow-y: scroll; } +a:hover, a:active { outline: none; } +ul, ol { margin-left: 2em; } +ol { list-style-type: decimal; } +nav ul, nav li { margin: 0; list-style:none; list-style-image: none; } +small { font-size: 85%; } +strong, th { font-weight: bold; } +td { vertical-align: top; } + +sub, sup { font-size: 75%; line-height: 0; position: relative; } +sup { top: -0.5em; } +sub { bottom: -0.25em; } + +pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; padding: 15px; } +textarea { overflow: auto; } +.ie6 legend, .ie7 legend { margin-left: -7px; } +input[type="radio"] { vertical-align: text-bottom; } +input[type="checkbox"] { vertical-align: bottom; } +.ie7 input[type="checkbox"] { vertical-align: baseline; } +.ie6 input { vertical-align: text-bottom; } +label, input[type="button"], input[type="submit"], input[type="image"], button { cursor: pointer; } +button, input, select, textarea { margin: 0; } +input:valid, textarea:valid { } +input:invalid, textarea:invalid { border-radius: 1px; -moz-box-shadow: 0px 0px 5px red; -webkit-box-shadow: 0px 0px 5px red; box-shadow: 0px 0px 5px red; } +.no-boxshadow input:invalid, .no-boxshadow textarea:invalid { background-color: #f0dddd; } + +::-moz-selection{ background: grey; color:#fff; text-shadow: none; } +::selection { background: grey; color:#fff; text-shadow: none; } + +button { width: auto; overflow: visible; } +.ie7 img { -ms-interpolation-mode: bicubic; } + +body, select, input, textarea { color: #444; } +h1, h2, h3, h4, h5, h6 { font-weight: bold; } + +/* + // ========================================== \\ + || || + || Custom Styles || + || || + \\ ========================================== // +*/ + +a:link { + color: orange; + text-decoration: none; + } +a:visited { + color: orange; + text-decoration: none; + } +a:hover { /*this effect is not shown in NN4.xx*/ + color: #999999; + text-decoration: underline; + } +a:active {/*colour in NN4.xx is red*/ + color: #5E2612; + text-decoration: underline; + } +a.blue { + color: blue; + } + +container { } + +body { background-color: black; min-width: 935px; } + +header { min-height: 68px; width: 100%; min-width: 935px; padding-left: 0px; padding-right: 10px; background-color: #black; position: fixed; z-index: 998; } + +h1 { font-size: 24px; } +h2 { font-size: 20px; } +h3 { font-size: 16px; } + +p.indented { padding-top: 20px; margin-left: 20px; font-size: 14px; } +p.center { text-align: center; font-size: 18px; } +.smalltext2 { font-size: 11px; margin-left: 45px; } + +div#updatebar { text-align: center; min-width: 970px; width: 100%; background-color: light-blue; float: left; } +div#logo { float: left; padding-left: 10px; } + +ul#nav { margin: 25px 0 0 0; float: left; list-style-type: none; } +ul#nav li { margin: 40px 0px auto 10px; display: inline; } +ul#nav li a { padding: 5px; font-size: 16px; font-weight: bold; color: white; text-decoration: none; } +ul#nav li a:hover { background-color: #a3e532; } + +div#subhead_container { height: 30px; width:100%; min-width: 1000px; background-color: blue; float: left; list-style-type: none; z-index: 998; overflow: hidden; } +ul#subhead_menu { margin-top: 5px; } +ul#subhead_menu li { width: 100%; height: 100%; display: inline; } +ul#subhead_menu li a { padding: 5px 15px 10px 15px; vertical-align: middle; color: white; font-size: 16px; text-decoration: none; } +ul#subhead_menu li a:hover { width: 100%; height: 100%; background-color: #grey; } + +div#searchbar { margin: 24px 30px auto auto; float: right; } + +div#main { margin: 0; padding: 80px 0 0 0; } + +.table_wrapper { border-radius: 20px; -webkit-border-radius: 20px; -moz-border-radius: 20px; width: 88%; margin: 20px auto 0 auto; padding: 25px; background-color: white; position: relative; min-height: 200px; clear: both; _height: 302px; zoom: 1; } +.manage_wrapper { width: 88%; margin: 20px auto 0 auto; padding: 25px; min-height: 150px; clear: both; _height: 302px; zoom: 1; } +.table_wrapper_left { padding: 25px; background-color: #ffffff; float: left; width: 40%; min-height: 100px; margin-top: 25px; margin-left: 30px; margin-right: auto; -moz-border-radius: 20px; border-radius: 20px; } +.table_wrapper_right{ padding: 25px; background-color: #ffffff; width: 40%; min-height: 100px; margin-top: 25px; margin-left: auto; margin-right: 30px; -moz-border-radius: 20px; border-radius: 20px; } + +.configtable { font-size: 14px; line-height:18px; } +.configtable td { width: 350px; padding: 10px; } +.configtable td#middle { vertical-align: middle; } + +table#artist_table { background-color: white; width: 100%; padding: 20px; } + +table#artist_table th#name { text-align: left; min-width: 200px; } +table#artist_table th#status { text-align: left; min-width: 50px; } +table#artist_table th#album { text-align: left; min-width: 300px; } +table#artist_table th#have { text-align: center; } +table#artist_table td#name { vertical-align: middle; text-align: left; min-width:200px; } +table#artist_table td#status { vertical-align: middle; text-align: left; min-width: 50px; } +table#artist_table td#album { vertical-align: middle; text-align: left; min-width: 300px; } +table#artist_table td#have { vertical-align: middle; } + +div#paddingheader { padding-top: 48px; font-size: 24px; font-weight: bold; text-align: center; } +div#nopaddingheader { font-size: 24px; font-weight: bold; text-align: center; } +table#album_table { background-color: white; } + +table#album_table th#select { vertical-align: middle; text-align: left; min-width: 25px; } +table#album_table th#albumart { text-align: left; min-width: 50px; } +table#album_table th#albumname { text-align: center; min-width: 150px; } +table#album_table th#reldate { width: 175px; text-align: center; min-width: 100px; } +table#album_table th#status { width: 175px; text-align: center; min-width: 100px; } +table#album_table th#type { width: 175px; text-align: center; min-width: 100px; } +table#album_table td#select { vertical-align: middle; text-align: left; } +table#album_table td#albumart { vertical-align: middle; text-align: left; } +table#album_table td#albumname { vertical-align: middle; text-align: center; } +table#album_table td#reldate { vertical-align: middle; text-align: center; } +table#album_table td#status { vertical-align: middle; text-align: center; } +table#album_table td#type { vertical-align: middle; text-align: center; } +table#album_table td#have { vertical-align: middle; } + +img.albumArt { float: left; padding-right: 5px; } +div#albumheader { padding-top: 48px; height: 200px; } +div#track_wrapper { padding-top: 20px; text-align: center; font-size: 16px; } + +table#track_table th#number { text-align: right; min-width: 20px; } +table#track_table th#name { text-align: center; min-width: 350px; } +table#track_table th#duration { width: 175px; text-align: center; min-width: 100px; } +table#track_table th#have { width: 175px; text-align: center; min-width: 100px; } + +table#track_table td#number { vertical-align: middle; text-align: right; } +table#track_table td#name { vertical-align: middle; text-align: center; } +table#track_table td#duration { vertical-align: middle; text-align: center; } +table#track_table td#have { vertical-align: middle; text-align: center; } + +table#history_table { background-color: white; width: 100%; } + +table#log_table { background-color: white; } + +table#log_table th#timestamp { text-align: left; min-width: 150px; } +table#log_table th#level { text-align: left; min-width: 60px; } +table#log_table th#message { text-align: left; min-width: 500px; } + +table#upcoming_table th#albumart { text-align: center; min-width: 50px; } +table#upcoming_table th#albumname { text-align: center; min-width: 200px; } +table#upcoming_table th#artistname { text-align: center; min-width: 150px; } +table#upcoming_table th#reldate { text-align: center; min-width: 100px; } +table#upcoming_table th#type { text-align: center; min-width: 75px; } + +table#upcoming_table td#select { vertical-align: middle; text-align: center; } +table#upcoming_table td#albumart { vertical-align: middle; text-align: center; min-width: 50px; } +table#upcoming_table td#albumname { vertical-align: middle; text-align: center; min-width: 200px; } +table#upcoming_table td#artistname { vertical-align: middle; text-align: center; min-width: 150px; } +table#upcoming_table td#reldate { vertical-align: middle; text-align: center; min-width: 100px; } +table#upcoming_table td#type { vertical-align: middle; text-align: center; min-width: 75px; } +table#upcoming_table td#status { vertical-align: middle; text-align: center; } + +table#wanted_table th#albumart { text-align: center; min-width: 50px; } +table#wanted_table th#albumname { text-align: center; min-width: 200px; } +table#wanted_table th#artistname { text-align: center; min-width: 150px; } +table#wanted_table th#reldate { text-align: center; min-width: 100px; } +table#wanted_table th#type { text-align: center; min-width: 75px; } + +table#wanted_table td#select { vertical-align: middle; text-align: center; } +table#wanted_table td#albumart { vertical-align: middle; text-align: center; min-width: 50px; } +table#wanted_table td#albumname { vertical-align: middle; text-align: center; min-width: 200px; } +table#wanted_table td#artistname { vertical-align: middle; text-align: center; min-width: 150px; } +table#wanted_table td#reldate { vertical-align: middle; text-align: center; min-width: 100px; } +table#wanted_table td#type { vertical-align: middle; text-align: center; min-width: 75px; } +table#wanted_table td#status { vertical-align: middle; text-align: center; } + +table#searchresults_table th#albumname { text-align: left; min-width: 225px; } +table#searchresults_table th#artistname { text-align: center; min-width: 325px; } +table#searchresults_table th#score { text-align: center; min-width: 75px; } + +table#searchresults_table td#albumname { vertical-align: middle; text-align: left; min-width: 200px; } +table#searchresults_table td#artistname { vertical-align: middle; text-align: left; min-width: 300px; } +table#searchresults_table td#score { vertical-align: middle; text-align: center; min-width: 75px; } + +div.progress-container { border: 1px solid #ccc; width: 100px; height: 14px; margin: 2px 5px 2px 0; padding: 1px; float: left; background: white; } +div.progress-container > div { background-color: #a3e532; height: 14px; } +.havetracks { font-size: 13px; margin-left: 36px; padding-bottom: 3px; vertical-align: middle; } + +footer { margin: 20px auto 20px auto; } +div#version { text-align: center; font-weight: bold; } +div#donate { text-align: center; margin: 20px auto 20px auto; } + +div#shutdown{ text-align: center; vertical-align: middle; } + +.cloudtag { padding-top: 30px; font-size:16px; } +#cloud a.tag1 { font-size: 0.7em; font-weight: 100; } +#cloud a.tag2 { font-size: 0.8em; font-weight: 200; } +#cloud a.tag3 { font-size: 0.9em; font-weight: 300; } +#cloud a.tag4 { font-size: 1.0em; font-weight: 400; } +#cloud a.tag5 { font-size: 1.2em; font-weight: 500; } +#cloud a.tag6 { font-size: 1.4em; font-weight: 600; } +#cloud a.tag7 { font-size: 1.6em; font-weight: 700; } +#cloud a.tag8 { font-size: 1.8em; font-weight: 800; } +#cloud a.tag9 { font-size: 2.2em; font-weight: 900; } +#cloud a.tag10 { font-size: 2.5em; font-weight: 900; } + +#cloud { padding: 2px; line-height: 1.5em; text-align: center; } +#cloud a { padding: 0px; } +#cloud { margin: 0; } +#cloud li { display: inline; } + + + +.ir { display: block; text-indent: -999em; overflow: hidden; background-repeat: no-repeat; text-align: left; direction: ltr; } +.hidden { display: none; visibility: hidden; } +.visuallyhidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } +.visuallyhidden.focusable:active, +.visuallyhidden.focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } +.invisible { visibility: hidden; } +.clearfix:before, .clearfix:after { content: "\0020"; display: block; height: 0; overflow: hidden; } +.clearfix:after { clear: both; } +.clearfix { zoom: 1; } + + +@media all and (orientation:portrait) { + +} + +@media all and (orientation:landscape) { + +} + +@media screen and (max-device-width: 480px) { + + html { -webkit-text-size-adjust:none; -ms-text-size-adjust:none; } +} + + +@media print { + * { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important; + -ms-filter: none !important; } + a, a:visited { color: #444 !important; text-decoration: underline; } + a[href]:after { content: " (" attr(href) ")"; } + abbr[title]:after { content: " (" attr(title) ")"; } + .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } + pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } + thead { display: table-header-group; } + tr, img { page-break-inside: avoid; } + @page { margin: 0.5cm; } + p, h2, h3 { orphans: 3; widows: 3; } + h2, h3{ page-break-after: avoid; } +} \ No newline at end of file diff --git a/data/interfaces/remix/upcoming.html b/data/interfaces/remix/upcoming.html new file mode 100644 index 00000000..5c209056 --- /dev/null +++ b/data/interfaces/remix/upcoming.html @@ -0,0 +1,86 @@ +<%inherit file="base.html" /> +<%def name="body()"> +
+

Upcoming Albums

+ + + + + + + + + + + + + %for album in upcoming: + + + + + + + + + %endfor + +
ArtistAlbum NameRelease DateTypeStatus
${album['ArtistName']}${album['AlbumTitle']}${album['ReleaseDate']}${album['Type']}${album['Status']}
+
+ +
+

Mark selected albums as + + +

+
+

Wanted Albums

+ + + + + + + + + + + + + %for album in wanted: + + + + + + + + %endfor + +
ArtistAlbum NameRelease DateType
+ ${album['ArtistName']}${album['AlbumTitle']}${album['ReleaseDate']}${album['Type']}
+ +
+ + +<%def name="headIncludes()"> + + + +<%def name="javascriptIncludes()"> + + + \ No newline at end of file diff --git a/data/js/selectFix.js b/data/js/selectFix.js deleted file mode 100644 index 70009887..00000000 --- a/data/js/selectFix.js +++ /dev/null @@ -1,84 +0,0 @@ -/*///////////////////////////////////////////////////////////////////////////////// -VERSION 1.3 - Updated January 4, 2011 -CREATED BY KEVIN MACK -DETAILS: http://nicetransition.com/_plugins/jQuery-Cross-Browser-Select-Fix -//////////////////////////////////////////////////////////////////////////////////*/ -(function ($) { - $.fn.selectFix = function (options) { - $(this).each(function () { - - var settings = $.extend({ 'extraStyles': true, 'responsive': false, 'arrow': true, 'arrowWidth': 20, 'arrowContent': '', 'className': 'select', 'classText': 'text', 'classArrow': 'arrow', 'classFocus': 'focused', 'classEnd': 'selected', 'display': 'inline-block' }, options); - - var className = "." + settings.className; - var selectField = $(this); - - selectField.css({ '-webkit-appearance': 'none', 'box-sizing': 'border-box', '-moz-box-sizing': 'border-box', '-webkit-box-sizing': 'border-box', 'cursor': 'pointer' }); //mac OS bug fix on webkit render - - var initVal; - if (selectField.children("option:selected").size() > 0) { - initVal = selectField.children("option:selected").eq(0).text(); - } else { - initVal = selectField.children("option").eq(0).text(); - } - - var height = selectField.css("height"); - var width = selectField.css("width").replace("px", ""); - var widthPercent; - - if (settings.responsive) { - widthPercent = (100 * parseInt(width.replace("px", "")) / parseInt(selectField.parent().css('width').replace("px", ""))) + '%'; - } else { - widthPercent = width + "px"; - } - - var arrow; - var arrowWidth = String(settings.arrowWidth); - - if (arrowWidth.indexOf('px') < 0 && arrowWidth.indexOf('%') < 0) { - arrowWidth = arrowWidth + "px"; - } - if (settings.arrow == true) { - arrow = "" + settings.arrowContent + ""; - } else { - arrow = ""; - } - - selectField.css({ "display": "block", "left": 0, "opacity": 0, "position": "absolute", "top": 0, "z-index": 1 }).wrap("
").closest(className).append("" + initVal + "" + arrow); - - selectField.bind({ - change: function (event) { - selectField.siblings("." + settings.classText).html(selectField.children("option[value=" + selectField.val() + "]").text()); - if (settings.extraStyles == true) { - selectField.parent(className).addClass(settings.classEnd).removeClass(settings.classFocus); //optional styling to be used once a selection has been made - } - if (selectField.val() == '' || selectField.val() == undefined || selectField.val() == null) { - selectField.parent(className).removeClass(settings.classEnd); - } - }, - focus: function (event) { - if (settings.extraStyles == true) { - selectField.parent(className).addClass(settings.classFocus); - } - selectField.keyup(function () { - selectField.siblings("." + settings.classText).html($(this).children("option:selected").text()); - }); - }, - click: function () { - if (settings.extraStyles == true) { - selectField.parent(className).addClass(settings.classFocus); - } - }, - blur: function () { - if (settings.extraStyles == true) { - selectField.parent(className).removeClass(settings.classFocus); - } - } - }); - - if ($(".stlyesFor" + settings.className).size() < 1) { - selectField.after(""); - } - - }); - } -})(jQuery) \ No newline at end of file diff --git a/data/js/selectFix.min.js b/data/js/selectFix.min.js deleted file mode 100644 index 8cf34da7..00000000 --- a/data/js/selectFix.min.js +++ /dev/null @@ -1,6 +0,0 @@ -(function (a) { a.fn.selectFix = function (b) { a(this).each(function () { var d = a.extend({ extraStyles: true, responsive: false, arrow: true, arrowWidth: 20, arrowContent: "", className: "select", classText: "text", classArrow: "arrow", classFocus: "focused", classEnd: "selected", display: "inline-block" }, b); var g = "." + d.className; var k = a(this); k.css({ "-webkit-appearance": "none", "box-sizing": "border-box", "-moz-box-sizing": "border-box", "-webkit-box-sizing": "border-box", cursor: "pointer" }); var f; if (k.children("option:selected").size() > 0) { f = k.children("option:selected").eq(0).text(); } else { f = k.children("option").eq(0).text(); } var j = k.css("height"); var c = k.css("width").replace("px", ""); var h; if (d.responsive) { h = (100 * parseInt(c.replace("px", "")) / parseInt(k.parent().css("width").replace("px", ""))) + "%"; } else { h = c + "px"; } var i; var e = String(d.arrowWidth); if (e.indexOf("px") < 0 && e.indexOf("%") < 0) { e = e + "px"; } if (d.arrow == true) { i = '' + d.arrowContent + ""; } else { i = ""; } k.css({ display: "block", left: 0, opacity: 0, position: "absolute", top: 0, "z-index": 1 }).wrap('
').closest(g).append('' + f + "" + i); k.bind({ change: function (l) { k.siblings("." + d.classText).html(k.children("option[value=" + k.val() + "]").text()); if (d.extraStyles == true) { k.parent(g).addClass(d.classEnd).removeClass(d.classFocus); } if (k.val() == "" || k.val() == undefined || k.val() == null) { k.parent(g).removeClass(d.classEnd); } }, focus: function (l) { if (d.extraStyles == true) { k.parent(g).addClass(d.classFocus); } k.keyup(function () { k.siblings("." + d.classText).html(a(this).children("option:selected").text()); }); }, click: function () { if (d.extraStyles == true) { k.parent(g).addClass(d.classFocus); } }, blur: function () { if (d.extraStyles == true) { k.parent(g).removeClass(d.classFocus); } } }); if (a(".stlyesFor" + d.className).size() < 1) { k.after('"); } }); }; })(jQuery); -/*///////////////////////////////////////////////////////////////////////////////// -VERSION 1.3 - Updated January 4, 2011 -CREATED BY KEVIN MACK -DETAILS: http://nicetransition.com/_plugins/jQuery-Cross-Browser-Select-Fix -//////////////////////////////////////////////////////////////////////////////////*/ \ No newline at end of file