Преглед изворни кода

Adding question-pool routes

Julio Montoya пре 11 година
родитељ
комит
d5af34e0f5
1 измењених фајлова са 62 додато и 8 уклоњено
  1. 62 8
      main/inc/routes.php

+ 62 - 8
main/inc/routes.php

@@ -114,6 +114,14 @@ $settingCourseConditions = function (Request $request) use ($cidReset, $app) {
     }
 };
 
+$userCourseAdmin = function(Request $request) use ($app) {
+    if (api_is_allowed_to_edit()) {
+        return null;
+    } else {
+        return $app->abort(401);
+    }
+};
+
 /** Checks user permissions inside a course teacher? coach? etc */
 $userPermissionsInsideACourse = function (Request $request) use ($app) {
 
@@ -125,7 +133,6 @@ $userPermissionsInsideACourse = function (Request $request) use ($app) {
     $is_platformAdmin = api_is_platform_admin();
     $courseReset      = Session::read('courseReset');
 
-
     //$app['monolog']->addDebug($courseReset);
     //$app['monolog']->addDebug($courseId);
 
@@ -135,7 +142,6 @@ $userPermissionsInsideACourse = function (Request $request) use ($app) {
     $is_courseTutor  = false;
     $is_courseCoach  = false;
     $is_sessionAdmin = false;
-    //Session::erase('_courseUser');
 
     if ($courseReset) {
 
@@ -159,9 +165,7 @@ $userPermissionsInsideACourse = function (Request $request) use ($app) {
                     $sessionId
                 ) || $user_pass_open_course;
                 if (!$user_is_subscribed) {
-                    $url = api_get_path(
-                        WEB_CODE_PATH
-                    ).'course_info/legal.php?course_code='.$courseInfo['code'].'&session_id='.$sessionId;
+                    $url = api_get_path(WEB_CODE_PATH).'course_info/legal.php?course_code='.$courseInfo['code'].'&session_id='.$sessionId;
                     header('Location: '.$url);
                     exit;
                 }
@@ -442,7 +446,8 @@ $app->match('/courses/{cidReq}/{id_session}/', 'course_home.controller:indexActi
     ->assert('id_session', '\d+')
     ->assert('type', '.+')
     ->before($settingCourseConditions)
-    ->before($userPermissionsInsideACourse);
+    ->before($userPermissionsInsideACourse)
+    ->bind('course');
 
 $app->match('/courses/{cidReq}/', 'course_home.controller:indexAction', 'GET|POST')
     ->assert('type', '.+')
@@ -545,7 +550,56 @@ $app->match('/editor/connector', 'editor.controller:connectorAction', 'GET|POST'
     ->bind('editor_connector');
 
 /** Exercises */
-$app->match('/exercise/question-pool', 'exercise_manager.controller:questionPoolAction', 'POST')
+$app->match('courses/{cidReq}/{id_session}/exercise/question-pool', 'exercise_manager.controller:questionPoolAction', 'POST')
     ->before($settingCourseConditions)
     ->before($userPermissionsInsideACourse)
-    ->bind('admin_category_delete');
+    ->bind('exercise_question_pool_global');
+
+$app->match('courses/{cidReq}/{id_session}/exercise/{exerciseId}/question-pool', 'exercise_manager.controller:questionPoolAction', 'GET|POST')
+    ->assert('exerciseId', '\d+')
+    ->before($settingCourseConditions)
+    ->before($userCourseAdmin)
+    ->before($userPermissionsInsideACourse)
+    ->bind('exercise_question_pool');
+
+$app->match('courses/{cidReq}/{id_session}/exercise/{exerciseId}/copy-question/{questionId}', 'exercise_manager.controller:copyQuestionAction', 'GET|POST')
+    ->assert('questionId', '\d+')
+    ->assert('exerciseId', '\d+')
+    ->before($settingCourseConditions)
+    ->before($userCourseAdmin)
+    ->before($userPermissionsInsideACourse)
+    ->bind('exercise_copy_question');
+
+/** Course home instead of courses/MATHS the new URL is web/courses/MATHS  */
+$app->match('/courses/{cidReq}/{id_session}/exercise/question/{id}', 'exercise_manager.controller:getQuestionAction', 'GET')
+    ->assert('id_session', '\d+')
+    ->assert('id', '\d+')
+    ->assert('type', '.+')
+    ->before($settingCourseConditions)
+    ->before($userPermissionsInsideACourse)
+    ->before($userCourseAdmin)
+    ->bind('question_show');
+
+$app->match('/courses/{cidReq}/{id_session}/exercise/{exerciseId}/question/{id}', 'exercise_manager.controller:getQuestionAction', 'GET')
+    ->assert('id_session', '\d+')
+    ->assert('exerciseId', '\d+')
+    ->assert('id', '\d+')
+    ->assert('type', '.+')
+    ->before($settingCourseConditions)
+    ->before($userPermissionsInsideACourse)
+    ->before($userCourseAdmin)
+    ->bind('exercise_question_show');
+
+$app->match('/courses/{cidReq}/{id_session}/exercise/{exerciseId}/dashboard', 'exercise_manager.controller:dashboardAction', 'GET')
+    ->assert('id_session', '\d+')
+    ->assert('exerciseId', '\d+')
+    ->assert('type', '.+')
+    ->before($settingCourseConditions)
+    ->before($userPermissionsInsideACourse)
+    ->before($userCourseAdmin)
+    ->bind('exercise_dashboard');
+
+$app->match('/courses/{cidReq}/{id_session}/exercise/question/{id}/edit', 'exercise_manager.controller:editQuestionAction', 'GET|POST')
+    ->assert('type', '.+')
+    ->before($adminAndQuestionManagerCondition)
+    ->bind('exercise_question_edit');