Skip to content

Commit

Permalink
Load contentitem groups async, makes navigating pages with fiber enab…
Browse files Browse the repository at this point in the history
…led much faster
  • Loading branch information
jaap3 committed Oct 8, 2015
1 parent 9fee5ac commit 9195c57
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 15 deletions.
6 changes: 1 addition & 5 deletions fiber/middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,8 +137,7 @@ def get_header_html(self, request):

def get_body_html(self, request):
context = {
'logout_url': self.get_logout_url(request),
'content_items_json': json.dumps(self.get_content_items(request))
'logout_url': self.get_logout_url(request)
}
return loader.render_to_string('fiber/admin.html', context, RequestContext(request))

Expand All @@ -148,9 +147,6 @@ def get_logout_url(self, request):
else:
return '%s?next=%s' % (reverse('admin:logout'), request.path_info)

def get_content_items(self, request):
return ContentItem.objects.get_content_groups(request.user)

class ObfuscateEmailAddressMiddleware(object):
"""
Replaces plain email addresses with escaped addresses in (non streaming) HTML responses
Expand Down
1 change: 1 addition & 0 deletions fiber/rest_api/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
url(r'^pages/(?P<pk>[^/]+)/$', views.PageDetail.as_view(), name='page-detail'),
url(r'^pages/(?P<pk>[^/]+)/move_page/$', views.MovePageView.as_view(), name='page-move'),
url(r'^pagetree/$', views.PageTree.as_view(), name='pagetree'),
url(r'^contentitemgroups/$', views.ContentItemGroups.as_view(), name='contentitemgroups'),
url(r'^page_content_items/$', views.PageContentItemList.as_view(), name='pagecontentitem-list'),
url(r'^page_content_items/(?P<pk>[^/]+)/$', views.PageContentItemDetail.as_view(), name='pagecontentitem-detail'),
url(r'^page_content_items/(?P<pk>[^/]+)/move/$', views.MovePageContentItemView.as_view(), name='pagecontentitem-move'),
Expand Down
11 changes: 11 additions & 0 deletions fiber/rest_api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -305,3 +305,14 @@ def get(self, request, format=None):
Provide jqTree data for the PageSelect dialog.
"""
return Response(Page.objects.create_jqtree_data(request.user))


class ContentItemGroups(views.APIView):
renderer_classes = API_RENDERERS
permission_classes = (permissions.IsAdminUser,)

def get(self, request, format=None):
"""
Get content groups data which is suitable for jqtree.
"""
return Response(ContentItem.objects.get_content_groups(request.user))
21 changes: 15 additions & 6 deletions fiber/static/fiber/js/admin.js
Original file line number Diff line number Diff line change
Expand Up @@ -1509,13 +1509,22 @@ var adminPage = {
},

init_content_tree: function() {
this.admin_content_tree.tree({
data: window.fiber_content_items_data,
saveState: 'fiber_content_items'
});
this.admin_content_tree.bind('tree.contextmenu', $.proxy(this.handle_content_item_menu_context_menu, this));
function handle_load_data(data) {
this.admin_content_tree.tree({
data: data,
saveState: 'fiber_content_items'
});
this.admin_content_tree.bind('tree.contextmenu', $.proxy(this.handle_content_item_menu_context_menu, this));
this.make_content_items_draggable();
}

this.make_content_items_draggable();
$.ajax({
url: '/api/v2/contentitemgroups/',
type: 'GET',
success: $.proxy(handle_load_data, this),
cache: false,
dataType: 'json'
});
},

make_content_items_draggable: function() {
Expand Down
4 changes: 0 additions & 4 deletions fiber/templates/fiber/admin.html
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,3 @@ <h2>{% trans "Content" %}</h2>
<div id="df-wpr-busy">
<div id="df-busy"></div>
</div>

<script>
window.fiber_content_items_data = {{ content_items_json|safe }};
</script>

0 comments on commit 9195c57

Please sign in to comment.