Skip to content

Commit 40c7532

Browse files
committed
refactor(studio): split LTI studio template into partials
1 parent 80636ab commit 40c7532

7 files changed

Lines changed: 796 additions & 753 deletions

File tree

lti_consumer/lti_xblock.py

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1175,11 +1175,44 @@ def studio_view(self, context):
11751175
if field_info is not None:
11761176
context["fields"][field_name] = field_info
11771177

1178+
i18n_service = self.runtime.service(self, 'i18n')
1179+
1180+
# ResourceLoader renders template from string, not Django loader-backed template.
1181+
# Django `{% include %}` cannot resolve partial paths in this setup, so pre-render
1182+
# partial templates here and inject safe HTML into wrapper template.
1183+
context.update({
1184+
'stepper_header_html': loader.render_django_template(
1185+
'/templates/html/lti_studio_edit/_stepper_header.html',
1186+
context=context,
1187+
i18n_service=i18n_service,
1188+
),
1189+
'step_setup_html': loader.render_django_template(
1190+
'/templates/html/lti_studio_edit/_step_setup.html',
1191+
context=context,
1192+
i18n_service=i18n_service,
1193+
),
1194+
'step_advantage_html': loader.render_django_template(
1195+
'/templates/html/lti_studio_edit/_step_advantage.html',
1196+
context=context,
1197+
i18n_service=i18n_service,
1198+
),
1199+
'step_review_html': loader.render_django_template(
1200+
'/templates/html/lti_studio_edit/_step_review.html',
1201+
context=context,
1202+
i18n_service=i18n_service,
1203+
),
1204+
'actions_html': loader.render_django_template(
1205+
'/templates/html/lti_studio_edit/_actions.html',
1206+
context=context,
1207+
i18n_service=i18n_service,
1208+
),
1209+
})
1210+
11781211
fragment = Fragment()
11791212
fragment.add_content(loader.render_django_template(
11801213
'/templates/html/lti_studio_edit.html',
11811214
context=context,
1182-
i18n_service=self.runtime.service(self, 'i18n')
1215+
i18n_service=i18n_service,
11831216
))
11841217

11851218
fragment.add_css(loader.load_unicode('static/css/xblock_studio_view.css'))

lti_consumer/templates/html/lti_studio_edit.html

