Merge pull request #2203 from dpalou/MOBILE-3213

Mobile 3213
main
Juan Leyva 2019-12-11 10:53:49 +01:00 committed by GitHub
commit 40fac1b6a3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 203 additions and 266 deletions

View File

@ -79,18 +79,11 @@
<icon background="@color/background" density="xhdpi" foreground="resources/android/icon/xhdpi-foreground.png" src="resources/android/icon/drawable-xhdpi-icon.png" />
<icon background="@color/background" density="xxhdpi" foreground="resources/android/icon/xxhdpi-foreground.png" src="resources/android/icon/drawable-xxhdpi-icon.png" />
<icon background="@color/background" density="xxxhdpi" foreground="resources/android/icon/xxxhdpi-foreground.png" src="resources/android/icon/drawable-xxxhdpi-icon.png" />
<!--
This should be added by the file-opener2 plugin, but it's not working at the moment. This can be removed
once the following issue is resolved and the plugin is updated to include the fix:
https://github.com/pwlin/cordova-plugin-file-opener2/issues/246
-->
<config-file parent="/manifest/application" target="AndroidManifest.xml">
<provider android:authorities="${applicationId}.opener.provider" android:exported="false" android:grantUriPermissions="true" android:name="io.github.pwlin.cordova.plugins.fileopener2.FileProvider">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/opener_paths" />
</provider>
</config-file>
</platform>
<platform name="ios">
<resource-file src="GoogleService-Info.plist" />
@ -148,36 +141,36 @@
<splash height="2436" src="resources/ios/splash/Default-2436h.png" width="1125" />
<splash height="1125" src="resources/ios/splash/Default-Landscape-2436h.png" width="2436" />
</platform>
<plugin name="com-darryncampbell-cordova-plugin-intent" spec="^1.1.8" />
<plugin name="cordova-android-support-gradle-release" spec="^3.0.1">
<plugin name="com-darryncampbell-cordova-plugin-intent" spec="1.3.0" />
<plugin name="cordova-android-support-gradle-release" spec="3.0.1">
<variable name="ANDROID_SUPPORT_VERSION" value="27.1.0" />
</plugin>
<plugin name="cordova-clipboard" spec="^1.3.0" />
<plugin name="cordova-plugin-badge" spec="^0.8.8" />
<plugin name="cordova-plugin-camera" spec="^4.1.0" />
<plugin name="cordova-plugin-customurlscheme" spec="^4.4.0">
<plugin name="cordova-clipboard" spec="1.3.0" />
<plugin name="cordova-plugin-badge" spec="0.8.8" />
<plugin name="cordova-plugin-camera" spec="4.1.0" />
<plugin name="cordova-plugin-customurlscheme" spec="4.4.0">
<variable name="URL_SCHEME" value="moodlemobile" />
</plugin>
<plugin name="cordova-plugin-device" spec="^2.0.3" />
<plugin name="cordova-plugin-file" spec="^6.0.2" />
<plugin name="cordova-plugin-device" spec="2.0.3" />
<plugin name="cordova-plugin-file" spec="6.0.2" />
<plugin name="cordova-plugin-file-opener2" spec="2.2.1" />
<plugin name="cordova-plugin-file-transfer" spec="^1.7.1" />
<plugin name="cordova-plugin-geolocation" spec="^4.0.2">
<plugin name="cordova-plugin-file-transfer" spec="1.7.1" />
<plugin name="cordova-plugin-geolocation" spec="4.0.2">
<variable name="GEOLOCATION_USAGE_DESCRIPTION" value="We need your location so you can attach it as part of your submissions." />
</plugin>
<plugin name="cordova-plugin-globalization" spec="^1.11.0" />
<plugin name="cordova-plugin-inappbrowser" spec="^3.1.0" />
<plugin name="cordova-plugin-ionic-keyboard" spec="^2.1.3" />
<plugin name="cordova-plugin-globalization" spec="1.11.0" />
<plugin name="cordova-plugin-inappbrowser" spec="3.1.0" />
<plugin name="cordova-plugin-ionic-keyboard" spec="2.2.0" />
<plugin name="cordova-plugin-local-notification" spec="https://github.com/moodlemobile/cordova-plugin-local-notification.git#moodle" />
<plugin name="cordova-plugin-media-capture" spec="^3.0.3" />
<plugin name="cordova-plugin-network-information" spec="^2.0.2" />
<plugin name="cordova-plugin-screen-orientation" spec="^3.0.2" />
<plugin name="cordova-plugin-splashscreen" spec="^5.0.3" />
<plugin name="cordova-plugin-statusbar" spec="^2.4.3" />
<plugin name="cordova-plugin-whitelist" spec="^1.3.4" />
<plugin name="cordova-plugin-zip" spec="^3.1.0" />
<plugin name="cordova-sqlite-storage" spec="^3.4.0" />
<plugin name="nl.kingsquare.cordova.background-audio" spec="^1.0.1" />
<plugin name="cordova-plugin-media-capture" spec="3.0.3" />
<plugin name="cordova-plugin-network-information" spec="2.0.2" />
<plugin name="cordova-plugin-screen-orientation" spec="3.0.2" />
<plugin name="cordova-plugin-splashscreen" spec="5.0.3" />
<plugin name="cordova-plugin-statusbar" spec="2.4.3" />
<plugin name="cordova-plugin-whitelist" spec="1.3.4" />
<plugin name="cordova-plugin-zip" spec="3.1.0" />
<plugin name="cordova-sqlite-storage" spec="3.4.0" />
<plugin name="nl.kingsquare.cordova.background-audio" spec="1.0.1" />
<plugin name="phonegap-plugin-push" spec="https://github.com/moodlemobile/phonegap-plugin-push.git#moodle-v3">
<variable name="ANDROID_SUPPORT_V13_VERSION" value="27.+" />
<variable name="FCM_VERSION" value="17.5.+" />

