From 2d588a5006a8deab707f13ee870db9f2a8f3624c Mon Sep 17 00:00:00 2001 From: HelloZeroNet Date: Fri, 3 Apr 2015 14:31:15 +0200 Subject: [PATCH] Utf8 js merge error fix, no peer found error fix, Large site confirmation dialog display fix --- src/Debug/DebugMedia.py | 10 +++---- src/Site/Site.py | 2 +- src/Ui/media/Loading.coffee | 11 ++++++++ src/Ui/media/Wrapper.coffee | 23 ++++++++-------- src/Ui/media/all.js | 52 +++++++++++++++++++++++-------------- 5 files changed, 62 insertions(+), 36 deletions(-) diff --git a/src/Debug/DebugMedia.py b/src/Debug/DebugMedia.py index f0a23430..a28d7982 100644 --- a/src/Debug/DebugMedia.py +++ b/src/Debug/DebugMedia.py @@ -34,7 +34,7 @@ def merge(merged_path): if not changed: return # Assets not changed, nothing to do if os.path.isfile(merged_path): # Find old parts to avoid unncessary recompile - merged_old = open(merged_path, "rb").read() + merged_old = open(merged_path, "rb").read().decode("utf8") old_parts = {} for match in re.findall("(/\* ---- (.*?) ---- \*/(.*?)(?=/\* ----|$))", merged_old, re.DOTALL): old_parts[match[1]] = match[2].strip("\n\r") @@ -52,7 +52,7 @@ def merge(merged_path): command = config.coffeescript_compiler % os.path.join(*file_path.split("/")) # Fix os path separator s = time.time() compiler = subprocess.Popen(command, shell=True, stderr=subprocess.STDOUT, stdout=subprocess.PIPE) - out = compiler.stdout.read() + out = compiler.stdout.read().decode("utf8") logging.debug("Running: %s (Done in %.2fs)" % (command, time.time()-s)) if out and out.startswith("("): parts.append(out) @@ -63,14 +63,14 @@ def merge(merged_path): else: # Not changed use the old_part parts.append(old_parts[file_path]) else: # Add to parts - parts.append(open(file_path).read()) + parts.append(open(file_path).read().decode("utf8")) - merged = "\n".join(parts) + merged = u"\n".join(parts) if ext == "css": # Vendor prefix css from lib.cssvendor import cssvendor merged = cssvendor.prefix(merged) merged = merged.replace("\r", "") - open(merged_path, "wb").write(merged) + open(merged_path, "wb").write(merged.encode("utf8")) logging.debug("Merged %s (%.2fs)" % (merged_path, time.time()-s_total)) diff --git a/src/Site/Site.py b/src/Site/Site.py index d6fa3cab..e196009f 100644 --- a/src/Site/Site.py +++ b/src/Site/Site.py @@ -225,7 +225,7 @@ class Site: event_done.get() # Wait for done if len(published) < min(len(self.peers), limit): time.sleep(0.2) # If less than we need sleep a bit - if len(published) == 0: gevent.join(publishers) # No successful publish, wait for all publisher + if len(published) == 0: gevent.joinall(publishers) # No successful publish, wait for all publisher self.log.info("Successfuly published to %s peers" % len(published)) return len(published) diff --git a/src/Ui/media/Loading.coffee b/src/Ui/media/Loading.coffee index ca2bf354..5bd812ac 100644 --- a/src/Ui/media/Loading.coffee +++ b/src/Ui/media/Loading.coffee @@ -17,6 +17,17 @@ class Loading @printLine "   Connecting..." + showTooLarge: (site_info) -> + if $(".console .button-setlimit").length == 0 # Not displaying it yet + line = @printLine("Site size: #{parseInt(site_info.settings.size/1024/1024)}MB is larger than default allowed #{parseInt(site_info.size_limit)}MB", "warning") + button = $("Open site and set size limit to #{site_info.next_size_limit}MB") + button.on "click", (=> return window.wrapper.setSizeLimit(site_info.next_size_limit) ) + line.after(button) + setTimeout (=> + @printLine('Ready.') + ), 100 + + # We dont need loadingscreen anymore hideScreen: -> diff --git a/src/Ui/media/Wrapper.coffee b/src/Ui/media/Wrapper.coffee index 8f7d41a0..a611c745 100644 --- a/src/Ui/media/Wrapper.coffee +++ b/src/Ui/media/Wrapper.coffee @@ -227,8 +227,12 @@ class Wrapper @address = site_info.address @setSiteInfo site_info - window.document.title = site_info.content.title+" - ZeroNet" - @log "Setting title to", window.document.title + if site_info.settings.size > site_info.size_limit*1024*1024 # Site size too large and not displaying it yet + @loading.showTooLarge(site_info) + + if site_info.content + window.document.title = site_info.content.title+" - ZeroNet" + @log "Setting title to", window.document.title # Got setSiteInfo from websocket UiServer @@ -243,20 +247,16 @@ class Wrapper if site_info.event[1] == window.inner_path # File downloaded we currently on @loading.hideScreen() if not @site_info then @reloadSiteInfo() + if site_info.content + window.document.title = site_info.content.title+" - ZeroNet" + @log "Setting title to", window.document.title if not $(".loadingscreen").length # Loading screen already removed (loaded +2sec) @notifications.add("modified", "info", "New version of this page has just released.
Reload to see the modified content.") # File failed downloading else if site_info.event[0] == "file_failed" @site_error = site_info.event[1] if site_info.settings.size > site_info.size_limit*1024*1024 # Site size too large and not displaying it yet - if $(".console .button-setlimit").length == 0 # Not displaying it yet - line = @loading.printLine("Site size: #{parseInt(site_info.settings.size/1024/1024)}MB is larger than default allowed #{parseInt(site_info.size_limit)}MB", "warning") - button = $("Open site and set size limit to #{site_info.next_size_limit}MB") - button.on "click", (=> return @setSizeLimit(site_info.next_size_limit) ) - line.after(button) - setTimeout (=> - @loading.printLine('Ready.') - ), 100 + @loading.showTooLarge(site_info) else @loading.printLine("#{site_info.event[1]} download failed", "error") @@ -302,8 +302,9 @@ class Wrapper setSizeLimit: (size_limit, reload=true) => @ws.cmd "siteSetLimit", [size_limit], (res) => @loading.printLine res + @inner_loaded = false # Inner frame not loaded, just a 404 page displayed if reload - $("iframe").attr "src", $("iframe").attr("src") # Reload iframe + $("iframe").attr "src", $("iframe").attr("src")+"?"+(+new Date) # Reload iframe return false diff --git a/src/Ui/media/all.js b/src/Ui/media/all.js index c473e846..994d9861 100644 --- a/src/Ui/media/all.js +++ b/src/Ui/media/all.js @@ -486,6 +486,25 @@ jQuery.extend( jQuery.easing, return this.printLine("   Connecting..."); }; + Loading.prototype.showTooLarge = function(site_info) { + var button, line; + if ($(".console .button-setlimit").length === 0) { + line = this.printLine("Site size: " + (parseInt(site_info.settings.size / 1024 / 1024)) + "MB is larger than default allowed " + (parseInt(site_info.size_limit)) + "MB", "warning"); + button = $("Open site and set size limit to " + site_info.next_size_limit + "MB"); + button.on("click", ((function(_this) { + return function() { + return window.wrapper.setSizeLimit(site_info.next_size_limit); + }; + })(this))); + line.after(button); + return setTimeout(((function(_this) { + return function() { + return _this.printLine('Ready.'); + }; + })(this)), 100); + } + }; + Loading.prototype.hideScreen = function() { if (!$(".loadingscreen").hasClass("done")) { if (this.screen_visible) { @@ -1042,14 +1061,18 @@ jQuery.extend( jQuery.easing, return function(site_info) { _this.address = site_info.address; _this.setSiteInfo(site_info); - window.document.title = site_info.content.title + " - ZeroNet"; - return _this.log("Setting title to", window.document.title); + if (site_info.settings.size > site_info.size_limit * 1024 * 1024) { + _this.loading.showTooLarge(site_info); + } + if (site_info.content) { + window.document.title = site_info.content.title + " - ZeroNet"; + return _this.log("Setting title to", window.document.title); + } }; })(this)); }; Wrapper.prototype.setSiteInfo = function(site_info) { - var button, line; if (site_info.event != null) { if (site_info.event[0] === "file_added" && site_info.bad_files) { this.loading.printLine(site_info.bad_files + " files needs to be downloaded"); @@ -1060,6 +1083,10 @@ jQuery.extend( jQuery.easing, if (!this.site_info) { this.reloadSiteInfo(); } + if (site_info.content) { + window.document.title = site_info.content.title + " - ZeroNet"; + this.log("Setting title to", window.document.title); + } if (!$(".loadingscreen").length) { this.notifications.add("modified", "info", "New version of this page has just released.
Reload to see the modified content."); } @@ -1067,21 +1094,7 @@ jQuery.extend( jQuery.easing, } else if (site_info.event[0] === "file_failed") { this.site_error = site_info.event[1]; if (site_info.settings.size > site_info.size_limit * 1024 * 1024) { - if ($(".console .button-setlimit").length === 0) { - line = this.loading.printLine("Site size: " + (parseInt(site_info.settings.size / 1024 / 1024)) + "MB is larger than default allowed " + (parseInt(site_info.size_limit)) + "MB", "warning"); - button = $("Open site and set size limit to " + site_info.next_size_limit + "MB"); - button.on("click", ((function(_this) { - return function() { - return _this.setSizeLimit(site_info.next_size_limit); - }; - })(this))); - line.after(button); - setTimeout(((function(_this) { - return function() { - return _this.loading.printLine('Ready.'); - }; - })(this)), 100); - } + this.loading.showTooLarge(site_info); } else { this.loading.printLine(site_info.event[1] + " download failed", "error"); } @@ -1142,8 +1155,9 @@ jQuery.extend( jQuery.easing, this.ws.cmd("siteSetLimit", [size_limit], (function(_this) { return function(res) { _this.loading.printLine(res); + _this.inner_loaded = false; if (reload) { - return $("iframe").attr("src", $("iframe").attr("src")); + return $("iframe").attr("src", $("iframe").attr("src") + "?" + (+(new Date))); } }; })(this));