OpenEdx - 无法在xblock中使用author_view

时间:2017-11-01 20:38:15

标签: edx openedx

我似乎无法在我创建的Xblock中执行author_view

也许我误解了author_view的意图,或者我期待它做什么。根据我的理解,一旦您将Xblock添加到垂直中,就会在工作室中显示该视图(例如,当您可以重新排序Xblock时,或者单击其编辑按钮时,Xblock内显示的内容)。

我已经完成了大量的搜索和文档阅读,无法找到使用author_view的任何直接示例。但是这样的判断:

  

用于在Studio中为教师预览此XBlock的视图。如果未定义author_view,则默认为student_view

让我觉得这就是我正在寻找的。

在我的情况下,Xblock在学生视图中正在进行一些javascript工作,因此没有内容可以显示给学生。在Studio视图中,我希望它显示可编辑的参数,执行任何javascript。

我的xblock python文件的相关部分是:

class MyXblock(Xblock):
    def resource_string(self, path):
        data = pkg_resources.resource_string(__name__, path)
        return data.decode("utf8")

    def student_view(self, context=None):
        data = { # some context data }
        # student_view.html contains an empty tag - nothing to display
        html = self.resource_string("static/html/student_view.html")
        frag = Fragment(html.format(self=self))
        frag.add_css(self.resource_string("static/css/style.css"))

        frag.add_javascript(self.resource_string("static/js/src/student.js"))
        frag.initialize_js('MyXblock', data)
        return frag

    def author_view(self, context=None):
        # author_view.html contains html to display current xblock parameter values
        html = self.resource_string("static/html/author_view.html")
        frag = Fragment(html.format(self=self))
        frag.add_css(self.resource_string("static/css/style.css"))
        return frag

    def studio_view(self, context=None):
        html = self.resource_string("static/html/studio_view_edit.html")
        frag = Fragment(html.format(self=self))
        frag.add_css(self.resource_string("static/css/style.css"))
        frag.add_javascript(self.resource_string("static/js/src/studio_edit.js"))
        frag.initialize_js('MyXblock')
        return frag           

我尝试在学生/作者视图中添加日志语句,但唯一被调用的是student_view

我最终有一个解决方案,包括检查LMS_ROOT_URL并将其与javascript中的window.location进行比较并有条件地执行javascript或填充myxblock_xblock html标记...但是我真的不喜欢它,特别是知道这个author_view就在这里,可能正是我想做的。

非常感谢任何见解!谢谢!

1 个答案:

答案 0 :(得分:1)

在xblock的author_view出现相同问题后,我在this google groups thread

中找到了解决方案

您只需要向xblock添加变量has_author_view = True,edX Studio就会使用您的author_view。这似乎是一种解决方法,我没有找到任何其他参考这个变量。