Lines changed: 5 additions & 752 deletions
Large diffs are not rendered by default.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{% load i18n %}
2+
<div class="xblock-actions">
3+
<ul class="action-buttons action-buttons-left">
4+
<li class="action-item hidden">
5+
<a href="#" class="button previous-button secondary-button">{% trans "Previous" %}</a>
6+
</li>
7+
</ul>
8+
<ul class="action-buttons">
9+
<li class="action-item">
10+
<a href="#" class="button cancel-button">{% trans "Cancel" %}</a>
11+
</li>
12+
<li class="action-item">
13+
<a href="#" class="button next-button primary-button">{% trans "Next" %}</a>
14+
</li>
15+
<li class="action-item hidden">
16+
<a href="#" class="button save-button">{% trans "Save" %}</a>
17+
</li>
18+
</ul>
19+
</div>
Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
{% load i18n %}
2+
<div class="step-advantage hidden">
3+
<div class="field-group">
4+
<ul class="list-input settings-list">
5+
<!------------ lti_advantage_deep_linking_enabled -------------->
6+
<li class="field comp-setting-entry {% if fields.lti_advantage_deep_linking_enabled.is_set %}is-set{% endif %}">
7+
<label class="label setting-label">{{ fields.lti_advantage_deep_linking_enabled.display_name }}</label>
8+
<span class="icon fa fa-question-circle" data-tooltip="{{
9+
fields.lti_advantage_deep_linking_enabled.help }}"></span>
10+
<ul class="button-select-options">
11+
{% spaceless %}
12+
<li>
13+
<input
14+
type="radio"
15+
name="lti_advantage_deep_linking_enabled"
16+
id="lti_advantage_deep_linking_enabled_option-true"
17+
value="true"
18+
{% if fields.lti_advantage_deep_linking_enabled.value %}checked{% endif %}
19+
>
20+
<label for="lti_advantage_deep_linking_enabled_option-true">{% trans "Enabled" %}</label>
21+
</li>
22+
<li>
23+
<input
24+
type="radio"
25+
name="lti_advantage_deep_linking_enabled"
26+
id="lti_advantage_deep_linking_enabled_option-false"
27+
value="false"
28+
{% if not fields.lti_advantage_deep_linking_enabled.value %}checked{% endif %}
29+
>
30+
<label for="lti_advantage_deep_linking_enabled_option-false">{% trans "Disabled" %}</label>
31+
</li>
32+
{% endspaceless %}
33+
</ul>
34+
</li>
35+
<!-------------------------------------->
36+
<!------------ lti_advantage_deep_linking_launch_url -------------->
37+
<li
38+
class="field comp-setting-entry {% if fields.lti_advantage_deep_linking_launch_url.is_set %}is-set{% endif %}"
39+
data-field-name="lti_advantage_deep_linking_launch_url"
40+
>
41+
<label class="label setting-label">{{ fields.lti_advantage_deep_linking_launch_url.display_name }}</label>
42+
<span class="icon fa fa-question-circle" data-tooltip="{{
43+
fields.lti_advantage_deep_linking_launch_url.help }}"></span>
44+
<input
45+
class="field-data-control"
46+
id="xb-field-edit-lti_advantage_deep_linking_launch_url"
47+
value="{{ fields.lti_advantage_deep_linking_launch_url.value }}"
48+
type="text"
49+
/>
50+
</li>
51+
<!-------------------------------------->
52+
</ul>
53+
</div>
54+
<hr class="field-group-separator" />
55+
<div class="field-group">
56+
<ul class="list-input settings-list">
57+
<!------------ lti_advantage_ags_mode -------------->
58+
<li
59+
class="field comp-setting-entry {% if fields.lti_advantage_ags_mode.is_set %}is-set{% endif %}"
60+
data-field-name="lti_advantage_ags_mode"
61+
>
62+
<label class="label setting-label">{{ fields.lti_advantage_ags_mode.display_name }}</label>
63+
<span class="icon fa fa-question-circle" data-tooltip="{{ fields.lti_advantage_ags_mode.help }}"></span>
64+
<ul class="button-select-options">
65+
{% spaceless %}
66+
{% for option in fields.lti_advantage_ags_mode.values %}
67+
<li>
68+
<input
69+
type="radio"
70+
name="lti_advantage_ags_mode"
71+
id="lti_advantage_ags_mode_option-{{ option.value }}"
72+
value="{{ option.value }}"
73+
{% if fields.lti_advantage_ags_mode.value == option.value %}checked{% endif %}
74+
>
75+
<label for="lti_advantage_ags_mode_option-{{ option.value }}">{{ option.display_name }}</label>
76+
</li>
77+
{% endfor %}
78+
{% endspaceless %}
79+
</ul>
80+
</li>
81+
<!-------------------------------------->
82+
</ul>
83+
</div>
84+
<hr class="field-group-separator" />
85+
<div class="field-group">
86+
<ul class="list-input settings-list">
87+
<!------------ lti_1p3_enable_nrps -------------->
88+
<li
89+
class="field comp-setting-entry {% if fields.lti_1p3_enable_nrps.is_set %}is-set{% endif %}"
90+
data-field-name="lti_1p3_enable_nrps"
91+
>
92+
<label class="label setting-label">{{ fields.lti_1p3_enable_nrps.display_name }}</label>
93+
<span class="icon fa fa-question-circle" data-tooltip="{{ fields.lti_1p3_enable_nrps.help }}"></span>
94+
<ul class="button-select-options">
95+
{% spaceless %}
96+
<li>
97+
<input
98+
type="radio"
99+
name="lti_1p3_enable_nrps"
100+
id="lti_1p3_enable_nrps_option-true"
101+
value="true"
102+
{% if fields.lti_1p3_enable_nrps.value %}checked{% endif %}
103+
>
104+
<label for="lti_1p3_enable_nrps_option-true">{% trans "Enabled" %}</label>
105+
</li>
106+
<li>
107+
<input
108+
type="radio"
109+
name="lti_1p3_enable_nrps"
110+
id="lti_1p3_enable_nrps_option-false"
111+
value="false"
112+
{% if not fields.lti_1p3_enable_nrps.value %}checked{% endif %}
113+
>
114+
<label for="lti_1p3_enable_nrps_option-false">{% trans "Disabled" %}</label>
115+
</li>
116+
{% endspaceless %}
117+
</ul>
118+
</li>
119+
<!-------------------------------------->
120+
</ul>
121+
</div>
122+
<hr class="field-group-separator" />
123+
<div class="field-group">
124+
<ul class="list-input settings-list">
125+
<!------------ lti_1p3_tool_key_mode -------------->
126+
<li
127+
class="field comp-setting-entry {% if fields.lti_1p3_tool_key_mode.is_set %}is-set{% endif %}"
128+
data-field-name="lti_1p3_tool_key_mode"
129+
>
130+
<label class="label setting-label">{{ fields.lti_1p3_tool_key_mode.display_name }}</label>
131+
<span class="icon fa fa-question-circle" data-tooltip="{{ fields.lti_1p3_tool_key_mode.help }}"></span>
132+
<ul class="button-select-options">
133+
{% spaceless %}
134+
<li>
135+
<input
136+
type="radio"
137+
name="lti_1p3_tool_key_mode"
138+
id="lti_1p3_tool_key_mode_option-public_key"
139+
value="public_key"
140+
{% if fields.lti_1p3_tool_key_mode.value == "public_key" %}checked{% endif %}
141+
>
142+
<label for="lti_1p3_tool_key_mode_option-public_key">{% trans "Public Key" %}</label>
143+
</li>
144+
<li>
145+
<input
146+
type="radio"
147+
name="lti_1p3_tool_key_mode"
148+
id="lti_1p3_tool_key_mode_option-keyset_url"
149+
value="keyset_url"
150+
{% if fields.lti_1p3_tool_key_mode.value == "keyset_url" %}checked{% endif %}
151+
>
152+
<label for="lti_1p3_tool_key_mode_option-keyset_url">{% trans "Keyset URL" %}</label>
153+
</li>
154+
{% endspaceless %}
155+
</ul>
156+
</li>
157+
<!-------------------------------------->
158+
<!------------ lti_1p3_tool_keyset_url -------------->
159+
<li
160+
class="field comp-setting-entry {% if fields.lti_1p3_tool_keyset_url.is_set %}is-set{% endif %}"
161+
data-field-name="lti_1p3_tool_keyset_url"
162+
>
163+
<label class="label setting-label">{{ fields.lti_1p3_tool_keyset_url.display_name }}</label>
164+
<span class="icon fa fa-question-circle" data-tooltip="{{ fields.lti_1p3_tool_keyset_url.help }}"></span>
165+
<input
166+
class="field-data-control"
167+
id="xb-field-edit-lti_1p3_tool_keyset_url"
168+
value="{{ fields.lti_1p3_tool_keyset_url.value }}"
169+
type="text"
170+
/>
171+
</li>
172+
<!-------------------------------------->
173+
<!------------ lti_1p3_tool_public_key -------------->
174+
<li
175+
class="field comp-setting-entry {% if fields.lti_1p3_tool_public_key.is_set %}is-set{% endif %}"
176+
data-field-name="lti_1p3_tool_public_key"
177+
>
178+
<label class="label setting-label">{{ fields.lti_1p3_tool_public_key.display_name }}</label>
179+
<span class="icon fa fa-question-circle" data-tooltip="{{ fields.lti_1p3_tool_public_key.help }}"></span>
180+
<textarea
181+
class="field-data-control"
182+
id="xb-field-edit-lti_1p3_tool_public_key"
183+
rows="4"
184+
>{{ fields.lti_1p3_tool_public_key.value }}</textarea>
185+
</li>
186+
<!-------------------------------------->
187+
</ul>
188+
</div>
189+
</div>

0 commit comments

Comments
 (0)