%PDF- %PDF-
| Direktori : /home/waritko/subsonic/ROOT/WEB-INF/jsp/ |
| Current File : //home/waritko/subsonic/ROOT/WEB-INF/jsp/artists.jsp |
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="iso-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<%@ include file="head.jsp" %>
<%@ include file="jquery.jsp" %>
<script type="text/javascript" src="<c:url value="/dwr/engine.js"/>"></script>
<script type="text/javascript" src="<c:url value="/dwr/interface/multiService.js"/>"></script>
<script type="text/javascript" src="<c:url value="/dwr/interface/starService.js"/>"></script>
<style type="text/css">
.browse-index-shortcut {
padding-bottom: 8px;
font-size: 105%;
line-height: 100%;
font-weight: 300;
}
.browse-index-title {
clear: both;
font-size: 4em;
line-height: 100%;
padding-top: 20px;
padding-bottom: 5px;
}
.browse-artist {
float: left;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
width: 12em;
padding: 0.2em 1.5em 0.2em 1.5em;
font-weight: 300;
}
</style>
<script type="text/javascript" language="javascript">
function changeMusicFolder(musicFolderId) {
multiService.setSelectedMusicFolder(musicFolderId, function() {
location.href = "artists.view";
<c:if test="${model.showIndexInSideBar}">
top.left.location.href = top.left.location.href;
</c:if>
});
}
function filterArtists(element) {
var filter = $(element).val().toLowerCase();
$(".browse-artist").each(function() {
var artist = $(this).text().toLowerCase();
$(this).toggle(artist.indexOf(filter) != -1);
});
$(".browse-index-title").each(function() {
var show = $(this).nextUntil(".browse-index-title", ".browse-artist:visible").length > 0;
$(this).toggle(show);
});
}
function toggleStar(mediaFileId, element) {
starService.star(mediaFileId, !$(element).hasClass("fa-star"));
$(element).toggleClass("fa-star fa-star-o starred");
}
</script>
</head>
<body class="bgcolor1 mainframe">
<a name="top"></a>
<div style="display:flex; align-items:center">
<h1 style="flex:1"><i class="fa fa-sort-alpha-asc icon"></i> <fmt:message key="top.artists"/></h1>
<span style="margin-right:3em">
<c:choose>
<c:when test="${model.scanning}">
<i class="fa fa-refresh fa-fw icon"></i> <a href="artists.view"><fmt:message key="common.refresh"/></a>
</c:when>
<c:otherwise>
<i class="fa fa-refresh fa-fw icon"></i> <a href="artists.view?refresh=true"><fmt:message key="common.refresh"/></a>
</c:otherwise>
</c:choose>
</span>
<input style="margin-right:3em; flex-shrink:1; width:180px" type="text" placeholder="<fmt:message key="common.filter"/>" onclick="select();" onkeyup="filterArtists(this)">
</div>
<div style="clear:both; position:fixed; top:0; right:0; padding:1.25em 0.75em 0.25em 0.75em; text-align:center">
<div class="browse-index-shortcut"><i class="fa fa-arrow-up fa-fw icon clickable" onclick="location.href='#top'"></i></div>
<c:forEach items="${model.indexes}" var="index">
<div class="browse-index-shortcut"><a href="#${index.index}">${index.index}</a></div>
</c:forEach>
</div>
<c:if test="${fn:length(model.musicFolders) > 1}">
<h2>
<span class="${empty model.selectedMusicFolder ? 'headerSelected' : 'header'}"><a href="#" onclick="changeMusicFolder(-1)"><fmt:message key="left.allfolders"/></a></span>
<c:forEach items="${model.musicFolders}" var="musicFolder" varStatus="loopStatus">
|
<span class="${model.selectedMusicFolder.id == musicFolder.id ? 'headerSelected' : 'header'}"><a href="#" onclick="changeMusicFolder(${musicFolder.id})">${fn:escapeXml(musicFolder.name)}</a></span>
</c:forEach>
</h2>
</c:if>
<div style="padding-top:1em; padding-bottom:0.4em">
<c:forEach items="${model.shortcuts}" var="shortcut">
<sub:url value="main.view" var="mainUrl">
<sub:param name="id" value="${shortcut.id}"/>
</sub:url>
<input type="button" style="margin-right:0.6em; margin-bottom:0.6em" value="${fn:escapeXml(shortcut.name)}" onclick="location.href='${mainUrl}'">
</c:forEach>
</div>
<c:forEach items="${model.indexedArtists}" var="entry">
<a name="${fn:escapeXml(entry.key.index)}"></a>
<div class="browse-index-title">${fn:escapeXml(entry.key.index)}</div>
<c:forEach items="${entry.value}" var="artist">
<sub:url value="main.view" var="mainUrl">
<c:forEach items="${artist.mediaFiles}" var="mediaFile">
<sub:param name="id" value="${mediaFile.id}"/>
</c:forEach>
</sub:url>
<div class="browse-artist">
<a target="main" href="${mainUrl}" title="${fn:escapeXml(artist.name)}">${fn:escapeXml(artist.name)}</a>
</div>
</c:forEach>
</c:forEach>
<div style="clear:both; padding-top:2em"></div>
<c:if test="${not empty model.singleSongs}">
<table class="music">
<tr>
<th colspan="5"></th>
<c:if test="${model.visibility.trackNumberVisible}">
<th class="fit right">#</th>
</c:if>
<th class="truncate"><fmt:message key="lyrics.song"/></th>
<c:if test="${model.visibility.albumVisible}">
<th class="truncate"><fmt:message key="personalsettings.album"/></th>
</c:if>
<c:if test="${model.visibility.artistVisible}">
<th class="truncate"><fmt:message key="personalsettings.artist"/></th>
</c:if>
<c:if test="${model.visibility.genreVisible}">
<th class="fit left"><fmt:message key="personalsettings.genre"/></th>
</c:if>
<c:if test="${model.visibility.yearVisible}">
<th class="fit left"><fmt:message key="personalsettings.year"/></th>
</c:if>
<c:if test="${model.visibility.formatVisible}">
<th class="fit left"><fmt:message key="personalsettings.format"/></th>
</c:if>
<c:if test="${model.visibility.fileSizeVisible}">
<th class="fit left"><fmt:message key="personalsettings.filesize"/></th>
</c:if>
<c:if test="${model.visibility.durationVisible}">
<th class="fit center"><i class="fa fa-lg fa-clock-o"></i></th>
</c:if>
<c:if test="${model.visibility.bitRateVisible}">
<th class="fit left"><fmt:message key="personalsettings.bitrate"/></th>
</c:if>
</tr>
<c:forEach items="${model.singleSongs}" var="song" varStatus="loopStatus">
<%--@elvariable id="song" type="net.sourceforge.subsonic.domain.MediaFile"--%>
<tr style="margin:0;padding:0;border:0">
<c:import url="playButtons.jsp">
<c:param name="id" value="${song.id}"/>
<c:param name="video" value="${song.video and model.player.web}"/>
<c:param name="playEnabled" value="${model.user.streamRole and not model.partyMode}"/>
<c:param name="addEnabled" value="${model.user.streamRole and (not model.partyMode or not song.directory)}"/>
<c:param name="downloadEnabled" value="${model.user.downloadRole and not model.partyMode}"/>
<c:param name="starEnabled" value="true"/>
<c:param name="starred" value="${not empty song.starredDate}"/>
<c:param name="asTable" value="true"/>
</c:import>
<c:if test="${model.visibility.trackNumberVisible}">
<td class="fit right">
<span class="detail">${song.trackNumber}</span>
</td>
</c:if>
<td class="truncate">
<span class="songTitle" title="${fn:escapeXml(song.title)}">${fn:escapeXml(song.title)}</span>
</td>
<c:if test="${model.visibility.albumVisible}">
<td class="truncate">
<span class="detail" title="${fn:escapeXml(song.albumName)}">${fn:escapeXml(song.albumName)}</span>
</td>
</c:if>
<c:if test="${model.visibility.artistVisible}">
<td class="truncate">
<span class="detail" title="${fn:escapeXml(song.artist)}">${fn:escapeXml(song.artist)}</span>
</td>
</c:if>
<c:if test="${model.visibility.genreVisible}">
<td class="fit left">
<span class="detail">${fn:escapeXml(song.genre)}</span>
</td>
</c:if>
<c:if test="${model.visibility.yearVisible}">
<td class="fit left">
<span class="detail">${song.year}</span>
</td>
</c:if>
<c:if test="${model.visibility.formatVisible}">
<td class="fit left">
<span class="detail">${fn:toLowerCase(song.format)}</span>
</td>
</c:if>
<c:if test="${model.visibility.fileSizeVisible}">
<td class="fit left">
<span class="detail"><sub:formatBytes bytes="${song.fileSize}"/></span>
</td>
</c:if>
<c:if test="${model.visibility.durationVisible}">
<td class="fit right">
<span class="detail">${song.durationString}</span>
</td>
</c:if>
<c:if test="${model.visibility.bitRateVisible}">
<td class="fit left">
<span class="detail">
<c:if test="${not empty song.bitRate}">
${song.bitRate} Kbps ${song.variableBitRate ? "vbr" : ""}
</c:if>
<c:if test="${song.video and not empty song.width and not empty song.height}">
(${song.width}x${song.height})
</c:if>
</span>
</td>
</c:if>
</tr>
</c:forEach>
</table>
</c:if>
<div style="padding-top:2em"></div>
</body></html>