Mark selected albums as
+
Mark selected albums as
-
+
+
+
diff --git a/data/interfaces/default/css/style.css b/data/interfaces/default/css/style.css
index 6e5be0fd..82c3d066 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;
}
@@ -878,6 +819,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;
@@ -894,6 +847,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;
@@ -918,24 +887,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;
}
@@ -944,13 +905,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;
@@ -1183,8 +1142,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;
@@ -1195,13 +1154,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 {
@@ -1363,7 +1322,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;
@@ -1386,7 +1344,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,
@@ -1493,6 +1450,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 a5063d14..c9e1b19c 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;
}
}
}
@@ -502,7 +502,7 @@ div#searchbar {
}
}
-// TABLES
+// TABLES
// wrappers
.table_wrapper {
@@ -531,8 +531,8 @@ div#searchbar {
h1 {
line-height: 33px;
width: 450px;
- img {
- float:left;
+ img {
+ float:left;
margin-right: 5px;
}
}
@@ -543,7 +543,7 @@ div#nopaddingheader {
text-align: center;
}
-// Artist
+// Artist
div#artistheader {
margin-top: 50px;
min-height: 200px;
@@ -558,12 +558,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;
@@ -580,6 +594,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;
@@ -623,7 +656,7 @@ div#artistheader {
text-align: left;
vertical-align: middle;
}
- td#album {
+ td#album {
min-width: 300px;
text-align: left;
vertical-align: middle;
@@ -636,7 +669,7 @@ div#artistheader {
display: inline-block;
}
-// Album
+// Album
#albumheader {
margin-top: 50px;
min-height: 200px;
@@ -731,7 +764,7 @@ div#artistheader {
}
}
-// Manage
+// Manage
#manageheader {
margin-top: 45px;
margin-bottom: 0;
@@ -775,7 +808,7 @@ div#artistheader {
}
}
-// History
+// History
#history_table {
background-color: #FFF;
font-size: 13px;
@@ -800,7 +833,7 @@ div#artistheader {
}
}
-// Logs
+// Logs
#log_table {
background-color: #FFF;
th#timestamp {
@@ -865,7 +898,7 @@ div#artistheader {
font-size: 11px;
vertical-align: middle;
line-height: normal;
- .gradient(#A3E532,#90CC2A);
+ .gradient(#A3E532,#90CC2A);
}
}
}
@@ -986,7 +1019,7 @@ div#artistheader {
font-weight: 900;
}
}
- li {
+ li {
display: inline-block;
margin: 5px 10px;
}
@@ -1039,7 +1072,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 fcd7af90..1a594bd6 100644
--- a/headphones/__init__.py
+++ b/headphones/__init__.py
@@ -261,6 +261,7 @@ CUSTOMPORT = None
CUSTOMSLEEP = None
HPUSER = None
HPPASS = None
+SONGKICK_APIKEY = "nd1We7dFW2RqxPw8"
CACHE_SIZEMB = 32
JOURNAL_MODE = None
@@ -473,11 +474,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', '')
@@ -634,7 +635,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:
@@ -748,7 +749,7 @@ def launch_browser(host, port, root):
if host == '0.0.0.0':
host = 'localhost'
-
+
if ENABLE_HTTPS:
protocol = 'https'
else:
@@ -872,7 +873,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 6c5161da..65c4310f 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
@@ -961,6 +961,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,
@@ -986,9 +987,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,
@@ -1000,7 +1001,7 @@ class WebInterface(object):
pushover_enabled=0, pushover_onsnatch=0, pushover_keys=None, pushover_priority=0, twitter_enabled=0, twitter_onsnatch=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,
enable_https=0, https_cert=None, https_key=None, file_permissions=None, folder_permissions=None, plex_enabled=0, plex_server_host=None, plex_client_host=None, plex_username=None,
- plex_password=None, plex_update=0, plex_notify=0, post_processing_dir=None, **kwargs):
+ plex_password=None, plex_update=0, plex_notify=0, post_processing_dir=None, songkick_apikey=None, **kwargs):
headphones.HTTP_HOST = http_host
headphones.HTTP_PORT = http_port
@@ -1146,10 +1147,11 @@ 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
- headphones.POST_PROCESSING_DIR = post_processing_dir
+ headphones.POST_PROCESSING_DIR = post_processing_dir
# Handle the variable config options. Note - keys with False values aren't getting passed