Skip to content

Commit b93c46f

Browse files
authored
Merge pull request #2655 from moodlehq/integration
Integration
2 parents 1d7b19e + 009df0d commit b93c46f

File tree

10 files changed

+49
-67
lines changed

10 files changed

+49
-67
lines changed

.travis.yml

Lines changed: 13 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -19,43 +19,35 @@ git:
1919
depth: 3
2020

2121
before_cache:
22-
- rm -rf $HOME/.cache/electron-builder/wine
2322
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
2423
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
2524

2625
cache:
2726
directories:
2827
- $HOME/.npm
29-
- $HOME/.cache/electron
30-
- $HOME/.cache/electron-builder
3128
- $HOME/.gradle/caches/
3229
- $HOME/.gradle/wrapper/
3330
- $HOME/.android/build-cache
3431

3532
before_script:
36-
- if [ "$TRAVIS_OS_NAME" != 'windows' ] ; then npm install npm@latest -g ; fi
33+
- npm install npm@latest -g
3734
- gulp
3835

3936
jobs:
4037
include:
4138
- stage: check
4239
if: NOT branch =~ /(master|integration|desktop)$/ AND env(DEPLOY) IS blank
43-
os: linux
4440
script: npm run build --bailOnLintError true --typeCheckOnLint true
4541
- stage: mirror
4642
if: branch IN (master, integration, desktop) AND repo = moodlehq/moodleapp AND type != cron
47-
os: linux
4843
script: scripts/mirror.sh
4944
- stage: prepare
50-
if: branch =~ /(master|^integration)$/ AND env(PREPARE) IS NOT blank AND env(PREPARE) = 1 AND type != cron
51-
os: linux
45+
if: branch =~ /(master|^integration)$/ AND env(PREPARE) IS present AND env(PREPARE) = 1 AND type != cron AND tag IS blank
5246
script: scripts/aot.sh
5347
- stage: build
5448
name: "Build Android"
55-
if: env(DEPLOY) IS NOT blank AND ((env(DEPLOY) = 1 AND branch != desktop) OR (env(DEPLOY) IN (2,3) AND tag IS NOT blank))
56-
os: linux
49+
if: env(DEPLOY) IS present AND type != cron AND ((env(DEPLOY) = 1 AND tag IS blank) OR (env(DEPLOY) = 2 AND tag IS present))
5750
dist: trusty
58-
group: edge
5951
language: android
6052
env:
6153
- BUILD_PLATFORM='android'
@@ -67,56 +59,24 @@ jobs:
6759
- npm ci
6860
- npm install -g gulp
6961
script: scripts/aot.sh
70-
- stage: build
71-
name: "Build iOS"
72-
if: env(DEPLOY) IS NOT blank AND ((env(DEPLOY) = 1 AND branch != desktop) OR (env(DEPLOY) IN (2,3) AND tag IS NOT blank))
73-
os: osx
74-
osx_image: xcode12.2
75-
env:
76-
- BUILD_PLATFORM='ios'
77-
script: scripts/aot.sh
78-
- stage: build
79-
name: "Build Linux"
80-
if: env(DEPLOY) IS NOT blank AND ((env(DEPLOY) = 1 AND branch = desktop) OR (env(DEPLOY) = 3 AND tag IS NOT blank))
81-
os: linux
82-
env:
83-
- ELECTRON_CACHE=$HOME/.cache/electron
84-
- ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder
85-
- BUILD_PLATFORM='linux'
86-
script: scripts/aot.sh
87-
- stage: build
88-
name: "Build MacOS"
89-
if: env(DEPLOY) IS NOT blank AND ((env(DEPLOY) = 1 AND branch = desktop) OR (env(DEPLOY) = 3 AND tag IS NOT blank))
90-
os: osx
91-
osx_image: xcode12.2
92-
env:
93-
- ELECTRON_CACHE=$HOME/.cache/electron
94-
- ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder
95-
- BUILD_PLATFORM='osx'
96-
script: scripts/aot.sh
97-
- stage: build
98-
name: "Build Windows"
99-
if: env(DEPLOY) IS NOT blank AND ((env(DEPLOY) = 1 AND branch = desktop) OR (env(DEPLOY) = 3 AND tag IS NOT blank))
100-
os: windows
101-
env:
102-
- ELECTRON_CACHE=$HOME/.cache/electron
103-
- ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder
104-
- ELECTRON_BUILDER_ALLOW_UNRESOLVED_DEPENDENCIES=true
105-
- DEBUG=electron-windows-store
106-
- BUILD_PLATFORM='windows'
107-
script: scripts/aot.sh
10862
- stage: test
109-
name: "End to end tests (mod_forum, mod_messages and mod_comments)"
63+
name: "End to end tests (mod_forum and mod_messages)"
64+
services:
65+
- docker
66+
if: type = cron
67+
script: scripts/test_e2e.sh "@app&&@mod_forum" "@app&&@mod_messages"
68+
- stage: test
69+
name: "End to end tests (mod_data and mod_survey)"
11070
services:
11171
- docker
11272
if: type = cron
113-
script: scripts/test_e2e.sh "@app&&@mod_forum" "@app&&@mod_messages" "@app&&@mod_comments"
73+
script: scripts/test_e2e.sh "@app&&@mod_data" "@app&&@mod_survey"
11474
- stage: test
115-
name: "End to end tests (mod_data, mod_survey, mod_course, core_course and mod_courses)"
75+
name: "End to end tests (mod_comments, mod_course, core_course and mod_courses)"
11676
services:
11777
- docker
11878
if: type = cron
119-
script: scripts/test_e2e.sh "@app&&@mod_data" "@app&&@mod_survey" "@app&&@mod_course" "@app&&@core_course" "@app&&@mod_courses"
79+
script: scripts/test_e2e.sh "@app&&@mod_comments" "@app&&@mod_course" "@app&&@core_course" "@app&&@mod_courses"
12080
- stage: test
12181
name: "End to end tests (others)"
12282
services:

