我似乎无法在我创建的Xblock中执行author_view
。
也许我误解了author_view
的意图,或者我期待它做什么。根据我的理解,一旦您将Xblock添加到垂直中,就会在工作室中显示该视图(例如,当您可以重新排序Xblock时,或者单击其编辑按钮时,Xblock内显示的内容)。
我已经完成了大量的搜索和文档阅读,无法找到使用author_view
的任何直接示例。但是这样的判断:
用于在Studio中为教师预览此XBlock的视图。如果未定义author_view,则默认为
student_view
。
让我觉得这就是我正在寻找的。 p>
在我的情况下,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
就在这里,可能正是我想做的。
非常感谢任何见解!谢谢!
答案 0 :(得分:1)
在xblock的author_view
出现相同问题后,我在this google groups thread
您只需要向xblock添加变量has_author_view = True
,edX Studio就会使用您的author_view
。这似乎是一种解决方法,我没有找到任何其他参考这个变量。