diff --git a/www/addons/messages/controllers/contacts.js b/www/addons/messages/controllers/contacts.js index c4c1943d468..9621fd660f6 100644 --- a/www/addons/messages/controllers/contacts.js +++ b/www/addons/messages/controllers/contacts.js @@ -21,7 +21,7 @@ angular.module('mm.addons.messages') * @ngdoc controller * @name mmaMessagesContactsCtrl */ -.controller('mmaMessagesContactsCtrl', function($scope, $mmaMessages, $mmSite, $mmUtil, mmUserProfileState) { +.controller('mmaMessagesContactsCtrl', function($scope, $mmaMessages, $mmSite, $mmUtil, $mmApp, mmUserProfileState) { var currentUserId = $mmSite.getUserId(); @@ -52,6 +52,9 @@ angular.module('mm.addons.messages') // too many users! return; } + + $mmApp.closeKeyboard(); + $scope.loaded = false; return $mmaMessages.searchContacts(query).then(function(result) { $scope.hasContacts = result.length > 0; diff --git a/www/addons/messages/controllers/discussion.js b/www/addons/messages/controllers/discussion.js index 5bdb3ba7177..e3d9f9ebdb9 100644 --- a/www/addons/messages/controllers/discussion.js +++ b/www/addons/messages/controllers/discussion.js @@ -102,6 +102,11 @@ angular.module('mm.addons.messages') message.sending = false; notifyNewMessage(); }, function(error) { + + // Only close the keyboard if an error happens, we want the user to be able to send multiple + // messages withoutthe keyboard being closed. + $mmApp.closeKeyboard(); + if (typeof error === 'string') { $mmUtil.showErrorModal(error); } else { diff --git a/www/addons/mod_chat/controllers/chat.js b/www/addons/mod_chat/controllers/chat.js index c1d867d9991..0b3ceda8e08 100644 --- a/www/addons/mod_chat/controllers/chat.js +++ b/www/addons/mod_chat/controllers/chat.js @@ -137,6 +137,10 @@ angular.module('mm.addons.mod_chat') $scope.newMessage.text = ''; } }, function(error) { + // Only close the keyboard if an error happens, we want the user to be able to send multiple + // messages withoutthe keyboard being closed. + $mmApp.closeKeyboard(); + showError(error); }); }; diff --git a/www/addons/notes/services/handlers.js b/www/addons/notes/services/handlers.js index 1b13b6ecb5d..046a635dbf8 100644 --- a/www/addons/notes/services/handlers.js +++ b/www/addons/notes/services/handlers.js @@ -23,7 +23,7 @@ angular.module('mm.addons.notes') * @ngdoc service * @name $mmaNotesHandlers */ -.factory('$mmaNotesHandlers', function($mmaNotes, $mmSite, $translate, $ionicLoading, $ionicModal, $mmUtil) { +.factory('$mmaNotesHandlers', function($mmaNotes, $mmSite, $mmApp, $ionicModal, $mmUtil) { var self = {}; @@ -92,6 +92,9 @@ angular.module('mm.addons.notes') }; $scope.addNote = function(){ + + $mmApp.closeKeyboard(); + var loadingModal = $mmUtil.showModalLoading('mm.core.sending', true); // Freeze the add note button. $scope.processing = true; diff --git a/www/core/components/login/controllers/credentials.js b/www/core/components/login/controllers/credentials.js index dc59a8215db..ac7499fbd6a 100644 --- a/www/core/components/login/controllers/credentials.js +++ b/www/core/components/login/controllers/credentials.js @@ -21,13 +21,15 @@ angular.module('mm.core.login') * @ngdoc controller * @name mmLoginCredentialsCtrl */ -.controller('mmLoginCredentialsCtrl', function($scope, $state, $stateParams, $mmSitesManager, $mmUtil, $ionicHistory) { +.controller('mmLoginCredentialsCtrl', function($scope, $state, $stateParams, $mmSitesManager, $mmUtil, $ionicHistory, $mmApp) { $scope.siteurl = $stateParams.siteurl; $scope.credentials = {}; $scope.login = function() { + $mmApp.closeKeyboard(); + // Get input data. var siteurl = $scope.siteurl, username = $scope.credentials.username, diff --git a/www/core/components/login/controllers/reconnect.js b/www/core/components/login/controllers/reconnect.js index e3504eaa299..cefe6525bc3 100644 --- a/www/core/components/login/controllers/reconnect.js +++ b/www/core/components/login/controllers/reconnect.js @@ -21,7 +21,7 @@ angular.module('mm.core.login') * @ngdoc controller * @name mmLoginReconnectCtrl */ -.controller('mmLoginReconnectCtrl', function($scope, $state, $stateParams, $mmSitesManager, $mmSite, $mmUtil, $ionicHistory) { +.controller('mmLoginReconnectCtrl', function($scope, $state, $stateParams, $mmSitesManager, $mmApp, $mmUtil, $ionicHistory) { var infositeurl = $stateParams.infositeurl; // Siteurl in site info. It might be different than siteurl (http/https). $scope.siteurl = $stateParams.siteurl; @@ -42,6 +42,8 @@ angular.module('mm.core.login') $scope.login = function() { + $mmApp.closeKeyboard(); + // Get input data. var siteurl = $scope.siteurl, username = $scope.credentials.username, diff --git a/www/core/components/login/controllers/site.js b/www/core/components/login/controllers/site.js index b04f7837a95..e95de69f43a 100644 --- a/www/core/components/login/controllers/site.js +++ b/www/core/components/login/controllers/site.js @@ -21,7 +21,7 @@ angular.module('mm.core.login') * @ngdoc controller * @name mmLoginSiteCtrl */ -.controller('mmLoginSiteCtrl', function($scope, $state, $mmSitesManager, $mmUtil, $translate, $ionicHistory, +.controller('mmLoginSiteCtrl', function($scope, $state, $mmSitesManager, $mmUtil, $translate, $ionicHistory, $mmApp, $ionicModal, $mmLoginHelper) { $scope.siteurl = ''; @@ -45,6 +45,8 @@ angular.module('mm.core.login') $scope.connect = function(url) { + $mmApp.closeKeyboard(); + if (!url) { $mmUtil.showErrorModal('mm.login.siteurlrequired', true); return; diff --git a/www/core/lib/app.js b/www/core/lib/app.js index c290b6f48d5..bcad62758d9 100644 --- a/www/core/lib/app.js +++ b/www/core/lib/app.js @@ -111,6 +111,19 @@ angular.module('mm.core') $stateProvider.state(name, config); }; + /** + * Closes the keyboard if plugin is available. + * + * @return {Boolean} True if plugin is available, false otherwise. + */ + self.closeKeyboard = function() { + if (cordova && cordova.plugins && cordova.plugins.Keyboard && cordova.plugins.Keyboard.close) { + cordova.plugins.Keyboard.close(); + return true; + } + return false; + }; + /** * Get the application global database. * @return {Object} App's DB.