diff --git a/plugins/MergerSite/MergerSitePlugin.py b/plugins/MergerSite/MergerSitePlugin.py index 49aeebe2..f030ce07 100644 --- a/plugins/MergerSite/MergerSitePlugin.py +++ b/plugins/MergerSite/MergerSitePlugin.py @@ -199,6 +199,26 @@ class UiWebsocketPlugin(object): if permission.startswith("Merger"): self.site.storage.rebuildDb() + def actionPermissionDetails(self, to, permission): + if not permission.startswith("Merger"): + return super(UiWebsocketPlugin, self).actionPermissionDetails(to, permission) + + merger_type = permission.replace("Merger:", "") + merged_sites = [] + for address, merged_type in merged_db.iteritems(): + if merged_type != merger_type: + continue + site = self.server.sites.get(address) + try: + merged_sites.append(site.content_manager.contents.get("content.json").get("title", address)) + except Exception as err: + merged_sites.append(address) + + details = _["Read and write permissions to sites with merged type of %s "] % merger_type + details += _["(%s sites)"] % len(merged_sites) + details += "
%s
" % ", ".join(merged_sites) + self.response(to, details) + @PluginManager.registerTo("UiRequest") class UiRequestPlugin(object): diff --git a/src/Config.py b/src/Config.py index ad7d9a97..1ffa7939 100644 --- a/src/Config.py +++ b/src/Config.py @@ -10,7 +10,7 @@ class Config(object): def __init__(self, argv): self.version = "0.6.0" - self.rev = 3112 + self.rev = 3114 self.argv = argv self.action = None self.config_file = "zeronet.conf" diff --git a/src/Ui/UiWebsocket.py b/src/Ui/UiWebsocket.py index b97585e5..20005731 100644 --- a/src/Ui/UiWebsocket.py +++ b/src/Ui/UiWebsocket.py @@ -734,6 +734,12 @@ class UiWebsocket(object): self.site.updateWebsocket(permission_removed=permission) self.response(to, "ok") + def actionPermissionDetails(self, to, permission): + if permission == "ADMIN": + self.response(to, _["Modify your client's configuration and access all site"] + " " + _["(Dangerous!)"] + "") + else: + self.response(to, "") + # Set certificate that used for authenticate user for site def actionCertSet(self, to, domain): self.user.setCert(self.site.address, domain) diff --git a/src/Ui/media/Wrapper.coffee b/src/Ui/media/Wrapper.coffee index 109ab57d..fbbe1e8c 100644 --- a/src/Ui/media/Wrapper.coffee +++ b/src/Ui/media/Wrapper.coffee @@ -197,9 +197,10 @@ class Wrapper actionPermissionAdd: (message) -> permission = message.params - @displayConfirm "This site requests permission:" + " #{@toHtmlSafe(permission)}", "Grant", => - @ws.cmd "permissionAdd", permission, => - @sendInner {"cmd": "response", "to": message.id, "result": "Granted"} + @ws.cmd "permissionDetails", permission, (permission_details) => + @displayConfirm "This site requests permission:" + " #{@toHtmlSafe(permission)}" + "
#{permission_details}", "Grant", => + @ws.cmd "permissionAdd", permission, => + @sendInner {"cmd": "response", "to": message.id, "result": "Granted"} actionNotification: (message) -> message.params = @toHtmlSafe(message.params) # Escape html diff --git a/src/Ui/media/all.js b/src/Ui/media/all.js index 1f347a57..8a5fa48b 100644 --- a/src/Ui/media/all.js +++ b/src/Ui/media/all.js @@ -1076,13 +1076,15 @@ jQuery.extend( jQuery.easing, Wrapper.prototype.actionPermissionAdd = function(message) { var permission; permission = message.params; - return this.displayConfirm("This site requests permission:" + (" " + (this.toHtmlSafe(permission)) + ""), "Grant", (function(_this) { - return function() { - return _this.ws.cmd("permissionAdd", permission, function() { - return _this.sendInner({ - "cmd": "response", - "to": message.id, - "result": "Granted" + return this.ws.cmd("permissionDetails", permission, (function(_this) { + return function(permission_details) { + return _this.displayConfirm("This site requests permission:" + (" " + (_this.toHtmlSafe(permission)) + "") + ("
" + permission_details + ""), "Grant", function() { + return _this.ws.cmd("permissionAdd", permission, function() { + return _this.sendInner({ + "cmd": "response", + "to": message.id, + "result": "Granted" + }); }); }); };