Skip to content
This repository was archived by the owner on Jun 7, 2023. It is now read-only.

Commit 05d62cd

Browse files
Add :class: option to all descendants of RunestoneDirective
Allows most directives to have class full-width added to force wider display is needed for special contents or some nested component May not work on components that generate new containers using js
1 parent 774863b commit 05d62cd

File tree

25 files changed

+93
-62
lines changed

25 files changed

+93
-62
lines changed

runestone/activecode/activecode.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def setup(app):
6161

6262

6363
TEMPLATE_START = """
64-
<div class="%(divclass)s">
64+
<div class="%(divclass)s %(optclass)s">
6565
<div data-component="activecode" id=%(divid)s data-question_label="%(question_label)s">
6666
<div id=%(divid)s_question class="ac_question col-md-12">
6767
"""

runestone/animation/animation.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def setup(app):
2929

3030

3131
SRC = """
32-
<div id="%(divid)s">
32+
<div id="%(divid)s" class="%(optclass)s">
3333
<canvas id="%(divid)s_canvas" width="400" height="400" style="border:4px solid blue"></canvas>
3434
<br />
3535
<button onclick="%(divid)s_anim = %(divid)s_init('%(divid)s')">Initialize</button>
@@ -60,12 +60,15 @@ class Animation(RunestoneIdDirective):
6060
optional_arguments = 1
6161
final_argument_whitespace = True
6262
has_content = False
63-
option_spec = {
64-
"modelfile": directives.unchanged,
65-
"viewerfile": directives.unchanged,
66-
"model": directives.unchanged,
67-
"viewer": directives.unchanged,
68-
}
63+
option_spec = RunestoneIdDirective.option_spec.copy()
64+
option_spec.update(
65+
{
66+
"modelfile": directives.unchanged,
67+
"viewerfile": directives.unchanged,
68+
"model": directives.unchanged,
69+
"viewer": directives.unchanged,
70+
}
71+
)
6972

7073
def run(self):
7174
"""

runestone/blockly/blockly.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,8 @@ class Blockly(RunestoneIdDirective):
207207
required_arguments = 1
208208
optional_arguments = 0
209209
has_content = True
210-
option_spec = {}
210+
option_spec = RunestoneIdDirective.option_spec.copy()
211+
option_spec.update( {} )
211212

212213
def run(self):
213214
super(Blockly, self).run()

runestone/clickableArea/clickable.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def setup(app):
3535

3636

3737
TEMPLATE = """
38-
<div class="runestone">
38+
<div class="runestone %(optclass)s">
3939
<div data-component="clickablearea" class="%(divclass)s" id="%(divid)s" data-question_label="%(question_label)s" %(optional)s %(table)s %(correct)s %(incorrect)s style="visibility: hidden;">
4040
<span data-question>%(qnumber)s: %(question)s</span>%(feedback)s%(clickcode)s
4141
"""

runestone/codelens/visualizer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def setup(app):
3737
# data-tracefile="pytutor-embed-demo/java.json"
3838

3939
VIS = """
40-
<div class="runestone" style="max-width: none;">
40+
<div class="runestone codelens %(optclass)s">
4141
<div class="%(divclass)s" data-component="codelens" data-question_label="%(question_label)s">
4242
<div class="pytutorVisualizer" id="%(divid)s"
4343
data-params='{"embeddedMode": true, "lang": "%(language)s", "jumpToEnd": false}'>

runestone/common/runestonedirective.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ class RunestoneDirective(Directive):
208208
option_spec = {
209209
"author": directives.unchanged,
210210
"tags": directives.unchanged,
211+
"class": directives.unchanged,
211212
"difficulty": directives.unchanged,
212213
"autograde": directives.unchanged,
213214
"practice": directives.unchanged,
@@ -260,6 +261,8 @@ def __init__(self, *args, **kwargs):
260261
else:
261262
self.int_points = 1
262263

264+
self.options['optclass'] = self.options.get('class', "")
265+
263266
self.explain_text = []
264267

265268

runestone/datafile/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def setup(app):
3939

4040

4141
TEMPLATE = u"""
42-
<div class="runestone datafile">
42+
<div class="runestone datafile %(optclass)s">
4343
<div class="datafile_caption">Data file: <code>%(divid)s</code></div>
4444
<pre data-component="datafile" id=%(divid)s %(hidden)s data-edit="%(edit)s" data-rows="%(rows)s" data-cols="%(cols)s">
4545
%(filecontent)s</pre></div>

runestone/disqus/disqus.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,13 @@ class DisqusDirective(RunestoneDirective):
109109
optional_arguments = 0
110110
final_argument_whitespace = True
111111
has_content = False
112-
option_spec = {
113-
"shortname": directives.unchanged_required,
114-
"identifier": directives.unchanged_required,
115-
}
112+
option_spec = RunestoneDirective.option_spec.copy()
113+
option_spec.update(
114+
{
115+
"shortname": directives.unchanged_required,
116+
"identifier": directives.unchanged_required,
117+
}
118+
)
116119

117120
def run(self):
118121
"""

runestone/dragndrop/dragndrop.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def setup(app):
3838

3939

4040
TEMPLATE_START = """
41-
<div class="%(divclass)s">
41+
<div class="%(divclass)s %(optclass)s">
4242
<ul data-component="dragndrop" data-question_label="%(question_label)s" id="%(divid)s" %(optional)s style="visibility: hidden;">
4343
<span data-subcomponent="question">%(qnumber)s: %(question)s</span>
4444
%(feedback)s

runestone/fitb/fitb.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ def run(self):
146146
super(FillInTheBlank, self).run()
147147

148148
TEMPLATE_START = """
149-
<div class="%(divclass)s">
149+
<div class="%(divclass)s %(optclass)s">
150150
<div data-component="fillintheblank" data-question_label="%(question_label)s" id="%(divid)s" %(optional)s style="visibility: hidden;">
151151
"""
152152

0 commit comments

Comments
 (0)