Browse Source

Merge pull request #544 from Safihre/propegation_delay

Propagation delay & Interfaces fixes
pull/548/merge
shypike 9 years ago
parent
commit
a9a86969ef
  1. 2
      interfaces/Config/templates/_inc_footer_uc.tmpl
  2. 7
      interfaces/Config/templates/_inc_header_uc.tmpl
  3. 6
      interfaces/Config/templates/config_switches.tmpl
  4. 9
      interfaces/Config/templates/login/main.tmpl
  5. 1
      interfaces/Config/templates/staticcfg/css/login.css
  6. 13
      interfaces/Config/templates/staticcfg/css/style.css
  7. BIN
      interfaces/Config/templates/staticcfg/ico/android-192x192.png
  8. BIN
      interfaces/Config/templates/staticcfg/ico/apple-touch-icon-120x120-precomposed.png
  9. BIN
      interfaces/Config/templates/staticcfg/ico/apple-touch-icon-152x152-precomposed.png
  10. BIN
      interfaces/Config/templates/staticcfg/ico/apple-touch-icon-180x180-precomposed.png
  11. BIN
      interfaces/Config/templates/staticcfg/ico/apple-touch-icon-76x76-precomposed.png
  12. BIN
      interfaces/Config/templates/staticcfg/ico/favicon.ico
  13. BIN
      interfaces/Config/templates/staticcfg/ico/faviconpaused.ico
  14. 1
      interfaces/Config/templates/staticcfg/images/logo-arrow.svg
  15. BIN
      interfaces/Config/templates/staticcfg/images/logo-small.png
  16. BIN
      interfaces/Config/templates/staticcfg/images/logo.png
  17. 8
      interfaces/Config/templates/staticcfg/js/script.js
  18. 15
      interfaces/Glitter/templates/include_overlays.tmpl
  19. 3
      interfaces/Glitter/templates/main.tmpl
  20. BIN
      interfaces/Glitter/templates/static/images/logo-small.png
  21. BIN
      interfaces/Glitter/templates/static/images/logo.png
  22. 4
      interfaces/Glitter/templates/static/javascripts/glitter.main.js
  23. 18
      interfaces/Glitter/templates/static/stylesheets/glitter.css
  24. 8
      interfaces/Plush/templates/_inc_header.tmpl
  25. 2
      interfaces/Plush/templates/main.tmpl
  26. 6
      interfaces/Plush/templates/static/javascripts/plush.js
  27. 43
      interfaces/Plush/templates/static/stylesheets/colorschemes/gold/gold.css
  28. BIN
      interfaces/Plush/templates/static/stylesheets/colorschemes/gold/images/sabnzbdplus.ico
  29. 12
      interfaces/smpl/templates/main.tmpl
  30. BIN
      interfaces/smpl/templates/static/images/favicon.ico
  31. BIN
      interfaces/smpl/templates/static/images/newzbin.png
  32. 6
      interfaces/wizard/inc_top.tmpl
  33. BIN
      interfaces/wizard/static/images/classic-th.png
  34. BIN
      interfaces/wizard/static/images/classic.png
  35. BIN
      interfaces/wizard/static/images/favicon.ico
  36. BIN
      interfaces/wizard/static/images/icon_sab.png
  37. BIN
      interfaces/wizard/static/images/plush-th.png
  38. BIN
      interfaces/wizard/static/images/plush.png
  39. BIN
      interfaces/wizard/static/images/smpl-th.png
  40. BIN
      interfaces/wizard/static/images/smpl.png
  41. 11
      interfaces/wizard/static/style.css
  42. 9
      sabnzbd/api.py
  43. 1
      sabnzbd/cfg.py
  44. 2
      sabnzbd/constants.py
  45. 2
      sabnzbd/interface.py
  46. 46
      sabnzbd/nzbqueue.py
  47. 9
      sabnzbd/nzbstuff.py
  48. 7
      sabnzbd/skintext.py

2
interfaces/Config/templates/_inc_footer_uc.tmpl

@ -6,7 +6,7 @@
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title"></h4>
</div>
<div class="modal-body">

7
interfaces/Config/templates/_inc_header_uc.tmpl