config.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version='1.0' encoding='utf-8'?>
2-
<widget android-versionCode="39300" id="com.moodle.moodlemobile" ios-CFBundleVersion="3.9.3.0" version="3.9.3" versionCode="39300" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
2+
<widget android-versionCode="39400" id="com.moodle.moodlemobile" ios-CFBundleVersion="3.9.4.0" version="3.9.4" versionCode="39400" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
33
<name>Moodle</name>
44
<description>Moodle official app</description>
55
<author email="[email protected]" href="http://moodle.com">Moodle Mobile team</author>
@@ -244,7 +244,7 @@
244244
<true />
245245
</edit-config>
246246
<edit-config file="*-Info.plist" mode="merge" target="CFBundleShortVersionString">
247-
<string>3.9.3</string>
247+
<string>3.9.4</string>
248248
</edit-config>
249249
<config-file parent="FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED" target="*-Info.plist">
250250
<string>YES</string>

desktop/assets/windows/AppXManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<Identity Name="3312ADB7.MoodleDesktop"
77
ProcessorArchitecture="x64"
88
Publisher="CN=33CDCDF6-1EB5-4827-9897-ED25C91A32F6"
9-
Version="3.9.3.0" />
9+
Version="3.9.4.0" />
1010
<Properties>
1111
<DisplayName>Moodle Desktop</DisplayName>
1212
<PublisherDisplayName>Moodle Pty Ltd.</PublisherDisplayName>

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "moodlemobile",
3-
"version": "3.9.3",
3+
"version": "3.9.4",
44
"description": "The official app for Moodle.",
55
"author": {
66
"name": "Moodle Pty Ltd.",
@@ -266,7 +266,7 @@
266266
"category": "public.app-category.education",
267267
"icon": "resources/desktop/icon.icns",
268268
"target": "mas",
269-
"bundleVersion": "3.9.3",
269+
"bundleVersion": "3.9.4",
270270
"extendInfo": {
271271
"ElectronTeamID": "2NU57U5PAW",
272272
"NSLocationWhenInUseUsageDescription": "We need your location so you can attach it as part of your submissions.",

scripts/lang_functions.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,9 @@ function override_component_lang_files($keys, $translations) {
400400
case 'assets':
401401
$path .= $type.'/'.$component;
402402
break;
403+
default:
404+
$path .= $type.'/lang';
405+
break;
403406

404407
}
405408

src/config.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
"app_id": "com.moodle.moodlemobile",
33
"appname": "Moodle Mobile",
44
"desktopappname": "Moodle Desktop",
5-
"versioncode": 3930,
6-
"versionname": "3.9.3",
5+
"versioncode": 3940,
6+
"versionname": "3.9.4",
77
"cache_update_frequency_usually": 420000,
88
"cache_update_frequency_often": 1200000,
99
"cache_update_frequency_sometimes": 3600000,

src/core/course/providers/course.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -982,7 +982,7 @@ export class CoreCourseProvider {
982982
const loading = this.domUtils.showModalLoading();
983983

984984
// Wait for site plugins to be fetched.
985-
await this.sitePluginsProvider.waitFetchPlugins();
985+
await this.utils.ignoreErrors(this.sitePluginsProvider.waitFetchPlugins());
986986

987987
if (typeof course.format == 'undefined') {
988988
// This block can be replaced by a call to CourseHelper.getCourse(), but it is circular dependant.
@@ -1006,9 +1006,10 @@ export class CoreCourseProvider {
10061006

10071007
if (!this.sitePluginsProvider.sitePluginPromiseExists('format_' + course.format)) {
10081008
// No custom format plugin. We don't need to wait for anything.
1009-
await this.courseFormatDelegate.openCourse(navCtrl, course, params);
10101009
loading.dismiss();
10111010

1011+
await this.courseFormatDelegate.openCourse(navCtrl, course, params);
1012+
10121013
return;
10131014
}
10141015

@@ -1041,6 +1042,8 @@ export class CoreCourseProvider {
10411042
this.domUtils.showConfirm(message, '', reload, ignore).then(() => {
10421043
window.location.reload();
10431044
});
1045+
} finally {
1046+
loading.dismiss();
10441047
}
10451048
}
10461049

src/core/course/providers/helper.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ import { CoreCourseProvider } from './course';
3434
import { CoreCourseOfflineProvider } from './course-offline';
3535
import { CoreCourseModuleDelegate } from './module-delegate';
3636
import { CoreCourseModulePrefetchDelegate } from './module-prefetch-delegate';
37-
import { CoreLoginHelperProvider } from '@core/login/providers/helper';
37+
import { CoreLoginHelper, CoreLoginHelperProvider } from '@core/login/providers/helper';
3838
import { CoreConstants } from '@core/constants';
3939
import { CoreSite } from '@classes/site';
4040
import { CoreLoggerProvider } from '@providers/logger';
@@ -122,7 +122,6 @@ export class CoreCourseHelperProvider {
122122
private timeUtils: CoreTimeUtilsProvider,
123123
private utils: CoreUtilsProvider,
124124
private translate: TranslateService,
125-
private loginHelper: CoreLoginHelperProvider,
126125
private courseOptionsDelegate: CoreCourseOptionsDelegate,
127126
private siteHomeProvider: CoreSiteHomeProvider,
128127
private eventsProvider: CoreEventsProvider,
@@ -1302,7 +1301,7 @@ export class CoreCourseHelperProvider {
13021301
if (courseId == site.getSiteHomeId()) {
13031302
// Check if site home is available.
13041303
return this.siteHomeProvider.isAvailable().then(() => {
1305-
this.loginHelper.redirect('CoreSiteHomeIndexPage', params, siteId);
1304+
CoreLoginHelper.instance.redirect('CoreSiteHomeIndexPage', params, siteId);
13061305
}).finally(() => {
13071306
modal.dismiss();
13081307
});
@@ -1610,7 +1609,7 @@ export class CoreCourseHelperProvider {
16101609
params = params || {};
16111610
Object.assign(params, { course: course });
16121611

1613-
return this.loginHelper.redirect(CoreLoginHelperProvider.OPEN_COURSE, params, siteId);
1612+
return CoreLoginHelper.instance.redirect(CoreLoginHelperProvider.OPEN_COURSE, params, siteId);
16141613
}
16151614
}
16161615

src/core/login/providers/helper.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import { CoreConstants } from '@core/constants';
3434
import { Md5 } from 'ts-md5/dist/md5';
3535
import { CoreSite } from '@classes/site';
3636
import { CoreUrl } from '@singletons/url';
37+
import { makeSingleton } from '@singletons/core.singletons';
3738

3839
/**
3940
* Data related to a SSO authentication.
@@ -1417,3 +1418,5 @@ export class CoreLoginHelperProvider {
14171418
});
14181419
}
14191420
}
1421+
1422+
export class CoreLoginHelper extends makeSingleton(CoreLoginHelperProvider) {}

src/core/siteplugins/providers/helper.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,21 @@ export class CoreSitePluginsHelperProvider {
439439
styleEl.setAttribute('id', 'siteplugin-' + uniqueName);
440440
styleEl.innerHTML = cssCode;
441441

442-
document.head.appendChild(styleEl);
442+
// To ensure consistency, insert in alphabetical order among other site plugin styles.
443+
let lowestGreater = null;
444+
Array.from(document.head.querySelectorAll('style')).forEach((other) => {
445+
if (/^siteplugin-/.test(other.id) && other.id > styleEl.id) {
446+
if (lowestGreater === null || other.id < lowestGreater.id) {
447+
lowestGreater = other;
448+
}
449+
}
450+
});
451+
452+
if (lowestGreater) {
453+
document.head.insertBefore(styleEl, lowestGreater);
454+
} else {
455+
document.head.appendChild(styleEl);
456+
}
443457

444458
// Styles have been loaded, now treat the CSS.
445459
this.filepoolProvider.treatCSSCode(siteId, fileUrl, cssCode, CoreSitePluginsProvider.COMPONENT, uniqueName, version)

0 commit comments

Comments
 (0)