def tile_content(context, request, url=None, size_x=None, use=None, custom_text=None, extra_style=None): if url is None and "url" in request.POST: url = request.POST["url"] if use is None and "use" in request.POST: use = request.POST["use"] if custom_text is None and "custom_text" in request.POST: custom_text = request.POST["custom_text"] if extra_style is None and "extra_style" in request.POST: extra_style = request.POST["extra_style"] if size_x is None and "size_x" in request.POST: size_x = request.POST["size_x"] if url == "" or url is None or url is False: request.content_url = None current_context = context else: resource = None app_url = request.application_url parsed_url = urlparse(url) base_url = "{}://{}".format(parsed_url.scheme, parsed_url.netloc) if app_url.startswith(base_url) or url.startswith("/"): try: resource = find_resource(context, parsed_url.path) except KeyError: return _(u"Can't find resource with path {0}.".format(parsed_url.path)) request.image = None if resource is not None: current_context = resource if use == u"use_internal_image": tree = nodes_tree(request, context=resource).tolist() if tree: resource_images = [obj for obj in tree if IImage.providedBy(obj)] if resource_images: request.image = resource_images[0] request.content_url = request.resource_url(resource) request.target = "_self" else: current_context = context request.content_url = url request.target = "_blank" request.view_name = "tile-view" request.size = 2 if size_x: request.size = int(size_x) + 2 request.use = None if use is not None: request.use = use request.extra_style = u"" if extra_style is not None: request.extra_style = extra_style if custom_text is not None: request.custom_text = custom_text return render_view(current_context, request, name="tile-view")
def tile_content(context, request, url=None, size_x=None): if url is None and 'url' in request.GET: url = request.GET['url'] if url is None: return u'' if size_x is None and 'size_x' in request.GET: size_x = request.GET['size_x'] path = urlparse(url).path try: resource = find_resource(context, path) except KeyError: return _(u"Can't find resource with path {0}.".format(path)) request.view_name = "tile-view" request.size = 2 if size_x: request.size = int(size_x) + 2 return render_view(resource, request, name="tile-view")
def save_grid(context, request): data = request.POST tiles = eval(data['tiles']) request.session.flash( _(u'The tiles have been saved.'), 'success') return save_grid_settings(tiles, 'tiles')
_(u'The tiles have been saved.'), 'success') return save_grid_settings(tiles, 'tiles') @view_config(name='grid_settings', permission='view', renderer='json') def grid_settings(context, request): return {'resize_tiles': get_setting(u'resize_tiles', False), 'width': get_setting(u'width', 150), 'height': get_setting(u'height', 150), 'margin_x': get_setting(u'margin_x', 10), 'margin_y': get_setting(u'margin_y', 10), 'slot': get_setting(u'slot', 'belowcontent')} use_values = (('use_custom_text', _(u'Use custom text')), ('use_title', _(u'Use title')), ('use_description', _(u'Use description')), ('use_title_and_description', _(u'Use title and description')), ('use_body_text', _(u'Use body text')), ('use_image', _(u'Use image')), ('use_internal_image', _(u'Use internal image')),) class UseSchemaNode(colander.SchemaNode): name = 'use' title = _(u'Use') missing = u'use_title', widget = deform.widget.SelectWidget(values=use_values)
class DimensionYSchemaNode(colander.SchemaNode): name = 'dimension_y' title = _(u'Dimension Y') default = 150
class MarginYSchemaNode(colander.SchemaNode): name = 'margin_y' title = _(u'Margin Y') default = 10
class MarginXSchemaNode(colander.SchemaNode): name = 'margin_x' title = _(u'Margin X') default = 10
class DimensionYSchemaNode(colander.SchemaNode): name = 'dimension_y' title = _(u'Dimension Y') default = 150 class GridSchema(colander.MappingSchema): slot = SlotSchemaNode(colander.String()) show_in_context = ShowInContextSchemaNode(colander.String()) dimension_x = DimensionXSchemaNode(colander.Integer()) dimension_y = DimensionYSchemaNode(colander.Integer()) margin_x = MarginXSchemaNode(colander.Integer()) margin_y = MarginYSchemaNode(colander.Integer()) GridSettings = { 'name': 'grid_settings', 'title': _(u'Grid Settings'), 'description': _(u"Settings for kotti_grid"), 'success_message': _(u"Successfully saved kotti_grid settings."), 'schema_factory': GridSchema, } def populate(): add_settings(GridSettings) slot = get_setting(u'slot', u'belowcontent') assign_slot('grid-widget', slot)