def test_matches_url(self):
     request = Mock(upath_info='/p/project/tool/artifact')
     s1 = SitemapEntry('tool', url='/p/project/tool')
     s2 = SitemapEntry('tool2', url='/p/project/tool2')
     s3 = SitemapEntry('Tool', url='/p/project/_list/tool')
     s3.matching_urls.append('/p/project/tool')
     self.assertTrue(s1.matches_url(request))
     self.assertFalse(s2.matches_url(request))
     self.assertTrue(s3.matches_url(request))
Ejemplo n.º 2
0
 def sidebar_menu(self):
     if not self.repo or self.repo.status != 'ready':
         return []
     links = [SitemapEntry('Browse Commits', c.app.url +
                           'commit_browser', ui_icon=g.icons['browse_commits'])]
     if self.forkable and self.repo.status == 'ready' and not self.repo.is_empty():
         links.append(
             SitemapEntry('Fork', c.app.url + 'fork', ui_icon=g.icons['fork']))
     merge_request_count = self.repo.merge_requests_by_statuses(
         'open').count()
     if merge_request_count:
         links += [
             SitemapEntry(
                 'Merge Requests', c.app.url + 'merge-requests/',
                 small=merge_request_count)]
     if self.repo.forks:
         links += [
             SitemapEntry('Forks', c.app.url + 'forks/',
                          small=len(self.repo.forks))
         ]
     if self.repo.upstream_repo.name:
         repo_path_parts = self.repo.upstream_repo.name.strip(
             '/').split('/')
         links += [
             SitemapEntry('Clone of'),
             SitemapEntry('%s / %s' %
                          (repo_path_parts[1], repo_path_parts[-1]),
                          self.repo.upstream_repo.name)
         ]
         if not c.app.repo.is_empty() and has_access(c.app.repo, 'admin'):
             merge_url = c.app.url + 'request_merge'
             if getattr(c, 'revision', None):
                 merge_url = merge_url + '?branch=' + h.urlquote(c.revision)
             links.append(SitemapEntry('Request Merge', merge_url,
                          ui_icon=g.icons['merge'],
                                       ))
         pending_upstream_merges = self.repo.pending_upstream_merges()
         if pending_upstream_merges:
             links.append(SitemapEntry(
                 'Pending Merges',
                 self.repo.upstream_repo.name + 'merge-requests/',
                 small=pending_upstream_merges))
     ref_url = self.repo.url_for_commit(
         self.default_branch_name, url_type='ref')
     branches = self.repo.get_branches()
     if branches:
         links.append(SitemapEntry('Branches'))
         for branch in branches:
             if branch.name == self.default_branch_name:
                 branches.remove(branch)
                 branches.insert(0, branch)
                 break
         max_branches = 10
         for branch in branches[:max_branches]:
             links.append(SitemapEntry(
                 branch.name,
                 quote(self.repo.url_for_commit(branch.name) + 'tree/')))
         if len(branches) > max_branches:
             links.append(
                 SitemapEntry(
                     'More Branches',
                     ref_url + 'branches/',
                 ))
     tags = self.repo.get_tags()
     if tags:
         links.append(SitemapEntry('Tags'))
         max_tags = 10
         for b in tags[:max_tags]:
             links.append(SitemapEntry(
                 b.name,
                 quote(self.repo.url_for_commit(b.name) + 'tree/')))
         if len(tags) > max_tags:
             links.append(
                 SitemapEntry(
                     'More Tags',
                     ref_url + 'tags/',
                 ))
     return links
Ejemplo n.º 3
0
 def main_menu(self):
     return [SitemapEntry(self.config.options.mount_label, '.')]
Ejemplo n.º 4
0
 def update_project_sidebar_menu(self, sidebar_links):
     base_url = c.project.url() + 'admin/ext/'
     link = SitemapEntry('Import', base_url + 'import/')
     sidebar_links.append(link)