176
package-lock.json generated
View File

@ -503,8 +503,7 @@
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"aproba": {
"version": "1.2.0",
@ -525,14 +524,12 @@
"balanced-match": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@ -547,20 +544,17 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"core-util-is": {
"version": "1.0.2",
@ -677,8 +671,7 @@
"inherits": {
"version": "2.0.3",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"ini": {
"version": "1.3.5",
@ -690,7 +683,6 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@ -705,7 +697,6 @@
"version": "3.0.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@ -713,14 +704,12 @@
"minimist": {
"version": "0.0.8",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"minipass": {
"version": "2.3.5",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@ -739,7 +728,6 @@
"version": "0.5.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minimist": "0.0.8"
}
@ -820,8 +808,7 @@
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"object-assign": {
"version": "4.1.1",
@ -833,7 +820,6 @@
"version": "1.4.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"wrappy": "1"
}
@ -919,8 +905,7 @@
"safe-buffer": {
"version": "5.1.2",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"safer-buffer": {
"version": "2.1.2",
@ -956,7 +941,6 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@ -976,7 +960,6 @@
"version": "3.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@ -1020,14 +1003,12 @@
"wrappy": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"yallist": {
"version": "3.0.3",
"bundled": true,
"dev": true,
"optional": true
"dev": true
}
}
},
@ -2650,9 +2631,9 @@
"dev": true
},
"com-darryncampbell-cordova-plugin-intent": {
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/com-darryncampbell-cordova-plugin-intent/-/com-darryncampbell-cordova-plugin-intent-1.1.7.tgz",
"integrity": "sha512-e+CIaOTpZ7r178tmCijZcm/o5nJIWVnQaUrwm5xwX1zc5zutVCtz1oH3xqq6gzNk05C9i7n96xdenODHMYpiMw=="
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/com-darryncampbell-cordova-plugin-intent/-/com-darryncampbell-cordova-plugin-intent-1.3.0.tgz",
"integrity": "sha512-JXslndd4UiRHmirGZrwrHZHczoZ5sxM7zAylm4bPX7ZDwD4FdCHhILgDA8AeaG8wc11e0A7OEAFo0Esgc0M4yA=="
},
"combined-stream": {
"version": "1.0.6",
@ -3176,9 +3157,9 @@
"integrity": "sha512-YqrZfYgbGTS20SFID0mrRxud312VH072QVlFonCAkPgtGg1Svy7lELOCNFd+KU7t4mVtZeTEjZPEeefvjaetwQ=="
},
"cordova-plugin-ionic-keyboard": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/cordova-plugin-ionic-keyboard/-/cordova-plugin-ionic-keyboard-2.1.3.tgz",
"integrity": "sha512-6ucQ6FdlLdBm8kJfFnzozmBTjru/0xekHP/dAhjoCZggkGRlgs8TsUJFkxa/bV+qi7Dlo50JjmpE4UMWAO+aOQ=="
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/cordova-plugin-ionic-keyboard/-/cordova-plugin-ionic-keyboard-2.2.0.tgz",
"integrity": "sha512-yDUG+9ieKVRitq5mGlNxjaZh/MgEhFFIgTIPhqSbUaQ8UuZbawy5mhJAVClqY97q8/rcQtL6dCDa7x2sEtCLcA=="
},
"cordova-plugin-local-notification": {
"version": "git+https://github.com/moodlemobile/cordova-plugin-local-notification.git#c7430c4f4f8b8c82d051aea49d87da0b4f6a8b1e",
@ -5243,8 +5224,7 @@
},
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
"optional": true
"bundled": true
},
"aproba": {
"version": "1.2.0",
@ -5262,13 +5242,11 @@
},
"balanced-match": {
"version": "1.0.0",
"bundled": true,
"optional": true
"bundled": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@ -5281,18 +5259,15 @@
},
"code-point-at": {
"version": "1.1.0",
"bundled": true,
"optional": true
"bundled": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
"optional": true
"bundled": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
"optional": true
"bundled": true
},
"core-util-is": {
"version": "1.0.2",
@ -5395,8 +5370,7 @@
},
"inherits": {
"version": "2.0.3",
"bundled": true,
"optional": true
"bundled": true
},
"ini": {
"version": "1.3.5",
@ -5406,7 +5380,6 @@
"is-fullwidth-code-point": {
"version": "1.0.0",
"bundled": true,
"optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@ -5419,20 +5392,17 @@
"minimatch": {
"version": "3.0.4",
"bundled": true,
"optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "0.0.8",
"bundled": true,
"optional": true
"bundled": true
},
"minipass": {
"version": "2.3.5",
"bundled": true,
"optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@ -5449,7 +5419,6 @@
"mkdirp": {
"version": "0.5.1",
"bundled": true,
"optional": true,
"requires": {
"minimist": "0.0.8"
}
@ -5528,8 +5497,7 @@
},
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
"optional": true
"bundled": true
},
"object-assign": {
"version": "4.1.1",
@ -5539,7 +5507,6 @@
"once": {
"version": "1.4.0",
"bundled": true,
"optional": true,
"requires": {
"wrappy": "1"
}
@ -5615,8 +5582,7 @@
},
"safe-buffer": {
"version": "5.1.2",
"bundled": true,
"optional": true
"bundled": true
},
"safer-buffer": {
"version": "2.1.2",
@ -5646,7 +5612,6 @@
"string-width": {
"version": "1.0.2",
"bundled": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@ -5664,7 +5629,6 @@
"strip-ansi": {
"version": "3.0.1",
"bundled": true,
"optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@ -5703,13 +5667,11 @@
},
"wrappy": {
"version": "1.0.2",
"bundled": true,
"optional": true
"bundled": true
},
"yallist": {
"version": "3.0.3",
"bundled": true,
"optional": true
"bundled": true
}
}
},
@ -6136,8 +6098,7 @@
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"aproba": {
"version": "1.2.0",
@ -6158,14 +6119,12 @@
"balanced-match": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@ -6180,20 +6139,17 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"core-util-is": {
"version": "1.0.2",
@ -6310,8 +6266,7 @@
"inherits": {
"version": "2.0.3",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"ini": {
"version": "1.3.5",
@ -6323,7 +6278,6 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@ -6338,7 +6292,6 @@
"version": "3.0.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@ -6346,14 +6299,12 @@
"minimist": {
"version": "0.0.8",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"minipass": {
"version": "2.3.5",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@ -6372,7 +6323,6 @@
"version": "0.5.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minimist": "0.0.8"
}
@ -6453,8 +6403,7 @@
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"object-assign": {
"version": "4.1.1",
@ -6466,7 +6415,6 @@
"version": "1.4.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"wrappy": "1"
}
@ -6552,8 +6500,7 @@
"safe-buffer": {
"version": "5.1.2",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"safer-buffer": {
"version": "2.1.2",
@ -6589,7 +6536,6 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@ -6609,7 +6555,6 @@
"version": "3.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@ -6653,14 +6598,12 @@
"wrappy": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"yallist": {
"version": "3.0.3",
"bundled": true,
"dev": true,
"optional": true
"dev": true
}
}
},
@ -12926,8 +12869,7 @@
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"aproba": {
"version": "1.2.0",
@ -12948,14 +12890,12 @@
"balanced-match": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@ -12970,20 +12910,17 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"core-util-is": {
"version": "1.0.2",
@ -13100,8 +13037,7 @@
"inherits": {
"version": "2.0.3",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"ini": {
"version": "1.3.5",
@ -13113,7 +13049,6 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@ -13128,7 +13063,6 @@
"version": "3.0.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@ -13136,14 +13070,12 @@
"minimist": {
"version": "0.0.8",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"minipass": {
"version": "2.3.5",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@ -13162,7 +13094,6 @@
"version": "0.5.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minimist": "0.0.8"
}
@ -13243,8 +13174,7 @@
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"object-assign": {
"version": "4.1.1",
@ -13256,7 +13186,6 @@
"version": "1.4.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"wrappy": "1"
}
@ -13342,8 +13271,7 @@
"safe-buffer": {
"version": "5.1.2",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"safer-buffer": {
"version": "2.1.2",
@ -13379,7 +13307,6 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@ -13399,7 +13326,6 @@
"version": "3.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@ -13443,14 +13369,12 @@
"wrappy": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"yallist": {
"version": "3.0.3",
"bundled": true,
"dev": true,
"optional": true
"dev": true
}
}
},

View File

@ -40,106 +40,106 @@
"windows.store": "npx electron-windows-store --input-directory .\\desktop\\dist\\win-unpacked --output-directory .\\desktop\\store -a .\\resources\\desktop -m .\\desktop\\assets\\windows\\AppXManifest.xml --package-version 0.0.0.0 --package-name MoodleDesktop"
},
"dependencies": {
"@angular/animations": "^5.2.10",
"@angular/common": "^5.2.10",
"@angular/compiler": "^5.2.10",
"@angular/compiler-cli": "^5.2.10",
"@angular/core": "^5.2.10",
"@angular/forms": "^5.2.10",
"@angular/http": "^5.2.10",
"@angular/platform-browser": "^5.2.10",
"@angular/platform-browser-dynamic": "^5.2.10",
"@ionic-native/badge": "^4.17.0",
"@ionic-native/camera": "^4.17.0",
"@ionic-native/clipboard": "^4.17.0",
"@ionic-native/core": "^4.11.0",
"@ionic-native/device": "^4.17.0",
"@ionic-native/file": "^4.17.0",
"@ionic-native/file-opener": "^4.17.0",
"@ionic-native/file-transfer": "^4.17.0",
"@angular/animations": "5.2.10",
"@angular/common": "5.2.10",
"@angular/compiler": "5.2.10",
"@angular/compiler-cli": "5.2.10",
"@angular/core": "5.2.10",
"@angular/forms": "5.2.10",
"@angular/http": "5.2.10",
"@angular/platform-browser": "5.2.10",
"@angular/platform-browser-dynamic": "5.2.10",
"@ionic-native/badge": "4.17.0",
"@ionic-native/camera": "4.17.0",
"@ionic-native/clipboard": "4.17.0",
"@ionic-native/core": "4.11.0",
"@ionic-native/device": "4.17.0",
"@ionic-native/file": "4.17.0",
"@ionic-native/file-opener": "4.17.0",
"@ionic-native/file-transfer": "4.17.0",
"@ionic-native/geolocation": "4.17.0",
"@ionic-native/globalization": "^4.17.0",
"@ionic-native/in-app-browser": "^4.17.0",
"@ionic-native/keyboard": "^4.17.0",
"@ionic-native/local-notifications": "^4.17.0",
"@ionic-native/media-capture": "^4.17.0",
"@ionic-native/network": "^4.17.0",
"@ionic-native/push": "^4.17.0",
"@ionic-native/screen-orientation": "^4.17.0",
"@ionic-native/splash-screen": "^4.17.0",
"@ionic-native/sqlite": "^4.17.0",
"@ionic-native/status-bar": "^4.17.0",
"@ionic-native/web-intent": "^4.17.0",
"@ionic-native/zip": "^4.17.0",
"@ngx-translate/core": "^8.0.0",
"@ngx-translate/http-loader": "^2.0.1",
"@types/cordova": "^0.0.34",
"@types/cordova-plugin-file-transfer": "^0.0.3",
"@types/cordova-plugin-globalization": "^0.0.3",
"@types/cordova-plugin-network-information": "^0.0.3",
"@types/node": "^8.10.19",
"@types/promise.prototype.finally": "^2.0.2",
"ajv": "^6.10.2",
"chart.js": "^2.7.2",
"com-darryncampbell-cordova-plugin-intent": "^1.1.7",
"@ionic-native/globalization": "4.17.0",
"@ionic-native/in-app-browser": "4.17.0",
"@ionic-native/keyboard": "4.17.0",
"@ionic-native/local-notifications": "4.17.0",
"@ionic-native/media-capture": "4.17.0",
"@ionic-native/network": "4.17.0",
"@ionic-native/push": "4.17.0",
"@ionic-native/screen-orientation": "4.17.0",
"@ionic-native/splash-screen": "4.17.0",
"@ionic-native/sqlite": "4.17.0",
"@ionic-native/status-bar": "4.17.0",
"@ionic-native/web-intent": "4.17.0",
"@ionic-native/zip": "4.17.0",
"@ngx-translate/core": "8.0.0",
"@ngx-translate/http-loader": "2.0.1",
"@types/cordova": "0.0.34",
"@types/cordova-plugin-file-transfer": "0.0.3",
"@types/cordova-plugin-globalization": "0.0.3",
"@types/cordova-plugin-network-information": "0.0.3",
"@types/node": "8.10.19",
"@types/promise.prototype.finally": "2.0.2",
"ajv": "6.10.2",
"chart.js": "2.7.2",
"com-darryncampbell-cordova-plugin-intent": "1.3.0",
"cordova": "9.0.0",
"cordova-android": "8.0.0",
"cordova-android-support-gradle-release": "^3.0.1",
"cordova-clipboard": "^1.3.0",
"cordova-android-support-gradle-release": "3.0.1",
"cordova-clipboard": "1.3.0",
"cordova-ios": "5.0.1",
"cordova-plugin-badge": "^0.8.8",
"cordova-plugin-camera": "^4.1.0",
"cordova-plugin-customurlscheme": "^4.4.0",
"cordova-plugin-device": "^2.0.3",
"cordova-plugin-file": "^6.0.2",
"cordova-plugin-file-opener2": "^2.2.1",
"cordova-plugin-file-transfer": "^1.7.1",
"cordova-plugin-geolocation": "^4.0.2",
"cordova-plugin-globalization": "^1.11.0",
"cordova-plugin-inappbrowser": "^3.1.0",
"cordova-plugin-ionic-keyboard": "^2.1.3",
"cordova-plugin-badge": "0.8.8",
"cordova-plugin-camera": "4.1.0",
"cordova-plugin-customurlscheme": "4.4.0",
"cordova-plugin-device": "2.0.3",
"cordova-plugin-file": "6.0.2",
"cordova-plugin-file-opener2": "2.2.1",
"cordova-plugin-file-transfer": "1.7.1",
"cordova-plugin-geolocation": "4.0.2",
"cordova-plugin-globalization": "1.11.0",
"cordova-plugin-inappbrowser": "3.1.0",
"cordova-plugin-ionic-keyboard": "2.2.0",
"cordova-plugin-local-notification": "git+https://github.com/moodlemobile/cordova-plugin-local-notification.git#moodle",
"cordova-plugin-media-capture": "^3.0.3",
"cordova-plugin-network-information": "^2.0.2",
"cordova-plugin-screen-orientation": "^3.0.2",
"cordova-plugin-splashscreen": "^5.0.3",
"cordova-plugin-statusbar": "^2.4.3",
"cordova-plugin-whitelist": "^1.3.4",
"cordova-plugin-zip": "^3.1.0",
"cordova-sqlite-storage": "^3.4.0",
"cordova-support-google-services": "^1.2.1",
"es6-promise-plugin": "^4.2.2",
"font-awesome": "^4.7.0",
"cordova-plugin-media-capture": "3.0.3",
"cordova-plugin-network-information": "2.0.2",
"cordova-plugin-screen-orientation": "3.0.2",
"cordova-plugin-splashscreen": "5.0.3",
"cordova-plugin-statusbar": "2.4.3",
"cordova-plugin-whitelist": "1.3.4",
"cordova-plugin-zip": "3.1.0",
"cordova-sqlite-storage": "3.4.0",
"cordova-support-google-services": "1.2.1",
"es6-promise-plugin": "4.2.2",
"font-awesome": "4.7.0",
"ionic-angular": "3.9.3",
"ionicons": "^3.0.0",
"jszip": "^3.1.5",
"ionicons": "3.0.0",
"jszip": "3.1.5",
"mathjax": "2.7.2",
"moment": "^2.22.2",
"nl.kingsquare.cordova.background-audio": "^1.0.1",
"phonegap-plugin-multidex": "^1.0.0",
"moment": "2.22.2",
"nl.kingsquare.cordova.background-audio": "1.0.1",
"phonegap-plugin-multidex": "1.0.0",
"phonegap-plugin-push": "git+https://github.com/moodlemobile/phonegap-plugin-push.git#moodle-v3",
"promise.prototype.finally": "^3.1.0",
"rxjs": "^5.5.11",
"sw-toolbox": "^3.6.0",
"ts-md5": "^1.2.4",
"web-animations-js": "^2.3.1",
"zone.js": "^0.8.26"
"promise.prototype.finally": "3.1.0",
"rxjs": "5.5.11",
"sw-toolbox": "3.6.0",
"ts-md5": "1.2.4",
"web-animations-js": "2.3.1",
"zone.js": "0.8.26"
},
"devDependencies": {
"@ionic/app-scripts": "3.2.2",
"electron-builder-lib": "^20.23.1",
"electron-rebuild": "^1.8.1",
"electron-builder-lib": "20.23.1",
"electron-rebuild": "1.8.1",
"gulp": "4.0.2",
"gulp-clip-empty-files": "^0.1.2",
"gulp-concat": "^2.6.1",
"gulp-flatten": "^0.4.0",
"gulp-rename": "^1.3.0",
"gulp-slash": "^1.1.3",
"gulp-util": "^3.0.8",
"node-loader": "^0.6.0",
"through": "^2.3.8",
"typescript": "^2.6.2",
"webpack-merge": "^4.1.2"
"gulp-clip-empty-files": "0.1.2",
"gulp-concat": "2.6.1",
"gulp-flatten": "0.4.0",
"gulp-rename": "1.3.0",
"gulp-slash": "1.1.3",
"gulp-util": "3.0.8",
"node-loader": "0.6.0",
"through": "2.3.8",
"typescript": "2.6.2",
"webpack-merge": "4.1.2"
},
"browser": {
"electron": false
@ -243,4 +243,4 @@
"deleteAppDataOnUninstall": true
}
}
}
}

View File

@ -327,7 +327,7 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem
/**
* Set selected courses filter.
*
* @param {string} filter Filter name to set.
* @param filter Filter name to set.
*/
protected setCourseFilter(filter: string): void {
this.selectedFilter = filter;

View File

@ -437,8 +437,6 @@ export class AddonCalendarListPage implements OnDestroy {
});
}
/**
*/
protected filterEvents(): void {
this.filteredEvents = this.calendarHelper.getFilteredEvents(this.events, this.filter, this.categories);
}

View File

@ -101,7 +101,7 @@ export class AddonModDataFieldLatlongComponent extends AddonModDataFieldPluginCo
/**
* Get user location.
*
* @param {Event} $event The event.
* @param $event The event.
*/
getLocation(event: Event): void {
event.preventDefault();

View File

@ -600,7 +600,7 @@ export class AddonModForumProvider {
* @param siteId Site ID. If not defined, current site.
* @return Promise resolved with an object with:
* - discussions: List of discussions. Note that for every discussion in the list discussion.id is the main post ID but
* discussion ID is discussion.discussion.
* discussion ID is discussion.discussion.
* - canLoadMore: True if there may be more discussions to load.
*/
getDiscussions(forumId: number, sortOrder?: number, page: number = 0, forceCache?: boolean, siteId?: string): Promise<any> {

View File

@ -1905,7 +1905,7 @@ export class CoreSite {
* Get a certain cache expiration delay.
*
* @param updateFrequency The update frequency of the entry.
* @return {number} Expiration delay.
* @return Expiration delay.
*/
getExpirationDelay(updateFrequency?: number): number {
let expirationDelay = this.UPDATE_FREQUENCIES[updateFrequency] || this.UPDATE_FREQUENCIES[CoreSite.FREQUENCY_USUALLY];

View File

@ -1,5 +1,5 @@
<div [class.core-loading-container]="loading" [ngStyle]="{'width': iframeWidth, 'height': iframeHeight}">
<iframe #iframe [hidden]="loading" class="core-iframe" [ngStyle]="{'width': iframeWidth, 'height': iframeHeight}" [src]="safeUrl"></iframe>
<iframe #iframe [hidden]="loading" class="core-iframe" [ngStyle]="{'width': iframeWidth, 'height': iframeHeight}" [src]="safeUrl" [attr.allowfullscreen]="allowFullscreen ? 'allowfullscreen' : null"></iframe>
<span class="core-loading-spinner">
<ion-spinner *ngIf="loading"></ion-spinner>
</span>

View File

@ -21,6 +21,7 @@ import { CoreLoggerProvider } from '@providers/logger';
import { CoreDomUtilsProvider } from '@providers/utils/dom';
import { CoreUrlUtilsProvider } from '@providers/utils/url';
import { CoreIframeUtilsProvider } from '@providers/utils/iframe';
import { CoreUtilsProvider } from '@providers/utils/utils';
import { CoreSplitViewComponent } from '@components/split-view/split-view';
@Component({
@ -33,6 +34,7 @@ export class CoreIframeComponent implements OnInit, OnChanges {
@Input() src: string;
@Input() iframeWidth: string;
@Input() iframeHeight: string;
@Input() allowFullscreen: boolean | string;
@Output() loaded?: EventEmitter<HTMLIFrameElement> = new EventEmitter<HTMLIFrameElement>();
loading: boolean;
safeUrl: SafeResourceUrl;
@ -46,6 +48,7 @@ export class CoreIframeComponent implements OnInit, OnChanges {
protected sanitizer: DomSanitizer,
protected navCtrl: NavController,
protected urlUtils: CoreUrlUtilsProvider,
protected utils: CoreUtilsProvider,
@Optional() protected svComponent: CoreSplitViewComponent) {
this.logger = logger.getInstance('CoreIframe');
@ -60,6 +63,7 @@ export class CoreIframeComponent implements OnInit, OnChanges {
this.iframeWidth = this.domUtils.formatPixelsSize(this.iframeWidth) || '100%';
this.iframeHeight = this.domUtils.formatPixelsSize(this.iframeHeight) || '100%';
this.allowFullscreen = this.utils.isTrueOrOne(this.allowFullscreen);
// Show loading only with external URLs.
this.loading = !this.src || !!this.src.match(/^https?:\/\//i);

View File

@ -1127,7 +1127,7 @@ export class CoreCourseHelperProvider {
* @param courseId Course ID. If not defined we'll try to retrieve it from the site.
* @param sectionId Section the module belongs to. If not defined we'll try to retrieve it from the site.
* @param useModNameToGetModule If true, the app will retrieve all modules of this type with a single WS call. This reduces the
* number of WS calls, but it isn't recommended for modules that can return a lot of contents.
* number of WS calls, but it isn't recommended for modules that can return a lot of contents.
* @param modParams Params to pass to the module
* @param navCtrl NavController for adding new pages to the current history. Optional for legacy support, but
* generates a warning if omitted.

View File

@ -65,7 +65,7 @@ export class CoreFilterDefaultHandler implements CoreFilterHandler {
/**
* Whether or not the handler is enabled on a site level.
*
* @return {boolean|Promise<boolean>} Whether or not the handler is enabled on a site level.
* @return Whether or not the handler is enabled on a site level.
*/
isEnabled(): boolean | Promise<boolean> {
return true;

View File

@ -236,7 +236,7 @@ export class CoreFilterDelegate extends CoreDelegate {
* @param filter Filter to check.
* @param options Options passed to the filters.
* @param site Site. If not defined, current site.
* @return {Promise<boolean>} Promise resolved with true: whether the filter should be applied.
* @return Promise resolved with true: whether the filter should be applied.
*/
shouldBeApplied(filters: CoreFilterFilter[], options: CoreFilterFormatTextOptions, site?: CoreSite): Promise<boolean> {
// Wait for filters to be initialized.

View File

@ -681,8 +681,8 @@ export class CoreH5PContentValidator {
* Processes an HTML tag.
*
* @param m An array with various meaning depending on the value of store.
* If store is TRUE then the array contains the allowed tags.
* If store is FALSE then the array has one element, the HTML tag to process.
* If store is TRUE then the array contains the allowed tags.
* If store is FALSE then the array has one element, the HTML tag to process.
* @param store Whether to store m.
* @return string If the element isn't allowed, an empty string. Otherwise, the cleaned up version of the HTML element.
*/

View File

@ -9,5 +9,5 @@
<core-download-refresh [status]="state" [enabled]="canDownload" [loading]="calculating" [canTrustDownload]="true" (action)="download()"></core-download-refresh>
</div>
</div>
<core-iframe *ngIf="showPackage" [src]="playerSrc" iframeHeight="auto"></core-iframe>
<core-iframe *ngIf="showPackage" [src]="playerSrc" iframeHeight="auto" [allowFullscreen]="true" (loaded)="sendHello($event)"></core-iframe>
<script *ngIf="resizeScript && showPackage" type="text/javascript" [src]="resizeScript"></script>

View File

@ -10,7 +10,7 @@ ion-app.app-root core-h5p-player {
background: url('../assets/img/icons/h5p.svg') center top 25px / 100px auto no-repeat $core-h5p-placeholder-bg-color;
color: $core-h5p-placeholder-text-color;
.icon {
.icon:not([color="success"]) {
color: $core-h5p-placeholder-text-color;
}

View File

@ -106,8 +106,6 @@ export class CoreH5PPlayerComponent implements OnInit, OnChanges, OnDestroy {
let promise;
this.addResizerScript();
if (this.canDownload && this.fileHelper.isStateDownloaded(this.state)) {
// Package is downloaded, use the local URL.
promise = this.h5pProvider.getContentIndexFileUrl(this.urlParams.url, this.urlParams, this.siteId).catch(() => {
@ -145,6 +143,7 @@ export class CoreH5PPlayerComponent implements OnInit, OnChanges, OnDestroy {
});
}
}).finally(() => {
this.addResizerScript();
this.loading = false;
this.showPackage = true;
@ -211,6 +210,11 @@ export class CoreH5PPlayerComponent implements OnInit, OnChanges, OnDestroy {
* Add the resizer script if it hasn't been added already.
*/
protected addResizerScript(): void {
if (document.head.querySelector('#core-h5p-resizer-script') != null) {
// Script already added, don't add it again.
return;
}
const script = document.createElement('script');
script.id = 'core-h5p-resizer-script';
script.type = 'text/javascript';
@ -264,6 +268,20 @@ export class CoreH5PPlayerComponent implements OnInit, OnChanges, OnDestroy {
});
}
/**
* Send hello to the H5P iframe.
*
* @param iframe The iframe.
*/
sendHello(iframe?: HTMLIFrameElement): void {
const ready = {
context: 'h5p',
action: 'ready'
};
iframe.contentWindow.postMessage(ready, '*');
}
/**
* Component destroyed.
*/

View File

@ -66,7 +66,7 @@ export class CoreH5PPluginFileHandler implements CorePluginFileHandler {
* CoreFilepoolProvider.extractDownloadableFilesFromHtml.
*
* @param container Container where to get the URLs from.
* @return {string[]} List of URLs.
* @return List of URLs.
*/
getDownloadableFilesFromHTML(container: HTMLElement): string[] {
const iframes = <HTMLIFrameElement[]> Array.from(container.querySelectorAll('iframe.h5p-iframe'));

View File

@ -164,7 +164,7 @@ export class CoreAppProvider {
/**
* Returns whether the user agent is controlled by automation. I.e. Behat testing.
*
* @return {boolean} True if the user agent is controlled by automation, false otherwise.
* @return True if the user agent is controlled by automation, false otherwise.
*/
static isAutomated(): boolean {
return !!navigator.webdriver;

View File

@ -71,7 +71,7 @@ export interface CorePluginFileHandler extends CoreDelegateHandler {
* CoreFilepoolProvider.extractDownloadableFilesFromHtml.
*
* @param container Container where to get the URLs from.
* @return {string[]} List of URLs.
* @return List of URLs.
*/
getDownloadableFilesFromHTML?(container: HTMLElement): string[];

View File

@ -78,8 +78,8 @@ export class CoreTextUtilsProvider {
/**
* Add ending slash from a path or URL.
*
* @param {string} text Text to treat.
* @return {string} Treated text.
* @param text Text to treat.
* @return Treated text.
*/
addEndingSlash(text: string): string {
if (!text) {
@ -742,7 +742,7 @@ export class CoreTextUtilsProvider {
* @param replace The value to put inside the string.
* @param start The index where to start putting the new string. If negative, it will count from the end of the string.
* @param length Length of the portion of string which is to be replaced. If negative, it represents the number of characters
* from the end of string at which to stop replacing. If not provided, replace until the end of the string.
* from the end of string at which to stop replacing. If not provided, replace until the end of the string.
* @return Treated string.
*/
substrReplace(str: string, replace: string, start: number, length?: number): string {