You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by jo...@apache.org on 2014/03/20 19:46:40 UTC
[07/17] git commit: [#7051] Admin tools paging fixes/improvements
[#7051] Admin tools paging fixes/improvements
- Stay on same page when changing grouping threshold
- Fix broken tool drag n drop sorting
- Redirect to last page when new tool installed
Signed-off-by: Tim Van Steenburgh <tv...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/7fbafb6f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/7fbafb6f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/7fbafb6f
Branch: refs/heads/cj/6701
Commit: 7fbafb6fde6cc1033498aafb2205fce4af40ffbe
Parents: 3a265bd
Author: Tim Van Steenburgh <tv...@gmail.com>
Authored: Wed Mar 19 19:56:43 2014 +0000
Committer: Tim Van Steenburgh <tv...@gmail.com>
Committed: Wed Mar 19 19:56:43 2014 +0000
----------------------------------------------------------------------
Allura/allura/ext/admin/admin_main.py | 19 +++++++++++--------
.../ext/admin/templates/project_tools.html | 6 +++---
Allura/allura/public/nf/js/project_tools.js | 8 ++++++--
3 files changed, 20 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/7fbafb6f/Allura/allura/ext/admin/admin_main.py
----------------------------------------------------------------------
diff --git a/Allura/allura/ext/admin/admin_main.py b/Allura/allura/ext/admin/admin_main.py
index 696f14d..e889b29 100644
--- a/Allura/allura/ext/admin/admin_main.py
+++ b/Allura/allura/ext/admin/admin_main.py
@@ -261,7 +261,7 @@ class ProjectAdminController(BaseController):
@without_trailing_slash
@expose('jinja:allura.ext.admin:templates/project_tools.html')
- def tools(self, page=0, limit=200, **kw):
+ def tools(self, page=None, limit=200, **kw):
c.markdown_editor = W.markdown_editor
c.label_edit = W.label_edit
c.mount_delete = W.mount_delete
@@ -270,7 +270,7 @@ class ProjectAdminController(BaseController):
c.page_list = W.page_list
mounts = c.project.ordered_mounts()
total_mounts = len(mounts)
- limit, page = h.paging_sanitizer(limit, page, total_mounts)
+ limit, page = h.paging_sanitizer(limit, page or total_mounts / int(limit), total_mounts)
start = page * limit
return dict(
page=page,
@@ -284,7 +284,7 @@ class ProjectAdminController(BaseController):
@expose()
@require_post()
- def configure_tool_grouping(self, grouping_threshold='1', **kw):
+ def configure_tool_grouping(self, grouping_threshold='1', page=0, limit=200, **kw):
try:
grouping_threshold = int(grouping_threshold)
if grouping_threshold < 1:
@@ -293,7 +293,7 @@ class ProjectAdminController(BaseController):
'allura', grouping_threshold=grouping_threshold)
except ValueError:
flash('Invalid threshold', 'error')
- redirect('tools')
+ redirect('tools?limit=%s&page=%s' % (limit, page))
@expose()
@require_post()
@@ -679,20 +679,23 @@ class ProjectAdminController(BaseController):
h.log_action(log, 'install tool').info(
'install tool %s', mount_point,
meta=dict(tool_type=ep_name, mount_point=mount_point, mount_label=new['mount_label']))
- c.project.install_app(
+ return c.project.install_app(
ep_name, mount_point, mount_label=new['mount_label'], ordinal=new['ordinal'])
g.post_event('project_updated')
@h.vardec
@expose()
@require_post()
- def update_mounts(self, subproject=None, tool=None, new=None, **kw):
+ def update_mounts(self, subproject=None, tool=None, new=None, page=0, limit=200, **kw):
try:
- self._update_mounts(subproject, tool, new, **kw)
+ new_app = self._update_mounts(subproject, tool, new, **kw)
+ if new_app:
+ # force redir to last page of tools, where new app will be
+ page = ''
except forge_exc.ForgeError, exc:
flash('%s: %s' % (exc.__class__.__name__, exc.args[0]),
'error')
- redirect('tools')
+ redirect('tools?limit=%s&page=%s' % (limit, page))
@expose('jinja:allura.ext.admin:templates/export.html')
def export(self, tools=None):
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/7fbafb6f/Allura/allura/ext/admin/templates/project_tools.html
----------------------------------------------------------------------
diff --git a/Allura/allura/ext/admin/templates/project_tools.html b/Allura/allura/ext/admin/templates/project_tools.html
index 60b4d89..a51f750 100644
--- a/Allura/allura/ext/admin/templates/project_tools.html
+++ b/Allura/allura/ext/admin/templates/project_tools.html
@@ -43,8 +43,8 @@
</a>
</span>
</div>
- <form method="post" action="update_mounts" id="install_form" style="display:none">
- <input type="hidden" name="new.ordinal" value="{{installable_tools|length + c.project.direct_subprojects|length}}"/>
+ <form method="post" action="update_mounts?limit={{limit}}&page={{page}}" id="install_form" style="display:none">
+ <input type="hidden" name="new.ordinal" value="{{total_mounts}}"/>
<input type="hidden" name="new.ep_name" class="new_ep_name">
<label class="grid-13">Label</label>
<div class="grid-13"><input type="text" name="new.mount_label" class="new_mount_label"></div>
@@ -162,7 +162,7 @@
<div><!--dummy-->
<h3 style="clear:left">Grouping</h3>
-<form method="POST" action="configure_tool_grouping" id="configure_grouping_form">
+<form method="POST" action="configure_tool_grouping?limit={{limit}}&page={{page}}" id="configure_grouping_form">
<label>Threshold for grouping tools by type:
<input name="grouping_threshold" value="{{c.project.get_tool_data('allura', 'grouping_threshold', 1)}}"/>
</label>
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/7fbafb6f/Allura/allura/public/nf/js/project_tools.js
----------------------------------------------------------------------
diff --git a/Allura/allura/public/nf/js/project_tools.js b/Allura/allura/public/nf/js/project_tools.js
index b02554b..4e4ab46 100644
--- a/Allura/allura/public/nf/js/project_tools.js
+++ b/Allura/allura/public/nf/js/project_tools.js
@@ -96,18 +96,22 @@
var tools = 0;
var subs = 0;
var params = {'_session_id':$.cookie('_session_id')};
+ var action = $('#install_form').attr('action');
+ var limit = action.match(/limit=(\d+)/)[1];
+ var page = action.match(/page=(\d+)/)[1];
+ var first_tool_ordinal = parseInt(limit) * parseInt(page);
for (var i = 0, len = sortables.length; i < len; i++) {
var item = $(sortables[i]);
var mount_point = item.find('input.mount_point');
var shortname = item.find('input.shortname');
if (mount_point.length) {
params['tools-' + tools + '.mount_point'] = mount_point.val();
- params['tools-' + tools + '.ordinal'] = i;
+ params['tools-' + tools + '.ordinal'] = i + first_tool_ordinal;
tools++;
}
if (shortname.length) {
params['subs-' + subs + '.shortname'] = shortname.val();
- params['subs-' + subs + '.ordinal'] = i;
+ params['subs-' + subs + '.ordinal'] = i + first_tool_ordinal;
subs++;
}
}