Fixed some merge conflicts with the songkick merge from maiis

This commit is contained in:
rembo10
2014-02-27 18:24:47 -08:00
10 changed files with 502 additions and 194 deletions
+50 -15
View File
@@ -33,7 +33,7 @@
</form>
</div>
</div>
</div>
</div>
<a href="home" class="back">&laquo; Back to overview</a>
</%def>
@@ -49,13 +49,14 @@
<a href="http://musicbrainz.org/artist/${artist['ArtistID']}">${artist['ArtistName']}</a>
%if artist['Status'] == 'Loading':
<h3><i>(Album information for this artist is currently being loaded)</i></h3>
%endif
%endif
</h1>
<div id="artistBio"></div>
<div id="artistBio"></div>
</div>
<ul id="artistCalendar" style="display:none;"></ul>
<form action="markAlbums" method="get" id="markAlbums">
<input type="hidden" name="ArtistID" value=${artist['ArtistID']}>
<div id="markalbum">Mark selected albums as
<div id="markalbum">Mark selected albums as
<select name="action" onChange="doAjaxCall('markAlbums',$(this),'table',true);" data-error="You didn't select any albums">
<option disabled="disabled" selected="selected">Choose...</option>
<option value="Wanted">Wanted</option>
@@ -91,10 +92,10 @@
else:
grade = 'A'
myDB = db.DBConnection()
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 ? AND Matched = "Failed"', [album['ArtistName'], album['AlbumTitle']]))
try:
percent = (havetracks*100.0)/totaltracks
if percent > 100:
@@ -102,7 +103,7 @@
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'
@@ -143,7 +144,7 @@
<td id="have"><span title="${percent}"><span><div class="progress-container"><div style="width:${percent}%"><div class="havetracks">${havetracks}/${totaltracks}</div></div></div></td>
<td id="bitrate">${bitrate}</td>
<td id="albumformat">${albumformat}</td>
</tr>
</tr>
%endfor
</tbody>
</table>
@@ -159,7 +160,7 @@
<%def name="javascriptIncludes()">
<script src="js/libs/jquery.dataTables.min.js"></script>
<script>
function getArtistBio() {
var id = "${artist['ArtistID']}";
@@ -167,7 +168,40 @@
getInfo(elem,id,'artist');
}
function getArtistsCalendar() {
var template, calendarDomNode;
calendarDomNode = $("#artistCalendar");
template = '<li><a target="_blank" href="URI"><span class="sk-name">NAME</span><span class="sk-location">LOC</span></a></li>';
$.getJSON("http://api.songkick.com/api/3.0/artists/mbid:${artist['ArtistID']}/calendar.json?apikey=${headphones.SONGKICK_APIKEY}&jsoncallback=?",
function(data){
if (data['resultsPage'].totalEntries >= 1) {
var tourDate;
calendarDomNode.show();
$("#artistImg").addClass('on-tour');
jQuery.each( data['resultsPage'].results.event, function( i, event ) {
tourDate = template;
tourDate = tourDate.replace('URI',event.uri);
tourDate = tourDate.replace('NAME',event.displayName);
tourDate = tourDate.replace('LOC',event.location.city);
calendarDomNode.append(tourDate);
});
calendarDomNode.append('<li><img src="interfaces/default/images/songkick.png" alt="concerts by songkick" class="sk-logo" /></li>');
}
console.warn(data);
console.warn(data['resultsPage'].totalEntries);
// data is JSON response object
});
}
function initThisPage() {
$('#menu_link_getextra').click(function() {
$('#dialog').dialog();
@@ -176,7 +210,7 @@
$('#menu_link_modifyextra').click(function() {
$('#dialog').dialog();
});
%if artist['Status'] == 'Loading':
showMsg("Getting artist information",true);
%endif
@@ -195,7 +229,7 @@
],
"aoColumnDefs": [
{ 'bSortable': false, 'aTargets': [ 0,1 ] }
],
],
"oLanguage": {
"sLengthMenu":"Show _MENU_ albums per page",
"sEmptyTable": "No album information available",
@@ -206,17 +240,18 @@
"bPaginate": false,
"aaSorting": [[4, 'asc'],[3,'desc']]
});
});
resetFilters("albums");
setTimeout(function(){
initFancybox();
},1500)
}
$(document).ready(function() {
$(document).ready(function() {
initActions();
initThisPage();
getArtistBio();
getArtistsCalendar();
});
</script>
+277
View File
@@ -0,0 +1,277 @@
<%inherit file="base.html"/>
<%!
from headphones import db
import headphones
import string
%>
<%def name="headerIncludes()">
<div id="subhead_container">
<<<<<<< HEAD
<div id="subhead_menu">
<a id="menu_link_refresh" onclick="doAjaxCall('refreshArtist?ArtistID=${artist['ArtistID']}', $(this)),'table'" href="#" data-success="'${artist['ArtistName']}' is being refreshed">Refresh Artist</a>
<a id="menu_link_delete" href="deleteArtist?ArtistID=${artist['ArtistID']}">Delete Artist</a>
=======
<div id="subhead_menu">
<a id="menu_link_refresh" onclick="doAjaxCall('refreshArtist?ArtistID=${artist['ArtistID']}', $(this)),'table'" href="#" data-success="'${artist['ArtistName']}' is being refreshed"><i class="fa fa-refresh"></i> Refresh Artist</a>
<a id="menu_link_delete" href="deleteArtist?ArtistID=${artist['ArtistID']}"><i class="fa fa-trash-o"></i> Delete Artist</a>
>>>>>>> 1c9f323... convert all icons to font-awesome vector based / retina compatible icons
%if artist['Status'] == 'Paused':
<a id="menu_link_resume" href="#" onclick="doAjaxCall('resumeArtist?ArtistID=${artist['ArtistID']}',$(this),true)" data-success="${artist['ArtistName']} resumed"><i class="fa fa-play"></i> Resume Artist</a>
%else:
<a id="menu_link_pauze" href="#" onclick="doAjaxCall('pauseArtist?ArtistID=${artist['ArtistID']}',$(this),true)" data-success="${artist['ArtistName']} paused"><i class="fa fa-pause"></i> Pause Artist</a>
%endif
%if artist['IncludeExtras']:
<<<<<<< HEAD
<a id="menu_link_removeextra" href="#" onclick="doAjaxCall('removeExtras?ArtistID=${artist['ArtistID']}',$(this),true)" data-success="Extras removed for ${artist['ArtistName']}">Remove Extras</a>
<a class="menu_link_edit" id="menu_link_modifyextra" href="#">Modify Extras</a>
%else:
<a id="menu_link_getextra" href="#">Get Extras</a>
=======
<a id="menu_link_removeextra" href="#" onclick="doAjaxCall('removeExtras?ArtistID=${artist['ArtistID']}',$(this),true)" data-success="Extras removed for ${artist['ArtistName']}"><i class="fa fa-minus"></i> Remove Extras</a>
<a class="menu_link_edit" id="menu_link_modifyextra" href="#"><i class="fa fa-pencil"></i> Modify Extras</a>
%else:
<a id="menu_link_getextra" href="#"><i class="fa fa-plus"></i> Get Extras</a>
>>>>>>> 1c9f323... convert all icons to font-awesome vector based / retina compatible icons
%endif
<div id="dialog" title="Choose Which Extras to Fetch" style="display:none" class="configtable">
<form action="getExtras" method="get" class="form">
<input type="hidden" name="ArtistID" value="${artist['ArtistID']}">
<input type="hidden" name="newstyle" value="true">
%for extra in extras:
<input type="checkbox" id="${extra}" name="${extra}" value="1" ${extras[extra]} />${string.capwords(extra)}<br>
%endfor
<br>
<input id="submit" type="submit" value="Fetch Extras">
</form>
</div>
</div>
</div>
<a href="home" class="back">&laquo; Back to overview</a>
</%def>
<%def name="body()">
<div id="artistheader" class="clearfix">
<div id="artistImg">
<img id="artistImage" class="albumArt" alt="" src="artwork/artist/${artist['ArtistID']}"/>
</div>
<<<<<<< HEAD
<h1>
%if artist['Status'] == 'Loading':
<img src="interfaces/default/images/loader_black.gif" alt="loading" style="float:left; margin-right: 5px;"/>
=======
<h1>
%if artist['Status'] == 'Loading':
<i class="fa fa-refresh fa-spin"></i>
>>>>>>> 1c9f323... convert all icons to font-awesome vector based / retina compatible icons
%endif
<a href="http://musicbrainz.org/artist/${artist['ArtistID']}">${artist['ArtistName']}</a>
%if artist['Status'] == 'Loading':
<h3><i>(Album information for this artist is currently being loaded)</i></h3>
%endif
</h1>
<div id="artistBio"></div>
</div>
<ul id="artistCalendar" style="display:none;"></ul>
<form action="markAlbums" method="get" id="markAlbums">
<input type="hidden" name="ArtistID" value=${artist['ArtistID']}>
<div id="markalbum">Mark selected albums as
<select name="action" onChange="doAjaxCall('markAlbums',$(this),'table',true);" data-error="You didn't select any albums">
<option disabled="disabled" selected="selected">Choose...</option>
<option value="Wanted">Wanted</option>
<option value="WantedNew">Wanted (new only)</option>
<option value="Skipped">Skipped</option>
<option value="Downloaded">Downloaded</option>
</select>
<input type="hidden" value="Go">
</div>
<table class="display" id="album_table">
<thead>
<tr>
<th id="select"><input type="checkbox" onClick="toggle(this)" /></th>
<th id="albumart"></th>
<th id="albumname">Name</th>
<th id="reldate">Date</th>
<th id="type">Type</th>
<th id="status">Status</th>
<th id="have">Have</th>
<th id="bitrate">Bitrate</th>
<th id="albumformat">Format</th>
</tr>
</thead>
<tbody>
%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 ? AND Matched = "Failed"', [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 = ''
albumformatcount = myDB.action("SELECT COUNT(DISTINCT Format) FROM tracks WHERE AlbumID=?", [album['AlbumID']]).fetchone()[0]
if albumformatcount == 1:
albumformat = myDB.action("SELECT DISTINCT Format FROM tracks WHERE AlbumID=?", [album['AlbumID']]).fetchone()[0]
elif albumformatcount > 1:
albumformat = 'Mixed'
else:
albumformat = ''
lossy_formats = [str.upper(fmt) for fmt in headphones.LOSSY_MEDIA_FORMATS]
%>
<tr class="grade${grade}">
<td id="select"><input type="checkbox" name="${album['AlbumID']}" class="checkbox" /></td>
<td id="albumart"><img class="albumArt" id="${album['AlbumID']}" src="artwork/thumbs/album/${album['AlbumID']}" height="64" width="64"></td>
<td id="albumname"><a href="albumPage?AlbumID=${album['AlbumID']}">${album['AlbumTitle']}</a></td>
<td id="reldate">${album['ReleaseDate']}</td>
<td id="type">${album['Type']}</td>
<td id="status">${album['Status']}
%if album['Status'] == 'Skipped':
[<a href="#" onclick="doAjaxCall('queueAlbum?AlbumID=${album['AlbumID']}&ArtistID=${album['ArtistID']}',$(this),'table')" data-success="'${album['AlbumTitle']}' added to Wanted list">want</a>]
%elif (album['Status'] == 'Wanted' or album['Status'] == 'Wanted Lossless'):
[<a href="#" onclick="doAjaxCall('unqueueAlbum?AlbumID=${album['AlbumID']}&ArtistID=${album['ArtistID']}',$(this),'table')" data-success="'${album['AlbumTitle']}' skipped">skip</a>]
%else:
[<a href="#" onclick="doAjaxCall('queueAlbum?AlbumID=${album['AlbumID']}&ArtistID=${album['ArtistID']}', $(this),'table')" data-success="Retrying the same version of '${album['AlbumTitle']}'" title="Retry the same download again">retry</a>][<a href="#" onclick="doAjaxCall('queueAlbum?AlbumID=${album['AlbumID']}&ArtistID=${album['ArtistID']}&new=True', $(this),'table')" title="Try a new download, skipping all previously tried nzbs" data-success="Downloading new version for '${album['AlbumTitle']}'" data-success="Looking for a new version of '${album['AlbumTitle']}'">new</a>]
%endif
%if albumformat in lossy_formats and album['Status'] == 'Skipped':
[<a id="wantlossless" href="#" onclick="doAjaxCall('queueAlbum?AlbumID=${album['AlbumID']}&ArtistID=${album['ArtistID']}&lossless=True', $(this),'table')" data-success="Lossless version of '${album['AlbumTitle']}' added to queue">want lossless</a>]
%elif albumformat in lossy_formats and (album['Status'] == 'Snatched' or album['Status'] == 'Downloaded'):
[<a id="wantlossless" href="#" onclick="doAjaxCall('queueAlbum?AlbumID=${album['AlbumID']}&ArtistID=${album['ArtistID']}&lossless=True', $(this),'table')" data-success="Retrying the same lossless version of '${album['AlbumTitle']}'">retry lossless</a>]
%endif
</td>
<td id="have"><span title="${percent}"><span><div class="progress-container"><div style="width:${percent}%"><div class="havetracks">${havetracks}/${totaltracks}</div></div></div></td>
<td id="bitrate">${bitrate}</td>
<td id="albumformat">${albumformat}</td>
</tr>
%endfor
</tbody>
</table>
</form>
</%def>
<%def name="headIncludes()">
<link rel="stylesheet" href="interfaces/default/css/data_table.css">
%if artist['Status'] == 'Loading':
<meta http-equiv="refresh" content="5">
%endif
</%def>
<%def name="javascriptIncludes()">
<script src="js/libs/jquery.dataTables.min.js"></script>
<script>
function getArtistBio() {
var id = "${artist['ArtistID']}";
var elem = $("#artistBio");
getInfo(elem,id,'artist');
}
function getArtistsCalendar() {
var template, calendarDomNode;
calendarDomNode = $("#artistCalendar");
template = '<li><a target="_blank" href="URI"><span class="sk-name">NAME</span><span class="sk-location">LOC</span></a></li>';
$.getJSON("http://api.songkick.com/api/3.0/artists/mbid:${artist['ArtistID']}/calendar.json?apikey=${headphones.SONGKICK_APIKEY}&jsoncallback=?",
function(data){
if (data['resultsPage'].totalEntries >= 1) {
var tourDate;
calendarDomNode.show();
$("#artistImg").addClass('on-tour');
jQuery.each( data['resultsPage'].results.event, function( i, event ) {
tourDate = template;
tourDate = tourDate.replace('URI',event.uri);
tourDate = tourDate.replace('NAME',event.displayName);
tourDate = tourDate.replace('LOC',event.location.city);
calendarDomNode.append(tourDate);
});
calendarDomNode.append('<li><img src="interfaces/default/images/songkick.png" alt="concerts by songkick" class="sk-logo" /></li>');
}
console.warn(data);
console.warn(data['resultsPage'].totalEntries);
// data is JSON response object
});
}
function initThisPage() {
$('#menu_link_getextra').click(function() {
$('#dialog').dialog();
return false;
});
$('#menu_link_modifyextra').click(function() {
$('#dialog').dialog();
});
%if artist['Status'] == 'Loading':
showMsg("Getting artist information",true);
%endif
$('#album_table').dataTable({
"bDestroy": true,
"aoColumns": [
null,
null,
null,
{ "sType": "date" },
null,
null,
{ "sType": "title-numeric"},
null,
null
],
"aoColumnDefs": [
{ 'bSortable': false, 'aTargets': [ 0,1 ] }
],
"oLanguage": {
"sLengthMenu":"Show _MENU_ albums per page",
"sEmptyTable": "No album information available",
"sInfo":"Showing _TOTAL_ albums",
"sInfoEmpty":"Showing 0 to 0 of 0 albums",
"sInfoFiltered":"(filtered from _MAX_ total albums)",
"sSearch": ""},
"bPaginate": false,
"aaSorting": [[4, 'asc'],[3,'desc']]
});
resetFilters("albums");
setTimeout(function(){
initFancybox();
},1500)
}
$(document).ready(function() {
initActions();
initThisPage();
getArtistBio();
getArtistsCalendar();
});
</script>
</%def>
+11 -3
View File
@@ -674,7 +674,7 @@
</div>
</fieldset>
</div>
<div id="xldproperties">
<div class="row">
<label>XLD Profile</label>
@@ -758,7 +758,7 @@
<input type="text" name="cache_dir" value="${config['cache_dir']}" size="50">
</div>
</fieldset>
<h2>Notifications</h2>
<fieldset>
<h3>Prowl</h3>
@@ -858,7 +858,7 @@
nma_priority_selected = 'selected'
else:
nma_priority_selected = ''
if x == -2:
nma_priority_value = 'Very Low'
elif x == -1:
@@ -978,6 +978,14 @@
</div>
</fieldset>
<fieldset>
<legend>Songkick</legend>
<div class="row">
<label>API Key:</label>
<input type="text" name="songkick_apikey" value="${config['songkick_apikey']}" size="50">
</div>
</fieldset>
</td>
</tr>
</table>
+74 -120
View File
@@ -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;
}
+56 -23
View File
@@ -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;
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB