You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1280 lines
44 KiB
1280 lines
44 KiB
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
|
|
<title>SABnzbd+</title>
|
|
<link rel="stylesheet" type="text/css" href="static/stylesheets/smpl.css?smpl$version"/>
|
|
<!--#if $color_scheme#-->
|
|
<link rel="stylesheet" type="text/css" href="static/stylesheets/colorschemes/${color_scheme}.css?smpl$version"/>
|
|
<!--#else#-->
|
|
<link rel="stylesheet" type="text/css" href="static/stylesheets/colorschemes/white.css?smpl$version"/>
|
|
<!--#end if#-->
|
|
<link href="rss?mode=history&apikey=$session" rel="alternate" type="application/rss+xml" title="SABnzbd+ History" />
|
|
<link rel="shortcut icon" href="static/images/favicon.ico" />
|
|
|
|
<script type="text/javascript" src="static/MochiKit/MochiKit.js"></script>
|
|
<script type="text/javascript" src="static/PlotKit/PlotKit.js"></script>
|
|
<!--[if IE]><script type="text/javascript" src="static/excanvas/excanvas.js"></script><![endif]-->
|
|
|
|
<!--#set $mbdone = (float($mb) - float($mbleft))#-->
|
|
<!--#set $mbdonesrt = float($mbdone) #-->
|
|
|
|
|
|
<!--#set $kbpersec = float($kbpersec)#-->
|
|
<!--#set $kbpersecrnd = str(int($kbpersec))#-->
|
|
<!--#if $paused #-->
|
|
<!--#set $kbpersecrnd = "0"#-->
|
|
<!--#end if#-->
|
|
|
|
<script type="text/javascript">
|
|
|
|
// refresh time in seconds
|
|
RefreshTime = 5;
|
|
var jsontimeout;
|
|
var cookietimeout;
|
|
var speed = '$speed';
|
|
var kbpersec = $kbpersecrnd;
|
|
var gDual = 0;
|
|
var gUrl;
|
|
|
|
var gDeferrer;
|
|
var gDeferrerTwo;
|
|
var gRight;
|
|
var gRightBottom;
|
|
var session = "$session";
|
|
</script>
|
|
|
|
|
|
<script type="text/javascript">
|
|
function tvAdd(val){
|
|
var tv = document.getElementById('tvfoldername');
|
|
tv.value = tv.value + val;
|
|
previewtv();
|
|
}
|
|
function tvSet(val){
|
|
var tv = document.getElementById('tvfoldername');
|
|
tv.value = val;
|
|
previewtv();
|
|
}
|
|
function tvClear(){
|
|
var tv = document.getElementById('tvfoldername');
|
|
tv.value = '';
|
|
previewtv();
|
|
}
|
|
function previewtv(){
|
|
var input = document.getElementById('tvfoldername').value;
|
|
var slash = "\\";
|
|
input.toLowerCase()
|
|
input = input.replace(/%ext/g,'avi');
|
|
input = input.replace(/%sn/g,'$T("show-sp-name")');
|
|
input = input.replace(/%s\.n/g,'$T("show-dot-name")');
|
|
input = input.replace(/%s\_n/g,'$T("show-us-name")');
|
|
input = input.replace(/%0s/g,'01');
|
|
input = input.replace(/%s/g,'1');
|
|
input = input.replace(/%en/g,'$T("ep-sp-name")');
|
|
input = input.replace(/%e\.n/g,'$T("ep-dot-name")');
|
|
input = input.replace(/%e\_n/g,'$T("ep-us-name")');
|
|
input = input.replace(/%0e/g,'05');
|
|
input = input.replace(/%e/g,'5');
|
|
input = input.replace(/%fn/g,'$T("sort-File")');
|
|
input = input.replace(/%dn/g,'$T("sort-Folder")');
|
|
|
|
document.getElementById('previewtv').innerHTML = getOutput(input);
|
|
}
|
|
|
|
function getOutput(input){
|
|
var slash = "\\";
|
|
var com = document.getElementById('complete_dir').value;
|
|
|
|
// For some reason a simply replace() doesn't replace multiple / characters
|
|
// Work out whether we are using / or \
|
|
for (i=0; i<com.length; i++){
|
|
if (com[i] == "/") slash = "/";
|
|
}
|
|
|
|
// Replace / or \ with whatever complete_dir uses
|
|
for (i=0; i<input.length; i++){
|
|
if (input[i] == "/") {
|
|
input = input.replace("/",slash, "gi");
|
|
} else if (input[i] == "\\") {
|
|
input = input.replace("\\",slash, "gi");
|
|
}
|
|
}
|
|
|
|
// If the complete_dir ends in / or \, then strip that character
|
|
len = com.length
|
|
if (com.substring(len-1, len) == slash)
|
|
{
|
|
com = com.substring(0, len-1)
|
|
}
|
|
|
|
// If the pattern starts with absolute path, don't prepend default folder
|
|
if (input[0] == "/" || input[0] == slash || input[1] == ':') {
|
|
output = input;
|
|
} else {
|
|
output = com+slash+input;
|
|
}
|
|
return output
|
|
}
|
|
|
|
function movieAdd(val){
|
|
var tv = document.getElementById('moviefoldername');
|
|
tv.value = tv.value + val;
|
|
previewmovie();
|
|
}
|
|
function movieSet(val, val2){
|
|
var tv = document.getElementById('moviefoldername');
|
|
tv.value = val;
|
|
var tv2 = document.getElementById('movieextra');
|
|
tv2.value = val2;
|
|
previewmovie();
|
|
}
|
|
function movieClear(){
|
|
var tv = document.getElementById('moviefoldername');
|
|
tv.value = '';
|
|
previewmovie();
|
|
}
|
|
function movieClearExtra(){
|
|
var tv = document.getElementById('movieextra');
|
|
tv.value = '';
|
|
previewmovie();
|
|
}
|
|
function movieExtraFolder(value)
|
|
{
|
|
document.getElementById('movie_extra_folder').checked = value;
|
|
}
|
|
function previewmovie()
|
|
{
|
|
var input = document.getElementById('moviefoldername').value;
|
|
var input2 = document.getElementById('movieextra').value;
|
|
extra = input2.replace(/%1/g,'1');
|
|
var slash = "\\";
|
|
ext = extra + '.avi'
|
|
input = input.replace(/\.%ext/g,ext);
|
|
input = input.replace(/%ext/g,'avi');
|
|
input = input.replace(/%title/g,'$T("movie-sp-name")');
|
|
input = input.replace(/%\.title/g,'$T("movie-dot-name")');
|
|
input = input.replace(/%\_title/g,'$T("movie-us-name")');
|
|
input = input.replace(/%y/g,'2000');
|
|
input = input.replace(/%decade/g,'00');
|
|
input = input.replace(/%0decade/g,'2000');
|
|
input = input.replace(/%fn/g,'$T("sort-File")');
|
|
|
|
var regex = /\{([^\{]*)\}/g;
|
|
var str = input;
|
|
var result;
|
|
while ((result = regex.exec(str)) != null)
|
|
{
|
|
var lower = result[0].toLowerCase();
|
|
input = input.replace(result[0],lower);
|
|
}
|
|
input = input.replace(/{/g,'');
|
|
input = input.replace(/}/g,'');
|
|
|
|
document.getElementById('previewmovie').innerHTML = getOutput(input);
|
|
}
|
|
function dateSet(val){
|
|
var tv = document.getElementById('datefoldername');
|
|
tv.value = val;
|
|
previewdate();
|
|
}
|
|
function dateClear(){
|
|
var tv = document.getElementById('datefoldername');
|
|
tv.value = '';
|
|
previewdate();
|
|
}
|
|
function previewdate(){
|
|
var input = document.getElementById('datefoldername').value;
|
|
var slash = "\\";
|
|
input.toLowerCase()
|
|
input = input.replace(/%ext/g,'avi');
|
|
input = input.replace(/%t/g,'$T("show-sp-name")');
|
|
input = input.replace(/%\.t/g,'$T("show-dot-name")');
|
|
input = input.replace(/%\_t/g,'$T("show-us-name")');
|
|
input = input.replace(/%decade/g,'00');
|
|
input = input.replace(/%0decade/g,'2000');
|
|
input = input.replace(/%fn/g,'$T("sort-File")');
|
|
input = input.replace(/%desc/g,'$T("ep-sp-name")');
|
|
input = input.replace(/%\.desc/g,'$T("ep-dot-name")');
|
|
input = input.replace(/%\_desc/g,'$T("ep-us-name")');
|
|
input = input.replace(/%0d/g,'02');
|
|
input = input.replace(/%d/g,'2');
|
|
input = input.replace(/%0m/g,'01');
|
|
input = input.replace(/%m/g,'1');
|
|
input = input.replace(/%y/g,'2009');
|
|
|
|
document.getElementById('previewdate').innerHTML = getOutput(input);
|
|
}
|
|
function showDiv(id)
|
|
{
|
|
disp = (document.getElementById(id).style.display == "block") ? "none" : "block";
|
|
document.getElementById(id).style.display = disp;
|
|
|
|
}
|
|
function showRow(id)
|
|
{
|
|
disp = (document.getElementById(id).style.display == "table-row") ? "none" : "table-row";
|
|
document.getElementById(id).style.display = disp;
|
|
|
|
|
|
}
|
|
|
|
function setCookie(c_name,value,expiredays)
|
|
{
|
|
var exdate=new Date();
|
|
exdate.setDate(exdate.getDate()+expiredays);
|
|
document.cookie=c_name+ "=" +value+
|
|
((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
|
|
}
|
|
|
|
function getCookie(c_name)
|
|
{
|
|
if (document.cookie.length>0)
|
|
{
|
|
c_start=document.cookie.indexOf(c_name + "=");
|
|
if (c_start!=-1)
|
|
{
|
|
c_start=c_start + c_name.length+1;
|
|
c_end=document.cookie.indexOf(";",c_start);
|
|
if (c_end==-1) c_end=document.cookie.length;
|
|
return unescape(document.cookie.substring(c_start,c_end));
|
|
}
|
|
}
|
|
return "";
|
|
}
|
|
|
|
function checkCookie()
|
|
{
|
|
var speedlog = [];
|
|
cook=getCookie('speedlog2');
|
|
|
|
if (cook!=null && cook!="")
|
|
{
|
|
|
|
var speedlog = cook.split(',');
|
|
for(i=1; i<20; i++) {
|
|
speedlog[i-1] = speedlog[i];
|
|
}
|
|
speedlog[19] = kbpersec;
|
|
|
|
var speedstr = speedlog.join(',');
|
|
setCookie('speedlog2',speedstr,1);
|
|
|
|
//drawGraph(speedlog);
|
|
chartReload(speedlog);
|
|
}
|
|
else
|
|
{
|
|
setCookie('speedlog2','0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,$kbpersecrnd',1);
|
|
}
|
|
if (RefreshTime>0) {
|
|
clearTimeout ( cookietimeout );
|
|
cookietimeout = setTimeout("checkCookie();", RefreshTime*1000)
|
|
}
|
|
}
|
|
function toggleHistoryDetails(nzoID, row_obj, tog_id)
|
|
{
|
|
|
|
cook=getCookie('history_verbosity');
|
|
|
|
if (cook!=null && cook!="")
|
|
{
|
|
var histitems = cook.split(',');
|
|
found = -1;
|
|
for(i=0; i<histitems.length; i++)
|
|
{
|
|
if (histitems[i] == nzoID) found = i;
|
|
}
|
|
if (found >= 0){
|
|
histitems.splice(found,1);
|
|
plus = "+";
|
|
} else {
|
|
histitems.push(nzoID)
|
|
plus = "-";
|
|
}
|
|
var histstr = histitems.join(',');
|
|
} else {
|
|
var histstr = nzoID;
|
|
plus = "-"
|
|
}
|
|
setCookie('history_verbosity',histstr,100);
|
|
element = document.getElementById(tog_id);
|
|
element.innerHTML = plus
|
|
showRow(row_obj)
|
|
}
|
|
|
|
|
|
|
|
function checkrefresh()
|
|
{
|
|
refr=getCookie('smplrefresh');
|
|
element = document.getElementById('refreshrate');
|
|
if (refr!=null && refr!="")
|
|
{
|
|
|
|
var refreshtimelist = [2, 3, 5, 10, 15, 30, 60, 180, 300, 0];
|
|
index = Number(refr);
|
|
var result = -1;
|
|
for(i=0; i<10; i++)
|
|
{
|
|
if (refreshtimelist[i]==index) result = i;
|
|
}
|
|
if (result<0)result=1;
|
|
element.selectedIndex = result;
|
|
|
|
RefreshTime = Number(refr);
|
|
//alert(refreshr);
|
|
}
|
|
else
|
|
{
|
|
|
|
refreshr = element.options[element.selectedIndex].value;
|
|
//alert(refreshr);
|
|
if (refreshr)
|
|
{
|
|
setCookie('smplrefresh',refreshr,360);
|
|
}
|
|
}
|
|
}
|
|
|
|
function timedPause(mins)
|
|
{
|
|
if (mins == null)
|
|
{
|
|
mins = prompt("$T('smpl-pauseForPrompt')");
|
|
}
|
|
url = 'tapi?mode=config&name=set_pause&value=' + mins +'&session='+session;
|
|
d = doSimpleXMLHttpRequest(url);
|
|
d.addCallback(loadingJSON);
|
|
toggle('hiddenTimedPause','blind',{duration:0.2})
|
|
}
|
|
|
|
|
|
function applyrefresh(value)
|
|
{
|
|
RefreshTime = value;
|
|
setCookie('smplrefresh',value,360);
|
|
loadingJSON();
|
|
checkCookie();
|
|
}
|
|
|
|
MochiKit.DOM.addLoadEvent(onpageload);
|
|
|
|
function onpageload() {
|
|
loadtitle();
|
|
initDynamicTable();
|
|
loadingJSON();
|
|
checkCookie();
|
|
|
|
//doit();
|
|
|
|
checkrefresh();
|
|
}
|
|
|
|
function hashchanged() {
|
|
// We might be able to skip some of what onpageload does, but this works.
|
|
onpageload();
|
|
}
|
|
if ("onhashchange" in window) {
|
|
// TODO: Use jQuery history or hashchange modules or perhaps
|
|
// reallysimplehistory -- those will poll in browsers that don't
|
|
// support onhashchange (but recent Chrome, Firefox, and Safari do).
|
|
|
|
// TODO: Fix the other interfaces. Plush and Classic are OK if only
|
|
// because they don't seem to use #fragments. Mobile is NOT OK as the
|
|
// following proves:
|
|
//
|
|
// Go to http://localhost:8085/sabnzbd/m/#history and then click on
|
|
// an item to go to #history_nzb. The back button now works, but
|
|
// afterwards the forward button won't. (Chrome 8.0.552.231 on OS X
|
|
// 10.5.8)
|
|
window.onhashchange = hashchanged;
|
|
}
|
|
|
|
function loadtitle() {
|
|
// document.URL isn't updated when someone clicks on "#/dv1/"; can't use it.
|
|
url = window.location.toString();
|
|
if (url.match('#'))
|
|
{
|
|
index = url.lastIndexOf('#');
|
|
url = url.slice(index+1, url.length);
|
|
url = url.replace('-', '/');
|
|
if (url.indexOf('/') == 0){
|
|
url = url.slice(1, url.length);
|
|
}
|
|
if (url.lastIndexOf('/') == url.length-1){
|
|
url = url.slice(0, url.length-1);
|
|
}
|
|
|
|
switch(url)
|
|
{
|
|
case 'dv1':
|
|
lr('queue/','limit=15', 1, 1);
|
|
lrb('history/','limit=15',1);
|
|
break;
|
|
case 'dv2':
|
|
lr('queue/','limit=15', 1, 2);
|
|
lrb('history/','limit=15',1);
|
|
break;
|
|
case 'history':
|
|
lr('history/','limit=15',1);
|
|
break;
|
|
case 'queue':
|
|
lr('queue/','limit=15',1);
|
|
break;
|
|
case 'connections':
|
|
lr(url,'',1)
|
|
default:
|
|
lr(url)
|
|
}
|
|
} else {
|
|
lr('queue/','limit=5', 1, 1);
|
|
lrb('history/','limit=5',1);
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
|
<!--#set $statusstr2 = $T('link-pause')#-->
|
|
<!--#set $pau = "0"#-->
|
|
<!--#if $paused #-->
|
|
<!--#set $pau = "1"#-->
|
|
<!--#set $status = "<span class='paused'>"+$T('smpl-paused')+"</span>"#-->
|
|
<!--#set $statusstr2 = $T('link-resume')#-->
|
|
<!--#else if float($kbpersecrnd)>0 #-->
|
|
<!--#set $status = "<span class='downloading'>"+$T('smpl-downloading')+"</span>"#-->
|
|
<!--#else if float($kbpersecrnd) == 0 #-->
|
|
<!--#set $status = "<span class='idle'>"+$T('smpl-idle')+"</span>"#-->
|
|
<!--#end if#-->
|
|
|
|
<script type="text/javascript">
|
|
var status2 = $pau;
|
|
var timerId2 = 0;
|
|
var timerId3 = 0;
|
|
|
|
|
|
function clearForm(obj, defText){
|
|
text = obj.value;
|
|
if (text == defText){
|
|
obj.value = "";
|
|
}
|
|
}
|
|
|
|
function setForm(obj, defText){
|
|
text = obj.value;
|
|
if (text == ""){
|
|
obj.value = defText;
|
|
}
|
|
}
|
|
|
|
function toggle_paused()
|
|
{
|
|
//Pause button toggle - XML request and instant word changing for the link and status
|
|
if (status2 == 1)
|
|
{
|
|
status2 = 0;
|
|
document.getElementById("status").innerHTML = "<span class='idle'>$T('smpl-idle')</span>";
|
|
document.getElementById("status2").innerHTML = "$T('link-pause')";
|
|
doSimpleXMLHttpRequest("tapi?mode=resume&session="+session);
|
|
}
|
|
else
|
|
{
|
|
status2 = 1;
|
|
document.getElementById("status").innerHTML = "<span class='paused'>$T('smpl-paused')</span>";
|
|
document.getElementById("speed").innerHTML = "0";
|
|
document.getElementById("status2").innerHTML = "$T('link-resume')";
|
|
doSimpleXMLHttpRequest("tapi?mode=pause&session="+session);
|
|
|
|
}
|
|
}
|
|
|
|
function deletequeueitem(elem)
|
|
{
|
|
//deletes an item from the queue - passed variable is the id (uid) of the queue item to delete(and also the id of the queue element)
|
|
el = document.getElementById(elem)
|
|
el.parentNode.removeChild(el);
|
|
|
|
d = doSimpleXMLHttpRequest('tapi/', {mode: 'queue', name: 'delete', value: elem, _dc: Math.random(), session: session});
|
|
|
|
}
|
|
|
|
function deletenzf(nzo,elem)
|
|
{
|
|
//deletes an item from the queue - passed variable is the id (uid) of the queue item to delete(and also the id of the queue element)
|
|
el = document.getElementById(elem)
|
|
el.parentNode.removeChild(el);
|
|
|
|
d = doSimpleXMLHttpRequest('tapi/', {mode: 'queue', name: 'delete_nzf', value: nzo, value2: elem, _dc: Math.random(), session:session});
|
|
|
|
}
|
|
|
|
function pausequeueitem(elem, start, limit)
|
|
{
|
|
//deletes an item from the queue - passed variable is the id (uid) of the queue item to delete(and also the id of the queue element)
|
|
val1 = document.getElementById(elem).innerHTML;
|
|
val1="";
|
|
url = 'queue/pause_nzo'
|
|
d = doSimpleXMLHttpRequest(url, {uid: elem, _dc: Math.random(), session:session, start:start, limit:limit});
|
|
d.addCallback(replaceright);
|
|
d.addErrback(handleServerError);
|
|
}
|
|
|
|
function resumequeueitem(elem, start, limit)
|
|
{
|
|
//deletes an item from the queue - passed variable is the id (uid) of the queue item to delete(and also the id of the queue element)
|
|
val1 = document.getElementById(elem).innerHTML;
|
|
val1="";
|
|
url = 'queue/resume_nzo'
|
|
d = doSimpleXMLHttpRequest(url, {uid: elem, _dc: Math.random(), session:session, start:start, limit:limit});
|
|
d.addCallback(replaceright);
|
|
d.addErrback(handleServerError);
|
|
}
|
|
|
|
function deletehistoryitem(elem, del, pnode)
|
|
{
|
|
//deletes an item from the history - passed variable is the id (uid) of the history item to delete(and also the id of the history element)
|
|
el = document.getElementById(elem)
|
|
el.parentNode.removeChild(el);
|
|
|
|
d = doSimpleXMLHttpRequest('tapi/', {mode: 'history', name: 'delete', value: elem, del_files: del, _dc: Math.random(), session: session});
|
|
}
|
|
|
|
function handleServerError(){}
|
|
|
|
function killTimer(){
|
|
clearTimeout (timerId2);
|
|
}
|
|
function restartTimer(time){
|
|
killTimer();
|
|
timerId2 = setTimeout("startTimer()", time*1000);
|
|
}
|
|
|
|
function startTimer(url, extra, dual){
|
|
killTimer();
|
|
if (url) gUrl = url
|
|
else url = gUrl
|
|
if (dual) gDual = dual
|
|
else dual = gDual
|
|
timer="lr(\'"+url+"\', \'"+extra+"\', 1, "+dual+", 'Right')";
|
|
timerId2 = setTimeout(timer, RefreshTime*1000);
|
|
|
|
}
|
|
|
|
function rssUrlEncode(url, uri ,cat ){
|
|
var enc_uri = urlEncode(uri)
|
|
location = url+"?uri="+enc_uri+"&cat="+cat+"&this_uri="+enc_uri
|
|
}
|
|
|
|
|
|
function lr(url, extra, refresh, dual, pnode)
|
|
{
|
|
//submits an ajax request and loads the retrieved data into the div called "Right". Can queue itself up to repeat the action based on the refresh rate
|
|
if (dual!=-1)
|
|
{
|
|
gDual = dual;
|
|
if (dual!=2 ) {
|
|
document.getElementById('Container').style.width = "90%";
|
|
document.getElementById('Right').style.width = "100%";
|
|
removeElementClass('Right', "float");
|
|
|
|
removeElementClass('Left', "right-border");
|
|
addElementClass('RightContainer', "left-border");
|
|
|
|
document.getElementById('Right_bottom').style.width = "100%";
|
|
removeElementClass('Right_bottom', "float");
|
|
}
|
|
else {
|
|
document.getElementById('Container').style.width = "99%";
|
|
document.getElementById('Right').style.width = "48%";
|
|
addElementClass('Right', "float");
|
|
|
|
removeElementClass('RightContainer', "left-border");
|
|
addElementClass('Left', "right-border");
|
|
|
|
document.getElementById('Right_bottom').style.width = "48%";
|
|
addElementClass('Right_bottom', "float");
|
|
}
|
|
if (!dual){
|
|
stopDeferer(gDeferrerTwo);
|
|
stopDeferer(gRightBottom);
|
|
document.getElementById('Right_bottom').innerHTML = "";
|
|
}
|
|
}
|
|
if (pnode != 'Right_bottom') {
|
|
lra(url, extra, refresh, dual, pnode)
|
|
} else {
|
|
lrb(url, extra, refresh)
|
|
}
|
|
|
|
}
|
|
function lra(url, extra, refresh, dual, pnode){
|
|
append = '?_dc='+Math.random()+'&session='+session;
|
|
if (extra){
|
|
append = append+'&'+extra;
|
|
}
|
|
if (refresh!=-1)
|
|
{
|
|
//cancel any running timers for inprogress ajax calls or timed lr() calls
|
|
stopDeferer(gDeferrer);
|
|
stopDeferer(gRight);
|
|
}
|
|
|
|
if (refresh > 0 && RefreshTime > 0) {
|
|
gRight = callLater(RefreshTime, lr, url, extra, refresh, dual, pnode);
|
|
}
|
|
|
|
var gDeferrer = doSimpleXMLHttpRequest(url+append);
|
|
|
|
gDeferrer.addCallback(function (res)
|
|
{
|
|
document.getElementById('Right').innerHTML = res.responseText;
|
|
});
|
|
gDeferrer.addErrback(handleServerError);
|
|
}
|
|
function lrb(url, extra, refresh)
|
|
{
|
|
//similar to lra() but loads the response in the right_bottom container
|
|
append = '?_dc='+Math.random()+'&session='+session;
|
|
if (extra){
|
|
append = append+'&'+extra;
|
|
}
|
|
if (refresh!=-1)
|
|
{
|
|
stopDeferer(gDeferrerTwo);
|
|
stopDeferer(gRightBottom);
|
|
}
|
|
|
|
gDeferrerTwo = doSimpleXMLHttpRequest(url+append);
|
|
gDeferrerTwo.addCallback(function (res) {
|
|
document.getElementById('Right_bottom').innerHTML = res.responseText;
|
|
});
|
|
|
|
if (refresh && refresh!=-1 && RefreshTime > 0) {
|
|
gRightBottom = callLater(RefreshTime, lrb, url, extra, refresh);
|
|
}
|
|
|
|
//res.addErrback(handleServerError);
|
|
}
|
|
|
|
function stopDeferer(deferer){
|
|
if (deferer){
|
|
deferer.cancel();
|
|
}
|
|
}
|
|
|
|
function pauseHistoryDeferer(pnode){
|
|
if (pnode != 'Right_bottom') {
|
|
stopDeferer(gRight);
|
|
stopDeferer(gDeferrer);
|
|
} else {
|
|
stopDeferer(gRightBottom);
|
|
stopDeferer(gDeferrerTwo);
|
|
}
|
|
}
|
|
|
|
function pauseQueueDeferer(pnode){
|
|
if (pnode != 'Right_bottom') {
|
|
stopDeferer(gRight);
|
|
stopDeferer(gDeferrer);
|
|
} else {
|
|
stopDeferer(gRightBottom);
|
|
stopDeferer(gDeferrerTwo);
|
|
}
|
|
}
|
|
|
|
function loadSearch(url, elem, extra, refresh, pnode, new_search){
|
|
if (elem){
|
|
var searchTerm = document.getElementById(elem).value;
|
|
} else {
|
|
var searchTerm = "";
|
|
}
|
|
if (extra && searchTerm){
|
|
if (new_search) extra = extra.replace(/start=\d+/g, "start=0");
|
|
extra += '&';
|
|
}
|
|
if (searchTerm){
|
|
extra = extra+'search='+searchTerm;
|
|
}
|
|
lr(url, extra, refresh,-1,pnode);
|
|
|
|
}
|
|
|
|
function lrdual(url1, url2, refresh, pnode)
|
|
{
|
|
killTimer()
|
|
//used when something needs to be submitted in the background, and another page loaded (usually refreshing the current page)
|
|
var d = doSimpleXMLHttpRequest(url1);
|
|
d.addCallback(function (d)
|
|
{
|
|
if (pnode == 'Right') lr(url2, '', refresh, gDual);//if link is in right_bottom needs to be lrb(
|
|
else lrb(url2, '', refresh, gDual)
|
|
});
|
|
|
|
}
|
|
|
|
function changequeuedetails(page, extra)
|
|
{
|
|
append = '&_dc='+Math.random()+'&session='+session;
|
|
if (extra) {
|
|
append += '&'+extra
|
|
}
|
|
url = page+append;
|
|
d = doSimpleXMLHttpRequest(url);
|
|
d.addCallback(replaceright);
|
|
d.addErrback(handleServerError);
|
|
}
|
|
|
|
|
|
|
|
function testemail()
|
|
{
|
|
d = doSimpleXMLHttpRequest('connections/testmail?session='+session);
|
|
d.addCallback(function (d)
|
|
{
|
|
alert("$T('emailsent')");
|
|
});
|
|
d.addErrback(handleServerError);
|
|
}
|
|
|
|
function unblock_server(host, port)
|
|
{
|
|
d = doSimpleXMLHttpRequest('connections/unblock_server?server='+host+':'+port+'&session='+session);
|
|
}
|
|
|
|
function getBookmarks()
|
|
{
|
|
d = doSimpleXMLHttpRequest('tapi?mode=newzbin&name=get_bookmarks&session='+session);
|
|
}
|
|
|
|
function changequeueoptions(page)
|
|
{
|
|
d = doSimpleXMLHttpRequest('queue/'+page);
|
|
}
|
|
|
|
//based from Mochikit documentation - finds all the form values for an element and returns formatted query string
|
|
function getFormValues(element)
|
|
{
|
|
|
|
kv = MochiKit.DOM.formContents(element);
|
|
names = kv[0];
|
|
values = kv[1];
|
|
|
|
kvstr = queryString(kv)
|
|
return kvstr;
|
|
}
|
|
|
|
function toggle_verbosity(nzo_id, extra)
|
|
{
|
|
append = '&_dc='+Math.random()+'&session='+session;
|
|
if (extra) {
|
|
append += '&'+extra
|
|
}
|
|
url = 'queue/tog_uid_verbose?uid='+nzo_id+append;
|
|
var res = doSimpleXMLHttpRequest(url);
|
|
res.addCallback(function (res)
|
|
{
|
|
document.getElementById('Right').innerHTML = res.responseText;
|
|
})
|
|
}
|
|
|
|
function testServer(formName)
|
|
{
|
|
document.getElementById(formName+'-result').innerHTML = "$T('srv-testing')";
|
|
element = document.getElementById(formName);
|
|
values = getFormValues(element);
|
|
|
|
|
|
url = "tapi?mode=config&name=test_server&output=json&session="+session;
|
|
var d = doXHR(url,
|
|
{
|
|
method:'POST',
|
|
sendContent:values,
|
|
headers: {"Content-Type":"application/x-www-form-urlencoded"}
|
|
|
|
});
|
|
d.addCallback(function(d)
|
|
{
|
|
var result = evalJSON(d.responseText);
|
|
if (result.value.result) {
|
|
cls = 'success';
|
|
|
|
} else {
|
|
cls = 'failure';
|
|
}
|
|
|
|
message = '<span class="'+ cls +'">'+ result.value.message +'</span>';
|
|
document.getElementById(formName+'-result').innerHTML = message;
|
|
})
|
|
}
|
|
|
|
//a function for submitting forms, grabs all the form info the the form defined by saveelement. Can also execute an additional page get after the post
|
|
function submitconfig(extra, saveelement, element, url2, refresh)
|
|
{
|
|
append = '?_dc='+Math.random()+'&session='+session;
|
|
var values = [];
|
|
var elementt;
|
|
if (element) elementt = document.getElementById(element);
|
|
values = getFormValues(elementt);
|
|
|
|
var url = ''+extra;
|
|
var d = doXHR(url+append,
|
|
{
|
|
method:'POST',
|
|
sendContent:values,
|
|
headers: {"Content-Type":"application/x-www-form-urlencoded"}
|
|
|
|
});
|
|
if (saveelement) {
|
|
saveelement.value = "$T('smpl-saving')"
|
|
saveelement.disabled = true
|
|
}
|
|
d.addCallback(function (result)
|
|
{
|
|
if (saveelement) {
|
|
saveelement.value = "$T('smpl-saved')"
|
|
saveelement.disabled = false
|
|
}
|
|
if(url2 == "1") {replaceright(result);}
|
|
else if(url2 == "2") {replaceright2(result);}
|
|
else if(url2) {lr(url2,'',refresh);}
|
|
});
|
|
|
|
d.addErrback( function (result)
|
|
{
|
|
if (saveelement) {
|
|
saveelement.value = "$T('smpl-failed')"
|
|
saveelement.disabled = false
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
var replaceright = function (res)
|
|
{
|
|
document.getElementById('Right').innerHTML = res.responseText;
|
|
}
|
|
|
|
var replaceright2 = function (res)
|
|
{
|
|
document.getElementById('Right_bottom').innerHTML = res.responseText;
|
|
}
|
|
|
|
|
|
function mark_all()
|
|
{
|
|
var s;
|
|
var i=0;
|
|
while(s = document.getElementsByTagName("input")[i++])
|
|
{
|
|
if(s.type=='checkbox')
|
|
{
|
|
s.checked=true;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
function submit_marked(nzo_id, action_key)
|
|
{
|
|
extra = 'action_key='+action_key
|
|
var s;
|
|
var i=0;
|
|
while(s = document.getElementsByTagName("input")[i++])
|
|
{
|
|
if(s.type=='checkbox' && s.checked == true)
|
|
{
|
|
extra = extra + '&' + s.name + '=on'
|
|
}
|
|
}
|
|
//submitconfig(extra, '', '', 1)
|
|
url = 'nzb/'+nzo_id+'/bulk_operation'
|
|
lr(url, extra)
|
|
}
|
|
|
|
function unmark_all()
|
|
{
|
|
var s;
|
|
var i=0;
|
|
while(s = document.getElementsByTagName("input")[i++])
|
|
{
|
|
if(s.type=='checkbox')
|
|
{
|
|
s.checked=false;
|
|
}
|
|
}
|
|
}
|
|
|
|
function invert()
|
|
{
|
|
var s;
|
|
var i=0;
|
|
while(s = document.getElementsByTagName("input")[i++])
|
|
{
|
|
if(s.type=='checkbox')
|
|
{
|
|
s.checked=!s.checked;
|
|
}
|
|
}
|
|
}
|
|
|
|
function shutdown()
|
|
{
|
|
window.location='shutdown?session='+session;
|
|
}
|
|
|
|
function restart()
|
|
{
|
|
window.location='config/restart?session='+session;
|
|
}
|
|
|
|
function generateAPIKey()
|
|
{
|
|
session = document.getElementById('apikey').value;
|
|
url = "tapi?mode=config&name=set_apikey&session="+session;
|
|
var res = doSimpleXMLHttpRequest(url);
|
|
res.addCallback(function (res)
|
|
{
|
|
session = res.responseText;
|
|
document.getElementById('apikey').value = res.responseText;
|
|
document.getElementById('addNewSession1').value = res.responseText;
|
|
document.getElementById('addNewSession2').value = res.responseText;
|
|
})
|
|
}
|
|
|
|
function generateNZBKey()
|
|
{
|
|
session = document.getElementById('apikey').value;
|
|
url = "tapi?mode=config&name=set_nzbkey&session="+session;
|
|
var res = doSimpleXMLHttpRequest(url);
|
|
res.addCallback(function (res)
|
|
{
|
|
session = res.responseText;
|
|
document.getElementById('nzbkey').value = res.responseText;
|
|
document.getElementById('addNewSession1').value = res.responseText;
|
|
document.getElementById('addNewSession2').value = res.responseText;
|
|
})
|
|
}
|
|
|
|
//loads up the json for the queue page and changes the values in the document
|
|
function loadingJSON(){
|
|
if (RefreshTime>0) {
|
|
clearTimeout ( jsontimeout );
|
|
jsontimeout = setTimeout("loadingJSON();", RefreshTime*1000);
|
|
}
|
|
var url = "tapi?mode=qstatus&output=json&_dc="+Math.random()+"&session="+session;
|
|
var d = loadJSONDoc(url);
|
|
var gotMetadata = function (info)
|
|
{
|
|
//alert(info["kbpersec"]);
|
|
|
|
speed = info["speed"];
|
|
kbpersec = info["kbpersec"].toFixed(0);
|
|
var paused = info["paused"];
|
|
var pause_int = info["pause_int"];
|
|
//if (paused==true) speed = '';
|
|
|
|
if (paused == true)
|
|
{
|
|
if (pause_int == "0")
|
|
{
|
|
document.getElementById("status").innerHTML = "<span class='paused'>$T('smpl-paused')</span>";
|
|
}
|
|
else
|
|
{
|
|
document.getElementById("status").innerHTML = "<span class='paused'>$T('smpl-paused') ("+pause_int+")</span>";
|
|
}
|
|
document.title = "SABnzbd+ | $T('smpl-paused')";
|
|
document.getElementById("status2").innerHTML = "$T('link-resume')";
|
|
status2 = 1
|
|
//alert("paused");
|
|
} else if (kbpersec>0)
|
|
{
|
|
document.getElementById("status").innerHTML = "<span class='downloading'>$T('smpl-downloading')</span>";
|
|
totalTimeRemain = info["timeleft"];
|
|
dltitle = "SABnzbd+ | "+totalTimeRemain+" | "+speed+"B/s";
|
|
document.title = dltitle;
|
|
document.getElementById("status2").innerHTML = "$T('link-pause')";
|
|
status2 = 0
|
|
//alert("down");
|
|
} else {
|
|
document.getElementById("status").innerHTML = "<span class='idle'>$T('smpl-idle')</span>";
|
|
document.title = "SABnzbd+ | $T('smpl-idle')";
|
|
document.getElementById("status2").innerHTML = "$T('link-pause')";
|
|
status2 = 0
|
|
//alert("idle");
|
|
}
|
|
|
|
document.getElementById("speed").innerHTML = speed;
|
|
document.getElementById("mbleft").innerHTML = info["mbleft"].toFixed(2);
|
|
document.getElementById("mbtotal").innerHTML = info["mb"].toFixed(2);
|
|
document.getElementById("ds1").innerHTML = info["diskspace1"].toFixed(2);
|
|
document.getElementById("ds2").innerHTML = info["diskspace2"].toFixed(2);
|
|
//var perc1 = 1 - (info["jobs"][0]["mbleft"].toFixed(2) / info["jobs"][0]["mb"].toFixed(2))
|
|
//alert(info["jobs"][0]);
|
|
if (info["jobs"]!="") document.getElementById("downloadinfo").innerHTML = "$T('smpl-downloading'): "+info["jobs"][0]["filename"];
|
|
else document.getElementById("downloadinfo").innerHTML = "";
|
|
document.getElementById("have_warnings").innerHTML = info["have_warnings"];
|
|
load = document.getElementById("loadavg")
|
|
if (load) load.innerHTML = info["loadavg"];
|
|
|
|
|
|
};
|
|
var metadataFetchFailed = function (err) {
|
|
//alert("The metadata for MochiKit.Async could not be fetched :(");
|
|
};
|
|
d.addCallbacks(gotMetadata, metadataFetchFailed);
|
|
}
|
|
|
|
|
|
|
|
|
|
//based on plotkit docummentation for dynamic tables
|
|
//var dataTable = null;
|
|
var layout = null;
|
|
var renderer = null;
|
|
var options = null;
|
|
|
|
function initDynamicTable() {
|
|
//dataTable = data;
|
|
<!--#if $color_scheme == 'black'#-->
|
|
options = PlotKit.Base.officeBlack();
|
|
<!--#else #-->
|
|
options = PlotKit.Base.officeBlue();
|
|
<!--#end if #-->
|
|
layout = new Layout("line", options);
|
|
renderer = new SweetCanvasRenderer('graph', layout, options);
|
|
//alert("hi");
|
|
}
|
|
|
|
function chartReload(data) {
|
|
|
|
|
|
<!--#if $color_scheme == 'black'#-->
|
|
var colorScheme = "Black";
|
|
<!--#else #-->
|
|
var colorScheme = "Blue";
|
|
<!--#end if #-->
|
|
// setup layout options
|
|
var themeName = "office" + colorScheme;
|
|
var theme = PlotKit.Base[themeName]();
|
|
MochiKit.Base.update(options, theme);
|
|
|
|
layout.style = "line";
|
|
MochiKit.Base.update(layout.options, options);
|
|
MochiKit.Base.update(renderer.options, options);
|
|
|
|
//layout.addDataset("data", values);
|
|
layout.addDataset("sqrt", [[0, data[0]], [1, data[1]], [2, data[2]], [3, data[3]], [4, data[4]], [5, data[5]], [6, data[6]], [7, data[7]], [8, data[8]],[9, data[9]],[10, data[10]], [11, data[11]], [12, data[12]], [13, data[13]], [14, data[14]], [15, data[15]], [16, data[16]], [17, data[17]], [18, data[18]],[19, data[19]]]);
|
|
|
|
// update
|
|
layout.evaluate();
|
|
renderer.clear();
|
|
renderer.render();
|
|
|
|
}
|
|
|
|
|
|
</script>
|
|
|
|
|
|
</head>
|
|
<body>
|
|
<div id="Container">
|
|
<div id="Header">
|
|
<p class="status">
|
|
$T('status'): <span id="status">$status</span><br />
|
|
$T('smpl-speed'): <span id="speed">$speed</span>B/s<br />
|
|
$T('menu-queue'): <span id="mbleft">$mbleft</span>/<span id="mbtotal">$mb</span>
|
|
</p>
|
|
<div id="logo">
|
|
<a href=""><img id="title" src="static/sabnzbd_small4.png" alt="sabnzbd+" /></a>
|
|
<h2>$T('signOn')</h2>
|
|
</div>
|
|
<!-- <div id="divchart"><canvas id="graph" height="70" width="700"></canvas></div> -->
|
|
<br />
|
|
<div class="centerLinks header-margin light-grey"><a onclick="javascript:toggle('addNew','',{duration:0.2})">[$T('smpl-toggleadd')]</a></div>
|
|
</div>
|
|
<div id="Content">
|
|
<div id="Left">
|
|
<ul id="menu">
|
|
<li><a class="current" href="./">$T('menu-home')</a></li>
|
|
<li><a href="#/queue/" onClick="lr('queue/', 'limit=15', 1, 0);">$T('menu-queue')</a></li>
|
|
<li><a href="#/history/" onClick="lr('history/','limit=15', 1, 0);">$T('menu-history')</a></li>
|
|
<li><a href="#/dv1/" onClick="lr('queue/','', 1, 1);lrb('history/','limit=15',1);">$T('smpl-dualView1')</a></li>
|
|
<li><a href="#/dv2/" onClick="lr('queue/','', 1, 2);lrb('history/','limit=15',1);">$T('smpl-dualView2')</a></li>
|
|
<li><a href="#/config/" onClick="toggle('hiddenNav','blind',{duration:0.2})">$T('menu-config')</a></li>
|
|
<ul id="hiddenNav" class="secondul">
|
|
<li><a class="config" href="#/config/general/" onClick="lr('config/general/','', 0, 0);">$T('cmenu-general')</a></li>
|
|
<li><a class="config" href="#/config/directories/" onClick="lr('config/directories/','', 0, 0);">$T('cmenu-folders')</a> </li>
|
|
<li><a class="config" href="#/config/switches/" onClick="lr('config/switches/','', 0, 0);">$T('cmenu-switches')</a> </li>
|
|
<li><a class="config" href="#/config/server" onClick="lr('config/server/','', 0, 0);">$T('cmenu-servers')</a> </li>
|
|
<li><a class="config" href="#/config/scheduling/" onClick="lr('config/scheduling/','', 0, 0);">$T('cmenu-scheduling')</a> </li>
|
|
<li><a class="config" href="#/config/rss/" onClick="lr('config/rss/','', 0, 0);">$T('cmenu-rss')</a> </li>
|
|
<li><a class="config" href="#/config/email/" onClick="lr('config/email/','', 0, 0);">$T('cmenu-email')</a></li>
|
|
<li><a class="config" href="#/config/newzbin/" onClick="lr('config/newzbin/', '', 0, 0);">$T('cmenu-newzbin')</a></li>
|
|
<li><a class="config" href="#/config/categories/" onClick="lr('config/categories/', '', 0, 0);">$T('cmenu-cat')</a></li>
|
|
<li><a class="config" href="#/config/sorting/" onClick="lr('config/sorting/', '', 0, 0);">$T('cmenu-sorting')</a></li>
|
|
</ul>
|
|
<li><a href="#/connections/" onClick="lr('connections/','', 1, 0);">$T('menu-cons')</a></li>
|
|
<li><a href="#/connections/" onClick="lr('connections/','', 1, 0);">$T('smpl-warnings')(<span id="have_warnings">$have_warnings</span>)</a></li>
|
|
<br />
|
|
<li><a class="bold" id="status2" onClick="toggle_paused()">$statusstr2</a> <a onClick="toggle('hiddenTimedPause','blind',{duration:0.2})"><img src="static/images/bullet_arrow_down.png" border=0 /></a></li>
|
|
<ul id="hiddenTimedPause" class="secondul">
|
|
<li><a class="config" onClick="javascript:timedPause(5)">5 $T("minutes")</a></li>
|
|
<li><a class="config" onClick="javascript:timedPause(15)">15 $T("minutes")</a></li>
|
|
<li><a class="config" onClick="javascript:timedPause(30)">30 $T("minutes")</a></li>
|
|
<li><a class="config" onClick="javascript:timedPause(60)">1 $T("hours")</a></li>
|
|
<li><a class="config" onClick="javascript:timedPause(120)">2 $T("hours")</a></li>
|
|
<li><a class="config" onClick="javascript:timedPause(180)">3 $T("hours")</a></li>
|
|
<li><a class="config" onClick="javascript:timedPause(300)">5 $T("hours")</a></li>
|
|
<li><a class="config" onClick="javascript:timedPause()">$T("smpl-custom")</a></li>
|
|
|
|
</ul>
|
|
<!--#if $varExists('newzbinDetails')#-->
|
|
<li><a onClick="getBookmarks()">$T('smpl-getbookmarks')</a></li>
|
|
<!--#end if#-->
|
|
<br />
|
|
<li><a style="text-decoration:underline;cursor:pointer;" onClick="if(confirm('$T('smpl-restartOK?')')){restart()}">$T('button-restart')</a></li>
|
|
<li><a style="text-decoration:underline;cursor:pointer;" onClick="if(confirm('$T('shutdownOK?')')){shutdown()}">$T('link-shutdown')</a></li>
|
|
<br/>
|
|
<li><a href="$helpuri" target="_blank">$T('menu-wiki')</a></li>
|
|
<li><a href="http://forums.sabnzbd.org" target="_blank">$T('menu-forums')</a></li>
|
|
<li><a href="http://sabnzbd.org/live-chat/" target="_blank">$T('menu-irc')</a></li>
|
|
</ul>
|
|
<!--<input type="checkbox" name="enable_speedlimit" />-->
|
|
<span class="small">$T('speedLimit'): </span><input type="text" id="speedbox" value="$speedlimit" onChange="javascript:doSimpleXMLHttpRequest('tapi?mode=config&name=set_speedlimit&value='+this.value+'&session='+session);">
|
|
<br /><br />
|
|
<center>
|
|
<img src="static/images/drive.png" title="Incomplete" /> <span class="small"><span id="ds1">${diskspace1}</span>GB</span><br />
|
|
<img src="static/images/drive_go.png" title="Complete" /> <span class="small"><span id="ds2">${diskspace2}</span>GB</span>
|
|
|
|
<!--#if $loadavg#-->
|
|
$T('ft-sysload')<br />
|
|
<span class="small"><span id="loadavg">${loadavg}</span></span>
|
|
<!--#end if#-->
|
|
</center>
|
|
|
|
</div>
|
|
<div id="RightContainer" class="left-border">
|
|
<div id="addNew" class="centerLinks" style="overflow: hidden; display: none;">
|
|
<form action="addID" method="get">
|
|
<input type="text" style="width:218px;" name="id" value="$T('enterURL')<!--#if $varExists('newzbinDetails') then $T('enterID') else '' #-->" onfocus="clearForm(this, 'Enter URL<!--#if $varExists('newzbinDetails') then " or Report ID" else "" #-->')" onblur="setForm(this, 'Enter URL<!--#if $varExists('newzbinDetails') then " or Report ID" else "" #-->')">
|
|
<!--#if $cat_list#-->
|
|
<select name="cat" >
|
|
<optgroup label="$T('category')">
|
|
<!--#for $ct in $cat_list#-->
|
|
<option value="$ct">$Tspec($ct)</option>
|
|
<!--#end for#-->
|
|
</optgroup>
|
|
</select>
|
|
<!--#end if#-->
|
|
<select name="pp">
|
|
<optgroup label="$T('pp')">
|
|
<option value="-1" <!--#if $cat_list then "selected" else ""#-->>$T('default')</option>
|
|
<option value="0">$T('none')</option>
|
|
<option value="1">$T('pp-repair')</option>
|
|
<option value="2">$T('pp-unpack')</option>
|
|
<option value="3" <!--#if $cat_list then "" else "selected"#-->>$T('pp-delete')</option>
|
|
</optgroup>
|
|
</select>
|
|
<!--#if $script_list#-->
|
|
<select name="script">
|
|
<optgroup label="$T('script')">
|
|
<!--#for $sc in $script_list#-->
|
|
<option value="$sc">$Tspec($sc)</option>
|
|
<!--#end for#-->
|
|
</optgroup>
|
|
</select>
|
|
<!--#end if#-->
|
|
<select name="priority">
|
|
<optgroup label="$T('priority')">
|
|
<option value="-100" selected>$T('default')</option>
|
|
<option value="2">$T('pr-force')</option>
|
|
<option value="1">$T('pr-high')</option>
|
|
<option value="0">$T('pr-normal')</option>
|
|
<option value="-1">$T('pr-low')</option>>
|
|
</optgroup>
|
|
</select>
|
|
<input type="hidden" value="$session" id="addNewSession1" name="session">
|
|
<input type="submit" class="submitindent2" value="$T("button-add")">
|
|
</form>
|
|
<form action="addFile" method="post" enctype="multipart/form-data">
|
|
<input type="file" style="width:221px" name="nzbfile">
|
|
<!--#if $cat_list#-->
|
|
<select name="cat">
|
|
<optgroup label="$T('category')">
|
|
<!--#for $ct in $cat_list#-->
|
|
<option value="$ct">$Tspec($ct)</option>
|
|
<!--#end for#-->
|
|
</optgroup>
|
|
</select>
|
|
<!--#end if#-->
|
|
<select name="pp">
|
|
<optgroup label="$T('pp')">
|
|
<option value="-1" <!--#if $cat_list then "selected" else ""#-->>$T('default')</option>
|
|
<option value="0">$T('none')</option>
|
|
<option value="1">$T('pp-repair')</option>
|
|
<option value="2">$T('pp-unpack')</option>
|
|
<option value="3" <!--#if $cat_list then "" else "selected"#-->>$T('pp-delete')</option>
|
|
</optgroup>
|
|
</select>
|
|
<!--#if $script_list#-->
|
|
<select name="script">
|
|
<optgroup label="$T('script')">
|
|
<!--#for $sc in $script_list#-->
|
|
<option value="$sc">$Tspec($sc)</option>
|
|
<!--#end for#-->
|
|
</optgroup>
|
|
</select>
|
|
<!--#end if#-->
|
|
<select name="priority">
|
|
<optgroup label="$T('priority')">
|
|
<option value="-100" selected>$T('default')</option>
|
|
<option value="2">$T('pr-force')</option>
|
|
<option value="1">$T('pr-high')</option>
|
|
<option value="0">$T('pr-normal')</option>
|
|
<option value="-1">$T('pr-low')</option>>
|
|
</optgroup>
|
|
</select>
|
|
<input type="hidden" value="$session" id="addNewSession2" name="session">
|
|
<input type="submit" class="submitindent2" value="$T("button-add")">
|
|
</form>
|
|
</div>
|
|
<div id="Right"></div>
|
|
<div id="Right_bottom"></div>
|
|
</div>
|
|
</div>
|
|
<div id="Footer">
|
|
<div id="divchart"><canvas id="graph" height="100" width="700"></canvas></div>
|
|
<span id="downloadinfo"></span><br /><br />
|
|
<p id="versions">$T("smpl-refreshr"): <select id="refreshrate" onchange="javascript:applyrefresh(this.options[this.selectedIndex].value)">
|
|
<option value="2" >2 $T("seconds")</option>
|
|
<option value="3" >3 $T("seconds")</option>
|
|
<option value="5" selected="selected">5 $T("seconds")</option>
|
|
<option value="10" >10 $T("seconds")</option>
|
|
<option value="15" >15 $T("seconds")</option>
|
|
<option value="30" >30 $T("seconds")</option>
|
|
<option value="60" >1 $T("minute")</option>
|
|
<option value="180" >3 $T("minutes")</option>
|
|
<option value="300" >5 $T("minutes")</option>
|
|
<option value="0" >$T("none")</option>
|
|
</select>
|
|
<br />SABnzbd $T('version'): $version | smpl $T('version'): 1.3</a></p>
|
|
<!--#if $warning#-->
|
|
<h2>$T('ft-warning')</h2>
|
|
<b>$warning</b><br />
|
|
<!--#end if#-->
|
|
<!--#if $new_release#-->
|
|
<!--#set $msg=$T('ft-newRelease@1')%($new_release)#-->
|
|
<b>$msg <a href="$new_rel_url" target="_blank">SF.net</a></b><br/>
|
|
<!--#end if#-->
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
|