diff --git a/data/css/style.css b/data/css/style.css index 5efc2acc..3dfb01c5 100644 --- a/data/css/style.css +++ b/data/css/style.css @@ -33,7 +33,7 @@ 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; } +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; } @@ -52,7 +52,7 @@ 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; } +.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; } @@ -81,20 +81,20 @@ h1, h2, h3, h4, h5, h6 { font-weight: bold; } */ a:link { - color: #5E2612; - text-decoration: none; + color: #5E2612; + text-decoration: none; } a:visited { - color: #5E2612; - text-decoration: none; + color: #5E2612; + text-decoration: none; } a:hover { /*this effect is not shown in NN4.xx*/ - color: #999999; + color: #999999; text-decoration: underline; } -a:active {/*colour in NN4.xx is red*/ - color: #5E2612; - text-decoration: underline; +a:active {/*colour in NN4.xx is red*/ + color: #5E2612; + text-decoration: underline; } a.blue { color: blue; @@ -274,8 +274,6 @@ div#shutdown{ text-align: center; vertical-align: middle; } #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; } @@ -303,11 +301,11 @@ div#shutdown{ text-align: center; vertical-align: middle; } @media print { * { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important; - -ms-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: ""; } + .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; } diff --git a/data/interfaces/default/artist.html b/data/interfaces/default/artist.html index a53e2029..c5a842f8 100644 --- a/data/interfaces/default/artist.html +++ b/data/interfaces/default/artist.html @@ -7,7 +7,7 @@ <%def name="headerIncludes()">
-
+
Refresh Artist Delete Artist %if artist['Status'] == 'Paused': @@ -18,7 +18,7 @@ %if artist['IncludeExtras']: Remove Extras Modify Extras - %else: + %else: Get Extras %endif
-
+
« Back to overview @@ -42,20 +42,21 @@
-

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

+ %if artist['Status'] == 'Loading': + loading %endif ${artist['ArtistName']} %if artist['Status'] == 'Loading':

(Album information for this artist is currently being loaded)

- %endif + %endif -
+
+
-
Mark selected albums as +
Mark selected albums as
- +

Notifications

Prowl

@@ -821,7 +821,7 @@ nma_priority_selected = 'selected' else: nma_priority_selected = '' - + if x == -2: nma_priority_value = 'Very Low' elif x == -1: @@ -905,6 +905,14 @@
+
+ Songkick +
+ + +
+
+ diff --git a/data/interfaces/default/css/style.css b/data/interfaces/default/css/style.css index 5c6d59cb..e392b765 100644 --- a/data/interfaces/default/css/style.css +++ b/data/interfaces/default/css/style.css @@ -1,4 +1,5 @@ -/* Variables *//* Mixins */ +/* Variables */ +/* Mixins */ html, body, div, @@ -158,7 +159,7 @@ img.albumArt { float: left; min-height: 100%; min-width: 100%; - max-width: 300px; + max-width: 250px; max-height: 300px; position: relative; } @@ -179,8 +180,8 @@ table th { background-image: linear-gradient(#fafafa, #eaeaea) !important; background-image: -webkit-linear-gradient(#fafafa, #eaeaea) !important; background-image: -o-linear-gradient(#fafafa, #eaeaea) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; border-left: 1px solid #E0E0E0; -moz-box-shadow: 1px 0 0 #fafafa; -webkit-box-shadow: 1px 0 0 #fafafa; @@ -204,8 +205,8 @@ table th.sorting_asc { background-image: linear-gradient(#fafbfd, #dce6ef) !important; background-image: -webkit-linear-gradient(#fafbfd, #dce6ef) !important; background-image: -o-linear-gradient(#fafbfd, #dce6ef) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fafbfd, endColorstr=#dce6ef) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fafbfd, endColorstr=#dce6ef) !important; color: #4183c4; } table td { @@ -296,23 +297,6 @@ input[type=button] { text-decoration: none; text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.25); } -.configsubmit { - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - background: #222222 url("../images/button.png") repeat-x; - border: 0; - border-bottom: 1px solid rgba(0, 0, 0, 0.25); - color: #fff; - cursor: pointer; - margin-left: 75%; - margin-top: 5px; - text-align: center; - width: 200px; - padding: 4px 10px; - text-decoration: none; - text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.25); -} form legend, form h2 { font-size: 16px; @@ -365,7 +349,7 @@ form .row input[type=password] { line-height: normal; max-width: 230px; margin-right: 5px; - padding: 2px 5px; + padding: 3px 5px; } form .row small { color: #999; @@ -378,28 +362,24 @@ form .row small { form .left label { float: none; line-height: normal; - margin-bottom: 5px; - padding-top: 2px; + margin-bottom: 10px; + padding-top: 1px; width: auto; } form .left input { float: left; - margin-bottom: 5px; - clear: left; - display: block; + margin-bottom: 10px; } form .radio label { float: none; line-height: normal; - margin-bottom: 5px; - padding-top: 0px; + margin-bottom: 10px; + padding-top: 1px; width: auto; } form .radio input { float: left; - margin-bottom: 5px; - clear: left; - display: block; + margin-bottom: 10px; } form .radio small { display: inline !important; @@ -413,15 +393,6 @@ form .checkbox small { margin: 0 !important; width: auto; } -.override-float { - float: none !important; - margin-bottom: 0px !important; - clear: none !important; - display: inline !important; - font-size: 10px; - line-height: 10px; - height: 10px; -} ul, ol { margin-left: 2em; @@ -468,8 +439,8 @@ ul#nav li a:hover { background-image: linear-gradient(#f1f1f1, #e0e0e0) !important; background-image: -webkit-linear-gradient(#f1f1f1, #e0e0e0) !important; background-image: -o-linear-gradient(#f1f1f1, #e0e0e0) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f1f1f1, endColorstr=#e0e0e0) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f1f1f1, endColorstr=#e0e0e0) !important; border: 1px solid #DDDDDD; -moz-border-radius: 3px; -webkit-border-radius: 3px; @@ -505,8 +476,8 @@ header { background-image: linear-gradient(#fafafa, #eaeaea) !important; background-image: -webkit-linear-gradient(#fafafa, #eaeaea) !important; background-image: -o-linear-gradient(#fafafa, #eaeaea) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; border-bottom: 1px solid #CACACA; -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); @@ -532,7 +503,7 @@ header #logo { } footer { display: table; - margin: 40px auto 50px auto; + margin: 60px auto 50px auto; width: 960px; padding-top: 10px; border-top: 1px solid #EEE; @@ -551,8 +522,8 @@ footer { background-image: linear-gradient(#fcf5c2, #fff6a9) !important; background-image: -webkit-linear-gradient(#fcf5c2, #fff6a9) !important; background-image: -o-linear-gradient(#fcf5c2, #fff6a9) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fcf5c2, endColorstr=#fff6a9) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fcf5c2, endColorstr=#fff6a9) !important; display: inline-block; padding: 5px 10px; margin-top: 10px; @@ -563,37 +534,14 @@ footer { position: relative; top: 4px; } -.configmessage { - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - border-radius: 10px; - background-image: -moz-linear-gradient(#fcf5c2, #fff6a9) !important; - background-image: linear-gradient(#fcf5c2, #fff6a9) !important; - background-image: -webkit-linear-gradient(#fcf5c2, #fff6a9) !important; - background-image: -o-linear-gradient(#fcf5c2, #fff6a9) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - text-align: center; - padding: 3px 5px; - width: 400px; - margin-left: auto; - margin-right: auto; - margin-bottom: 5px; -} -.configmessage .ui-icon { - float: left; - margin-right: 5px; - position: relative; - top: 4px; -} #ajaxMsg { border: 1px solid #cccccc; background-image: -moz-linear-gradient(#ffffff, #eeeeee) !important; background-image: linear-gradient(#ffffff, #eeeeee) !important; background-image: -webkit-linear-gradient(#ffffff, #eeeeee) !important; background-image: -o-linear-gradient(#ffffff, #eeeeee) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff, endColorstr=#eeeeee) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff, endColorstr=#eeeeee) !important; -moz-border-radius: 7px; -webkit-border-radius: 7px; border-radius: 7px; @@ -631,8 +579,8 @@ footer { background-image: linear-gradient(#d3ffd7, #c2edc6) !important; background-image: -webkit-linear-gradient(#d3ffd7, #c2edc6) !important; background-image: -o-linear-gradient(#d3ffd7, #c2edc6) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#d3ffd7, endColorstr=#c2edc6) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#d3ffd7, endColorstr=#c2edc6) !important; padding: 15px 10px; text-align: left; } @@ -641,8 +589,8 @@ footer { background-image: linear-gradient(#ffd3d3, #edc4c4) !important; background-image: -webkit-linear-gradient(#ffd3d3, #edc4c4) !important; background-image: -o-linear-gradient(#ffd3d3, #edc4c4) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffd3d3, endColorstr=#edc4c4) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffd3d3, endColorstr=#edc4c4) !important; padding: 15px 10px; text-align: left; } @@ -659,8 +607,8 @@ footer { background-image: linear-gradient(#ffffff, #eeeeee) !important; background-image: -webkit-linear-gradient(#ffffff, #eeeeee) !important; background-image: -o-linear-gradient(#ffffff, #eeeeee) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff, endColorstr=#eeeeee) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff, endColorstr=#eeeeee) !important; -moz-border-radius: 7px; -webkit-border-radius: 7px; border-radius: 7px; @@ -688,8 +636,8 @@ footer { background-image: linear-gradient(#fcf5c2, #fff6a9) !important; background-image: -webkit-linear-gradient(#fcf5c2, #fff6a9) !important; background-image: -o-linear-gradient(#fcf5c2, #fff6a9) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fcf5c2, endColorstr=#fff6a9) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fcf5c2, endColorstr=#fff6a9) !important; } #updatebar .msg { font-family: "Trebuchet MS", Helvetica, Arial, sans-serif; @@ -705,8 +653,8 @@ footer { background-image: linear-gradient(#d3ffd7, #c2edc6) !important; background-image: -webkit-linear-gradient(#d3ffd7, #c2edc6) !important; background-image: -o-linear-gradient(#d3ffd7, #c2edc6) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#d3ffd7, endColorstr=#c2edc6) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#d3ffd7, endColorstr=#c2edc6) !important; padding: 15px 10px; text-align: left; } @@ -715,8 +663,8 @@ footer { background-image: linear-gradient(#ffd3d3, #edc4c4) !important; background-image: -webkit-linear-gradient(#ffd3d3, #edc4c4) !important; background-image: -o-linear-gradient(#ffd3d3, #edc4c4) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffd3d3, endColorstr=#edc4c4) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffd3d3, endColorstr=#edc4c4) !important; padding: 15px 10px; text-align: left; } @@ -727,13 +675,6 @@ footer { position: relative; margin-right: 3px; } -#dialog { - padding: 40px; -} -#dialog input#submit { - margin-left: 50px; - margin-right: auto; -} #subhead .back { float: left; margin-top: -25px; @@ -756,8 +697,8 @@ footer { background-image: linear-gradient(#f4f4f4, #e7e7e7) !important; background-image: -webkit-linear-gradient(#f4f4f4, #e7e7e7) !important; background-image: -o-linear-gradient(#f4f4f4, #e7e7e7) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f4f4f4, endColorstr=#e7e7e7) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f4f4f4, endColorstr=#e7e7e7) !important; font-family: "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif; font-size: 12px; font-weight: normal; @@ -767,8 +708,8 @@ footer { background-image: linear-gradient(#599bdc, #3072b3) !important; background-image: -webkit-linear-gradient(#599bdc, #3072b3) !important; background-image: -o-linear-gradient(#599bdc, #3072b3) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#599bdc, endColorstr=#3072b3) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#599bdc, endColorstr=#3072b3) !important; color: #FFF; border-color: #518CC6 #518CC6 #2A65A0; } @@ -880,6 +821,18 @@ div#artistheader #artistImg { overflow: hidden; text-indent: -3000px; width: 200px; + position: relative; +} +div#artistheader #artistImg.on-tour:before { + content: ''; + position: absolute; + top: 0; + left: -2px; + width: 100px; + height: 100px; + z-index: 2; + background-image: url('../images/songkick_ribon.png'); + background-repeat: no-repeat; } div#artistheader #artistBio { font-size: 16px; @@ -896,6 +849,22 @@ div#artistheader h2 a { font-weight: bold; font-family: "Trebuchet MS", Helvetica, Arial, sans-serif; } +#artistCalendar { + list-style-type: none; + margin: 0px; + display: block; + background: #FEF2EB; + padding: 10px; + font-size: 16px; +} +#artistCalendar .sk-location { + display: inline-block; + padding-left: 6px; +} +#artistCalendar .sk-logo { + width: 100px; + padding-top: 16px; +} #artist_table { background-color: #FFF; padding: 20px; @@ -920,24 +889,16 @@ div#artistheader h2 a { #artist_table th#name { min-width: 200px; text-align: left; - width:200px; } #artist_table th#album { min-width: 300px; text-align: left; } -#artist_table th#albumart, -#artist_table th#status{ - width:50px; -} - #artist_table th#status, -#artist_table th#albumart, -#artist_table th#lastupdated { +#artist_table th#albumart { min-width: 50px; text-align: left; } - #artist_table th#have { text-align: center; } @@ -946,13 +907,11 @@ div#artistheader h2 a { text-align: left; vertical-align: middle; } -#artist_table td#status, -#artist_table td#lastupdated { +#artist_table td#status { min-width: 50px; text-align: left; vertical-align: middle; } - #artist_table td#album { min-width: 300px; text-align: left; @@ -1185,8 +1144,8 @@ div#artistheader h2 a { background-image: linear-gradient(#a3e532, #90cc2a) !important; background-image: -webkit-linear-gradient(#a3e532, #90cc2a) !important; background-image: -o-linear-gradient(#a3e532, #90cc2a) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#a3e532, endColorstr=#90cc2a) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#a3e532, endColorstr=#90cc2a) !important; } .progress-container { background: #FFF; @@ -1197,13 +1156,13 @@ div#artistheader h2 a { padding: 1px; width: 100px; } -.progress-container > div { +.progress-container > div { background-image: -moz-linear-gradient(#a3e532, #90cc2a) !important; background-image: linear-gradient(#a3e532, #90cc2a) !important; background-image: -webkit-linear-gradient(#a3e532, #90cc2a) !important; background-image: -o-linear-gradient(#a3e532, #90cc2a) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#a3e532, endColorstr=#90cc2a) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#a3e532, endColorstr=#90cc2a) !important; height: 14px; } .havetracks { @@ -1365,7 +1324,6 @@ div#artistheader h2 a { clear: both; } #album_table th#albumname, -#album_table th#artistname, #upcoming_table th#artistname, #wanted_table th#artistname { min-width: 150px; @@ -1388,7 +1346,6 @@ div#artistheader h2 a { vertical-align: middle; } #album_table td#albumname, -#album_table td#artistname, #album_table td#reldate, #album_table td#type, #track_table td#duration, @@ -1495,6 +1452,3 @@ table tr td#status a { .ie7 legend { margin-left: -7px; } -#preferred_bitrate_options { - margin-left: 20px; -} diff --git a/data/interfaces/default/css/style.less b/data/interfaces/default/css/style.less index 2c8c67a6..20d636d0 100644 --- a/data/interfaces/default/css/style.less +++ b/data/interfaces/default/css/style.less @@ -1,4 +1,4 @@ -// Config +// Config @import "config.less"; 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 { @@ -26,7 +26,7 @@ body { padding: 0; } -// Links +// Links a { color: @link-color; text-decoration: none; @@ -37,11 +37,11 @@ a { &.blue { color: blue; } - .ui-icon { + .ui-icon { display:inline-block; position: relative; top: 2px; - + } } .links { @@ -204,7 +204,7 @@ form { line-height: normal; max-width: 230px; margin-right: 5px; - padding: 3px 5px; + padding: 3px 5px; } small { color: #999; @@ -295,10 +295,10 @@ ul#nav { .rounded(3px); .shadow(0 1px 0 #FAFAFA); .shadow(0 1px 0 #FAFAFA inset); - -webkit-transition:color .2s ease-in; - -moz-transition:color .2s ease-in; - -o-transition:color .2s ease-in; - transition:color .2s ease-in; + -webkit-transition:color .2s ease-in; + -moz-transition:color .2s ease-in; + -o-transition:color .2s ease-in; + transition:color .2s ease-in; } &.config { height: 28px; @@ -412,7 +412,7 @@ footer { } #updatebar { - #ajaxMsg; + #ajaxMsg; display: block; .gradient(#FCF5C2,@msg-bg); } @@ -442,7 +442,7 @@ footer { &:hover { .gradient(#599BDC, #3072B3); color: #FFF; - border-color: #518CC6 #518CC6 #2A65A0; + border-color: #518CC6 #518CC6 #2A65A0; } } } @@ -504,7 +504,7 @@ div#searchbar { } } -// TABLES +// TABLES // wrappers .table_wrapper { @@ -533,8 +533,8 @@ div#searchbar { h1 { line-height: 33px; width: 450px; - img { - float:left; + img { + float:left; margin-right: 5px; } } @@ -545,7 +545,7 @@ div#nopaddingheader { text-align: center; } -// Artist +// Artist div#artistheader { margin-top: 50px; min-height: 200px; @@ -560,12 +560,26 @@ div#artistheader { overflow: hidden; text-indent: -3000px; width: 200px; + position: relative; + + &.on-tour:before { + content: ''; + position: absolute; + top: 0; + left: -2px; + width: 100px; + height: 100px; + z-index: 2; + background-image: url('../images/songkick_ribon.png'); + background-repeat: no-repeat; + } } #artistBio { font-size: 16px; line-height: 24px; margin-top: 10px; } + h1 { a { font-size: 32px; @@ -582,6 +596,25 @@ div#artistheader { } } +#artistCalendar { + list-style-type: none; + margin: 0px; + display: block; + background: #FEF2EB; + padding: 10px; + font-size: 16px; + + .sk-location { + display: inline-block; + padding-left: 6px; + } + + .sk-logo { + width: 100px; + padding-top: 16px; + } +} + #artist_table { background-color: #FFF; padding: 20px; @@ -625,7 +658,7 @@ div#artistheader { text-align: left; vertical-align: middle; } - td#album { + td#album { min-width: 300px; text-align: left; vertical-align: middle; @@ -638,7 +671,7 @@ div#artistheader { display: inline-block; } -// Album +// Album #albumheader { margin-top: 50px; min-height: 200px; @@ -733,7 +766,7 @@ div#artistheader { } } -// Manage +// Manage #manageheader { margin-top: 45px; margin-bottom: 0; @@ -777,7 +810,7 @@ div#artistheader { } } -// History +// History #history_table { background-color: #FFF; font-size: 13px; @@ -802,7 +835,7 @@ div#artistheader { } } -// Logs +// Logs #log_table { background-color: #FFF; th#timestamp { @@ -867,7 +900,7 @@ div#artistheader { font-size: 11px; vertical-align: middle; line-height: normal; - .gradient(#A3E532,#90CC2A); + .gradient(#A3E532,#90CC2A); } } } @@ -988,7 +1021,7 @@ div#artistheader { font-weight: 900; } } - li { + li { display: inline-block; margin: 5px 10px; } @@ -1041,7 +1074,7 @@ div#artistheader { &:after { clear: both; } } -// Table width +// Table width #album_table th#albumname, #upcoming_table th#artistname, #wanted_table th#artistname { min-width: 150px; text-align: center; diff --git a/data/interfaces/default/images/songkick.png b/data/interfaces/default/images/songkick.png new file mode 100644 index 00000000..c18e440d Binary files /dev/null and b/data/interfaces/default/images/songkick.png differ diff --git a/data/interfaces/default/images/songkick_ribon.png b/data/interfaces/default/images/songkick_ribon.png new file mode 100644 index 00000000..57ad4ccb Binary files /dev/null and b/data/interfaces/default/images/songkick_ribon.png differ diff --git a/headphones/__init__.py b/headphones/__init__.py index 7f567afc..a2178e60 100644 --- a/headphones/__init__.py +++ b/headphones/__init__.py @@ -245,6 +245,7 @@ CUSTOMPORT = None CUSTOMSLEEP = None HPUSER = None HPPASS = None +SONGKICK_APIKEY = "vDtvjogcJwz6gi6J" CACHE_SIZEMB = 32 JOURNAL_MODE = None @@ -449,11 +450,11 @@ def initialize(): NZBGET_HOST = check_setting_str(CFG, 'NZBget', 'nzbget_host', '') HEADPHONES_INDEXER = bool(check_setting_int(CFG, 'Headphones', 'headphones_indexer', 0)) - + TRANSMISSION_HOST = check_setting_str(CFG, 'Transmission', 'transmission_host', '') TRANSMISSION_USERNAME = check_setting_str(CFG, 'Transmission', 'transmission_username', '') TRANSMISSION_PASSWORD = check_setting_str(CFG, 'Transmission', 'transmission_password', '') - + UTORRENT_HOST = check_setting_str(CFG, 'uTorrent', 'utorrent_host', '') UTORRENT_USERNAME = check_setting_str(CFG, 'uTorrent', 'utorrent_username', '') UTORRENT_PASSWORD = check_setting_str(CFG, 'uTorrent', 'utorrent_password', '') @@ -592,7 +593,7 @@ def initialize(): if BLACKHOLE: NZB_DOWNLOADER = 2 CONFIG_VERSION = '4' - + # Enable Headphones Indexer if they have a VIP account if CONFIG_VERSION == '4': if HPUSER and HPPASS: @@ -706,7 +707,7 @@ def launch_browser(host, port, root): if host == '0.0.0.0': host = 'localhost' - + if ENABLE_HTTPS: protocol = 'https' else: @@ -829,7 +830,7 @@ def config_write(): new_config['Transmission']['transmission_host'] = TRANSMISSION_HOST new_config['Transmission']['transmission_username'] = TRANSMISSION_USERNAME new_config['Transmission']['transmission_password'] = TRANSMISSION_PASSWORD - + new_config['uTorrent'] = {} new_config['uTorrent']['utorrent_host'] = UTORRENT_HOST new_config['uTorrent']['utorrent_username'] = UTORRENT_USERNAME diff --git a/headphones/webserve.py b/headphones/webserve.py index 130a17b6..e98704cc 100644 --- a/headphones/webserve.py +++ b/headphones/webserve.py @@ -365,12 +365,12 @@ class WebInterface(object): # else: # original_clean = None if original_clean == albums['CleanName']: - have_dict = { 'ArtistName' : albums['ArtistName'], 'AlbumTitle' : albums['AlbumTitle'] } + have_dict = { 'ArtistName' : albums['ArtistName'], 'AlbumTitle' : albums['AlbumTitle'] } have_album_dictionary.append(have_dict) headphones_albums = myDB.select('SELECT ArtistName, AlbumTitle from albums ORDER BY ArtistName') for albums in headphones_albums: - headphones_dict = { 'ArtistName' : albums['ArtistName'], 'AlbumTitle' : albums['AlbumTitle'] } - headphones_album_dictionary.append(headphones_dict) + headphones_dict = { 'ArtistName' : albums['ArtistName'], 'AlbumTitle' : albums['AlbumTitle'] } + headphones_album_dictionary.append(headphones_dict) #unmatchedalbums = [f for f in have_album_dictionary if f not in [x for x in headphones_album_dictionary]] check = set([(cleanName(d['ArtistName']).lower(), cleanName(d['AlbumTitle']).lower()) for d in headphones_album_dictionary]) @@ -382,16 +382,16 @@ class WebInterface(object): def markUnmatched(self, action=None, existing_artist=None, existing_album=None, new_artist=None, new_album=None): myDB = db.DBConnection() - + if action == "ignoreArtist": artist = existing_artist myDB.action('UPDATE have SET Matched="Ignored" WHERE ArtistName=? AND Matched = "Failed"', [artist]) - + elif action == "ignoreAlbum": artist = existing_artist album = existing_album myDB.action('UPDATE have SET Matched="Ignored" WHERE ArtistName=? AND AlbumTitle=? AND Matched = "Failed"', (artist, album)) - + elif action == "matchArtist": existing_artist_clean = helpers.cleanName(existing_artist).lower() new_artist_clean = helpers.cleanName(new_artist).lower() @@ -464,7 +464,7 @@ class WebInterface(object): librarysync.update_album_status(album_id) else: logger.info("Artist %s / Album %s already named appropriately; nothing to modify" % (existing_artist, existing_album)) - + markUnmatched.exposed = True def manageManual(self): @@ -480,7 +480,7 @@ class WebInterface(object): elif albums['Matched'] == "Manual" or albums['CleanName'] != original_clean: album_status = "Matched" manual_dict = { 'ArtistName' : albums['ArtistName'], 'AlbumTitle' : albums['AlbumTitle'], 'AlbumStatus' : album_status } - if manual_dict not in manual_albums: + if manual_dict not in manual_albums: manual_albums.append(manual_dict) manual_albums_sorted = sorted(manual_albums, key=itemgetter('ArtistName', 'AlbumTitle')) @@ -755,7 +755,7 @@ class WebInterface(object): album_json[counter] = album['AlbumTitle'] counter+=1 json_albums = json.dumps(album_json) - + cherrypy.response.headers['Content-type'] = 'application/json' return json_albums getAlbumsByArtist_json.exposed=True @@ -949,6 +949,7 @@ class WebInterface(object): "customsleep": headphones.CUSTOMSLEEP, "hpuser": headphones.HPUSER, "hppass": headphones.HPPASS, + "songkick_apikey": headphones.SONGKICK_APIKEY, "cache_sizemb": headphones.CACHE_SIZEMB, "file_permissions": headphones.FILE_PERMISSIONS, "folder_permissions": headphones.FOLDER_PERMISSIONS @@ -973,9 +974,9 @@ class WebInterface(object): def configUpdate(self, http_host='0.0.0.0', http_username=None, http_port=8181, http_password=None, launch_browser=0, api_enabled=0, api_key=None, download_scan_interval=None, update_db_interval=None, mb_ignore_age=None, nzb_search_interval=None, libraryscan_interval=None, sab_host=None, sab_username=None, sab_apikey=None, sab_password=None, - sab_category=None, nzbget_host=None, nzbget_username=None, nzbget_password=None, nzbget_category=None, transmission_host=None, transmission_username=None, transmission_password=None, - utorrent_host=None, utorrent_username=None, utorrent_password=None, nzb_downloader=0, torrent_downloader=0, download_dir=None, blackhole_dir=None, usenet_retention=None, - use_headphones_indexer=0, newznab=0, newznab_host=None, newznab_apikey=None, newznab_enabled=0, nzbsorg=0, nzbsorg_uid=None, nzbsorg_hash=None, nzbsrus=0, nzbsrus_uid=None, nzbsrus_apikey=None, omgwtfnzbs=0, omgwtfnzbs_uid=None, omgwtfnzbs_apikey=None, + sab_category=None, nzbget_host=None, nzbget_username=None, nzbget_password=None, nzbget_category=None, transmission_host=None, transmission_username=None, transmission_password=None, + utorrent_host=None, utorrent_username=None, utorrent_password=None, nzb_downloader=0, torrent_downloader=0, download_dir=None, blackhole_dir=None, usenet_retention=None, + use_headphones_indexer=0, newznab=0, newznab_host=None, newznab_apikey=None, newznab_enabled=0, nzbsorg=0, nzbsorg_uid=None, nzbsorg_hash=None, nzbsrus=0, nzbsrus_uid=None, nzbsrus_apikey=None, omgwtfnzbs=0, omgwtfnzbs_uid=None, omgwtfnzbs_apikey=None, preferred_words=None, required_words=None, ignored_words=None, preferred_quality=0, preferred_bitrate=None, detect_bitrate=0, move_files=0, torrentblackhole_dir=None, download_torrent_dir=None, numberofseeders=None, use_piratebay=0, piratebay_proxy_url=None, use_isohunt=0, use_kat=0, use_mininova=0, waffles=0, waffles_uid=None, waffles_passkey=None, whatcd=0, whatcd_username=None, whatcd_password=None, rutracker=0, rutracker_user=None, rutracker_password=None, rename_files=0, correct_metadata=0, cleanup_files=0, add_album_art=0, album_art_format=None, embed_album_art=0, embed_lyrics=0, @@ -985,7 +986,7 @@ class WebInterface(object): delete_lossless_files=0, prowl_enabled=0, prowl_onsnatch=0, prowl_keys=None, prowl_priority=0, xbmc_enabled=0, xbmc_host=None, xbmc_username=None, xbmc_password=None, xbmc_update=0, xbmc_notify=0, nma_enabled=False, nma_apikey=None, nma_priority=0, nma_onsnatch=0, synoindex_enabled=False, pushover_enabled=0, pushover_onsnatch=0, pushover_keys=None, pushover_priority=0, mirror=None, customhost=None, customport=None, - customsleep=None, hpuser=None, hppass=None, preferred_bitrate_high_buffer=None, preferred_bitrate_low_buffer=None, preferred_bitrate_allow_lossless=0, cache_sizemb=None, + customsleep=None, hpuser=None, hppass=None, songkick_apikey=None, preferred_bitrate_high_buffer=None, preferred_bitrate_low_buffer=None, preferred_bitrate_allow_lossless=0, cache_sizemb=None, enable_https=0, https_cert=None, https_key=None, file_permissions=None, folder_permissions=None, **kwargs): headphones.HTTP_HOST = http_host @@ -1120,6 +1121,7 @@ class WebInterface(object): headphones.CUSTOMSLEEP = customsleep headphones.HPUSER = hpuser headphones.HPPASS = hppass + headphones.SONGKICK_APIKEY = songkick_apikey headphones.CACHE_SIZEMB = int(cache_sizemb) headphones.FILE_PERMISSIONS = file_permissions headphones.FOLDER_PERMISSIONS = folder_permissions