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> <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> <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> <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> <a href="audioConversionSettings.view"><fmt:message key="top.settings"/></a> 141 </span> 142 </c:if> 143</p> 144</body> 145</html> 146