ソースを参照

Adding setting "allow_redirect_to_main_page_after_work_upload" BT#13567

Redirect to home work tool after uploading a student publication or
a adding a comment
jmontoyaa 7 年 前
コミット
91c0f15734

+ 14 - 7
main/inc/lib/formvalidator/FormValidator.class.php

@@ -1561,11 +1561,12 @@ EOT;
 
     /**
      * @param string $url
+     * @param string $urlToRedirect after upload redirect to this page
      */
-    public function addMultipleUpload($url)
+    public function addMultipleUpload($url, $urlToRedirect = '')
     {
         $inputName = 'input_file_upload';
-        $this->addMultipleUploadJavascript($url, $inputName);
+        $this->addMultipleUploadJavascript($url, $inputName, $urlToRedirect);
 
         $this->addHtml('
             <div class="description-upload">
@@ -1595,9 +1596,14 @@ EOT;
      *
      * @param string $url page that will handle the upload
      * @param string $inputName
+     * @param string $urlToRedirect
      */
-    private function addMultipleUploadJavascript($url, $inputName)
+    private function addMultipleUploadJavascript($url, $inputName, $urlToRedirect = '')
     {
+        $redirectCondition = '';
+        if (!empty($urlToRedirect)) {
+            $redirectCondition = "window.location.replace('$urlToRedirect'); ";
+        }
         $icon = Display::return_icon('file_txt.gif');
         $this->addHtml("
         <script>
@@ -1683,13 +1689,14 @@ EOT;
                         // Update file name with new one from Chamilo
                         $(data.context.children()[index]).parent().find('.file_name').html(file.name);                        
                         var successMessage = $('<div class=\"col-sm-3\">').html($('<span class=\"alert alert-success\"/>').text('".addslashes(get_lang('UplUploadSucceeded'))."'));
-                        $(data.context.children()[index]).parent().append(successMessage);
+                        $(data.context.children()[index]).parent().append(successMessage);                    
                     } else if (file.error) {
                         var error = $('<div class=\"col-sm-3\">').html($('<span class=\"alert alert-danger\"/>').text(file.error));
-                        $(data.context.children()[index]).parent().append(error);
+                        $(data.context.children()[index]).parent().append(error);                        
                     }
-                });
-                $('#dropzone').removeClass('hover');
+                });                
+                $('#dropzone').removeClass('hover');                
+                ".$redirectCondition."
             }).on('fileuploadfail', function (e, data) {
                 $.each(data.files, function (index) {
                     var failedMessage = '" . addslashes(get_lang('UplUploadFailed'))."';

+ 2 - 0
main/install/configuration.dist.php

@@ -673,3 +673,5 @@ $_configuration['gradebook_badge_sidebar'] = [
 //$_configuration['disable_js_in_lp_view'] = true;
 // Show all sessions (old, current, future) in my course page
 //$_configuration['show_all_sessions_on_my_course_page'] = true;
+// Redirect to home tool after uploading a student publication or a adding a comment
+//$_configuration['allow_redirect_to_main_page_after_work_upload'] = false;

+ 14 - 1
main/work/upload.php

@@ -88,6 +88,12 @@ setWorkUploadForm($form, $workInfo['allow_text_assignment']);
 $form->addElement('hidden', 'id', $work_id);
 $form->addElement('hidden', 'sec_token', $token);
 
+$allowRedirect = api_get_configuration_value('allow_redirect_to_main_page_after_work_upload');
+$urlToRedirect = '';
+if ($allowRedirect) {
+    $urlToRedirect = api_get_path(WEB_CODE_PATH).'work/work.php?'.api_get_cidreq();
+}
+
 $succeed = false;
 if ($form->validate()) {
     if ($student_can_edit_in_session && $check) {
@@ -103,6 +109,13 @@ if ($form->validate()) {
             $_FILES['file'],
             api_get_configuration_value('assignment_prevent_duplicate_upload')
         );
+
+
+        if ($allowRedirect) {
+            header('Location: '.$urlToRedirect);
+            exit;
+        }
+
         $script = 'work_list.php';
         if ($is_allowed_to_edit) {
             $script = 'work_list_all.php';
@@ -133,7 +146,7 @@ if ($workInfo['allow_text_assignment'] == 1) {
     );
 
     $multipleForm = new FormValidator('post');
-    $multipleForm->addMultipleUpload($url);
+    $multipleForm->addMultipleUpload($url, $urlToRedirect);
 
     $tabs = Display::tabs(
         $headers,

+ 6 - 0
main/work/view.php

@@ -68,6 +68,12 @@ if ((user_is_author($id) || $isDrhOfCourse || (api_is_allowed_to_edit() || api_i
             $url = api_get_path(WEB_CODE_PATH).'work/edit.php?id='.$my_folder_data['id'].'&item_id='.$work['id'].'&'.api_get_cidreq();
         } else {
             $url = api_get_path(WEB_CODE_PATH).'work/view.php?id='.$work['id'].'&'.api_get_cidreq();
+
+            $allowRedirect = api_get_configuration_value('allow_redirect_to_main_page_after_work_upload');
+            $urlToRedirect = '';
+            if ($allowRedirect) {
+                $url = api_get_path(WEB_CODE_PATH).'work/work.php?'.api_get_cidreq();
+            }
         }
 
         switch ($action) {