Ejemplo n.º 5
0
 def sidebar_menu(self):
     if not self.repo or self.repo.status != 'ready':
         return []
     if self.default_branch_name:
         default_branch_url = (
             c.app.url
             + url(quote(self.default_branch_name + self.END_OF_REF_ESCAPE))
             + '/')
     else:
         default_branch_url = c.app.url
     links = [SitemapEntry('Browse Commits', c.app.url + 'commit_browser', ui_icon=g.icons['folder'])]
     if self.forkable and self.repo.status == 'ready':
         links.append(SitemapEntry('Fork', c.app.url + 'fork', ui_icon=g.icons['fork']))
     merge_request_count = self.repo.merge_requests_by_statuses('open').count()
     if merge_request_count:
         links += [
             SitemapEntry(
                 'Merge Requests', c.app.url + 'merge-requests/',
                 small=merge_request_count) ]
     if self.repo.upstream_repo.name:
         repo_path_parts = self.repo.upstream_repo.name.strip('/').split('/')
         links += [
             SitemapEntry('Clone of'),
             SitemapEntry('%s / %s' %
                 (repo_path_parts[1], repo_path_parts[-1]),
                 self.repo.upstream_repo.name)
             ]
         if len(c.app.repo.branches) and has_access(c.app.repo, 'admin'):
             links.append(SitemapEntry('Request Merge', c.app.url + 'request_merge',
                          ui_icon=g.icons['merge'],
                          ))
         pending_upstream_merges = self.repo.pending_upstream_merges()
         if pending_upstream_merges:
             links.append(SitemapEntry(
                     'Pending Merges',
                     self.repo.upstream_repo.name + 'merge-requests/',
                     small=pending_upstream_merges))
     if self.repo.branches:
         links.append(SitemapEntry('Branches'))
         for b in self.repo.branches:
             links.append(SitemapEntry(
                     b.name, url(c.app.url, dict(branch='ref/' + b.name)),
                     small=b.count))
     if self.repo.repo_tags:
         links.append(SitemapEntry('Tags'))
         max_tags = 10
         for i, b in enumerate(self.repo.repo_tags):
             if i < max_tags:
                 links.append(SitemapEntry(
                         b.name, url(c.app.url, dict(branch='ref/' + b.name)),
                         small=b.count))
             elif i == max_tags:
                 links.append(
                     SitemapEntry(
                         'More Tags',
                         default_branch_url+'tags/',
                         ))
                 break
     if self.repo.forks:
         links.append(SitemapEntry('Forks'))
         for f in self.repo.forks:
             repo_path_parts = f.url().strip('/').split('/')
             links.append(SitemapEntry(
                 '%s / %s' %
                 (repo_path_parts[1], repo_path_parts[-1]),
                 f.url()))
     return links
Ejemplo n.º 6
0
 def main_menu(self):
     '''Apps should provide their entries to be added to the main nav
     :return: a list of :class:`SitemapEntries <allura.app.SitemapEntry>`
     '''
     return [SitemapEntry(self.config.options.mount_label, '.')]
Ejemplo n.º 7
0
 def sidebar_menu(self):
     return [SitemapEntry('Configure', 'configuration')]
Ejemplo n.º 8
0
    def sitemap(self, excluded_tools=None):
        """Return the project sitemap.

        :param list excluded_tools: tool names (AppConfig.tool_name) to
                                    exclude from sitemap
        """
        from allura.app import SitemapEntry
        entries = []

        # Set menu mode
        delta_ordinal = 0
        max_ordinal = 0

        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:
                max_ordinal = ordinal
            entries.append({
                'ordinal': sub.ordinal + delta_ordinal,
                'entry': SitemapEntry(sub.name, sub.url())
            })
        for ac in self.app_configs:
            if excluded_tools and ac.tool_name in excluded_tools:
                continue
            App = ac.load()
            app = App(self, ac)
            if app.is_visible_to(c.user):
                for sm in app.main_menu():
                    entry = sm.bind_app(app)
                    entry.ui_icon = 'tool-%s' % ac.tool_name.lower()
                    ordinal = int(ac.options.get('ordinal', 0)) + delta_ordinal
                    if ordinal > max_ordinal:
                        max_ordinal = ordinal
                    entries.append({'ordinal': ordinal, 'entry': entry})

        if self == self.neighborhood.neighborhood_project and h.has_access(
                self.neighborhood, 'admin'):
            entries.append({
                'ordinal':
                max_ordinal + 1,
                'entry':
                SitemapEntry('Moderate',
                             "%s_moderate/" % self.neighborhood.url(),
                             ui_icon="tool-admin")
            })
            max_ordinal += 1

        entries = sorted(entries, key=lambda e: e['ordinal'])
        return [e['entry'] for e in entries]
