--- /dev/null
+from .mkwsref import MKWSRef
--- /dev/null
+"""Embed reference widget from MKWS, the MasterKey Widget Set"""
+
+import pkg_resources
+import random
+
+from xblock.core import XBlock
+from xblock.fields import Integer, Scope, String, Any, Boolean, Dict
+from xblock.fragment import Fragment
+
+class MKWSRef(XBlock):
+ """Embed reference widget from MKWS, the MasterKey Widget Set"""
+
+ # Fields
+ query = String(
+ help="Search query",
+ default="water",
+ scope=Scope.content
+ )
+ display_name = String(
+ default="MKWS Reference Widget",
+ scope=Scope.settings
+ )
+
+ def resource_string(self, path):
+ """Helper for accessing resources."""
+ data = pkg_resources.resource_string(__name__, path)
+ return data.decode("utf8")
+
+ def student_view(self, context=None):
+ """The primary view of the MKWS XBlock, shown to students when viewing courses."""
+ html = self.resource_string("static/html/student.html")
+ frag = Fragment(html.format(query=self.query, team=random.randint(0, 100000)))
+ # student.js uses require.js as it cannot guarantee mkws-complete.js has loaded
+ # in studio without it. We'll need to add it if we're in the LMS:
+ frag.add_javascript_url("/static/js/vendor/require.js");
+ frag.add_javascript(self.resource_string("static/js/src/student.js"))
+ frag.initialize_js('MKWSRef')
+ return frag;
+
+ def author_view(self, context=None):
+ """View of the MKWS XBlock shown when authoring courses."""
+ html = self.resource_string("static/html/student.html")
+ frag = Fragment(html.format(query=self.query, team=random.randint(0, 100000)))
+ frag.add_javascript(self.resource_string("static/js/src/student.js"))
+ frag.initialize_js('MKWSRef')
+ return frag;
+
+ def studio_view(self, context=None):
+ """Studio configuration view."""
+ html = self.resource_string("static/html/settings.html")
+ frag = Fragment(html.format(query=self.query))
+ frag.add_javascript(self.resource_string("static/js/src/settings.js"))
+ frag.initialize_js('MKWSRefSettings')
+ return frag
+
+ @XBlock.json_handler
+ def update_settings(self, data, suffix=''):
+ """Studio configuration callback."""
+ self.query = data['query']
+ return {"result": "success"}
+
+ @staticmethod
+ def workbench_scenarios():
+ """A canned scenario for display in the workbench."""
+ return [
+ ("MKWSRef",
+ """<vertical_demo>
+ <mkwsref/>
+ </vertical_demo>
+ """),
+ ]
--- /dev/null
+<div class="wrapper-comp-settings is-active editor-with-buttons" id="settings-tab">
+ <ul class="list-input settings-list">
+ <li class="field comp-setting-entry is-set">
+ <div class="wrapper-comp-setting">
+ <label class="label setting-label" for="query">Query</label>
+ <input class="input setting-input" name="query" id="query" value="{query}" type="text" />
+ </div>
+ <span class="tip setting-help">Search query to run when the block loads</span>
+ </li>
+ </ul>
+ <div class="xblock-actions">
+ <ul>
+ <li class="action-item">
+ <a href="#" class="button action-primary save-button">Save</a>
+ </li>
+ <li class="action-item">
+ <a href="#" class="button cancel-button">Cancel</a>
+ </li>
+ </ul>
+ </div>
+</div>
--- /dev/null
+<div class="mkwsref_block">
+ <div class="mkwsReference mkwsTeam_{team}" autosearch="{query}">Loading reference...</div>
+</div>
--- /dev/null
+function MKWSRefSettings(runtime, element) {
+ $(element).find('.save-button').bind('click', function() {
+ var handlerUrl = runtime.handlerUrl(element, 'update_settings');
+ var data = {
+ query: $(element).find('input[name=query]').val()
+ };
+ console.log($(element).find('input[query]'));
+ $.post(handlerUrl, JSON.stringify(data)).done(function(response) {
+ window.location.reload(false);
+ });
+ });
+
+ $(element).find('.cancel-button').bind('click', function() {
+ runtime.notify('cancel', {});
+ });
+};
--- /dev/null
+/* Javascript for MKWSRef. */
+require.config({
+ paths: {
+ mkws: "//mkws.indexdata.com/mkws-complete",
+ },
+ shim: {
+ mkws: {
+ exports: "mkws"
+ },
+ }
+});
+function MKWSRef(runtime, element) {
+ require(['mkws'], function() {
+ console.log(mkws);
+ //mkws.init("XBlock initialised.", element);
+ mkws.init("XBlock initialised.");
+ } );
+}
--- /dev/null
+"""Setup for mkwsref XBlock."""
+
+import os
+from setuptools import setup
+
+def package_data(pkg, roots):
+ """Generic function to find package_data.
+
+ All of the files under each of the `roots` will be declared as package
+ data for package `pkg`.
+
+ """
+ data = []
+ for root in roots:
+ for dirname, _, files in os.walk(os.path.join(pkg, root)):
+ for fname in files:
+ data.append(os.path.relpath(os.path.join(dirname, fname), pkg))
+
+ return {pkg: data}
+
+setup(
+ name='mkwsref',
+ version='0.1',
+ description='XBlock to embed an MKWS reference widget',
+ packages=[
+ 'mkwsref',
+ ],
+ install_requires=[
+ 'XBlock',
+ ],
+ entry_points={
+ 'xblock.v1': [
+ 'mkwsref = mkwsref:MKWSRef',
+ ]
+ },
+ package_data=package_data("mkwsref", ["static", "public"]),
+)
+++ /dev/null
-from .mkwsxb import MKWSXB
\ No newline at end of file
+++ /dev/null
-"""Embed widgets from MKWS, the MasterKey Widget Set"""
-
-import pkg_resources
-import random
-
-from xblock.core import XBlock
-from xblock.fields import Integer, Scope, String, Any, Boolean, Dict
-from xblock.fragment import Fragment
-
-class MKWSXB(XBlock):
- """Embed widgets from MKWS, the MasterKey Widget Set"""
-
- # Fields
- query = String(
- help="Search query",
- default="water",
- scope=Scope.content
- )
- display_name = String(
- default="MKWS Widget",
- scope=Scope.settings
- )
-
- def resource_string(self, path):
- """Helper for accessing resources."""
- data = pkg_resources.resource_string(__name__, path)
- return data.decode("utf8")
-
- def student_view(self, context=None):
- """The primary view of the MKWS XBlock, shown to students when viewing courses."""
- html = self.resource_string("static/html/mkwsxb.html")
- frag = Fragment(html.format(query=self.query, team=random.randint(0, 100000)))
- # mkwsxb.js uses require.js as it cannot guarantee mkws-complete.js has loaded
- # in studio without it
- frag.add_javascript_url("/static/js/vendor/require.js");
- frag.add_javascript(self.resource_string("static/js/src/mkwsxb.js"))
- frag.add_css(self.resource_string("static/css/mkws-widget-ru.css"))
- frag.initialize_js('MKWSXB')
- return frag;
-
- def studio_view(self, context=None):
- """Studio configuration view."""
- html = self.resource_string("static/html/settings.html")
- frag = Fragment(html.format(query=self.query))
- frag.add_javascript(self.resource_string("static/js/src/settings.js"))
- frag.initialize_js('MKWSXBSettings')
- return frag
-
- @XBlock.json_handler
- def update_settings(self, data, suffix=''):
- """Studio configuration callback."""
- self.query = data['query']
- return {"result": "success"}
-
- @staticmethod
- def workbench_scenarios():
- """A canned scenario for display in the workbench."""
- return [
- ("MKWSXB",
- """<vertical_demo>
- <mkwsxb/>
- </vertical_demo>
- """),
- ]
+++ /dev/null
-.mkwsReferenceUniverse {
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- background: #FCFBFA;
- padding: 0.5em 1em 0.25em;
- box-shadow: 0 0 2px 0 #7F8F93;
- border-radius: 0 0 1.5em;
- -moz-border-radius: 0 0 1.5em;
- -webkit-border-radius: 0 0 1.5em;
- line-height: 1.4;
- color: #86979B;
- background: radial-gradient(ellipse at center, #ffffff 0%,#f8f8f8 100%);
-}
-
-.mkwsReferenceUniverse h2 {
- font-size: 100%;
- color: #4A5456;
- padding-bottom: .5em;
-}
-
-.mkwsReferenceUniverse ul {
- margin: 0;
- padding: 0;
-}
-
-.mkwsReferenceUniverse li {
- margin: .95em .25em;
- padding-top: .75em;
- border-top: 1px dotted #BEC8CC;
- font-size: 90%;
- list-style: none;
-}
-
-.mkwsReferenceUniverse a {
- text-decoration: none;
- font-weight:bold;
- color: #2B77AF;
-}
+++ /dev/null
-<div class="mkwsxb_block">
- <div class="mkwsReferenceUniverse mkwsTeam_{team}" autosearch="{query}">Searching Reference Universe...</div>
-</div>
+++ /dev/null
-<div class="wrapper-comp-settings is-active editor-with-buttons" id="settings-tab">
- <ul class="list-input settings-list">
- <li class="field comp-setting-entry is-set">
- <div class="wrapper-comp-setting">
- <label class="label setting-label" for="query">Query</label>
- <input class="input setting-input" name="query" id="query" value="{query}" type="text" />
- </div>
- <span class="tip setting-help">Search query to run when the block loads</span>
- </li>
- </ul>
- <div class="xblock-actions">
- <ul>
- <li class="action-item">
- <a href="#" class="button action-primary save-button">Save</a>
- </li>
- <li class="action-item">
- <a href="#" class="button cancel-button">Cancel</a>
- </li>
- </ul>
- </div>
-</div>
+++ /dev/null
-/* Javascript for MKWSXB. */
-require.config({
- paths: {
- mkws: "//mkws.indexdata.com/mkws-complete",
- mkws_widget_ru: "//example.indexdata.com/mkws-widget-ru"
- },
- shim: {
- mkws: {
- exports: "mkws"
- },
- mkws_widget_ru: {
- deps: ["mkws"]
- }
- }
-});
-function MKWSXB(runtime, element) {
- require(['mkws_widget_ru'], function() {
- console.log(mkws);
- //mkws.init("XBlock initialised.", element);
- mkws.init("XBlock initialised.");
- } );
-}
+++ /dev/null
-function MKWSXBSettings(runtime, element) {
- $(element).find('.save-button').bind('click', function() {
- var handlerUrl = runtime.handlerUrl(element, 'update_settings');
- var data = {
- query: $(element).find('input[name=query]').val()
- };
- console.log($(element).find('input[query]'));
- $.post(handlerUrl, JSON.stringify(data)).done(function(response) {
- window.location.reload(false);
- });
- });
-
- $(element).find('.cancel-button').bind('click', function() {
- runtime.notify('cancel', {});
- });
-};
+++ /dev/null
-"""Setup for mkwsxb XBlock."""
-
-import os
-from setuptools import setup
-
-def package_data(pkg, roots):
- """Generic function to find package_data.
-
- All of the files under each of the `roots` will be declared as package
- data for package `pkg`.
-
- """
- data = []
- for root in roots:
- for dirname, _, files in os.walk(os.path.join(pkg, root)):
- for fname in files:
- data.append(os.path.relpath(os.path.join(dirname, fname), pkg))
-
- return {pkg: data}
-
-setup(
- name='mkwsxb-xblock',
- version='0.1',
- description='XBlock to embed MKWS widgets',
- packages=[
- 'mkwsxb',
- ],
- install_requires=[
- 'XBlock',
- ],
- entry_points={
- 'xblock.v1': [
- 'mkwsxb = mkwsxb:MKWSXB',
- ]
- },
- package_data=package_data("mkwsxb", ["static", "public"]),
-)