@ -28,11 +28,12 @@
<link rel="apple-touch-icon" sizes="76x76" href="${root}staticcfg/ico/apple-touch-icon-76x76-precomposed.png" />
<link rel="apple-touch-icon" sizes="120x120" href="${root}staticcfg/ico/apple-touch-icon-120x120-precomposed.png" />
<link rel="apple-touch-icon" sizes="152x152" href="${root}staticcfg/ico/apple-touch-icon-152x152-precomposed.png" />
<link rel="apple-touch-icon" sizes="180x180" href="${root}staticcfg/ico/apple-touch-icon-180x180-precomposed.png" />
<link rel="apple-touch-icon" sizes="180x180" href="${root}staticcfg/ico/apple-touch-icon-180x180-precomposed.png" />
<link rel="apple-touch-icon" sizes="192x192" href="${root}staticcfg/ico/android-192x192.png" />
<link rel="stylesheet" type="text/css" href="${root}staticcfg/bootstrap/css/bootstrap.min.css" />
<link rel="stylesheet" type="text/css" href="${root}staticcfg/css/style.css?p=$pid" />
<link rel="shortcut icon" href="${root}staticcfg/ico/favicon.ico" />
<link rel="shortcut icon" href="${root}staticcfg/ico/favicon.ico?v=1.1.0" />
<script type="text/javascript">
// Keeping track of the form state
@ -52,7 +53,7 @@
configTranslate.failed = "$T('smpl-failed')";
configTranslate.explainRestart = "$T('explain-Restart')";
configTranslate.wizzardRestart = "$T('wizard-restarting')";
configTranslate.needRestart = "$T('restartRequired')";
configTranslate.needRestart = "$T('restartRequired') $T('explain-needNewLogin')".replace(/\<br(\s*\/|)\>/g, '\n');
configTranslate.buttonRestart = "$T('button-restart')";
configTranslate.confirmLeave = "$T('confirmWithoutSavingPrompt')";
</script>

6
interfaces/Config/templates/config_switches.tmpl

@ -92,6 +92,11 @@
<span class="desc">$T('explain-pre_script')</span>
</div>
<div class="field-pair">
<label class="config" for="propagation_delay">$T('opt-propagation_delay')</label>
<input type="number" name="propagation_delay" id="propagation_delay" value="$propagation_delay" /> <i>$T('minutes')</i>
<span class="desc">$T('explain-propagation_delay')</span>
</div>
<div class="field-pair">
<label class="config" for="top_only">$T('opt-top_only')</label>
<input type="checkbox" name="top_only" id="top_only" value="1" <!--#if int($top_only) > 0 then 'checked="checked"' else ""#--> />
<span class="desc">$T('explain-top_only')</span>
@ -147,7 +152,6 @@
<input type="text" name="unwanted_extensions" id="unwanted_extensions" value="$unwanted_extensions"/>
<span class="desc">$T('explain-unwanted_extensions')</span>
</div>
<div class="field-pair">
<label class="config" for="auto_sort">$T('opt-auto_sort')</label>
<input type="checkbox" name="auto_sort" id="auto_sort" value="1" <!--#if int($auto_sort) > 0 then 'checked="checked"' else ""#--> />

9
interfaces/Config/templates/login/main.tmpl

