diff --git a/src/core/login/lang/en.json b/src/core/login/lang/en.json
index 624ccd9f2..8264d9196 100644
--- a/src/core/login/lang/en.json
+++ b/src/core/login/lang/en.json
@@ -37,6 +37,7 @@
"invalidvaluemin": "The minimum value is {{$a}}",
"legacymoodleversion": "You are trying to connect to an unsupported Moodle version. Please, download the Moodle Classic app to access this Moodle site.",
"legacymoodleversiondesktop": "You are trying to connect to {{$a}}.
This site is running an outdated unsupported version of Moodle which will not work with this Moodle Desktop App.
If this is your site please contact your local moodle partner to get assistance to update it.
See our contact page to submit a request for assistance.",
+ "legacymoodleversiondesktopdownloadold": "
Alternatively, you can still access this site using an unsupported version of the app that can be downloaded from here.",
"localmobileunexpectedresponse": "Moodle Mobile Additional Features check returned an unexpected response. You will be authenticated using the standard mobile service.",
"loggedoutssodescription": "You have to authenticate again. You need to log in to the site in a browser window.",
"login": "Log in",
diff --git a/src/core/login/providers/helper.ts b/src/core/login/providers/helper.ts
index 1bc8118c1..838d217b7 100644
--- a/src/core/login/providers/helper.ts
+++ b/src/core/login/providers/helper.ts
@@ -928,6 +928,8 @@ export class CoreLoginHelperProvider {
protected showLegacyNoticeModal(message: string): void {
const isAndroid = this.platform.is('android'),
isIOS = this.platform.is('ios'),
+ isWindows = this.appProvider.isWindows(),
+ isLinux = this.appProvider.isLinux(),
buttons: any[] = [
{
text: this.translate.instant('core.ok'),
@@ -935,12 +937,22 @@ export class CoreLoginHelperProvider {
}
];
- if (isAndroid || isIOS) {
+ if (isAndroid || isIOS || isWindows || isLinux) {
buttons.push({
text: this.translate.instant('core.download'),
handler: (): void => {
- const link = isAndroid ? 'market://details?id=com.moodle.classic' :
- 'itms-apps://itunes.apple.com/app/id1403448117';
+ let link;
+
+ if (isWindows) {
+ link = 'https://download.moodle.org/desktop/download.php?platform=windows&version=342';
+ } else if (isLinux) {
+ link = 'https://download.moodle.org/desktop/download.php?platform=linux&version=342&arch=' +
+ (this.appProvider.is64Bits() ? '64' : '32');
+ } else if (isAndroid) {
+ link = 'market://details?id=com.moodle.classic';
+ } else {
+ link = 'itms-apps://itunes.apple.com/app/id1403448117';
+ }
this.utils.openInBrowser(link);
}
diff --git a/src/providers/app.ts b/src/providers/app.ts
index 5ce82bf67..6fa8ad847 100644
--- a/src/providers/app.ts
+++ b/src/providers/app.ts
@@ -146,6 +146,17 @@ export class CoreAppProvider {
return this.appCtrl.getRootNavs()[0];
}
+ /**
+ * Checks if the app is running in a 64 bits desktop environment (not browser).
+ *
+ * @return {boolean} Whether the app is running in a 64 bits desktop environment (not browser).
+ */
+ is64Bits(): boolean {
+ const process = ( window).process;
+
+ return this.isDesktop() && process.arch == 'x64';
+ }
+
/**
* Checks if the app is running in a desktop environment (not browser).
*
diff --git a/src/providers/sites.ts b/src/providers/sites.ts
index 27e088ef8..29a0941f2 100644
--- a/src/providers/sites.ts
+++ b/src/providers/sites.ts
@@ -506,8 +506,13 @@ export class CoreSitesProvider {
params = {$a: siteUrl};
}
+ let error = this.translate.instant(errorKey, params);
+ if (this.appProvider.isWindows() || this.appProvider.isLinux()) {
+ error += this.translate.instant('core.login.legacymoodleversiondesktopdownloadold');
+ }
+
return Promise.reject({
- error: this.translate.instant(errorKey, params),
+ error: error,
errorcode: 'legacymoodleversion'
});
} else {