diff --git a/scripts/langindex.json b/scripts/langindex.json
index d7e8ba27e..7689c8fca 100644
--- a/scripts/langindex.json
+++ b/scripts/langindex.json
@@ -1269,6 +1269,7 @@
"core.fileuploader.uploading": "local_moodlemobileapp",
"core.fileuploader.uploadingperc": "local_moodlemobileapp",
"core.fileuploader.video": "local_moodlemobileapp",
+ "core.login.findyoursite": "local_moodlemobileapp",
"core.folder": "moodle",
"core.forcepasswordchangenotice": "moodle",
"core.fulllistofcourses": "moodle",
diff --git a/src/assets/lang/en.json b/src/assets/lang/en.json
index c9f27817a..a64f93c9d 100644
--- a/src/assets/lang/en.json
+++ b/src/assets/lang/en.json
@@ -1328,6 +1328,7 @@
"core.login.erroraccesscontrolalloworigin": "The cross-origin call you're trying to perform has been rejected. Please check https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"core.login.errordeletesite": "An error occurred while deleting this site. Please try again.",
"core.login.errorupdatesite": "An error occurred while updating the site's token.",
+ "core.login.findyoursite": "Find your site",
"core.login.firsttime": "Is this your first time here?",
"core.login.forgotten": "Forgotten your username or password?",
"core.login.getanothercaptcha": "Get another CAPTCHA",
diff --git a/src/core/login/lang/en.json b/src/core/login/lang/en.json
index ec2e9c845..a459f61b9 100644
--- a/src/core/login/lang/en.json
+++ b/src/core/login/lang/en.json
@@ -17,6 +17,7 @@
"erroraccesscontrolalloworigin": "The cross-origin call you're trying to perform has been rejected. Please check https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"errordeletesite": "An error occurred while deleting this site. Please try again.",
"errorupdatesite": "An error occurred while updating the site's token.",
+ "findyoursite": "Find your site",
"firsttime": "Is this your first time here?",
"forgotten": "Forgotten your username or password?",
"getanothercaptcha": "Get another CAPTCHA",
diff --git a/src/core/login/pages/site/site.html b/src/core/login/pages/site/site.html
index ff637b8a8..b96233d70 100644
--- a/src/core/login/pages/site/site.html
+++ b/src/core/login/pages/site/site.html
@@ -17,33 +17,39 @@
-
+
+
+ {{ 'core.login.selectsite' | translate }}
+
+ 4" [(ngModel)]="filter" (ionInput)="filterChanged($event)" (ionCancel)="filterChanged()" [placeholder]="'core.login.findyoursite' | translate">
+
+ {{site.name}}
+ {{site.url}}
+
+
+
+
+
diff --git a/src/core/login/pages/site/site.scss b/src/core/login/pages/site/site.scss
index 100ae86c3..cf296f1a4 100644
--- a/src/core/login/pages/site/site.scss
+++ b/src/core/login/pages/site/site.scss
@@ -36,4 +36,12 @@ ion-app.app-root page-core-login-site {
.item-input:last-child {
margin-bottom: 20px;
}
+
+ .searchbar-ios {
+ background: transparent;
+
+ .searchbar-input {
+ background-color: $searchbar-ios-toolbar-input-background
+ }
+ }
}
\ No newline at end of file
diff --git a/src/core/login/pages/site/site.ts b/src/core/login/pages/site/site.ts
index dcd6752fb..1bbdb8856 100644
--- a/src/core/login/pages/site/site.ts
+++ b/src/core/login/pages/site/site.ts
@@ -32,8 +32,10 @@ import { FormBuilder, FormGroup, Validators } from '@angular/forms';
export class CoreLoginSitePage {
siteForm: FormGroup;
fixedSites: any[];
- displayAsButtons = false;
+ filteredSites: any[];
+ fixedDisplay = 'buttons';
showKeyboard = false;
+ filter = '';
constructor(navParams: NavParams, private navCtrl: NavController, fb: FormBuilder, private appProvider: CoreAppProvider,
private sitesProvider: CoreSitesProvider, private loginHelper: CoreLoginHelperProvider,
@@ -46,7 +48,12 @@ export class CoreLoginSitePage {
// Load fixed sites if they're set.
if (this.loginHelper.hasSeveralFixedSites()) {
this.fixedSites = this.loginHelper.getFixedSites();
- this.displayAsButtons = CoreConfigConstants.multisitesdisplay == 'buttons';
+ this.fixedDisplay = CoreConfigConstants.multisitesdisplay;
+ // Autoselect if not defined.
+ if (['list', 'select', 'buttons'].indexOf(this.fixedDisplay) < 0) {
+ this.fixedDisplay = this.fixedSites.length > 8 ? 'list' : (this.fixedSites.length > 3 ? 'select' : 'buttons');
+ }
+ this.filteredSites = this.fixedSites;
url = this.fixedSites[0].url;
}
@@ -113,6 +120,22 @@ export class CoreLoginSitePage {
}
}
+ /**
+ * The filter has changed.
+ *
+ * @param {any} Received Event.
+ */
+ filterChanged(event: any): void {
+ const newValue = event.target.value && event.target.value.trim().toLowerCase();
+ if (!newValue || !this.fixedSites) {
+ this.filteredSites = this.fixedSites;
+ } else {
+ this.filteredSites = this.fixedSites.filter((site) => {
+ return site.name.toLowerCase().indexOf(newValue) > -1 || site.url.toLowerCase().indexOf(newValue) > -1;
+ });
+ }
+ }
+
/**
* Show a help modal.
*/