@ -9,8 +9,9 @@
<link rel="apple-touch-icon" sizes="76x76" href="../staticcfg/ico/apple-touch-icon-76x76-precomposed.png" />
<link rel="apple-touch-icon" sizes="120x120" href="../staticcfg/ico/apple-touch-icon-120x120-precomposed.png" />
<link rel="apple-touch-icon" sizes="152x152" href="../staticcfg/ico/apple-touch-icon-152x152-precomposed.png" />
<link rel="apple-touch-icon" sizes="180x180" href="../staticcfg/ico/apple-touch-icon-180x180-precomposed.png" />
<link rel="shortcut icon" href="../staticcfg/ico/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="../staticcfg/ico/apple-touch-icon-180x180-precomposed.png" />
<link rel="apple-touch-icon" sizes="192x192" href="../staticcfg/ico/android-192x192.png" />
<link rel="shortcut icon" href="../staticcfg/ico/favicon.ico?v=1.1.0" />
<link rel="stylesheet" type="text/css" href="../staticcfg/bootstrap/css/bootstrap.min.css" />
<link rel="stylesheet" type="text/css" href="../staticcfg/css/login.css?p=$pid" />
@ -37,7 +38,7 @@
<button class="btn btn-default"><span class="glyphicon glyphicon-circle-arrow-right"></span> $T('login') </button>
<div class="checkbox text-center">
<div class="checkbox text-center" data-toggle="tooltip" data-placement="bottom" title="$T('explain-sessionExpire')">
<label>
<input type="checkbox" name="remember_me" value="1"> $T('rememberme')
</label>
@ -45,6 +46,8 @@
</form>
</div>
<script type="text/javascript">
// Tooltip
\$('[data-toggle="tooltip"]').tooltip()
// Try-catch in case somebody disabled localstorage
try {
// Set what was done previously

1
interfaces/Config/templates/staticcfg/css/login.css

@ -18,6 +18,7 @@ body {
.logo-header svg {
height: 55px;
width: 198px;
}
.account-wall {

13
interfaces/Config/templates/staticcfg/css/style.css

@ -410,15 +410,18 @@ tr.separator {
background-color: #3C3C3C;
color: white;
border: 0;
padding: 10px 12px;
padding:11px 12px 8px;
}
.modal-header .close {
opacity: 0.7;
opacity: 0.5;
background: transparent;
color: white;
text-shadow: none !important;
font-weight: normal !important;
font-size: 28px;
font-size: 32px;
vertical-align: middle;
margin-top: -5px;
font-family: arial, sans-serif !important;
}
.modal-header .close:hover {
opacity: 1;
@ -801,6 +804,10 @@ input[type="checkbox"] {
padding-right: 0;
}
.navbar .nav>li>a {
height: 50px;
}
.navbar-default {
background-color: #FFF;
border-bottom: 1px solid rgba(0, 0, 0, 0.2);

BIN
interfaces/Config/templates/staticcfg/ico/android-192x192.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
interfaces/Config/templates/staticcfg/ico/apple-touch-icon-120x120-precomposed.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
interfaces/Config/templates/staticcfg/ico/apple-touch-icon-152x152-precomposed.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
interfaces/Config/templates/staticcfg/ico/apple-touch-icon-180x180-precomposed.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
interfaces/Config/templates/staticcfg/ico/apple-touch-icon-76x76-precomposed.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
interfaces/Config/templates/staticcfg/ico/favicon.ico

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
interfaces/Config/templates/staticcfg/ico/faviconpaused.ico

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

1
interfaces/Config/templates/staticcfg/images/logo-arrow.svg

@ -0,0 +1 @@
<svg viewBox="0 0 608 608" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M630.988 320.63V188.324h99.863v-35.62l110.197 101.773L730.85 356.25v-35.62h-99.86z" fill="none" stroke-width="16.62" stroke="#000" transform="matrix(0 2.665 -2.7482 0 1003.016 -1657.67)"/><path d="M121.86 23.913h363.604v266.135h97.89l-279.69 293.667L23.97 290.048h97.89V23.913z" fill="#FFB300" class="logo-arrow-outer"/><path d="M303.664 583.797L122.274 23.975h362.78l-181.39 559.822z" class="logo-arrow-inner" fill="#FFCA28"/></svg>

After

Width:  |  Height:  |  Size: 594 B

BIN
interfaces/Config/templates/staticcfg/images/logo-small.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

BIN
interfaces/Config/templates/staticcfg/images/logo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

8
interfaces/Config/templates/staticcfg/js/script.js

@ -195,7 +195,7 @@ function config_success() {
}
function config_failure() {
$('.saveButton').each(function () {
$(this).removeAttr("disabled").html('<span class="glyphicon glyphicon-remove"></span> '+configTranslate.failed);
$(this).removeAttr("disabled").addClass('btn-danger').html('<span class="glyphicon glyphicon-remove"></span> '+configTranslate.failed);
});
// Can't go yet..
formWasSubmitted = false;
@ -296,13 +296,13 @@ $(document).ready(function () {
datatype: 'json',
beforeSubmit: function () {
$('.saveButton').each(function () {
$(this).attr("disabled", "disabled").html('<span class="glyphicon glyphicon-transfer"></span> ' + configTranslate.saving);
$(this).attr("disabled", "disabled").removeClass('btn-danger').html('<span class="glyphicon glyphicon-transfer"></span> ' + configTranslate.saving);
});
},
success: function (json) {
if (json.error) {
$('#config_err_msg').text(json.error);
setTimeout(config_failure, 1000);
config_failure()
} else if(json.value && json.value.restart_req) {
// Trigger restart question
if(confirm(configTranslate.needRestart + "\n" + configTranslate.buttonRestart + " SABnzbd?")) {
@ -318,7 +318,7 @@ $(document).ready(function () {
}
},
error: function () {
setTimeout(config_failure, 1000);
config_failure()
},
timeout: 3000
});

15
interfaces/Glitter/templates/include_overlays.tmpl

@ -594,9 +594,12 @@
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<img src="./static/images/logo.png" width="120" height="45" alt="" />
<h4 class="modal-title">$T('menu-help')</h4>
</div>
<div class="modal-body">
#include $webdir + "/../../Config/templates/staticcfg/images/logo-full.svg"#
<p><strong>SABnzbd $('version'):</strong> $version</p>
<hr/>
<table>
<tbody>
<tr>
@ -608,15 +611,17 @@
<td><a href="http://forums.sabnzbd.org/" target="_blank">http://forums.sabnzbd.org/</a></td>
</tr>
<tr>
<td><strong>GitHub:</strong></td>
<td><a href="https://github.com/sabnzbd/sabnzbd" target="_blank">https://github.com/sabnzbd/sabnzbd/</a></td>
</tr>
<tr>
<td><strong>$T('menu-irc'):</strong></td>
<td><a href="http://www.sabnzbd.org/live-chat/" target="_blank">http://www.sabnzbd.org/live-chat/</a></td>
</tr>
</tbody>
</table>
<p><strong>SABnzbd $('version'):</strong> $version</p>
<p><small>Copyright (C) 2008-2016, The SABnzbd Team &lt;team@sabnzbd.org&gt;</small></p>
<p><small>$T('yourRights') </small></p>
<hr/>
<p><small>Copyright (C) 2008-2016, The SABnzbd Team &lt;team@sabnzbd.org&gt;<br/>$T('yourRights') </small></p>
</div>
</div>
</div>

3
interfaces/Glitter/templates/main.tmpl

@ -29,7 +29,8 @@
<link rel="apple-touch-icon" sizes="120x120" href="./staticcfg/ico/apple-touch-icon-120x120-precomposed.png" />
<link rel="apple-touch-icon" sizes="152x152" href="./staticcfg/ico/apple-touch-icon-152x152-precomposed.png" />
<link rel="apple-touch-icon" sizes="180x180" href="./staticcfg/ico/apple-touch-icon-180x180-precomposed.png" />
<link rel="shortcut icon" type="image/ico" href="./staticcfg/ico/favicon.ico" data-bind="attr: { 'href': SABIcon }" />
<link rel="apple-touch-icon" sizes="192x192" href="./staticcfg/ico/android-192x192.png" />
<link rel="shortcut icon" type="image/ico" href="./staticcfg/ico/favicon.ico?v=1.0.0" data-bind="attr: { 'href': SABIcon }" />
<link rel="stylesheet" type="text/css" href="./static/bootstrap/css/bootstrap.min.css?p=$pid" />
<link rel="stylesheet" type="text/css" href="./static/stylesheets/glitter.css?p=$pid" />

BIN
interfaces/Glitter/templates/static/images/logo-small.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

BIN
interfaces/Glitter/templates/static/images/logo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

4
interfaces/Glitter/templates/static/javascripts/glitter.main.js

@ -102,9 +102,9 @@ function ViewModel() {
// Dynamic icon
self.SABIcon = ko.pureComputed(function() {
if(self.downloadsPaused()) {
return './staticcfg/ico/faviconpaused.ico';
return './staticcfg/ico/faviconpaused.ico?v=1.1.0';
} else {
return './staticcfg/ico/favicon.ico';
return './staticcfg/ico/favicon.ico?v=1.1.0';
}
})

18
interfaces/Glitter/templates/static/stylesheets/glitter.css

@ -1499,12 +1499,18 @@ input[name="nzbURL"] {
/* HELP MODAL */
#modal-help {
#modal-help .modal-body {
text-align: center;
}
#modal-help svg {
margin: 0.5em 0 0.5em;
height: 65px;
width: 234px;
}
#modal-help table {
margin: 1em auto;
margin: 0.5em auto;
text-align: left;
border-collapse: collapse;
}
@ -1524,6 +1530,14 @@ input[name="nzbURL"] {
text-decoration: underline;
}
#modal-help hr {
margin: 0.75em 0;
}
#modal-help small {
color: #888;
}
/* FILES MODAL */
#modal-item-files .form-group {

8
interfaces/Plush/templates/_inc_header.tmpl

@ -15,11 +15,10 @@
<link rel="stylesheet" type="text/css" href="${path}static/stylesheets/jqueryui/overcast/jquery-ui-1.8.15.custom.css?$version"/>
<link rel="stylesheet" type="text/css" href="${path}static/stylesheets/rateit/rateit.css"/>
<link rel="shortcut icon" type="image/ico" href="./staticcfg/ico/favicon.ico?v=1.1.0"/>
#if $color_scheme#
<link rel="shortcut icon" type="image/ico" href="${path}static/stylesheets/colorschemes/$color_scheme/images/sabnzbdplus.ico"/>
<link rel="stylesheet" type="text/css" href="${path}static/stylesheets/colorschemes/$color_scheme/${color_scheme}.css?$version"/>
#else#
<link rel="shortcut icon" type="image/ico" href="${path}static/stylesheets/colorschemes/gold/images/sabnzbdplus.ico"/>
<link rel="stylesheet" type="text/css" href="${path}static/stylesheets/colorschemes/gold/gold.css?$version"/>
#end if#
@ -27,7 +26,8 @@
<link rel="apple-touch-icon" sizes="76x76" href="./staticcfg/ico/apple-touch-icon-76x76-precomposed.png" />
<link rel="apple-touch-icon" sizes="120x120" href="./staticcfg/ico/apple-touch-icon-120x120-precomposed.png" />
<link rel="apple-touch-icon" sizes="152x152" href="./staticcfg/ico/apple-touch-icon-152x152-precomposed.png" />
<link rel="apple-touch-icon" sizes="180x180" href="./staticcfg/ico/apple-touch-icon-180x180-precomposed.png" />
<link rel="apple-touch-icon" sizes="180x180" href="./staticcfg/ico/apple-touch-icon-180x180-precomposed.png" />
<link rel="apple-touch-icon" sizes="192x192" href="./staticcfg/ico/android-192x192.png" />
<script type="text/javascript" src="${path}static/javascripts/lib.js?$version"></script>
@ -89,7 +89,7 @@
#end if#
</ul>
<ul class="menu" id="navigation_menu_left">
<li#if $pane=="Main"# class="active first"#else# class="first"#end if#><a href="${path}"><span class="icon_nav_download">$T('Plush-downloads').capitalize()</span></a></li>
<li#if $pane=="Main"# class="active first"#else# class="first"#end if#><a href="${path}"><span class="icon_nav_download">#include $webdir + "/../../Config/templates/staticcfg/images/logo-arrow.svg"# $T('Plush-downloads').capitalize()</span></a></li>
<li#if $pane=="Status"# class="active"#end if#><a href="${path}status/"><span class="icon_nav_connections">$T('menu-cons').capitalize()</span></a></li>
<li#if $pane=="RSS"# class="active"#end if#><a href="${path}config/rss/"><span class="icon_nav_rss">$T('rss').upper()</span></a></li>
<li#if $pane!="RSS" and $pane!="Nzo" and ($pane=="Config" or $path=='../../')# class="active last"#else# class="last"#end if#><a href="${path}config/"><span class="icon_nav_config">$T('menu-config').capitalize()</span></a></li>

2
interfaces/Plush/templates/main.tmpl

@ -77,7 +77,7 @@
</div>
<div class="centerpiece">
<div class="main_sprite_container sprite_rounded_area_bg" id="time-left"><p><span id="stats_eta">&sdot;</span>&nbsp;$T('Plush-left')</p></div>
<div class="sabnzbd_logo main_sprite_container sprite_sabnzbdplus_logo"></div>
<div class="sabnzbd_logo main_sprite_container"><!--#include $webdir + "/../../Config/templates/staticcfg/images/logo-full.svg"#--></div>
<div class="main_sprite_container sprite_rounded_area_bg_edged" id="speed"><p><span id="stats_speed">&sdot;</span></p></div>
<div class="queue-buttons" id="speed-wrapper">
<ul>

6
interfaces/Plush/templates/static/javascripts/plush.js

@ -1251,6 +1251,12 @@ $.plush.histprevslots = $.plush.histnoofslots; // for the next refresh
$('#queue-pagination span').removeClass('loading'); // Remove spinner graphic from pagination
$('#manual_refresh_wrapper').removeClass('refreshing'); // Refresh state notification
},
error: function(xhr){
// Only reason for a 404 error could be a login failure -> redirect
if(xhr.status == 404) {
document.location=document.location;
}
}
});

43
interfaces/Plush/templates/static/stylesheets/colorschemes/gold/gold.css

@ -291,8 +291,32 @@ body {
background-position:6px 0px;
}
.navigation ul li a span.icon_nav_download { background-image: url('images/nav/downloads-grey.png'); }
.navigation ul li.active a span.icon_nav_download, .navigation ul li a:hover span.icon_nav_download { background-image: url('images/nav/downloads.png'); }
.navigation ul li a span.icon_nav_download {
padding-left: 0;
}
.navigation ul li a span.icon_nav_download svg {
width: 16px;
height: 16px;
display: block;
float: left;
margin: 4px 5px 0px 4px;
}
/* When logo is inactive (grey) and then hovered */
.navigation ul li:not(.active) a span.icon_nav_download svg .logo-arrow-outer {
fill: #B9B9B9;
}
.navigation ul li:not(.active) a span.icon_nav_download svg .logo-arrow-inner {
fill: #D5D5D5;
}
.navigation ul li:not(.active) a:hover span.icon_nav_download svg .logo-arrow-outer {
fill: #FFB300 ;
}
.navigation ul li:not(.active) a:hover span.icon_nav_download svg .logo-arrow-inner {
fill: #FFCA28;
}
.navigation ul li a span.icon_nav_connections { background-image: url('images/nav/connections-grey.png'); }
.navigation ul li.active a span.icon_nav_connections, .navigation ul li a:hover span.icon_nav_connections { background-image: url('images/nav/connections.png'); }
.navigation ul li a span.icon_nav_rss { background-image: url('images/nav/rss-grey.png'); }
@ -699,7 +723,7 @@ body {
.centerpiece {
margin: auto;
padding:13px 0 0 20px;
width:350px;
width:380px;
}
.sprite_sabnzbdplus_logo {
@ -708,9 +732,12 @@ body {
.sabnzbd_logo {
float: left;
height: 40px;
padding-left: 50px;
padding-right: 50px;
padding-top: 14px;
}
.sabnzbd_logo svg {
height: 35px;
width: 126px;
}
#speed, #time-left {
@ -725,12 +752,12 @@ body {
/* stats next to logo */
#speed {
float: left;
margin-left: 24px;
margin-left: 15px;
}
#time-left {
float: left;
margin-right: 24px;
margin-right: 15px;
width: 88px;
}

BIN
interfaces/Plush/templates/static/stylesheets/colorschemes/gold/images/sabnzbdplus.ico

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

12
interfaces/smpl/templates/main.tmpl

@ -12,13 +12,14 @@
<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="./staticcfg/ico/favicon.ico" />
<link rel="shortcut icon" href="./staticcfg/ico/favicon.ico?v=1.1.0" />
<meta name="apple-mobile-web-app-title" content="SABnzbd" />
<link rel="apple-touch-icon" sizes="76x76" href="./staticcfg/ico/apple-touch-icon-76x76-precomposed.png" />
<link rel="apple-touch-icon" sizes="120x120" href="./staticcfg/ico/apple-touch-icon-120x120-precomposed.png" />
<link rel="apple-touch-icon" sizes="152x152" href="./staticcfg/ico/apple-touch-icon-152x152-precomposed.png" />
<link rel="apple-touch-icon" sizes="180x180" href="./staticcfg/ico/apple-touch-icon-180x180-precomposed.png" />
<link rel="apple-touch-icon" sizes="180x180" href="./staticcfg/ico/apple-touch-icon-180x180-precomposed.png" />
<link rel="apple-touch-icon" sizes="192x192" href="./staticcfg/ico/android-192x192.png" />
<script type="text/javascript" src="static/MochiKit/MochiKit.js"></script>
<script type="text/javascript" src="static/PlotKit/PlotKit.js"></script>
@ -549,7 +550,12 @@ function loadtitle() {
d = doSimpleXMLHttpRequest('tapi/', {mode: 'history', name: 'delete', value: elem, del_files: del, _dc: Math.random(), session: session});
}
function handleServerError(){}
function handleServerError(result){
// Only reason for a 404 error could be a login failure -> redirect
if(result.number == 404) {
document.location=document.location;
}
}
function killTimer(){
clearTimeout (timerId2);

BIN
interfaces/smpl/templates/static/images/favicon.ico

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
interfaces/smpl/templates/static/images/newzbin.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 694 B

6
interfaces/wizard/inc_top.tmpl

@ -5,9 +5,11 @@
<title>$T('wizard-quickstart')</title>
<link rel="stylesheet" type="text/css" href="../staticcfg/bootstrap/css/bootstrap.min.css?pid=$version"/>
<link rel="stylesheet" type="text/css" href="static/style.css?pid=$version"/>
<link rel="shortcut icon" href="../staticcfg/ico/favicon.ico" />
<link rel="shortcut icon" href="../staticcfg/ico/favicon.ico?v=1.1.0" />
<script type="text/javascript" src="../staticcfg/js/jquery-1.11.2.min.js"></script>
<script type="text/javascript" src="../staticcfg/bootstrap/js/bootstrap.min.js"></script>
</head>
<body>
<img id="logo" src="static/images/icon_sab.png" alt="SABnzbd" />
<div id="logo">
#include $webdir + "/../Config/templates/staticcfg/images/logo-full.svg"#
</div>

BIN
interfaces/wizard/static/images/classic-th.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

BIN
interfaces/wizard/static/images/classic.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

BIN
interfaces/wizard/static/images/favicon.ico

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

BIN
interfaces/wizard/static/images/icon_sab.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

BIN
interfaces/wizard/static/images/plush-th.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

BIN
interfaces/wizard/static/images/plush.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

BIN
interfaces/wizard/static/images/smpl-th.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

BIN
interfaces/wizard/static/images/smpl.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

11
interfaces/wizard/static/style.css

@ -12,17 +12,18 @@ body {
#inner {
background-color: #fff;
padding: 4px 32px 20px 32px;
/*margin:5px;*/
}
#content {
min-height: 550px;
}
#logo {
float: center;
/*margin-top:30px;*/
z-index: 40;
margin-bottom: -40px;
margin-bottom: -39px;
margin-top: 20px;
}
#logo svg {
height: 55px;
width: 198px;
}
.language {
min-width: 150px;

9
sabnzbd/api.py

@ -1351,6 +1351,7 @@ def build_queue(web_dir=None, root=None, verbose=False, prim=True, webdir='', ve
bytesleft = pnfo.bytes_left
bytes = pnfo.bytes
average_date = pnfo.avg_date
is_propagating = (pnfo.avg_stamp + float(cfg.propagation_delay() * 60)) > time.time()
status = pnfo.status
priority = pnfo.priority
mbleft = (bytesleft / MEBI)
@ -1382,7 +1383,9 @@ def build_queue(web_dir=None, root=None, verbose=False, prim=True, webdir='', ve
slot['size'] = format_bytes(bytes)
slot['sizeleft'] = format_bytes(bytesleft)
if not Downloader.do.paused and status not in (Status.PAUSED, Status.FETCHING, Status.GRABBING) and not found_active:
if status == Status.CHECKING:
if is_propagating:
slot['status'] = 'Propagating'
elif status == Status.CHECKING:
slot['status'] = Status.CHECKING
else:
slot['status'] = Status.DOWNLOADING
@ -1405,8 +1408,8 @@ def build_queue(web_dir=None, root=None, verbose=False, prim=True, webdir='', ve
slot['percentage'] = "%s" % (int(((mb - mbleft) / mb) * 100))
slot['missing'] = missing
if (Downloader.do.paused or Downloader.do.postproc or status not in (Status.DOWNLOADING, Status.QUEUED)) \
and priority != TOP_PRIORITY:
if (Downloader.do.paused or Downloader.do.postproc or is_propagating or \
status not in (Status.DOWNLOADING, Status.QUEUED)) and priority != TOP_PRIORITY:
slot['timeleft'] = '0:00:00'
slot['eta'] = 'unknown'
else:

1
sabnzbd/cfg.py

@ -145,6 +145,7 @@ backup_for_duplicates = OptionBool('misc', 'backup_for_duplicates', True)
ignore_samples = OptionNumber('misc', 'ignore_samples', 0, 0, 2)
create_group_folders = OptionBool('misc', 'create_group_folders', False)
auto_sort = OptionBool('misc', 'auto_sort', False)
propagation_delay = OptionNumber('misc', 'propagation_delay', 0)
folder_rename = OptionBool('misc', 'folder_rename', True)
folder_max_length = OptionNumber('misc', 'folder_max_length', DEF_FOLDER_MAX, 20, 65000)
pause_on_pwrar = OptionBool('misc', 'pause_on_pwrar', True)

2
sabnzbd/constants.py

@ -25,7 +25,7 @@ POSTPROC_QUEUE_VERSION = 2
REC_RAR_VERSION = 500
PNFO = namedtuple('PNFO', 'repair unpack delete script nzo_id filename password '
'unpackstrht msgid category url bytes_left bytes '
'unpackstrht msgid category url bytes_left bytes avg_stamp '
'avg_date finished_files active_files queued_files status priority missing')
QNFO = namedtuple('QNFO', 'bytes bytes_left list q_size_list q_fullsize')

2
sabnzbd/interface.py

@ -1433,7 +1433,7 @@ class ConfigFolders(object):
SWITCH_LIST = \
('par2_multicore', 'par_option', 'enable_unrar', 'enable_unzip', 'enable_filejoin',
'enable_tsjoin', 'overwrite_files', 'top_only',
'auto_sort', 'check_new_rel', 'auto_disconnect', 'flat_unpack',
'auto_sort', 'propagation_delay', 'check_new_rel', 'auto_disconnect', 'flat_unpack',
'safe_postproc', 'no_dupes', 'replace_spaces', 'replace_dots', 'replace_illegal', 'auto_browser',
'ignore_samples', 'pause_on_post_processing', 'quick_check', 'nice', 'ionice',
'pre_script', 'pause_on_pwrar', 'ampm', 'sfv_check', 'folder_rename',

46
sabnzbd/nzbqueue.py

@ -750,18 +750,16 @@ class NzbQueue(TryList):
""" Check whether there are any pending articles for the downloader """
if not self.__nzo_list:
return False
if self.__top_only:
for nzo in self.__nzo_list:
# Ignore any items that are in a paused or grabbing state
if nzo.status not in (Status.PAUSED, Status.GRABBING):
return not nzo.server_in_try_list(server)
else:
# Check if this server is allowed for any object, then return if we've tried this server.
for nzo in self.__nzo_list:
if nzo.status not in (Status.PAUSED, Status.GRABBING):
if nzo.server_allowed(server):
# Check if this server is allowed for any object, then return if we've tried this server.
for nzo in self.__nzo_list:
# Not when queue paused and not a forced item
if (nzo.status not in (Status.PAUSED, Status.GRABBING) and not sabnzbd.downloader.Downloader.do.paused) or nzo.priority == TOP_PRIORITY:
# Check if past propagation delay, or forced
if not cfg.propagation_delay() or nzo.priority == TOP_PRIORITY or (nzo.avg_stamp + float(cfg.propagation_delay() * 60)) < time.time():
# Check if category allowed
if nzo.server_allowed(server) or self.__top_only:
return not self.server_in_try_list(server)
return False
return False
@synchronized(NZBQUEUE_LOCK)
def has_forced_items(self):
@ -775,27 +773,19 @@ class NzbQueue(TryList):
@synchronized(NZBQUEUE_LOCK)
def get_article(self, server, servers):
if self.__top_only:
if self.__nzo_list:
for nzo in self.__nzo_list:
# Not when queue paused and not a forced item
if (nzo.status not in (Status.PAUSED, Status.GRABBING) and not sabnzbd.downloader.Downloader.do.paused) or nzo.priority == TOP_PRIORITY:
if nzo.server_allowed(server):
article = nzo.get_article(server, servers)
if article:
return article
else:
for nzo in self.__nzo_list:
# Not when queue paused and not a forced item
if (nzo.status not in (Status.PAUSED, Status.GRABBING) and not sabnzbd.downloader.Downloader.do.paused) or nzo.priority == TOP_PRIORITY:
# Don't try to get an article if server is in try_list of nzo
if not nzo.server_in_try_list(server) and nzo.server_allowed(server):
for nzo in self.__nzo_list:
# Not when queue paused and not a forced item
if (nzo.status not in (Status.PAUSED, Status.GRABBING) and not sabnzbd.downloader.Downloader.do.paused) or nzo.priority == TOP_PRIORITY:
# Check if past propagation delay, or forced
if not cfg.propagation_delay() or nzo.priority == TOP_PRIORITY or (nzo.avg_stamp + float(cfg.propagation_delay() * 60)) < time.time():
# Don't try to get an article if server is in try_list of nzo and category allowed by server
if nzo.server_allowed(server) and (not nzo.server_in_try_list(server) or self.__top_only):
article = nzo.get_article(server, servers)
if article:
return article
# No articles for this server, block server (until reset issued)
# No articles for this server, block server (until reset issued)
if not self.__top_only:
self.add_to_try_list(server)
@synchronized(NZBQUEUE_LOCK)

9
sabnzbd/nzbstuff.py

@ -1093,7 +1093,7 @@ class NzbObject(TryList):
self.save_to_disk()
@property
def final_name_pw(self):
def final_name_labeled(self):
prefix = ''
if self.duplicate:
prefix = T('DUPLICATE') + ' / ' # : Queue indicator for duplicate job
@ -1111,6 +1111,9 @@ class NzbObject(TryList):
dif = int(self.wait - time.time() + 0.5)
if dif > 0:
prefix += T('WAIT %s sec') % dif + ' / ' # : Queue indicator for waiting URL fetch
if (self.avg_stamp + float(cfg.propagation_delay() * 60)) > time.time() and self.priority != TOP_PRIORITY:
wait_time = int((self.avg_stamp + float(cfg.propagation_delay() * 60) - time.time())/60 + 0.5)
prefix += T('PROPAGATING %s min') % wait_time + ' / ' # : Queue indicator while waiting for propagtion of post
return '%s%s' % (prefix, self.final_name)
@property
@ -1485,9 +1488,9 @@ class NzbObject(TryList):
avg_date = time.mktime(avg_date.timetuple())
return PNFO(self.repair, self.unpack, self.delete, self.script,
self.nzo_id, self.final_name, self.password, {},
self.nzo_id, self.final_name_labeled, self.password, {},
'', self.cat, self.url,
bytes_left_all, self.bytes, avg_date,
bytes_left_all, self.bytes, self.avg_stamp, avg_date,
finished_files, active_files, queued_files, self.status, self.priority,
len(self.nzo_info.get('missing_art_log', []))
)

7
sabnzbd/skintext.py

@ -44,6 +44,7 @@ SKIN_TEXT = {
'post-QuickCheck' : TT('Quick Check...'), #: PP status
'post-Verifying' : TT('Verifying...'), #: PP status
'post-Downloading' : TT('Downloading'), #: Pseudo-PP status, in reality used for Queue-status
'post-Propagating' : TT('Propagation delay'),
'post-Checking' : TT('Checking'), #: PP status
'sch-frequency' : TT('Frequency'), #: #: Config->Scheduler
@ -296,12 +297,14 @@ SKIN_TEXT = {
# Configuration
'confgFile' : TT('Config File'),
'cache' : TT('Used cache'), #: Main config page, how much cache is in use
'explain-Restart' : TT('This will restart SABnzbd.<br />Use it when you think the program has a stability problem.<br />Downloading will be paused before the restart and resume afterwards.'),
'explain-Restart' : TT('This will restart SABnzbd.<br />Use it when you think the program has a stability problem.<br />Downloading will be paused before the restart and resume afterwards.') + TT('<br />If authentication is enabled, you will need to login again.'),
'explain-needNewLogin' : TT('<br />If authentication is enabled, you will need to login again.'),
'button-restart' : TT('Restart'),
'explain-orphans' : TT('There are orphaned jobs in the download folder.<br />You can choose to delete them (including files) or send them back to the queue.'),
'button-repair' : TT('Repair'),
'explain-Repair' : TT('The "Repair" button will restart SABnzbd and do a complete<br />reconstruction of the queue content, preserving already downloaded files.<br />This will modify the queue order.'),
'confirmWithoutSavingPrompt' : TT('Changes have not been saved, and will be lost.'),
'explain-sessionExpire': TT('When your IP address changes or SABnzbd is restarted the session will expire.'),
#'explain-Shutdown' : TT('This will end the SABnzbd process. <br />You will be unable to access SABnzbd and no downloading will take place until the service is started again.'),
'version' : TT('Version'),
'uptime' : TT('Uptime'),
@ -465,6 +468,8 @@ SKIN_TEXT = {
'explain-auto_disconnect' : TT('Disconnect from Usenet server(s) when queue is empty or paused.'),
'opt-auto_sort' : TT('Sort by Age'),
'explain-auto_sort' : TT('Automatically sort items by (average) age.'),
'opt-propagation_delay' : TT('Propagation delay'),
'explain-propagation_delay' : TT('Posts will be paused untill they are at least this age. Setting job priority to Force will skip the delay.'),
'opt-check_new_rel' : TT('Check for New Release'),
'explain-check_new_rel' : TT('Weekly check for new SABnzbd release.'),
'also-test' : TT('Also test releases'), #: Pick list for weekly test for new releases

Loading…
Cancel
Save