Ejemplo n.º 9
0
    def sidebar_menu(self):
        links = []
        admin_url = c.project.url() + 'admin/'

        if c.project.is_nbhd_project:
            links.append(
                SitemapEntry('Add Project',
                             c.project.url() + 'add_project',
                             ui_icon=g.icons['plus']))
            nbhd_admin_url = c.project.neighborhood.url() + '_admin/'
            links = links + [
                SitemapEntry('Neighborhood'),
                SitemapEntry('Overview', nbhd_admin_url + 'overview'),
                SitemapEntry('Awards', nbhd_admin_url + 'accolades')
            ]
        else:
            links += [
                SitemapEntry('Metadata', admin_url + 'overview'),
            ]
            if c.project.neighborhood.name != "Users":
                links += [
                    SitemapEntry('Screenshots', admin_url + 'screenshots'),
                    SitemapEntry('Categorization', admin_url + 'trove')
                ]
        links.append(SitemapEntry('Tools', admin_url + 'tools'))
        if c.project.is_root and has_access(c.project, 'admin')():
            links.append(
                SitemapEntry('User Permissions', admin_url + 'groups/'))
        if not c.project.is_root and has_access(c.project, 'admin')():
            links.append(
                SitemapEntry('Permissions', admin_url + 'permissions/'))
        if len(c.project.neighborhood_invitations):
            links.append(
                SitemapEntry('Invitation(s)', admin_url + 'invitations'))
        links.append(SitemapEntry('Audit Trail', admin_url + 'audit/'))
        if c.project.is_nbhd_project:
            links.append(SitemapEntry('Statistics', nbhd_admin_url + 'stats/'))
            links.append(None)
            links.append(SitemapEntry('Help', nbhd_admin_url + 'help/'))
        return links
Ejemplo n.º 10
0
 def __init__(self, project, config):
     Application.__init__(self, project, config)
     self.root = ProjectAdminController()
     self.admin = AdminAppAdminController(self)
     self.templates = pkg_resources.resource_filename('allura.ext.admin', 'templates')
     self.sitemap = [ SitemapEntry('Admin','.')]
Ejemplo n.º 11
0
 def sidebar_menu(self):
     if not self.repo or self.repo.status != 'ready':
         return []
     links = [
         SitemapEntry('Browse Commits',
                      c.app.url + 'commit_browser',
                      ui_icon=g.icons['folder'])
     ]
     if self.forkable and self.repo.status == 'ready':
         links.append(
             SitemapEntry('Fork',
                          c.app.url + 'fork',
                          ui_icon=g.icons['fork']))
     merge_request_count = self.repo.merge_requests_by_statuses(
         'open').count()
     if merge_request_count:
         links += [
             SitemapEntry('Merge Requests',
                          c.app.url + 'merge-requests/',
                          small=merge_request_count)
         ]
     if self.repo.forks:
         links += [
             SitemapEntry('Forks',
                          c.app.url + 'forks/',
                          small=len(self.repo.forks))
         ]
     if self.repo.upstream_repo.name:
         repo_path_parts = self.repo.upstream_repo.name.strip('/').split(
             '/')
         links += [
             SitemapEntry('Clone of'),
             SitemapEntry(
                 '%s / %s' % (repo_path_parts[1], repo_path_parts[-1]),
                 self.repo.upstream_repo.name)
         ]
         if len(c.app.repo.branches) and has_access(c.app.repo, 'admin'):
             links.append(
                 SitemapEntry(
                     'Request Merge',
                     c.app.url + 'request_merge',
                     ui_icon=g.icons['merge'],
                 ))
         pending_upstream_merges = self.repo.pending_upstream_merges()
         if pending_upstream_merges:
             links.append(
                 SitemapEntry('Pending Merges',
                              self.repo.upstream_repo.name +
                              'merge-requests/',
                              small=pending_upstream_merges))
     ref_url = self.repo.url_for_commit(self.default_branch_name,
                                        url_type='ref')
     if self.repo.branches:
         links.append(SitemapEntry('Branches'))
         max_branches = 10
         for b in self.repo.branches[:max_branches]:
             links.append(
                 SitemapEntry(
                     b.name,
                     quote(self.repo.url_for_commit(b.name) + 'tree/'),
                     small=b.count))
         if len(self.repo.branches) > max_branches:
             links.append(
                 SitemapEntry(
                     'More Branches',
                     ref_url + 'branches/',
                 ))
     if self.repo.repo_tags:
         links.append(SitemapEntry('Tags'))
         max_tags = 10
         for b in self.repo.repo_tags[:max_tags]:
             links.append(
                 SitemapEntry(
                     b.name,
                     quote(self.repo.url_for_commit(b.name) + 'tree/'),
                     small=b.count))
         if len(self.repo.repo_tags) > max_tags:
             links.append(SitemapEntry(
                 'More Tags',
                 ref_url + 'tags/',
             ))
     return links
