Skip to content

Commit ae433c2

Browse files
authored
Merge pull request #888 from crazyserver/MOBILE-1930
MOBILE-1930 resource: Open files from course section when downloaded
2 parents 1f29b3a + 729e41a commit ae433c2

File tree

3 files changed

+80
-27
lines changed

3 files changed

+80
-27
lines changed

www/addons/mod/resource/controllers/index.js

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ angular.module('mm.addons.mod_resource')
2222
* @name mmaModResourceIndexCtrl
2323
*/
2424
.controller('mmaModResourceIndexCtrl', function($scope, $stateParams, $mmUtil, $mmaModResource, $log, $mmApp, $mmCourse, $timeout,
25-
$mmText, $translate, mmaModResourceComponent, $mmaModResourcePrefetchHandler, $mmCourseHelper) {
25+
$mmText, $translate, mmaModResourceComponent, $mmaModResourcePrefetchHandler, $mmCourseHelper, $mmaModResourceHelper) {
2626
$log = $log.getInstance('mmaModResourceIndexCtrl');
2727

2828
var module = $stateParams.module || {},
@@ -74,21 +74,7 @@ angular.module('mm.addons.mod_resource')
7474
$scope.mode = 'external';
7575

7676
$scope.open = function() {
77-
var modal = $mmUtil.showModalLoading();
78-
79-
$mmaModResource.openFile(module.contents, module.id).then(function() {
80-
$mmaModResource.logView(module.instance).then(function() {
81-
$mmCourse.checkModuleCompletion(courseId, module.completionstatus);
82-
});
83-
}).catch(function(error) {
84-
if (error && typeof error == 'string') {
85-
$mmUtil.showErrorModal(error);
86-
} else {
87-
$mmUtil.showErrorModal('mma.mod_resource.errorwhileloadingthecontent', true);
88-
}
89-
}).finally(function() {
90-
modal.dismiss();
91-
});
77+
$mmaModResourceHelper.openFile(module, courseId);
9278
};
9379
}
9480
}).then(function() {

www/addons/mod/resource/services/handlers.js

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@ angular.module('mm.addons.mod_resource')
2121
* @ngdoc service
2222
* @name $mmaModResourceHandlers
2323
*/
24-
.factory('$mmaModResourceHandlers', function($mmCourse, $mmaModResource, $mmEvents, $state, $mmSite, $mmCourseHelper,
25-
$mmCoursePrefetchDelegate, $mmUtil, $mmFS, mmCoreDownloading, mmCoreNotDownloaded, mmCoreOutdated,
26-
mmCoreEventPackageStatusChanged, mmaModResourceComponent, $q, $mmContentLinksHelper, $mmaModResourcePrefetchHandler) {
24+
.factory('$mmaModResourceHandlers', function($mmCourse, $mmaModResource, $mmEvents, $state, $mmSite, $mmCourseHelper, $mmUtil,
25+
$mmCoursePrefetchDelegate, $mmFS, mmCoreDownloading, mmCoreNotDownloaded, mmCoreOutdated, $mmaModResourceHelper,
26+
mmCoreEventPackageStatusChanged, mmaModResourceComponent, $q, $mmContentLinksHelper, $mmaModResourcePrefetchHandler,
27+
mmCoreDownloaded) {
2728
var self = {};
2829

2930
/**
@@ -56,7 +57,8 @@ angular.module('mm.addons.mod_resource')
5657
self.getController = function(module, courseId) {
5758
return function($scope) {
5859
var downloadBtn,
59-
refreshBtn;
60+
refreshBtn,
61+
openBtn;
6062

6163
downloadBtn = {
6264
hidden: true,
@@ -80,9 +82,20 @@ angular.module('mm.addons.mod_resource')
8082
}
8183
};
8284

85+
openBtn = {
86+
hidden: true,
87+
icon: 'ion-document',
88+
label: 'mma.mod_resource.openthefile',
89+
action: function(e) {
90+
e.preventDefault();
91+
e.stopPropagation();
92+
$mmaModResourceHelper.openFile(module, courseId);
93+
}
94+
};
95+
8396
$scope.title = module.name;
8497
$scope.class = 'mma-mod_resource-handler';
85-
$scope.buttons = [downloadBtn, refreshBtn];
98+
$scope.buttons = [downloadBtn, refreshBtn, openBtn];
8699
$scope.spinner = true; // Show spinner while calculating status.
87100

88101
// Show resource icon while calculating the right icon to show.
@@ -111,12 +124,14 @@ angular.module('mm.addons.mod_resource')
111124

112125
function download(refresh) {
113126
var dwnBtnHidden = downloadBtn.hidden,
114-
rfrshBtnHidden = refreshBtn.hidden;
127+
rfrshBtnHidden = refreshBtn.hidden,
128+
openBtnHidden = openBtn.hidden;
115129

116130
// Show spinner since this operation might take a while.
117131
$scope.spinner = true;
118132
downloadBtn.hidden = true;
119133
refreshBtn.hidden = true;
134+
openBtn.hidden = true;
120135

121136
// Get download size to ask for confirm if it's high.
122137
$mmaModResourcePrefetchHandler.getDownloadSize(module, courseId).then(function(size) {
@@ -126,18 +141,16 @@ angular.module('mm.addons.mod_resource')
126141
$scope.spinner = false;
127142
downloadBtn.hidden = dwnBtnHidden;
128143
refreshBtn.hidden = rfrshBtnHidden;
144+
openBtn.hidden = openBtnHidden;
129145
});
130146
}).catch(function(error) {
131147
// Error, leave the buttons as they were.
132148
$scope.spinner = false;
133149
downloadBtn.hidden = dwnBtnHidden;
134150
refreshBtn.hidden = rfrshBtnHidden;
151+
openBtn.hidden = openBtnHidden;
135152

136-
if (error) {
137-
$mmUtil.showErrorModal(error);
138-
} else {
139-
$mmUtil.showErrorModal('mm.core.errordownloading', true);
140-
}
153+
$mmUtil.showErrorModalDefault(error, 'mm.core.errordownloading', true);
141154
});
142155
}
143156

@@ -147,6 +160,7 @@ angular.module('mm.addons.mod_resource')
147160
$scope.spinner = status === mmCoreDownloading;
148161
downloadBtn.hidden = status !== mmCoreNotDownloaded;
149162
refreshBtn.hidden = status !== mmCoreOutdated;
163+
openBtn.hidden = status !== mmCoreDownloaded || $mmaModResource.isDisplayedInIframe(module);
150164
}
151165
}
152166

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
// (C) Copyright 2015 Martin Dougiamas
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
angular.module('mm.addons.mod_resource')
16+
17+
/**
18+
* Helper to gather some common resouce functions.
19+
*
20+
* @module mm.addons.mod_resource
21+
* @ngdoc service
22+
* @name $mmaModResourceHelper
23+
*/
24+
.factory('$mmaModResourceHelper', function($mmUtil, $mmaModResource, $mmCourse) {
25+
26+
var self = {};
27+
28+
/**
29+
* Opens a file of the resource activity.
30+
*
31+
* @module mm.addons.mod_resource
32+
* @ngdoc method
33+
* @name $mmaModResourceHelper#openFile
34+
* @param {String} module Module where to get the contents.
35+
* @param {String} courseId Course Id, used for completion purposes.
36+
* @return {Promise} Resolved when done.
37+
*/
38+
self.openFile = function(module, courseId) {
39+
var modal = $mmUtil.showModalLoading();
40+
41+
return $mmaModResource.openFile(module.contents, module.id).then(function() {
42+
$mmaModResource.logView(module.instance).then(function() {
43+
$mmCourse.checkModuleCompletion(courseId, module.completionstatus);
44+
});
45+
}).catch(function(error) {
46+
$mmUtil.showErrorModalDefault(error, 'mma.mod_resource.errorwhileloadingthecontent', true);
47+
}).finally(function() {
48+
modal.dismiss();
49+
});
50+
};
51+
52+
return self;
53+
});

0 commit comments

Comments
 (0)