From 4b701f5a27f5fe8fc388f2a93b29894866d1a8aa Mon Sep 17 00:00:00 2001 From: Remy Date: Tue, 9 Aug 2011 21:03:23 -0700 Subject: [PATCH] Added a sample template --- data/interfaces/remix/album.html | 105 ++++++++ data/interfaces/remix/artist.html | 127 ++++++++++ data/interfaces/remix/base.html | 101 ++++++++ data/interfaces/remix/config.html | 265 ++++++++++++++++++++ data/interfaces/remix/extras.html | 13 + data/interfaces/remix/history.html | 79 ++++++ data/interfaces/remix/index.html | 86 +++++++ data/interfaces/remix/logs.html | 60 +++++ data/interfaces/remix/manage.html | 57 +++++ data/interfaces/remix/searchresults.html | 70 ++++++ data/interfaces/remix/shutdown.html | 13 + data/interfaces/remix/style.css | 298 +++++++++++++++++++++++ data/interfaces/remix/upcoming.html | 86 +++++++ 13 files changed, 1360 insertions(+) create mode 100644 data/interfaces/remix/album.html create mode 100644 data/interfaces/remix/artist.html create mode 100755 data/interfaces/remix/base.html create mode 100644 data/interfaces/remix/config.html create mode 100644 data/interfaces/remix/extras.html create mode 100644 data/interfaces/remix/history.html create mode 100644 data/interfaces/remix/index.html create mode 100644 data/interfaces/remix/logs.html create mode 100644 data/interfaces/remix/manage.html create mode 100644 data/interfaces/remix/searchresults.html create mode 100644 data/interfaces/remix/shutdown.html create mode 100755 data/interfaces/remix/style.css create mode 100644 data/interfaces/remix/upcoming.html diff --git a/data/interfaces/remix/album.html b/data/interfaces/remix/album.html new file mode 100644 index 00000000..2308f32b --- /dev/null +++ b/data/interfaces/remix/album.html @@ -0,0 +1,105 @@ +<%inherit file="base.html" /> +<%! + from headphones import db, helpers + myDB = db.DBConnection() +%> + +<%def name="headerIncludes()"> +
+ +
+ + +<%def name="body()"> +
+

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

+
+ albumart +

${album['AlbumTitle']}

+

${album['ArtistName']}

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

Tracks: ${totaltracks}

+

Duration: ${albumduration}

+ %if description: +

Description:

+ ${description['Summary']} + %endif +
+
+ + + + + + + + + + + <% + i = 0 + %> + %for track in tracks: + <% + i += 1 + have = myDB.select('SELECT TrackTitle from have WHERE ArtistName like ? AND AlbumTitle like ? AND TrackTitle like ?', [track['ArtistName'], track['AlbumTitle'], track['TrackTitle']]) + if len(have): + grade = 'A' + check = 'checkmark' + else: + grade = 'Z' + check = '' + try: + trackduration = helpers.convert_milliseconds(track['TrackDuration']) + except: + trackduration = 'n/a' + %> + + + + + + + %endfor + +
#Track TitleDuration
${i}${track['TrackTitle']}${trackduration}${check}
+
+
+ + +<%def name="headIncludes()"> + + + +<%def name="javascriptIncludes()"> + + + \ No newline at end of file diff --git a/data/interfaces/remix/artist.html b/data/interfaces/remix/artist.html new file mode 100644 index 00000000..9ded40dc --- /dev/null +++ b/data/interfaces/remix/artist.html @@ -0,0 +1,127 @@ +<%inherit file="base.html"/> +<%! + from headphones import db +%> + +<%def name="headerIncludes()"> +
+ +
+ + +<%def name="body()"> +
+

${artist['ArtistName']}

+

+
+

Mark selected albums as + + +

