diff --git a/cms/djangoapps/contentstore/views/component.py b/cms/djangoapps/contentstore/views/component.py index 716a38e1b2..5d938eef8a 100644 --- a/cms/djangoapps/contentstore/views/component.py +++ b/cms/djangoapps/contentstore/views/component.py @@ -16,6 +16,7 @@ from xmodule.modulestore.django import modulestore from xblock.core import XBlock from xblock.django.request import webob_to_django_response, django_to_webob_request from xblock.exceptions import NoSuchHandlerError +from xblock.fields import Scope from xblock.plugin import PluginMissingError from xblock.runtime import Mixologist diff --git a/cms/djangoapps/contentstore/views/item.py b/cms/djangoapps/contentstore/views/item.py index 95a5111bde..0568ca747f 100644 --- a/cms/djangoapps/contentstore/views/item.py +++ b/cms/djangoapps/contentstore/views/item.py @@ -264,7 +264,7 @@ def xblock_view_handler(request, usage_key_string, view_name): # pylint: disable=too-many-format-args return HttpResponse( content="Couldn't parse paging parameters: enable_paging: " - "%s, page_number: %s, page_size: %s".format( + "{0}, page_number: {1}, page_size: {2}".format( request.REQUEST.get('enable_paging', 'false'), request.REQUEST.get('page_number', 0), request.REQUEST.get('page_size', 0) @@ -273,6 +273,8 @@ def xblock_view_handler(request, usage_key_string, view_name): content_type="text/plain", ) + force_render = request.REQUEST.get('force_render', None) + # Set up the context to be passed to each XBlock's render method. context = { 'is_pages_view': is_pages_view, # This setting disables the recursive wrapping of xblocks @@ -281,6 +283,7 @@ def xblock_view_handler(request, usage_key_string, view_name): 'root_xblock': xblock if (view_name == 'container_preview') else None, 'reorderable_items': reorderable_items, 'paging': paging, + 'force_render': force_render, } fragment = get_preview_fragment(request, xblock, context) diff --git a/cms/djangoapps/contentstore/views/library.py b/cms/djangoapps/contentstore/views/library.py index eee21bfc1d..0a7a0e2504 100644 --- a/cms/djangoapps/contentstore/views/library.py +++ b/cms/djangoapps/contentstore/views/library.py @@ -231,4 +231,5 @@ def manage_library_users(request, library_key_string): 'allow_actions': bool(user_perms & STUDIO_EDIT_ROLES), 'library_key': unicode(library_key), 'lib_users_url': reverse_library_url('manage_library_users', library_key_string), + 'show_children_previews': library.show_children_previews }) diff --git a/cms/djangoapps/contentstore/views/preview.py b/cms/djangoapps/contentstore/views/preview.py index f192121d2a..e831ca7dd1 100644 --- a/cms/djangoapps/contentstore/views/preview.py +++ b/cms/djangoapps/contentstore/views/preview.py @@ -113,6 +113,12 @@ class PreviewModuleSystem(ModuleSystem): # pylint: disable=abstract-method if aside_type != 'acid_aside' ] + def render_child_placeholder(self, block, view_name, context): + """ + Renders a placeholder XBlock. + """ + return self.wrap_xblock(block, view_name, Fragment(), context) + class StudioPermissionsService(object): """ @@ -240,6 +246,7 @@ def _studio_wrap_xblock(xblock, view, frag, context, display_name_only=False): template_context = { 'xblock_context': context, 'xblock': xblock, + 'show_preview': context.get('show_preview', True), 'content': frag.content, 'is_root': is_root, 'is_reorderable': is_reorderable, diff --git a/cms/static/js/spec/views/paged_container_spec.js b/cms/static/js/spec/views/paged_container_spec.js index 524f88e552..a165610c18 100644 --- a/cms/static/js/spec/views/paged_container_spec.js +++ b/cms/static/js/spec/views/paged_container_spec.js @@ -1,12 +1,23 @@ define([ "jquery", "underscore", "js/common_helpers/ajax_helpers", "URI", "js/models/xblock_info", - "js/views/paged_container", "js/views/paging_header", "js/views/paging_footer"], - function ($, _, AjaxHelpers, URI, XBlockInfo, PagedContainer, PagingHeader, PagingFooter) { + "js/views/paged_container", "js/views/paging_header", "js/views/paging_footer", "js/views/xblock"], + function ($, _, AjaxHelpers, URI, XBlockInfo, PagedContainer, PagingHeader, PagingFooter, XBlockView) { var htmlResponseTpl = _.template('' + - '
' + '