Skip to content

Commit 4f49826

Browse files
committed
MOBILE-1158 contentlinks: Implement handlers for all modules
1 parent c3b4dab commit 4f49826

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+2418
-1438
lines changed

www/addons/mod_assign/services/assign.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ angular.module('mm.addons.mod_assign')
2121
* @ngdoc controller
2222
* @name $mmaModAssign
2323
*/
24-
.factory('$mmaModAssign', function($mmSite, $q, $mmUser) {
24+
.factory('$mmaModAssign', function($mmSite, $q, $mmUser, $mmSitesManager) {
2525
var self = {};
2626

2727
/**
@@ -179,15 +179,20 @@ angular.module('mm.addons.mod_assign')
179179
};
180180

181181
/**
182-
* Check if assignments plugin is enabled.
182+
* Check if assignments plugin is enabled in a certain site.
183183
*
184184
* @module mm.addons.mod_assign
185185
* @ngdoc method
186186
* @name $mmaModAssign#isPluginEnabled
187-
* @return {Boolean} True if plugin is enabled, false otherwise.
187+
* @param {String} [siteId] Site ID. If not defined, current site.
188+
* @return {Promise} Promise resolved with true if plugin is enabled, rejected or resolved with false otherwise.
188189
*/
189-
self.isPluginEnabled = function() {
190-
return $mmSite.wsAvailable('mod_assign_get_assignments') && $mmSite.wsAvailable('mod_assign_get_submissions');
190+
self.isPluginEnabled = function(siteId) {
191+
siteId = siteId || $mmSite.getId();
192+
193+
return $mmSitesManager.getSite(siteId).then(function(site) {
194+
return site.wsAvailable('mod_assign_get_assignments') && site.wsAvailable('mod_assign_get_submissions');
195+
});
191196
};
192197

193198
return self;

www/addons/mod_assign/services/handlers.js

Lines changed: 27 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ angular.module('mm.addons.mod_assign')
2121
* @ngdoc service
2222
* @name $mmaModAssignHandlers
2323
*/
24-
.factory('$mmaModAssignHandlers', function($mmCourse, $mmaModAssign, $state, $mmSite) {
24+
.factory('$mmaModAssignHandlers', function($mmCourse, $mmaModAssign, $state, $q, $mmContentLinksHelper) {
2525
var self = {};
2626

2727
/**
@@ -38,7 +38,7 @@ angular.module('mm.addons.mod_assign')
3838
/**
3939
* Whether or not the handler is enabled for the site.
4040
*
41-
* @return {Boolean}
41+
* @return {Promise}
4242
*/
4343
self.isEnabled = function() {
4444
return $mmaModAssign.isPluginEnabled();
@@ -56,8 +56,10 @@ angular.module('mm.addons.mod_assign')
5656
$scope.title = module.name;
5757
$scope.icon = $mmCourse.getModuleIconSrc('assign');
5858
$scope.action = function(e) {
59-
e.preventDefault();
60-
e.stopPropagation();
59+
if (e) {
60+
e.preventDefault();
61+
e.stopPropagation();
62+
}
6163
$state.go('site.mod_assign', {module: module, courseid: courseid});
6264
};
6365
};
@@ -78,40 +80,36 @@ angular.module('mm.addons.mod_assign')
7880
var self = {};
7981

8082
/**
81-
* Whether or not the handler is enabled for the site.
83+
* Whether or not the handler is enabled for a certain site.
8284
*
83-
* @return {Boolean}
85+
* @param {String} siteId Site ID.
86+
* @param {Number} [courseId] Course ID related to the URL.
87+
* @return {Promise} Promise resolved with true if enabled.
8488
*/
85-
self.isEnabled = function() {
86-
return $mmaModAssign.isPluginEnabled();
87-
};
89+
function isEnabled(siteId, courseId) {
90+
return $mmaModAssign.isPluginEnabled(siteId).then(function(enabled) {
91+
if (!enabled) {
92+
return false;
93+
}
94+
return courseId || $mmCourse.canGetModuleWithoutCourseId(siteId);
95+
});
96+
}
8897

8998
/**
9099
* Get actions to perform with the link.
91100
*
101+
* @param {String[]} siteIds Site IDs the URL belongs to.
92102
* @param {String} url URL to treat.
93-
* @param {Number} [courseid] Course ID related to the URL.
94-
* @return {Object[]} List of actions. See {@link $mmContentLinksDelegate#registerLinkHandler}.
103+
* @param {Number} [courseId] Course ID related to the URL.
104+
* @return {Promise} Promise resolved with the list of actions.
105+
* See {@link $mmContentLinksDelegate#registerLinkHandler}.
95106
*/
96-
self.getActions = function(url, courseid) {
97-
// Check it's an assign URL from the current site.
98-
if (courseid && $mmSite.containsUrl(url) && url.indexOf('/mod/assign/') > -1) {
99-
var matches = url.match(/view\.php\?id=(\d*)/); // Get assignment ID.
100-
if (matches && typeof matches[1] != 'undefined') {
101-
// Return actions.
102-
return [{
103-
message: 'mm.core.view',
104-
icon: 'ion-eye',
105-
action: function() {
106-
$state.go('site.mod_assign', {
107-
courseid: courseid,
108-
module: {id: matches[1]}
109-
});
110-
}
111-
}];
112-
}
107+
self.getActions = function(siteIds, url, courseId) {
108+
// Check it's an assign URL.
109+
if (url.indexOf('/mod/assign/view.php') > -1) {
110+
return $mmContentLinksHelper.treatModuleIndexUrl(siteIds, url, isEnabled, courseId);
113111
}
114-
return [];
112+
return $q.when([]);
115113
};
116114

117115
return self;

www/addons/mod_book/main.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ angular.module('mm.addons.mod_book', ['mm.core'])
3636

3737
})
3838

39-
.config(function($mmCourseDelegateProvider, $mmCoursePrefetchDelegateProvider) {
40-
$mmCourseDelegateProvider.registerContentHandler('mmaModBook', 'book', '$mmaModBookCourseContentHandler');
39+
.config(function($mmCourseDelegateProvider, $mmCoursePrefetchDelegateProvider, $mmContentLinksDelegateProvider) {
40+
$mmCourseDelegateProvider.registerContentHandler('mmaModBook', 'book', '$mmaModBookHandlers.courseContentHandler');
4141
$mmCoursePrefetchDelegateProvider.registerPrefetchHandler('mmaModBook', 'book', '$mmaModBookPrefetchHandler');
42+
43+
// Register content links handler.
44+
$mmContentLinksDelegateProvider.registerLinkHandler('mmaModBook', '$mmaModBookHandlers.linksHandler');
4245
});

www/addons/mod_book/services/book.js

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ angular.module('mm.addons.mod_book')
2121
* @ngdoc service
2222
* @name $mmaModBook
2323
*/
24-
.factory('$mmaModBook', function($mmFilepool, $mmSite, $mmFS, $http, $log, $q, mmaModBookComponent) {
24+
.factory('$mmaModBook', function($mmFilepool, $mmSite, $mmFS, $http, $log, $q, $mmSitesManager, mmaModBookComponent) {
2525
$log = $log.getInstance('$mmaModBook');
2626

2727
var self = {};
@@ -339,12 +339,17 @@ angular.module('mm.addons.mod_book')
339339
* @module mm.addons.mod_book
340340
* @ngdoc method
341341
* @name $mmaModBook#isPluginEnabled
342-
* @return {Boolean} True if plugin is enabled, false otherwise.
342+
* @param {String} [siteId] Site ID. If not defined, current site.
343+
* @return {Promise} Promise resolved with true if plugin is enabled, rejected or resolved with false otherwise.
343344
*/
344-
self.isPluginEnabled = function() {
345-
var version = $mmSite.getInfo().version;
346-
// Require Moodle 2.9.
347-
return version && (parseInt(version) >= 2015051100) && $mmSite.canDownloadFiles();
345+
self.isPluginEnabled = function(siteId) {
346+
siteId = siteId || $mmSite.getId();
347+
348+
return $mmSitesManager.getSite(siteId).then(function(site) {
349+
var version = site.getInfo().version;
350+
// Require Moodle 2.9.
351+
return version && (parseInt(version) >= 2015051100) && site.canDownloadFiles();
352+
});
348353
};
349354

350355
/**

www/addons/mod_book/services/course_content_handler.js

Lines changed: 0 additions & 130 deletions
This file was deleted.

0 commit comments

Comments
 (0)