Beispiel #1
0
    def create_search_options(self, column, language):

        filters = [filter.id for filter in self.filters] \
            if self.filters \
            else []

        filter_id = "member-" + column.name
        filters.append(filter_id)

        options = Element()
        options.add_class("search_options")

        title = Element("div")
        title.add_class("options_header")
        title.append(translations("woost.views.ContentTable search header"))
        options.append(title)

        add_filter = Element("a")
        add_filter.add_class("add_filter")
        add_filter["href"] = "?" + view_state(filter = filters, page = 0)
        add_filter.append(
            translations("woost.views.ContentTable add column filter")
        )
        add_filter.set_client_param("filterId", filter_id)
        options.append(add_filter)

        return options
    def handle_processed(cls, event):

        controller = event.source
        rel = cherrypy.request.params.get("relation-select")

        # Open the item selector
        if rel:
            pos = rel.find("-")
            root_content_type_name = rel[:pos]
            selection_parameter = rel[pos + 1:]
            key = selection_parameter[len(controller.form_prefix):]

            # Push the relation as a new stack node
            current_node = controller.stack_node
            rel_node = RelationNode()
            rel_node.member = current_node.content_type[key]
            controller.edit_stack.push(rel_node)

            value = schema.get(current_node.form_data, key)

            raise cherrypy.HTTPRedirect(
                controller.context["cms"].contextual_uri("content") + "?" +
                view_state(
                    selection=value.id if value is not None else None,
                    edit_stack=controller.edit_stack.to_param(),
                    client_side_scripting=controller.client_side_scripting) +
                "#default")

        # Open an editor for a new nested item
        new = cherrypy.request.params.get("relation-new")

        if new:
            pos = new.find("-")
            member_name = new[:pos]
            content_type_name = new[pos + 1:]

            # Push the relation as a new stack node
            current_node = controller.stack_node
            rel_node = RelationNode()
            rel_node.member = current_node.content_type[member_name]
            controller.edit_stack.push(rel_node)

            raise cherrypy.HTTPRedirect(
                controller.context["cms"].contextual_uri(
                    "content",
                    "new",
                    item_type=content_type_name,
                    edit_stack=controller.edit_stack.to_param()))

        # Open an editor for an existing nested item
        edit = cherrypy.request.params.get("relation-edit")

        if edit:
            raise cherrypy.HTTPRedirect(
                controller.edit_uri(controller.stack_node.form_data[edit]))
Beispiel #3
0
    def create_grouping_options(self, column, language):

        options = Element()
        options.add_class("grouping_options")

        title = Element("div")
        title.add_class("options_header")
        title.append(translations("woost.views.ContentTable grouping header"))
        options.append(title)

        grouping_class = resolve(column.grouping)
        variants = (None,) + grouping_class.variants

        table = Element("table")
        options.append(table)

        for variant in variants:

            tr = Element("tr")
            table.append(tr)                

            td = Element("td")
            td.add_class("variant")
            td.append(grouping_class.translate_grouping_variant(variant))
            tr.append(td)

            for sign in (PositiveExpression, NegativeExpression):
                grouping = grouping_class()
                grouping.member = column
                grouping.language = language
                grouping.sign = sign
                grouping.variant = variant

                td = Element("td")
                td.add_class("sign")
                tr.append(td)

                grouping_link = Element("a")
                grouping_link.add_class("grouping")
                grouping_link["href"] = \
                    "?" + view_state(grouping = grouping.request_value, page = 0)
                grouping_link.append(
                    translations(
                        "cocktail.controllers.grouping.MemberGrouping-"
                        + ("ascending"
                            if sign is PositiveExpression
                            else "descending")
                    )
                )
                td.append(grouping_link)

        return options
Beispiel #4
0
    def create_sorting_options(self, column, language):

        if self.order:
            direction = self._sorted_columns.get((column.name, language))
        else:
            direction = None

        order_param = column.name
        if language:
            order_param += "." + language

        options = Element()
        options.add_class("sorting_options")

        title = Element("div")
        title.add_class("options_header")
        title.append(translations("woost.views.ContentTable sorting header"))
        options.append(title)

        asc = options.ascending = Element("a")
        asc.add_class("ascending")
        asc["href"] = "?" + view_state(order = order_param, page = 0)
        asc.append(translations("woost.views.ContentTable sort ascending"))
        options.append(asc)

        if direction is PositiveExpression:
            asc.add_class("selected")

        desc = options.ascending = Element("a")
        desc.add_class("descending")
        desc["href"] = "?" + view_state(order = "-" + order_param, page = 0)
        desc.append(translations("woost.views.ContentTable sort descending"))
        options.append(desc)

        if direction is NegativeExpression:
            desc.add_class("selected")

        return options
Beispiel #5
0
 def get_url(self, controller, selection):
     return "?" + view_state(
         format = self.format
     )
 def submit(self):
     raise cherrypy.HTTPRedirect(
         self.contextual_uri(self.default_section) + "?" + view_state())