예제 #1
0
    def render_children(self, context, fragment, can_reorder=False, can_add=False):  # pylint: disable=unused-argument
        """
        Renders the children of the module with HTML appropriate for Studio. Reordering is not supported.
        """
        contents = []

        paging = context.get('paging', None)

        children_count = len(self.children)  # pylint: disable=no-member
        item_start, item_end = 0, children_count

        # TODO sort children
        if paging:
            page_number = paging.get('page_number', 0)
            raw_page_size = paging.get('page_size', None)
            page_size = raw_page_size if raw_page_size is not None else children_count
            item_start, item_end = page_size * page_number, page_size * (page_number + 1)

        children_to_show = self.children[item_start:item_end]  # pylint: disable=no-member

        force_render = context.get('force_render', None)
        context['can_move'] = False

        for child_key in children_to_show:
            # Children must have a separate context from the library itself. Make a copy.
            child_context = context.copy()
            child_context['show_preview'] = self.show_children_previews
            child_context['can_edit_visibility'] = False
            child = self.runtime.get_block(child_key)
            child_view_name = StudioEditableModule.get_preview_view_name(child)

            if unicode(child.location) == force_render:
                child_context['show_preview'] = True

            if child_context['show_preview']:
                rendered_child = self.runtime.render_child(child, child_view_name, child_context)
            else:
                rendered_child = self.runtime.render_child_placeholder(child, child_view_name, child_context)
            fragment.add_frag_resources(rendered_child)

            contents.append({
                'id': unicode(child.location),
                'content': rendered_child.content,
            })

        fragment.add_content(
            self.runtime.render_template("studio_render_paged_children_view.html", {
                'items': contents,
                'xblock_context': context,
                'can_add': can_add,
                'first_displayed': item_start,
                'total_children': children_count,
                'displayed_children': len(children_to_show),
                'previews': self.show_children_previews
            })
        )
예제 #2
0
    def render_children(self, context, fragment, can_reorder=False, can_add=False):  # pylint: disable=unused-argument
        """
        Renders the children of the module with HTML appropriate for Studio. Reordering is not supported.
        """
        contents = []

        paging = context.get('paging', None)

        children_count = len(self.children)  # pylint: disable=no-member
        item_start, item_end = 0, children_count

        # TODO sort children
        if paging:
            page_number = paging.get('page_number', 0)
            raw_page_size = paging.get('page_size', None)
            page_size = raw_page_size if raw_page_size is not None else children_count
            item_start, item_end = page_size * page_number, page_size * (page_number + 1)

        children_to_show = self.children[item_start:item_end]  # pylint: disable=no-member

        force_render = context.get('force_render', None)
        context['can_move'] = False

        for child_key in children_to_show:
            # Children must have a separate context from the library itself. Make a copy.
            child_context = context.copy()
            child_context['show_preview'] = self.show_children_previews
            child_context['can_edit_visibility'] = False
            child = self.runtime.get_block(child_key)
            child_view_name = StudioEditableModule.get_preview_view_name(child)

            if six.text_type(child.location) == force_render:
                child_context['show_preview'] = True

            if child_context['show_preview']:
                rendered_child = self.runtime.render_child(child, child_view_name, child_context)
            else:
                rendered_child = self.runtime.render_child_placeholder(child, child_view_name, child_context)
            fragment.add_fragment_resources(rendered_child)

            contents.append({
                'id': six.text_type(child.location),
                'content': rendered_child.content,
            })

        fragment.add_content(
            self.runtime.render_template("studio_render_paged_children_view.html", {
                'items': contents,
                'xblock_context': context,
                'can_add': can_add,
                'first_displayed': item_start,
                'total_children': children_count,
                'displayed_children': len(children_to_show),
                'previews': self.show_children_previews
            })
        )
