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>
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										118
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										118
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user