Ejemplo n.º 12
0
 def sitemap(self):
     menu_id = 'Home'
     return [SitemapEntry('Home', '..')]
Ejemplo n.º 13
0
 def admin_menu(self):
     links = super(ForgeSVNApp, self).admin_menu()
     links.insert(1, SitemapEntry(
         'Import Repo',
         c.project.url() + 'admin/' + self.config.options.mount_point + '/' + 'importer/'))
     return links
Ejemplo n.º 14
0
 def sitemap(self):
     return [SitemapEntry('Home', '..')]
Ejemplo n.º 15
0
    def sidebar_menu(self):
        if not self.repo or self.repo.status != 'ready':
            return []
        links = []
        if not self.repo.is_empty():
            links.append(
                SitemapEntry('Browse Commits',
                             c.app.url + 'commit_browser',
                             ui_icon=g.icons['browse_commits']))
        if self.forkable and self.repo.status == 'ready' and not self.repo.is_empty(
        ):
            links.append(
                SitemapEntry('Fork',
                             c.app.url + 'fork',
                             ui_icon=g.icons['fork']))
        merge_request_count = self.repo.merge_requests_by_statuses(
            'open').count()
        if self.forkable:
            links += [
                SitemapEntry('Merge Requests',
                             c.app.url + 'merge-requests/',
                             small=merge_request_count)
            ]
        if self.repo.forks:
            links += [
                SitemapEntry('Forks',
                             c.app.url + 'forks/',
                             small=len(self.repo.forks))
            ]

        has_upstream_repo = False
        if self.repo.upstream_repo.name:
            try:
                self.repo.push_upstream_context()
            except Exception:
                log.warn(
                    'Could not get upstream repo (perhaps it is gone) for: %s %s',
                    self.repo,
                    self.repo.upstream_repo.name,
                    exc_info=True)
            else:
                has_upstream_repo = True

        if has_upstream_repo:
            repo_path_parts = self.repo.upstream_repo.name.strip('/').split(
                '/')
            links += [
                SitemapEntry('Clone of'),
                SitemapEntry(
                    '%s / %s' % (repo_path_parts[1], repo_path_parts[-1]),
                    self.repo.upstream_repo.name)
            ]
            if not c.app.repo.is_empty() and has_access(c.app.repo, 'admin'):
                merge_url = c.app.url + 'request_merge'
                if getattr(c, 'revision', None):
                    merge_url = merge_url + '?branch=' + h.urlquote(c.revision)
                links.append(
                    SitemapEntry(
                        'Request Merge',
                        merge_url,
                        ui_icon=g.icons['merge'],
                    ))
            pending_upstream_merges = self.repo.pending_upstream_merges()
            if pending_upstream_merges:
                links.append(
                    SitemapEntry('Pending Merges',
                                 self.repo.upstream_repo.name +
                                 'merge-requests/',
                                 small=pending_upstream_merges))
        ref_url = self.repo.url_for_commit(self.default_branch_name,
                                           url_type='ref')
        branches = self.repo.get_branches()
        if branches:
            links.append(SitemapEntry('Branches'))
            for branch in branches:
                if branch.name == self.default_branch_name:
                    branches.remove(branch)
                    branches.insert(0, branch)
                    break
            max_branches = 10
            for branch in branches[:max_branches]:
                links.append(
                    SitemapEntry(
                        branch.name,
                        h.urlquote(
                            self.repo.url_for_commit(branch.name) + 'tree/')))
            if len(branches) > max_branches:
                links.append(
                    SitemapEntry(
                        'More Branches',
                        ref_url + 'branches/',
                    ))
        elif not self.repo.is_empty():
            # SVN repos, for example, should have a sidebar link to get to the main view
            links.append(SitemapEntry('Browse Files', c.app.url))

        tags = self.repo.get_tags()
        if tags:
            links.append(SitemapEntry('Tags'))
            max_tags = 10
            for b in tags[:max_tags]:
                links.append(
                    SitemapEntry(
                        b.name,
                        h.urlquote(self.repo.url_for_commit(b.name) +
                                   'tree/')))
            if len(tags) > max_tags:
                links.append(SitemapEntry(
                    'More Tags',
                    ref_url + 'tags/',
                ))
        return links
