Use new location for settings.js
[mkwsxb-moved-to-github.git] / mkwsxb / mkwsxb.py
1 """Embed widgets from MKWS, the MasterKey Widget Set"""
2
3 import pkg_resources
4
5 from xblock.core import XBlock
6 from xblock.fields import Integer, Scope, String, Any, Boolean, Dict
7 from xblock.fragment import Fragment
8
9 class MKWSXB(XBlock):
10     """Embed widgets from MKWS, the MasterKey Widget Set"""
11
12     # Fields
13     query = String(
14       help="Search query",
15       default="water",
16       scope=Scope.content
17     )
18
19     def resource_string(self, path):
20         """Helper for accessing resources."""
21         data = pkg_resources.resource_string(__name__, path)
22         return data.decode("utf8")
23
24     def student_view(self, context=None):
25         """The primary view of the MKWS XBlock, shown to students when viewing courses."""
26         html = self.resource_string("static/html/mkwsxb.html")
27         frag = Fragment(html.format(query=self.query))
28         frag.add_javascript_url("//mkws.indexdata.com/mkws-complete.js")
29         frag.add_javascript_url("//example.indexdata.com/mkws-widget-ru.js")
30         frag.add_css(self.resource_string("static/css/mkws-widget-ru.css"))
31         frag.add_javascript(self.resource_string("static/js/src/mkwsxb.js"))
32         frag.initialize_js('MKWSXB')
33         return frag;
34
35     def studio_view(self, context=None):
36         """Studio configuration view."""
37         html = self.resource_string("static/html/settings.html")
38         frag = Fragment(html.format(query=self.query))
39         frag.add_javascript(self.resource_string("static/js/src/settings.js"))
40         frag.initialize_js('MKWSXBSettings')
41         return frag
42
43     @XBlock.json_handler
44     def update_settings(self, data, suffix=''):
45         """Studio configuration callback."""
46         self.query = data['query']
47         return {"result": "success"}
48
49     @staticmethod
50     def workbench_scenarios():
51         """A canned scenario for display in the workbench."""
52         return [
53             ("MKWSXB",
54              """<vertical_demo>
55                 <mkwsxb/>
56                 </vertical_demo>
57              """),
58         ]