예제 #3
0
    def render_children(self, context, fragment, can_reorder=False, can_add=False):  # pylint: disable=unused-argument
        """
        Renders the children of the module with HTML appropriate for Studio. Reordering is not supported.
        """
        contents = []

        paging = context.get("paging", None)

        children_count = len(self.children)  # pylint: disable=no-member
        item_start, item_end = 0, children_count

        # TODO sort children
        if paging:
            page_number = paging.get("page_number", 0)
            raw_page_size = paging.get("page_size", None)
            page_size = raw_page_size if raw_page_size is not None else children_count
            item_start, item_end = page_size * page_number, page_size * (page_number + 1)

        children_to_show = self.children[item_start:item_end]  # pylint: disable=no-member

        force_render = context.get("force_render", None)

        for child_key in children_to_show:  # pylint: disable=E1101
            # Children must have a separate context from the library itself. Make a copy.
            child_context = context.copy()
            child_context["show_preview"] = self.show_children_previews
            child = self.runtime.get_block(child_key)
            child_view_name = StudioEditableModule.get_preview_view_name(child)

            if unicode(child.location) == force_render:
                child_context["show_preview"] = True

            if child_context["show_preview"]:
                rendered_child = self.runtime.render_child(child, child_view_name, child_context)
            else:
                rendered_child = self.runtime.render_child_placeholder(child, child_view_name, child_context)
            fragment.add_frag_resources(rendered_child)

            contents.append({"id": unicode(child.location), "content": rendered_child.content})

        fragment.add_content(
            self.runtime.render_template(
                "studio_render_paged_children_view.html",
                {
                    "items": contents,
                    "xblock_context": context,
                    "can_add": can_add,
                    "first_displayed": item_start,
                    "total_children": children_count,
                    "displayed_children": len(children_to_show),
                    "previews": self.show_children_previews,
                },
            )
        )
 def studio_render_children(self, fragment, children, context):
     """
     Renders the specified children and returns it as an HTML string. In addition, any
     dependencies are added to the specified fragment.
     """
     html = ""
     for active_child_descriptor in children:
         active_child = self.system.get_module(active_child_descriptor)
         rendered_child = active_child.render(StudioEditableModule.get_preview_view_name(active_child), context)
         fragment.add_frag_resources(rendered_child)
         html = html + rendered_child.content
     return html
예제 #5
0
 def studio_render_children(self, fragment, children, context):
     """
     Renders the specified children and returns it as an HTML string. In addition, any
     dependencies are added to the specified fragment.
     """
     html = ""
     for active_child_descriptor in children:
         active_child = self.system.get_module(active_child_descriptor)
         rendered_child = active_child.render(
             StudioEditableModule.get_preview_view_name(active_child),
             context)
         fragment.add_frag_resources(rendered_child)
         html = html + rendered_child.content
     return html
    def studio_render_children(self, fragment, children, context):
        """
        Renders the specified children and returns it as an HTML string. In addition, any
        dependencies are added to the specified fragment.
        """
        html = ""
        for active_child_descriptor in children:
            active_child = self.system.get_module(active_child_descriptor)
            rendered_child = active_child.render(StudioEditableModule.get_preview_view_name(active_child), context)
            if active_child.category == "vertical":
                group_name, group_id = self.get_data_for_vertical(active_child)
                if group_name:
                    rendered_child.content = rendered_child.content.replace(
                        DEFAULT_GROUP_NAME.format(group_id=group_id), group_name
                    )
            fragment.add_frag_resources(rendered_child)
            html = html + rendered_child.content

        return html
예제 #7
0
    def studio_render_children(self, fragment, children, context):
        """
        Renders the specified children and returns it as an HTML string. In addition, any
        dependencies are added to the specified fragment.
        """
        html = ""
        for active_child_descriptor in children:
            active_child = self.system.get_module(active_child_descriptor)
            rendered_child = active_child.render(StudioEditableModule.get_preview_view_name(active_child), context)
            if active_child.category == 'vertical':
                group_name, group_id  = self.get_data_for_vertical(active_child)
                if group_name:
                    rendered_child.content = rendered_child.content.replace(
                        DEFAULT_GROUP_NAME.format(group_id=group_id),
                        group_name
                    )
            fragment.add_frag_resources(rendered_child)
            html = html + rendered_child.content

        return html
예제 #8
0
    def render_children(self, context, fragment, can_reorder=False, can_add=False):  # pylint: disable=unused-argument
        """
        Renders the children of the module with HTML appropriate for Studio. Reordering is not supported.
        """
        contents = []

        paging = context.get('paging', None)

        children_count = len(self.children)  # pylint: disable=no-member
        item_start, item_end = 0, children_count

        # TODO sort children
        if paging:
            page_number = paging.get('page_number', 0)
            raw_page_size = paging.get('page_size', None)
            page_size = raw_page_size if raw_page_size is not None else children_count
            item_start, item_end = page_size * page_number, page_size * (page_number + 1)

        children_to_show = self.children[item_start:item_end]  # pylint: disable=no-member

        for child_key in children_to_show:  # pylint: disable=E1101
            child = self.runtime.get_block(child_key)
            child_view_name = StudioEditableModule.get_preview_view_name(child)
            rendered_child = self.runtime.render_child(child, child_view_name, context)
            fragment.add_frag_resources(rendered_child)

            contents.append({
                'id': unicode(child.location),
                'content': rendered_child.content,
            })

        fragment.add_content(
            self.runtime.render_template("studio_render_paged_children_view.html", {
                'items': contents,
                'xblock_context': context,
                'can_add': can_add,
                'first_displayed': item_start,
                'total_children': children_count,
                'displayed_children': len(children_to_show)
            })
        )