Skip to content

Commit fb4c1d8

Browse files
committed
Merge pull request #366 from dpalou/MOBILE-1357
Mobile 1357
2 parents 7b097f9 + a7e4302 commit fb4c1d8

File tree

23 files changed

+766
-142
lines changed

23 files changed

+766
-142
lines changed

www/addons/grades/main.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ angular.module('mm.addons.grades', [])
1717
.constant('mmaGradesPriority', 400)
1818
.constant('mmaGradesViewGradesPriority', 400)
1919

20-
.config(function($stateProvider, $mmUserDelegateProvider, $mmCoursesDelegateProvider, mmaGradesPriority, mmaGradesViewGradesPriority) {
20+
.config(function($stateProvider, $mmUserDelegateProvider, $mmCoursesDelegateProvider, $mmContentLinksDelegateProvider,
21+
mmaGradesPriority, mmaGradesViewGradesPriority) {
2122

2223
$stateProvider
2324

@@ -41,4 +42,7 @@ angular.module('mm.addons.grades', [])
4142

4243
// Register courses content plugin.
4344
$mmCoursesDelegateProvider.registerNavHandler('mmaGrades', '$mmaGradesHandlers.coursesNav', mmaGradesPriority);
45+
46+
// Register content links handler.
47+
$mmContentLinksDelegateProvider.registerLinkHandler('mmaGrades', '$mmaGradesHandlers.linksHandler');
4448
});

www/addons/grades/services/handlers.js

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ angular.module('mm.addons.grades')
2121
* @ngdoc service
2222
* @name $mmaGradesHandlers
2323
*/
24-
.factory('$mmaGradesHandlers', function($mmaGrades, $state, mmCoursesAccessMethods) {
24+
.factory('$mmaGradesHandlers', function($mmaGrades, $state, $mmUtil, $mmContentLinksHelper, mmCoursesAccessMethods) {
2525

2626
var self = {};
2727

@@ -155,5 +155,56 @@ angular.module('mm.addons.grades')
155155
return self;
156156
};
157157

158+
/**
159+
* Content links handler.
160+
*
161+
* @module mm.addons.grades
162+
* @ngdoc method
163+
* @name $mmaGradesHandlers#linksHandler
164+
*/
165+
self.linksHandler = function() {
166+
167+
var self = {};
168+
169+
/**
170+
* Whether or not the handler is enabled for the site.
171+
*
172+
* @return {Boolean}
173+
*/
174+
self.isEnabled = function() {
175+
return $mmaGrades.isPluginEnabled();
176+
};
177+
178+
/**
179+
* Get actions to perform with the link.
180+
*
181+
* @param {String} url URL to treat.
182+
* @return {Object[]} List of actions. See {@link $mmContentLinksDelegate#registerLinkHandler}.
183+
*/
184+
self.getActions = function(url) {
185+
// Check it's a grade URL.
186+
if (url.indexOf('/grade/report/user/index.php') > -1) {
187+
var params = $mmUtil.extractUrlParams(url);
188+
if (typeof params.id != 'undefined') {
189+
// Return actions.
190+
return [{
191+
message: 'mm.core.view',
192+
icon: 'ion-eye',
193+
action: function(siteId) {
194+
var stateParams = {
195+
course: {id: parseInt(params.id, 10)},
196+
userid: parseInt(params.userid, 10)
197+
};
198+
$mmContentLinksHelper.goInSite('site.grades', stateParams, siteId);
199+
}
200+
}];
201+
}
202+
}
203+
return [];
204+
};
205+
206+
return self;
207+
};
208+
158209
return self;
159210
});

www/addons/messages/controllers/discussion.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ angular.module('mm.addons.messages')
2323
*/
2424
.controller('mmaMessagesDiscussionCtrl', function($scope, $stateParams, $mmApp, $mmaMessages, $mmSite, $timeout, $mmEvents, $window,
2525
$ionicScrollDelegate, mmUserProfileState, $mmUtil, mmaMessagesPollInterval, $interval, $log, $ionicHistory, $ionicPlatform,
26-
mmCoreEventKeyboardShow, mmCoreEventKeyboardHide, mmaMessagesDiscussionLoadedEvent, mmaMessagesDiscussionLeftEvent) {
26+
mmCoreEventKeyboardShow, mmCoreEventKeyboardHide, mmaMessagesDiscussionLoadedEvent, mmaMessagesDiscussionLeftEvent,
27+
$mmUser) {
2728

2829
$log = $log.getInstance('mmaMessagesDiscussionCtrl');
2930

@@ -43,6 +44,13 @@ angular.module('mm.addons.messages')
4344

4445
if (userFullname) {
4546
$scope.title = userFullname;
47+
} else if (userId) {
48+
// We don't have the fullname, try to get it.
49+
$mmUser.getProfile(userId).then(function(user) {
50+
if (!$scope.title) {
51+
$scope.title = user.fullname;
52+
}
53+
});
4654
}
4755

4856
// Disable the profile button if we're coming from a profile. It is safer to prevent forbid the access

www/addons/messages/main.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ angular.module('mm.addons.messages', ['mm.core'])
2424
.constant('mmaMessagesNewMessageEvent', 'mma-messages_new_message')
2525

2626
.config(function($stateProvider, $mmUserDelegateProvider, $mmSideMenuDelegateProvider, mmaMessagesSendMessagePriority,
27-
mmaMessagesAddContactPriority, mmaMessagesBlockContactPriority, mmaMessagesPriority) {
27+
mmaMessagesAddContactPriority, mmaMessagesBlockContactPriority, mmaMessagesPriority, $mmContentLinksDelegateProvider) {
2828

2929
$stateProvider
3030

@@ -59,6 +59,9 @@ angular.module('mm.addons.messages', ['mm.core'])
5959
$mmUserDelegateProvider.registerProfileHandler('mmaMessages:sendMessage', '$mmaMessagesHandlers.sendMessage', mmaMessagesSendMessagePriority);
6060
$mmUserDelegateProvider.registerProfileHandler('mmaMessages:addContact', '$mmaMessagesHandlers.addContact', mmaMessagesAddContactPriority);
6161
$mmUserDelegateProvider.registerProfileHandler('mmaMessages:blockContact', '$mmaMessagesHandlers.blockContact', mmaMessagesBlockContactPriority);
62+
63+
// Register content links handler.
64+
$mmContentLinksDelegateProvider.registerLinkHandler('mmaMessages', '$mmaMessagesHandlers.linksHandler');
6265
})
6366

6467
.run(function($mmaMessages, $mmEvents, $state, $mmAddonManager, $mmUtil, mmCoreEventLogin) {

www/addons/messages/services/handlers.js

Lines changed: 76 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ angular.module('mm.addons.messages')
2323
* @ngdoc service
2424
* @name $mmaMessagesHandlers
2525
*/
26-
.factory('$mmaMessagesHandlers', function($log, $mmaMessages, $mmSite, $state, $mmUtil) {
26+
.factory('$mmaMessagesHandlers', function($log, $mmaMessages, $mmSite, $state, $mmUtil, $mmContentLinksHelper) {
2727
$log = $log.getInstance('$mmaMessagesHandlers');
2828

2929
var self = {};
@@ -281,5 +281,80 @@ angular.module('mm.addons.messages')
281281
return self;
282282
};
283283

284+
/**
285+
* Content links handler.
286+
*
287+
* @module mm.addons.messages
288+
* @ngdoc method
289+
* @name $mmaMessagesHandlers#linksHandler
290+
*/
291+
self.linksHandler = function() {
292+
293+
var self = {};
294+
295+
/**
296+
* Whether or not the handler is enabled for the site.
297+
*
298+
* @return {Boolean}
299+
*/
300+
self.isEnabled = function() {
301+
return $mmaMessages.isPluginEnabled();
302+
};
303+
304+
/**
305+
* Get actions to perform with the link.
306+
*
307+
* @param {String} url URL to treat.
308+
* @return {Object[]} List of actions. See {@link $mmContentLinksDelegate#registerLinkHandler}.
309+
*/
310+
self.getActions = function(url) {
311+
// Check it's a messages URL.
312+
if (url.indexOf('/message/index.php') > -1) {
313+
var params = $mmUtil.extractUrlParams(url);
314+
// Return actions.
315+
return [{
316+
message: 'mm.core.view',
317+
icon: 'ion-eye',
318+
action: function(siteId) {
319+
var stateName,
320+
stateParams;
321+
322+
if (typeof params.user1 != 'undefined' && typeof params.user2 != 'undefined') {
323+
// Check if the current user is in the conversation.
324+
if ($mmSite.getUserId() == params.user1) {
325+
stateName = 'site.messages-discussion';
326+
stateParams = {userId: parseInt(params.user2, 10)};
327+
} else if ($mmSite.getUserId() == params.user2) {
328+
stateName = 'site.messages-discussion';
329+
stateParams = {userId: parseInt(params.user1, 10)};
330+
} else {
331+
// He isn't, open in browser.
332+
$mmUtil.openInBrowser(url);
333+
return;
334+
}
335+
} else if (typeof params.id != 'undefined') {
336+
stateName = 'site.messages-discussion';
337+
stateParams = {userId: parseInt(params.id, 10)};
338+
}
339+
340+
if (!stateName) {
341+
// Go to messaging index page. We use redirect state to view the side menu.
342+
$state.go('redirect', {
343+
siteid: siteId,
344+
state: 'site.messages',
345+
params: {}
346+
});
347+
} else {
348+
$mmContentLinksHelper.goInSite(stateName, stateParams, siteId);
349+
}
350+
}
351+
}];
352+
}
353+
return [];
354+
};
355+
356+
return self;
357+
};
358+
284359
return self;
285360
});

www/addons/participants/main.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ angular.module('mm.addons.participants', [])
1717
.constant('mmaParticipantsListLimit', 50) // Max of participants to retrieve in each WS call.
1818
.constant('mmaParticipantsPriority', 600)
1919

20-
.config(function($stateProvider, $mmCoursesDelegateProvider, mmaParticipantsPriority) {
20+
.config(function($stateProvider, $mmCoursesDelegateProvider, $mmContentLinksDelegateProvider, mmaParticipantsPriority) {
2121

2222
$stateProvider
2323
.state('site.participants', {
@@ -33,6 +33,10 @@ angular.module('mm.addons.participants', [])
3333
}
3434
});
3535

36-
$mmCoursesDelegateProvider.registerNavHandler('mmaParticipants', '$mmaParticipantsCoursesNavHandler', mmaParticipantsPriority);
36+
$mmCoursesDelegateProvider.registerNavHandler('mmaParticipants', '$mmaParticipantsHandlers.coursesNavHandler',
37+
mmaParticipantsPriority);
38+
39+
// Register content links handler.
40+
$mmContentLinksDelegateProvider.registerLinkHandler('mmaParticipants', '$mmaParticipantsHandlers.linksHandler');
3741

3842
});

www/addons/participants/services/courses_nav_handler.js

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

0 commit comments

Comments
 (0)