From 4de32236f037c1edda7134dfe5d7153539977698 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Mon, 11 May 2015 09:13:45 +0200 Subject: [PATCH] general: add a 'base.html' template webservice (#7137) --- combo/apps/wcs/models.py | 1 + combo/data/models.py | 17 +++- combo/public/static/js/combo.public.js | 16 +++- combo/public/templates/combo/menu.html | 2 +- combo/public/templates/combo/placeholder.html | 5 +- combo/public/templatetags/combo.py | 22 ++++- combo/public/urls.py | 1 + combo/public/views.py | 96 ++++++++++++++----- tests/test_public.py | 29 ++++++ 9 files changed, 153 insertions(+), 36 deletions(-) diff --git a/combo/apps/wcs/models.py b/combo/apps/wcs/models.py index a63796da..d5254e06 100644 --- a/combo/apps/wcs/models.py +++ b/combo/apps/wcs/models.py @@ -131,6 +131,7 @@ class WcsCategoryCell(WcsCommonCategoryCell): class WcsBlurpMixin(object): is_enabled = classmethod(is_wcs_enabled) + user_dependant = True def get_blurp_renderer(self, context): if self.wcs_site: diff --git a/combo/data/models.py b/combo/data/models.py index 3950712e..6cd4608a 100644 --- a/combo/data/models.py +++ b/combo/data/models.py @@ -76,15 +76,19 @@ class Page(models.Model): self.order = max_order + 1 return super(Page, self).save(*args, **kwargs) - def get_online_url(self): - parts = [self.slug] + def get_parents_and_self(self): + pages = [self] page = self while page.parent_id: page = page.parent - parts.append(page.slug) + pages.append(page) + return reversed(pages) + + def get_online_url(self): + parts = [x.slug for x in self.get_parents_and_self()] if parts == ['index']: return '/' - return '/' + '/'.join(reversed(parts)) + return '/' + '/'.join(parts) def get_page_of_level(self, level): '''Return page of given level in the page hierarchy.''' @@ -212,6 +216,7 @@ class CellBase(models.Model): default_form_class = None visible = True + user_dependant = False class Meta: abstract = True @@ -319,6 +324,10 @@ class CellBase(models.Model): context.''' return True + def is_user_dependant(self, context): + '''Return whether the cell content varies from user to user.''' + return self.user_dependant + @register_cell_class class TextCell(CellBase): diff --git a/combo/public/static/js/combo.public.js b/combo/public/static/js/combo.public.js index 9919a5a8..4632307d 100644 --- a/combo/public/static/js/combo.public.js +++ b/combo/public/static/js/combo.public.js @@ -1,14 +1,24 @@ +function combo_load_cell(elem, url) { + $.ajax({url: url, + xhrFields: { withCredentials: true }, + async: true, + dataType: 'html', + crossDomain: true, + success: function(data) { $(elem).replaceWith(data); }, + error: function(error) { console.log(':(', error); } + }); +} + $(function() { $('[data-ajax-cell-refresh]').each(function(idx, elem) { var $elem = $(elem); function refresh() { - $elem.find('> div').load($elem.data('ajax-cell-url')); + combo_load_cell($elem.find('> div'), $elem.data('ajax-cell-url')); } $elem.timeout_id = setInterval(refresh, $elem.data('ajax-cell-refresh')*1000); }); $('[data-ajax-cell-must-load]').each(function(idx, elem) { var $elem = $(elem); - console.log('loading:', $elem.parents('div.cell').data('ajax-cell-url')); - $elem.load($elem.parents('div.cell').data('ajax-cell-url')); + combo_load_cell($elem, $elem.parents('div.cell').data('ajax-cell-url')); }); }); diff --git a/combo/public/templates/combo/menu.html b/combo/public/templates/combo/menu.html index ef87c575..03809238 100644 --- a/combo/public/templates/combo/menu.html +++ b/combo/public/templates/combo/menu.html @@ -3,7 +3,7 @@