diff --git a/lang/en/local_moodlemobileapp.php b/lang/en/local_moodlemobileapp.php
index f0732242..a434e65f 100644
--- a/lang/en/local_moodlemobileapp.php
+++ b/lang/en/local_moodlemobileapp.php
@@ -63,8 +63,10 @@
$string['mm.core.completion-alt-manual-n'] = 'Not completed: {{$a}}. Select to mark as complete.';
$string['mm.core.completion-alt-manual-y'] = 'Completed: {{$a}}. Select to mark as not complete.';
$string['mm.core.confirmcanceledit'] = 'Are you sure you want to leave this page? All changes will be lost.';
+$string['mm.core.confirmloss'] = 'Are you sure? All changes will be lost.';
$string['mm.core.confirmopeninbrowser'] = 'Do you want to open it in browser?';
$string['mm.core.contenteditingsynced'] = 'The content you are editing has been synced.';
+$string['mm.core.copiedtoclipboard'] = 'Text copied to clipboard';
$string['mm.core.currentdevice'] = 'Current device';
$string['mm.core.datastoredoffline'] = 'Data stored in the device because it couldn\'t be sent. It will automatically be sent later.';
$string['mm.core.deleting'] = 'Deleting';
@@ -84,12 +86,14 @@
$string['mm.core.errorfileexistssamename'] = 'There\'s already a file with this name.';
$string['mm.core.errorinvalidform'] = 'The form contains invalid data. Please make sure to fill all required fields and that the data is valid.';
$string['mm.core.errorinvalidresponse'] = 'Invalid response received. Please contact your Moodle site administrator if the error persists.';
+$string['mm.core.errorloadingcontent'] = 'Error loading content.';
$string['mm.core.erroropenfilenoapp'] = 'Error opening the file: no app found to open this kind of file.';
$string['mm.core.erroropenfilenoextension'] = 'Error opening the file: the file doesn\'t have extension.';
$string['mm.core.erroropenpopup'] = 'This activity is trying to open a popup. This is not supported in this app.';
$string['mm.core.errorrenamefile'] = 'Error renaming the file. Please try again.';
$string['mm.core.errorsync'] = 'An error occurred while synchronizing. Please try again.';
$string['mm.core.errorsyncblocked'] = 'This {{$a}} cannot be synchronized right now because of an ongoing process. Please try again later. If the problem persists, try restarting the app.';
+$string['mm.core.fieldvalueseparator'] = ':';
$string['mm.core.filenameexist'] = 'File name already exists: {{$a}}';
$string['mm.core.fullnameandsitename'] = '{{fullname}} ({{sitename}})';
$string['mm.core.hasdatatosync'] = 'This {{$a}} has offline data to be synchronized.';
@@ -154,6 +158,8 @@
$string['mm.core.twoparagraphs'] = '{{p1}}
{{p2}}';
$string['mm.core.uhoh'] = 'Uh oh!';
$string['mm.core.unexpectederror'] = 'Unexepected error. Please close and reopen the application to try again';
+$string['mm.core.unicodenotsupported'] = 'Unicode text like emojis are not supported on this site, text will be sent removing those characters.';
+$string['mm.core.unicodenotsupportedcleanerror'] = 'Empty text was found when cleaning Unicode chars.';
$string['mm.core.unknown'] = 'Unknown';
$string['mm.core.unzipping'] = 'Unzipping';
$string['mm.core.warningofflinedatadeleted'] = 'Offline data of {{component}} \'{{name}}\' has been deleted. {{error}}';
@@ -161,6 +167,7 @@
$string['mm.core.whyisthishappening'] = 'Why is this happening?';
$string['mm.core.windowsphone'] = 'Windows Phone';
$string['mm.core.wsfunctionnotavailable'] = 'The webservice function is not available.';
+$string['mm.course.activitydisabled'] = 'Your organisation has disabled this activity in the mobile app.';
$string['mm.course.activitynotyetviewable'] = 'This activity is not yet viewable in the app.';
$string['mm.course.activitynotyetviewablegothere'] = 'This activity or resource is not yet viewable in the app, click the button below to access it from the site.';
$string['mm.course.activitynotyetviewableinapp'] = 'We are working on supporting the {{$a}} activity.';
@@ -183,22 +190,20 @@
$string['mm.course.showall'] = 'Show all';
$string['mm.course.useactivityonbrowser'] = 'You can still use it using your devices browser.';
$string['mm.course.whoops'] = 'Whoops!';
+$string['mm.courses.cannotretrievemorecategories'] = 'Categories deeper than level {{$a}} cannot be retrieved.';
$string['mm.courses.confirmselfenrol'] = 'Are you sure you want to enrol yourself in this course?';
$string['mm.courses.enrolme'] = 'Enrol me';
+$string['mm.courses.errorloadcategories'] = 'An error ocurred while loading categories.';
$string['mm.courses.errorloadcourses'] = 'An error occurred while loading courses.';
$string['mm.courses.errorsearching'] = 'An error occurred while searching.';
$string['mm.courses.errorselfenrol'] = 'An error occurred while self enroling.';
-$string['mm.courses.filter'] = 'Filter';
$string['mm.courses.filtermycourses'] = 'Filter my courses';
$string['mm.courses.frontpage'] = 'Front page';
-$string['mm.courses.mycourses'] = 'My courses';
$string['mm.courses.nocourses'] = 'No course information to show.';
$string['mm.courses.nosearchresults'] = 'There were no results from your search';
$string['mm.courses.notenroled'] = 'You are not enrolled in this course';
$string['mm.courses.notenrollable'] = 'You can not enrol yourself in this course.';
$string['mm.courses.password'] = 'Enrolment key';
-$string['mm.courses.search'] = 'Search';
-$string['mm.courses.searchcourses'] = 'Search courses';
$string['mm.courses.searchcoursesadvice'] = 'You can use the search courses button to access as guest or enrol yourself in courses that allow it.';
$string['mm.courses.selfenrolment'] = 'Self-enrolment';
$string['mm.courses.totalcoursesearchresults'] = 'Total courses: {{$a}}';
@@ -250,6 +255,7 @@
$string['mm.login.invalidvaluemax'] = 'The maximum value is {{$a}}';
$string['mm.login.invalidvaluemin'] = 'The minimum value is {{$a}}';
$string['mm.login.localmobileunexpectedresponse'] = 'Moodle Mobile Additional Features check returned an unexpected response, you will be authenticated using the standard Mobile service.';
+$string['mm.login.loggedoutssodescription'] = 'You have to authenticate again. You need to log in to the site in a browser window.';
$string['mm.login.loginbutton'] = 'Log in';
$string['mm.login.logininsiterequired'] = 'You need to log in to the site in a browser window.';
$string['mm.login.mobileservicesnotenabled'] = 'Mobile Services are not enabled in your site. Please, contact your Moodle site administrator if you think mobile access should be enabled.';
@@ -266,6 +272,7 @@
$string['mm.login.signupplugindisabled'] = '{{$a}} is not enabled.';
$string['mm.login.siteaddress'] = 'Site address';
$string['mm.login.siteinmaintenance'] = 'Your site is in maintenance mode';
+$string['mm.login.sitepolicynotagreederror'] = 'Site policy not agreed.';
$string['mm.login.siteurl'] = 'Site URL';
$string['mm.login.siteurlrequired'] = 'Site URL required, i.e http://www.yourmoodlesite.abc or https://www.yourmoodlesite.efg';
$string['mm.login.stillcantconnect'] = 'Still can\'t connect?';
@@ -313,6 +320,7 @@
$string['mm.settings.navigatorlanguage'] = 'Navigator language';
$string['mm.settings.navigatoruseragent'] = 'Navigator userAgent';
$string['mm.settings.networkstatus'] = 'Internet connection status';
+$string['mm.settings.privacypolicy'] = 'Privacy policy';
$string['mm.settings.reportinbackground'] = 'Report errors automatically';
$string['mm.settings.spaceusage'] = 'Space usage';
$string['mm.settings.storagetype'] = 'Storage type';
@@ -337,7 +345,7 @@
$string['mm.sidemenu.appsettings'] = 'App settings';
$string['mm.sidemenu.changesite'] = 'Change site';
$string['mm.sidemenu.help'] = 'Help';
-$string['mm.sidemenu.logout'] = 'Change site';
+$string['mm.sidemenu.logout'] = 'Log out';
$string['mm.sidemenu.mycourses'] = 'My courses';
$string['mm.sidemenu.togglemenu'] = 'Toggle menu';
$string['mm.sidemenu.website'] = 'Website';
@@ -348,9 +356,11 @@
$string['mm.user.invaliduser'] = 'Invalid user.';
$string['mm.user.manager'] = 'Manager';
$string['mm.user.phone2'] = 'Mobile';
+$string['mm.user.sendemail'] = 'Email';
$string['mm.user.student'] = 'Student';
$string['mm.user.teacher'] = 'Non-editing teacher';
$string['mma.calendar.calendarevents'] = 'Calendar events';
+$string['mma.calendar.defaultnotificationtime'] = 'Default notification time';
$string['mma.calendar.errorloadevent'] = 'Error loading event.';
$string['mma.calendar.errorloadevents'] = 'Error loading events.';
$string['mma.calendar.noevents'] = 'There are no events';
@@ -398,24 +408,21 @@
$string['mma.files.errorwhiledownloading'] = 'An error occured while trying to download the file.';
$string['mma.files.errorwhilerecordingaudio'] = 'An error occured while trying to record audio.';
$string['mma.files.errorwhileuploading'] = 'An error occured during the file upload.';
-$string['mma.files.file'] = 'File';
$string['mma.files.fileuploaded'] = 'The file was successfully uploaded.';
$string['mma.files.myfiles'] = 'My files';
$string['mma.files.myprivatefiles'] = 'My private files';
$string['mma.files.myprivatefilesdesc'] = 'The files that are available in your private area on this Moodle site.';
$string['mma.files.photoalbums'] = 'Photo albums';
$string['mma.files.readingfile'] = 'Reading file';
-$string['mma.files.sitefiles'] = 'Site files';
$string['mma.files.sitefilesdesc'] = 'The other files that are available to you on this Moodle site.';
$string['mma.files.success'] = 'Success!';
-$string['mma.files.uploadafile'] = 'Upload a file';
$string['mma.files.uploadfiles'] = 'Upload files';
$string['mma.files.uploading'] = 'Uploading';
$string['mma.files.video'] = 'Video';
$string['mma.frontpage.frontpage'] = 'Front page';
-$string['mma.frontpage.sitehome'] = 'Site home';
$string['mma.grades.itemname'] = 'Grade item';
$string['mma.messageoutput_airnotifier.processorsettingsdesc'] = 'Configure devices';
+$string['mma.messages.blockcontactconfirm'] = 'You will stop receveiving messages form this contact.';
$string['mma.messages.contactlistempty'] = 'The contact list is empty';
$string['mma.messages.contactname'] = 'Contact name';
$string['mma.messages.errordeletemessage'] = 'Error while deleting the message.';
@@ -423,11 +430,14 @@
$string['mma.messages.errorwhileretrievingcontacts'] = 'Error while retrieving the contacts from the server.';
$string['mma.messages.errorwhileretrievingdiscussions'] = 'Error while retrieving the discussions from the server.';
$string['mma.messages.errorwhileretrievingmessages'] = 'Error while retrieving the messages from the server.';
+$string['mma.messages.loadpreviousmessages'] = 'Load previous messages';
$string['mma.messages.messagenotsent'] = 'The message was not sent, please try again later.';
$string['mma.messages.mustbeonlinetosendmessages'] = 'You must be online to send messages';
$string['mma.messages.newmessage'] = 'New message...';
+$string['mma.messages.newmessages'] = 'New messages';
$string['mma.messages.nomessages'] = 'No messages.';
$string['mma.messages.nousersfound'] = 'No users found';
+$string['mma.messages.removecontactconfirm'] = 'Contact will be removed from your contacts list.';
$string['mma.messages.type_blocked'] = 'Blocked';
$string['mma.messages.type_offline'] = 'Offline';
$string['mma.messages.type_online'] = 'Online';
@@ -441,6 +451,7 @@
$string['mma.mod_assign.erroreditpluginsnotsupported'] = 'You cannot add or edit a submission in the app because some plugins aren\'t supported for editing:';
$string['mma.mod_assign.errorshowinginformation'] = 'We can\'t display the submission information';
$string['mma.mod_assign.feedbacknotsupported'] = 'This feedback is not supported by the app and may not contain all the information';
+$string['mma.mod_assign.gradenotsynced'] = 'Grade not synced';
$string['mma.mod_assign.notallparticipantsareshown'] = 'Participants without submissions are not being shown';
$string['mma.mod_assign.submissionnotsupported'] = 'This submission is not supported by the app and may not contain all the information';
$string['mma.mod_assign.userwithid'] = 'User with Id {{id}}';
@@ -473,9 +484,12 @@
$string['mma.mod_glossary.browsemode'] = 'Browse entries';
$string['mma.mod_glossary.byalphabet'] = 'Alphabetically';
$string['mma.mod_glossary.byauthor'] = 'Group by author';
+$string['mma.mod_glossary.bycategory'] = 'Group by category';
$string['mma.mod_glossary.bynewestfirst'] = 'Newest first';
$string['mma.mod_glossary.byrecentlyupdated'] = 'Recently updated';
$string['mma.mod_glossary.bysearch'] = 'Search';
+$string['mma.mod_glossary.cannoteditentry'] = 'Cannot edit entry';
+$string['mma.mod_glossary.entriestobesynced'] = 'Entries to be synced';
$string['mma.mod_glossary.entrypendingapproval'] = 'This entry is pending approval.';
$string['mma.mod_glossary.errorloadingentries'] = 'An error occured while loading entries.';
$string['mma.mod_glossary.errorloadingentry'] = 'An error occured while loading the entry.';
diff --git a/version.php b/version.php
index 23ae0c91..cae67884 100644
--- a/version.php
+++ b/version.php
@@ -25,8 +25,8 @@
defined('MOODLE_INTERNAL') || die;
-$plugin->version = 2014012434;
+$plugin->version = 2014012435;
$plugin->requires = 2013111800; // Require Moodle version (2.6).
$plugin->maturity = MATURITY_STABLE;
-$plugin->release = '1.320'; // This should be the latest Mobile app version
+$plugin->release = '1.321'; // This should be the latest Mobile app version
$plugin->component = 'local_moodlemobileapp';