Ejemplo n.º 16
0
 def sitemap(self):
     menu_id = self.config.options.mount_label
     return [SitemapEntry(menu_id, self.config.options.get('url') or '.')]
Ejemplo n.º 17
0
    def sitemap(self, excluded_tools=None):
        """Return the project sitemap.

        :param list excluded_tools: tool names (AppConfig.tool_name) to
                                    exclude from sitemap
        """
        from allura.app import SitemapEntry
        entries = []

        anchored_tools = self.neighborhood.get_anchored_tools()
        i = len(anchored_tools)
        new_tools = self.install_anchored_tools()
        self.app_config('admin').options.ordinal = 100

        # Set menu mode
        delta_ordinal = i
        max_ordinal = i

        for sub in self.direct_subprojects:
            ordinal = sub.ordinal + delta_ordinal
            if ordinal > max_ordinal:
                max_ordinal = ordinal
            entries.append({
                'ordinal': sub.ordinal + delta_ordinal,
                'entry': SitemapEntry(sub.name, sub.url())
            })
        for ac in self.app_configs + [a.config for a in new_tools]:
            if excluded_tools and ac.tool_name in excluded_tools:
                continue
            # Tool could've been uninstalled in the meantime
            try:
                App = ac.load()
            # If so, we don't want it listed
            except KeyError as e:
                log.exception('AppConfig %s references invalid tool %s',
                              ac._id, ac.tool_name)
                continue
            app = App(self, ac)
            if app.is_visible_to(c.user):
                for sm in app.main_menu():
                    entry = sm.bind_app(app)
                    entry.tool_name = ac.tool_name
                    entry.ui_icon = 'tool-%s' % entry.tool_name.lower()
                    if not self.is_nbhd_project and (entry.tool_name.lower()
                                                     in anchored_tools.keys()):
                        ordinal = anchored_tools.keys().index(
                            entry.tool_name.lower())
                    else:
                        ordinal = int(ac.options.get('ordinal',
                                                     0)) + delta_ordinal
                    if self.is_nbhd_project and entry.label == 'Admin':
                        entry.matching_urls.append('%s_admin/' % self.url())
                    if ordinal > max_ordinal:
                        max_ordinal = ordinal
                    entries.append({'ordinal': ordinal, 'entry': entry})

        if self == self.neighborhood.neighborhood_project and h.has_access(
                self.neighborhood, 'admin'):
            entries.append({
                'ordinal':
                max_ordinal + 1,
                'entry':
                SitemapEntry('Moderate',
                             "%s_moderate/" % self.neighborhood.url(),
                             ui_icon="tool-admin")
            })
            max_ordinal += 1

        entries = sorted(entries, key=lambda e: e['ordinal'])
        return [e['entry'] for e in entries]
Ejemplo n.º 18
0
 def sidebar_menu(self):
     return [
         SitemapEntry('Home', '.'),
         SitemapEntry('Search', 'search'),
     ]
Ejemplo n.º 19
0
 def sitemap(self):
     menu_id = 'Home'
     return [SitemapEntry('Home', c.project.url())]
Ejemplo n.º 20
0
 def sitemap(self):
     return [SitemapEntry('Profile', '.')]
