''' Simple container that displays a small bit of html output ''' def __init__(self, template='pagelets/iframe.html', **kwargs): super(IFramePagelet, self).__init__(**kwargs) self._template = template def _get_context(self): context = super(IFramePagelet, self)._get_context() context['content'] = Markup("<iframe style='height: 100%; width: 100%; border: none;' src='"+self._data_model.starting_url+"'> </iframe>") return context class BreadCrumbPaglet(BasePagelet): def __init__(self, template='pagelets/breadcrumbs.html', **kwargs): super(BasePagelet, self).__init__(**kwargs) self._template = template self._breadcrumbs = [] def append(self, label, url): self._breadcrumbs.append((label, url)) def _get_context(self): context = super(BasePagelet, self)._get_context() context['breadcrumbs'] = self._breadcrumbs return context pagelet_mapper = ContentTypeMapper(BasePagelet) pagelet_mapper.register('SimplePagelet', SimplePagelet) pagelet_mapper.register('ApplicationPagelet', ApplicationPagelet) pagelet_mapper.register('IFrame', IFramePagelet)
if pagelet is not None: # TODO: Not sure what want to do when not found, maybe raise an exception? currently returns none. pagelet = children.get(pagelet) else: pagelet = children.itervalues().next() return pagelet def _build_children(self): ''' Builds the children for the page. Cycles through the children in self.page instance and returns a dictionary in the structure {<pagelet.name>:<pagelet>, ...} ''' _pagelets = SortedDict() from ampcms.models import Pagelet, AmpCmsSite site = AmpCmsSite.objects.get_by_request(self.request) if not site.private: loadable_pagelets = self._data_model.pagelets.active() if self.request.user.is_anonymous(): loadable_pagelets = loadable_pagelets.filter(private=False) else: loadable_pagelets = loadable_pagelets.filter(Q(private=False) | Q(user=self.request.user) | Q(group__user=self.request.user)) else: loadable_pagelets = Pagelet.objects.active_user_page_pagelets(self.request.user, self._data_model) for pagelet in loadable_pagelets: pagelet_class = pagelets.pagelet_mapper.get_item(pagelet.pagelet_class) _pagelets[pagelet.name] = pagelet_class(request=self.request, request_kwargs=self.request_kwargs, pagelet=pagelet) return _pagelets page_mapper = ContentTypeMapper(BasePage) page_mapper.register('PageletPage', PageletPage)