diff --git a/repository/filepicker.js b/repository/filepicker.js index 56065ec8986..a3a31e180fd 100644 --- a/repository/filepicker.js +++ b/repository/filepicker.js @@ -583,27 +583,19 @@ M.core_filepicker.init = function(Y, options) { method: 'POST', on: { complete: function(id,o,p) { - if (!o) { - // TODO - alert('IO FATAL'); - return; - } var data = null; try { data = Y.JSON.parse(o.responseText); } catch(e) { - scope.print_msg(M.str.repository.invalidjson, 'error'); - scope.display_error(M.str.repository.invalidjson+'
'+stripHTML(o.responseText)+'', 'invalidjson') - return; + if (o && o.status && o.status > 0) { + new M.core.exception(e); + return; + } } // error checking if (data && data.error) { - scope.print_msg(data.error, 'error'); - if (args.onerror) { - args.onerror(id,data,p); - } else { - this.fpnode.one('.fp-content').setContent(''); - } + new M.core.ajaxException(data); + this.fpnode.one('.fp-content').setContent(''); return; } else { if (data.msg) { diff --git a/repository/repository_ajax.php b/repository/repository_ajax.php index 1fc51596eef..993f383a8be 100644 --- a/repository/repository_ajax.php +++ b/repository/repository_ajax.php @@ -74,6 +74,8 @@ $repooptions = array( 'ajax' => true, 'mimetypes' => $accepted_types ); + +ajax_capture_output(); $repo = repository::get_repository_by_id($repo_id, $contextid, $repooptions); // Check permissions @@ -127,6 +129,7 @@ switch ($action) { if ($repo->check_login()) { $listing = repository::prepare_listing($repo->get_listing($req_path, $page)); $listing['repo_id'] = $repo_id; + ajax_check_captured_output(); echo json_encode($listing); break; } else { @@ -135,23 +138,27 @@ switch ($action) { case 'login': $listing = $repo->print_login(); $listing['repo_id'] = $repo_id; + ajax_check_captured_output(); echo json_encode($listing); break; case 'logout': $logout = $repo->logout(); $logout['repo_id'] = $repo_id; + ajax_check_captured_output(); echo json_encode($logout); break; case 'searchform': $search_form['repo_id'] = $repo_id; $search_form['form'] = $repo->print_search(); $search_form['allowcaching'] = true; + ajax_check_captured_output(); echo json_encode($search_form); break; case 'search': $search_result = repository::prepare_listing($repo->search($search_text, (int)$page)); $search_result['repo_id'] = $repo_id; $search_result['issearchresult'] = true; + ajax_check_captured_output(); echo json_encode($search_result); break; case 'download': @@ -190,6 +197,7 @@ switch ($action) { $info['file'] = $saveas_filename; $info['type'] = 'link'; $info['url'] = $link; + ajax_check_captured_output(); echo json_encode($info); die; } else { @@ -281,6 +289,7 @@ switch ($action) { // You can cache reository file in this callback // or complete other tasks. $repo->cache_file_by_reference($reference, $storedfile); + ajax_check_captured_output(); echo json_encode($event); die; } else if ($repo->has_moodle_files()) { @@ -291,6 +300,7 @@ switch ($action) { // {@link repository::copy_to_area()}. $fileinfo = $repo->copy_to_area($reference, $record, $maxbytes, $areamaxbytes); + ajax_check_captured_output(); echo json_encode($fileinfo); die; } else { @@ -316,12 +326,14 @@ switch ($action) { $info['e'] = get_string('error', 'moodle'); } } + ajax_check_captured_output(); echo json_encode($info); die; } break; case 'upload': $result = $repo->upload($saveas_filename, $maxbytes); + ajax_check_captured_output(); echo json_encode($result); break; @@ -334,6 +346,7 @@ switch ($action) { $newfilename = required_param('newfilename', PARAM_FILE); $info = repository::overwrite_existing_draftfile($itemid, $filepath, $filename, $newfilepath, $newfilename); + ajax_check_captured_output(); echo json_encode($info); break; @@ -341,6 +354,7 @@ switch ($action) { // delete tmp file $newfilepath = required_param('newfilepath', PARAM_PATH); $newfilename = required_param('newfilename', PARAM_FILE); + ajax_check_captured_output(); echo json_encode(repository::delete_tempfile_from_draft($itemid, $newfilepath, $newfilename)); break;