def AvailableFragments(context): # need to move import here since vocab module is used in interfaces from castle.cms.interfaces import IDashboard if isinstance(context, AcquirableDictionary): context = aq_parent(context) is_dash = IDashboard.providedBy(context) utils = getAllUtilitiesRegisteredFor(IFragmentsDirectory) all_frags = [] request = getRequest() for util in utils: if util.layer is not None: if not util.layer.providedBy(request): continue all_frags.extend(util.list()) terms = [SimpleVocabulary.createTerm('', '', 'Select fragment')] frags = [] for frag in set(all_frags): if (frag in _blacklist or (not is_dash and frag in _dashboard_available)): continue if frag[0] == '_' or frag[-1] == '_': continue frags.append(frag) frags.sort() for frag in frags: terms.append( SimpleVocabulary.createTerm( frag, frag, frag.capitalize().replace('-', ' '))) return SimpleVocabulary(terms)
def __call__(self): data = super(CastleSettingsAdapter, self).__call__() if api.user.is_anonymous(): return data folder = self.context if not IDexterityContainer.providedBy(folder): folder = aq_parent(folder) required_upload_fields = self.registry.get( 'castle.required_file_upload_fields', []) or [] data.update({ 'data-available-slots': json.dumps(self.get_available_slot_tiles()), 'data-required-file-upload-fields': json.dumps(required_upload_fields), 'data-google-maps-api-key': self.registry.get('castle.google_maps_api_key', '') or '', 'data-folder-url': folder.absolute_url() }) show_tour = False user = api.user.get_current() viewed = user.getProperty('tours_viewed', []) if ('all' not in viewed and set(viewed) != set([ 'welcome', 'dashboard', 'foldercontents', 'addcontentinitial', 'addcontentadd', 'editpage' ])): show_tour = True if show_tour and not api.env.test_mode(): data['data-show-tour'] = json.dumps({'viewed': viewed}) folder = self.context if not ISiteRoot.providedBy( folder) and not IDexterityContainer.providedBy(folder): folder = aq_parent(folder) site_path = self.site.getPhysicalPath() folder_path = folder.getPhysicalPath() data['data-base-path'] = '/' + '/'.join(folder_path[len(site_path):]) real_context = self.context if ISiteRoot.providedBy(real_context): # we're at site root but actually kind of want context front page try: real_context = real_context[getDefaultPage(real_context)] except (AttributeError, KeyError): pass if IDashboard.providedBy(real_context): real_context = self.site transform = theming.getTransform(real_context, self.request) if transform is not None: data['data-site-layout'] = transform.get_layout_name(real_context) data['data-site-default'] = getDefaultPage(self.site) or 'front-page' return data
def real_context(self): context = self.context if ISiteRoot.providedBy(context): # we're at site root but actually kind of want context front page try: context = context[getDefaultPage(context)] except (AttributeError, KeyError): pass if IDashboard.providedBy(context): context = self.site return context
def __call__(self): if IDashboard.providedBy( self.context) and '@@dashboard' not in self.request.URL: return self.request.response.redirect( api.portal.get().absolute_url() + '/@@dashboard') return super(LayoutView, self).__call__()