diff --git a/inginious/frontend/webapp/pages/course_admin/task_list.py b/inginious/frontend/webapp/pages/course_admin/task_list.py index 288c1134..9a7b1168 100644 --- a/inginious/frontend/webapp/pages/course_admin/task_list.py +++ b/inginious/frontend/webapp/pages/course_admin/task_list.py @@ -5,7 +5,10 @@ from collections import OrderedDict +import re import web +import yaml + from inginious.frontend.webapp.pages.course_admin.utils import make_csv, INGIniousAdminPage @@ -23,6 +26,16 @@ def POST_AUTH(self, courseid): # pylint: disable=arguments-differ course, _ = self.get_course_and_check_rights(courseid) data = web.input(task=[]) + if "new_task_id" in data: + # Create new task + valid_expression = re.compile("^[a-zA-Z0-9_\-]+$") + if valid_expression.match(data["new_task_id"]): + default_task_data = yaml.safe_load(open("task.yaml", "r")) + default_task_data["name"] = data["new_task_id"] + self.task_factory.update_task_descriptor_content(courseid, data["new_task_id"], default_task_data, "yaml") + + + if "task" in data: # Change tasks order for index, taskid in enumerate(data["task"]): diff --git a/inginious/frontend/webapp/static/js/studio.js b/inginious/frontend/webapp/static/js/studio.js index 7c372403..3f4071b2 100644 --- a/inginious/frontend/webapp/static/js/studio.js +++ b/inginious/frontend/webapp/static/js/studio.js @@ -7,6 +7,17 @@ /** * Redirect to the studio to create a new task */ + +function studio_validate_name_task(){ + var task_id = $('#new_task_id'); + if(!task_id.val().match(/^[a-zA-Z0-9_\-]+$/)) + { + alert('Task id should only contain alphanumeric characters (in addition to "_" and "-").'); + return; + } +} + + function studio_create_new_task() { var task_id = $('#new_task_id'); diff --git a/inginious/frontend/webapp/templates/course_admin/task_list.html b/inginious/frontend/webapp/templates/course_admin/task_list.html index 9cdbb402..5b957bd0 100644 --- a/inginious/frontend/webapp/templates/course_admin/task_list.html +++ b/inginious/frontend/webapp/templates/course_admin/task_list.html @@ -78,9 +78,12 @@

Tasks
-
-
- +
+
+
+
+
+
$if len(errors) != 0: @@ -117,4 +120,4 @@

Errors while loading tasks

} $$('.sorted_table').sortable($$(this).hasClass("active") ? "enable" : "disable"); }); - \ No newline at end of file + diff --git a/task.yaml b/task.yaml new file mode 100644 index 00000000..541b16bc --- /dev/null +++ b/task.yaml @@ -0,0 +1,24 @@ +accessible: true +author: '' +context: '' +environment: mcq +evaluate: best +groups: false +limits: + output: '2' + memory: '100' + time: '30' +name: default +network_grading: false +problems: + default-task: + name: '' + type: code-multiple-languages + languages: + cpp11: true + header: '' +stored_submissions: 0 +submission_limit: + amount: -1 + period: -1 +weight: 1.0