+ + + + + + + + + + + + + + %for album in albums: + <% + if album['Status'] == 'Skipped': + grade = 'Z' + elif album['Status'] == 'Wanted': + grade = 'X' + elif album['Status'] == 'Snatched': + grade = 'C' + else: + grade = 'A' + + myDB = db.DBConnection() + totaltracks = len(myDB.select('SELECT TrackTitle from tracks WHERE AlbumID=?', [album['AlbumID']])) + havetracks = len(myDB.select('SELECT TrackTitle from have WHERE ArtistName like ? AND AlbumTitle like ?', [album['ArtistName'], album['AlbumTitle']])) + + try: + percent = (havetracks*100.0)/totaltracks + if percent > 100: + percent = 100 + except (ZeroDivisionError, TypeError): + percent = 0 + totaltracks = '?' + + %> + + + + + + + + + %endfor + +
Album NameRelease DateRelease TypeStatusHave
+ ${album['AlbumTitle']}${album['ReleaseDate']}${album['Type']}${album['Status']} + %if album['Status'] == 'Skipped': + [want] + %elif album['Status'] == 'Wanted': + [skip] + %else: + [retry][new] + %endif +
${havetracks}/${totaltracks}
+
+ + +<%def name="headIncludes()"> + + + +<%def name="javascriptIncludes()"> + + + \ No newline at end of file diff --git a/data/interfaces/remix/base.html b/data/interfaces/remix/base.html new file mode 100755 index 00000000..6a218b97 --- /dev/null +++ b/data/interfaces/remix/base.html @@ -0,0 +1,101 @@ +<% + import headphones +%> + + + + + + + + + + + Headphones::Remix - ${title} + + + + + + + + + ${next.headIncludes()} + + + + +
+
+ % if not headphones.CURRENT_VERSION: +
+ You're running an unknown version of Headphones. Click here to update +
+ % elif headphones.CURRENT_VERSION != headphones.LATEST_VERSION and headphones.INSTALL_TYPE != 'win': +
+ A newer version is available. You're ${headphones.COMMITS_BEHIND} commits behind. Click here to update +
+ % endif + + + +
+ ${next.headerIncludes()} +
+
+ +
+ ${next.body()} +
+ +
+
+ Version: ${headphones.CURRENT_VERSION} +
+ +
+
+ + + + ${next.javascriptIncludes()} + + + + + + + + +<%def name="javascriptIncludes()"> +<%def name="headIncludes()"> +<%def name="headerIncludes()"> \ No newline at end of file diff --git a/data/interfaces/remix/config.html b/data/interfaces/remix/config.html new file mode 100644 index 00000000..5f4aa2da --- /dev/null +++ b/data/interfaces/remix/config.html @@ -0,0 +1,265 @@ +<%inherit file="base.html"/> +<%! + import headphones +%> + +<%def name="headerIncludes()"> +
+ +
+ +<%def name="body()"> +
+

+

+
+
+

Web Interface

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

HTTP Host:

+
+ i.e. localhost or 0.0.0.0 +
+

HTTP Username:

+ +
+

HTTP Port:

+ +
+

HTTP Password:

+ +
+

Launch Browser on Startup:

+
+
+
+

Download Settings

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

SABnzbd Host:


+ + usually localhost:8080 +
+

SABnzbd Username:

+
+

SABnzbd API:

+
+

SABnzbd Password:

+
+

SABnzbd Category:

+
+

Music Download Directory:


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

Use Black Hole:

+
+

Black Hole Directory:


+ + Folder your Download program watches for NZBs +
+

Usenet Retention:

+
+
+
+

Search Providers

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

NZBMatrix:

+
+

NZBMatrix Username:

+ +
+

NZBMatrix API:

+ +
+

Newznab:

+
+

Newznab Host:

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

Newznab API:

+ +
+

NZBs.org:

+
+ +

NZBs.org UID:

+ + +
+ +

NZBs.org Hash:

+ + +
+

Newzbin:

+
+

Newzbin UID:

+ + +
+

Newzbin Password:

+ +
+
+
+

Quality & Post Processing

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

Album Quality:


+ Highest Quality excluding Lossless
+ Highest Quality including Lossless
+ Lossless Only
+ Preferred Bitrate: + kbps
+ Auto-Detect Preferred Bitrate +
+

Post-Processing:

+ Move downloads to Destination Folder
+ Rename files
+ Correct metadata
+ Delete leftover files (.m3u, .nfo, .sfv, .nzb, etc.)
+ Add album art as 'folder.jpg' to album folder
+ Embed album art in each file +
+
+ +

Path to Destination folder:

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

Advanced Settings

+ + + + + + +
+

Renaming Options:

+
+

Folder Format:

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

+

File Format:

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

Miscellaneous:

+
+

Automatically Include Extras When Adding an Artist

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

+

Interface: +

+

Log Directory:

+
+
+ +


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

+

Artists You Might Like

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

Scan Music Library


+ Where do you keep your music?

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

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

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

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

Import Last.FM Artists


+ Enter the username whose artists you want to import:

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


+
+ +
+

Placeholder :-)


+

+
+ +


+
+ +
+

Force Search


+

Force Check for Wanted Albums

+

Force Update Active Artists

+

Force Post-Process Albums in Download Folder



+

Check for Headphones Updates

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

Search Results

+

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

Headphones is ${message}

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

Upcoming Albums

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

Mark selected albums as + + +

+
+

Wanted Albums

+ + + + + + + + + + + + + %for album in wanted: + + + + + + + + %endfor + +
ArtistAlbum NameRelease DateType
+ ${album['ArtistName']}${album['AlbumTitle']}${album['ReleaseDate']}${album['Type']}
+ +
+ + +<%def name="headIncludes()"> + + + +<%def name="javascriptIncludes()"> + + + \ No newline at end of file