Compare commits
102 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bfbae65caa | |||
| 8c52e7ca55 | |||
| fc66630f6c | |||
| 9464e3449e | |||
| 65ab20645a | |||
| 41afb596e6 | |||
| 224a3af976 | |||
| 78cf3e1b49 | |||
| e7240a2adb | |||
| bbf492040e | |||
| 5291b32c63 | |||
| 2c636fe760 | |||
| 8dca7193e7 | |||
| 9dbb082f04 | |||
| 87e29b9b4a | |||
| 6e21aa585a | |||
| a3f8c78437 | |||
| c2454323b2 | |||
| 1ca2a55381 | |||
| a989d788c7 | |||
| e5830e234d | |||
| f459ae270b | |||
| 5d14b0b0c2 | |||
| b1fc632e5c | |||
| 35c252a91d | |||
| fa96021455 | |||
| 2edc104c11 | |||
| 63555942ce | |||
| 6f2aca4839 | |||
| 15224105f4 | |||
| 0aa9dce2a3 | |||
| 9d8ec047be | |||
| 731ff89794 | |||
| a9ca81e8c9 | |||
| d3f5a3c2cc | |||
| 5f8d85fe23 | |||
| 4f793fe59a | |||
| 3fd0b34805 | |||
| eeae907302 | |||
| 767104a1ff | |||
| 9e0e54e3c0 | |||
| 8eaed7a7eb | |||
| a3e3a3f251 | |||
| 1b0c425ade | |||
| 93bfa46f5e | |||
| f4e40a3eb8 | |||
| b379d31219 | |||
| 05ab49e052 | |||
| 81c5a10527 | |||
| ddfd85697f | |||
| e2c90dd430 | |||
| 83aa818f08 | |||
| 9ece6979c1 | |||
| 5e6ae141ce | |||
| eaa34a048b | |||
| 5837ade0ea | |||
| cddda7483d | |||
| ca59050173 | |||
| 3334ab4821 | |||
| b409a71f4f | |||
| 49d7941d81 | |||
| c211a5854f | |||
| 3ffc2ed914 | |||
| cf7c308bcf | |||
| abc9f31fa3 | |||
| 3178ffa04a | |||
| 513bf77347 | |||
| 48f24504ca | |||
| e4918f1e1d | |||
| 516d111d94 | |||
| fa348c3a04 | |||
| 11b53571e6 | |||
| d1fd4c2660 | |||
| 9bd8cdae36 | |||
| 54ed5324ac | |||
| f1095d111e | |||
| 4f62cc1df2 | |||
| 170be96134 | |||
| 8fd2717282 | |||
| 51d69fa94b | |||
| dcce6d99df | |||
| e978042e2a | |||
| 939202d95d | |||
| 23c31f017f | |||
| 9b3cf25838 | |||
| a034c0a53b | |||
| d3eea84c50 | |||
| 455ca43140 | |||
| 7d8be2a715 | |||
| cf33bc4411 | |||
| a9d42baf99 | |||
| b073419601 | |||
| 3b1ca1610e | |||
| 2ba187b91b | |||
| 0249b9f16f | |||
| 9a45a3fa3f | |||
| 223a90679b | |||
| b7d4a3280c | |||
| ac15d110ba | |||
| 9f1de216a4 | |||
| 0b083a7f6f | |||
| aa0d711a6f |
@@ -156,7 +156,7 @@ const getThirdPartyLibsList = relativeTo => {
|
||||
* @returns {array}
|
||||
*/
|
||||
const getThirdPartyPaths = () => {
|
||||
const DOMParser = require('xmldom').DOMParser;
|
||||
const DOMParser = require('@xmldom/xmldom').DOMParser;
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const xpath = require('xpath');
|
||||
|
||||
@@ -30,10 +30,9 @@
|
||||
* @param {String} srcPath the matched src path
|
||||
* @return {String} The rewritten destination path.
|
||||
*/
|
||||
|
||||
const babelRename = function(destPath, srcPath) {
|
||||
destPath = srcPath.replace('src', 'build');
|
||||
destPath = destPath.replace('.js', '.min.js');
|
||||
destPath = srcPath.replace(`amd/src`, `amd/build`);
|
||||
destPath = destPath.replace(/\.js$/, '.min.js');
|
||||
return destPath;
|
||||
};
|
||||
|
||||
|
||||
@@ -3751,6 +3751,7 @@
|
||||
<VENDOR name="oracle" version="19" />
|
||||
</DATABASE>
|
||||
<PHP version="7.4.0" level="required">
|
||||
<RESTRICT function="restrict_php_version_82" message="unsupportedphpversion82" />
|
||||
</PHP>
|
||||
<PCREUNICODE level="optional">
|
||||
<FEEDBACK>
|
||||
@@ -4109,6 +4110,8 @@
|
||||
</CUSTOM_CHECK>
|
||||
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_xmlrpc_usage" level="optional">
|
||||
</CUSTOM_CHECK>
|
||||
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_mod_assignment" level="required">
|
||||
</CUSTOM_CHECK>
|
||||
</CUSTOM_CHECKS>
|
||||
</MOODLE>
|
||||
</COMPATIBILITY_MATRIX>
|
||||
|
||||
@@ -6,7 +6,7 @@ require_once(__DIR__ . '/../../config.php');
|
||||
require_once($CFG->libdir.'/adminlib.php');
|
||||
include_once($CFG->dirroot.'/mnet/lib.php');
|
||||
|
||||
$sort = optional_param('sort', 'username', PARAM_ALPHA);
|
||||
$sort = optional_param('sort', 'username', PARAM_ALPHAEXT);
|
||||
$dir = optional_param('dir', 'ASC', PARAM_ALPHA);
|
||||
$page = optional_param('page', 0, PARAM_INT);
|
||||
$perpage = optional_param('perpage', 30, PARAM_INT);
|
||||
@@ -153,7 +153,15 @@ foreach ($columns as $column) {
|
||||
$headings[$column] = "<a href=\"?sort=$column&dir=$columndir&\">".$string[$column]."</a>$columnicon";
|
||||
}
|
||||
$headings['delete'] = '';
|
||||
$acl = $DB->get_records('mnet_sso_access_control', null, "$sort $dir", '*'); //, $page * $perpage, $perpage);
|
||||
|
||||
$sortorder = get_safe_orderby([
|
||||
'username' => 'username',
|
||||
'mnet_host_id' => 'mnet_host_id',
|
||||
'access' => 'accessctrl',
|
||||
'default' => 'username',
|
||||
], $sort, $dir, false);
|
||||
|
||||
$acl = $DB->get_records('mnet_sso_access_control', null, $sortorder);
|
||||
$aclcount = $DB->count_records('mnet_sso_access_control');
|
||||
|
||||
if (!$acl) {
|
||||
|
||||
@@ -49,7 +49,7 @@ list($options, $unrecognized) = cli_get_params(
|
||||
'torun' => 0,
|
||||
'optimize-runs' => '',
|
||||
'add-core-features-to-theme' => false,
|
||||
'axe' => false,
|
||||
'axe' => null,
|
||||
'disable-composer' => false,
|
||||
'composer-upgrade' => true,
|
||||
'composer-self-update' => true,
|
||||
@@ -69,7 +69,7 @@ Behat utilities to initialise behat tests
|
||||
|
||||
Usage:
|
||||
php init.php [--parallel=value [--maxruns=value] [--fromrun=value --torun=value]]
|
||||
[--axe] [-o | --optimize-runs] [-a | --add-core-features-to-theme]
|
||||
[--no-axe] [-o | --optimize-runs] [-a | --add-core-features-to-theme]
|
||||
[--no-composer-self-update] [--no-composer-upgrade]
|
||||
[--disable-composer]
|
||||
[--help]
|
||||
@@ -79,7 +79,7 @@ Options:
|
||||
-m, --maxruns Max parallel processes to be executed at one time
|
||||
--fromrun Execute run starting from (Used for parallel runs on different vms)
|
||||
--torun Execute run till (Used for parallel runs on different vms)
|
||||
--axe Include axe accessibility tests
|
||||
--no-axe Disable axe accessibility tests.
|
||||
|
||||
-o, --optimize-runs
|
||||
Split features with specified tags in all parallel runs.
|
||||
@@ -110,6 +110,12 @@ if (!empty($options['help'])) {
|
||||
exit(0);
|
||||
}
|
||||
|
||||
if ($options['axe']) {
|
||||
echo "Axe accessibility tests are enabled by default, to disable them, use the --no-axe option.\n";
|
||||
} else if ($options['axe'] === false) {
|
||||
echo "Axe accessibility tests have been disabled.\n";
|
||||
}
|
||||
|
||||
// Check which util file to call.
|
||||
$utilfile = 'util_single_run.php';
|
||||
$commandoptions = "";
|
||||
@@ -118,9 +124,7 @@ if ($options['parallel'] && $options['parallel'] > 1) {
|
||||
$utilfile = 'util.php';
|
||||
// Sanitize all input options, so they can be passed to util.
|
||||
foreach ($options as $option => $value) {
|
||||
if ($value) {
|
||||
$commandoptions .= " --$option=\"$value\"";
|
||||
}
|
||||
$commandoptions .= behat_get_command_flags($option, $value);
|
||||
}
|
||||
} else {
|
||||
// Only sanitize options for single run.
|
||||
@@ -130,9 +134,7 @@ if ($options['parallel'] && $options['parallel'] > 1) {
|
||||
];
|
||||
|
||||
foreach ($cmdoptionsforsinglerun as $option) {
|
||||
if (!empty($options[$option])) {
|
||||
$commandoptions .= " --$option='$options[$option]'";
|
||||
}
|
||||
$commandoptions .= behat_get_command_flags($option, $options[$option]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ list($options, $unrecognized) = cli_get_params(
|
||||
'torun' => 0,
|
||||
'optimize-runs' => '',
|
||||
'add-core-features-to-theme' => false,
|
||||
'axe' => false,
|
||||
'axe' => true,
|
||||
),
|
||||
array(
|
||||
'h' => 'help',
|
||||
@@ -70,7 +70,7 @@ $help = "
|
||||
Behat utilities to manage the test environment
|
||||
|
||||
Usage:
|
||||
php util.php [--install|--drop|--enable|--disable|--diag|--updatesteps|--axe|--help] [--parallel=value [--maxruns=value]]
|
||||
php util.php [--install|--drop|--enable|--disable|--diag|--updatesteps|--no-axe|--help] [--parallel=value [--maxruns=value]]
|
||||
|
||||
Options:
|
||||
--install Installs the test environment for acceptance tests
|
||||
@@ -79,7 +79,7 @@ Options:
|
||||
--disable Disables test environment
|
||||
--diag Get behat test environment status code
|
||||
--updatesteps Update feature step file.
|
||||
--axe Include axe accessibility tests
|
||||
--no-axe Disable axe accessibility tests.
|
||||
|
||||
-j, --parallel Number of parallel behat run operation
|
||||
-m, --maxruns Max parallel processes to be executed at one time.
|
||||
@@ -317,12 +317,7 @@ function commands_to_execute($options) {
|
||||
}
|
||||
|
||||
foreach ($extraoptions as $option => $value) {
|
||||
if ($options[$option]) {
|
||||
$extra .= " --$option";
|
||||
if ($value) {
|
||||
$extra .= "=\"$value\"";
|
||||
}
|
||||
}
|
||||
$extra .= behat_get_command_flags($option, $value);
|
||||
}
|
||||
|
||||
if (empty($options['parallel'])) {
|
||||
|
||||
@@ -49,7 +49,7 @@ list($options, $unrecognized) = cli_get_params(
|
||||
'updatesteps' => false,
|
||||
'optimize-runs' => '',
|
||||
'add-core-features-to-theme' => false,
|
||||
'axe' => false,
|
||||
'axe' => true,
|
||||
),
|
||||
array(
|
||||
'h' => 'help',
|
||||
@@ -76,7 +76,7 @@ Options:
|
||||
--disable Disables test environment
|
||||
--diag Get behat test environment status code
|
||||
--updatesteps Update feature step file.
|
||||
--axe Include axe accessibility tests
|
||||
--no-axe Disable axe accessibility tests.
|
||||
|
||||
-o, --optimize-runs Split features with specified tags in all parallel runs.
|
||||
-a, --add-core-features-to-theme Add all core features to specified theme's
|
||||
@@ -183,7 +183,7 @@ if ($options['install']) {
|
||||
behat_config_manager::set_behat_run_config_value('behatsiteenabled', 1);
|
||||
}
|
||||
|
||||
// Define whether to run Behat with axe tests.
|
||||
// Configure axe according to option.
|
||||
behat_config_manager::set_behat_run_config_value('axe', $options['axe']);
|
||||
|
||||
// Enable test mode.
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
This files describes API changes in the tool_behat code.
|
||||
|
||||
=== 3.11.15 ===
|
||||
* Behat is initialised with Axe accessibility tests enabled by default, if you want to disable them please use the --no-axe option.
|
||||
=== 3.7 ===
|
||||
* Behat will now look for behat step definitions in the current
|
||||
theme and any parents the theme may have.
|
||||
|
||||
@@ -128,3 +128,18 @@ Feature: Manage competency frameworks
|
||||
Then I should see "Competency framework updated"
|
||||
And I should see "Science Year-6 Edited"
|
||||
And I should see "sc-y-6"
|
||||
|
||||
Scenario: Duplicate a competency framework
|
||||
Given the following lp "frameworks" exist:
|
||||
| shortname | idnumber |
|
||||
| CF1 | CF1 |
|
||||
And the following lp "competencies" exist:
|
||||
| shortname | framework |
|
||||
| C1 | CF1 |
|
||||
And I navigate to "Competencies > Competency frameworks" in site administration
|
||||
# Duplicate the selected competency framework
|
||||
When I click on "Duplicate" of edit menu in the "CF1" row
|
||||
# Confirm that the selected framework was duplicated by clicking on the link
|
||||
And I click on "CF1 (copy) (CF1_1)" "link"
|
||||
# Confirm that the corresponding competency also exists in the duplicated framework
|
||||
Then I should see "C1"
|
||||
|
||||
@@ -144,9 +144,7 @@ Feature: Manage plan workflow
|
||||
| name | user | description | status | reviewer |
|
||||
| Test-Plan3 | user1 | Description of plan 3 for user 1 | active | manager1 |
|
||||
| Test-Plan4 | user1 | Description of plan 4 for user 1 | active | manager1 |
|
||||
And I log in as "manager1"
|
||||
And I navigate to "Users > Accounts > Browse list of users" in site administration
|
||||
And I follow "User 1"
|
||||
And I am on the "user1" "user > profile" page logged in as "manager1"
|
||||
And I follow "Learning plans"
|
||||
And I should see "List of learning plans"
|
||||
And I follow "Learning plans"
|
||||
@@ -163,9 +161,7 @@ Feature: Manage plan workflow
|
||||
| name | user | description | status | reviewer |
|
||||
| Test-Plan3 | user1 | Description of plan 3 for user 1 | active | manager1 |
|
||||
| Test-Plan4 | user1 | Description of plan 4 for user 1 | active | manager1 |
|
||||
And I log in as "manager1"
|
||||
And I navigate to "Users > Accounts > Browse list of users" in site administration
|
||||
And I follow "User 1"
|
||||
And I am on the "user1" "user > profile" page logged in as "manager1"
|
||||
And I follow "Learning plans"
|
||||
And I should see "List of learning plans"
|
||||
And I follow "Learning plans"
|
||||
@@ -185,9 +181,7 @@ Feature: Manage plan workflow
|
||||
| name | user | description | status | reviewer |
|
||||
| Test-Plan3 | user1 | Description of plan 3 for user 1 | complete | manager1 |
|
||||
| Test-Plan4 | user1 | Description of plan 4 for user 1 | complete | manager1 |
|
||||
And I log in as "manager1"
|
||||
And I navigate to "Users > Accounts > Browse list of users" in site administration
|
||||
And I follow "User 1"
|
||||
And I am on the "user1" "user > profile" page logged in as "manager1"
|
||||
And I follow "Learning plans"
|
||||
And I should see "List of learning plans"
|
||||
And I follow "Learning plans"
|
||||
|
||||
@@ -241,9 +241,7 @@ Feature: Viewing acceptances reports and accepting on behalf of other users
|
||||
And I set the field "I agree to the This site policy" to "1"
|
||||
And I press "Next"
|
||||
And I log out
|
||||
And I log in as "admin"
|
||||
And I navigate to "Users > Accounts > Browse list of users" in site administration
|
||||
And I follow "Manager"
|
||||
And I am on the "manager" "user > profile" page logged in as "admin"
|
||||
And I follow "Log in as"
|
||||
And I press "Continue"
|
||||
And I navigate to "Users > Privacy and policies > Manage policies" in site administration
|
||||
|
||||
@@ -562,9 +562,7 @@ Feature: User must accept policy managed by this plugin when logging in and sign
|
||||
And the following "users" exist:
|
||||
| username | firstname | lastname | email |
|
||||
| user1 | User | 1 | user1@example.com |
|
||||
When I log in as "admin"
|
||||
And I navigate to "Users > Accounts > Browse list of users" in site administration
|
||||
And I follow "User 1"
|
||||
When I am on the "user1" "user > profile" page logged in as "admin"
|
||||
And I follow "Log in as"
|
||||
Then I should see "You are logged in as User 1"
|
||||
And I press "Continue"
|
||||
@@ -603,8 +601,7 @@ Feature: User must accept policy managed by this plugin when logging in and sign
|
||||
And I set the field "I agree to the This site policy" to "1"
|
||||
And I set the field "I agree to the This privacy policy" to "1"
|
||||
And I press "Next"
|
||||
And I navigate to "Users > Accounts > Browse list of users" in site administration
|
||||
And I follow "User 1"
|
||||
And I am on the "user1" "user > profile" page
|
||||
And I follow "Log in as"
|
||||
Then I should see "You are logged in as User 1"
|
||||
And I press "Continue"
|
||||
|
||||
@@ -143,7 +143,8 @@ class cli_test extends \advanced_testcase {
|
||||
// Created users have data in the profile fields.
|
||||
$user1 = \core_user::get_user_by_username('reznort');
|
||||
$profilefields1 = profile_user_record($user1->id);
|
||||
$this->assertEquals((object)['superfield' => 'Loves cats'], $profilefields1);
|
||||
$this->assertObjectHasAttribute('superfield', $profilefields1);
|
||||
$this->assertEquals('Loves cats', $profilefields1->superfield);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -146,6 +146,7 @@ Feature: My overview block pagination
|
||||
| student1 | C12 | student |
|
||||
| student1 | C13 | student |
|
||||
When I log in as "student1"
|
||||
And I wait until ".block_myoverview [data-control='next']" "css_element" exists
|
||||
And I click on "[data-control='next']" "css_element" in the "Course overview" "block"
|
||||
Then the "class" attribute of ".block_myoverview [data-control='next']" "css_element" should contain "disabled"
|
||||
And I log out
|
||||
|
||||
@@ -70,6 +70,10 @@ $CFG->dboptions = array(
|
||||
// can be removed for MySQL (by default it will
|
||||
// use 'utf8mb4_unicode_ci'. This option should
|
||||
// be removed for all other databases.
|
||||
// 'extrainfo' => [], // Extra information for the DB driver, e.g. SQL Server,
|
||||
// has additional configuration according to its environment,
|
||||
// which the administrator can specify to alter and
|
||||
// override any connection options.
|
||||
// 'fetchbuffersize' => 100000, // On PostgreSQL, this option sets a limit
|
||||
// on the number of rows that are fetched into
|
||||
// memory when doing a large recordset query
|
||||
|
||||
@@ -69,6 +69,7 @@ Feature: Render H5P content using filters
|
||||
And I click on "Insert H5P" "button" in the "Insert H5P" "dialogue"
|
||||
And I wait until the page is ready
|
||||
When I click on "Save and display" "button"
|
||||
And I should see "PageName1" in the "page-header" "region"
|
||||
# Switch to iframe created by filter
|
||||
And I switch to "h5p-iframe" class iframe
|
||||
# Switch to iframe created by embed.php page
|
||||
@@ -104,6 +105,7 @@ Feature: Render H5P content using filters
|
||||
And I click on "Insert H5P" "button" in the "Insert H5P" "dialogue"
|
||||
And I wait until the page is ready
|
||||
When I click on "Save and display" "button"
|
||||
And I should see "PageName1" in the "page-header" "region"
|
||||
# Switch to iframe created by filter
|
||||
And I switch to "h5p-iframe" class iframe
|
||||
Then I should see "Note that the libraries may exist in the file you uploaded, but you're not allowed to upload new libraries."
|
||||
@@ -129,6 +131,7 @@ Feature: Render H5P content using filters
|
||||
And I click on "Insert H5P" "button" in the "Insert H5P" "dialogue"
|
||||
And I wait until the page is ready
|
||||
And I click on "Save and display" "button"
|
||||
And I should see "PageName1" in the "page-header" "region"
|
||||
# Switch to iframe created by filter
|
||||
And I switch to "h5p-iframe" class iframe
|
||||
# Libraries don't exist, so an error should be displayed.
|
||||
@@ -152,6 +155,7 @@ Feature: Render H5P content using filters
|
||||
And I click on "Insert H5P" "button" in the "Insert H5P" "dialogue"
|
||||
And I wait until the page is ready
|
||||
And I click on "Save and display" "button"
|
||||
And I should see "PageName2" in the "page-header" "region"
|
||||
# Switch to iframe created by filter
|
||||
And I switch to "h5p-iframe" class iframe
|
||||
# Switch to iframe created by embed.php page
|
||||
@@ -191,6 +195,7 @@ Feature: Render H5P content using filters
|
||||
And I click on "Select this file" "button"
|
||||
And I click on "Insert H5P" "button" in the "Insert H5P" "dialogue"
|
||||
And I click on "Save and display" "button"
|
||||
And I should see "PageName1" in the "page-header" "region"
|
||||
And I switch to "h5p-iframe" class iframe
|
||||
# Library is disabled, so an error should be displayed.
|
||||
Then I should see "This file can't be displayed because its content type is disabled."
|
||||
|
||||
@@ -84,6 +84,7 @@ function filter_tex_sanitize_formula(string $texexp): string {
|
||||
'\afterassignment', '\expandafter', '\noexpand', '\special',
|
||||
'\let', '\futurelet', '\else', '\fi', '\chardef', '\makeatletter', '\afterground',
|
||||
'\noexpand', '\line', '\mathcode', '\item', '\section', '\mbox', '\declarerobustcommand',
|
||||
'\ExplSyntaxOn',
|
||||
];
|
||||
|
||||
$allowlist = ['inputenc'];
|
||||
|
||||
@@ -43,24 +43,24 @@ Feature: We can change what we are viewing on the grader report
|
||||
And I click on "Hide" "link" in the "Test assignment name 2" activity
|
||||
And I am on "Course 1" course homepage
|
||||
And I navigate to "View > Grader report" in the course gradebook
|
||||
And I should see "Test assignment name 1"
|
||||
And I should see "Test assignment name 2"
|
||||
And I should see "Test assignment name 1" in the "user-grades" "table"
|
||||
And I should see "Test assignment name 2" in the "user-grades" "table"
|
||||
And I should see "Manual grade"
|
||||
And I should see "Course total"
|
||||
And the following should exist in the "user-grades" table:
|
||||
| -1- | -4- | -5- | -6- | -7- |
|
||||
| Student 1 | 80 | 90 | 30 | 170 |
|
||||
And I click on "Change to aggregates only" "link"
|
||||
And I should not see "Test assignment name 1"
|
||||
And I should not see "Test assignment name 2"
|
||||
And I should not see "Test assignment name 1" in the "user-grades" "table"
|
||||
And I should not see "Test assignment name 2" in the "user-grades" "table"
|
||||
And I should not see "Manual grade"
|
||||
And I should see "Course total"
|
||||
And the following should exist in the "user-grades" table:
|
||||
| -1- | -4- |
|
||||
| Student 1 | 170 |
|
||||
And I click on "Change to grades only" "link"
|
||||
And I should see "Test assignment name 1"
|
||||
And I should see "Test assignment name 2"
|
||||
And I should see "Test assignment name 1" in the "user-grades" "table"
|
||||
And I should see "Test assignment name 2" in the "user-grades" "table"
|
||||
And I should see "Manual grade"
|
||||
And I should not see "Course total"
|
||||
And the following should exist in the "user-grades" table:
|
||||
@@ -68,7 +68,7 @@ Feature: We can change what we are viewing on the grader report
|
||||
| Student 1 | 80 | 90 | 30 |
|
||||
|
||||
@javascript @skip_chrome_zerosize
|
||||
Scenario: View and minimise the grader report containing hidden activities without the 'moodle/grade:viewhidden' capability
|
||||
Scenario: Minimise the grader report containing hidden activities without the 'moodle/grade:viewhidden' capability
|
||||
When I am on "Course 1" course homepage with editing mode on
|
||||
And I open "Test assignment name 2" actions menu
|
||||
And I click on "Hide" "link" in the "Test assignment name 2" activity
|
||||
@@ -81,24 +81,24 @@ Feature: We can change what we are viewing on the grader report
|
||||
And I log in as "teacher1"
|
||||
And I am on "Course 1" course homepage
|
||||
And I navigate to "View > Grader report" in the course gradebook
|
||||
And I should see "Test assignment name 1"
|
||||
And I should see "Test assignment name 2"
|
||||
And I should see "Test assignment name 1" in the "user-grades" "table"
|
||||
And I should see "Test assignment name 2" in the "user-grades" "table"
|
||||
And I should see "Manual grade"
|
||||
And I should see "Course total"
|
||||
And the following should exist in the "user-grades" table:
|
||||
| -1- | -4- | -5- | -6- | -7- |
|
||||
| Student 1 | 80 | - | 30 | 105.71 |
|
||||
And I click on "Change to aggregates only" "link"
|
||||
And I should not see "Test assignment name 1"
|
||||
And I should not see "Test assignment name 2"
|
||||
And I should not see "Test assignment name 1" in the "user-grades" "table"
|
||||
And I should not see "Test assignment name 2" in the "user-grades" "table"
|
||||
And I should not see "Manual grade"
|
||||
And I should see "Course total"
|
||||
And the following should exist in the "user-grades" table:
|
||||
| -1- | -4- |
|
||||
| Student 1 | 105.71 |
|
||||
And I click on "Change to grades only" "link"
|
||||
And I should see "Test assignment name 1"
|
||||
And I should see "Test assignment name 2"
|
||||
And I should see "Test assignment name 1" in the "user-grades" "table"
|
||||
And I should see "Test assignment name 2" in the "user-grades" "table"
|
||||
And I should see "Manual grade"
|
||||
And I should not see "Course total"
|
||||
And the following should exist in the "user-grades" table:
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
{{#members}}
|
||||
<optgroup label="{{role}}">
|
||||
{{#rolemembers}}
|
||||
<option value="{{value}}" title="{{{text}}}">{{{text}}}</option>
|
||||
<option value="{{value}}" title="{{text}}">{{{text}}}</option>
|
||||
{{/rolemembers}}
|
||||
</optgroup>
|
||||
{{/members}}
|
||||
|
||||
@@ -29,6 +29,9 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p>Tietokantaa ei voi luoda.</p>
|
||||
<p>Määritettyä tietokantaa ei ole olemassa, eikä kyseisellä käyttäjällä ole oikeutta luoda tietokantaa.</p>
|
||||
<p>Sivuston järjestelmänvalvojan tulee tarkistaa tietokannan määritykset.</p>';
|
||||
$string['cannotcreatelangdir'] = 'Kielihakemistoa ei voida luoda';
|
||||
$string['cannotcreatetempdir'] = 'Temp-hakemistoa ei voitu luoda';
|
||||
$string['cannotdownloadcomponents'] = 'Komponentteja ei voitu ladata';
|
||||
@@ -38,10 +41,12 @@ $string['cannotsavemd5file'] = 'MD5-tiedostoa ei voitu tallentaa';
|
||||
$string['cannotsavezipfile'] = 'Zip-tiedostoa ei voitu tallentaa';
|
||||
$string['cannotunzipfile'] = 'Zip-tiedostoa ei voitu purkaa';
|
||||
$string['componentisuptodate'] = 'Komponentti on ajan tasalla';
|
||||
$string['dmlexceptiononinstall'] = '<p>Tapahtui tietokantavirhe [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'Ladatun tiedoston tarkistus epäonnistui';
|
||||
$string['invalidmd5'] = 'Tarkistusmuuttuja oli väärin - yritä uudelleen';
|
||||
$string['missingrequiredfield'] = 'Joitakin vaadituista kentistä puuttuu';
|
||||
$string['remotedownloaderror'] = 'Komponentin lataaminen palvelimelle epäonnistui, ole hyvä ja varmista välityspalvelimen asetukset, PHP cURL -laajennus on suositeltu.<br /><br />Sinun täytyy ladata <a href="{$a->url}">{$a->url}</a> -tiedosto manuaalisesti, kopioi se kohteeseen "{$a->dest}" serverilläsi ja pura se sinne.';
|
||||
$string['remotedownloaderror'] = '<p>Komponentin lataaminen palvelimellesi epäonnistui. Tarkista välityspalvelimen asetukset: PHP cURL -laajennus on erittäin suositeltavaa.</p>
|
||||
<p>Sinun on ladattava <a href="{$a->url}">{$a->url}</a>-tiedosto manuaalisesti, kopioitava se palvelimellesi kohteeseen "{$a->dest}" ja purettava se sinne.</p>';
|
||||
$string['wrongdestpath'] = 'Virheellinen kohdekansio';
|
||||
$string['wrongsourcebase'] = 'Väärä lähteen web-osoitteen kanta';
|
||||
$string['wrongzipfilename'] = 'Virheellinen zip-tiedoston nimi';
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
// This file is part of Moodle - https://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Automatically generated strings for Moodle installer
|
||||
*
|
||||
* Do not edit this file manually! It contains just a subset of strings
|
||||
* needed during the very first steps of installation. This file was
|
||||
* generated automatically by export-installer.php (which is part of AMOS
|
||||
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
|
||||
* list of strings defined in /install/stringnames.txt.
|
||||
*
|
||||
* @package installer
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['parentlanguage'] = 'fr_ca';
|
||||
$string['thislanguage'] = 'Francais Canada – Épicène';
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
// This file is part of Moodle - https://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Automatically generated strings for Moodle installer
|
||||
*
|
||||
* Do not edit this file manually! It contains just a subset of strings
|
||||
* needed during the very first steps of installation. This file was
|
||||
* generated automatically by export-installer.php (which is part of AMOS
|
||||
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
|
||||
* list of strings defined in /install/stringnames.txt.
|
||||
*
|
||||
* @package installer
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['language'] = 'Langue';
|
||||
$string['next'] = 'Suivant';
|
||||
$string['previous'] = 'Précédent';
|
||||
+59
-29
@@ -29,38 +29,68 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['admindirname'] = 'Админ директор';
|
||||
$string['availablelangs'] = 'Боломжит хэлний багцууд';
|
||||
$string['chooselanguagehead'] = 'Хэлээ сонго';
|
||||
$string['chooselanguagesub'] = 'Зөвхөн суулгах үед ашиглагдах хэлээ сонго. Та дараа нь сайтны болон хэрэглэгчийн хэлийг сонгож болно.';
|
||||
$string['dataroot'] = 'Өгөгдлийн директор';
|
||||
$string['dbprefix'] = 'Хүснэгтний угтвар';
|
||||
$string['dirroot'] = 'Моодл хавтас';
|
||||
$string['environmenthead'] = 'Таны орчиныг шалгаж байна ...';
|
||||
$string['installation'] = 'Суулгах';
|
||||
$string['langdownloaderror'] = 'Харамсалтай нь "{$a}" хэл суусангүй. Суулгах үйл ажиллагаа Англи хэл дээр үргэлжлэх болно.';
|
||||
$string['memorylimithelp'] = '<p>Таны серверийн PHP санах ойн хязгаар нь {$a} гэж тохируулсан байна.</p>
|
||||
$string['admindirname'] = 'Админ лавлах';
|
||||
$string['availablelangs'] = 'Боломжит хэлний багц';
|
||||
$string['chooselanguagehead'] = 'Хэл сонгох';
|
||||
$string['chooselanguagesub'] = 'Суулгах хэлээ сонгоно уу. Энэ хэлийг сайтын өгөгдмөл хэл болгон ашиглах боловч дараа нь өөрчилж болно.';
|
||||
$string['clialreadyconfigured'] = 'config.php тохиргооны файл байна. Энэ сайтад Moodle системийг суулгахын тулд admin/cli/install_database.php ашиглана уу.';
|
||||
$string['clialreadyinstalled'] = 'config.php тохиргооны файл байна. Энэ сайтад Moodle системийг шинэчлэхийн тулд admin/cli/install_database.php ашиглана уу.';
|
||||
$string['cliinstallheader'] = 'Moodle {$a} командын мөр суулгах програм';
|
||||
$string['clitablesexist'] = 'Өгөгдлийн сангийн хүснэгтүүд байна; CLI суурилуултыг үргэлжлүүлэх боломжгүй.';
|
||||
$string['databasehost'] = 'Өгөгдлийн сангийн хост';
|
||||
$string['databasename'] = 'Өгөгдлийн сангийн нэр';
|
||||
$string['databasetypehead'] = 'Өгөгдлийн сангийн драйвер сонгох';
|
||||
$string['dataroot'] = 'Өгөгдлийн лавлах';
|
||||
$string['datarootpermission'] = 'Өгөгдлийн лавлахын зөвшөөрөл';
|
||||
$string['dbprefix'] = 'Хүснэгтийн угтвар';
|
||||
$string['dirroot'] = 'Moodle лавлах';
|
||||
$string['environmenthead'] = 'Таны орчныг шалгаж байна ...';
|
||||
$string['environmentsub2'] = 'Moodle системийн хувилбар бүр нь PHP хувилбарын хамгийн наад захын шаардлагыг хангаж, PHP гол гол өргөтгөлтэй байдаг.
|
||||
Суурилуулах, шинэчлэхээс өмнө орчны бүрэн шалгалтыг хийдэг. Шинэ хувилбар суулгах эсвэл PHP өргөтгөлийг хэрхэн идэвхжүүлэхийг мэдэхгүй байгаа бол серверийн админтай холбогдоно уу.';
|
||||
$string['errorsinenvironment'] = 'Орчны шалгалт амжилтгүй боллоо!';
|
||||
$string['installation'] = 'Суурилуулалт';
|
||||
$string['langdownloaderror'] = 'Харамсалтай нь "{$a}" хэлийг татаж авч чадсангүй. Суулгах үйл явц англи хэл дээр үргэлжилнэ.';
|
||||
$string['memorylimithelp'] = '<p>Таны серверийн PHP санах ойн хязгаарлалтыг {$a} гэж тохируулсан байна.</p>
|
||||
|
||||
<p>Энэ нь Моодл сүүлд санах ойн асуудлууд ялангуяа олон модуль ба/эсвэл олон хэрэглэгч идэвхжүүлсэн үед учирч болзошгүй. </p>
|
||||
<p>Энэ нь Moodle системд хожим санах ойн асуудал, ялангуяа олон модулийг идэвхжүүлсэн ба/буюу олон хэрэглэгчтэй үед үүсгэж болзошгүй.</p>
|
||||
|
||||
<p>Бид танд зөвлөхөд РНР-гээ боломжит дээд хязгаартайгаар жишээ нь 16М болгож тохируул. Үүний тулд хэд хэдэн арга байна: </p>
|
||||
<p>Бид танд PHP-г боломжтой бол 40M гэх мэт өндөр хязгаартайгаар тохируулахыг зөвлөж байна.
|
||||
Үүнд хэд хэдэн арга байдаг ба тэдгээрийг ашиглаж болно:</p>
|
||||
<ol>
|
||||
<li>Хэрвээ та PHP-г <i>--enable-memory-limit</i>-тай дахин хөрвүүлэх боломжтой бол. Энэ нь Моодлийг санах ойн хязгаарыг өөрөө тогтоох боломжтой болгоно. </li>
|
||||
<li>Хэрвээ та php.ini файлдаа хандаж чадвал, <b>memory_limit</b> гэсэн тохиргоог 16M гэх мэтээр өөрчилж болно. Хэрвээ хандалт байхгүй бол админаараа үүнийг хийлгэнэ үү.</li>
|
||||
<li>Зарим PHP сервер дээр Моодл хавтсан дотроо дараах мөр агуулсан .htaccess файл үүсгэж болно: <p><blockquote>php_value memory_limit 16M</blockquote></p>
|
||||
<p>Зарим сервер дээр энэ нь <b>бүх</b> PHP хуудсуудыг ажиллахгүй болгоно (та хуудаснууд руу орох юм бол алдааг нь харах болно). Тиймээс .htaccess файлыг устгах хэрэгтэй болно.</p></li>
|
||||
<li>Хэрэв боломжтой бол PHP-г <i>--enable-memory-limit</i> ашиглан дахин хөрвүүлээрэй.
|
||||
Энэ нь Moodle системд санах ойн хязгаарыг өөрөө тохируулах боломжийг олгоно.</li>
|
||||
<li>Хэрэв та өөрийн php.ini файлд хандах эрхтэй бол <b>memory_limit</b> тохиргоог 40M гэх зэргээр өөрчлөх боломжтой. Хандах эрхгүй бол администратортоо хандаж болно.</li>
|
||||
<li>Зарим PHP серверт дараах мөрийг агуулсан Moodle санд .htaccess файлыг үүсгэж болно: <blockquote><div>php_value memory_limit 40M</div></blockquote>
|
||||
<p>Гэвч зарим серверт энэ нь <b>бүх</b> PHP хуудас ажиллахаас сэргийлдэг (хуудсыг харахад алдаа гарах болно) тул та .htaccess файлыг устгах шаардлагатай.</p> </li>
|
||||
</ol>';
|
||||
$string['paths'] = 'Замууд';
|
||||
$string['pathserrcreatedataroot'] = 'Суурилуулагч нь өгөгдлийн лавлахыг ({$a->dataroot}) үүсгэх боломжгүй';
|
||||
$string['pathshead'] = 'Замыг баталгаажуулах';
|
||||
$string['pathsrodataroot'] = 'Dataroot лавлах нь бичилт хийх боломжгүй.';
|
||||
$string['pathsroparentdataroot'] = 'Үндсэн лавлах ({$a->parent}) нь бичилт хийх боломжгүй. Суурилуулагч нь өгөгдлийн санг ({$a->dataroot}) үүсгэх боломжгүй.';
|
||||
$string['pathssubadmindir'] = 'Маш цөөн веб хост /админыг хянах самбар эсвэл өөр зүйлд нэвтрэхийн тулд тусгай URL болгон ашигладаг. Харамсалтай нь энэ нь Moodle админ хуудасны стандарт байршилтай зөрчилддөг. Та үүнийг засах боломжтой
|
||||
Суурилуулалтад админ лавлахын нэрийг өөрчилж, энд шинэ нэрийг оруулах замаар засаж болно. Жишээ нь: <em>moodleadmin</em>. Энэ нь Moodle дээрх админ холбоосыг засах болно.';
|
||||
$string['pathssubdataroot'] = '<p>Moodle нь хэрэглэгчийн байршуулсан бүх файлын агуулгыг хадгалах лавлах.</p>
|
||||
<p>Энэ лавлах нь веб серверийн хэрэглэгч (ихэвчлэн \'www-data\', \'nobody\' эсвэл \'apache\') унших, бичих боломжтой байх ёстой.</p>
|
||||
<p>Энэ нь вебээр шууд хандах боломжгүй байх ёстой.</p>
|
||||
<p>Одоогоор лавлах байхгүй бол үүнийг суурилуулах процесс үүсгэх болно.</p>';
|
||||
$string['pathssubdirroot'] = '<p>Moodle код агуулсан лавлахад хандах бүрэн зам.</p>';
|
||||
$string['pathssubwwwroot'] = '<p>Moodle системд хандах бүрэн хаяг, өөрөөр хэлбэл хэрэглэгч Moodle системд хандахын тулд хөтчийн хаягийн мөрөнд оруулах хаяг.</p>
|
||||
<p>Олон хаяг ашиглан Moodle системд хандах боломжгүй. Таны сайтад олон хаягаар хандах боломжтой бол хамгийн хялбарыг сонгож, бусад хаяг руугаа байнгын дахин чиглүүлэлт хийхээр тохируулна уу.</p>
|
||||
<p>Таны сайтад интернэт, дотоод сүлжээнээс (заримдаа интранэт гэж нэрлэдэг) нэвтрэх боломжтой бол энд нийтийн хаягийг ашиглана уу.</p>
|
||||
<p>Одоогийн хаяг буруу байвал хөтчийн хаягийн мөрөнд байгаа URL хаягийг өөрчлөөд суурилуулалтыг дахин эхлүүлнэ үү.</p>';
|
||||
$string['pathsunsecuredataroot'] = 'Dataroot байршил аюулгүй биш байна';
|
||||
$string['pathswrongadmindir'] = 'Админ лавлах байхгүй байна';
|
||||
$string['phpextension'] = '{$a} PHP өргөтгөл';
|
||||
$string['phpversion'] = 'РНР хувилбар';
|
||||
$string['phpversionhelp'] = '<p>Mooдл нь РНР хувилбарын хамгийн багадаа 4.3.0 эсвэл 5.1.0 байхыг шаарддаг (5.0.x нь алдаануудтай).</p>
|
||||
<p>Та одоо {$a} хувилбар ажиллуулж байна</p>
|
||||
<p>Та PHP-гээ шинэчлэх эсвэл PHP-ийн шинэ хувилбар бүхий хост руу шилжүүл!<br/>
|
||||
(5.0.x тохиолдолд доошоо 4.4.x хувилбар руу орж болно)</p>';
|
||||
$string['phpversionhelp'] = '<p>Moodle системд хамгийн багадаа 5.6.5 эсвэл 7.1 PHP хувилбар шаардлагатай (7.0.x нь системийн зарим хязгаарлалттай).</p>
|
||||
<p>Та одоогоор {$a} хувилбарыг ажиллуулж байна.</p>
|
||||
<p>Та PHP-г шинэчлэх эсвэл шинэ PHP хувилбартай хостод шилжих шаардлагатай.</p>';
|
||||
$string['welcomep10'] = '{$a->installername} ({$a->installerversion})';
|
||||
$string['welcomep20'] = 'Та <strong>{$a->packname} {$a->packversion}</strong> багцыг компьютер дээрээ амжилттай суулгаж ажиллуулсан тул энэ хуудсыг харж байна. Баяр хүргэе!';
|
||||
$string['welcomep30'] = '<strong>{$a->installername}</strong> -ний энэ хувилбар нь <strong>Mooдл</strong> ажиллах орчныг үүсгэх програмууд агуулсан, тэдгээр нь:';
|
||||
$string['welcomep40'] = 'Энэ багц нь мөн <strong>Mooдл {$a->moodlerelease} ({$a->moodleversion})</strong>-г агуулсан.';
|
||||
$string['welcomep50'] = 'Энэ багц доторх бүх програмууд нь өөрсдийн лизенцтэй. Бүрэн <strong>{$a->installername}</strong> багц нь
|
||||
<a href="http://www.opensource.org/docs/definition_plain.html">open source</a> бөгөөд <a href="http://www.gnu.org/copyleft/gpl.html">GPL</a> -ийн лизенцийн дор түгээгддэг.';
|
||||
$string['welcomep60'] = 'Дараагийн хуудсууд нь компьютер дээрээ <strong>Mooдл</strong> тохируулах тааруулах энгийн алхмуудыг агуулсан байгаа. Та анхны утгын тохиргоонуудыг хүлээн авч болно, эсвэл өөрийн хэрэгцээнд нийцүүлэн өөрчилж болно.';
|
||||
$string['welcomep70'] = '<strong>Mooдлээ</strong> тохируулахын тулд доорх “Үргэлжлүүлэх” товчин дээр дарж цааж явна уу.';
|
||||
$string['wwwroot'] = 'Вэб хаяг';
|
||||
$string['welcomep20'] = 'Та <strong>{$a->packname} {$a->packversion}</strong> багцыг компьютертоо амжилттай суулгаж, эхлүүлсэн тул та энэ хуудсыг харж байна. Баяр хүргэе!';
|
||||
$string['welcomep30'] = '<strong>{$a->installername}</strong> энэхүү хувилбарт <strong>Moodle</strong> ажиллах орчныг бүрдүүлэх аппликейшнүүд багтсан болно, тухайлбал:';
|
||||
$string['welcomep40'] = 'Түүнчлэн энэ багц нь <strong>Moodle {$a->moodlerelease} ({$a->moodleversion})</strong>-г агуулдаг.';
|
||||
$string['welcomep50'] = 'Энэ багцад буй бүх аппликейшны хэрэглээг тэдгээрийн лицензээр зохицуулдаг. Бүрэн <strong>{$a->installername}</strong> багц нь <a href="https://www.opensource.org/docs/definition_plain.html">нээлттэй эх сурвалж</a> бөгөөд <a href="https://www.gnu.org/copyleft/gpl.html">GPL</a> лиценз дор түгээгддэг.';
|
||||
$string['welcomep60'] = 'Дараах хуудсууд нь таны компьютерт <strong>Moodle</strong> системийг тохируулах, тохируулахад хялбар алхмыг хийх болно. Та өгөгдмөл тохиргоог хүлээн зөвшөөрөх эсвэл өөрийн хэрэгцээнд тохируулан өөрчилж болно.';
|
||||
$string['welcomep70'] = 'Доорх "Дараах" товчийг дарж <strong>Moodle</strong> системийн тохиргоог үргэлжлүүлнэ үү.';
|
||||
$string['wwwroot'] = 'Веб хаяг';
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['language'] = 'Хэл';
|
||||
$string['moodlelogo'] = 'Мүүдл лого';
|
||||
$string['moodlelogo'] = 'Moodle лого';
|
||||
$string['next'] = 'Дараагийн';
|
||||
$string['previous'] = 'Өмнөх';
|
||||
$string['reload'] = 'Дахин ачаалах';
|
||||
|
||||
@@ -73,7 +73,7 @@ $string['pathssubdataroot'] = '<p>Um diretório em que Moodle armazenará todo o
|
||||
<p>Este diretório deve ser legível e gravável pelo usuário do servidor web (geralmente "www-data \',\' nobody \', ou\' apache\'). </p>
|
||||
<p>Não deve ser diretamente acessível através da web. </p>
|
||||
<p>Se o diretório não existir atualmente, o processo de instalação tentará criá-lo. </p>';
|
||||
$string['pathssubdirroot'] = '<p>Caminho completo do diretório para instalação do Moddle.</p>';
|
||||
$string['pathssubdirroot'] = '<p>Caminho completo do diretório para instalação do Moodle.</p>';
|
||||
$string['pathssubwwwroot'] = '<p>O endereço completo em que Moodle pode ser acessado ou seja, o endereço que os usuários vão digitar na barra de endereços do seu navegador para acessar Moodle. </p>
|
||||
<p>Não é possível acessar Moodle usando múltiplos endereços. Se o seu site é acessível através de múltiplos endereços, em seguida, escolher o mais fácil e configurar um redirecionamento permanente para cada um dos outros endereços. </p>
|
||||
<p>Se o seu site é acessível tanto a partir da Internet e, a partir de uma rede interna (às vezes chamado de Intranet), em seguida, use o endereço público aqui. </p>
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
// This file is part of Moodle - https://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Automatically generated strings for Moodle installer
|
||||
*
|
||||
* Do not edit this file manually! It contains just a subset of strings
|
||||
* needed during the very first steps of installation. This file was
|
||||
* generated automatically by export-installer.php (which is part of AMOS
|
||||
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
|
||||
* list of strings defined in /install/stringnames.txt.
|
||||
*
|
||||
* @package installer
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['thislanguage'] = 'Kichwa - Cañar Highland';
|
||||
@@ -30,4 +30,4 @@
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['thisdirection'] = 'rtl';
|
||||
$string['thislanguage'] = 'سنڌي';
|
||||
$string['thislanguage'] = 'سنڌي';
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
// This file is part of Moodle - https://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Automatically generated strings for Moodle installer
|
||||
*
|
||||
* Do not edit this file manually! It contains just a subset of strings
|
||||
* needed during the very first steps of installation. This file was
|
||||
* generated automatically by export-installer.php (which is part of AMOS
|
||||
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
|
||||
* list of strings defined in /install/stringnames.txt.
|
||||
*
|
||||
* @package installer
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['parentlanguage'] = 'sv';
|
||||
$string['thislanguage'] = 'Svenska för Workplace';
|
||||
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
// This file is part of Moodle - https://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Automatically generated strings for Moodle installer
|
||||
*
|
||||
* Do not edit this file manually! It contains just a subset of strings
|
||||
* needed during the very first steps of installation. This file was
|
||||
* generated automatically by export-installer.php (which is part of AMOS
|
||||
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
|
||||
* list of strings defined in /install/stringnames.txt.
|
||||
*
|
||||
* @package installer
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['clianswerno'] = 'n';
|
||||
$string['cliansweryes'] = 't';
|
||||
$string['cliincorrectvalueerror'] = 'Błōnd, niynŏleżny wert "{$a->value}" dlŏ "{$a->option}"';
|
||||
$string['cliincorrectvalueretry'] = 'Niynŏleżny wert, sprōbuj zaś';
|
||||
$string['clitypevalue'] = 'wert zorty';
|
||||
$string['clitypevaluedefault'] = 'Zorta wertu, naciś Ynter, coby użyć wertu wychodnyj ({$a})';
|
||||
$string['cliunknowoption'] = 'Niyznōme ôpcyje:
|
||||
{$a}
|
||||
Proszã użyć ôpcyje --help.';
|
||||
$string['cliyesnoprompt'] = 'wpisz y (to znaczy tak) abo n (to znaczy niy)';
|
||||
$string['environmentrequireinstall'] = 'je zdatne, coby było zainstalowane i włōnczōne';
|
||||
$string['environmentrequireversion'] = 'wymŏganŏ je wersyjŏ {$a->needed}, a ty używŏsz wersyje {$a->current}';
|
||||
$string['upgradekeyset'] = 'Zaktualizuj klucz (ôstŏw prōzne jeźli niy ma to skōnfigurowane)';
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
// This file is part of Moodle - https://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Automatically generated strings for Moodle installer
|
||||
*
|
||||
* Do not edit this file manually! It contains just a subset of strings
|
||||
* needed during the very first steps of installation. This file was
|
||||
* generated automatically by export-installer.php (which is part of AMOS
|
||||
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
|
||||
* list of strings defined in /install/stringnames.txt.
|
||||
*
|
||||
* @package installer
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['thisdirection'] = 'ltr';
|
||||
$string['thislanguage'] = 'Ślōnski';
|
||||
+14
-15
@@ -32,11 +32,11 @@ defined('MOODLE_INTERNAL') || die();
|
||||
$string['admindirname'] = 'Yönetici dizini';
|
||||
$string['availablelangs'] = 'Kullanılabilir dil paketleri';
|
||||
$string['chooselanguagehead'] = 'Dil seçin';
|
||||
$string['chooselanguagesub'] = 'Lütfen, SADECE kurulum için bir dil seçin. Site ve kullanıcı dillerini sonraki ekranda seçebilirsiniz.';
|
||||
$string['clialreadyconfigured'] = 'config.php halihazırda mevcut, lütfen eğer bu siteyi yüklemek istiyorsanız şu dizini kullanın: admin/cli/install_database.php';
|
||||
$string['chooselanguagesub'] = 'Lütfen kurulum için bir dil seçin. Bu dil aynı zamanda site için varsayılan dil olarak kullanılacaktır, ancak daha sonra değiştirilebilir.';
|
||||
$string['clialreadyconfigured'] = 'config.php yapılandırma dosyası zaten mevcut. Bu siteye Moodle yüklemek için lütfen admin/cli/install_database.php dosyasını kullanın.';
|
||||
$string['clialreadyinstalled'] = 'Config.php zaten var. Sitenizi güncellemek istiyorsanız bu adresi kullanın: admin/cli/install_database.php';
|
||||
$string['cliinstallheader'] = 'Moodle {$a} komut satırı kurulum programı';
|
||||
$string['clitablesexist'] = 'Veritabanı tabloları zaten var. CLI kurulumu devam edemez.';
|
||||
$string['clitablesexist'] = 'Veritabanı tabloları zaten mevcut; CLI kurulumu devam edemiyor.';
|
||||
$string['databasehost'] = 'Veritabanı sunucusu';
|
||||
$string['databasename'] = 'Veritabanı adı';
|
||||
$string['databasetypehead'] = 'Veritabanı sürücüsü seçin';
|
||||
@@ -49,17 +49,16 @@ $string['environmentsub2'] = 'Her Moodle dağıtımı, bazı PHP versiyon gereks
|
||||
$string['errorsinenvironment'] = 'Ortam kontrolu başarısız oldu!';
|
||||
$string['installation'] = 'Kurulum';
|
||||
$string['langdownloaderror'] = 'Maalesef "{$a}" dil paketi kurulamadı. Kuruluma İngilizce olarak devam edilecek.';
|
||||
$string['memorylimithelp'] = '<p>Sunucunuz için PHP bellek limiti şu anda {$a} olarak ayarlanmış durumda.</p>
|
||||
$string['memorylimithelp'] = '<p>Sunucunuz için PHP bellek sınırı şu anda {$a} olarak ayarlanmıştır.</p>
|
||||
|
||||
<p>Özellikle bir çok modülü etkinleştirilmiş ve/veya çok fazla kullanıcınız
|
||||
varsa bu durum daha sonra bazı bellek sorunlarına sebep olabilir.</p>
|
||||
|
||||
<p>Mümkünse size PHP\'e daha yüksek limitli bir bellek ayarı yapmanızı,
|
||||
örneğin, 40M, öneriyoruz. İşte bunu yapabilmeniz için size bir kaç yol:</p>
|
||||
|
||||
<p>PHP\'yi mümkünse 40M gibi daha yüksek bir limitle yapılandırmanızı öneririz.
|
||||
Bunu yapmanın birkaç yolunu bulabilirsiniz:</p>
|
||||
<ol>
|
||||
<li>Bunu yapmaya yetkiliyseniz, PHP\'yi <i>--enable-memory-limit</i> ile yeniden derleyin.
|
||||
Bu, Moodle\'nın kendi kendine bellek limitini ayarlasına izin verecek.</li>
|
||||
Bu, Moodle\'nın kendi kendine bellek limitini ayarlasına izin verecektir.</li>
|
||||
|
||||
<li>php.ini dosyasına erişim hakkınız varsa, <b>memory_limit</b> ayarını 40M gibi
|
||||
bir ayarla değiştirin. Erişim hakkınız yoksa, bunu sistem yöneticinizden sizin
|
||||
@@ -92,14 +91,14 @@ $string['pathsunsecuredataroot'] = 'Veri yolu güvenli değil';
|
||||
$string['pathswrongadmindir'] = 'Yönetici klasörü yok';
|
||||
$string['phpextension'] = '{$a} PHP eklentisi';
|
||||
$string['phpversion'] = 'PHP sürümü';
|
||||
$string['phpversionhelp'] = '<p>Moodle, PHP sürümünün en az 4.3.0 veya 5.1.0 olmasını gerektirir (5.0.x sürümünde çok fazla hata var).</p>
|
||||
<p>Şu anda çalışan sürüm: {$a}</p>
|
||||
<p>PHP\'yi güncellemeli veya PHP\'nin yeni sürümünü kullananan bir hostinge taşınmalısınız!</p>';
|
||||
$string['phpversionhelp'] = '<p>Moodle en az 5.6.5 veya 7.1 PHP sürümü gerektirir (7.0.x bazı motor sınırlamalarına sahiptir).</p>
|
||||
<p>Şu anda {$a} sürümünü çalıştırıyorsunuz.</p>
|
||||
<p>PHP\'yi yükseltmeli veya daha yeni bir PHP sürümüne sahip bir ana bilgisayara geçmelisiniz.</p>';
|
||||
$string['welcomep10'] = '{$a->installername} ({$a->installerversion})';
|
||||
$string['welcomep20'] = 'Bilgisayarınıza <strong>{$a->packname} {$a->packversion}</strong> paketini başarıyla kurdunuz. Tebrikler!';
|
||||
$string['welcomep30'] = '<strong>{$a->installername}</strong>\'nin bu sürümü <strong>Moodle</strong>\'da bir ortam oluşturmak için uygulamaları içerir:';
|
||||
$string['welcomep20'] = 'Bu sayfayı <strong>{$a->packname} {$a->packversion}</strong> paketini ilgisayarınıza başarıyla kurduğunuz için görüyorsunuz. Tebrikler!';
|
||||
$string['welcomep30'] = '<strong> {$a-> installername} </strong>\'in bu sürümü, <strong> Moodle </strong>\'ın çalışacağı bir ortam oluşturmak için uygulamaları içerir:';
|
||||
$string['welcomep40'] = 'Bu paket <strong>Moodle {$a->moodlerelease} ({$a->moodleversion})</strong> sürümünü de içerir.';
|
||||
$string['welcomep50'] = 'Bu paketteki tüm uygulamaların kullanımı her biri kendine ait olan lisanslar tarafından yönetilir. <strong>{$a->installername}</strong> paketinin tamamı <a href="http://www.opensource.org/docs/definition_plain.html">açık kaynak</a> kodludur ve <a href="http://www.gnu.org/copyleft/gpl.html">GPL</a> lisansı altında dağıtılır.';
|
||||
$string['welcomep60'] = 'Aşağıdaki sayfalar <strong>Moodle</strong>ın kurulumu ve yapılandırılması için size basitçe yol gösterecektir. Varsayılan ayarları kabul edebilir veya ihtiyaçlarınıza göre bunları değiştirebilirsiniz.';
|
||||
$string['welcomep50'] = 'Bu paketteki tüm uygulamaların kullanımı ilgili lisanslarına tabidir. Eksiksiz <strong>{$a->installername}</strong> paketi <a href="https://www.opensource.org/docs/definition_plain.html">açık kaynak</a>\'tır ve altında dağıtılır <a href="https://www.gnu.org/copyleft/gpl.html">GPL</a> lisansı.';
|
||||
$string['welcomep60'] = 'Aşağıdaki sayfalar, bilgisayarınızda <strong> Moodle </strong>\'ı yapılandırmak ve kurmak için izlemeniz gereken bazı kolay adımlarla sizi yönlendirecektir. Varsayılan ayarları kabul edebilir veya isteğe bağlı olarak kendi ihtiyacınıza göre değiştirebilirsiniz';
|
||||
$string['welcomep70'] = '<strong>Moodle</strong> kurulumu için aşağıdaki "İleri" tuşuna basın.';
|
||||
$string['wwwroot'] = 'Web adresi';
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
// This file is part of Moodle - https://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Automatically generated strings for Moodle installer
|
||||
*
|
||||
* Do not edit this file manually! It contains just a subset of strings
|
||||
* needed during the very first steps of installation. This file was
|
||||
* generated automatically by export-installer.php (which is part of AMOS
|
||||
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
|
||||
* list of strings defined in /install/stringnames.txt.
|
||||
*
|
||||
* @package installer
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cliincorrectvalueerror'] = 'خرابی، "{$a->option}" کے لیے غلط قدر "{$a->value}"';
|
||||
$string['cliincorrectvalueretry'] = 'غلط قدر، براہ کرم دوبارہ کوشش کریں';
|
||||
$string['clitypevalue'] = 'قسم کی قدر';
|
||||
$string['clitypevaluedefault'] = 'قدر ٹائپ کریں، طے شدہ قدر استعمال کرنے کے لیے داخل دبائیں ({$a})';
|
||||
$string['cliunknowoption'] = 'غیر تسلیم شدہ اختیارات: {$a} براہ کرم --help آپشن استعمال کریں۔';
|
||||
$string['cliyesnoprompt'] = 'ٹائپ کریں y (یعنی ہاں) یا n (یعنی نہیں)';
|
||||
$string['environmentrequireinstall'] = 'انسٹال اور فعال ہونا ضروری ہے';
|
||||
$string['environmentrequireversion'] = 'ورژن {$a->needed} درکار ہے اور آپ {$a->current} چلا رہے ہیں';
|
||||
$string['upgradekeyset'] = 'اپ گریڈ کلید (اسے سیٹ نہ کرنے کے لیے خالی چھوڑ دیں)';
|
||||
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
// This file is part of Moodle - https://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Automatically generated strings for Moodle installer
|
||||
*
|
||||
* Do not edit this file manually! It contains just a subset of strings
|
||||
* needed during the very first steps of installation. This file was
|
||||
* generated automatically by export-installer.php (which is part of AMOS
|
||||
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
|
||||
* list of strings defined in /install/stringnames.txt.
|
||||
*
|
||||
* @package installer
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p>ڈیٹا بیس نہیں بنا سکتا۔</p> <p>مخصوص ڈیٹا بیس موجود نہیں ہے اور دیے گئے صارف کو ڈیٹا بیس بنانے کی اجازت نہیں ہے۔</p> <p>سائٹ ایڈمنسٹریٹر کو ڈیٹا بیس کنفیگریشن کی تصدیق کرنی چاہیے۔< </p>';
|
||||
$string['cannotcreatelangdir'] = 'lang ڈائریکٹری نہیں بن سکتی';
|
||||
$string['cannotcreatetempdir'] = 'عارضی ڈائریکٹری نہیں بن سکتی';
|
||||
$string['cannotdownloadcomponents'] = 'اجزاء کو ڈاؤن لوڈ نہیں کیا جا سکتا';
|
||||
$string['cannotdownloadzipfile'] = 'ZIP فائل ڈاؤن لوڈ نہیں ہو سکتی';
|
||||
$string['cannotfindcomponent'] = 'جزو نہیں مل سکتا';
|
||||
$string['cannotsavemd5file'] = 'md5 فائل کو محفوظ نہیں کیا جا سکتا';
|
||||
$string['cannotsavezipfile'] = 'ZIP فائل کو محفوظ نہیں کیا جا سکتا';
|
||||
$string['cannotunzipfile'] = 'فائل کو ان زپ نہیں کیا جا سکتا';
|
||||
$string['componentisuptodate'] = 'جزو اپ ٹو ڈیٹ ہے';
|
||||
$string['dmlexceptiononinstall'] = '<p>ڈیٹا بیس میں خرابی پیدا ہوگئی ہے [{$a->errorcode}]۔<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'ڈاؤن لوڈ فائل کی جانچ ناکام ہوگئی';
|
||||
$string['invalidmd5'] = 'چیک متغیر غلط تھا - دوبارہ کوشش کریں';
|
||||
$string['missingrequiredfield'] = 'کچھ مطلوبہ فیلڈ غائب ہے';
|
||||
$string['remotedownloaderror'] = '<p>آپ کے سرور پر جزو کا ڈاؤن لوڈ ناکام ہو گیا۔ براہ کرم پراکسی ترتیبات کی تصدیق کریں۔ PHP cURL ایکسٹینشن کی انتہائی سفارش کی جاتی ہے۔ آپ کے سرور میں "{$a->dest}" اور اسے وہاں کھول دیں۔</p>';
|
||||
$string['wrongdestpath'] = 'غلط منزل کا راستہ';
|
||||
$string['wrongsourcebase'] = 'غلط سورس یو آر ایل کی بنیاد';
|
||||
$string['wrongzipfilename'] = 'غلط ZIP فائل کا نام';
|
||||
@@ -29,4 +29,45 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['availablelangs'] = 'دستیاب زبانوں کے بنڈل';
|
||||
$string['admindirname'] = 'ایڈمن ڈائرکٹری';
|
||||
$string['availablelangs'] = 'دستیاب لینگویج پیک';
|
||||
$string['chooselanguagehead'] = 'ایک زبان کا انتخاب کریں';
|
||||
$string['chooselanguagesub'] = 'براہ کرم انسٹالیشن کے لیے ایک زبان کا انتخاب کریں۔ اس زبان کو سائٹ کے لیے ڈیفالٹ زبان کے طور پر بھی استعمال کیا جائے گا، حالانکہ اسے بعد میں تبدیل کیا جا سکتا ہے۔';
|
||||
$string['clialreadyconfigured'] = 'کنفیگریشن فائل config.php پہلے سے موجود ہے۔ اس سائٹ کے لیے Moodle انسٹال کرنے کے لیے براہ کرم admin/cli/install_database.php استعمال کریں۔';
|
||||
$string['clialreadyinstalled'] = 'کنفیگریشن فائل config.php پہلے سے موجود ہے۔ اس سائٹ کے لیے Moodle کو اپ گریڈ کرنے کے لیے براہ کرم admin/cli/install_database.php استعمال کریں۔';
|
||||
$string['cliinstallheader'] = 'موڈل {$a} کمانڈ لائن انسٹالیشن پروگرام';
|
||||
$string['clitablesexist'] = 'ڈیٹا بیس کی میزیں پہلے سے موجود ہیں؛ CLI کی تنصیب جاری نہیں رہ سکتی۔';
|
||||
$string['databasehost'] = 'ڈیٹا بیس میزبان';
|
||||
$string['databasename'] = 'ڈیٹا بیس نام';
|
||||
$string['databasetypehead'] = 'ڈیٹا بیس ڈرائیور کا انتخاب کریں';
|
||||
$string['dataroot'] = 'ڈیٹا ڈائریکٹری';
|
||||
$string['datarootpermission'] = 'ڈیٹا ڈائریکٹریز کی اجازت';
|
||||
$string['dbprefix'] = 'جدولوں کا سابقہ';
|
||||
$string['dirroot'] = 'موڈل ڈائرکٹری';
|
||||
$string['environmenthead'] = 'اپنے ماحول کی جانچ کر رہا ہے۔۔۔';
|
||||
$string['environmentsub2'] = 'ہر موڈل ریلیز میں کچھ کم از کم پی ایچ پی ورژن کی ضرورت اور متعدد لازمی پی ایچ پی ایکسٹینشنز ہوتے ہیں۔ ہر انسٹال اور اپ گریڈ سے پہلے ماحول کی مکمل جانچ کی جاتی ہے۔ اگر آپ نیا ورژن انسٹال کرنا یا پی ایچ پی ایکسٹینشنز کو فعال کرنا نہیں جانتے ہیں تو براہ کرم سرور ایڈمنسٹریٹر سے رابطہ کریں۔';
|
||||
$string['errorsinenvironment'] = 'ماحولیات کی جانچ ناکام!';
|
||||
$string['installation'] = 'تنصیب';
|
||||
$string['langdownloaderror'] = 'بدقسمتی سے زبان "{$a}" ڈاؤن لوڈ نہیں ہو سکی۔ تنصیب کا عمل انگریزی میں جاری رہے گا۔';
|
||||
$string['memorylimithelp'] = '<p>آپ کے سرور کے لیے PHP میموری کی حد فی الحال {$a} پر سیٹ ہے۔</p> <p>اس کی وجہ سے Moodle کو بعد میں میموری کے مسائل کا سامنا کرنا پڑ سکتا ہے، خاص طور پر اگر آپ کے پاس بہت سارے ماڈیولز فعال ہیں اور/یا بہت سارے صارف۔ ایسا کرنے کے کئی طریقے ہیں جنہیں آپ آزما سکتے ہیں:</p> <ol> <li>اگر آپ قابل ہیں تو، پی ایچ پی کو <i>--enable-memory-limit</i> کے ساتھ دوبارہ مرتب کریں۔ یہ موڈل کو میموری کی حد خود سیٹ کرنے کی اجازت دے گا۔</li> <li>اگر آپ کو اپنی php.ini فائل تک رسائی حاصل ہے، تو آپ وہاں کی <b>memory_limit</b> سیٹنگ کو 40M جیسی چیز میں تبدیل کر سکتے ہیں۔ اگر آپ کے پاس رسائی نہیں ہے تو آپ اپنے منتظم سے اپنے لیے ایسا کرنے کے لیے کہہ سکتے ہیں۔</li> <li>کچھ پی ایچ پی سرورز پر آپ موڈل ڈائرکٹری میں ایک .htaccess فائل بنا سکتے ہیں جس میں یہ لائن ہے: <blockquote> <div>php_value memory_limit 40M</div></blockquote> <p>تاہم، کچھ سرورز پر یہ <b>تمام</b> پی ایچ پی صفحات کو کام کرنے سے روک دے گا (صفحات کو دیکھتے وقت آپ کو غلطیاں نظر آئیں گی) تاکہ آپ کو .htaccess فائل کو ہٹانا پڑے گا۔</p></li></ol>';
|
||||
$string['paths'] = 'راستے';
|
||||
$string['pathserrcreatedataroot'] = 'ڈیٹا ڈائرکٹری ({$a->dataroot}) انسٹالر کے ذریعے نہیں بنائی جا سکتی۔';
|
||||
$string['pathshead'] = 'راستوں کی تصدیق کریں';
|
||||
$string['pathsrodataroot'] = 'Dataroot ڈائریکٹری قابل تحریر نہیں ہے۔';
|
||||
$string['pathsroparentdataroot'] = 'پیرنٹ ڈائرکٹری ({$a->parent}) قابل تحریر نہیں ہے۔ ڈیٹا ڈائرکٹری ({$a->dataroot}) انسٹالر کے ذریعے نہیں بنائی جا سکتی۔';
|
||||
$string['pathssubadmindir'] = 'بہت کم ویب ہوسٹس /admin کو بطور خاص یو آر ایل استعمال کرتے ہیں تاکہ آپ کنٹرول پینل یا کسی اور چیز تک رسائی حاصل کر سکیں۔ بدقسمتی سے یہ موڈل ایڈمن پیجز کے معیاری مقام سے متصادم ہے۔ آپ اسے اپنی انسٹالیشن میں ایڈمن ڈائرکٹری کا نام بدل کر، اور اس نئے نام کو یہاں رکھ کر ٹھیک کر سکتے ہیں۔ مثال کے طور پر: <em>moodleadmin</em>۔ یہ Moodle میں ایڈمن لنکس کو ٹھیک کر دے گا۔';
|
||||
$string['pathssubdataroot'] = '<p>ایک ڈائرکٹری جہاں Moodle صارفین کی طرف سے اپ لوڈ کردہ تمام فائل مواد کو اسٹور کرے گا۔</p> <p>یہ ڈائرکٹری ویب سرور صارف (عام طور پر \'www-data\'، \'nobody\'، یا \'کے ذریعے پڑھنے اور لکھنے کے قابل دونوں ہونی چاہیے۔ apache\')۔</p> <p>یہ ویب پر براہ راست قابل رسائی نہیں ہونا چاہیے۔</p> <p>اگر ڈائرکٹری فی الحال موجود نہیں ہے تو انسٹالیشن کا عمل اسے بنانے کی کوشش کرے گا۔</p>';
|
||||
$string['pathssubdirroot'] = '<p>موڈل کوڈ پر مشتمل ڈائریکٹری کا مکمل راستہ۔</p>';
|
||||
$string['pathssubwwwroot'] = '<p>مکمل پتہ جہاں Moodle تک رسائی حاصل کی جائے گی یعنی وہ ایڈریس جسے صارفین Moodle تک رسائی کے لیے اپنے براؤزر کے ایڈریس بار میں داخل کریں گے۔</p> <p>متعدد پتوں کا استعمال کرتے ہوئے Moodle تک رسائی ممکن نہیں ہے۔ اگر آپ کی سائٹ ایک سے زیادہ پتوں کے ذریعے قابل رسائی ہے تو پھر سب سے آسان کا انتخاب کریں اور دوسرے پتے میں سے ہر ایک کے لیے مستقل ری ڈائریکٹ سیٹ کریں۔</p> <p>اگر آپ کی سائٹ انٹرنیٹ اور اندرونی نیٹ ورک دونوں سے قابل رسائی ہے (کبھی کبھی ایک انٹرانیٹ کہا جاتا ہے)، پھر یہاں عوامی پتہ استعمال کریں۔</p> <p>اگر موجودہ پتہ درست نہیں ہے، تو براہ کرم اپنے براؤزر کے ایڈریس بار میں URL کو تبدیل کریں اور انسٹالیشن دوبارہ شروع کریں۔</p>';
|
||||
$string['pathsunsecuredataroot'] = 'Dataroot مقام محفوظ نہیں ہے';
|
||||
$string['pathswrongadmindir'] = 'ایڈمن ڈائرکٹری موجود نہیں ہے';
|
||||
$string['phpextension'] = '{$a} پی ایچ پی کی توسیع';
|
||||
$string['phpversion'] = 'پی ایچ پی ورژن';
|
||||
$string['phpversionhelp'] = '<p>موڈل کو کم از کم 5.6.5 یا 7.1 کا پی ایچ پی ورژن درکار ہے (7.0.x میں انجن کی کچھ حدود ہیں)۔</p> <p>آپ فی الحال ورژن {$a} چلا رہے ہیں۔</p> <p> آپ کو پی ایچ پی کو اپ گریڈ کرنا ہوگا یا پی ایچ پی کے نئے ورژن کے ساتھ میزبان پر جانا ہوگا۔</p>';
|
||||
$string['welcomep20'] = 'آپ یہ صفحہ دیکھ رہے ہیں کیونکہ آپ نے اپنے کمپیوٹر میں <strong>{$a->packname} {$a->packversion}</strong> پیکیج کو کامیابی سے انسٹال اور لانچ کیا ہے۔ مبارک ہو!';
|
||||
$string['welcomep30'] = '<strong>{$a->installername</strong> کی اس ریلیز میں ایک ایسا ماحول بنانے کے لیے ایپلیکیشنز شامل ہیں جس میں <strong>Moodle</strong> کام کرے گا، یعنی:';
|
||||
$string['welcomep40'] = 'پیکیج میں <strong>Moodle {$a->moodlerelease} ({$a->moodleversion})</strong> بھی شامل ہے۔';
|
||||
$string['welcomep50'] = 'اس پیکج میں تمام درخواستوں کا استعمال ان کے متعلقہ لائسنسوں کے ذریعے کیا جاتا ہے۔ مکمل <strong>{$a->installername}</strong> پیکیج <a href="https://www.opensource.org/docs/definition_plain.html">اوپن سورس</a> ہے اور اس کے تحت تقسیم کیا گیا ہے۔ <a href="https://www.gnu.org/copyleft/gpl.html">GPL</a> لائسنس۔';
|
||||
$string['welcomep60'] = 'مندرجہ ذیل صفحات آپ کو اپنے کمپیوٹر پر <strong>Moodle</strong> کو ترتیب دینے اور ترتیب دینے کے لیے کچھ آسان اقدامات کی پیروی کرنے کی رہنمائی کریں گے۔ آپ پہلے سے طے شدہ ترتیبات کو قبول کر سکتے ہیں یا اختیاری طور پر، اپنی ضروریات کے مطابق ان میں ترمیم کر سکتے ہیں۔';
|
||||
$string['welcomep70'] = '<strong>Moodle</strong> کے سیٹ اپ کے ساتھ جاری رکھنے کے لیے نیچے "اگلا" بٹن پر کلک کریں۔';
|
||||
$string['wwwroot'] = 'ویب سائٹ کا پتہ';
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['language'] = 'زبان';
|
||||
$string['moodlelogo'] = 'موڈل لوگو';
|
||||
$string['next'] = 'اگلے';
|
||||
$string['previous'] = 'پچھلا';
|
||||
$string['reload'] = 'دوبارہ لوڈ کریں';
|
||||
|
||||
+3
-1
@@ -1407,6 +1407,7 @@ $string['unsupportedphpversion73'] = 'PHP version 7.3 and higher are not support
|
||||
$string['unsupportedphpversion74'] = 'PHP version 7.4 and higher are not supported.';
|
||||
$string['unsupportedphpversion80'] = 'PHP version 8.0 and higher are not supported.';
|
||||
$string['unsupportedphpversion81'] = 'PHP version 8.1 and higher are not supported.';
|
||||
$string['unsupportedphpversion82'] = 'PHP version 8.2 and higher are not supported.';
|
||||
$string['unsuspenduser'] = 'Activate user account';
|
||||
$string['updateaccounts'] = 'Update existing accounts';
|
||||
$string['updatecomponent'] = 'Update component';
|
||||
@@ -1513,7 +1514,8 @@ $string['xmlrpcmnetenabled'] = 'It has been detected that the Moodle Networking
|
||||
$string['xmlrpcwebserviceenabled'] = 'It has been detected that the XML-RPC Web Service protocol is enabled on your site. This feature relies on the PHP XML-RPC extension which is no longer maintained by PHP.';
|
||||
$string['yuicomboloading'] = 'YUI combo loading';
|
||||
$string['ziprequired'] = 'The Zip PHP extension is now required by Moodle, info-ZIP binaries or PclZip library are not used anymore.';
|
||||
|
||||
$string['modassignmentinuse'] = 'Your site is still using the Assignment 2.2 plugin. Before upgrading you must 1) backup any Assignment 2.2 activities that you want to keep and restore them as Assignment activities, and 2) delete all Assignment 2.2 data from the database.';
|
||||
$string['modassignmentsubpluginsexist'] = 'Assignment 2.2. subplugins may be present. The mod/assignment folder and all of its subplugins need to be removed before upgrading.';
|
||||
|
||||
$string['caching'] = 'Caching';
|
||||
$string['cachesettings'] = 'Cache settings';
|
||||
|
||||
@@ -180,5 +180,5 @@ $string['XOF'] = 'CFA Franc BCEAO';
|
||||
$string['XPF'] = 'CFP Franc';
|
||||
$string['YER'] = 'Yemeni Rial';
|
||||
$string['ZAR'] = 'South African Rand';
|
||||
$string['ZMK'] = 'Zambian Kwacha';
|
||||
$string['ZMW'] = 'Zambian Kwacha';
|
||||
$string['ZWL'] = 'Zimbabwe Dollar';
|
||||
|
||||
@@ -53,6 +53,7 @@ $string['cutpastemozilla'] = 'Unfortunately, you cannot currently use normal key
|
||||
$string['delete'] = 'Delete';
|
||||
$string['editors'] = 'Text editors';
|
||||
$string['editorsettings'] = 'Manage editors';
|
||||
$string['editorxformat'] = '{$a} format';
|
||||
$string['enterurlfirst'] = 'You have to enter an URL first';
|
||||
$string['filebrowser'] = 'File Browser';
|
||||
$string['findwhat'] = 'Find';
|
||||
|
||||
@@ -666,7 +666,7 @@ class behat_config_util {
|
||||
[
|
||||
'capabilities' => [
|
||||
'extra_capabilities' => [
|
||||
'chromeOptions' => [
|
||||
'goog:chromeOptions' => [
|
||||
'args' => [
|
||||
'unlimited-storage',
|
||||
'disable-web-security',
|
||||
@@ -678,6 +678,16 @@ class behat_config_util {
|
||||
$values
|
||||
);
|
||||
|
||||
// Selenium no longer supports non-w3c browser control.
|
||||
// Rename chromeOptions to goog:chromeOptions, which is the W3C variant of this.
|
||||
if (array_key_exists('chromeOptions', $values['capabilities']['extra_capabilities'])) {
|
||||
$values['capabilities']['extra_capabilities']['goog:chromeOptions'] = array_merge_recursive(
|
||||
$values['capabilities']['extra_capabilities']['goog:chromeOptions'],
|
||||
$values['capabilities']['extra_capabilities']['chromeOptions'],
|
||||
);
|
||||
unset($values['capabilities']['extra_capabilities']['chromeOptions']);
|
||||
}
|
||||
|
||||
// If the mobile app is enabled, check its version and add appropriate tags.
|
||||
if ($mobiletags = $this->get_mobile_version_tags()) {
|
||||
if (!empty($values['tags'])) {
|
||||
@@ -687,13 +697,13 @@ class behat_config_util {
|
||||
}
|
||||
}
|
||||
|
||||
$values['capabilities']['extra_capabilities']['chromeOptions']['args'] = array_map(function($arg): string {
|
||||
$values['capabilities']['extra_capabilities']['goog:chromeOptions']['args'] = array_map(function($arg): string {
|
||||
if (substr($arg, 0, 2) === '--') {
|
||||
return substr($arg, 2);
|
||||
}
|
||||
return $arg;
|
||||
}, $values['capabilities']['extra_capabilities']['chromeOptions']['args']);
|
||||
sort($values['capabilities']['extra_capabilities']['chromeOptions']['args']);
|
||||
}, $values['capabilities']['extra_capabilities']['goog:chromeOptions']['args']);
|
||||
sort($values['capabilities']['extra_capabilities']['goog:chromeOptions']['args']);
|
||||
}
|
||||
|
||||
// Fill tags information.
|
||||
|
||||
@@ -1685,4 +1685,30 @@ EOF;
|
||||
|
||||
return !empty($matches);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the user id from an identifier.
|
||||
*
|
||||
* The user username and email fields are checked.
|
||||
*
|
||||
* @param string $identifier The user's username or email.
|
||||
* @return int|null The user id or null if not found.
|
||||
*/
|
||||
protected function get_user_id_by_identifier(string $identifier): ?int {
|
||||
global $DB;
|
||||
|
||||
$sql = <<<EOF
|
||||
SELECT id
|
||||
FROM {user}
|
||||
WHERE username = :username
|
||||
OR email = :email
|
||||
EOF;
|
||||
|
||||
$result = $DB->get_field_sql($sql, [
|
||||
'username' => $identifier,
|
||||
'email' => $identifier,
|
||||
]);
|
||||
|
||||
return $result ?: null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -548,3 +548,24 @@ function cli_execute_parallel($cmds, $cwd = null, $delay = 0) {
|
||||
}
|
||||
return $processes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get command flags for an option/value combination
|
||||
*
|
||||
* @param string $option
|
||||
* @param string|bool|null $value
|
||||
* @return string
|
||||
*/
|
||||
function behat_get_command_flags(string $option, $value): string {
|
||||
$commandoptions = '';
|
||||
if (is_bool($value)) {
|
||||
if ($value) {
|
||||
return " --{$option}";
|
||||
} else {
|
||||
return " --no-{$option}";
|
||||
}
|
||||
} else if ($value !== null) {
|
||||
return " --$option=\"$value\"";
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
@@ -223,7 +223,7 @@ class curl_security_helper extends curl_security_helper_base {
|
||||
protected function address_explicitly_blocked($addr) {
|
||||
$blockedhosts = $this->get_blocked_hosts_by_category();
|
||||
$iphostsblocked = array_merge($blockedhosts['ipv4'], $blockedhosts['ipv6']);
|
||||
return address_in_subnet($addr, implode(',', $iphostsblocked));
|
||||
return address_in_subnet($addr, implode(',', $iphostsblocked), true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -247,6 +247,10 @@ function cron_run_inner_scheduled_task(\core\task\task_base $task) {
|
||||
$predbqueries = null;
|
||||
$predbqueries = $DB->perf_get_queries();
|
||||
$pretime = microtime(1);
|
||||
|
||||
// Ensure that we have a clean session with the correct cron user.
|
||||
cron_setup_user();
|
||||
|
||||
try {
|
||||
get_mailer('buffer');
|
||||
cron_prepare_core_renderer();
|
||||
@@ -333,6 +337,10 @@ function cron_run_inner_adhoc_task(\core\task\adhoc_task $task) {
|
||||
}
|
||||
|
||||
cron_setup_user($user);
|
||||
} else {
|
||||
// No user specified, ensure that we have a clean session with the correct cron user.
|
||||
cron_setup_user();
|
||||
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
@@ -208,21 +208,28 @@ class sqlsrv_native_moodle_database extends moodle_database {
|
||||
|
||||
$this->store_settings($dbhost, $dbuser, $dbpass, $dbname, $prefix, $dboptions);
|
||||
|
||||
$options = [
|
||||
'UID' => $this->dbuser,
|
||||
'PWD' => $this->dbpass,
|
||||
'Database' => $this->dbname,
|
||||
'CharacterSet' => 'UTF-8',
|
||||
'MultipleActiveResultSets' => true,
|
||||
'ConnectionPooling' => !empty($this->dboptions['dbpersist']),
|
||||
'ReturnDatesAsStrings' => true,
|
||||
];
|
||||
|
||||
$dbhost = $this->dbhost;
|
||||
if (!empty($dboptions['dbport'])) {
|
||||
$dbhost .= ',' . $dboptions['dbport'];
|
||||
}
|
||||
|
||||
$this->sqlsrv = sqlsrv_connect($dbhost, array
|
||||
(
|
||||
'UID' => $this->dbuser,
|
||||
'PWD' => $this->dbpass,
|
||||
'Database' => $this->dbname,
|
||||
'CharacterSet' => 'UTF-8',
|
||||
'MultipleActiveResultSets' => true,
|
||||
'ConnectionPooling' => !empty($this->dboptions['dbpersist']),
|
||||
'ReturnDatesAsStrings' => true,
|
||||
));
|
||||
// The sqlsrv_connect() has a lot of connection options to be used.
|
||||
// Users can add any supported options with the 'extrainfo' key in the dboptions.
|
||||
if (isset($this->dboptions['extrainfo'])) {
|
||||
$options = array_merge($options, $this->dboptions['extrainfo']);
|
||||
}
|
||||
|
||||
$this->sqlsrv = sqlsrv_connect($dbhost, $options);
|
||||
|
||||
if ($this->sqlsrv === false) {
|
||||
$this->sqlsrv = null;
|
||||
|
||||
@@ -21,7 +21,7 @@ Feature: Atto Autosave
|
||||
And I click on "Save changes" "button"
|
||||
And I am on "Course 1" course homepage
|
||||
And I navigate to "Edit settings" in current page administration
|
||||
And I set the field with xpath "//select[@name='summary_editor[format]']" to "1"
|
||||
And I set the field "Course summary format" to "1"
|
||||
And I click on "Save and display" "button"
|
||||
And I log out
|
||||
|
||||
|
||||
@@ -1675,3 +1675,14 @@ function restrict_php_version_80($result) {
|
||||
function restrict_php_version_81($result) {
|
||||
return restrict_php_version($result, '8.1');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the current PHP version is greater than or equal to
|
||||
* PHP version 8.2
|
||||
*
|
||||
* @param object $result an environment_results instance
|
||||
* @return bool result of version check
|
||||
*/
|
||||
function restrict_php_version_82($result) {
|
||||
return restrict_php_version($result, '8.2');
|
||||
}
|
||||
|
||||
@@ -444,6 +444,7 @@ class MoodleQuickForm_editor extends HTML_QuickForm_element implements templatab
|
||||
$context['id'] = $id;
|
||||
$context['value'] = $text;
|
||||
$context['format'] = $format;
|
||||
$context['formatlabel'] = get_string('editorxformat', 'editor', $this->_label);
|
||||
|
||||
if (!is_null($this->getAttribute('onblur')) && !is_null($this->getAttribute('onchange'))) {
|
||||
$context['changelistener'] = true;
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
</div>
|
||||
<div>
|
||||
{{#hasformats}}
|
||||
<label for="menu{{name}}format" class="sr-only">{{formatlabel}}</label>
|
||||
<select name="{{name}}[format]" id="menu{{name}}format" class="custom-select">
|
||||
{{#formats}}
|
||||
<option value="{{value}}" {{#selected}}selected{{/selected}}>{{text}}</option>
|
||||
|
||||
+3
-2
@@ -8956,11 +8956,12 @@ function make_unique_id_code($extra = '') {
|
||||
*
|
||||
* @param string $addr The address you are checking
|
||||
* @param string $subnetstr The string of subnet addresses
|
||||
* @param bool $checkallzeros The state to whether check for 0.0.0.0
|
||||
* @return bool
|
||||
*/
|
||||
function address_in_subnet($addr, $subnetstr) {
|
||||
function address_in_subnet($addr, $subnetstr, $checkallzeros = false) {
|
||||
|
||||
if ($addr == '0.0.0.0') {
|
||||
if ($addr == '0.0.0.0' && !$checkallzeros) {
|
||||
return false;
|
||||
}
|
||||
$subnets = explode(',', $subnetstr);
|
||||
|
||||
@@ -733,7 +733,7 @@ abstract class advanced_testcase extends base_testcase {
|
||||
}
|
||||
|
||||
cron_prepare_core_renderer();
|
||||
$this->setUser($user);
|
||||
cron_setup_user($user);
|
||||
|
||||
$task->execute();
|
||||
\core\task\manager::adhoc_task_complete($task);
|
||||
|
||||
@@ -23,8 +23,13 @@ namespace core;
|
||||
* @category test
|
||||
* @copyright 2012 Petr Skoda {@link http://skodak.org}
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @coversDefaultClass \advanced_testcase
|
||||
*/
|
||||
class advanced_test extends \advanced_testcase {
|
||||
public static function setUpBeforeClass(): void {
|
||||
global $CFG;
|
||||
require_once(__DIR__ . '/fixtures/adhoc_test_task.php');
|
||||
}
|
||||
|
||||
public function test_debugging() {
|
||||
global $CFG;
|
||||
@@ -697,4 +702,53 @@ class advanced_test extends \advanced_testcase {
|
||||
self::resetAllData(false);
|
||||
self::assertFalse(\core_useragent::get_user_agent_string(), 'It should not be set again, data was reset.');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::runAdhocTasks
|
||||
*/
|
||||
public function test_runadhoctasks_no_tasks_queued(): void {
|
||||
$this->runAdhocTasks();
|
||||
$this->expectOutputRegex('/^$/');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::runAdhocTasks
|
||||
*/
|
||||
public function test_runadhoctasks_tasks_queued(): void {
|
||||
$this->resetAfterTest(true);
|
||||
$admin = get_admin();
|
||||
\core\task\manager::queue_adhoc_task(new \core_phpunit\adhoc_test_task());
|
||||
$this->runAdhocTasks();
|
||||
$this->expectOutputRegex("/Task was run as {$admin->id}/");
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::runAdhocTasks
|
||||
*/
|
||||
public function test_runadhoctasks_with_existing_user_change(): void {
|
||||
$this->resetAfterTest(true);
|
||||
$admin = get_admin();
|
||||
|
||||
$this->setGuestUser();
|
||||
\core\task\manager::queue_adhoc_task(new \core_phpunit\adhoc_test_task());
|
||||
$this->runAdhocTasks();
|
||||
$this->expectOutputRegex("/Task was run as {$admin->id}/");
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::runAdhocTasks
|
||||
*/
|
||||
public function test_runadhoctasks_with_existing_user_change_and_specified(): void {
|
||||
global $USER;
|
||||
|
||||
$this->resetAfterTest(true);
|
||||
$user = $this->getDataGenerator()->create_user();
|
||||
|
||||
$this->setGuestUser();
|
||||
$task = new \core_phpunit\adhoc_test_task();
|
||||
$task->set_userid($user->id);
|
||||
\core\task\manager::queue_adhoc_task($task);
|
||||
$this->runAdhocTasks();
|
||||
$this->expectOutputRegex("/Task was run as {$user->id}/");
|
||||
}
|
||||
}
|
||||
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
namespace core_phpunit;
|
||||
|
||||
/**
|
||||
* Fixtures for task tests.
|
||||
*
|
||||
* @package core
|
||||
* @category phpunit
|
||||
* @copyright 2023 Andrew Lyons <andrew@nicols.co.uk>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class adhoc_test_task extends \core\task\adhoc_task {
|
||||
/**
|
||||
* Execute.
|
||||
*/
|
||||
public function execute() {
|
||||
global $USER;
|
||||
mtrace("Task was run as {$USER->id}");
|
||||
}
|
||||
}
|
||||
+5
-1
@@ -170,7 +170,11 @@ function get_moodle_cookie() {
|
||||
|
||||
/**
|
||||
* Sets up current user and course environment (lang, etc.) in cron.
|
||||
* Do not use outside of cron script!
|
||||
* Note: This function is intended only for use in:
|
||||
* - the cron runner scripts
|
||||
* - individual tasks which extend the adhoc_task and scheduled_task classes
|
||||
* - unit tests related to tasks
|
||||
* - other parts of the cron/task system
|
||||
*
|
||||
* @param stdClass $user full user object, null means default cron user (admin),
|
||||
* value 'reset' means reset internal static caches.
|
||||
|
||||
@@ -806,6 +806,8 @@ if (empty($CFG->sessiontimeoutwarning)) {
|
||||
$CFG->sessiontimeoutwarning = 20 * 60;
|
||||
}
|
||||
\core\session\manager::start();
|
||||
// Prevent ignoresesskey hack from getting carried over to a next page.
|
||||
unset($USER->ignoresesskey);
|
||||
|
||||
// Set default content type and encoding, developers are still required to use
|
||||
// echo $OUTPUT->header() everywhere, anything that gets set later should override these headers.
|
||||
|
||||
@@ -135,6 +135,11 @@ class curl_security_helper_test extends \advanced_testcase {
|
||||
// Test when DNS resolution fails.
|
||||
[[], "http://example.com", "127.0.0.1", "", true],
|
||||
|
||||
// Test ensures that the default value of getremoteaddr() 0.0.0.0 will check against the provided blocked list.
|
||||
[$simpledns, "http://0.0.0.0/x.png", "0.0.0.0", "", true],
|
||||
// Test set using IPV4 with integer format.
|
||||
[$simpledns, "http://2852039166/x.png", "169.254.169.254", "", true],
|
||||
|
||||
// Test some freaky deaky Unicode domains. Should be blocked always.
|
||||
[$simpledns, "http://169。254。169。254/", "127.0.0.1", "", true],
|
||||
[$simpledns, "http://169。254。169。254/", "1.2.3.4", "", true],
|
||||
|
||||
@@ -1526,4 +1526,27 @@ class upgradelib_test extends advanced_testcase {
|
||||
$this->assertEquals('admin_dir_usage', $result->getInfo());
|
||||
$this->assertFalse($result->getStatus());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the check_mod_assignment check if mod_assignment is still used.
|
||||
*
|
||||
* @covers ::check_mod_assignment
|
||||
* @return void
|
||||
*/
|
||||
public function test_check_mod_assignment_is_used(): void {
|
||||
global $DB;
|
||||
|
||||
$this->resetAfterTest();
|
||||
$result = new environment_results('custom_checks');
|
||||
|
||||
if ($DB->get_manager()->table_exists('assignment')) {
|
||||
$DB->insert_record('assignment', (object)['name' => 'test_assign', 'intro' => 'test_assign_intro']);
|
||||
|
||||
$this->assertNotNull(check_mod_assignment($result));
|
||||
$this->assertEquals('Assignment 2.2 is in use', $result->getInfo());
|
||||
$this->assertFalse($result->getStatus());
|
||||
} else {
|
||||
$this->assertTrue($result->getStatus());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
This files describes API changes in core libraries and APIs,
|
||||
information provided here is intended especially for developers.
|
||||
|
||||
=== 3.11.15 ===
|
||||
* Added a new parameter in address_in_subnet to give us the ability to check for 0.0.0.0 or not.
|
||||
|
||||
=== 3.11.14 ===
|
||||
* Added 'extrainfo' in the DB options config. Its extra information for the DB driver, e.g. SQL Server,
|
||||
has additional configuration according to its environment, which the administrator can specify to alter and
|
||||
override any connection options.
|
||||
|
||||
=== 3.11.11 ===
|
||||
* New DML driver methods `$DB->sql_regex_get_word_beginning_boundary_marker` and `$DB->sql_regex_get_word_end_boundary_marker`
|
||||
for managing word boundary markers in a database driver supporting regex syntax when searching.
|
||||
|
||||
@@ -2778,3 +2778,29 @@ function check_xmlrpc_usage(environment_results $result): ?environment_results {
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the mod_assignment is currently being used.
|
||||
*
|
||||
* @param environment_results $result
|
||||
* @return environment_results|null
|
||||
*/
|
||||
function check_mod_assignment(environment_results $result): ?environment_results {
|
||||
global $DB, $CFG;
|
||||
|
||||
// Check the number of records.
|
||||
if ($DB->get_manager()->table_exists('assignment') && $DB->count_records('assignment') > 0) {
|
||||
$result->setInfo('Assignment 2.2 is in use');
|
||||
$result->setFeedbackStr('modassignmentinuse');
|
||||
return $result;
|
||||
}
|
||||
|
||||
// Check for mod_assignment subplugins.
|
||||
if (is_dir($CFG->dirroot . '/mod/assignment/type')) {
|
||||
$result->setInfo('Assignment 2.2 subplugins present');
|
||||
$result->setFeedbackStr('modassignmentsubpluginsexist');
|
||||
return $result;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -18,8 +18,7 @@ Feature: To be able to see and save user message preferences as admin
|
||||
And I navigate to "Messaging > Notification settings" in site administration
|
||||
And I set the field "email" to "1"
|
||||
And I press "Save changes"
|
||||
And I navigate to "Users > Accounts > Browse list of users" in site administration
|
||||
And I click on "Student 1" "link" in the "Student 1" "table_row"
|
||||
And I am on the "student1" "user > profile" page
|
||||
And I click on "Preferences" "link" in the "#region-main-box" "css_element"
|
||||
And I click on "Message preferences" "link" in the "#region-main-box" "css_element"
|
||||
And I click on "//label[@data-state='loggedoff']" "xpath_element"
|
||||
|
||||
@@ -14,52 +14,26 @@ Feature: Display the IMS content package description in the IMSCP and optionally
|
||||
And the following "course enrolments" exist:
|
||||
| user | course | role |
|
||||
| teacher1 | C1 | editingteacher |
|
||||
And the following "activities" exist:
|
||||
| activity | course | name | intro | packagefilepath |
|
||||
| imscp | C1 | Test IMS content package | Test IMS content package description | mod/imscp/tests/packages/singelscobasic.zip |
|
||||
|
||||
@javascript @_file_upload
|
||||
Scenario: Description is displayed in the IMS content package
|
||||
Given I log in as "teacher1"
|
||||
And I am on "Course 1" course homepage with editing mode on
|
||||
And I add a "IMS content package" to section "1"
|
||||
And I set the following fields to these values:
|
||||
| Name | Test IMS content package |
|
||||
| Description | Test IMS content package description |
|
||||
And I upload "mod/imscp/tests/packages/singlescobasic.zip" file to "Package file" filemanager
|
||||
And I click on "Save and display" "button"
|
||||
When I am on the "Test IMS content package" "imscp activity" page
|
||||
When I am on the "Test IMS content package" "imscp activity" page logged in as teacher1
|
||||
Then I should see "Test IMS content package description"
|
||||
|
||||
@javascript @_file_upload
|
||||
Scenario: Show IMS description in the course homepage
|
||||
Given I log in as "teacher1"
|
||||
And I am on "Course 1" course homepage with editing mode on
|
||||
And I add a "IMS content package" to section "1"
|
||||
And I set the following fields to these values:
|
||||
| Name | Test IMS content package |
|
||||
| Description | Test IMS content package description |
|
||||
And I upload "mod/imscp/tests/packages/singlescobasic.zip" file to "Package file" filemanager
|
||||
And I click on "Save and display" "button"
|
||||
When I am on the "Test IMS content package" "imscp activity editing" page
|
||||
When I am on the "Test IMS content package" "imscp activity editing" page logged in as teacher1
|
||||
And the following fields match these values:
|
||||
| Display description on course page | |
|
||||
And I set the following fields to these values:
|
||||
| Display description on course page | 1 |
|
||||
And I press "Save and return to course"
|
||||
When I am on "Course 1" course homepage
|
||||
Then I should see "Test IMS content package description"
|
||||
|
||||
@javascript @_file_upload
|
||||
Scenario: Hide IMS description in the course homepage
|
||||
Given I log in as "teacher1"
|
||||
And I am on "Course 1" course homepage with editing mode on
|
||||
And I add a "IMS content package" to section "1"
|
||||
And I set the following fields to these values:
|
||||
| Name | Test IMS content package |
|
||||
| Description | Test IMS content package description |
|
||||
And I upload "mod/imscp/tests/packages/singlescobasic.zip" file to "Package file" filemanager
|
||||
And I click on "Save and display" "button"
|
||||
When I am on the "Test IMS content package" "imscp activity editing" page
|
||||
When I am on the "Test IMS content package" "imscp activity editing" page logged in as teacher1
|
||||
And the following fields match these values:
|
||||
| Display description on course page | |
|
||||
And I press "Save and return to course"
|
||||
When I am on "Course 1" course homepage
|
||||
Then I should not see "Test IMS content package description"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
@mod @mod_imscp @_file_upload @core_completion @javascript
|
||||
@mod @mod_imscp @core_completion
|
||||
Feature: View activity completion information in the IMS content package activity
|
||||
In order to have visibility of IMS content package completion requirements
|
||||
As a student
|
||||
@@ -18,36 +18,21 @@ Feature: View activity completion information in the IMS content package activit
|
||||
| teacher1 | C1 | editingteacher |
|
||||
|
||||
Scenario: View automatic completion items
|
||||
Given I log in as "teacher1"
|
||||
And I am on "Course 1" course homepage with editing mode on
|
||||
And I add a "IMS content package" to section "1"
|
||||
And I set the following fields to these values:
|
||||
| Name | Music history |
|
||||
| Completion tracking | Show activity as complete when conditions are met |
|
||||
| Require view | 1 |
|
||||
And I upload "mod/imscp/tests/packages/singlescobasic.zip" file to "Package file" filemanager
|
||||
And I click on "Save and display" "button"
|
||||
And I am on "Course 1" course homepage
|
||||
# Teacher view.
|
||||
And I am on the "Music history" "imscp activity" page
|
||||
And I log out
|
||||
Given the following "activities" exist:
|
||||
| activity | course | name | completion | completionview | packagefilepath |
|
||||
| imscp | C1 | Music history | 2 | 1 | mod/imscp/tests/pacakges/singescobbasic.zip |
|
||||
# Student view.
|
||||
When I am on the "Music history" "imscp activity" page logged in as student1
|
||||
Then the "View" completion condition of "Music history" is displayed as "done"
|
||||
|
||||
@javascript
|
||||
Scenario: Use manual completion
|
||||
Given I log in as "teacher1"
|
||||
And I am on "Course 1" course homepage with editing mode on
|
||||
And I add a "IMS content package" to section "1"
|
||||
And I set the following fields to these values:
|
||||
| Name | Music history |
|
||||
| Completion tracking | Students can manually mark the activity as completed |
|
||||
And I upload "mod/imscp/tests/packages/singlescobasic.zip" file to "Package file" filemanager
|
||||
And I click on "Save and display" "button"
|
||||
And I am on the "Music history" "imscp activity" page
|
||||
Given the following "activities" exist:
|
||||
| activity | course | name | completion | packagefilepath |
|
||||
| imscp | C1 | Music history | 1 | mod/imscp/tests/packages/singescobasic.zip |
|
||||
And I am on the "Music history" "imscp activity" page logged in as teacher1
|
||||
# Teacher view.
|
||||
And the manual completion button for "Music history" should be disabled
|
||||
And I log out
|
||||
# Student view.
|
||||
When I am on the "Music history" "imscp activity" page logged in as student1
|
||||
Then the manual completion button of "Music history" is displayed as "Mark as done"
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
@mod @mod_imscp @javascript @_file_upload
|
||||
Feature: Create an IMSCP activity through UI
|
||||
In order to confirm that IMSCP activity creation via UI works correctly
|
||||
|
||||
Background:
|
||||
Given the following "courses" exist:
|
||||
| fullname | shortname | format |
|
||||
| Course 1 | C1 | topics |
|
||||
|
||||
Scenario: IMS activity is created using UI
|
||||
Given I am on the "Course 1" course page logged in as admin
|
||||
And I turn editing mode on
|
||||
And I add a "IMS content package" to section "1"
|
||||
And I set the following fields to these values:
|
||||
| Name | Test IMS content package 2 |
|
||||
| Description | Test IMS content package description |
|
||||
And I upload "mod/imscp/tests/packages/singlescobasic.zip" file to "Package file" filemanager
|
||||
When I press "Save and return to course"
|
||||
Then I should see "Test IMS content package 2"
|
||||
@@ -14,17 +14,12 @@ Feature: Add preconfigured tools via teacher interface
|
||||
And the following "course enrolments" exist:
|
||||
| user | course | role |
|
||||
| teacher1 | C1 | editingteacher |
|
||||
And the following "activities" exist:
|
||||
| activity | course | name | typeid | toolurl |
|
||||
| lti | C1 | Test tool | 0 | /mod/lti/tests/fixtures/ims_cartridge_basic_lti_link.xml |
|
||||
|
||||
@javascript
|
||||
Scenario: Add a tool from a cartridge
|
||||
Given the following "activity" exists:
|
||||
| course | C1 |
|
||||
| activity | lti |
|
||||
| name | Test tool activity |
|
||||
When I am on the "Test tool activity" "lti activity editing" page logged in as teacher1
|
||||
And I set the field "Tool URL" to local url "/mod/lti/tests/fixtures/ims_cartridge_basic_lti_link.xml"
|
||||
And I press "Save and return to course"
|
||||
And I am on the "Test tool activity" "lti activity editing" page
|
||||
Given I am on the "Test tool" "lti activity editing" page logged in as teacher1
|
||||
And I expand all fieldsets
|
||||
Then the field "Tool URL" matches value "http://www.example.com/lti/provider.php"
|
||||
And the field "Secure tool URL" matches value "https://www.example.com/lti/provider.php"
|
||||
@@ -33,11 +28,7 @@ Feature: Add preconfigured tools via teacher interface
|
||||
|
||||
@javascript @_switch_window
|
||||
Scenario: Add a preconfigured tool from a cartridge
|
||||
Given the following "activity" exists:
|
||||
| course | C1 |
|
||||
| activity | lti |
|
||||
| name | Test tool activity 1 |
|
||||
When I am on the "Test tool activity 1" "lti activity editing" page logged in as teacher1
|
||||
Given I am on the "Test tool" "lti activity editing" page logged in as teacher1
|
||||
And I follow "Add preconfigured tool"
|
||||
And I switch to "add_tool" window
|
||||
And I set the field "Tool name" to "Placeholder"
|
||||
@@ -46,25 +37,20 @@ Feature: Add preconfigured tools via teacher interface
|
||||
And I switch to the main window
|
||||
And I wait "2" seconds
|
||||
And I follow "Edit preconfigured tool"
|
||||
And I switch to "edit_tool" window
|
||||
When I switch to "edit_tool" window
|
||||
Then the field "Tool URL" matches value "http://www.example.com/lti/provider.php"
|
||||
And the field "Icon URL" matches value "http://download.moodle.org/unittest/test.jpg"
|
||||
And the field "Secure icon URL" matches value "https://download.moodle.org/unittest/test.jpg"
|
||||
And I press "Cancel"
|
||||
And I switch to the main window
|
||||
And I press "Save and return to course"
|
||||
And I am on the "Test tool activity 1" "lti activity editing" page
|
||||
And I press "Save and display"
|
||||
And I am on the "Test tool" "lti activity editing" page
|
||||
And the field "Preconfigured tool" matches value "Placeholder"
|
||||
|
||||
@javascript @_switch_window
|
||||
Scenario: Add and use a preconfigured tool
|
||||
Given the following "activity" exists:
|
||||
| course | C1 |
|
||||
| activity | lti |
|
||||
| name | Test tool activity |
|
||||
When I am on the "Test tool activity" "lti activity editing" page logged in as teacher1
|
||||
Given I am on the "Test tool" "lti activity editing" page logged in as teacher1
|
||||
And I set the field "Tool URL" to local url "/mod/lti/tests/fixtures/tool_provider.php"
|
||||
And I press "Save and return to course"
|
||||
And I am on the "Test tool activity" "lti activity" page
|
||||
And I switch to "contentframe" iframe
|
||||
And I press "Save and display"
|
||||
When I switch to "contentframe" iframe
|
||||
Then I should see "This represents a tool provider"
|
||||
|
||||
@@ -87,15 +87,9 @@ Feature: Content-Item support
|
||||
|
||||
@javascript
|
||||
Scenario: Editing a manually configured external tool
|
||||
Given I log in as "teacher1"
|
||||
And I am on "Course 1" course homepage with editing mode on
|
||||
And I add a "External tool" to section "1"
|
||||
And the field "Preconfigured tool" matches value "Automatic, based on tool URL"
|
||||
And I set the field "Activity name" to "Test tool activity 1"
|
||||
And the "Select content" "button" should be disabled
|
||||
And I set the field "Tool URL" to local url "/mod/lti/tests/fixtures/tool_provider.php"
|
||||
And I press "Save and return to course"
|
||||
When I open "Test tool activity 1" actions menu
|
||||
And I choose "Edit settings" in the open action menu
|
||||
Given the following "activities" exist:
|
||||
| activity | course | name | typeid | toolurl |
|
||||
| lti | C1 | Test tool | 0 | /mod/lti/tests/fixtures/tool_provider.php |
|
||||
And I am on the "Test tool" "lti activity editing" page logged in as teacher1
|
||||
Then the field "Preconfigured tool" matches value "Automatic, based on tool URL"
|
||||
And the "Select content" "button" should be disabled
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
@mod @mod_lti @core_completion @javascript
|
||||
@mod @mod_lti @core_completion
|
||||
Feature: View activity completion information in the LTI activity
|
||||
In order to have visibility of LTI completion requirements
|
||||
As a student
|
||||
@@ -25,30 +25,28 @@ Feature: View activity completion information in the LTI activity
|
||||
Then "Music history" should have the "Receive a grade" completion condition
|
||||
And "Music history" should have the "View" completion condition
|
||||
|
||||
@javascript
|
||||
Scenario: View automatic completion items as a student
|
||||
Given I am on the "Music history" "lti activity" page logged in as student1
|
||||
And the "View" completion condition of "Music history" is displayed as "done"
|
||||
And the "Receive a grade" completion condition of "Music history" is displayed as "todo"
|
||||
And I log out
|
||||
And I am on the "Course 1" course page logged in as teacher1
|
||||
And I navigate to "View > Grader report" in the course gradebook
|
||||
And I turn editing mode on
|
||||
And I give the grade "90.00" to the user "Vinnie Student1" for the grade item "Music history"
|
||||
And I press "Save changes"
|
||||
And I log out
|
||||
When I am on the "Music history" "lti activity" page logged in as student1
|
||||
Then the "Receive a grade" completion condition of "Music history" is displayed as "done"
|
||||
And the "View" completion condition of "Music history" is displayed as "done"
|
||||
|
||||
@javascript
|
||||
Scenario: Use manual completion
|
||||
Given I am on the "Music history" "lti activity editing" page logged in as teacher1
|
||||
And I expand all fieldsets
|
||||
And I set the field "Completion tracking" to "Students can manually mark the activity as completed"
|
||||
And I press "Save and return to course"
|
||||
And I press "Save and display"
|
||||
# Teacher view.
|
||||
Given I am on the "Music history" "lti activity" page
|
||||
And the manual completion button for "Music history" should be disabled
|
||||
And I log out
|
||||
# Student view.
|
||||
When I am on the "Music history" "lti activity" page logged in as student1
|
||||
Then the manual completion button of "Music history" is displayed as "Mark as done"
|
||||
|
||||
@@ -5,23 +5,18 @@ Feature: Rename external tools via inline editing
|
||||
I need to be able to rename the LTI tool and have it's name change in the gradebook
|
||||
|
||||
Background:
|
||||
Given the following "users" exist:
|
||||
| username | firstname | lastname | email |
|
||||
| teacher1 | Terry1 | Teacher1 | teacher1@example.com |
|
||||
And the following "courses" exist:
|
||||
Given the following "courses" exist:
|
||||
| fullname | shortname | category |
|
||||
| Course 1 | C1 | 0 |
|
||||
And the following "course enrolments" exist:
|
||||
| user | course | role |
|
||||
| teacher1 | C1 | editingteacher |
|
||||
And the following "activities" exist:
|
||||
| activity | course | name |
|
||||
| lti | C1 | Test tool activity 1 |
|
||||
|
||||
@javascript
|
||||
Scenario: Add a tool and inline edit
|
||||
When I log in as "teacher1"
|
||||
When I log in as "admin"
|
||||
And I am on "Course 1" course homepage with editing mode on
|
||||
And I add a "External tool" to section "1" and I fill the form with:
|
||||
| Activity name | Test tool activity 1 |
|
||||
And I set the field "Edit title" in the "li#section-1" "css_element" to "Test tool activity renamed"
|
||||
And I set the field "Edit title" in the "Test tool activity 1" "activity" to "Test tool activity renamed"
|
||||
And I navigate to "Setup > Gradebook setup" in the course gradebook
|
||||
Then I should not see "Test tool activity 1"
|
||||
And I should see "Test tool activity renamed"
|
||||
|
||||
@@ -5,18 +5,7 @@ Feature: Configure tool types
|
||||
I need to be able to add, remove and configure tool types
|
||||
|
||||
Background:
|
||||
Given the following "users" exist:
|
||||
| username | firstname | lastname | email |
|
||||
| teacher1 | Terry1 | Teacher1 | teacher1@example.com |
|
||||
| student1 | Sam1 | Student1 | student1@example.com |
|
||||
And the following "courses" exist:
|
||||
| fullname | shortname | category |
|
||||
| Course 1 | C1 | 0 |
|
||||
And the following "course enrolments" exist:
|
||||
| user | course | role |
|
||||
| teacher1 | C1 | editingteacher |
|
||||
| student1 | C1 | student |
|
||||
And I log in as "admin"
|
||||
Given I log in as "admin"
|
||||
And I navigate to "Plugins > Activity modules > External tool > Manage tools" in site administration
|
||||
|
||||
@javascript
|
||||
|
||||
@@ -42,6 +42,9 @@ class mod_lti_generator extends testing_module_generator {
|
||||
|
||||
if (!isset($record->toolurl)) {
|
||||
$record->toolurl = '';
|
||||
} else {
|
||||
$toolurl = new moodle_url($record->toolurl);
|
||||
$record->toolurl = $toolurl->out(false);
|
||||
}
|
||||
if (!isset($record->resourcekey)) {
|
||||
$record->resourcekey = '12345';
|
||||
|
||||
@@ -77,8 +77,6 @@ class mod_resource_generator extends testing_module_generator {
|
||||
}
|
||||
$usercontext = context_user::instance($USER->id);
|
||||
$filename = $record->defaultfilename ?? 'resource' . ($this->instancecount + 1) . '.txt';
|
||||
// Set filepath depending on filename.
|
||||
$filepath = (isset($record->defaultfilename)) ? $CFG->dirroot . '/' : '/';
|
||||
|
||||
// Pick a random context id for specified user.
|
||||
$record->files = file_get_unused_draft_itemid();
|
||||
@@ -86,11 +84,22 @@ class mod_resource_generator extends testing_module_generator {
|
||||
// Add actual file there.
|
||||
$filerecord = ['component' => 'user', 'filearea' => 'draft',
|
||||
'contextid' => $usercontext->id, 'itemid' => $record->files,
|
||||
'filename' => basename($filename), 'filepath' => $filepath];
|
||||
'filename' => basename($filename), 'filepath' => '/'];
|
||||
$fs = get_file_storage();
|
||||
if ($record->uploaded == 1) {
|
||||
// For uploading a file, it's required to specify a file, how not!
|
||||
if (!isset($record->defaultfilename)) {
|
||||
throw new coding_exception(
|
||||
'The $record->defaultfilename option is required in order to upload a file');
|
||||
}
|
||||
// We require the full file path to exist when uploading a real file (fixture or whatever).
|
||||
$fullfilepath = $CFG->dirroot . '/' . $record->defaultfilename;
|
||||
if (!is_readable($fullfilepath)) {
|
||||
throw new coding_exception(
|
||||
'The $record->defaultfilename option must point to an existing file within dirroot');
|
||||
}
|
||||
// Create file using pathname (defaultfilename) set.
|
||||
$fs->create_file_from_pathname($filerecord, $filepath . $filename);
|
||||
$fs->create_file_from_pathname($filerecord, $fullfilepath);
|
||||
} else {
|
||||
// If defaultfilename is not set, create file from string "resource 1.txt".
|
||||
$fs->create_file_from_string($filerecord, 'Test resource ' . $filename . ' file');
|
||||
@@ -98,6 +107,6 @@ class mod_resource_generator extends testing_module_generator {
|
||||
}
|
||||
|
||||
// Do work to actually add the instance.
|
||||
return parent::create_instance($record, (array)$options);
|
||||
return parent::create_instance($record, $options);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,10 +21,12 @@ namespace mod_resource;
|
||||
*
|
||||
* @package mod_resource
|
||||
* @category phpunit
|
||||
* @covers \mod_resource_generator
|
||||
* @copyright 2013 The Open University
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class generator_test extends \advanced_testcase {
|
||||
|
||||
public function test_generator() {
|
||||
global $DB, $SITE;
|
||||
|
||||
@@ -76,5 +78,46 @@ class generator_test extends \advanced_testcase {
|
||||
$this->assertCount(1, $files);
|
||||
$this->assertEquals('myfile.pdf', $file->get_filename());
|
||||
$this->assertEquals('Test resource myfile.pdf file', $file->get_content());
|
||||
|
||||
// Create a new resource uploading a file.
|
||||
$resource = $generator->create_instance([
|
||||
'course' => $SITE->id,
|
||||
'uploaded' => true,
|
||||
'defaultfilename' => 'mod/resource/tests/fixtures/samplefile.txt',
|
||||
]);
|
||||
|
||||
// Check that generated resource module contains the uploaded samplefile.txt.
|
||||
$cm = get_coursemodule_from_instance('resource', $resource->id);
|
||||
$context = \context_module::instance($cm->id);
|
||||
$files = $fs->get_area_files($context->id, 'mod_resource', 'content', false, '', false);
|
||||
$file = array_values($files)[0];
|
||||
$this->assertCount(1, $files);
|
||||
$this->assertEquals('samplefile.txt', $file->get_filename());
|
||||
$this->assertEquals('Hello!', $file->get_content());
|
||||
|
||||
// Try to generate a resource with uploaded file without specifying the file.
|
||||
try {
|
||||
$resource = $generator->create_instance([
|
||||
'course' => $SITE->id,
|
||||
'uploaded' => true,
|
||||
]);
|
||||
$this->assertTrue(false, 'coding_exception expected, defaultfilename is required');
|
||||
} catch (\Exception $e) {
|
||||
$this->assertInstanceOf(\coding_exception::class, $e);
|
||||
$this->assertStringContainsString('defaultfilename option is required', $e->getMessage());
|
||||
}
|
||||
|
||||
// Try to generate a resource with uploaded file pointing to non-existing file.
|
||||
try {
|
||||
$resource = $generator->create_instance([
|
||||
'course' => $SITE->id,
|
||||
'uploaded' => true,
|
||||
'defaultfilename' => 'mod/resource/tests/fixtures/doesnotexist.txt',
|
||||
]);
|
||||
$this->assertTrue(false, 'coding_exception expected, defaultfilename must point to an existing file');
|
||||
} catch (\Exception $e) {
|
||||
$this->assertInstanceOf(\coding_exception::class, $e);
|
||||
$this->assertStringContainsString('defaultfilename option must point to an existing file', $e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -467,15 +467,17 @@ class mod_wiki_external extends external_api {
|
||||
throw new moodle_exception('cannotviewpage', 'wiki');
|
||||
} else if ($subwiki->id != -1) {
|
||||
|
||||
// Set sort param.
|
||||
$options = $params['options'];
|
||||
if (!empty($options['sortby'])) {
|
||||
if ($options['sortdirection'] != 'ASC' && $options['sortdirection'] != 'DESC') {
|
||||
// Invalid sort direction. Use default.
|
||||
$options['sortdirection'] = 'ASC';
|
||||
}
|
||||
$sort = $options['sortby'] . ' ' . $options['sortdirection'];
|
||||
}
|
||||
|
||||
// Set sort param.
|
||||
$sort = get_safe_orderby([
|
||||
'id' => 'id',
|
||||
'title' => 'title',
|
||||
'timecreated' => 'timecreated',
|
||||
'timemodified' => 'timemodified',
|
||||
'pageviews' => 'pageviews',
|
||||
'default' => 'title',
|
||||
], $options['sortby'], $options['sortdirection'], false);
|
||||
|
||||
$pages = wiki_get_page_list($subwiki->id, $sort);
|
||||
$caneditpages = wiki_user_can_edit($subwiki);
|
||||
|
||||
@@ -21,9 +21,9 @@ Feature: Teachers can embed images into instructions and conclusion fields
|
||||
| workshop | C1 | Workshop with embedded images |
|
||||
And I am on the "Workshop with embedded images" "workshop activity editing" page logged in as admin
|
||||
And I set the following fields to these values:
|
||||
| instructauthorseditor[format] | 1 |
|
||||
| instructreviewerseditor[format] | 1 |
|
||||
| conclusioneditor[format] | 1 |
|
||||
| Instructions for submission format | 1 |
|
||||
| Instructions for assessment format | 1 |
|
||||
| Conclusion format | 1 |
|
||||
And I press "Save and display"
|
||||
And I log out
|
||||
And I log in as "teacher1"
|
||||
|
||||
Generated
+472
-166
File diff suppressed because it is too large
Load Diff
+2
-4
@@ -4,11 +4,13 @@
|
||||
"description": "Moodle",
|
||||
"devDependencies": {
|
||||
"@babel/core": "7.17.5",
|
||||
"@babel/eslint-parser": "^7.21.3",
|
||||
"@babel/plugin-proposal-class-properties": "7.16.7",
|
||||
"@babel/plugin-proposal-json-strings": "7.16.7",
|
||||
"@babel/plugin-syntax-dynamic-import": "7.8.3",
|
||||
"@babel/plugin-syntax-import-meta": "7.10.4",
|
||||
"@babel/preset-env": "7.16.11",
|
||||
"@xmldom/xmldom": "^0.8.7",
|
||||
"ajv": "8.10.0",
|
||||
"async": "3.2.3",
|
||||
"babel-eslint": "10.1.0",
|
||||
@@ -43,13 +45,9 @@
|
||||
"stylelint": "13.3.3",
|
||||
"stylelint-checkstyle-formatter": "0.1.2",
|
||||
"stylelint-csstree-validator": "1.8.0",
|
||||
"xmldom": "^0.6.0",
|
||||
"xpath": "0.0.32"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.14.0 <17"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/eslint-parser": "^7.17.0"
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -3,4 +3,4 @@ Acknowledgments: https://moodle.org/security/
|
||||
Preferred-Languages: en
|
||||
Canonical: https://moodle.org/.well-known/security.txt
|
||||
Policy: https://moodledev.io/general/development/process/security
|
||||
Expires: 2023-05-29T01:00:00.000Z
|
||||
Expires: 2023-10-30T01:00:00.000Z
|
||||
|
||||
@@ -84,4 +84,29 @@ class behat_user extends behat_base {
|
||||
throw new ExpectationException('The "' . $field . '" field does have purpose "' . $purpose . '"', $this->getSession());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert page names to URLs for steps like 'When I am on the "[identifier]" "[page type]" page'.
|
||||
*
|
||||
* Recognised page names are:
|
||||
* | Page Type | Identifier meaning | Description |
|
||||
* | profile | username or email | User profile page (/user/profile.php) |
|
||||
*
|
||||
* @param string $type identifies which type of page this is, e.g. 'Editing'.
|
||||
* @param string $identifier identifies the user, e.g. 'student1'.
|
||||
* @return moodle_url the corresponding URL.
|
||||
* @throws Exception with a meaningful error message if the specified page cannot be found.
|
||||
*/
|
||||
protected function resolve_page_instance_url(string $type, string $identifier): moodle_url {
|
||||
switch (strtolower($type)) {
|
||||
case 'profile':
|
||||
$userid = $this->get_user_id_by_identifier($identifier);
|
||||
if (!$userid) {
|
||||
throw new Exception('The specified user with username or email "' . $identifier . '" does not exist');
|
||||
}
|
||||
return new moodle_url('/user/profile.php', ['id' => $userid]);
|
||||
default:
|
||||
throw new Exception("Unrecognised page type '{$type}'.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,8 +76,7 @@ Feature: The student can navigate to their grades page and user grade report.
|
||||
| moodle/user:viewuseractivitiesreport | 1 |
|
||||
| moodle/user:viewdetails | 1 |
|
||||
And I click on "Create this role" "button"
|
||||
And I navigate to "Users > Accounts > Browse list of users" in site administration
|
||||
And I follow "Student 1"
|
||||
And I am on the "student1" "user > profile" page
|
||||
And I click on "Preferences" "link" in the ".profile_tree" "css_element"
|
||||
And I follow "Assign roles relative to this user"
|
||||
And I follow "Parent"
|
||||
|
||||
@@ -68,8 +68,7 @@ Feature: Access to preferences page
|
||||
| moodle/user:viewuseractivitiesreport | 1 |
|
||||
| moodle/user:viewdetails | 1 |
|
||||
And I click on "Create this role" "button"
|
||||
And I navigate to "Users > Accounts > Browse list of users" in site administration
|
||||
And I follow "Student 1"
|
||||
And I am on the "student1" "user > profile" page
|
||||
And I click on "Preferences" "link" in the ".profile_tree" "css_element"
|
||||
And I follow "Assign roles relative to this user"
|
||||
And I follow "Parent"
|
||||
|
||||
+2
-2
@@ -29,9 +29,9 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$version = 2021051713.00; // 20210517 = branching date YYYYMMDD - do not modify!
|
||||
$version = 2021051715.00; // 20210517 = branching date YYYYMMDD - do not modify!
|
||||
// RR = release increments - 00 in DEV branches.
|
||||
// .XX = incremental changes.
|
||||
$release = '3.11.13 (Build: 20230313)';// Human-friendly version name
|
||||
$release = '3.11.15 (Build: 20230612)';// Human-friendly version name
|
||||
$branch = '311'; // This version's branch.
|
||||
$maturity = MATURITY_STABLE; // This version's maturity level.
|
||||
|
||||
Reference in New Issue
Block a user