Esempio n. 1
0
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")
Esempio n. 2
0
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")
Esempio n. 3
0
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')
Esempio n. 4
0
        _(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)

Esempio n. 5
0
class DimensionYSchemaNode(colander.SchemaNode):
    name = 'dimension_y'
    title = _(u'Dimension Y')
    default = 150
Esempio n. 6
0
class MarginYSchemaNode(colander.SchemaNode):
    name = 'margin_y'
    title = _(u'Margin Y')
    default = 10
Esempio n. 7
0
class MarginXSchemaNode(colander.SchemaNode):
    name = 'margin_x'
    title = _(u'Margin X')
    default = 10
Esempio n. 8
0

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)
Esempio n. 9
0
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')