a/Allura/allura/lib/macro.py b/Allura/allura/lib/macro.py
...
...
134
@macro('neighborhood-wiki')
134
@macro('neighborhood-wiki')
135
def projects(
135
def projects(
136
    category=None,
136
    category=None,
137
    display_mode='grid',
137
    display_mode='grid',
138
    sort='last_updated',
138
    sort='last_updated',
139
    show_total=False,
139
    limit=100,
140
    limit=100,
140
    labels=''):
141
    labels=''):
141
    from allura.lib.widgets.project_list import ProjectList
142
    from allura.lib.widgets.project_list import ProjectList
142
    from allura import model as M
143
    from allura import model as M
143
    q = dict(
144
    q = dict(
...
...
149
        q['$or'] = [{'labels': {'$all': l.split(',')}} for l in or_labels]
150
        q['$or'] = [{'labels': {'$all': l.split(',')}} for l in or_labels]
150
    if category is not None:
151
    if category is not None:
151
        category = M.ProjectCategory.query.get(name=category)
152
        category = M.ProjectCategory.query.get(name=category)
152
    if category is not None:
153
    if category is not None:
153
        q['category_id'] = category._id
154
        q['category_id'] = category._id
154
    pq = M.Project.query.find(q)
155
    pq = M.Project.query.find(q).limit(int(limit))
155
    pq = pq.limit(int(limit))
156
    if sort == 'alpha':
156
    if sort == 'alpha':
157
        pq.sort('name')
157
        pq.sort('name')
158
    else:
158
    else:
159
        pq.sort('last_updated', pymongo.DESCENDING)
159
        pq.sort('last_updated', pymongo.DESCENDING)
160
    pl = ProjectList()
160
    pl = ProjectList()
161
    g.resource_manager.register(pl)
161
    g.resource_manager.register(pl)
162
    response = pl.display(projects=pq.all(), display_mode=display_mode)
162
    response = pl.display(projects=pq.all(), display_mode=display_mode)
163
    if show_total:
164
        total = 0
165
        for p in M.Project.query.find(q):
166
            if h.has_access(p, 'read')():
167
                total = total + 1
168
        response = '<p class="macro_projects_total">%s Projects</p>%s' % (total,response)
163
    return response
169
    return response
164
170
165
@macro()
171
@macro()
166
def download_button(project=None, **kw):
172
def download_button(project=None, **kw):
167
    from allura import model as M
173
    from allura import model as M