diff --git a/deluge/ui/webui/config_forms.py b/deluge/ui/webui/config_forms.py index b48e43163..ae10e296d 100644 --- a/deluge/ui/webui/config_forms.py +++ b/deluge/ui/webui/config_forms.py @@ -58,16 +58,6 @@ class WebCfgForm(forms.Form): config.set(key, value) config.save() -class CookieCfgForm(forms.Form): - "config base for webui" - def initial_data(self): - return dict(config) - - def save(self, data): - config.update(data) - config.save_config() - - class CfgForm(forms.Form): "config base for deluge-cfg" def initial_data(self): diff --git a/deluge/ui/webui/config_tabs_webui.py b/deluge/ui/webui/config_tabs_webui.py index d3e7ef6b7..f1ebae247 100644 --- a/deluge/ui/webui/config_tabs_webui.py +++ b/deluge/ui/webui/config_tabs_webui.py @@ -54,6 +54,7 @@ class Template(config_forms.WebCfgForm): template = forms.ChoiceField( label=_("Template"), choices = _templates) button_style = forms.IntChoiceField(_("Button style"),_button_choices) + refresh_secs = forms.IntegerField(label= _("Auto refresh (seconds)"), min_value=2, max_value=60*60) cache_templates = forms.CheckBox(_("Cache templates")) def post_save(self): diff --git a/deluge/ui/webui/page_decorators.py b/deluge/ui/webui/page_decorators.py index 775368d74..07e8bbc17 100644 --- a/deluge/ui/webui/page_decorators.py +++ b/deluge/ui/webui/page_decorators.py @@ -20,10 +20,11 @@ def deluge_page_noauth(func): add http headers;print result of func """ def deco(self, name = None): - web.header("Content-Type", "text/html; charset=utf-8") - web.header("Cache-Control", "no-cache, must-revalidate") - res = func(self, name) #deluge_page_noauth - print res + render.set_global("is_auto_refreshed", False); + web.header("Content-Type", "text/html; charset=utf-8") + web.header("Cache-Control", "no-cache, must-revalidate") + res = func(self, name) #deluge_page_noauth + print res deco.__name__ = func.__name__ return deco @@ -112,11 +113,12 @@ def torrent(func): return deco def auto_refreshed(func): - "adds a refresh header" + """" + sets 'is_auto_refreshed' global for templates + note : decorate AFTER deluge_page_* + """ def deco(self, name = None): - if getcookie('auto_refresh') == '1': - web.header("Refresh", "%i ; url=%s" % - (int(getcookie('auto_refresh_secs',10)),self_url())) + render.set_global("is_auto_refreshed", True); return func(self, name) #auto_refreshed deco.__name__ = func.__name__ return deco diff --git a/deluge/ui/webui/render.py b/deluge/ui/webui/render.py index 99207e44b..97d7ee3ba 100644 --- a/deluge/ui/webui/render.py +++ b/deluge/ui/webui/render.py @@ -217,7 +217,8 @@ template.Template.globals.update({ 'base':'', #updated when running within apache. 'id_to_label':id_to_label, 'include_javascript':page_manager.include_javascript, - 'ajax_javascript':page_manager.include_javascript + 'ajax_javascript':page_manager.include_javascript, + 'is_auto_refreshed':False }) #/template-defs diff --git a/deluge/ui/webui/static/refresh.js b/deluge/ui/webui/static/refresh.js new file mode 100644 index 000000000..6e399d02f --- /dev/null +++ b/deluge/ui/webui/static/refresh.js @@ -0,0 +1,56 @@ +/* +(c) Martijn Voncken mvoncken@gmail.com +License : GPLv3 + +quick and dirty auto-refresh timer. +Our users have waited too long for a new auto-refresh. +I need to get things done (even if it's ot pretty). ;with the least dependencies for a backport to 1.05 +*/ +var seconds=0; +var refresh_secs = 10; +var prc = 0; +var timer_active = 0; +function continue_timer(){ + if (!timer_active) { + return; + } + seconds+=0.1; + if (seconds > refresh_secs){ + timer_active = 0; + do_refresh(); + } + prc = ((seconds / refresh_secs) * 100 ); + el("timer_bar").style.width = prc + "%"; + setTimeout("continue_timer()",100) +} + +function do_refresh(){ + location.reload(true); +} + +function start_timer(){ + timer_active = 1; + continue_timer(); + el("timer_pause").style.display = "none"; + el("timer_start").style.display = "inline"; + el("timer_outer").title = "Auto refresh:Active; click here to pause"; + setCookie('auto_refresh',"1"); +} +function stop_timer(){ + timer_active = 0; + el("timer_pause").style.display = "inline"; + el("timer_start").style.display = "none"; + el("timer_outer").title = "Auto refresh:Paused; click here to start"; + setCookie('auto_refresh',"0"); +} + + +function toggle_timer() { + if (timer_active) { + stop_timer(); + } + else { + start_timer(); + } +} + diff --git a/deluge/ui/webui/templates/classic/header.html b/deluge/ui/webui/templates/classic/header.html index 2b6f413cd..08c9ba71f 100644 --- a/deluge/ui/webui/templates/classic/header.html +++ b/deluge/ui/webui/templates/classic/header.html @@ -8,6 +8,7 @@ $def with (title, active_tab="NONE") + @@ -46,9 +47,13 @@ $for id, title, url in admin_pages: class="tab_button" href='$base$url'>$title Faq - - +$if is_auto_refreshed: +
+ +