Ejemplo n.º 21
0
    def index(self, sort='alpha', limit=25, page=0, **kw):
        text = None
        if self.neighborhood.use_wiki_page_as_root:
            default_wiki_page = get_default_wiki_page()
            if default_wiki_page:
                text = default_wiki_page.html_text
        elif self.neighborhood.redirect:
            redirect(self.neighborhood.redirect)
        elif not self.neighborhood.has_home_tool:
            mount = c.project.ordered_mounts()[0]
            if mount is not None:
                if 'ac' in mount:
                    redirect(mount['ac'].options.mount_point + '/')
                elif 'sub' in mount:
                    redirect(mount['sub'].url())
            else:
                redirect(c.project.app_configs[0].options.mount_point + '/')
        else:
            text = g.markdown.cached_convert(self.neighborhood, 'homepage'),

        c.project_summary = W.project_summary
        c.page_list = W.page_list
        limit, page, start = g.handle_paging(limit, page)
        pq = M.Project.query.find(
            dict(
                neighborhood_id=self.neighborhood._id,
                deleted=False,
                is_nbhd_project=False,
            ))
        if sort == 'alpha':
            pq.sort('name')
        else:
            pq.sort('last_updated', pymongo.DESCENDING)
        count = pq.count()
        nb_max_projects = self.neighborhood.get_max_projects()
        projects = pq.skip(start).limit(int(limit)).all()
        categories = M.ProjectCategory.query.find({
            'parent_id': None
        }).sort('name').all()
        c.custom_sidebar_menu = []
        if h.has_access(self.neighborhood,
                        'register')() and (nb_max_projects is None
                                           or count < nb_max_projects):
            c.custom_sidebar_menu += [
                SitemapEntry('Add a Project',
                             self.neighborhood.url() + 'add_project',
                             ui_icon=g.icons['add']),
                SitemapEntry('')
            ]
        c.custom_sidebar_menu = c.custom_sidebar_menu + [
            SitemapEntry(cat.label,
                         self.neighborhood.url() + 'browse/' + cat.name)
            for cat in categories
        ]
        return dict(neighborhood=self.neighborhood,
                    title="Welcome to " + self.neighborhood.name,
                    text=text,
                    projects=projects,
                    sort=sort,
                    limit=limit,
                    page=page,
                    count=count)
Ejemplo n.º 22
0
 def main_menu(self):
     return [SitemapEntry('Profile', '.')]
Ejemplo n.º 23
0
 def sidebar_menu(self):
     try:
         l = []
         moderate_link = None
         forum_links = []
         forums = DM.Forum.query.find(
             dict(app_config_id=c.app.config._id,
                  parent_id=None,
                  deleted=False))
         for f in forums:
             if has_access(f, 'read')():
                 if f.url() in request.url and h.has_access(f,
                                                            'moderate')():
                     num_moderate = DM.ForumPost.query.find({
                         'discussion_id':
                         f._id,
                         'status': {
                             '$ne': 'ok'
                         },
                         'deleted':
                         False,
                     }).count()
                     moderate_link = SitemapEntry(
                         'Moderate',
                         "%smoderate/" % f.url(),
                         ui_icon=g.icons['moderate'],
                         small=num_moderate)
                 forum_links.append(
                     SitemapEntry(f.name, f.url(), small=f.num_topics))
         url = c.app.url + 'create_topic/'
         url = h.urlquote(url + c.forum.shortname
                          if getattr(c, 'forum', None) and c.forum else url)
         l.append(SitemapEntry('Create Topic', url, ui_icon=g.icons['add']))
         if has_access(c.app, 'configure')():
             l.append(
                 SitemapEntry('Add Forum',
                              c.app.url + 'new_forum',
                              ui_icon=g.icons['conversation']))
             l.append(
                 SitemapEntry('Admin Forums',
                              c.project.url() + 'admin/' +
                              self.config.options.mount_point + '/forums',
                              ui_icon=g.icons['admin']))
         if moderate_link:
             l.append(moderate_link)
         # if we are in a thread and not anonymous, provide placeholder
         # links to use in js
         if '/thread/' in request.url and c.user not in (
                 None, M.User.anonymous()):
             l.append(
                 SitemapEntry('Mark as Spam',
                              'flag_as_spam',
                              ui_icon=g.icons['flag'],
                              className='sidebar_thread_spam'))
         l.append(
             SitemapEntry('Stats Graph',
                          c.app.url + 'stats',
                          ui_icon=g.icons['stats']))
         if forum_links:
             l.append(SitemapEntry('Forums'))
             l = l + forum_links
         l.append(SitemapEntry('Help'))
         l.append(
             SitemapEntry('Formatting Help', c.app.url + 'markdown_syntax'))
         return l
     except:  # pragma no cover
         log.exception('sidebar_menu')
         return []
