OpenEdx - 无法在 xblock 中使用 author_view
OpenEdx - can't get author_view to be used in xblock
我似乎无法在我创建的 Xblock 中执行 author_view
。
也许我误解了 author_view
的意图,或者我期望它做什么。根据我的理解,一旦您将 Xblock 添加到 Vertical(例如,当您可以重新排序 Xblock 或单击其编辑按钮时,Xblock 内显示的内容就是显示在工作室中的视图)。
我进行了大量搜索和文档阅读,但找不到任何使用 author_view
的直接示例。但是像这样的陈述:
The view used to preview this XBlock for instructors in Studio. Defaults to student_view
if an author_view is not defined.
让我觉得这就是我要找的东西。
在我的例子中,Xblock 在学生视图中做一些 javascript 工作,因此没有内容可显示给学生。在 Studio 视图中,我希望它显示可编辑参数并且 not 执行任何 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/author 视图中,但唯一被调用的是 student_view
.
我最终有一个解决方案,包括检查 LMS_ROOT_URL
并将其与 javascript 中的 window.location
进行比较,并有条件地执行 javascript 或填充myxblock_xblock
html 标签...但我真的不喜欢它,尤其是知道这个 author_view
就在这里,并且可能完全符合我的要求。
如有任何见解,我们将不胜感激!谢谢!
在 xblock 的 author_view
遇到同样的问题后,我在 this google groups thread
中找到了解决方案
您只需将变量 has_author_view = True
添加到您的 xblock,edX Studio 将使用您的 author_view
。这似乎是一种解决方法,我还没有找到任何其他对此变量的引用。
我似乎无法在我创建的 Xblock 中执行 author_view
。
也许我误解了 author_view
的意图,或者我期望它做什么。根据我的理解,一旦您将 Xblock 添加到 Vertical(例如,当您可以重新排序 Xblock 或单击其编辑按钮时,Xblock 内显示的内容就是显示在工作室中的视图)。
我进行了大量搜索和文档阅读,但找不到任何使用 author_view
的直接示例。但是像这样的陈述:
The view used to preview this XBlock for instructors in Studio. Defaults to
student_view
if an author_view is not defined.
让我觉得这就是我要找的东西。
在我的例子中,Xblock 在学生视图中做一些 javascript 工作,因此没有内容可显示给学生。在 Studio 视图中,我希望它显示可编辑参数并且 not 执行任何 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/author 视图中,但唯一被调用的是 student_view
.
我最终有一个解决方案,包括检查 LMS_ROOT_URL
并将其与 javascript 中的 window.location
进行比较,并有条件地执行 javascript 或填充myxblock_xblock
html 标签...但我真的不喜欢它,尤其是知道这个 author_view
就在这里,并且可能完全符合我的要求。
如有任何见解,我们将不胜感激!谢谢!
在 xblock 的 author_view
遇到同样的问题后,我在 this google groups thread
您只需将变量 has_author_view = True
添加到您的 xblock,edX Studio 将使用您的 author_view
。这似乎是一种解决方法,我还没有找到任何其他对此变量的引用。