Send project_menu_updated events from a few other places that can change the menu
diff --git a/Allura/allura/app.py b/Allura/allura/app.py
index 10f5fe0..c206c3b 100644
--- a/Allura/allura/app.py
+++ b/Allura/allura/app.py
@@ -1023,6 +1023,7 @@
             for ace in old_acl:
                 if (ace.permission == perm) and (ace.access == model.ACE.DENY):
                     self.app.config.acl.append(ace)
+        g.post_event('project_menu_updated')  # since 'read' permission changes can affect what is visible in menu
         redirect(request.referer or '/')
 
 
diff --git a/ForgeLink/forgelink/link_main.py b/ForgeLink/forgelink/link_main.py
index f314f65..ef2dcb0 100644
--- a/ForgeLink/forgelink/link_main.py
+++ b/ForgeLink/forgelink/link_main.py
@@ -24,12 +24,14 @@
 # Non-stdlib imports
 from tg import expose, jsonify, redirect
 from tg import tmpl_context as c
+from tg import app_globals as g
 from tg import request
 from formencode import validators as fev
 
 # Pyforge-specific imports
-from allura.app import Application, ConfigOption, SitemapEntry
+from allura.app import Application, ConfigOption, SitemapEntry, DefaultAdminController
 from allura.lib import helpers as h
+from allura.lib.decorators import require_post
 from allura.lib.security import require_access
 from allura import model as M
 from allura.controllers import BaseController
@@ -79,6 +81,7 @@
         Application.__init__(self, project, config)
         self.root = RootController()
         self.api_root = RootRestController(self)
+        self.admin = AdminController(self)
 
     @property
     @h.exceptionless([], log)
@@ -153,3 +156,15 @@
             require_access(self.app, 'configure')
             self.app.config.options.url = url
         return self.link_json()
+
+
+class AdminController(DefaultAdminController):
+
+    @expose()
+    @require_post()
+    def configure(self, *args, **kwargs):
+        try:
+            return super(AdminController, self).configure(*args, **kwargs)
+        finally:
+            # since sitemap() uses the link URL which was changed
+            g.post_event('project_menu_updated')