You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2013/03/28 17:58:11 UTC
[42/42] git commit: [#5453] make Profile tool be anchored before
userstats, and fixes:
[#5453] make Profile tool be anchored before userstats, and fixes:
* make profile icon show up properly everywhere
* make profile tool show up in menus properly
* remove special-casing for the profile tool being first; relies
on anchored feature now
* update first_mount() to remove simple case (no auth check), to check
is_visible_to so it is consistent with other menu checks, and to
remove invalid old ForgeWikiApp type check
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/114ac9c0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/114ac9c0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/114ac9c0
Branch: refs/heads/db/5453
Commit: 114ac9c02a189867317c328d4e78374570b75ecc
Parents: eaa4420
Author: Dave Brondsema <db...@geek.net>
Authored: Mon Mar 25 16:09:11 2013 +0000
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Thu Mar 28 16:56:51 2013 +0000
----------------------------------------------------------------------
Allura/allura/controllers/project.py | 6 +--
Allura/allura/ext/user_profile/user_main.py | 17 ++++++---
Allura/allura/model/project.py | 28 ++++-----------
Allura/allura/nf/allura/css/allura.css | 6 ++--
Allura/allura/nf/allura/css/site_style.css | 2 +-
.../allura/tests/functional/test_neighborhood.py | 2 +-
Allura/allura/websetup/bootstrap.py | 2 +-
7 files changed, 27 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/114ac9c0/Allura/allura/controllers/project.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/project.py b/Allura/allura/controllers/project.py
index ebeba77..8a63f21 100644
--- a/Allura/allura/controllers/project.py
+++ b/Allura/allura/controllers/project.py
@@ -100,7 +100,7 @@ class NeighborhoodController(object):
if self.neighborhood.redirect:
redirect(self.neighborhood.redirect)
if not self.neighborhood.has_home_tool:
- mount = c.project.first_mount()
+ mount = c.project.ordered_mounts()[0]
if mount is not None:
if 'ac' in mount:
redirect(mount['ac'].options.mount_point + '/')
@@ -318,7 +318,7 @@ class ProjectController(object):
@expose()
@with_trailing_slash
def index(self, **kw):
- mount = c.project.first_mount('read')
+ mount = c.project.first_mount_visible(c.user)
activity_enabled = config.get('activitystream.enabled', False)
activity_enabled = request.cookies.get('activitystream.enabled', activity_enabled)
activity_enabled = asbool(activity_enabled)
@@ -329,8 +329,6 @@ class ProjectController(object):
redirect(mount['ac'].options.mount_point + '/')
elif 'sub' in mount:
redirect(mount['sub'].url())
- elif c.project.app_instance('profile'):
- redirect('profile/')
else:
redirect(c.project.app_configs[0].options.mount_point + '/')
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/114ac9c0/Allura/allura/ext/user_profile/user_main.py
----------------------------------------------------------------------
diff --git a/Allura/allura/ext/user_profile/user_main.py b/Allura/allura/ext/user_profile/user_main.py
index 7754228..907271a 100644
--- a/Allura/allura/ext/user_profile/user_main.py
+++ b/Allura/allura/ext/user_profile/user_main.py
@@ -9,7 +9,7 @@ from tg import expose, redirect, validate, response
from webob import exc
from allura import version
-from allura.app import Application
+from allura.app import Application, SitemapEntry
from allura.lib import helpers as h
from allura.lib.helpers import DateTimeConverter
from allura.lib.security import require_access
@@ -23,10 +23,11 @@ log = logging.getLogger(__name__)
class UserProfileApp(Application):
__version__ = version.__version__
installable = False
+ tool_label = 'Profile'
icons={
- 24:'images/sftheme/24x24/home_24.png',
- 32:'images/sftheme/32x32/home_32.png',
- 48:'images/sftheme/48x48/home_48.png'
+ 24:'images/home_24.png',
+ 32:'images/home_32.png',
+ 48:'images/home_48.png'
}
def __init__(self, user, config):
@@ -38,11 +39,17 @@ class UserProfileApp(Application):
@property
@h.exceptionless([], log)
def sitemap(self):
- return []
+ return [SitemapEntry('Profile', '.')]
def admin_menu(self):
return []
+ def main_menu(self):
+ return [SitemapEntry('Profile', '.')]
+
+ def is_visible_to(self, user):
+ return True
+
def install(self, project):
pr = c.user.project_role()
if pr:
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/114ac9c0/Allura/allura/model/project.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/project.py b/Allura/allura/model/project.py
index 9f07f67..4272345 100644
--- a/Allura/allura/model/project.py
+++ b/Allura/allura/model/project.py
@@ -401,11 +401,6 @@ class Project(MappedClass, ActivityNode, ActivityObject):
delta_ordinal = i
max_ordinal = i
- if self.is_user_project:
- entries.append({'ordinal': delta_ordinal, 'entry':SitemapEntry('Profile', "%sprofile/" % self.url(), ui_icon="tool-home")})
- max_ordinal = delta_ordinal
- delta_ordinal = delta_ordinal + 1
-
for sub in self.direct_subprojects:
ordinal = sub.ordinal + delta_ordinal
if ordinal > max_ordinal:
@@ -619,26 +614,17 @@ class Project(MappedClass, ActivityNode, ActivityObject):
result.append({'ordinal': int(ordinal), 'ac': ac, 'rank': rank})
return sorted(result, key=lambda e: (e['ordinal'], e['rank']))
- def first_mount(self, required_access=None):
- '''Returns the first (toolbar order) mount, or the first mount to
- which the user has the required access.'''
- from forgewiki.wiki_main import ForgeWikiApp
+ def first_mount_visible(self, user):
mounts = self.ordered_mounts()
- if self.is_user_project:
- for mount in mounts:
- if 'ac' in mount and mount['ac'].tool_name == 'profile':
- return mount
- if mounts and required_access is None:
- return mounts[0]
for mount in mounts:
if 'sub' in mount:
- obj = mount['sub']
+ sub = mount['sub']
+ if has_access(sub, 'read', user):
+ return mount
elif 'ac' in mount:
- obj = self.app_instance(mount['ac'])
- else:
- continue
- if has_access(obj, required_access) or isinstance(obj, ForgeWikiApp):
- return mount
+ app = self.app_instance(mount['ac'])
+ if app.is_visible_to(user):
+ return mount
return None
def next_mount_point(self, include_hidden=False):
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/114ac9c0/Allura/allura/nf/allura/css/allura.css
----------------------------------------------------------------------
diff --git a/Allura/allura/nf/allura/css/allura.css b/Allura/allura/nf/allura/css/allura.css
index f3863b8..613caa7 100644
--- a/Allura/allura/nf/allura/css/allura.css
+++ b/Allura/allura/nf/allura/css/allura.css
@@ -36,7 +36,7 @@ b.ico.ico-vote-up { background-image: url('../images/vote_up.png'); }
b.ico.ico-vote-down { background-image: url('../images/vote_down.png'); }
-.ui-icon-tool-home {
+.ui-icon-tool-home, .ui-icon-tool-profile {
background-image: url("../images/home_24.png");
background-repeat: no-repeat;
}
@@ -106,7 +106,7 @@ b.ico.ico-vote-down { background-image: url('../images/vote_down.png'); }
background-repeat: no-repeat;
}
-#top_nav .ui-icon-tool-home {
+#top_nav .ui-icon-tool-home, #top_nav .ui-icon-tool-profile {
background-image: url("../images/home_32.png");
}
#top_nav .ui-icon-tool-wiki {
@@ -149,7 +149,7 @@ b.ico.ico-vote-down { background-image: url('../images/vote_down.png'); }
background-image: url("../images/chat_32.png");
}
-.big_icon.ui-icon-tool-home {
+.big_icon.ui-icon-tool-home, .big_icon.ui-icon-tool-profile {
background-image: url("../images/home_48.png");
}
.big_icon.ui-icon-tool-wiki {
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/114ac9c0/Allura/allura/nf/allura/css/site_style.css
----------------------------------------------------------------------
diff --git a/Allura/allura/nf/allura/css/site_style.css b/Allura/allura/nf/allura/css/site_style.css
index cc503f4..2f96715 100644
--- a/Allura/allura/nf/allura/css/site_style.css
+++ b/Allura/allura/nf/allura/css/site_style.css
@@ -2216,7 +2216,7 @@ div.attachment_thumb .file_type span {
}
/* forge tool icons */
-.ui-icon-tool-home {
+.ui-icon-tool-home, .ui-icon-tool-profile {
background-repeat: no-repeat;
}
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/114ac9c0/Allura/allura/tests/functional/test_neighborhood.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/functional/test_neighborhood.py b/Allura/allura/tests/functional/test_neighborhood.py
index 9c86a67..23e14ff 100644
--- a/Allura/allura/tests/functional/test_neighborhood.py
+++ b/Allura/allura/tests/functional/test_neighborhood.py
@@ -806,7 +806,7 @@ class TestNeighborhood(TestController):
@td.with_user_project('test-user')
def test_profile_topnav_menu(self):
r = self.app.get('/u/test-user/', extra_environ=dict(username='test-user')).follow()
- assert '<a href="/u/test-user/profile/" class="ui-icon-tool-home">' in r
+ assert '<a href="/u/test-user/profile/" class="ui-icon-tool-profile">' in r, r
def test_user_project_creates_on_demand(self):
M.User.register(dict(username='donald-duck'), make_project=False)
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/114ac9c0/Allura/allura/websetup/bootstrap.py
----------------------------------------------------------------------
diff --git a/Allura/allura/websetup/bootstrap.py b/Allura/allura/websetup/bootstrap.py
index 747504c..90c8e62 100644
--- a/Allura/allura/websetup/bootstrap.py
+++ b/Allura/allura/websetup/bootstrap.py
@@ -88,7 +88,7 @@ def bootstrap(command, conf, vars):
google_analytics = False))
n_users = M.Neighborhood(name='Users', url_prefix='/u/',
shortname_prefix='u/',
- anchored_tools='userstats:Statistics',
+ anchored_tools='profile:Profile,userstats:Statistics',
features=dict(private_projects = True,
max_projects = None,
css = 'none',