commit
5c381e3623
|
@ -1,5 +1,5 @@
|
||||||
<?xml version='1.0' encoding='utf-8'?>
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
<widget android-versionCode="39100" id="com.moodle.moodlemobile" ios-CFBundleVersion="3.9.1.0" version="3.9.1" versionCode="39100" 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">
|
<widget android-versionCode="39200" id="com.moodle.moodlemobile" ios-CFBundleVersion="3.9.2.0" version="3.9.2" versionCode="39200" 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">
|
||||||
<name>Moodle</name>
|
<name>Moodle</name>
|
||||||
<description>Moodle official app</description>
|
<description>Moodle official app</description>
|
||||||
<author email="mobile@moodle.com" href="http://moodle.com">Moodle Mobile team</author>
|
<author email="mobile@moodle.com" href="http://moodle.com">Moodle Mobile team</author>
|
||||||
|
@ -241,7 +241,7 @@
|
||||||
<true />
|
<true />
|
||||||
</edit-config>
|
</edit-config>
|
||||||
<edit-config file="*-Info.plist" mode="merge" target="CFBundleShortVersionString">
|
<edit-config file="*-Info.plist" mode="merge" target="CFBundleShortVersionString">
|
||||||
<string>3.9.1</string>
|
<string>3.9.2</string>
|
||||||
</edit-config>
|
</edit-config>
|
||||||
<config-file parent="FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED" target="*-Info.plist">
|
<config-file parent="FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED" target="*-Info.plist">
|
||||||
<string>YES</string>
|
<string>YES</string>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<Identity Name="3312ADB7.MoodleDesktop"
|
<Identity Name="3312ADB7.MoodleDesktop"
|
||||||
ProcessorArchitecture="x64"
|
ProcessorArchitecture="x64"
|
||||||
Publisher="CN=33CDCDF6-1EB5-4827-9897-ED25C91A32F6"
|
Publisher="CN=33CDCDF6-1EB5-4827-9897-ED25C91A32F6"
|
||||||
Version="3.9.1.0" />
|
Version="3.9.2.0" />
|
||||||
<Properties>
|
<Properties>
|
||||||
<DisplayName>Moodle Desktop</DisplayName>
|
<DisplayName>Moodle Desktop</DisplayName>
|
||||||
<PublisherDisplayName>Moodle Pty Ltd.</PublisherDisplayName>
|
<PublisherDisplayName>Moodle Pty Ltd.</PublisherDisplayName>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "moodlemobile",
|
"name": "moodlemobile",
|
||||||
"version": "3.9.0",
|
"version": "3.9.2",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -6236,7 +6236,8 @@
|
||||||
"ansi-regex": {
|
"ansi-regex": {
|
||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
|
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"aproba": {
|
"aproba": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
|
@ -6257,12 +6258,14 @@
|
||||||
"balanced-match": {
|
"balanced-match": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
|
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"brace-expansion": {
|
"brace-expansion": {
|
||||||
"version": "1.1.11",
|
"version": "1.1.11",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"balanced-match": "^1.0.0",
|
"balanced-match": "^1.0.0",
|
||||||
"concat-map": "0.0.1"
|
"concat-map": "0.0.1"
|
||||||
|
@ -6277,17 +6280,20 @@
|
||||||
"code-point-at": {
|
"code-point-at": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
|
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"concat-map": {
|
"concat-map": {
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"console-control-strings": {
|
"console-control-strings": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
|
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"core-util-is": {
|
"core-util-is": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
|
@ -6412,7 +6418,8 @@
|
||||||
"inherits": {
|
"inherits": {
|
||||||
"version": "2.0.3",
|
"version": "2.0.3",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
|
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"ini": {
|
"ini": {
|
||||||
"version": "1.3.5",
|
"version": "1.3.5",
|
||||||
|
@ -6424,6 +6431,7 @@
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
|
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"number-is-nan": "^1.0.0"
|
"number-is-nan": "^1.0.0"
|
||||||
}
|
}
|
||||||
|
@ -6438,6 +6446,7 @@
|
||||||
"version": "3.0.4",
|
"version": "3.0.4",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"brace-expansion": "^1.1.7"
|
"brace-expansion": "^1.1.7"
|
||||||
}
|
}
|
||||||
|
@ -6481,6 +6490,7 @@
|
||||||
"version": "0.5.1",
|
"version": "0.5.1",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
|
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"minimist": "0.0.8"
|
"minimist": "0.0.8"
|
||||||
},
|
},
|
||||||
|
@ -6488,7 +6498,8 @@
|
||||||
"minimist": {
|
"minimist": {
|
||||||
"version": "0.0.8",
|
"version": "0.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
|
||||||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
|
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
|
||||||
|
"optional": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -6587,7 +6598,8 @@
|
||||||
"number-is-nan": {
|
"number-is-nan": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
|
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"object-assign": {
|
"object-assign": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
|
@ -6599,6 +6611,7 @@
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"wrappy": "1"
|
"wrappy": "1"
|
||||||
}
|
}
|
||||||
|
@ -6720,6 +6733,7 @@
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
|
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"code-point-at": "^1.0.0",
|
"code-point-at": "^1.0.0",
|
||||||
"is-fullwidth-code-point": "^1.0.0",
|
"is-fullwidth-code-point": "^1.0.0",
|
||||||
|
@ -6739,6 +6753,7 @@
|
||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-regex": "^2.0.0"
|
"ansi-regex": "^2.0.0"
|
||||||
}
|
}
|
||||||
|
@ -6794,7 +6809,8 @@
|
||||||
"wrappy": {
|
"wrappy": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"yallist": {
|
"yallist": {
|
||||||
"version": "3.0.3",
|
"version": "3.0.3",
|
||||||
|
@ -7278,7 +7294,8 @@
|
||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
|
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"aproba": {
|
"aproba": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
|
@ -7302,13 +7319,15 @@
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"brace-expansion": {
|
"brace-expansion": {
|
||||||
"version": "1.1.11",
|
"version": "1.1.11",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"balanced-match": "^1.0.0",
|
"balanced-match": "^1.0.0",
|
||||||
"concat-map": "0.0.1"
|
"concat-map": "0.0.1"
|
||||||
|
@ -7325,19 +7344,22 @@
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
|
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"concat-map": {
|
"concat-map": {
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"console-control-strings": {
|
"console-control-strings": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
|
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"core-util-is": {
|
"core-util-is": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
|
@ -7468,7 +7490,8 @@
|
||||||
"version": "2.0.3",
|
"version": "2.0.3",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
|
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"ini": {
|
"ini": {
|
||||||
"version": "1.3.5",
|
"version": "1.3.5",
|
||||||
|
@ -7482,6 +7505,7 @@
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
|
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"number-is-nan": "^1.0.0"
|
"number-is-nan": "^1.0.0"
|
||||||
}
|
}
|
||||||
|
@ -7498,6 +7522,7 @@
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"brace-expansion": "^1.1.7"
|
"brace-expansion": "^1.1.7"
|
||||||
}
|
}
|
||||||
|
@ -7506,13 +7531,15 @@
|
||||||
"version": "0.0.8",
|
"version": "0.0.8",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
|
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"minipass": {
|
"minipass": {
|
||||||
"version": "2.3.5",
|
"version": "2.3.5",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
|
"integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"safe-buffer": "^5.1.2",
|
"safe-buffer": "^5.1.2",
|
||||||
"yallist": "^3.0.0"
|
"yallist": "^3.0.0"
|
||||||
|
@ -7533,6 +7560,7 @@
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
|
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"minimist": "0.0.8"
|
"minimist": "0.0.8"
|
||||||
}
|
}
|
||||||
|
@ -7621,7 +7649,8 @@
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
|
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"object-assign": {
|
"object-assign": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
|
@ -7635,6 +7664,7 @@
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"wrappy": "1"
|
"wrappy": "1"
|
||||||
}
|
}
|
||||||
|
@ -7730,7 +7760,8 @@
|
||||||
"version": "5.1.2",
|
"version": "5.1.2",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
|
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"safer-buffer": {
|
"safer-buffer": {
|
||||||
"version": "2.1.2",
|
"version": "2.1.2",
|
||||||
|
@ -7772,6 +7803,7 @@
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
|
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"code-point-at": "^1.0.0",
|
"code-point-at": "^1.0.0",
|
||||||
"is-fullwidth-code-point": "^1.0.0",
|
"is-fullwidth-code-point": "^1.0.0",
|
||||||
|
@ -7793,6 +7825,7 @@
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-regex": "^2.0.0"
|
"ansi-regex": "^2.0.0"
|
||||||
}
|
}
|
||||||
|
@ -7841,13 +7874,15 @@
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"yallist": {
|
"yallist": {
|
||||||
"version": "3.0.3",
|
"version": "3.0.3",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
|
"integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -14909,7 +14944,8 @@
|
||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
|
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"aproba": {
|
"aproba": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
|
@ -14933,13 +14969,15 @@
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"brace-expansion": {
|
"brace-expansion": {
|
||||||
"version": "1.1.11",
|
"version": "1.1.11",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"balanced-match": "^1.0.0",
|
"balanced-match": "^1.0.0",
|
||||||
"concat-map": "0.0.1"
|
"concat-map": "0.0.1"
|
||||||
|
@ -14956,19 +14994,22 @@
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
|
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"concat-map": {
|
"concat-map": {
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"console-control-strings": {
|
"console-control-strings": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
|
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"core-util-is": {
|
"core-util-is": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
|
@ -15099,7 +15140,8 @@
|
||||||
"version": "2.0.3",
|
"version": "2.0.3",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
|
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"ini": {
|
"ini": {
|
||||||
"version": "1.3.5",
|
"version": "1.3.5",
|
||||||
|
@ -15113,6 +15155,7 @@
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
|
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"number-is-nan": "^1.0.0"
|
"number-is-nan": "^1.0.0"
|
||||||
}
|
}
|
||||||
|
@ -15129,6 +15172,7 @@
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"brace-expansion": "^1.1.7"
|
"brace-expansion": "^1.1.7"
|
||||||
}
|
}
|
||||||
|
@ -15137,13 +15181,15 @@
|
||||||
"version": "0.0.8",
|
"version": "0.0.8",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
|
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"minipass": {
|
"minipass": {
|
||||||
"version": "2.3.5",
|
"version": "2.3.5",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
|
"integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"safe-buffer": "^5.1.2",
|
"safe-buffer": "^5.1.2",
|
||||||
"yallist": "^3.0.0"
|
"yallist": "^3.0.0"
|
||||||
|
@ -15164,6 +15210,7 @@
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
|
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"minimist": "0.0.8"
|
"minimist": "0.0.8"
|
||||||
}
|
}
|
||||||
|
@ -15252,7 +15299,8 @@
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
|
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"object-assign": {
|
"object-assign": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
|
@ -15266,6 +15314,7 @@
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"wrappy": "1"
|
"wrappy": "1"
|
||||||
}
|
}
|
||||||
|
@ -15361,7 +15410,8 @@
|
||||||
"version": "5.1.2",
|
"version": "5.1.2",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
|
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"safer-buffer": {
|
"safer-buffer": {
|
||||||
"version": "2.1.2",
|
"version": "2.1.2",
|
||||||
|
@ -15403,6 +15453,7 @@
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
|
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"code-point-at": "^1.0.0",
|
"code-point-at": "^1.0.0",
|
||||||
"is-fullwidth-code-point": "^1.0.0",
|
"is-fullwidth-code-point": "^1.0.0",
|
||||||
|
@ -15424,6 +15475,7 @@
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-regex": "^2.0.0"
|
"ansi-regex": "^2.0.0"
|
||||||
}
|
}
|
||||||
|
@ -15472,13 +15524,15 @@
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"yallist": {
|
"yallist": {
|
||||||
"version": "3.0.3",
|
"version": "3.0.3",
|
||||||
"resolved": false,
|
"resolved": false,
|
||||||
"integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
|
"integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "moodlemobile",
|
"name": "moodlemobile",
|
||||||
"version": "3.9.1",
|
"version": "3.9.2",
|
||||||
"description": "The official app for Moodle.",
|
"description": "The official app for Moodle.",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Moodle Pty Ltd.",
|
"name": "Moodle Pty Ltd.",
|
||||||
|
@ -253,7 +253,7 @@
|
||||||
"category": "public.app-category.education",
|
"category": "public.app-category.education",
|
||||||
"icon": "resources/desktop/icon.icns",
|
"icon": "resources/desktop/icon.icns",
|
||||||
"target": "mas",
|
"target": "mas",
|
||||||
"bundleVersion": "3.9.1",
|
"bundleVersion": "3.9.2",
|
||||||
"extendInfo": {
|
"extendInfo": {
|
||||||
"ElectronTeamID": "2NU57U5PAW"
|
"ElectronTeamID": "2NU57U5PAW"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
LANGPACKSFOLDER='../../moodle-langpacks'
|
LANGPACKSFOLDER='../../moodle-langpacks'
|
||||||
stepnumber=$1
|
|
||||||
|
|
||||||
function check_success_exit {
|
function check_success_exit {
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
|
|
|
@ -186,7 +186,7 @@ function build_lang($lang, $keys) {
|
||||||
$local = 0;
|
$local = 0;
|
||||||
|
|
||||||
$langparts = explode('-', $lang, 2);
|
$langparts = explode('-', $lang, 2);
|
||||||
$parentname = $langparts[0] ?? "";
|
$parentname = $langparts[0] ? $langparts[0] : "";
|
||||||
$parent = "";
|
$parent = "";
|
||||||
|
|
||||||
echo "Processing $lang";
|
echo "Processing $lang";
|
||||||
|
@ -307,8 +307,6 @@ function detect_lang($lang, $keys) {
|
||||||
$langname = $string['thislanguage'];
|
$langname = $string['thislanguage'];
|
||||||
$title .= " ".$langname." -D";
|
$title .= " ".$langname." -D";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Add the translation to the array.
|
// Add the translation to the array.
|
||||||
foreach ($keys as $key => $value) {
|
foreach ($keys as $key => $value) {
|
||||||
$string = get_translation_strings($langfoldername, $value->file);
|
$string = get_translation_strings($langfoldername, $value->file);
|
||||||
|
|
|
@ -1557,6 +1557,7 @@
|
||||||
"core.errorsomedatanotdownloaded": "local_moodlemobileapp",
|
"core.errorsomedatanotdownloaded": "local_moodlemobileapp",
|
||||||
"core.errorsync": "local_moodlemobileapp",
|
"core.errorsync": "local_moodlemobileapp",
|
||||||
"core.errorsyncblocked": "local_moodlemobileapp",
|
"core.errorsyncblocked": "local_moodlemobileapp",
|
||||||
|
"core.errorurlschemeinvalidsite": "local_moodlemobileapp",
|
||||||
"core.explanationdigitalminor": "moodle",
|
"core.explanationdigitalminor": "moodle",
|
||||||
"core.favourites": "moodle",
|
"core.favourites": "moodle",
|
||||||
"core.filename": "repository",
|
"core.filename": "repository",
|
||||||
|
@ -2096,6 +2097,7 @@
|
||||||
"core.tag.errorareanotsupported": "local_moodlemobileapp",
|
"core.tag.errorareanotsupported": "local_moodlemobileapp",
|
||||||
"core.tag.inalltagcoll": "tag",
|
"core.tag.inalltagcoll": "tag",
|
||||||
"core.tag.itemstaggedwith": "tag",
|
"core.tag.itemstaggedwith": "tag",
|
||||||
|
"core.tag.noresultsfor": "tag",
|
||||||
"core.tag.notagsfound": "tag",
|
"core.tag.notagsfound": "tag",
|
||||||
"core.tag.searchtags": "tag",
|
"core.tag.searchtags": "tag",
|
||||||
"core.tag.showingfirsttags": "tag",
|
"core.tag.showingfirsttags": "tag",
|
||||||
|
|
|
@ -37,7 +37,7 @@ export class AddonBlockMyOverviewHandler extends CoreBlockBaseHandler {
|
||||||
* @return 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> {
|
isEnabled(): boolean | Promise<boolean> {
|
||||||
return this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.6') ||
|
return (this.sitesProvider.getCurrentSite() && this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.6')) ||
|
||||||
!this.coursesProvider.isMyCoursesDisabledInSite();
|
!this.coursesProvider.isMyCoursesDisabledInSite();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,9 @@ export class AddonBlockTimelineHandler extends CoreBlockBaseHandler {
|
||||||
*/
|
*/
|
||||||
isEnabled(): boolean | Promise<boolean> {
|
isEnabled(): boolean | Promise<boolean> {
|
||||||
return this.timelineProvider.isAvailable().then((enabled) => {
|
return this.timelineProvider.isAvailable().then((enabled) => {
|
||||||
return enabled && (this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.6') ||
|
const currentSite = this.sitesProvider.getCurrentSite();
|
||||||
|
|
||||||
|
return enabled && ((currentSite && currentSite.isVersionGreaterEqualThan('3.6')) ||
|
||||||
!this.coursesProvider.isMyCoursesDisabledInSite());
|
!this.coursesProvider.isMyCoursesDisabledInSite());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -222,7 +222,7 @@ export class AddonCalendarCalendarComponent implements OnInit, OnChanges, DoChec
|
||||||
let isPast = true;
|
let isPast = true;
|
||||||
|
|
||||||
this.weeks.forEach((week) => {
|
this.weeks.forEach((week) => {
|
||||||
week.days.some((day) => {
|
week.days.forEach((day) => {
|
||||||
day.istoday = day.mday == currentDay;
|
day.istoday = day.mday == currentDay;
|
||||||
day.ispast = isPast && !day.istoday;
|
day.ispast = isPast && !day.istoday;
|
||||||
isPast = day.ispast;
|
isPast = day.ispast;
|
||||||
|
@ -231,11 +231,7 @@ export class AddonCalendarCalendarComponent implements OnInit, OnChanges, DoChec
|
||||||
day.events.forEach((event) => {
|
day.events.forEach((event) => {
|
||||||
event.ispast = this.isEventPast(event);
|
event.ispast = this.isEventPast(event);
|
||||||
});
|
});
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return day.istoday;
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -393,7 +393,7 @@ export class AddonCalendarProvider {
|
||||||
site = site || this.sitesProvider.getCurrentSite();
|
site = site || this.sitesProvider.getCurrentSite();
|
||||||
|
|
||||||
// The WS to create/edit events requires a fix that was integrated in 3.7.1.
|
// The WS to create/edit events requires a fix that was integrated in 3.7.1.
|
||||||
return site.isVersionGreaterEqualThan('3.7.1');
|
return site && site.isVersionGreaterEqualThan('3.7.1');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -83,6 +83,6 @@ export class AddonFilterMultilangHandler extends CoreFilterDefaultHandler {
|
||||||
*/
|
*/
|
||||||
shouldBeApplied(options: CoreFilterFormatTextOptions, site?: CoreSite): boolean {
|
shouldBeApplied(options: CoreFilterFormatTextOptions, site?: CoreSite): boolean {
|
||||||
// The filter should be applied if site is older than 3.7 or the WS didn't filter the text.
|
// The filter should be applied if site is older than 3.7 or the WS didn't filter the text.
|
||||||
return options.wsNotFiltered || !site.isVersionGreaterEqualThan('3.7');
|
return options.wsNotFiltered || (site && !site.isVersionGreaterEqualThan('3.7'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -207,9 +207,10 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo
|
||||||
|
|
||||||
// Check if groupmode is enabled to avoid showing wrong numbers.
|
// Check if groupmode is enabled to avoid showing wrong numbers.
|
||||||
return this.groupsProvider.getActivityGroupInfo(this.assign.cmid, false).then((groupInfo) => {
|
return this.groupsProvider.getActivityGroupInfo(this.assign.cmid, false).then((groupInfo) => {
|
||||||
|
const currentSite = this.sitesProvider.getCurrentSite();
|
||||||
this.groupInfo = groupInfo;
|
this.groupInfo = groupInfo;
|
||||||
this.showNumbers = groupInfo.groups.length == 0 ||
|
this.showNumbers = groupInfo.groups.length == 0 ||
|
||||||
this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.5');
|
(currentSite && currentSite.isVersionGreaterEqualThan('3.5'));
|
||||||
|
|
||||||
return this.setGroup(this.groupsProvider.validateGroupId(this.group, groupInfo));
|
return this.setGroup(this.groupsProvider.validateGroupId(this.group, groupInfo));
|
||||||
});
|
});
|
||||||
|
@ -258,8 +259,10 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const currentSite = this.sitesProvider.getCurrentSite();
|
||||||
|
|
||||||
this.needsGradingAvalaible = response.gradingsummary && response.gradingsummary.submissionsneedgradingcount > 0 &&
|
this.needsGradingAvalaible = response.gradingsummary && response.gradingsummary.submissionsneedgradingcount > 0 &&
|
||||||
this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.2');
|
currentSite && currentSite.isVersionGreaterEqualThan('3.2');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -225,7 +225,7 @@ export class AddonModAssignSubmissionOnlineTextHandler implements AddonModAssign
|
||||||
// Bug was fixed in 3.1.1 minor release and in 3.2.
|
// Bug was fixed in 3.1.1 minor release and in 3.2.
|
||||||
const currentSite = this.sitesProvider.getCurrentSite();
|
const currentSite = this.sitesProvider.getCurrentSite();
|
||||||
|
|
||||||
return currentSite.isVersionGreaterEqualThan('3.1.1') || currentSite.checkIfAppUsesLocalMobile();
|
return currentSite && (currentSite.isVersionGreaterEqualThan('3.1.1') || currentSite.checkIfAppUsesLocalMobile());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -291,7 +291,8 @@ export class AddonModForumProvider {
|
||||||
* @return True if fixed, false otherwise.
|
* @return True if fixed, false otherwise.
|
||||||
*/
|
*/
|
||||||
isAllParticipantsFixed(): boolean {
|
isAllParticipantsFixed(): boolean {
|
||||||
return this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan(['3.1.5', '3.2.2']);
|
return this.sitesProvider.getCurrentSite() &&
|
||||||
|
this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan(['3.1.5', '3.2.2']);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -543,7 +544,7 @@ export class AddonModForumProvider {
|
||||||
isDiscussionListSortingAvailable(site?: CoreSite): boolean {
|
isDiscussionListSortingAvailable(site?: CoreSite): boolean {
|
||||||
site = site || this.sitesProvider.getCurrentSite();
|
site = site || this.sitesProvider.getCurrentSite();
|
||||||
|
|
||||||
return site.isVersionGreaterEqualThan('3.7');
|
return site && site.isVersionGreaterEqualThan('3.7');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -87,7 +87,8 @@ export class AddonModForumPrefetchHandler extends CoreCourseActivityPrefetchHand
|
||||||
*/
|
*/
|
||||||
protected getPostsFiles(posts: any[]): any[] {
|
protected getPostsFiles(posts: any[]): any[] {
|
||||||
let files = [];
|
let files = [];
|
||||||
const getInlineFiles = this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.2');
|
const getInlineFiles = this.sitesProvider.getCurrentSite() &&
|
||||||
|
this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.2');
|
||||||
|
|
||||||
posts.forEach((post) => {
|
posts.forEach((post) => {
|
||||||
if (post.attachments && post.attachments.length) {
|
if (post.attachments && post.attachments.length) {
|
||||||
|
|
|
@ -86,7 +86,8 @@ export class AddonModGlossaryPrefetchHandler extends CoreCourseActivityPrefetchH
|
||||||
*/
|
*/
|
||||||
protected getFilesFromGlossaryAndEntries(module: any, glossary: any, entries: any[]): any[] {
|
protected getFilesFromGlossaryAndEntries(module: any, glossary: any, entries: any[]): any[] {
|
||||||
let files = this.getIntroFilesFromInstance(module, glossary);
|
let files = this.getIntroFilesFromInstance(module, glossary);
|
||||||
const getInlineFiles = this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.2');
|
const getInlineFiles = this.sitesProvider.getCurrentSite() &&
|
||||||
|
this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.2');
|
||||||
|
|
||||||
// Get entries files.
|
// Get entries files.
|
||||||
entries.forEach((entry) => {
|
entries.forEach((entry) => {
|
||||||
|
|
|
@ -110,8 +110,9 @@ export class AddonModQuizPrefetchHandler extends CoreCourseActivityPrefetchHandl
|
||||||
*/
|
*/
|
||||||
protected getAttemptsFeedbackFiles(quiz: any, attempts: any[]): Promise<any[]> {
|
protected getAttemptsFeedbackFiles(quiz: any, attempts: any[]): Promise<any[]> {
|
||||||
// We have quiz data, now we'll get specific data for each attempt.
|
// We have quiz data, now we'll get specific data for each attempt.
|
||||||
const promises = [],
|
const promises = [];
|
||||||
getInlineFiles = this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.2');
|
const getInlineFiles = this.sitesProvider.getCurrentSite() &&
|
||||||
|
this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.2');
|
||||||
let files = [];
|
let files = [];
|
||||||
|
|
||||||
attempts.forEach((attempt) => {
|
attempts.forEach((attempt) => {
|
||||||
|
|
|
@ -104,8 +104,10 @@ export class AddonModResourceHelperProvider {
|
||||||
* @return Whether the resource should be displayed embeded.
|
* @return Whether the resource should be displayed embeded.
|
||||||
*/
|
*/
|
||||||
isDisplayedEmbedded(module: any, display: number): boolean {
|
isDisplayedEmbedded(module: any, display: number): boolean {
|
||||||
|
const currentSite = this.sitesProvider.getCurrentSite();
|
||||||
|
|
||||||
if ((!module.contents.length && !module.contentsinfo) || !this.fileProvider.isAvailable() ||
|
if ((!module.contents.length && !module.contentsinfo) || !this.fileProvider.isAvailable() ||
|
||||||
(!this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.7') && this.isNextcloudFile(module))) {
|
(currentSite && !currentSite.isVersionGreaterEqualThan('3.7') && this.isNextcloudFile(module))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -147,7 +147,7 @@ export class AddonModResourcePrefetchHandler extends CoreCourseResourcePrefetchH
|
||||||
* @return Promise resolved with true if downloadable, resolved with false otherwise.
|
* @return Promise resolved with true if downloadable, resolved with false otherwise.
|
||||||
*/
|
*/
|
||||||
isDownloadable(module: any, courseId: number): Promise<boolean> {
|
isDownloadable(module: any, courseId: number): Promise<boolean> {
|
||||||
if (this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.7')) {
|
if (this.sitesProvider.getCurrentSite() && this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.7')) {
|
||||||
// Nextcloud files are downloadable from 3.7 onwards.
|
// Nextcloud files are downloadable from 3.7 onwards.
|
||||||
return Promise.resolve(true);
|
return Promise.resolve(true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
<ion-content>
|
<ion-content>
|
||||||
<core-loading [hideUntil]="loaded">
|
<core-loading [hideUntil]="loaded">
|
||||||
<core-navigation-bar [previous]="previousSco" [next]="nextSco" (action)="loadSco($event)"></core-navigation-bar>
|
<core-navigation-bar [previous]="previousSco" [next]="nextSco" (action)="loadSco($event)"></core-navigation-bar>
|
||||||
<core-iframe *ngIf="loaded && src" [src]="src" [iframeWidth]="scorm.popup ? scorm.width : undefined" [iframeHeight]="scorm.popup ? scorm.height : undefined"></core-iframe>
|
<core-iframe *ngIf="loaded && src" [src]="src" [iframeWidth]="scormWidth" [iframeHeight]="scormHeight"></core-iframe>
|
||||||
<p *ngIf="!src && errorMessage">{{ errorMessage | translate }}</p>
|
<p *ngIf="!src && errorMessage">{{ errorMessage | translate }}</p>
|
||||||
</core-loading>
|
</core-loading>
|
||||||
</ion-content>
|
</ion-content>
|
||||||
|
|
|
@ -17,7 +17,7 @@ import { IonicPage, NavParams, ModalController } from 'ionic-angular';
|
||||||
import { CoreEventsProvider } from '@providers/events';
|
import { CoreEventsProvider } from '@providers/events';
|
||||||
import { CoreSitesProvider } from '@providers/sites';
|
import { CoreSitesProvider } from '@providers/sites';
|
||||||
import { CoreSyncProvider } from '@providers/sync';
|
import { CoreSyncProvider } from '@providers/sync';
|
||||||
import { CoreDomUtilsProvider } from '@providers/utils/dom';
|
import { CoreDomUtils } from '@providers/utils/dom';
|
||||||
import { CoreTimeUtilsProvider } from '@providers/utils/time';
|
import { CoreTimeUtilsProvider } from '@providers/utils/time';
|
||||||
import { CoreIonTabsComponent } from '@components/ion-tabs/ion-tabs';
|
import { CoreIonTabsComponent } from '@components/ion-tabs/ion-tabs';
|
||||||
import { AddonModScormProvider, AddonModScormAttemptCountResult } from '../../providers/scorm';
|
import { AddonModScormProvider, AddonModScormAttemptCountResult } from '../../providers/scorm';
|
||||||
|
@ -46,6 +46,8 @@ export class AddonModScormPlayerPage implements OnInit, OnDestroy {
|
||||||
src: string; // Iframe src.
|
src: string; // Iframe src.
|
||||||
errorMessage: string; // Error message.
|
errorMessage: string; // Error message.
|
||||||
accessInfo: any; // Access information.
|
accessInfo: any; // Access information.
|
||||||
|
scormWidth: null; // Width applied to scorm iframe.
|
||||||
|
scormHeight: null; // Height applied to scorm iframe.
|
||||||
|
|
||||||
protected siteId: string;
|
protected siteId: string;
|
||||||
protected mode: string; // Mode to play the SCORM.
|
protected mode: string; // Mode to play the SCORM.
|
||||||
|
@ -65,11 +67,18 @@ export class AddonModScormPlayerPage implements OnInit, OnDestroy {
|
||||||
protected launchPrevObserver: any;
|
protected launchPrevObserver: any;
|
||||||
protected goOfflineObserver: any;
|
protected goOfflineObserver: any;
|
||||||
|
|
||||||
constructor(navParams: NavParams, protected modalCtrl: ModalController, protected eventsProvider: CoreEventsProvider,
|
constructor(
|
||||||
protected sitesProvider: CoreSitesProvider, protected syncProvider: CoreSyncProvider,
|
navParams: NavParams,
|
||||||
protected domUtils: CoreDomUtilsProvider, protected timeUtils: CoreTimeUtilsProvider,
|
protected modalCtrl: ModalController,
|
||||||
protected scormProvider: AddonModScormProvider, protected scormHelper: AddonModScormHelperProvider,
|
protected eventsProvider: CoreEventsProvider,
|
||||||
protected scormSyncProvider: AddonModScormSyncProvider, protected tabs: CoreIonTabsComponent) {
|
protected sitesProvider: CoreSitesProvider,
|
||||||
|
protected syncProvider: CoreSyncProvider,
|
||||||
|
protected timeUtils: CoreTimeUtilsProvider,
|
||||||
|
protected scormProvider: AddonModScormProvider,
|
||||||
|
protected scormHelper: AddonModScormHelperProvider,
|
||||||
|
protected scormSyncProvider: AddonModScormSyncProvider,
|
||||||
|
protected tabs: CoreIonTabsComponent
|
||||||
|
) {
|
||||||
|
|
||||||
this.scorm = navParams.get('scorm') || {};
|
this.scorm = navParams.get('scorm') || {};
|
||||||
this.mode = navParams.get('mode') || AddonModScormProvider.MODENORMAL;
|
this.mode = navParams.get('mode') || AddonModScormProvider.MODENORMAL;
|
||||||
|
@ -95,12 +104,14 @@ export class AddonModScormPlayerPage implements OnInit, OnDestroy {
|
||||||
if (this.scorm.popup) {
|
if (this.scorm.popup) {
|
||||||
this.tabs.changeVisibility(false);
|
this.tabs.changeVisibility(false);
|
||||||
|
|
||||||
// If we receive a value <= 100 we need to assume it's a percentage.
|
// If we receive a value > 100 we assume it's a fixed pixel size.
|
||||||
if (this.scorm.width <= 100) {
|
if (this.scorm.width > 100) {
|
||||||
this.scorm.width = this.scorm.width + '%';
|
this.scormWidth = this.scorm.width;
|
||||||
}
|
|
||||||
if (this.scorm.height <= 100) {
|
// Only get fixed size on height if width is also fixed.
|
||||||
this.scorm.height = this.scorm.height + '%';
|
if (this.scorm.height > 100) {
|
||||||
|
this.scormHeight = this.scorm.height;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,7 +122,7 @@ export class AddonModScormPlayerPage implements OnInit, OnDestroy {
|
||||||
const promise = this.newAttempt ? this.setStartTime(this.currentSco.id) : Promise.resolve();
|
const promise = this.newAttempt ? this.setStartTime(this.currentSco.id) : Promise.resolve();
|
||||||
|
|
||||||
return promise.catch((error) => {
|
return promise.catch((error) => {
|
||||||
this.domUtils.showErrorModalDefault(error, 'addon.mod_scorm.errorgetscorm', true);
|
CoreDomUtils.instance.showErrorModalDefault(error, 'addon.mod_scorm.errorgetscorm', true);
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
// Load SCO.
|
// Load SCO.
|
||||||
this.loadSco(this.currentSco);
|
this.loadSco(this.currentSco);
|
||||||
|
@ -152,7 +163,7 @@ export class AddonModScormPlayerPage implements OnInit, OnDestroy {
|
||||||
// Wait a bit to prevent collisions between this store and SCORM API's store.
|
// Wait a bit to prevent collisions between this store and SCORM API's store.
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.scormHelper.convertAttemptToOffline(this.scorm, this.attempt).catch((error) => {
|
this.scormHelper.convertAttemptToOffline(this.scorm, this.attempt).catch((error) => {
|
||||||
this.domUtils.showErrorModalDefault(error, 'core.error', true);
|
CoreDomUtils.instance.showErrorModalDefault(error, 'core.error', true);
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.refreshToc();
|
this.refreshToc();
|
||||||
});
|
});
|
||||||
|
@ -248,7 +259,7 @@ export class AddonModScormPlayerPage implements OnInit, OnDestroy {
|
||||||
return Promise.all(promises);
|
return Promise.all(promises);
|
||||||
});
|
});
|
||||||
}).catch((error) => {
|
}).catch((error) => {
|
||||||
this.domUtils.showErrorModalDefault(error, 'addon.mod_scorm.errorgetscorm', true);
|
CoreDomUtils.instance.showErrorModalDefault(error, 'addon.mod_scorm.errorgetscorm', true);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -372,7 +383,7 @@ export class AddonModScormPlayerPage implements OnInit, OnDestroy {
|
||||||
|
|
||||||
return this.scormProvider.saveTracks(sco.id, this.attempt, tracks, this.scorm, true);
|
return this.scormProvider.saveTracks(sco.id, this.attempt, tracks, this.scorm, true);
|
||||||
}).catch((error) => {
|
}).catch((error) => {
|
||||||
this.domUtils.showErrorModalDefault(error, 'core.error', true);
|
CoreDomUtils.instance.showErrorModalDefault(error, 'core.error', true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -432,7 +443,7 @@ export class AddonModScormPlayerPage implements OnInit, OnDestroy {
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
return this.fetchToc();
|
return this.fetchToc();
|
||||||
}).catch((error) => {
|
}).catch((error) => {
|
||||||
this.domUtils.showErrorModalDefault(error, 'addon.mod_scorm.errorgetscorm', true);
|
CoreDomUtils.instance.showErrorModalDefault(error, 'addon.mod_scorm.errorgetscorm', true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -112,7 +112,7 @@
|
||||||
<h2>{{ 'addon.mod_workshop.publishedsubmissions' | translate }}</h2>
|
<h2>{{ 'addon.mod_workshop.publishedsubmissions' | translate }}</h2>
|
||||||
</ion-item-divider>
|
</ion-item-divider>
|
||||||
<ng-container *ngFor="let submission of publishedSubmissions">
|
<ng-container *ngFor="let submission of publishedSubmissions">
|
||||||
<addon-mod-workshop-submission [submission]="submission" [courseId]="workshop.course" [module]="module" [workshop]="workshop" [access]="access" summary="true"></addon-mod-workshop-submission>
|
<addon-mod-workshop-submission [submission]="submission" [courseId]="workshop.course" [module]="module" [workshop]="workshop" [access]="access" summary="true" class="core-as-item"></addon-mod-workshop-submission>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
</ion-card>
|
</ion-card>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
@ -134,7 +134,7 @@
|
||||||
<p>{{ 'addon.mod_workshop.assignedassessmentsnone' | translate }}</p>
|
<p>{{ 'addon.mod_workshop.assignedassessmentsnone' | translate }}</p>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
<ng-container *ngFor="let assessment of (assessments || [])">
|
<ng-container *ngFor="let assessment of (assessments || [])">
|
||||||
<addon-mod-workshop-submission [submission]="assessment.submission" [assessment]="assessment" [courseId]="workshop.course" [module]="module" [workshop]="workshop" [access]="access" summary="true"></addon-mod-workshop-submission>
|
<addon-mod-workshop-submission [submission]="assessment.submission" [assessment]="assessment" [courseId]="workshop.course" [module]="module" [workshop]="workshop" [access]="access" summary="true" class="core-as-item"></addon-mod-workshop-submission>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
</ion-card >
|
</ion-card >
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
@ -156,7 +156,7 @@
|
||||||
</ion-item>
|
</ion-item>
|
||||||
|
|
||||||
<ng-container *ngFor="let submission of grades">
|
<ng-container *ngFor="let submission of grades">
|
||||||
<addon-mod-workshop-submission [submission]="submission" [courseId]="workshop.course" [module]="module" [workshop]="workshop" [access]="access" summary="true"></addon-mod-workshop-submission>
|
<addon-mod-workshop-submission [submission]="submission" [courseId]="workshop.course" [module]="module" [workshop]="workshop" [access]="access" summary="true" class="core-as-item"></addon-mod-workshop-submission>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
<ion-grid *ngIf="page > 0 || hasNextPage">
|
<ion-grid *ngIf="page > 0 || hasNextPage">
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<core-loading [hideUntil]="loaded">
|
<core-loading [hideUntil]="loaded">
|
||||||
<div *ngIf="!summary">
|
<div *ngIf="!summary">
|
||||||
<ion-list-header text-wrap>
|
<ion-item text-wrap class="addon-workshop-submission-title">
|
||||||
<ion-avatar core-user-avatar [user]="profile" [courseId]="courseId" [userId]="profile && profile.id" item-start></ion-avatar>
|
<ion-avatar core-user-avatar [user]="profile" [courseId]="courseId" [userId]="profile && profile.id" item-start></ion-avatar>
|
||||||
<h2><core-format-text [text]="submission.title" contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId"></core-format-text></h2>
|
<h2><core-format-text [text]="submission.title" contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId"></core-format-text></h2>
|
||||||
<p *ngIf="profile && profile.fullname">{{profile.fullname}}</p>
|
<p *ngIf="profile && profile.fullname">{{profile.fullname}}</p>
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
<ng-container *ngIf="submission.offline"><ion-icon name="time"></ion-icon> {{ 'core.notsent' | translate }}</ng-container>
|
<ng-container *ngIf="submission.offline"><ion-icon name="time"></ion-icon> {{ 'core.notsent' | translate }}</ng-container>
|
||||||
<ng-container *ngIf="submission.deleted"><ion-icon name="trash"></ion-icon> {{ 'core.deletedoffline' | translate }}</ng-container>
|
<ng-container *ngIf="submission.deleted"><ion-icon name="trash"></ion-icon> {{ 'core.deletedoffline' | translate }}</ng-container>
|
||||||
</ion-note>
|
</ion-note>
|
||||||
</ion-list-header>
|
</ion-item>
|
||||||
<ion-item text-wrap *ngIf="submission.content">
|
<ion-item text-wrap *ngIf="submission.content">
|
||||||
<core-format-text [component]="component" [componentId]="componentId" [text]="submission.content" contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId"></core-format-text>
|
<core-format-text [component]="component" [componentId]="componentId" [text]="submission.content" contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId"></core-format-text>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
|
|
|
@ -1,4 +1,13 @@
|
||||||
ion-app.app-root addon-mod-workshop-submission,
|
ion-app.app-root addon-mod-workshop-submission .addon-workshop-submission-title {
|
||||||
ion-app.app-root .card.with-borders addon-mod-workshop-submission {
|
|
||||||
@include core-as-items();
|
&.item-ios {
|
||||||
|
border-bottom: $list-ios-header-border-bottom;
|
||||||
|
}
|
||||||
|
&.item-md {
|
||||||
|
border-bottom: 1px solid $list-md-border-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -113,8 +113,8 @@ ion-app.app-root {
|
||||||
@include core-as-items();
|
@include core-as-items();
|
||||||
}
|
}
|
||||||
|
|
||||||
.card.with-borders .item,
|
.card.with-borders > .item,
|
||||||
.list.with-borders .item {
|
.list.with-borders > .item {
|
||||||
@include core-items();
|
@include core-items();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2095,6 +2095,7 @@
|
||||||
"core.tag.errorareanotsupported": "This tag area is not supported by the app.",
|
"core.tag.errorareanotsupported": "This tag area is not supported by the app.",
|
||||||
"core.tag.inalltagcoll": "Everywhere",
|
"core.tag.inalltagcoll": "Everywhere",
|
||||||
"core.tag.itemstaggedwith": "{{$a.tagarea}} tagged with \"{{$a.tag}}\"",
|
"core.tag.itemstaggedwith": "{{$a.tagarea}} tagged with \"{{$a.tag}}\"",
|
||||||
|
"core.tag.noresultsfor": "No results for \"{{$a}}\"",
|
||||||
"core.tag.notagsfound": "No tags matching \"{{$a}}\" found",
|
"core.tag.notagsfound": "No tags matching \"{{$a}}\" found",
|
||||||
"core.tag.searchtags": "Search tags",
|
"core.tag.searchtags": "Search tags",
|
||||||
"core.tag.showingfirsttags": "Showing {{$a}} most popular tags",
|
"core.tag.showingfirsttags": "Showing {{$a}} most popular tags",
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
ion-app.app-root core-iframe {
|
ion-app.app-root core-iframe {
|
||||||
|
|
||||||
|
> div {
|
||||||
|
max-width: 100%;
|
||||||
|
max-height: 100%;
|
||||||
|
}
|
||||||
iframe {
|
iframe {
|
||||||
border: 0;
|
border: 0;
|
||||||
display: block;
|
display: block;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div #originalTabs class="tabcontent">
|
<div #originalTabs class="tabcontent" [class.tabshidden]="hidden">
|
||||||
<ng-content></ng-content>
|
<ng-content></ng-content>
|
||||||
</div>
|
</div>
|
||||||
<div #portal tab-portal></div>
|
<div #portal tab-portal></div>
|
||||||
|
|
|
@ -27,6 +27,9 @@ ion-app.app-root core-ion-tabs {
|
||||||
.ion-page > ion-content > .scroll-content {
|
.ion-page > ion-content > .scroll-content {
|
||||||
margin-bottom: $navbar-md-height;
|
margin-bottom: $navbar-md-height;
|
||||||
}
|
}
|
||||||
|
.tabshidden .ion-page > ion-content > .scroll-content {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&[tabsplacement="side"] {
|
&[tabsplacement="side"] {
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
"app_id": "com.moodle.moodlemobile",
|
"app_id": "com.moodle.moodlemobile",
|
||||||
"appname": "Moodle Mobile",
|
"appname": "Moodle Mobile",
|
||||||
"desktopappname": "Moodle Desktop",
|
"desktopappname": "Moodle Desktop",
|
||||||
"versioncode": 3910,
|
"versioncode": 3920,
|
||||||
"versionname": "3.9.1",
|
"versionname": "3.9.2",
|
||||||
"cache_update_frequency_usually": 420000,
|
"cache_update_frequency_usually": 420000,
|
||||||
"cache_update_frequency_often": 1200000,
|
"cache_update_frequency_often": 1200000,
|
||||||
"cache_update_frequency_sometimes": 3600000,
|
"cache_update_frequency_sometimes": 3600000,
|
||||||
|
|
|
@ -122,7 +122,7 @@ export class CoreCourseProvider {
|
||||||
canGetCourseBlocks(site?: CoreSite): boolean {
|
canGetCourseBlocks(site?: CoreSite): boolean {
|
||||||
site = site || this.sitesProvider.getCurrentSite();
|
site = site || this.sitesProvider.getCurrentSite();
|
||||||
|
|
||||||
return site.isVersionGreaterEqualThan('3.7') && site.wsAvailable('core_block_get_course_blocks');
|
return site && site.isVersionGreaterEqualThan('3.7') && site.wsAvailable('core_block_get_course_blocks');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -135,7 +135,7 @@ export class CoreCourseProvider {
|
||||||
canRequestStealthModules(site?: CoreSite): boolean {
|
canRequestStealthModules(site?: CoreSite): boolean {
|
||||||
site = site || this.sitesProvider.getCurrentSite();
|
site = site || this.sitesProvider.getCurrentSite();
|
||||||
|
|
||||||
return site.isVersionGreaterEqualThan(['3.4.6', '3.5.3']);
|
return site && site.isVersionGreaterEqualThan(['3.4.6', '3.5.3']);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -197,7 +197,9 @@ export class CoreCourseSyncProvider extends CoreSyncBaseProvider {
|
||||||
if (result.updated) {
|
if (result.updated) {
|
||||||
// Update data.
|
// Update data.
|
||||||
return this.courseProvider.invalidateSections(courseId, siteId).then(() => {
|
return this.courseProvider.invalidateSections(courseId, siteId).then(() => {
|
||||||
if (this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.6')) {
|
const currentSite = this.sitesProvider.getCurrentSite();
|
||||||
|
|
||||||
|
if (currentSite && currentSite.isVersionGreaterEqualThan('3.6')) {
|
||||||
return this.courseProvider.getSections(courseId, false, true, undefined, siteId);
|
return this.courseProvider.getSections(courseId, false, true, undefined, siteId);
|
||||||
} else {
|
} else {
|
||||||
return this.courseProvider.getActivitiesCompletionStatus(courseId, siteId);
|
return this.courseProvider.getActivitiesCompletionStatus(courseId, siteId);
|
||||||
|
|
|
@ -235,7 +235,7 @@ export class CoreCoursesCoursePreviewPage implements OnDestroy {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
if (!this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.7')) {
|
if (this.sitesProvider.getCurrentSite() && !this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.7')) {
|
||||||
return this.coursesProvider.isGetCoursesByFieldAvailableInSite().then((available) => {
|
return this.coursesProvider.isGetCoursesByFieldAvailableInSite().then((available) => {
|
||||||
if (available) {
|
if (available) {
|
||||||
return this.coursesProvider.getCourseByField('id', this.course.id).then((course) => {
|
return this.coursesProvider.getCourseByField('id', this.course.id).then((course) => {
|
||||||
|
@ -402,7 +402,7 @@ export class CoreCoursesCoursePreviewPage implements OnDestroy {
|
||||||
promises.push(this.coursesProvider.invalidateCourse(this.course.id));
|
promises.push(this.coursesProvider.invalidateCourse(this.course.id));
|
||||||
promises.push(this.coursesProvider.invalidateCourseEnrolmentMethods(this.course.id));
|
promises.push(this.coursesProvider.invalidateCourseEnrolmentMethods(this.course.id));
|
||||||
promises.push(this.courseOptionsDelegate.clearAndInvalidateCoursesOptions(this.course.id));
|
promises.push(this.courseOptionsDelegate.clearAndInvalidateCoursesOptions(this.course.id));
|
||||||
if (this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.7')) {
|
if (this.sitesProvider.getCurrentSite() && !this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.7')) {
|
||||||
promises.push(this.coursesProvider.invalidateCoursesByField('id', this.course.id));
|
promises.push(this.coursesProvider.invalidateCoursesByField('id', this.course.id));
|
||||||
}
|
}
|
||||||
if (this.guestInstanceId) {
|
if (this.guestInstanceId) {
|
||||||
|
|
|
@ -114,7 +114,7 @@ export class CoreCoursesHelperProvider {
|
||||||
promises = [],
|
promises = [],
|
||||||
colors = [];
|
colors = [];
|
||||||
|
|
||||||
if (site.isVersionGreaterEqualThan('3.8')) {
|
if (site && site.isVersionGreaterEqualThan('3.8')) {
|
||||||
promises.push(site.getConfig().then((configs) => {
|
promises.push(site.getConfig().then((configs) => {
|
||||||
for (let x = 0; x < 10; x++) {
|
for (let x = 0; x < 10; x++) {
|
||||||
colors[x] = configs['core_admin_coursecolor' + (x + 1)] || null;
|
colors[x] = configs['core_admin_coursecolor' + (x + 1)] || null;
|
||||||
|
|
|
@ -64,12 +64,10 @@ export class CoreFileUploaderFileHandler implements CoreFileUploaderHandler {
|
||||||
* @return Data.
|
* @return Data.
|
||||||
*/
|
*/
|
||||||
getData(): CoreFileUploaderHandlerData {
|
getData(): CoreFileUploaderHandlerData {
|
||||||
const isIOS = this.platform.is('ios');
|
|
||||||
|
|
||||||
const handler: CoreFileUploaderHandlerData = {
|
const handler: CoreFileUploaderHandlerData = {
|
||||||
title: isIOS ? 'core.fileuploader.more' : 'core.fileuploader.file',
|
title: 'core.fileuploader.file',
|
||||||
class: 'core-fileuploader-file-handler',
|
class: 'core-fileuploader-file-handler',
|
||||||
icon: isIOS ? 'more' : 'folder',
|
icon: 'folder',
|
||||||
};
|
};
|
||||||
|
|
||||||
if (this.appProvider.isMobile()) {
|
if (this.appProvider.isMobile()) {
|
||||||
|
@ -98,7 +96,6 @@ export class CoreFileUploaderFileHandler implements CoreFileUploaderHandler {
|
||||||
|
|
||||||
input.addEventListener('change', (evt: Event) => {
|
input.addEventListener('change', (evt: Event) => {
|
||||||
const file = input.files[0];
|
const file = input.files[0];
|
||||||
let fileName;
|
|
||||||
|
|
||||||
input.value = ''; // Unset input.
|
input.value = ''; // Unset input.
|
||||||
if (!file) {
|
if (!file) {
|
||||||
|
@ -113,17 +110,8 @@ export class CoreFileUploaderFileHandler implements CoreFileUploaderHandler {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
fileName = file.name;
|
|
||||||
if (isIOS) {
|
|
||||||
// Check the name of the file and add a timestamp if needed (take picture).
|
|
||||||
const matches = fileName.match(/image\.(jpe?g|png)/);
|
|
||||||
if (matches) {
|
|
||||||
fileName = 'image_' + this.timeUtils.readableTimestamp() + '.' + matches[1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Upload the picked file.
|
// Upload the picked file.
|
||||||
this.uploaderHelper.uploadFileObject(file, maxSize, upload, allowOffline, fileName).then((result) => {
|
this.uploaderHelper.uploadFileObject(file, maxSize, upload, allowOffline, file.name).then((result) => {
|
||||||
this.uploaderHelper.fileUploaded(result);
|
this.uploaderHelper.fileUploaded(result);
|
||||||
}).catch((error) => {
|
}).catch((error) => {
|
||||||
this.domUtils.showErrorModalDefault(error,
|
this.domUtils.showErrorModalDefault(error,
|
||||||
|
|
|
@ -65,8 +65,12 @@ export class CoreFileUploaderHelperProvider {
|
||||||
*/
|
*/
|
||||||
async chooseAndUploadFile(maxSize: number, upload?: boolean, allowOffline?: boolean, mimetypes?: string[]): Promise<any> {
|
async chooseAndUploadFile(maxSize: number, upload?: boolean, allowOffline?: boolean, mimetypes?: string[]): Promise<any> {
|
||||||
|
|
||||||
|
const modal = this.domUtils.showModalLoading();
|
||||||
|
|
||||||
const result = await this.fileChooser.getFile(mimetypes ? mimetypes.join(',') : undefined);
|
const result = await this.fileChooser.getFile(mimetypes ? mimetypes.join(',') : undefined);
|
||||||
|
|
||||||
|
modal.dismiss();
|
||||||
|
|
||||||
if (!result) {
|
if (!result) {
|
||||||
// User canceled.
|
// User canceled.
|
||||||
throw this.domUtils.createCanceledError();
|
throw this.domUtils.createCanceledError();
|
||||||
|
@ -87,10 +91,6 @@ export class CoreFileUploaderHelperProvider {
|
||||||
const options = this.fileUploaderProvider.getFileUploadOptions(result.uri, result.name, result.mediaType, true);
|
const options = this.fileUploaderProvider.getFileUploadOptions(result.uri, result.name, result.mediaType, true);
|
||||||
|
|
||||||
if (upload) {
|
if (upload) {
|
||||||
const size = await this.fileProvider.getExternalFileSize(result.uri);
|
|
||||||
|
|
||||||
await this.confirmUploadFile(size, false, allowOffline);
|
|
||||||
|
|
||||||
return this.uploadFile(result.uri, maxSize, true, options);
|
return this.uploadFile(result.uri, maxSize, true, options);
|
||||||
} else {
|
} else {
|
||||||
return this.copyToTmpFolder(result.uri, false, maxSize, undefined, options);
|
return this.copyToTmpFolder(result.uri, false, maxSize, undefined, options);
|
||||||
|
|
|
@ -249,6 +249,9 @@ export class CoreLoginCredentialsPage {
|
||||||
this.loginHelper.treatUserTokenError(siteUrl, error, username, password);
|
this.loginHelper.treatUserTokenError(siteUrl, error, username, password);
|
||||||
if (error.loggedout) {
|
if (error.loggedout) {
|
||||||
this.navCtrl.setRoot('CoreLoginSitesPage');
|
this.navCtrl.setRoot('CoreLoginSitesPage');
|
||||||
|
} else if (error.errorcode == 'forcepasswordchangenotice') {
|
||||||
|
// Reset password field.
|
||||||
|
this.credForm.controls.password.reset();
|
||||||
}
|
}
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
modal.dismiss();
|
modal.dismiss();
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
</ion-item>
|
</ion-item>
|
||||||
</div>
|
</div>
|
||||||
<ion-item>
|
<ion-item>
|
||||||
<ion-input type="text" name="value" placeholder="{{ 'core.login.usernameoremail' | translate }}" formControlName="value" autocapitalize="none" autocorrect="off" [core-auto-focus]></ion-input>
|
<ion-input type="text" name="value" placeholder="{{ 'core.login.usernameoremail' | translate }}" formControlName="value" autocapitalize="none" autocorrect="off" [core-auto-focus]="autoFocus"></ion-input>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
<ion-item>
|
<ion-item>
|
||||||
<button text-wrap ion-button block [disabled]="!myForm.valid">{{ 'core.courses.search' | translate }}</button>
|
<button text-wrap ion-button block [disabled]="!myForm.valid">{{ 'core.courses.search' | translate }}</button>
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
import { Component, ViewChild, ElementRef } from '@angular/core';
|
import { Component, ViewChild, ElementRef } from '@angular/core';
|
||||||
import { IonicPage, NavController, NavParams } from 'ionic-angular';
|
import { IonicPage, NavController, NavParams, Platform } from 'ionic-angular';
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
import { CoreEventsProvider } from '@providers/events';
|
import { CoreEventsProvider } from '@providers/events';
|
||||||
import { CoreSitesProvider } from '@providers/sites';
|
import { CoreSitesProvider } from '@providers/sites';
|
||||||
|
@ -35,10 +35,12 @@ export class CoreLoginForgottenPasswordPage {
|
||||||
|
|
||||||
myForm: FormGroup;
|
myForm: FormGroup;
|
||||||
siteUrl: string;
|
siteUrl: string;
|
||||||
|
autoFocus: boolean;
|
||||||
|
|
||||||
constructor(protected navCtrl: NavController,
|
constructor(protected navCtrl: NavController,
|
||||||
navParams: NavParams,
|
navParams: NavParams,
|
||||||
fb: FormBuilder,
|
fb: FormBuilder,
|
||||||
|
platform: Platform,
|
||||||
protected translate: TranslateService,
|
protected translate: TranslateService,
|
||||||
protected loginHelper: CoreLoginHelperProvider,
|
protected loginHelper: CoreLoginHelperProvider,
|
||||||
protected domUtils: CoreDomUtilsProvider,
|
protected domUtils: CoreDomUtilsProvider,
|
||||||
|
@ -46,6 +48,7 @@ export class CoreLoginForgottenPasswordPage {
|
||||||
protected sitesProvider: CoreSitesProvider) {
|
protected sitesProvider: CoreSitesProvider) {
|
||||||
|
|
||||||
this.siteUrl = navParams.get('siteUrl');
|
this.siteUrl = navParams.get('siteUrl');
|
||||||
|
this.autoFocus = platform.is('tablet');
|
||||||
this.myForm = fb.group({
|
this.myForm = fb.group({
|
||||||
field: ['username', Validators.required],
|
field: ['username', Validators.required],
|
||||||
value: [navParams.get('username') || '', Validators.required]
|
value: [navParams.get('username') || '', Validators.required]
|
||||||
|
|
|
@ -221,6 +221,9 @@ export class CoreLoginReconnectPage {
|
||||||
|
|
||||||
if (error.loggedout) {
|
if (error.loggedout) {
|
||||||
this.cancel();
|
this.cancel();
|
||||||
|
} else if (error.errorcode == 'forcepasswordchangenotice') {
|
||||||
|
// Reset password field.
|
||||||
|
this.credForm.controls.password.reset();
|
||||||
}
|
}
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
modal.dismiss();
|
modal.dismiss();
|
||||||
|
|
|
@ -20,13 +20,13 @@
|
||||||
<ng-container *ngIf="siteSelector == 'url'">
|
<ng-container *ngIf="siteSelector == 'url'">
|
||||||
<ion-item>
|
<ion-item>
|
||||||
<ion-label stacked><h2>{{ 'core.login.siteaddress' | translate }}</h2></ion-label>
|
<ion-label stacked><h2>{{ 'core.login.siteaddress' | translate }}</h2></ion-label>
|
||||||
<ion-input name="url" type="url" placeholder="https://campus.example.edu" formControlName="siteUrl" [core-auto-focus]="showKeyboard"></ion-input>
|
<ion-input name="url" type="url" placeholder="https://campus.example.edu" formControlName="siteUrl" [core-auto-focus]="showKeyboard && !showScanQR"></ion-input>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container *ngIf="siteSelector != 'url'">
|
<ng-container *ngIf="siteSelector != 'url'">
|
||||||
<ion-item>
|
<ion-item>
|
||||||
<ion-label stacked><h2>{{ 'core.login.siteaddress' | translate }}</h2></ion-label>
|
<ion-label stacked><h2>{{ 'core.login.siteaddress' | translate }}</h2></ion-label>
|
||||||
<ion-input name="url" placeholder="https://campus.example.edu" formControlName="siteUrl" [core-auto-focus]="showKeyboard" (ionChange)="searchSite($event, siteForm.value.siteUrl)"></ion-input>
|
<ion-input name="url" placeholder="https://campus.example.edu" formControlName="siteUrl" [core-auto-focus]="showKeyboard && !showScanQR" (ionChange)="searchSite($event, siteForm.value.siteUrl)"></ion-input>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
|
|
||||||
<ion-list [class.hidden]="!hasSites && !enteredSiteUrl" class="core-login-site-list">
|
<ion-list [class.hidden]="!hasSites && !enteredSiteUrl" class="core-login-site-list">
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
"inalltagcoll": "Everywhere",
|
"inalltagcoll": "Everywhere",
|
||||||
"itemstaggedwith": "{{$a.tagarea}} tagged with \"{{$a.tag}}\"",
|
"itemstaggedwith": "{{$a.tagarea}} tagged with \"{{$a.tag}}\"",
|
||||||
"notagsfound": "No tags matching \"{{$a}}\" found",
|
"notagsfound": "No tags matching \"{{$a}}\" found",
|
||||||
|
"noresultsfor": "No results for \"{{$a}}\"",
|
||||||
"searchtags": "Search tags",
|
"searchtags": "Search tags",
|
||||||
"showingfirsttags": "Showing {{$a}} most popular tags",
|
"showingfirsttags": "Showing {{$a}} most popular tags",
|
||||||
"tag": "Tag",
|
"tag": "Tag",
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<ion-refresher-content pullingText="{{ 'core.pulltorefresh' | translate }}"></ion-refresher-content>
|
<ion-refresher-content pullingText="{{ 'core.pulltorefresh' | translate }}"></ion-refresher-content>
|
||||||
</ion-refresher>
|
</ion-refresher>
|
||||||
<core-loading [hideUntil]="loaded">
|
<core-loading [hideUntil]="loaded">
|
||||||
<ion-list>
|
<ion-list *ngIf="hasUnsupportedAreas || areas">
|
||||||
<ion-item text-wrap *ngIf="hasUnsupportedAreas" class="core-warning-item">
|
<ion-item text-wrap *ngIf="hasUnsupportedAreas" class="core-warning-item">
|
||||||
<ion-icon item-start name="warning" color="warning"></ion-icon>
|
<ion-icon item-start name="warning" color="warning"></ion-icon>
|
||||||
{{ 'core.tag.warningareasnotsupported' | translate }}
|
{{ 'core.tag.warningareasnotsupported' | translate }}
|
||||||
|
@ -19,6 +19,7 @@
|
||||||
<ion-badge item-end *ngIf="area.badge">{{ area.badge }}</ion-badge>
|
<ion-badge item-end *ngIf="area.badge">{{ area.badge }}</ion-badge>
|
||||||
</a>
|
</a>
|
||||||
</ion-list>
|
</ion-list>
|
||||||
|
<core-empty-box icon="fa-tag" *ngIf="!hasUnsupportedAreas && (!areas || !areas.length)" [message]="'core.tag.noresultsfor' | translate: { $a: tagName }"></core-empty-box>
|
||||||
</core-loading>
|
</core-loading>
|
||||||
</ion-content>
|
</ion-content>
|
||||||
</core-split-view>
|
</core-split-view>
|
||||||
|
|
|
@ -166,7 +166,7 @@ export class CoreTagProvider {
|
||||||
|
|
||||||
return Promise.reject(error);
|
return Promise.reject(error);
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
if (!response || !response.length) {
|
if (!response) {
|
||||||
return Promise.reject(null);
|
return Promise.reject(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -711,7 +711,7 @@ export class CoreFormatTextDirective implements OnChanges {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Width and height parameters are required in 3.6 and older sites.
|
// Width and height parameters are required in 3.6 and older sites.
|
||||||
if (!site.isVersionGreaterEqualThan('3.7')) {
|
if (site && !site.isVersionGreaterEqualThan('3.7')) {
|
||||||
newUrl += '&width=' + width + '&height=' + height;
|
newUrl += '&width=' + width + '&height=' + height;
|
||||||
}
|
}
|
||||||
iframe.src = newUrl;
|
iframe.src = newUrl;
|
||||||
|
|
|
@ -431,6 +431,8 @@ export class CoreSitesProvider {
|
||||||
*/
|
*/
|
||||||
getDemoSiteData(name: string): any {
|
getDemoSiteData(name: string): any {
|
||||||
const demoSites = CoreConfigConstants.demo_sites;
|
const demoSites = CoreConfigConstants.demo_sites;
|
||||||
|
name = name.toLowerCase();
|
||||||
|
|
||||||
if (typeof demoSites != 'undefined' && typeof demoSites[name] != 'undefined') {
|
if (typeof demoSites != 'undefined' && typeof demoSites[name] != 'undefined') {
|
||||||
return demoSites[name];
|
return demoSites[name];
|
||||||
}
|
}
|
||||||
|
|
|
@ -527,7 +527,7 @@ $core-dd-question-colors: $white, $blue-light, #DCDCDC, #D8BFD8, #87CEFA, #DAA52
|
||||||
border-bottom: $hairlines-width solid $list-ios-border-color;
|
border-bottom: $hairlines-width solid $list-ios-border-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:last-child > .item-inner {
|
&.item-block:last-child > .item-inner {
|
||||||
border-bottom: 0;
|
border-bottom: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue