rapid-router 5.18.0__py2.py3-none-any.whl → 7.6.8__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. example_project/rapid_router_test_settings.py +19 -7
  2. example_project/settings.py +21 -8
  3. example_project/urls.py +5 -6
  4. game/__init__.py +1 -1
  5. game/admin.py +7 -2
  6. game/character.py +8 -0
  7. game/decor.py +40 -0
  8. game/end_to_end_tests/base_game_test.py +34 -27
  9. game/end_to_end_tests/editor_page.py +15 -0
  10. game/end_to_end_tests/game_page.py +88 -20
  11. game/end_to_end_tests/selenium_test_case.py +1 -20
  12. game/end_to_end_tests/test_cow_crashes.py +3 -5
  13. game/end_to_end_tests/test_level_editor.py +273 -10
  14. game/end_to_end_tests/test_level_selection.py +25 -3
  15. game/end_to_end_tests/test_play_through.py +222 -127
  16. game/end_to_end_tests/test_python_levels.py +41 -7
  17. game/end_to_end_tests/test_saving_workspace.py +2 -1
  18. game/forms.py +7 -1
  19. game/level_management.py +26 -11
  20. game/messages.py +899 -337
  21. game/migrations/0001_squashed_0025_levels_ordering_pt1.py +19 -1
  22. game/migrations/0026_levels_pt2.py +13 -2
  23. game/migrations/0032_cannot_turn_left_level.py +13 -2
  24. game/migrations/0033_recursion_level.py +13 -2
  25. game/migrations/0034_joes_level.py +13 -2
  26. game/migrations/0035_disable_route_score_level_70.py +0 -2
  27. game/migrations/0036_level_score_73.py +0 -2
  28. game/migrations/0037_level_score_79.py +0 -2
  29. game/migrations/0038_level_score_40.py +0 -1
  30. game/migrations/0042_level_score_73.py +0 -2
  31. game/migrations/0048_add_cow_field_and_blocks.py +0 -2
  32. game/migrations/0049_level_score_34.py +0 -2
  33. game/migrations/0050_level_score_40.py +0 -2
  34. game/migrations/0051_level_score_49.py +0 -1
  35. game/migrations/0086_loop_levels.py +13 -2
  36. game/migrations/0092_disable_algo_score_in_custom_levels.py +28 -0
  37. game/migrations/0093_alter_level_character_name.py +18 -0
  38. game/migrations/0094_add_hint_lesson_subtitle_to_levels.py +28 -0
  39. game/migrations/0095_level_commands.py +18 -0
  40. game/migrations/0096_alter_level_commands.py +18 -0
  41. game/migrations/0097_add_python_den_levels.py +1515 -0
  42. game/migrations/0098_add_episode_link_fields.py +44 -0
  43. game/migrations/0099_python_episodes_links.py +103 -0
  44. game/migrations/0100_reorder_python_levels.py +179 -0
  45. game/migrations/0101_rename_episodes.py +45 -0
  46. game/migrations/0102_reoder_episodes_13_14.py +136 -0
  47. game/migrations/0103_level_1015_solution.py +26 -0
  48. game/migrations/0104_remove_level_direct_drive.py +17 -0
  49. game/migrations/0105_delete_invalid_attempts.py +18 -0
  50. game/migrations/0106_fields_to_snake_case.py +48 -0
  51. game/migrations/0107_rename_worksheet_link_episode_student_worksheet_link.py +18 -0
  52. game/migrations/0108_episode_indy_worksheet_link.py +18 -0
  53. game/migrations/0109_create_episodes_23_and_24.py +99 -0
  54. game/migrations/0110_remove_episode_indy_worksheet_link_and_more.py +100 -0
  55. game/migrations/0111_create_worksheets.py +149 -0
  56. game/migrations/0112_worksheet_locked_classes.py +21 -0
  57. game/migrations/0113_level_needs_approval.py +18 -0
  58. game/migrations/0114_default_and_non_student_levels_no_approval.py +31 -0
  59. game/migrations/0115_level_level__default_does_not_need_approval.py +22 -0
  60. game/migrations/0116_update_worksheet_video_links.py +68 -0
  61. game/migrations/0117_update_solutions_to_if_else.py +61 -0
  62. game/models.py +127 -17
  63. game/permissions.py +51 -19
  64. game/python_den_urls.py +26 -0
  65. game/random_road.py +9 -9
  66. game/serializers.py +12 -17
  67. game/static/django_reverse_js/js/reverse.js +171 -0
  68. game/static/game/css/LilitaOne-Regular.ttf +0 -0
  69. game/static/game/css/backgrounds.css +8 -12
  70. game/static/game/css/dataTables.custom.css +3 -2
  71. game/static/game/css/editor.css +47 -0
  72. game/static/game/css/game.css +37 -43
  73. game/static/game/css/game_screen.css +16 -0
  74. game/static/game/css/level_editor.css +5 -0
  75. game/static/game/css/level_selection.css +17 -2
  76. game/static/game/image/Python_Den_hero_student.png +0 -0
  77. game/static/game/image/Python_levels_page.svg +1954 -0
  78. game/static/game/image/characters/front_view/Electric_van.svg +448 -0
  79. game/static/game/image/characters/top_view/Electric_van.svg +448 -0
  80. game/static/game/image/decor/city/solar_panel.svg +1200 -0
  81. game/static/game/image/decor/farm/solar_panel.svg +86 -0
  82. game/static/game/image/decor/grass/solar_panel.svg +86 -0
  83. game/static/game/image/decor/snow/solar_panel.svg +173 -0
  84. game/static/game/image/electric_van.svg +448 -0
  85. game/static/game/image/icons/description.svg +1 -0
  86. game/static/game/image/icons/hint.svg +1 -0
  87. game/static/game/image/icons/python.svg +1 -1
  88. game/static/game/image/pigeon.svg +684 -0
  89. game/static/game/image/python_den_header.svg +19 -0
  90. game/static/game/js/animation.js +65 -24
  91. game/static/game/js/blockly/msg/js/bg.js +52 -1
  92. game/static/game/js/blockly/msg/js/ca.js +52 -1
  93. game/static/game/js/blockly/msg/js/en-gb.js +2 -0
  94. game/static/game/js/blockly/msg/js/en.js +2 -0
  95. game/static/game/js/blockly/msg/js/es.js +52 -1
  96. game/static/game/js/blockly/msg/js/fr.js +2 -0
  97. game/static/game/js/blockly/msg/js/hi.js +2 -0
  98. game/static/game/js/blockly/msg/js/it.js +52 -1
  99. game/static/game/js/blockly/msg/js/pl.js +52 -1
  100. game/static/game/js/blockly/msg/js/pt-br.js +52 -1
  101. game/static/game/js/blockly/msg/js/ru.js +52 -1
  102. game/static/game/js/blockly/msg/js/ur.js +52 -1
  103. game/static/game/js/blocklyCustomBlocks.js +93 -52
  104. game/static/game/js/button.js +12 -0
  105. game/static/game/js/cow.js +11 -7
  106. game/static/game/js/drawing.js +68 -29
  107. game/static/game/js/editor.js +23 -0
  108. game/static/game/js/game.js +74 -110
  109. game/static/game/js/level_editor.js +646 -274
  110. game/static/game/js/level_moderation.js +33 -2
  111. game/static/game/js/level_selection.js +1 -1
  112. game/static/game/js/loadLanguages.js +2 -2
  113. game/static/game/js/model.js +32 -2
  114. game/static/game/js/pythonControl.js +14 -1
  115. game/static/game/js/scoreboard.js +0 -37
  116. game/static/game/js/scoreboardSharedLevels.js +48 -0
  117. game/static/game/js/skulpt/skulpt-stdlib.js +1 -1
  118. game/static/game/js/sound.js +52 -5
  119. game/static/game/raphael_image/characters/top_view/Electric_van.svg +448 -0
  120. game/static/game/raphael_image/decor/city/solar_panel.svg +1200 -0
  121. game/static/game/raphael_image/decor/farm/solar_panel.svg +86 -0
  122. game/static/game/raphael_image/decor/grass/solar_panel.svg +86 -0
  123. game/static/game/raphael_image/decor/snow/solar_panel.svg +173 -0
  124. game/static/game/raphael_image/pigeon.svg +685 -0
  125. game/static/game/sass/game.scss +2 -2
  126. game/static/game/sound/clown_horn.mp3 +0 -0
  127. game/static/game/sound/clown_horn.ogg +0 -0
  128. game/static/game/sound/electric_van_starting.mp3 +0 -0
  129. game/static/game/sound/electric_van_starting.ogg +0 -0
  130. game/static/game/sound/pigeon.mp3 +0 -0
  131. game/static/game/sound/pigeon.ogg +0 -0
  132. game/static/game/sound/sleigh_bells.mp3 +0 -0
  133. game/static/game/sound/sleigh_bells.ogg +0 -0
  134. game/static/game/sound/sleigh_crash.mp3 +0 -0
  135. game/static/game/sound/sleigh_crash.ogg +0 -0
  136. game/templates/game/base.html +34 -14
  137. game/templates/game/basenonav.html +11 -5
  138. game/templates/game/game.html +142 -38
  139. game/templates/game/level_editor.html +340 -236
  140. game/templates/game/level_moderation.html +19 -6
  141. game/templates/game/level_selection.html +18 -110
  142. game/templates/game/python_den_level_selection.html +291 -0
  143. game/templates/game/python_den_worksheet.html +101 -0
  144. game/templates/game/scoreboard.html +83 -64
  145. game/tests/test_level_editor.py +94 -26
  146. game/tests/test_level_selection.py +149 -46
  147. game/tests/test_python_den_worksheet.py +85 -0
  148. game/tests/test_scoreboard.py +34 -7
  149. game/tests/utils/level.py +32 -26
  150. game/theme.py +5 -5
  151. game/urls.py +199 -61
  152. game/views/language_code_conversions.py +86 -86
  153. game/views/level.py +155 -63
  154. game/views/level_editor.py +88 -55
  155. game/views/level_moderation.py +23 -0
  156. game/views/level_selection.py +116 -47
  157. game/views/level_solutions.py +491 -106
  158. game/views/scoreboard.py +76 -51
  159. game/views/worksheet.py +25 -0
  160. rapid_router-7.6.8.dist-info/METADATA +174 -0
  161. {rapid_router-5.18.0.dist-info → rapid_router-7.6.8.dist-info}/RECORD +164 -104
  162. {rapid_router-5.18.0.dist-info → rapid_router-7.6.8.dist-info}/WHEEL +1 -1
  163. example_project/manage.py +0 -10
  164. game/static/game/image/actions/go.svg +0 -18
  165. game/static/game/js/js-reverse.js +0 -14
  166. game/static/game/js/pqselect.min.js +0 -9
  167. game/static/game/js/widget-scroller.js +0 -906
  168. rapid_router-5.18.0.dist-info/METADATA +0 -17
  169. {rapid_router-5.18.0.dist-info → rapid_router-7.6.8.dist-info/licenses}/LICENSE.md +0 -0
  170. {rapid_router-5.18.0.dist-info → rapid_router-7.6.8.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,4 @@
1
1
  {% extends 'game/basenonav.html' %}
2
- {% load i18n %}
3
2
  {% load static %}
4
3
  {% load app_tags %}
5
4
  {% load game.utils %}
@@ -7,113 +6,138 @@
7
6
  {% block title %}Code for Life - Rapid Router - Create{% endblock %}
8
7
 
9
8
  {% block head %}
10
- <meta name="viewport" content="user-scalable=no" />
11
- {% include 'game/crowdin.html' %}
9
+ <meta name="viewport" content="user-scalable=no" />
10
+ {% include 'game/crowdin.html' %}
12
11
  {% endblock %}
13
12
 
14
13
  {% block scripts %}
15
14
  {{block.super}}
16
- <script>
17
- var COW_LEVELS_ENABLED = {{cow_level_enabled|booltojs}};
18
- var NIGHT_MODE_FEATURE_ENABLED = {{night_mode_feature_enabled}};
19
- {% if level %}
20
- var LEVEL = {{ level }};
21
- {% else %}
22
- var LEVEL = null;
23
- {% endif %}
24
- </script>
25
- <script src="{% static 'game/js/utils.js' %}"></script>
26
- <script src="{% static 'game/js/mobile-detect.min.js' %}"></script>
27
- <script src="{% static 'game/js/raphael.js' %}"></script>
28
- <script src="{% static 'game/js/drawingConstants.js' %}"></script>
29
- <script src="{% static 'game/js/character.js' %}"></script>
30
- <script src="{% static 'game/js/drawing.js' %}"></script>
31
-
32
- <script type="text/javascript" src="{% static 'game/js/blockly/blockly_compressed.js' %}"></script>
33
- <script type="text/javascript" src="{% static 'game/js/blockly/blocks_compressed.js' %}"></script>
34
- <script type="text/javascript" src="{% static 'game/js/blockly/msg/js/en.js' %}"></script>
35
- <script type="text/javascript" src="{% static 'game/js/mobile-detect.min.js' %}"></script>
36
-
37
- <script type="text/javascript" src="{% static 'game/js/blocklyCustomBlocks.js' %}"></script>
38
- <script type="text/javascript" src="{% static 'game/js/blocklyControl.js' %}"></script>
39
- <script type="text/javascript" src="{% static 'game/js/blocklyMessages.js' %}"></script>
40
-
41
- <script src="/static/game/js/tab.js"></script>
42
- <script src="/static/game/js/messages.js"></script>
43
- <script src="/static/game/js/saving.js"></script>
44
- <script src="/static/game/js/sharing.js"></script>
45
- <script src="/static/game/js/level_editor/level_save_state.js"></script>
46
- <script src="/static/game/js/level_editor/owned_levels.js"></script>
47
- <script src="/static/game/js/level_editor.js"></script>
48
- <script src="/static/game/js/coordinate.js"></script>
49
- <script src="/static/game/js/node.js"></script>
50
- <script src="/static/game/js/map.js"></script>
51
- <script src="/static/game/js/pathFinder.js"></script>
52
- <script src="/static/game/js/trafficLight.js"></script>
53
- {% if cow_level_enabled %}<script src="/static/game/js/cow.js"></script>{% endif %}
54
- <script src="/static/game/js/destination.js"></script>
55
-
56
- <script>
57
- var BLOCKS = {{ blocks | safe}};
58
- var THEMES = [];
59
- var CHARACTER_NAME = 'Van';
60
-
61
- function initGlobals() {
62
- var themes = [];
63
- {% for theme in themes %}
64
- var name = "{{theme.name}}";
65
- themes.push({
66
- "name": name,
67
- "id": {{theme.id}},
68
- "border": "{{theme.border}}",
69
- "background": "{{theme.background}}",
70
- "selected": "{{theme.selected}}"
15
+ <script>
16
+ var COW_LEVELS_ENABLED = {{ cow_level_enabled| booltojs}};
17
+ var NIGHT_MODE_FEATURE_ENABLED = {{ night_mode_feature_enabled }};
18
+ {% if level %}
19
+ var LEVEL = {{ level }};
20
+ {% else %}
21
+ var LEVEL = null
22
+ {% endif %}
23
+ </script>
24
+ <script src="{% static 'game/js/utils.js' %}"></script>
25
+ <script src="{% static 'game/js/mobile-detect.min.js' %}"></script>
26
+ <script src="{% static 'game/js/raphael.js' %}"></script>
27
+ <script src="{% static 'game/js/drawingConstants.js' %}"></script>
28
+ <script src="{% static 'game/js/character.js' %}"></script>
29
+ <script src="{% static 'game/js/drawing.js' %}"></script>
30
+
31
+ <script type="text/javascript" src="{% static 'game/js/blockly/blockly_compressed.js' %}"></script>
32
+ <script type="text/javascript" src="{% static 'game/js/blockly/blocks_compressed.js' %}"></script>
33
+ <script type="text/javascript" src="{% static 'game/js/blockly/msg/js/en.js' %}"></script>
34
+ <script type="text/javascript" src="{% static 'game/js/mobile-detect.min.js' %}"></script>
35
+
36
+ <script type="text/javascript" src="{% static 'game/js/blocklyCustomBlocks.js' %}"></script>
37
+ <script type="text/javascript" src="{% static 'game/js/blocklyControl.js' %}"></script>
38
+ <script type="text/javascript" src="{% static 'game/js/blocklyMessages.js' %}"></script>
39
+
40
+ <script src="/static/game/js/tab.js"></script>
41
+ <script src="/static/game/js/messages.js"></script>
42
+ <script src="/static/game/js/saving.js"></script>
43
+ <script src="/static/game/js/sharing.js"></script>
44
+ <script src="/static/game/js/level_editor/level_save_state.js"></script>
45
+ <script src="/static/game/js/level_editor/owned_levels.js"></script>
46
+ <script src="/static/game/js/level_editor.js"></script>
47
+ <script src="/static/game/js/coordinate.js"></script>
48
+ <script src="/static/game/js/node.js"></script>
49
+ <script src="/static/game/js/map.js"></script>
50
+ <script src="/static/game/js/pathFinder.js"></script>
51
+ <script src="/static/game/js/trafficLight.js"></script>
52
+ {% if cow_level_enabled %}
53
+ <script src="/static/game/js/cow.js"></script>{% endif %}
54
+ <script src="/static/game/js/destination.js"></script>
55
+
56
+ <script>
57
+ var BLOCKS = {{ blocks | safe}};
58
+ var THEMES = []
59
+ var CHARACTER_NAME = 'Van'
60
+
61
+ function initGlobals() {
62
+ var themes = []
63
+ {% for theme in themes %}
64
+ var name = "{{theme.name}}"
65
+ themes.push({
66
+ "name": name,
67
+ "id": {{ theme.id }},
68
+ "border": "{{theme.border}}",
69
+ "background": "{{theme.background}}",
70
+ "selected": "{{theme.selected}}"
71
71
  });
72
- {% endfor %}
73
-
74
- var decor = [];
75
- {% for dec in decor %}
76
- decor.push({
77
- "id":"{{dec.id}}",
78
- "name":"{{dec.name}}",
79
- "url": ocargo.Drawing.raphaelImageDir + "{{dec.url}}",
80
- "width":"{{dec.width}}",
81
- "height":"{{dec.height}}",
82
- "theme_name":"{{dec.theme.name}}",
83
- "z_index":"{{ dec.z_index }}"
84
- });
85
- {% endfor %}
86
-
87
- for(var i = 0; i < themes.length; i++) {
88
- var theme = themes[i];
89
- THEMES[theme.name] = theme;
90
- THEMES[theme.name].decor = {};
91
- }
92
-
93
- for(var i = 0; i < decor.length; i++) {
94
- var themeDecor = THEMES[decor[i].theme_name].decor;
95
- themeDecor[decor[i].name] = decor[i];
96
- }
97
-
98
- CHARACTERS = [];
99
- {% for char in characters %}
100
- CHARACTERS['{{char.id}}'] = {
101
- id: '{{char.id}}',
102
- name: '{{char.name}}',
103
- image: '{% static "game/image/"|add:char.en_face %}'
104
- };
105
- {% endfor %}
72
+ {% endfor %}
73
+
74
+ var decor = []
75
+ {% for dec in decor %}
76
+ decor.push({
77
+ "id": "{{dec.id}}",
78
+ "name": "{{dec.name}}",
79
+ "url": ocargo.Drawing.raphaelImageDir + "{{dec.url}}",
80
+ "width": "{{dec.width}}",
81
+ "height": "{{dec.height}}",
82
+ "theme_name": "{{dec.theme.name}}",
83
+ "z_index": "{{ dec.z_index }}"
84
+ })
85
+ {% endfor %}
86
+
87
+ for (var i = 0; i < themes.length; i++) {
88
+ var theme = themes[i]
89
+ THEMES[theme.name] = theme
90
+ THEMES[theme.name].decor = {}
91
+ }
92
+
93
+ for (var i = 0; i < decor.length; i++) {
94
+ var themeDecor = THEMES[decor[i].theme_name].decor
95
+ themeDecor[decor[i].name] = decor[i]
96
+ }
97
+
98
+ CHARACTERS = []
99
+ {% for char in characters %}
100
+ CHARACTERS['{{char.id}}'] = {
101
+ id: '{{char.id}}',
102
+ name: '{{char.name}}',
103
+ image: '{% static "game/image/"|add:char.en_face %}'
104
+ }
105
+ {% endfor %}
106
+ }
107
+
108
+ initGlobals();
109
+ </script>
110
+ <script>
111
+ document.addEventListener('DOMContentLoaded', function () {
112
+ const selectElement = document.getElementById('character_select')
113
+ const labelElement = document.getElementById('max_resource_label')
114
+
115
+ const labelMap = {
116
+ 'Van': 'Max fuel:',
117
+ 'Electric van': 'Max battery:',
118
+ }
119
+
120
+ function updateResourceLabel() {
121
+ const selectedOption = selectElement.options[selectElement.selectedIndex]
122
+ const charName = selectedOption.textContent.trim()
123
+
124
+ labelElement.textContent = labelMap[charName] || "Max moves:"
125
+ }
126
+
127
+ if (selectElement) {
128
+ selectElement.addEventListener('change', updateResourceLabel)
129
+ updateResourceLabel()
106
130
  }
131
+ });
132
+ </script>
107
133
 
108
- initGlobals();
109
- </script>
110
134
  {% endblock %}
111
135
 
112
136
  {% block css %}
113
137
  {{ block.super }}
114
- <link href="{% static 'game/css/game_screen.css' %}" rel="stylesheet" type="text/css">
115
- <link href="{% static 'game/css/level_share.css' %}" rel="stylesheet" type="text/css">
116
- <link href="{% static 'game/css/level_editor.css' %}" rel="stylesheet" type="text/css">
138
+ <link href="{% static 'game/css/game_screen.css' %}" rel="stylesheet" type="text/css">
139
+ <link href="{% static 'game/css/level_share.css' %}" rel="stylesheet" type="text/css">
140
+ <link href="{% static 'game/css/level_editor.css' %}" rel="stylesheet" type="text/css">
117
141
  {% endblock %}
118
142
 
119
143
  {% block content %}
@@ -130,18 +154,18 @@
130
154
  <div id="tabs">
131
155
 
132
156
  <div id="currentTool" class="mode_panel">
133
- <img id="currentToolIcon" src="{% static 'game/image/icons/delete_road.svg' %}" >
157
+ <img id="currentToolIcon" src="{% static 'game/image/icons/delete_road.svg' %}">
134
158
  <br>
135
- <span id="currentToolText" style="font-size: 14px;">{% trans "Delete Road" %}</span>
159
+ <span id="currentToolText" style="font-size: 14px;">Delete Road</span>
136
160
  </div>
137
161
 
138
162
  <br style="clear:both">
139
163
 
140
- <div id="play_tab" class="tab">
164
+ <div id="play_tab" class="tab">
141
165
  <input type="radio" name="tabs" id="play_radio">
142
166
  <label for="play_radio">
143
167
  <img src='{% static "game/image/icons/play.svg" %}'>
144
- <span>{% trans "Play" %}</span>
168
+ <span>Play</span>
145
169
  </label>
146
170
  </div>
147
171
 
@@ -149,49 +173,65 @@
149
173
  <input type="radio" name="tabs" id="play_night_radio">
150
174
  <label for="play_night_radio">
151
175
  <img src='{% static "game/image/icons/play.svg" %}'>
152
- <span>{% trans "Play Night" %}</span>
176
+ <span>Play Night</span>
153
177
  </label>
154
178
  </div>
155
179
 
156
180
  <div class="tab_break"></div>
157
181
 
158
- <div id="map_tab" class="tab selectable">
182
+ <div id="map_tab" class="tab selectable">
159
183
  <input type="radio" name="tabs" id="map_radio">
160
184
  <label for="map_radio">
161
185
  <img src='{% static "game/image/icons/map.svg" %}'>
162
- <span>{% trans "Map" %}</span>
186
+ <span>Map</span>
163
187
  </label>
164
188
  </div>
165
189
 
166
- <div id="scenery_tab" class="tab selectable">
190
+ <div id="scenery_tab" class="tab selectable">
167
191
  <input type="radio" name="tabs" id="scenery_radio">
168
192
  <label for="scenery_radio">
169
193
  <img src='{% static "game/image/icons/decor.svg" %}'>
170
- <span>{% trans "Scenery" %}</span>
194
+ <span>Scenery</span>
171
195
  </label>
172
196
  </div>
173
197
 
174
- <div id="character_tab" class="tab selectable">
198
+ <div id="character_tab" class="tab selectable">
175
199
  <input type="radio" name="tabs" id="character_radio">
176
200
  <label for="character_radio">
177
201
  <img src='{% static "game/image/icons/character.svg" %}'>
178
- <span>{% trans "Character" %}</span>
202
+ <span>Character</span>
179
203
  </label>
180
204
  </div>
181
205
 
182
- <div id="blocks_tab" class="tab selectable">
206
+ <div id="blocks_tab" class="tab selectable">
183
207
  <input type="radio" name="tabs" id="blocks_radio">
184
208
  <label for="blocks_radio">
185
209
  <img src='{% static "game/image/icons/blockly.svg" %}'>
186
- <span>{% trans "Code" %}</span>
210
+ <span>Code</span>
187
211
  </label>
188
212
  </div>
189
213
 
190
- <div id="random_tab" class="tab selectable">
214
+ <div id="random_tab" class="tab selectable">
191
215
  <input type="radio" name="tabs" id="random_radio">
192
216
  <label for="random_radio">
193
217
  <img src='{% static "game/image/icons/random.svg" %}'>
194
- <span>{% trans "Random" %}</span>
218
+ <span>Random</span>
219
+ </label>
220
+ </div>
221
+
222
+ <div id="description_tab" class="tab selectable">
223
+ <input type="radio" name="tabs" id="description_radio">
224
+ <label for="description_radio">
225
+ <img src='{% static "game/image/icons/description.svg" %}'>
226
+ <span>Description</span>
227
+ </label>
228
+ </div>
229
+
230
+ <div id="hint_tab" class="tab selectable">
231
+ <input type="radio" name="tabs" id="hint_radio">
232
+ <label for="hint_radio">
233
+ <img src='{% static "game/image/icons/hint.svg" %}'>
234
+ <span>Hint</span>
195
235
  </label>
196
236
  </div>
197
237
 
@@ -201,7 +241,7 @@
201
241
  <input type="radio" name="tabs" id="load_radio">
202
242
  <label for="load_radio">
203
243
  <img src='{% static "game/image/icons/load.svg" %}'>
204
- <span>{% trans "Load" %}</span>
244
+ <span>Load</span>
205
245
  </label>
206
246
  </div>
207
247
 
@@ -209,33 +249,33 @@
209
249
  <input type="radio" name="tabs" id="save_radio">
210
250
  <label for="save_radio">
211
251
  <img src='{% static "game/image/icons/save.svg" %}'>
212
- <span>{% trans "Save" %}</span>
252
+ <span>Save</span>
213
253
  </label>
214
254
  </div>
215
255
 
216
- <div id="share_tab" class="tab selectable">
256
+ <div id="share_tab" class="tab selectable">
217
257
  <input type="radio" name="tabs" id="share_radio">
218
258
  <label for="share_radio">
219
259
  <img src='{% static "game/image/icons/share.svg" %}'>
220
- <span>{% trans "Share" %}</span>
260
+ <span>Share</span>
221
261
  </label>
222
262
  </div>
223
263
 
224
264
  <div class="tab_break"></div>
225
265
 
226
- <div id="help_tab" class="tab selectable">
266
+ <div id="help_tab" class="tab selectable">
227
267
  <input type="radio" name="tabs" id="help_radio">
228
268
  <label for="help_radio">
229
269
  <img src='{% static "game/image/icons/help.svg" %}'>
230
- <span>{% trans "Help" %}</span>
270
+ <span>Help</span>
231
271
  </label>
232
272
  </div>
233
273
 
234
- <div id="quit_tab" class="tab">
274
+ <div id="quit_tab" class="tab">
235
275
  <input type="radio" name="tabs" id="quit_radio">
236
276
  <label for="quit_radio">
237
277
  <img src='{% static "game/image/icons/quit.svg" %}'>
238
- <span>{% trans "Quit" %}</span>
278
+ <span>Quit</span>
239
279
  </label>
240
280
  </div>
241
281
 
@@ -244,59 +284,57 @@
244
284
  <div id='tab_panes_wrapper'>
245
285
  <div id="tab_panes">
246
286
  <div id="map_pane" class="tab_pane">
247
- <h2 class="title"><img class="modal_image" src='{% static "game/image/icons/map.svg" %}'>{% trans "Map" %}</h2>
248
- <p> {% trans "Here you can design your level! What sort of road will you make?" %}</p>
287
+ <h2 class="title"><img class="modal_image" src='{% static "game/image/icons/map.svg" %}'>Map
288
+ </h2>
289
+ <p>Here you can design your level! What sort of road will you make?</p>
249
290
 
250
291
  <div class="tab_pane_content_holder">
251
292
  <div class="tab_pane_content">
252
- <div class="input_div">
253
- <span>{% trans "Max fuel:" %}</span>
254
- <input type="number" id="max_fuel">
255
- </div>
293
+
256
294
  <br style="clear:both">
257
295
 
258
296
  <div class="table">
259
297
  <div class="table_row">
260
298
  <div class="table_cell">
261
299
  <button class="mode_panel navigation_button" id="add_road">
262
- <img src="{% static "game/image/icons/add_road.svg" %}"/>
263
- <span style="font-size: 14px;">{% trans "Add road" %}</span>
300
+ <img src="{% static "game/image/icons/add_road.svg" %}" />
301
+ <span style="font-size: 14px;">Add road</span>
264
302
  </button>
265
303
  </div>
266
304
  <div class="table_cell">
267
305
  <button class="mode_panel navigation_button" id="delete_road">
268
- <img src="{% static "game/image/icons/delete_road.svg" %}"/>
269
- <span style="font-size: 14px;">{% trans "Delete road" %}</span>
306
+ <img src="{% static "game/image/icons/delete_road.svg" %}" />
307
+ <span style="font-size: 14px;">Delete road</span>
270
308
  </button>
271
309
  </div>
272
310
  </div>
273
311
  <div class="table_row">
274
312
  <div class="table_cell">
275
313
  <button class="mode_panel navigation_button" id="add_house">
276
- <img src="{% static "game/image/icons/add_house.svg" %}"/>
277
- <span style="font-size: 14px;">{% trans "Add house" %}</span>
314
+ <img src="{% static "game/image/icons/add_house.svg" %}" />
315
+ <span style="font-size: 14px;">Add house</span>
278
316
  </button>
279
317
  </div>
280
318
  <div class="table_cell">
281
319
  <button class="mode_panel navigation_button" id="delete_house">
282
- <img src="{% static "game/image/icons/delete_house.svg" %}"/>
283
- <span style="font-size: 14px;">{% trans "Delete house" %}</span>
320
+ <img src="{% static "game/image/icons/delete_house.svg" %}" />
321
+ <span style="font-size: 14px;">Delete house</span>
284
322
  </button>
285
323
  </div>
286
324
  </div>
287
325
  <div class="table_row">
288
326
  <div class="table_cell">
289
327
  <button class="mode_panel navigation_button" id="start">
290
- <img src="{% static "game/image/icons/origin.svg" %}"/>
291
- <span style="font-size: 14px;">{% trans "Mark start" %}</span>
328
+ <img src="{% static "game/image/icons/origin.svg" %}" />
329
+ <span style="font-size: 14px;">Mark start</span>
292
330
  </button>
293
331
  </div>
294
332
  </div>
295
333
  </div>
296
334
 
297
335
  <button class="navigation_button long_button" id="clear">
298
- <img src="{% static "game/image/icons/clear.svg" %}"/>
299
- <span>{% trans "Clear all" %}</span>
336
+ <img src="{% static "game/image/icons/clear.svg" %}" />
337
+ <span>Clear all</span>
300
338
  </button>
301
339
 
302
340
  {% if user|is_developer %}
@@ -309,15 +347,15 @@
309
347
  </div>
310
348
 
311
349
  <div id="scenery_pane" class="tab_pane">
312
- <h2 class="title"><img class="modal_image" src='{% static "game/image/icons/decor.svg" %}'>{% trans "Scenery" %}</h2>
313
- <p> {% trans "Here you can liven up your level by choosing the theme and adding scenery! Will you create beautiful countryside or a bustling city?" %}</p>
350
+ <h2 class="title"><img class="modal_image" src='{% static "game/image/icons/decor.svg" %}'>Scenery</h2>
351
+ <p>Here you can liven up your level by choosing the theme and adding scenery! Will you create beautiful countryside or a bustling city?</p>
314
352
  <div class="tab_pane_content_holder">
315
353
  <div class="tab_pane_content">
316
354
 
317
355
  <table>
318
356
  <tbody>
319
357
  <tr>
320
- <td>{% trans "Theme:" %}</td>
358
+ <td>Theme:</td>
321
359
  <td colspan=2>
322
360
  <select id="theme_select">
323
361
  {% for theme in themes %}
@@ -327,23 +365,42 @@
327
365
  </td>
328
366
  </tr>
329
367
  <tr>
330
- <td>{% trans "Scenery:" %}</td>
331
- <td><div class="decor_div"><img id="tree1" class="decor_button" src="{{tree1.url}}" width="70"></td>
332
- <td><div class="decor_div"><img id="tree2" class="decor_button" src="{{tree2.url}}" width="70"></div></td>
368
+ <td>Scenery:</td>
369
+ <td>
370
+ <div class="decor_div"><img id="tree1" class="decor_button" src="{{tree1.url}}" width="70">
371
+ </td>
372
+ <td>
373
+ <div class="decor_div"><img id="tree2" class="decor_button" src="{{tree2.url}}" width="70">
374
+ </div>
375
+ </td>
376
+ </tr>
377
+ <tr>
378
+ <td></td>
379
+ <td>
380
+ <div class="decor_div"><img id="bush" class="decor_button" src="{{bush.url}}" width="50"></div>
381
+ </td>
382
+ <td>
383
+ <div class="decor_div"><img id="pond" class="decor_button" src="{{pond.url}}" width="100"></div>
384
+ </td>
333
385
  </tr>
334
386
  <tr>
335
387
  <td></td>
336
- <td><div class="decor_div"><img id="bush" class="decor_button" src="{{bush.url}}" width="50"></div></td>
337
- <td><div class="decor_div"><img id="pond" class="decor_button" src="{{pond.url}}" width="100"></div></td>
388
+ <td>
389
+ <div class="decor_div"><img id="solar_panel" class="decor_button" src="{{solar_panel.url}}"
390
+ width="70" alt="solar panel"></div>
391
+ </td>
392
+ <td></td>
338
393
  </tr>
339
394
  <tr>
340
- <td>{% trans "Traffic lights:" %}</td>
341
- <td><img id="trafficLightRed" src="{% static 'game/image/trafficLight_red.svg' %}" width="80"></td>
342
- <td><img id="trafficLightGreen" src="{% static 'game/image/trafficLight_green.svg' %}" width="80"></td>
395
+ <td>Traffic lights:</td>
396
+ <td><img id="trafficLightRed" src="{% static 'game/image/trafficLight_red.svg' %}" width="80">
397
+ </td>
398
+ <td><img id="trafficLightGreen" src="{% static 'game/image/trafficLight_green.svg' %}" width="80">
399
+ </td>
343
400
  </tr>
344
401
  {% if cow_level_enabled %}
345
402
  <tr>
346
- <td>{% trans "Cows:" %}</td>
403
+ <td id="animals_label">Cows:</td>
347
404
  <td><img id="cow" src="/static/game/image/Clarice.svg" width="80"></td>
348
405
  <td>
349
406
  </td>
@@ -359,15 +416,19 @@
359
416
  </div>
360
417
 
361
418
  <div id="character_pane" class="tab_pane">
362
- <h2 class="title"><img class="modal_image" src='{% static "game/image/icons/character.svg" %}'>{% trans "Character" %}</h2>
363
- <p> {% trans "Here you can choose your character. Who will you play as?" %}</p>
419
+ <h2 class="title"><img class="modal_image" src='{% static "game/image/icons/character.svg" %}'>Character</h2>
420
+ <p>Here you can choose your character. Who will you play as?</p>
364
421
  <div class="tab_pane_content_holder">
365
422
  <div class="tab_pane_content">
366
- <p>{% trans "Character:" %}
423
+ <div class="input_div">
424
+ <span id="max_resource_label"></span>
425
+ <input type="number" id="max_fuel">
426
+ </div>
427
+ <p>Character:
367
428
  <select id="character_select">
368
- {% for char in characters %}
429
+ {% for char in characters %}
369
430
  <option value='{{char.id}}'> {{char.name}} </option>
370
- {% endfor %}
431
+ {% endfor %}
371
432
  </select>
372
433
  </p>
373
434
  <img id="character_image" src="">
@@ -376,19 +437,19 @@
376
437
  </div>
377
438
 
378
439
  <div id="blocks_pane" class="tab_pane">
379
- <h2 class="title"><img class="modal_image" src='{% static "game/image/icons/blockly.svg" %}'>{% trans "Code" %}</h2>
380
- <p> {% trans "Here you can select the code you can use while playing your new level!" %} </p>
440
+ <h2 class="title"><img class="modal_image" src='{% static "game/image/icons/blockly.svg" %}'>Code</h2>
441
+ <p>Here you can select the code you can use while playing your new level! </p>
381
442
  <div class="tab_pane_content_holder">
382
443
  <div class="tab_pane_content">
383
444
  <div id="block_table">
384
445
 
385
446
  <div id="language_div" class="input_div">
386
- <span>{% trans "Language:" %}</span>
447
+ <span>Language:</span>
387
448
  <select id="language_select">
388
- <option value="blockly">{% trans "Blockly" %}</option>
389
- <option value="blocklyWithPythonView">{% trans "Blockly With Python View" %}</option>
390
- <option value="python">{% trans "Python" %}</option>
391
- <option value="both">{% trans "Both" %}</option>
449
+ <option value="blockly">Blockly</option>
450
+ <option value="blocklyWithPythonView">Blockly With Python View</option>
451
+ <option value="python">Python</option>
452
+ <option value="both">Both</option>
392
453
  </select>
393
454
  </div>
394
455
 
@@ -398,29 +459,29 @@
398
459
  <input type="checkbox" id="select_all_checkbox" class="block_checkbox">
399
460
  </div>
400
461
  <div>
401
- <label id="select_all_label" for="select_all_checkbox"> {% trans "Select all" %}</label>
462
+ <label id="select_all_label" for="select_all_checkbox">Select all</label>
402
463
  </div>
403
464
  </div>
404
465
 
405
466
  {% for block in blocks %}
406
- <div class="table_row">
407
- <div class="table_cell">
408
- <input type="checkbox" id="{{block}}_checkbox" class="block_checkbox" unchecked>
409
- </div>
410
- <div id="{{block}}_image" class="table_cell unselectable"></div>
411
- <select id="{{block}}_number" class="block_number" class="table_cell unselectable">
412
- <option value="infinity">&infin;</option>
413
- <option value="1">1</option>
414
- <option value="2">2</option>
415
- <option value="3">3</option>
416
- <option value="4">4</option>
417
- <option value="5">5</option>
418
- <option value="6">6</option>
419
- <option value="7">7</option>
420
- <option value="8">8</option>
421
- <option value="9">9</option>
422
- </select>
467
+ <div class="table_row">
468
+ <div class="table_cell">
469
+ <input type="checkbox" id="{{block}}_checkbox" class="block_checkbox" unchecked>
423
470
  </div>
471
+ <div id="{{block}}_image" class="table_cell unselectable"></div>
472
+ <select id="{{block}}_number" class="block_number" class="table_cell unselectable">
473
+ <option value="infinity">&infin;</option>
474
+ <option value="1">1</option>
475
+ <option value="2">2</option>
476
+ <option value="3">3</option>
477
+ <option value="4">4</option>
478
+ <option value="5">5</option>
479
+ <option value="6">6</option>
480
+ <option value="7">7</option>
481
+ <option value="8">8</option>
482
+ <option value="9">9</option>
483
+ </select>
484
+ </div>
424
485
  {% endfor %}
425
486
  </div>
426
487
  </div>
@@ -429,70 +490,113 @@
429
490
  </div>
430
491
 
431
492
  <div id="random_pane" class="tab_pane">
432
- <h2 class="title"><img class="modal_image" src='{% static "game/image/icons/random.svg" %}'>{% trans "Random" %}</h2>
433
- <p> {% trans "Here you can generate a random map. Try changing some of the parameters below and see what you get!" %} </p>
493
+ <h2 class="title"><img class="modal_image" src='{% static "game/image/icons/random.svg" %}'>Random</h2>
494
+ <p>Here you can generate a random map. Try changing some of the parameters below and see what you get!</p>
434
495
  <div class="tab_pane_content_holder">
435
496
  <div class="tab_pane_content">
436
497
  <div class="table">
437
498
  <div class="table_row">
438
- <div class="table_cell field_label"><p>{% trans "Size:" %}</p></div>
439
- <div class="table_cell field_value"><input type="number" id="size" value="20" size="4" min="2" max="40"></div>
499
+ <div class="table_cell field_label">
500
+ <p>Size:</p>
501
+ </div>
502
+ <div class="table_cell field_value"><input type="number" id="size" value="20" size="4" min="2"
503
+ max="40"></div>
440
504
  </div>
441
505
  <div class="table_row">
442
- <div class="table_cell field_label"><p>{% trans "Branchiness:" %}</p></div>
443
- <div class="table_cell field_value"><input type="number" id="branchiness" value="1" size="4" min="0" max="10"></div>
506
+ <div class="table_cell field_label">
507
+ <p>Branchiness:</p>
508
+ </div>
509
+ <div class="table_cell field_value"><input type="number" id="branchiness" value="1" size="4" min="0"
510
+ max="10"></div>
444
511
  </div>
445
512
  <div class="table_row">
446
- <div class="table_cell field_label"><p>{% trans "Loopiness:" %}</p></div>
447
- <div class="table_cell field_value"><input type="number" id="loopiness" value="1" size="4" min="0" max="10"></div>
513
+ <div class="table_cell field_label">
514
+ <p>Loopiness:</p>
515
+ </div>
516
+ <div class="table_cell field_value"><input type="number" id="loopiness" value="1" size="4" min="0"
517
+ max="10"></div>
448
518
  </div>
449
519
  <div class="table_row">
450
- <div class="table_cell field_label"><p>{% trans "Curviness:" %}</p></div>
451
- <div class="table_cell field_value"><input type="number" id="curviness" value="5" size="4" min="0" max="10"></div>
520
+ <div class="table_cell field_label">
521
+ <p>Curviness:</p>
522
+ </div>
523
+ <div class="table_cell field_value"><input type="number" id="curviness" value="5" size="4" min="0"
524
+ max="10"></div>
452
525
  </div>
453
526
  <div class="table_row">
454
- <div class="table_cell field_label"><p>{% trans "Traffic Lights:" %}</p></div>
527
+ <div class="table_cell field_label">
528
+ <p>Traffic Lights:</p>
529
+ </div>
455
530
  <div class="table_cell field_value">
456
531
  <select id="trafficLightsEnabled">
457
- <option value="yes">{% trans "Yes" %}</option>
458
- <option value="no" selected>{% trans "No" %}</option>
532
+ <option value="yes">Yes</option>
533
+ <option value="no" selected>No</option>
459
534
  </select>
460
535
  </div>
461
536
  </div>
462
537
  <div class="table_row">
463
- <div class="table_cell field_label"><p>{% trans "Scenery:" %}</p></div>
538
+ <div class="table_cell field_label">
539
+ <p>Scenery:</p>
540
+ </div>
464
541
  <div class="table_cell field_value">
465
542
  <select id="sceneryEnabled">
466
- <option value="yes">{% trans "Yes" %}</option>
467
- <option value="no" selected>{% trans "No" %}</option>
543
+ <option value="yes">Yes</option>
544
+ <option value="no" selected>No</option>
468
545
  </select>
469
546
  </div>
470
547
  </div>
471
548
  </div>
472
549
  <button class="navigation_button long_button" id="generate">
473
550
  <img src="{% static 'game/image/icons/random.svg' %}">
474
- <span>{% trans "Generate" %}</span>
551
+ <span>Generate</span>
475
552
  </button>
476
553
  </div>
477
554
  </div>
478
555
  </div>
479
556
 
557
+ <div id="description_pane" class="tab_pane">
558
+ <h2 class="title"><img class="modal_image" src='{% static "game/image/icons/description.svg" %}'>Description</h2>
559
+ <p>Give this level a subtitle and a description of what to do within this level for your students.</p>
560
+ <p>Students will see this subtitle and description when <b>starting this level</b> so make sure they are <b>useful to the student</b>.</p>
561
+ <div class="tab_pane_content_holder">
562
+ <div class="tab_pane_content">
563
+ <p><b>Subtitle</b><br>What is the subtitle of this level?</p>
564
+ <textarea id="subtitle" rows="4" cols="50"></textarea>
565
+
566
+ <p><b>Description</b><br>What do players have to do to complete this level?</p>
567
+ <textarea id="description" rows="4" cols="50"></textarea>
568
+ </div>
569
+ </div>
570
+ </div>
571
+
572
+ <div id="hint_pane" class="tab_pane">
573
+ <h2 class="title"><img class="modal_image" src='{% static "game/image/icons/hint.svg" %}'>Hint</h2>
574
+ <p>Help out your players by adding hints! Players will have the option to view a hint when they have made an unsuccessful attempt.</p>
575
+ <p>Players can also access hints by clicking the hint button whilst playing.</p>
576
+ <div class="tab_pane_content_holder">
577
+ <div class="tab_pane_content">
578
+ <p><b>Hint</b></p>
579
+ <textarea id="hint" rows="4" cols="50"></textarea>
580
+ </div>
581
+ </div>
582
+ </div>
583
+
480
584
  <div id="load_pane" class="tab_pane">
481
- <h2 class="title"><img class="modal_image" src='{% static "game/image/icons/load.svg" %}'>{% trans "Load" %}</h2>
482
- <p>{% trans "Here you can load in levels created by you and your friends! Select a level in the table and press load." %}</p>
585
+ <h2 class="title"><img class="modal_image" src='{% static "game/image/icons/load.svg" %}'>Load</h2>
586
+ <p>Here you can load in levels created by you and your friends! Select a level in the table and press load.</p>
483
587
 
484
588
  <div class="table_control_div">
485
589
 
486
590
  <div id="does_not_exist">
487
- <p> {% trans "You don't have any levels to load yet. Try saving one!" %} </p>
591
+ <p>You don't have any levels to load yet. Try saving one!</p>
488
592
  </div>
489
593
 
490
594
  <div id="does_exist">
491
595
  <p>
492
- {% trans "Load:" %}
596
+ Load:
493
597
  <select id="load_type_select">
494
- <option value="ownLevels" selected>{% trans "your own levels" %}</option>
495
- <option value="sharedLevels">{% trans "shared levels" %}</option>
598
+ <option value="ownLevels" selected>your own levels</option>
599
+ <option value="sharedLevels">shared levels</option>
496
600
  </select>
497
601
  </p>
498
602
 
@@ -500,8 +604,8 @@
500
604
  <table width='100%' id="loadLevelTableHeader">
501
605
  <thead>
502
606
  <tr>
503
- <th>{% trans "Name" %}</th>
504
- <th>{% trans "Owner" %}</th>
607
+ <th>Name</th>
608
+ <th>Owner</th>
505
609
  </tr>
506
610
  </thead>
507
611
  </table>
@@ -518,29 +622,29 @@
518
622
 
519
623
  <div>
520
624
  <button class="navigation_button long_button" id="deleteLevel">
521
- <img src="{% static "game/image/icons/clear.svg" %}">
522
- <span>{% trans "Delete" %}</span>
625
+ <img src="{% static " game/image/icons/clear.svg" %}">
626
+ <span>Delete</span>
523
627
  </button>
524
628
 
525
629
  <button class="navigation_button long_button" id="loadLevel">
526
- <img src="{% static "game/image/icons/load.svg" %}">
527
- <span>{% trans "Load" %}</span>
630
+ <img src="{% static " game/image/icons/load.svg" %}">
631
+ <span>Load</span>
528
632
  </button>
529
633
  </div>
530
634
  </div>
531
635
 
532
636
  <div id="save_pane" class="tab_pane">
533
- <h2 class="title"><img class="modal_image" src='{% static "game/image/icons/save.svg" %}'>{% trans "Save" %}</h2>
534
- <p>{% trans "Here you can save your new level. Enter a name below and hit save. Alternatively click on an existing level to update it." %}</p>
535
- <p>{% trans "To play your level and be tracked, first <b>Quit</b> the Level Editor and select your level from the 'Levels created by you' section." %}</p>
637
+ <h2 class="title"><img class="modal_image" src='{% static "game/image/icons/save.svg" %}'>Save</h2>
638
+ <p>Here you can save your new level. Enter a name below and hit save. Alternatively click on an existing level to update it.</p>
639
+ <p>To play your level and be tracked, first <b>Quit</b> the Level Editor and select your level from the 'Levels created by you' section.</p>
536
640
 
537
641
  <div class="table_control_div">
538
642
  <div class="scrolling-table-wrapper">
539
643
  <table width='100%' id="saveLevelTableHeader">
540
644
  <thead>
541
645
  <tr>
542
- <th>{% trans "Name" %}</th>
543
- <th>{% trans "Owner" %}</th>
646
+ <th>Name</th>
647
+ <th>Owner</th>
544
648
  </tr>
545
649
  </thead>
546
650
  </table>
@@ -552,49 +656,49 @@
552
656
  </div>
553
657
  <br style="clear:both">
554
658
  <div>
555
- <label>{% trans "Name:" %}</label>
659
+ <label>Name:</label>
556
660
  <input type="text" id="levelNameInput">
557
661
  </div>
558
662
  </div>
559
663
  <br>
560
664
  <br>
561
665
  <button class="navigation_button long_button" id="saveLevel">
562
- <img src="{% static "game/image/icons/save.svg" %}">
563
- <span>{% trans "Save" %}</span>
666
+ <img src="{% static " game/image/icons/save.svg" %}">
667
+ <span>Save</span>
564
668
  </button>
565
669
  </div>
566
670
 
567
671
  <div id="share_pane" class="tab_pane">
568
- <h2 class="title"><img class="modal_image" src='{% static "game/image/icons/share.svg" %}'>{% trans "Share" %}</h2>
672
+ <h2 class="title"><img class="modal_image" src='{% static "game/image/icons/share.svg" %}'>Share</h2>
569
673
 
570
674
  {% if user|get_user_status == 'TEACHER' %}
571
- <p>{% trans "Here you can share your level with your classes or your fellow teachers." %}</p>
572
- <p><strong>Admin teachers can already see levels created by you.</strong></p>
675
+ <p>Here you can share your level with your classes or your fellow teachers.</p>
676
+ <p><strong>Admin teachers can already see levels created by you.</strong></p>
573
677
  {% elif user|get_user_status == 'SCHOOL_STUDENT' %}
574
- <p>{% trans "Here you can share your level with your classmates. Try clicking in the Shared column!" %}</p>
678
+ <p>Here you can share your level with your classmates. Try clicking in the Shared column!</p>
575
679
  {% endif %}
576
680
 
577
681
  <div class="table_control_div">
578
682
  {% if user|get_user_status == 'TEACHER' %}
579
- <p>
580
- {% trans "Share with:" %}
581
- <select id="share_type_select">
582
- <option value="classes" selected>{% trans "Classes" %}</option>
583
- <option value="teachers">{% trans "Teachers" %}</option>
584
- </select>
585
- </p>
586
-
587
- <p id="class_selection">
588
- {% trans "Class:" %} <select id="class_select"></select>
589
- </p>
683
+ <p>
684
+ Share with:
685
+ <select id="share_type_select">
686
+ <option value="classes" selected>Classes</option>
687
+ <option value="teachers">Teachers</option>
688
+ </select>
689
+ </p>
690
+
691
+ <p id="class_selection">
692
+ Class: <select id="class_select"></select>
693
+ </p>
590
694
  {% endif %}
591
695
 
592
696
  <div id="shared_levels" class="scrolling-table-wrapper">
593
697
  <table width='100%' id="shareLevelTableHeader">
594
698
  <thead>
595
699
  <tr>
596
- <th>{% trans "Name" %}</th>
597
- <th>{% trans "Shared" %}</th>
700
+ <th>Name</th>
701
+ <th>Shared</th>
598
702
  </tr>
599
703
  </thead>
600
704
  </table>
@@ -608,7 +712,7 @@
608
712
 
609
713
  <button class="navigation_button long_button" id="shareWithAll">
610
714
  <img src="{% static 'game/image/icons/share.svg' %}">
611
- <span>{% trans "Share with all" %}</span>
715
+ <span>Share with all</span>
612
716
  </button>
613
717
  </div>
614
718
 
@@ -629,4 +733,4 @@
629
733
  <div id="blockly"></div>
630
734
  <xml id="blockly_toolbox"></xml>
631
735
 
632
- {% endblock %}
736
+ {% endblock %}