diff --git a/plugins/Sidebar/SidebarPlugin.py b/plugins/Sidebar/SidebarPlugin.py index 9c6d9327..7aa3ea03 100644 --- a/plugins/Sidebar/SidebarPlugin.py +++ b/plugins/Sidebar/SidebarPlugin.py @@ -149,7 +149,7 @@ class UiWebsocketPlugin(object): else: percent = 100 * (float(size) / size_total) percent = math.floor(percent*100)/100 # Floor to 2 digits - body.append(u"
  • " % (percent, extension, color, extension)) + body.append(u"""
  • """ % (percent, extension, color, extension)) # Legend body.append(" @@ -278,7 +278,7 @@ class UiWebsocketPlugin(object): body.append(u"""
  • - +
  • """.format(**locals())) diff --git a/plugins/Sidebar/media/Sidebar.css b/plugins/Sidebar/media/Sidebar.css index 57c755a5..7d8466ba 100644 --- a/plugins/Sidebar/media/Sidebar.css +++ b/plugins/Sidebar/media/Sidebar.css @@ -67,6 +67,7 @@ .filelist { font-size: 12px; font-family: monospace; margin: 0px; padding: 0px; list-style-type: none; line-height: 1.5em; } .filelist li:before { content: '\2022'; font-size: 11px; line-height: 0px; vertical-align: 0px; margin-right: 5px; color: #FFBE00; } +.filelist li { overflow: hidden; text-overflow: ellipsis; } /* COLORS */ diff --git a/plugins/Sidebar/media/all.css b/plugins/Sidebar/media/all.css index 33df0470..5f357fdd 100644 --- a/plugins/Sidebar/media/all.css +++ b/plugins/Sidebar/media/all.css @@ -121,6 +121,7 @@ .filelist { font-size: 12px; font-family: monospace; margin: 0px; padding: 0px; list-style-type: none; line-height: 1.5em; } .filelist li:before { content: '\2022'; font-size: 11px; line-height: 0px; vertical-align: 0px; margin-right: 5px; color: #FFBE00; } +.filelist li { overflow: hidden; text-overflow: ellipsis; } /* COLORS */ diff --git a/src/Config.py b/src/Config.py index 6d8a1a3e..7c81870c 100644 --- a/src/Config.py +++ b/src/Config.py @@ -8,7 +8,7 @@ class Config(object): def __init__(self, argv): self.version = "0.3.6" - self.rev = 907 + self.rev = 908 self.argv = argv self.action = None self.config_file = "zeronet.conf" diff --git a/src/Ui/media/Wrapper.coffee b/src/Ui/media/Wrapper.coffee index a4879e44..746d934e 100644 --- a/src/Ui/media/Wrapper.coffee +++ b/src/Ui/media/Wrapper.coffee @@ -23,6 +23,7 @@ class Wrapper @wrapperWsInited = false # Wrapper notified on websocket open @site_error = null # Latest failed file download @address = null + @opener = null window.onload = @onLoad # On iframe loaded $(window).on "hashchange", => # On hash change @@ -64,9 +65,16 @@ class Wrapper else @sendInner message # Pass message to inner frame - # Incoming message from inner frame onMessageInner: (e) => + if not window.postmessage_nonce_security and @opener == null # Test opener + if window.opener + @log "Opener present", window.opener + @displayOpenerDialog() + return false + else + @opener = false + message = e.data if window.postmessage_nonce_security and message.wrapper_nonce != window.wrapper_nonce @log "Message nonce error:", message.wrapper_nonce, '!=', window.wrapper_nonce @@ -118,6 +126,14 @@ class Wrapper return back + displayOpenerDialog: -> + elem = $("
    You have opened this page by clicking on a link. Please, confirm if you want to load this site.Open site
    ") + elem.find('a').on "click", -> + window.open("?", "_blank") + window.close() + return false + $("body").prepend(elem) + # - Actions - actionNotification: (message) -> @@ -383,25 +399,4 @@ else ws_url = proto.ws + ":" + origin.replace(proto.http+":", "") + "/Websocket?wrapper_key=" + window.wrapper_key - -if window.opener and window.postmessage_nonce_security == false - # Window opener security problem workaround: Open a new window, close this one - console.log "Opener present:", window.opener - setTimeout ( -> # Wait 200ms to parent tab closing - console.log "Opener still present:", window.opener - if window.opener - # Opener still present, display message - elem = $("
    You have opened this page by clicking on a link. Please, confirm if you want to load this site.Open site
    ") - elem.find('a').on "click", -> - window.open("?", "_blank") - window.close() - return false - $("body").prepend(elem) - else - window.location.reload() - # Opener gone, continue init - # window.wrapper = new Wrapper(ws_url) - # window.wrapper.reload() - ), 200 -else - window.wrapper = new Wrapper(ws_url) +window.wrapper = new Wrapper(ws_url) diff --git a/src/Ui/media/all.js b/src/Ui/media/all.js index 79e312c2..f0435bf5 100644 --- a/src/Ui/media/all.js +++ b/src/Ui/media/all.js @@ -781,6 +781,7 @@ jQuery.extend( jQuery.easing, this.wrapperWsInited = false; this.site_error = null; this.address = null; + this.opener = null; window.onload = this.onLoad; $(window).on("hashchange", (function(_this) { return function() { @@ -835,6 +836,15 @@ jQuery.extend( jQuery.easing, Wrapper.prototype.onMessageInner = function(e) { var cmd, message, query; + if (!window.postmessage_nonce_security && this.opener === null) { + if (window.opener) { + this.log("Opener present", window.opener); + this.displayOpenerDialog(); + return false; + } else { + this.opener = false; + } + } message = e.data; if (window.postmessage_nonce_security && message.wrapper_nonce !== window.wrapper_nonce) { this.log("Message nonce error:", message.wrapper_nonce, '!=', window.wrapper_nonce); @@ -899,6 +909,17 @@ jQuery.extend( jQuery.easing, return back; }; + Wrapper.prototype.displayOpenerDialog = function() { + var elem; + elem = $("
    You have opened this page by clicking on a link. Please, confirm if you want to load this site.Open site
    "); + elem.find('a').on("click", function() { + window.open("?", "_blank"); + window.close(); + return false; + }); + return $("body").prepend(elem); + }; + Wrapper.prototype.actionNotification = function(message) { var body; message.params = this.toHtmlSafe(message.params); @@ -1266,25 +1287,6 @@ jQuery.extend( jQuery.easing, ws_url = proto.ws + ":" + origin.replace(proto.http + ":", "") + "/Websocket?wrapper_key=" + window.wrapper_key; - if (window.opener && window.postmessage_nonce_security === false) { - console.log("Opener present:", window.opener); - setTimeout((function() { - var elem; - console.log("Opener still present:", window.opener); - if (window.opener) { - elem = $("
    You have opened this page by clicking on a link. Please, confirm if you want to load this site.Open site
    "); - elem.find('a').on("click", function() { - window.open("?", "_blank"); - window.close(); - return false; - }); - return $("body").prepend(elem); - } else { - return window.location.reload(); - } - }), 200); - } else { - window.wrapper = new Wrapper(ws_url); - } + window.wrapper = new Wrapper(ws_url); }).call(this);