1<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="iso-8859-1" %>
2
3<html>
4<head>
5    <%@ include file="head.jsp" %>
6    <%@ include file="jquery.jsp" %>
7
8	<link rel="stylesheet" href='<c:url value="/script/fontawesome/css/font-awesome.min.css"/>' type="text/css">
9
10    <style type="text/css">
11        .ui-progressbar-value {
12            background: #0090BB;
13        }
14    </style>
15    <script type="text/javascript" src="<c:url value="/dwr/engine.js"/>"></script>
16    <script type="text/javascript" src="<c:url value="/dwr/interface/multiService.js"/>"></script>
17
18    <script type="text/javascript" language="javascript">
19
20        var authorized = ${model.user.audioConversionRole};
21        var updateInterval = 2000;
22
23        function init() {
24            $("#conversion-progressbar").progressbar({
25                max: ${model.audio.durationSeconds}
26            });
27            dwr.engine.setErrorHandler(null);
28            updateConversionStatus();
29        }
30        function updateConversionStatus() {
31            multiService.getAudioConversionStatus(${model.audio.id}, conversionStatusCallback);
32            setTimeout(updateConversionStatus, updateInterval);
33        }
34        function conversionStatusCallback(conversionStatus) {
35            $("#conversion-progressbar").progressbar("option", "value", conversionStatus == null ? 0 : conversionStatus.progressSeconds);
36            $("#conversion-status-new").toggle(conversionStatus != null && conversionStatus.statusNew);
37            $("#conversion-status-in-progress").toggle(conversionStatus != null && conversionStatus.statusInProgress);
38            $("#conversion-status-completed").toggle(conversionStatus != null && conversionStatus.statusCompleted);
39            $("#conversion-status-error").toggle(conversionStatus != null && conversionStatus.statusError);
40            $("#conversion-download-converted").toggle(conversionStatus != null && conversionStatus.statusCompleted);
41            $("#conversion-start-mp3-192").toggle(authorized && (conversionStatus == null || conversionStatus.statusError));
42            $("#conversion-start-mp3-320").toggle(authorized && (conversionStatus == null || conversionStatus.statusError));
43            $("#conversion-start-ogg-320").toggle(authorized && (conversionStatus == null || conversionStatus.statusError));
44            $("#conversion-cancel").toggle(authorized && (conversionStatus != null && (conversionStatus.statusNew || conversionStatus.statusInProgress)));
45
46            $("#conversion-target-file").text(conversionStatus == null ? "" : conversionStatus.targetFile);
47            $("#conversion-log-file").text(conversionStatus == null ? "" : conversionStatus.logFile);
48
49            if (conversionStatus != null && conversionStatus.statusInProgress) {
50                $("#conversion-status-progress").text(conversionStatus.progressString);
51                updateInterval = 600;
52            } else {
53                updateInterval = 2000;
54            }
55        }
56        function startConversion(bitrate, format) {
57            multiService.startAudioConversion(${model.audio.id}, bitrate, format, conversionStatusCallback);
58        }
59        function cancelConversion() {
60            multiService.cancelAudioConversion(${model.audio.id}, conversionStatusCallback);
61        }
62
63        function startDownload(raw) {
64            if (raw) {
65                location.href = "download.view?id=${model.audio.id}&format=raw";
66            } else {
67                location.href = "download.view?id=${model.audio.id}";
68            }
69        }
70
71        function back() {
72            if (document.referrer) {
73                location.href = document.referrer;
74            } else {
75                history.back();
76            }
77        }
78    </script>
79</head>
80
81<body class="mainframe bgcolor1" style="padding-bottom:0.5em" onload="init()">
82
83<h1><i class="fa fa-film fa-fw icon"></i>&nbsp;&nbsp;<fmt:message key="audioConverter.title"/></h1>
84
85<p style="margin-top:1.5em">
86    <fmt:message key="audioConverter.intro"/>
87</p>
88
89<div style="margin: 2em 3em;">
90    <div style="float:left; width:213px; margin-right: 3em">
91        <div id="conversion-progressbar" style="width:100%; height:10px; margin-top:5px; margin-bottom:5px;"></div>
92        <c:if test="${model.licenseInfo.licenseOrTrialValid}">
93            <input id="conversion-start-mp3-192" style="display:none; width:100%; margin-top:1em;cursor:pointer" type="button" value="<fmt:message key="audioConverter.start"><fmt:param value="mp3 192kbps"/></fmt:message>" onclick="startConversion(192,'mp3')">
94            <input id="conversion-start-mp3-320" style="display:none; width:100%; margin-top:1em;cursor:pointer" type="button" value="<fmt:message key="audioConverter.start"><fmt:param value="mp3 320kbps"/></fmt:message>" onclick="startConversion(320,'mp3')">
95            <input id="conversion-start-ogg-320" style="display:none; width:100%; margin-top:1em;cursor:pointer" type="button" value="<fmt:message key="audioConverter.start"><fmt:param value="ogg 320kbps"/></fmt:message>" onclick="startConversion(320,'ogg')">
96            <input id="conversion-cancel" style="display:none; width:100%; margin-top:1em;cursor:pointer" type="button" value="<fmt:message key="audioConverter.cancel"/>" onclick="cancelConversion()">
97            <input id="conversion-download-converted" style="display:none; width:100%; margin-top:1em;cursor:pointer" type="submit" value="<fmt:message key="audioConverter.download"><fmt:param value="converted"/></fmt:message>" onclick="startDownload(false)"></c:if>
98            <input id="conversion-download-original" type="submit" style="display:inline; width:100%; margin-top:1em;cursor:pointer" type="button" value="<fmt:message key="audioConverter.download"><fmt:param value="${model.audio.format}"/></fmt:message>" onclick="startDownload(true)">
99    </div>
100
101    <table class="detail" style="float:left">
102        <tr><td style="padding-right:1em"><b><fmt:message key="audioConverter.details.title"/></b></td><td><b>${model.audio.title}</b></td></tr>
103        <tr><td style="padding-right:1em"><b><fmt:message key="personalsettings.format"/></b></td><td>${model.audio.format}</td></tr>
104        <tr><td style="padding-right:1em"><b><fmt:message key="personalsettings.duration"/></b></td><td>${model.audio.durationString}</td></tr>
105        <tr><td style="padding-right:1em"><b><fmt:message key="personalsettings.bitrate"/></b></td><td>${model.audio.bitRate} Kbps</td></tr>
106        <tr><td style="padding-right:1em"><b><fmt:message key="personalsettings.filesize"/></b></td><td><madsonic:formatBytes bytes="${model.audio.fileSize}"/></td></tr>
107        <tr><td style="padding-right:1em"><b><fmt:message key="audioConverter.details.status"/></b></td><td>
108            <span style="display:none" id="conversion-status-new"><fmt:message key="audioConverter.status.new"/></span>
109            <span style="display:none" id="conversion-status-in-progress"><i class="fa fa-refresh fa-spin"></i>&nbsp;&nbsp;<fmt:message key="audioConverter.status.in_progress"/>
110                (<span id="conversion-status-progress"></span>)</span>
111            <span style="display:none" id="conversion-status-completed"><fmt:message key="audioConverter.status.completed"/></span>
112            <span style="display:none" id="conversion-status-error"><fmt:message key="audioConverter.status.error"/></span>
113        </td></tr>
114        <tr><td style="padding-right:1em"><b><fmt:message key="audioConverter.details.targetfile"/></b></td><td><span id="conversion-target-file"></span></td></tr>
115        <tr><td style="padding-right:1em"><b><fmt:message key="audioConverter.details.logfile"/></b></td><td><span id="conversion-log-file"></span></td></tr>
116    </table>
117</div>
118
119<div style="clear:both"></div>
120
121<c:set var="licenseInfo" value="${model.licenseInfo}"/>
122<%@ include file="licenseNotice.jsp" %>
123
124<p style="margin-left:2em;margin-top:2em">
125    <c:choose>
126        <c:when test="${model.user.audioConversionRole}">
127            <fmt:message key="audioConverter.info"/>
128        </c:when>
129        <c:otherwise>
130            <span class="warning"><fmt:message key="audioConverter.notallowed"/></span>
131        </c:otherwise>
132    </c:choose>
133</p>
134
135<p>
136    <i class="fa fa-chevron-left icon"></i>&nbsp;<a href="javascript:back()"><fmt:message key="common.back"/></a>
137
138    <c:if test="${model.user.adminRole}">
139        <span style="margin-left:3em">
140            <i class="fa fa-cog fa-lg icon"></i>&nbsp;<a href="audioConversionSettings.view"><fmt:message key="top.settings"/></a>
141        </span>
142    </c:if>
143</p>
144</body>
145</html>
146