Ejemplo n.º 24
0
 def update_sidebar_menu(self, links):
     links.append(
         SitemapEntry('Stats', '/nf/admin/stats', ui_icon=g.icons['stats']))
Ejemplo n.º 25
0
 def sitemap(self):
     menu_id = self.config.options.mount_label
     return [SitemapEntry(menu_id, '.')[self.sidebar_menu()]]
Ejemplo n.º 26
0
 def admin_menu(self):
     links = [
         SitemapEntry('Settings',
                      c.project.url() + 'userstats/settings')
     ]
     return links
Ejemplo n.º 27
0
 def sitemap(self):
     menu_id = self.config.options.mount_label.title()
     with h.push_config(c, app=self):
         return [SitemapEntry(menu_id, '.')[self.sidebar_menu()]]
Ejemplo n.º 28
0
 def main_menu(self):
     '''Apps should provide their entries to be added to the main nav
     :return: a list of :class:`SitemapEntries <allura.app.SitemapEntry>`
     '''
     return [SitemapEntry('Admin', '.')]
Ejemplo n.º 29
0
    def sidebar_menu(self):
        links = []
        admin_url = c.project.url() + 'admin/'

        if c.project.is_nbhd_project:
            links.append(SitemapEntry('Add Project', c.project.url()
                                      + 'add_project', ui_icon=g.icons['add']))
            nbhd_admin_url = c.project.neighborhood.url() + '_admin/'
            links = links + [
                SitemapEntry('Neighborhood'),
                SitemapEntry('Overview', nbhd_admin_url + 'overview'),
                SitemapEntry('Awards', nbhd_admin_url + 'accolades')]
        else:
            links += [
                SitemapEntry('Welcome', admin_url),
                SitemapEntry('Metadata', admin_url + 'overview', className="admin-nav-metadata"),
            ]
            if c.project.neighborhood.name != "Users":
                links += [
                    SitemapEntry('Screenshots', admin_url + 'screenshots'),
                    SitemapEntry('Categorization', admin_url + 'trove')
                ]
        if plugin.ProjectRegistrationProvider.get().registration_date(c.project) < datetime(2016, 6, 1):
            # only show transitional Tools page to older projects that may be used to it
            # no point is showing it to new projects
            links.append(SitemapEntry('Tools', admin_url + 'tools_moved'))
        if asbool(config.get('bulk_export_enabled', True)):
            links.append(SitemapEntry('Export', admin_url + 'export'))
        if c.project.is_root and has_access(c.project, 'admin')():
            links.append(
                SitemapEntry('User Permissions', admin_url + 'groups/', className="admin-nav-user-perms"))
        if not c.project.is_root and has_access(c.project, 'admin')():
            links.append(
                SitemapEntry('Permissions', admin_url + 'permissions/'))
        if len(c.project.neighborhood_invitations):
            links.append(
                SitemapEntry('Invitation(s)', admin_url + 'invitations'))
        links.append(SitemapEntry('Audit Trail', admin_url + 'audit/'))
        if c.project.is_nbhd_project:
            links.append(SitemapEntry('Statistics', nbhd_admin_url + 'stats/'))
            links.append(None)
            links.append(SitemapEntry('Help', nbhd_admin_url + 'help/'))

        for ep_name in sorted(g.entry_points['admin'].keys()):
            admin_extension = g.entry_points['admin'][ep_name]
            admin_extension().update_project_sidebar_menu(links)

        return links
Ejemplo n.º 30
0
 def update_sidebar_menu(self, links):
     enable_editing = config.get('trovecategories.enableediting', 'false')
     if enable_editing in ('admin', 'true'):
         links.append(
             SitemapEntry('Troves', '/categories',
                          ui_icon=g.icons['admin']))