From 428c1124b479fe3baa51804ebb361d0a72c654d8 Mon Sep 17 00:00:00 2001 From: Dani Palou Date: Wed, 10 Feb 2016 10:41:56 +0100 Subject: [PATCH 1/2] MOBILE-1412 resource: Fix object object error message --- www/addons/mod_resource/controllers/index.js | 2 +- www/core/lib/util.js | 25 +++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/www/addons/mod_resource/controllers/index.js b/www/addons/mod_resource/controllers/index.js index 07ae6f430a5..6b6636a5167 100644 --- a/www/addons/mod_resource/controllers/index.js +++ b/www/addons/mod_resource/controllers/index.js @@ -104,7 +104,7 @@ angular.module('mm.addons.mod_resource') $mmCourse.checkModuleCompletion(courseid, module.completionstatus); }); }).catch(function(error) { - if (error) { + if (error && typeof error == 'string') { $mmUtil.showErrorModal(error); } else { $mmUtil.showErrorModal('mma.mod_resource.errorwhileloadingthecontent', true); diff --git a/www/core/lib/util.js b/www/core/lib/util.js index f05d6ea596c..13ec86ae03f 100644 --- a/www/core/lib/util.js +++ b/www/core/lib/util.js @@ -457,7 +457,30 @@ angular.module('mm.core') */ self.showErrorModal = function(errorMessage, needsTranslate, autocloseTime) { var errorKey = 'mm.core.error', - langKeys = [errorKey]; + langKeys = [errorKey], + matches; + + if (angular.isObject(errorMessage)) { + // We received an object instead of a string. Search for common properties. + if (typeof errorMessage.content != 'undefined') { + errorMessage = errorMessage.content; + } else if (typeof errorMessage.body != 'undefined') { + errorMessage = errorMessage.body; + } else if (typeof errorMessage.message != 'undefined') { + errorMessage = errorMessage.message; + } else if (typeof errorMessage.error != 'undefined') { + errorMessage = errorMessage.error; + } else { + // No common properties found, just stringify it. + errorMessage = JSON.stringify(errorMessage); + } + + // Try to remove tokens from the contents. + matches = errorMessage.match(/token"?[=|:]"?(\w*)/, ''); + if (matches && matches[1]) { + errorMessage = errorMessage.replace(new RegExp(matches[1], 'g'), 'secret'); + } + } if (needsTranslate) { langKeys.push(errorMessage); From 34a1aee5e31fe71c1dae64146fc1515689fd15e9 Mon Sep 17 00:00:00 2001 From: Dani Palou Date: Wed, 10 Feb 2016 11:03:58 +0100 Subject: [PATCH 2/2] MOBILE-1412 resource: Update package status when opening file --- www/addons/mod_resource/controllers/index.js | 4 ++-- www/addons/mod_resource/services/resource.js | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/www/addons/mod_resource/controllers/index.js b/www/addons/mod_resource/controllers/index.js index 6b6636a5167..c4f480a10cd 100644 --- a/www/addons/mod_resource/controllers/index.js +++ b/www/addons/mod_resource/controllers/index.js @@ -71,7 +71,7 @@ angular.module('mm.addons.mod_resource') }); } else if ($mmaModResource.isDisplayedInline(module)) { var downloadFailed = false; - $mmaModResource.downloadAllContent(module).catch(function(err) { + return $mmaModResource.downloadAllContent(module).catch(function(err) { // Mark download as failed but go on since the main files could have been downloaded. downloadFailed = true; }).finally(function() { @@ -97,7 +97,7 @@ angular.module('mm.addons.mod_resource') $scope.mode = 'external'; $scope.open = function() { - var modal = $mmUtil.showModalLoading('mm.core.downloading', true); + var modal = $mmUtil.showModalLoading(); $mmaModResource.openFile(module.contents, module.id).then(function() { $mmaModResource.logView(module.instance).then(function() { diff --git a/www/addons/mod_resource/services/resource.js b/www/addons/mod_resource/services/resource.js index fdd4bab796f..430c38a74ac 100644 --- a/www/addons/mod_resource/services/resource.js +++ b/www/addons/mod_resource/services/resource.js @@ -374,12 +374,17 @@ angular.module('mm.addons.mod_resource') return $q.reject(); } - var url = contents[0].fileurl, + var files = [contents[0]], + siteId = $mmSite.getId(), + revision = $mmFilepool.getRevisionFromFileList(files), + timeMod = $mmFilepool.getTimemodifiedFromFileList(files), promise; if ($mmFS.isAvailable()) { // The file system is available. - promise = $mmFilepool.downloadUrl($mmSite.getId(), url, false, mmaModResourceComponent, moduleId); + promise = $mmFilepool.downloadPackage(siteId, files, mmaModResourceComponent, moduleId, revision, timeMod).then(function() { + return $mmFilepool.getUrlByUrl(siteId, contents[0].fileurl, mmaModResourceComponent, moduleId, timeMod); + }); } else { // We use the live URL. promise = $q.when($mmSite.fixPluginfileURL(url));