Compare commits
37 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5a1b6a9d50 | |||
| c252deeda9 | |||
| d640a60f96 | |||
| cf6c8a5acd | |||
| cddd41f5fd | |||
| 98aa5b1ac3 | |||
| bb2179cbb7 | |||
| 96006635fc | |||
| 75b5b6d5b9 | |||
| d54ab79285 | |||
| 21f1221056 | |||
| 551680435a | |||
| dbab6200d5 | |||
| a2267a3c5b | |||
| c13f7f9a6b | |||
| acfb9efa25 | |||
| 420983c00d | |||
| 4414c75992 | |||
| fd29b873cb | |||
| 61bc167f53 | |||
| 1ca90a1695 | |||
| 8e2798ff18 | |||
| 0ac84efc5a | |||
| a39608dd0d | |||
| df9a771afd | |||
| 01ab57bd28 | |||
| cec29305f2 | |||
| 85477f7928 | |||
| 8ead95fabe | |||
| 176eb618fc | |||
| 5c4359353f | |||
| 468ee496ca | |||
| 82990d7a3f | |||
| 6804470b3f | |||
| 413b603923 | |||
| 6c557376fc | |||
| 5060d6edc2 |
@@ -2815,6 +2815,7 @@
|
||||
<VENDOR name="oracle" version="11.2" />
|
||||
</DATABASE>
|
||||
<PHP version="7.1.0" level="required">
|
||||
<RESTRICT function="restrict_php_version_80" message="unsupportedphpversion80" />
|
||||
</PHP>
|
||||
<PCREUNICODE level="optional">
|
||||
<FEEDBACK>
|
||||
@@ -2996,6 +2997,7 @@
|
||||
<VENDOR name="oracle" version="11.2" />
|
||||
</DATABASE>
|
||||
<PHP version="7.2.0" level="required">
|
||||
<RESTRICT function="restrict_php_version_80" message="unsupportedphpversion80" />
|
||||
</PHP>
|
||||
<PCREUNICODE level="optional">
|
||||
<FEEDBACK>
|
||||
@@ -3177,6 +3179,7 @@
|
||||
<VENDOR name="oracle" version="11.2" />
|
||||
</DATABASE>
|
||||
<PHP version="7.2.0" level="required">
|
||||
<RESTRICT function="restrict_php_version_80" message="unsupportedphpversion80" />
|
||||
</PHP>
|
||||
<PCREUNICODE level="optional">
|
||||
<FEEDBACK>
|
||||
|
||||
@@ -87,7 +87,7 @@ Feature: Data export from the privacy API
|
||||
And I reload the page
|
||||
And I should see "Download ready" in the "Export all of my personal data" "table_row"
|
||||
And I open the action menu in "Victim User 1" "table_row"
|
||||
And following "Download" should download between "1" and "130000" bytes
|
||||
And following "Download" should download between "1" and "144000" bytes
|
||||
|
||||
And the following config values are set as admin:
|
||||
| privacyrequestexpiry | 1 | tool_dataprivacy |
|
||||
|
||||
@@ -1 +1 @@
|
||||
define(["jquery","core/ajax","core/notification"],function(a,b,c){return{list:function(b,c){var d=[],e=a(b),f=a(b).data("originaloptionsjson"),g=e.val();a.each(f,function(b,e){return""!==a.trim(c)&&e.label.toLocaleLowerCase().indexOf(c.toLocaleLowerCase())===-1||(a.inArray(e.value,g)>-1||(d.push(e),!0))});var h=new a.Deferred;return h.resolve(d),h.promise()},processResults:function(b,c){var d=[];return a.each(c,function(a,b){d.push({value:b.value,label:b.label})}),d},transport:function(a,b,d){this.list(a,b).then(d)["catch"](c.exception)}}});
|
||||
define(["jquery","core/ajax","core/notification"],function(a,b,c){return{list:function(b,c){var d=[],e=a(b),f=a(b).data("originaloptionsjson"),g=e.val();a.each(f,function(b,e){return""!==c.trim()&&e.label.toLocaleLowerCase().indexOf(c.toLocaleLowerCase())===-1||(a.inArray(e.value,g)>-1||(d.push(e),!0))});var h=new a.Deferred;return h.resolve(d),h.promise()},processResults:function(b,c){var d=[];return a.each(c,function(a,b){d.push({value:b.value,label:b.label})}),d},transport:function(a,b,d){this.list(a,b).then(d)["catch"](c.exception)}}});
|
||||
@@ -41,7 +41,7 @@ define(['jquery', 'core/ajax', 'core/notification'], function($, Ajax, Notificat
|
||||
var selectedFilters = el.val();
|
||||
$.each(originalOptions, function(index, option) {
|
||||
// Skip option if it does not contain the query string.
|
||||
if ($.trim(query) !== '' && option.label.toLocaleLowerCase().indexOf(query.toLocaleLowerCase()) === -1) {
|
||||
if (query.trim() !== '' && option.label.toLocaleLowerCase().indexOf(query.toLocaleLowerCase()) === -1) {
|
||||
return true;
|
||||
}
|
||||
// Skip filters that have already been selected.
|
||||
|
||||
@@ -643,6 +643,6 @@ class acceptances_table extends \table_sql {
|
||||
}
|
||||
return ''; // User agreed by themselves.
|
||||
}
|
||||
return null;
|
||||
return parent::other_cols($column, $row);
|
||||
}
|
||||
}
|
||||
@@ -283,7 +283,7 @@ class admin_uploaduser_form2 extends moodleform {
|
||||
$mform->setAdvanced('url');
|
||||
|
||||
$mform->addElement('text', 'idnumber', get_string('idnumber'), 'maxlength="255" size="25"');
|
||||
$mform->setType('idnumber', PARAM_NOTAGS);
|
||||
$mform->setType('idnumber', core_user::get_property_type('idnumber'));
|
||||
$mform->setForceLtr('idnumber');
|
||||
|
||||
$mform->addElement('text', 'institution', get_string('institution'), 'maxlength="255" size="25"');
|
||||
|
||||
+1
-1
@@ -374,7 +374,7 @@
|
||||
$row = array ();
|
||||
$row[] = "<a href=\"../user/view.php?id=$user->id&course=$site->id\">$fullname</a>";
|
||||
foreach ($extracolumns as $field) {
|
||||
$row[] = $user->{$field};
|
||||
$row[] = s($user->{$field});
|
||||
}
|
||||
$row[] = $user->city;
|
||||
$row[] = $user->country;
|
||||
|
||||
+2
-4
@@ -178,10 +178,10 @@ class auth_plugin_email extends auth_plugin_base {
|
||||
if ($user->auth != $this->authtype) {
|
||||
return AUTH_CONFIRM_ERROR;
|
||||
|
||||
} else if ($user->secret == $confirmsecret && $user->confirmed) {
|
||||
} else if ($user->secret === $confirmsecret && $user->confirmed) {
|
||||
return AUTH_CONFIRM_ALREADY;
|
||||
|
||||
} else if ($user->secret == $confirmsecret) { // They have provided the secret key to get in
|
||||
} else if ($user->secret === $confirmsecret) { // They have provided the secret key to get in
|
||||
$DB->set_field("user", "confirmed", 1, array("id"=>$user->id));
|
||||
|
||||
if ($wantsurl = get_user_preferences('auth_email_wantsurl', false, $user)) {
|
||||
@@ -257,5 +257,3 @@ class auth_plugin_email extends auth_plugin_base {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -598,10 +598,10 @@ class auth_plugin_ldap extends auth_plugin_base {
|
||||
if ($user->auth != $this->authtype) {
|
||||
return AUTH_CONFIRM_ERROR;
|
||||
|
||||
} else if ($user->secret == $confirmsecret && $user->confirmed) {
|
||||
} else if ($user->secret === $confirmsecret && $user->confirmed) {
|
||||
return AUTH_CONFIRM_ALREADY;
|
||||
|
||||
} else if ($user->secret == $confirmsecret) { // They have provided the secret key to get in
|
||||
} else if ($user->secret === $confirmsecret) { // They have provided the secret key to get in
|
||||
if (!$this->user_activate($username)) {
|
||||
return AUTH_CONFIRM_FAIL;
|
||||
}
|
||||
|
||||
@@ -314,10 +314,10 @@ class auth extends \auth_plugin_base {
|
||||
if ($user->auth != $this->authtype) {
|
||||
return AUTH_CONFIRM_ERROR;
|
||||
|
||||
} else if ($user->secret == $confirmsecret && $user->confirmed) {
|
||||
} else if ($user->secret === $confirmsecret && $user->confirmed) {
|
||||
return AUTH_CONFIRM_ALREADY;
|
||||
|
||||
} else if ($user->secret == $confirmsecret) { // They have provided the secret key to get in.
|
||||
} else if ($user->secret === $confirmsecret) { // They have provided the secret key to get in.
|
||||
$DB->set_field("user", "confirmed", 1, array("id" => $user->id));
|
||||
return AUTH_CONFIRM_OK;
|
||||
}
|
||||
|
||||
@@ -512,6 +512,10 @@ class block_activity_results extends block_base {
|
||||
$fields = implode(',', $fields);
|
||||
$users = $DB->get_records_list('user', 'id', $userids, '', $fields);
|
||||
|
||||
// If configured to view user idnumber, ensure current user can see it.
|
||||
$extrafields = get_extra_user_fields($this->context);
|
||||
$canviewidnumber = (array_search('idnumber', $extrafields) !== false);
|
||||
|
||||
// Ready for output!
|
||||
if ($activity->gradetype == GRADE_TYPE_SCALE) {
|
||||
// We must display the results using scales.
|
||||
@@ -537,10 +541,14 @@ class block_activity_results extends block_base {
|
||||
}
|
||||
$this->content->text .= '</caption><colgroup class="number" />';
|
||||
$this->content->text .= '<colgroup class="name" /><colgroup class="grade" /><tbody>';
|
||||
|
||||
foreach ($best as $userid => $gradeid) {
|
||||
switch ($nameformat) {
|
||||
case B_ACTIVITYRESULTS_NAME_FORMAT_ID:
|
||||
$thisname = get_string('user').' '.$users[$userid]->idnumber;
|
||||
$thisname = get_string('user');
|
||||
if ($canviewidnumber) {
|
||||
$thisname .= ' ' . s($users[$userid]->idnumber);
|
||||
}
|
||||
break;
|
||||
case B_ACTIVITYRESULTS_NAME_FORMAT_ANON:
|
||||
$thisname = get_string('user');
|
||||
@@ -603,7 +611,10 @@ class block_activity_results extends block_base {
|
||||
foreach ($worst as $userid => $gradeid) {
|
||||
switch ($nameformat) {
|
||||
case B_ACTIVITYRESULTS_NAME_FORMAT_ID:
|
||||
$thisname = get_string('user').' '.$users[$userid]->idnumber;
|
||||
$thisname = get_string('user');
|
||||
if ($canviewidnumber) {
|
||||
$thisname .= ' ' . s($users[$userid]->idnumber);
|
||||
};
|
||||
break;
|
||||
case B_ACTIVITYRESULTS_NAME_FORMAT_ANON:
|
||||
$thisname = get_string('user');
|
||||
|
||||
@@ -139,7 +139,9 @@ Feature: The activity results block displays student high scores
|
||||
And I should see "70.00" in the "Activity results" "block"
|
||||
|
||||
Scenario: Try to configure the block on the course page to show multiple high scores using ID numbers
|
||||
Given I add the "Activity results" block
|
||||
Given the following config values are set as admin:
|
||||
| showuseridentity | idnumber,email |
|
||||
And I add the "Activity results" block
|
||||
When I configure the "Activity results" block
|
||||
And I set the following fields to these values:
|
||||
| id_config_showbest | 3 |
|
||||
|
||||
@@ -78,7 +78,9 @@ Feature: The activity results block displays students high scores in group as sc
|
||||
And I should see "Good" in the "Activity results" "block"
|
||||
|
||||
Scenario: Try to configure the block on the course page to show multiple high scores using ID numbers
|
||||
Given I add the "Activity results" block
|
||||
Given the following config values are set as admin:
|
||||
| showuseridentity | idnumber,email |
|
||||
And I add the "Activity results" block
|
||||
When I configure the "Activity results" block
|
||||
And I set the following fields to these values:
|
||||
| id_config_showbest | 3 |
|
||||
|
||||
@@ -110,7 +110,9 @@ Feature: The activity results block displays student in group high scores as sca
|
||||
And I should see "Good" in the "Activity results" "block"
|
||||
|
||||
Scenario: Try to configure the block on the course page to show multiple high scores using ID numbers
|
||||
Given I add the "Activity results" block
|
||||
Given the following config values are set as admin:
|
||||
| showuseridentity | idnumber,email |
|
||||
And I add the "Activity results" block
|
||||
When I configure the "Activity results" block
|
||||
And I set the following fields to these values:
|
||||
| id_config_showbest | 3 |
|
||||
@@ -123,11 +125,13 @@ Feature: The activity results block displays student in group high scores as sca
|
||||
And I should see "Very good" in the "Activity results" "block"
|
||||
And I should see "Good" in the "Activity results" "block"
|
||||
And I log out
|
||||
# Students cannot see user identity fields.
|
||||
And I log in as "student1"
|
||||
And I am on "Course 1" course homepage
|
||||
And I should see "User S1" in the "Activity results" "block"
|
||||
And I should see "User" in the "Activity results" "block"
|
||||
And I should not see "User S1" in the "Activity results" "block"
|
||||
And I should see "Excellent!" in the "Activity results" "block"
|
||||
And I should see "User S2" in the "Activity results" "block"
|
||||
And I should not see "User S2" in the "Activity results" "block"
|
||||
And I should see "Very good" in the "Activity results" "block"
|
||||
|
||||
Scenario: Try to configure the block on the course page to show multiple high scores using anonymous names
|
||||
|
||||
@@ -184,7 +184,9 @@ Feature: The activity results block displays student in separate groups scores
|
||||
And I should see "90.00" in the "Activity results" "block"
|
||||
|
||||
Scenario: Try to configure the block on the course page to show multiple high scores using ID numbers
|
||||
Given I add the "Activity results" block
|
||||
Given the following config values are set as admin:
|
||||
| showuseridentity | idnumber,email |
|
||||
And I add the "Activity results" block
|
||||
When I configure the "Activity results" block
|
||||
And I set the following fields to these values:
|
||||
| id_config_showbest | 3 |
|
||||
@@ -198,11 +200,13 @@ Feature: The activity results block displays student in separate groups scores
|
||||
And I should see "85.00%" in the "Activity results" "block"
|
||||
And I should see "75.00%" in the "Activity results" "block"
|
||||
And I log out
|
||||
# Students cannot see user identity fields.
|
||||
And I log in as "student1"
|
||||
And I am on "Course 1" course homepage
|
||||
And I should see "User S1" in the "Activity results" "block"
|
||||
And I should see "User" in the "Activity results" "block"
|
||||
And I should not see "User S1" in the "Activity results" "block"
|
||||
And I should see "100.00%" in the "Activity results" "block"
|
||||
And I should see "User S2" in the "Activity results" "block"
|
||||
And I should not see "User S2" in the "Activity results" "block"
|
||||
And I should see "90.00%" in the "Activity results" "block"
|
||||
|
||||
Scenario: Try to configure the block on the course page to show multiple high scores using anonymous names
|
||||
|
||||
@@ -168,7 +168,9 @@ Feature: The activity results block displays student in visible groups scores
|
||||
And I should see "75.00" in the "Activity results" "block"
|
||||
|
||||
Scenario: Try to configure the block on the course page to show multiple high scores using ID numbers
|
||||
Given I add the "Activity results" block
|
||||
Given the following config values are set as admin:
|
||||
| showuseridentity | idnumber,email |
|
||||
And I add the "Activity results" block
|
||||
When I configure the "Activity results" block
|
||||
And I set the following fields to these values:
|
||||
| id_config_showbest | 3 |
|
||||
|
||||
@@ -128,7 +128,9 @@ Feature: The activity results block displays student low scores
|
||||
And I should see "70.00" in the "Activity results" "block"
|
||||
|
||||
Scenario: Try to configure the block on the course page to show multiple low scores using ID numbers
|
||||
Given I add the "Activity results" block
|
||||
Given the following config values are set as admin:
|
||||
| showuseridentity | idnumber,email |
|
||||
And I add the "Activity results" block
|
||||
When I configure the "Activity results" block
|
||||
And I set the following fields to these values:
|
||||
| id_config_showbest | 0 |
|
||||
|
||||
@@ -79,7 +79,9 @@ Feature: The activity results block displays student low scores as scales
|
||||
And I should see "Good" in the "Activity results" "block"
|
||||
|
||||
Scenario: Try to configure the block on the course page to show multiple low scores using ID numbers
|
||||
Given I add the "Activity results" block
|
||||
Given the following config values are set as admin:
|
||||
| showuseridentity | idnumber,email |
|
||||
And I add the "Activity results" block
|
||||
When I configure the "Activity results" block
|
||||
And I set the following fields to these values:
|
||||
| id_config_showbest | 0 |
|
||||
|
||||
@@ -108,7 +108,9 @@ Feature: The activity results block displays students in groups low scores as sc
|
||||
And I should see "Good" in the "Activity results" "block"
|
||||
|
||||
Scenario: Try to configure the block on the course page to show multiple high scores using ID numbers
|
||||
Given I add the "Activity results" block
|
||||
Given the following config values are set as admin:
|
||||
| showuseridentity | idnumber,email |
|
||||
And I add the "Activity results" block
|
||||
When I configure the "Activity results" block
|
||||
And I set the following fields to these values:
|
||||
| id_config_showbest | 0 |
|
||||
@@ -120,11 +122,13 @@ Feature: The activity results block displays students in groups low scores as sc
|
||||
And I should see "Very good" in the "Activity results" "block"
|
||||
And I should see "Good" in the "Activity results" "block"
|
||||
And I log out
|
||||
# Students cannot see user identity fields.
|
||||
And I log in as "student5"
|
||||
And I am on "Course 1" course homepage
|
||||
And I should see "User S5" in the "Activity results" "block"
|
||||
And I should see "User" in the "Activity results" "block"
|
||||
And I should not see "User S5" in the "Activity results" "block"
|
||||
And I should see "Good" in the "Activity results" "block"
|
||||
And I should see "User S6" in the "Activity results" "block"
|
||||
And I should not see "User S6" in the "Activity results" "block"
|
||||
And I should see "Average" in the "Activity results" "block"
|
||||
|
||||
Scenario: Try to configure the block on the course page to show multiple high scores using anonymous names
|
||||
|
||||
@@ -178,7 +178,9 @@ Feature: The activity results block displays students in separate groups scores
|
||||
And I should see "70.00" in the "Activity results" "block"
|
||||
|
||||
Scenario: Try to configure the block on the course page to show multiple low scores using ID numbers
|
||||
Given I add the "Activity results" block
|
||||
Given the following config values are set as admin:
|
||||
| showuseridentity | idnumber,email |
|
||||
And I add the "Activity results" block
|
||||
When I configure the "Activity results" block
|
||||
And I set the following fields to these values:
|
||||
| id_config_showbest | 0 |
|
||||
@@ -191,11 +193,13 @@ Feature: The activity results block displays students in separate groups scores
|
||||
And I should see "85.00%" in the "Activity results" "block"
|
||||
And I should see "75.00%" in the "Activity results" "block"
|
||||
And I log out
|
||||
# Students cannot see user identity fields.
|
||||
And I log in as "student1"
|
||||
And I am on "Course 1" course homepage
|
||||
And I should see "User S1" in the "Activity results" "block"
|
||||
And I should see "User" in the "Activity results" "block"
|
||||
And I should not see "User S1" in the "Activity results" "block"
|
||||
And I should see "100.00%" in the "Activity results" "block"
|
||||
And I should see "User S2" in the "Activity results" "block"
|
||||
And I should not see "User S2" in the "Activity results" "block"
|
||||
And I should see "90.00%" in the "Activity results" "block"
|
||||
|
||||
Scenario: Try to configure the block on the course page to show multiple low scores using anonymous names
|
||||
|
||||
@@ -166,7 +166,9 @@ Feature: The activity results block displays student in visible groups low score
|
||||
And I should see "75.00" in the "Activity results" "block"
|
||||
|
||||
Scenario: Try to configure the block on the course page to show multiple low scores using ID numbers
|
||||
Given I add the "Activity results" block
|
||||
Given the following config values are set as admin:
|
||||
| showuseridentity | idnumber,email |
|
||||
And I add the "Activity results" block
|
||||
When I configure the "Activity results" block
|
||||
And I set the following fields to these values:
|
||||
| id_config_showbest | 0 |
|
||||
|
||||
@@ -88,14 +88,23 @@ class block_online_users extends block_base {
|
||||
|
||||
$this->content->text = '<div class="info">'.$usercount.' ('.$periodminutes.')</div>';
|
||||
|
||||
// Verify if we can see the list of users, if not just print number of users
|
||||
if (!has_capability('block/online_users:viewlist', $this->page->context)) {
|
||||
// Verify if we can see the list of users, if not just print number of users.
|
||||
// If the current user is not logged in OR it's a guest then don't show any users.
|
||||
if (!has_capability('block/online_users:viewlist', $this->page->context)
|
||||
|| isguestuser() || !isloggedin()) {
|
||||
return $this->content;
|
||||
}
|
||||
|
||||
$userlimit = 50; // We'll just take the most recent 50 maximum.
|
||||
$initialcount = 0;
|
||||
if ($users = $onlineusers->get_users($userlimit)) {
|
||||
require_once($CFG->dirroot . '/user/lib.php');
|
||||
$initialcount = count($users);
|
||||
foreach ($users as $user) {
|
||||
if (!user_can_view_profile($user)) {
|
||||
unset($users[$user->id]);
|
||||
continue;
|
||||
}
|
||||
$users[$user->id]->fullname = fullname($user);
|
||||
}
|
||||
} else {
|
||||
@@ -137,6 +146,14 @@ class block_online_users extends block_base {
|
||||
}
|
||||
$this->content->text .= "</li>\n";
|
||||
}
|
||||
if ($initialcount - count($users) > 0) {
|
||||
$this->content->text .= '<li class="listentry"><div class="otherusers">';
|
||||
$this->content->text .= html_writer::span(
|
||||
get_string('otherusers', 'block_online_users', $initialcount - count($users))
|
||||
);
|
||||
$this->content->text .= "</div>";
|
||||
$this->content->text .= "</li>\n";
|
||||
}
|
||||
$this->content->text .= '</ul><div class="clearer"><!-- --></div>';
|
||||
}
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ class fetcher {
|
||||
$timeaccess = ", ul.timeaccess AS lastaccess";
|
||||
$params = array();
|
||||
|
||||
$userfields = \user_picture::fields('u', array('username'));
|
||||
$userfields = \user_picture::fields('u', array('username', 'deleted'));
|
||||
|
||||
// Add this to the SQL to show only group users.
|
||||
if ($currentgroup !== null) {
|
||||
|
||||
@@ -55,7 +55,7 @@ $capabilities = array(
|
||||
'contextlevel' => CONTEXT_BLOCK,
|
||||
'archetypes' => array(
|
||||
'user' => CAP_ALLOW,
|
||||
'guest' => CAP_ALLOW,
|
||||
'guest' => CAP_PREVENT,
|
||||
'student' => CAP_ALLOW,
|
||||
'teacher' => CAP_ALLOW,
|
||||
'editingteacher' => CAP_ALLOW,
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
$string['otherusers'] = 'Other Users ({$a})';
|
||||
$string['configtimetosee'] = 'Number of minutes determining the period of inactivity after which a user is no longer considered to be online.';
|
||||
$string['nouser'] = 'No online users';
|
||||
$string['numuser'] = '{$a} online user';
|
||||
|
||||
@@ -7,6 +7,10 @@
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.block_online_users .content .list li.listentry .otherusers {
|
||||
margin-left: 1.5rem;
|
||||
}
|
||||
|
||||
.block_online_users .content .list li.listentry .user .userpicture {
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
@block @block_online_users
|
||||
Feature: The online users block allow you to see who is currently online on dashboard
|
||||
There should be some commonality for the users to show up
|
||||
In order to use the online users block on the dashboard
|
||||
As a user
|
||||
I can view the online users block on my dashboard
|
||||
@@ -10,6 +11,14 @@ Feature: The online users block allow you to see who is currently online on dash
|
||||
| teacher1 | Teacher | 1 | teacher1@example.com |
|
||||
| student1 | Student | 1 | student1@example.com |
|
||||
| student2 | Student | 2 | student2@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 |
|
||||
| student2 | C1 | student |
|
||||
|
||||
Scenario: View the online users block on the dashboard and see myself
|
||||
Given I log in as "teacher1"
|
||||
|
||||
@@ -1,14 +1,22 @@
|
||||
@block @block_online_users
|
||||
Feature: The online users block allow you to see who is currently online on frontpage
|
||||
In order to enable the online users block on the front page page
|
||||
There should be some commonality for the users to show up
|
||||
In order to enable the online users block on the frontpage
|
||||
As an admin
|
||||
I can add the online users block to the front page page
|
||||
I can add the online users block to the frontpage
|
||||
|
||||
Background:
|
||||
Given the following "users" exist:
|
||||
| username | firstname | lastname | email |
|
||||
| student1 | Student | 1 | student1@example.com |
|
||||
| student2 | Student | 2 | student2@example.com |
|
||||
And the following "courses" exist:
|
||||
| fullname | shortname | category |
|
||||
| Course 1 | C1 | 0 |
|
||||
And the following "course enrolments" exist:
|
||||
| user | course | role |
|
||||
| student1 | C1 | student |
|
||||
| student2 | C1 | student |
|
||||
|
||||
Scenario: View the online users block on the front page and see myself
|
||||
Given I log in as "admin"
|
||||
@@ -28,7 +36,8 @@ Feature: The online users block allow you to see who is currently online on fron
|
||||
And I log out
|
||||
When I log in as "student1"
|
||||
And I am on site homepage
|
||||
Then I should see "Admin User" in the "Online users" "block"
|
||||
Then I should not see "Admin User" in the "Online users" "block"
|
||||
And I should see "Other Users (1)" in the "Online users" "block"
|
||||
And I should see "Student 1" in the "Online users" "block"
|
||||
And I should see "Student 2" in the "Online users" "block"
|
||||
And I should see "3 online users" in the "Online users" "block"
|
||||
@@ -45,7 +54,7 @@ Feature: The online users block allow you to see who is currently online on fron
|
||||
And I log out
|
||||
When I log in as "guest"
|
||||
And I am on site homepage
|
||||
Then I should see "Admin User" in the "Online users" "block"
|
||||
And I should see "Student 1" in the "Online users" "block"
|
||||
And I should see "Student 2" in the "Online users" "block"
|
||||
Then I should not see "Admin User" in the "Online users" "block"
|
||||
And I should not see "Student 1" in the "Online users" "block"
|
||||
And I should not see "Student 2" in the "Online users" "block"
|
||||
And I should see "3 online users" in the "Online users" "block"
|
||||
|
||||
@@ -24,6 +24,6 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
|
||||
$plugin->version = 2018051401; // The current plugin version (Date: YYYYMMDDXX)
|
||||
$plugin->requires = 2018050800; // Requires this Moodle version
|
||||
$plugin->component = 'block_online_users'; // Full name of the plugin (used for diagnostics)
|
||||
|
||||
@@ -295,11 +295,15 @@ class core_enrol_external extends external_api {
|
||||
global $CFG, $USER, $DB;
|
||||
|
||||
require_once($CFG->dirroot . '/course/lib.php');
|
||||
require_once($CFG->dirroot . '/user/lib.php');
|
||||
|
||||
// Do basic automatic PARAM checks on incoming data, using params description
|
||||
// If any problems are found then exceptions are thrown with helpful error messages
|
||||
$params = self::validate_parameters(self::get_users_courses_parameters(), array('userid'=>$userid));
|
||||
$userid = $params['userid'];
|
||||
|
||||
// Get user data including last access to courses.
|
||||
$user = get_complete_user_data('id', $userid);
|
||||
$sameuser = $USER->id == $userid;
|
||||
|
||||
$courses = enrol_get_users_courses($params['userid'], true, 'id, shortname, fullname, idnumber, visible,
|
||||
@@ -315,8 +319,8 @@ class core_enrol_external extends external_api {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!$sameuser and !course_can_view_participants($context)) {
|
||||
// we need capability to view participants
|
||||
// If viewing details of another user, then we must be able to view participants as well as profile of that user.
|
||||
if (!$sameuser && (!course_can_view_participants($context) || !user_can_view_profile($user, $course))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -1150,7 +1150,7 @@ class course_enrolment_manager {
|
||||
);
|
||||
|
||||
foreach ($extrafields as $field) {
|
||||
$details[$field] = $user->{$field};
|
||||
$details[$field] = s($user->{$field});
|
||||
}
|
||||
|
||||
// Last time user has accessed the site.
|
||||
|
||||
@@ -464,6 +464,81 @@ class core_enrol_externallib_testcase extends externallib_advanced_testcase {
|
||||
$this->assertEquals(null, $enrolledincourses[0]['progress']); // I can't see this, private.
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that get_users_courses respects the capability to view participants when viewing courses of other user
|
||||
*/
|
||||
public function test_get_users_courses_can_view_participants() {
|
||||
global $DB;
|
||||
|
||||
$this->resetAfterTest();
|
||||
|
||||
$course = $this->getDataGenerator()->create_course();
|
||||
$context = context_course::instance($course->id);
|
||||
|
||||
$user1 = $this->getDataGenerator()->create_and_enrol($course, 'student');
|
||||
$user2 = $this->getDataGenerator()->create_and_enrol($course, 'student');
|
||||
|
||||
$this->setUser($user1);
|
||||
|
||||
$courses = core_enrol_external::clean_returnvalue(
|
||||
core_enrol_external::get_users_courses_returns(),
|
||||
core_enrol_external::get_users_courses($user2->id, false)
|
||||
);
|
||||
|
||||
$this->assertCount(1, $courses);
|
||||
$this->assertEquals($course->id, reset($courses)['id']);
|
||||
|
||||
// Prohibit the capability for viewing course participants.
|
||||
$studentrole = $DB->get_field('role', 'id', ['shortname' => 'student']);
|
||||
assign_capability('moodle/course:viewparticipants', CAP_PROHIBIT, $studentrole, $context->id);
|
||||
|
||||
$courses = core_enrol_external::clean_returnvalue(
|
||||
core_enrol_external::get_users_courses_returns(),
|
||||
core_enrol_external::get_users_courses($user2->id, false)
|
||||
);
|
||||
$this->assertEmpty($courses);
|
||||
}
|
||||
|
||||
/*
|
||||
* Test that get_users_courses respects the capability to view a users profile when viewing courses of other user
|
||||
*/
|
||||
public function test_get_users_courses_can_view_profile() {
|
||||
$this->resetAfterTest();
|
||||
|
||||
$course = $this->getDataGenerator()->create_course([
|
||||
'groupmode' => VISIBLEGROUPS,
|
||||
]);
|
||||
|
||||
$user1 = $this->getDataGenerator()->create_and_enrol($course, 'student');
|
||||
$user2 = $this->getDataGenerator()->create_and_enrol($course, 'student');
|
||||
|
||||
// Create separate groups for each of our students.
|
||||
$group1 = $this->getDataGenerator()->create_group(['courseid' => $course->id]);
|
||||
groups_add_member($group1, $user1);
|
||||
$group2 = $this->getDataGenerator()->create_group(['courseid' => $course->id]);
|
||||
groups_add_member($group2, $user2);
|
||||
|
||||
$this->setUser($user1);
|
||||
|
||||
$courses = core_enrol_external::clean_returnvalue(
|
||||
core_enrol_external::get_users_courses_returns(),
|
||||
core_enrol_external::get_users_courses($user2->id, false)
|
||||
);
|
||||
|
||||
$this->assertCount(1, $courses);
|
||||
$this->assertEquals($course->id, reset($courses)['id']);
|
||||
|
||||
// Change to separate groups mode, so students can't view information about each other in different groups.
|
||||
$course->groupmode = SEPARATEGROUPS;
|
||||
update_course($course);
|
||||
|
||||
$courses = core_enrol_external::clean_returnvalue(
|
||||
core_enrol_external::get_users_courses_returns(),
|
||||
core_enrol_external::get_users_courses($user2->id, false)
|
||||
);
|
||||
$this->assertEmpty($courses);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test get_course_enrolment_methods
|
||||
*/
|
||||
|
||||
@@ -1 +1 @@
|
||||
define(["jquery","core/templates","core/notification","core/yui"],function(a,b,c){return{initialise:function(d,e,f,g){function h(b,c){var e="<label>"+M.util.get_string("insertcomment","gradingform_guide")+"</label>",g="comment-chooser-"+d+"-cancel",h='<button id="'+g+'">'+M.util.get_string("cancel","moodle")+"</button>",i=new M.core.dialogue({modal:!0,headerContent:e,bodyContent:b,footerContent:h,focusAfterHide:"#"+f,id:"comments-chooser-dialog-"+d});a("#"+g).click(function(){i.hide()}),a.each(c,function(b,c){var e="#comment-option-"+d+"-"+c.id;a(e).click(function(){var b=a("#"+f),d=b.val();""!==a.trim(d)&&(d+="\n"),d+=c.description,b.val(d),i.hide()}),a(document).off("keypress",e).on("keypress",e,function(){var b=event.which||event.keyCode;13!=b&&32!=b||a(e).click()})}),i.after("visibleChange",function(a){a.prevVal&&!a.newVal&&this.destroy()},i),i.show()}function i(){var a={criterionId:d,comments:g};b.render("gradingform_guide/comment_chooser",a).done(function(a){h(a,g)}).fail(c.exception)}a("#"+e).click(function(a){a.preventDefault(),i()})}}});
|
||||
define(["jquery","core/templates","core/notification","core/yui"],function(a,b,c){return{initialise:function(d,e,f,g){function h(b,c){var e="<label>"+M.util.get_string("insertcomment","gradingform_guide")+"</label>",g="comment-chooser-"+d+"-cancel",h='<button id="'+g+'">'+M.util.get_string("cancel","moodle")+"</button>",i=new M.core.dialogue({modal:!0,headerContent:e,bodyContent:b,footerContent:h,focusAfterHide:"#"+f,id:"comments-chooser-dialog-"+d});a("#"+g).click(function(){i.hide()}),a.each(c,function(b,c){var e="#comment-option-"+d+"-"+c.id;a(e).click(function(){var b=a("#"+f),d=b.val();""!==d.trim()&&(d+="\n"),d+=c.description,b.val(d),i.hide()}),a(document).off("keypress",e).on("keypress",e,function(){var b=event.which||event.keyCode;13!=b&&32!=b||a(e).click()})}),i.after("visibleChange",function(a){a.prevVal&&!a.newVal&&this.destroy()},i),i.show()}function i(){var a={criterionId:d,comments:g};b.render("gradingform_guide/comment_chooser",a).done(function(a){h(a,g)}).fail(c.exception)}a("#"+e).click(function(a){a.preventDefault(),i()})}}});
|
||||
@@ -77,7 +77,7 @@ define(['jquery', 'core/templates', 'core/notification', 'core/yui'], function($
|
||||
var remarkText = remarkTextArea.val();
|
||||
|
||||
// Add line break if the current value of the remark text is not empty.
|
||||
if ($.trim(remarkText) !== '') {
|
||||
if (remarkText.trim() !== '') {
|
||||
remarkText += '\n';
|
||||
}
|
||||
remarkText += comment.description;
|
||||
|
||||
@@ -767,7 +767,7 @@ class grade_report_grader extends grade_report {
|
||||
$fieldcell = new html_table_cell();
|
||||
$fieldcell->attributes['class'] = 'userfield user' . $field;
|
||||
$fieldcell->header = false;
|
||||
$fieldcell->text = $user->{$field};
|
||||
$fieldcell->text = s($user->{$field});
|
||||
$userrow->cells[] = $fieldcell;
|
||||
}
|
||||
|
||||
|
||||
@@ -30,15 +30,15 @@
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['clianswerno'] = 'n';
|
||||
$string['cliansweryes'] = 'y';
|
||||
$string['cliansweryes'] = 'j';
|
||||
$string['cliincorrectvalueerror'] = 'Fout, verkeerde waarde "{$a->value}" vir "{$a->option}"';
|
||||
$string['cliincorrectvalueretry'] = 'Verkeerde waarde, probeer weer';
|
||||
$string['clitypevalue'] = 'tipe waarde';
|
||||
$string['clitypevaluedefault'] = 'tipe waarde, druk Enter om die standaard waarde te gebruik ({$a})';
|
||||
$string['cliunknowoption'] = 'Nie-erkende opsies:
|
||||
$string['clitypevaluedefault'] = 'tipe waarde, druk Enter om die verstekwaarde te gebruik ({$a})';
|
||||
$string['cliunknowoption'] = 'Onerkende opsies:
|
||||
{$a}
|
||||
Gebruik die --help opsie.';
|
||||
$string['cliyesnoprompt'] = 'Tik y (beteken ja) of n (beteken nee)';
|
||||
$string['environmentrequireinstall'] = 'moet geïnstalleer en geaktiveer wees';
|
||||
$string['environmentrequireversion'] = 'weergawe {$a->needed} word benodig en jy het tans {$a->current}';
|
||||
$string['upgradekeyset'] = 'Opgradering sleutel (los skoon om nie te stel nie)';
|
||||
Gebruik asseblief die --help opsie.';
|
||||
$string['cliyesnoprompt'] = 'Tik j (beteken ja) of n (beteken nee)';
|
||||
$string['environmentrequireinstall'] = 'moet geïnstalleer en ontsper wees';
|
||||
$string['environmentrequireversion'] = 'weergawe {$a->needed} word benodig en jy hardloop tans {$a->current}';
|
||||
$string['upgradekeyset'] = 'Opgradering sleutel (los oop om nie in te stel nie)';
|
||||
|
||||
@@ -45,3 +45,8 @@ $string['dmlexceptiononinstall'] = '<p>\'n Databasisfout het opgeduik [{$a->erro
|
||||
$string['downloadedfilecheckfailed'] = 'Kontrolering van afgelaaide lêer het misluk';
|
||||
$string['invalidmd5'] = 'Die kontroleveranderlike was verkeerd - probeer weer';
|
||||
$string['missingrequiredfield'] = 'Een of ander verlangde veld ontbreek';
|
||||
$string['remotedownloaderror'] = '<p>Die aflaai van die komponent na jou bediener het misluk. Verifieer asseblief instaanbediener se instellings; die uitbreiding PHP cURL word hoogs aanbeveel.</p>
|
||||
<p>Jy moet die <a href="{$a->url}">{$a->url}</a>-lêer handmatig aflaai, dit na "{$a->dest}" in jou bediener kopieer en dit daar uitpak.</p>';
|
||||
$string['wrongdestpath'] = 'Verkeerde bestemmingsroete';
|
||||
$string['wrongsourcebase'] = 'Verkeerde bron vir URL-basis';
|
||||
$string['wrongzipfilename'] = 'Verkeerde ZIP-lêernaam';
|
||||
|
||||
@@ -29,4 +29,66 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['availablelangs'] = 'Beskikbare taal pakkette';
|
||||
$string['admindirname'] = 'Admingids';
|
||||
$string['availablelangs'] = 'Beskikbare taalpakkette';
|
||||
$string['chooselanguagehead'] = 'Kies \'n taal';
|
||||
$string['chooselanguagesub'] = 'Kies asseblief \'n taal vir die installasie. Hierdie taal sal ook as die verstektaal vir die webwerf gebruik word, alhoewel dit later verander kan word.';
|
||||
$string['clialreadyconfigured'] = 'Die konfigurasielêer config.php bestaan reeds. Gebruik admin/cli/install_database.php asseblief om Moodle vir hierdie webwerf te installeer.';
|
||||
$string['clialreadyinstalled'] = 'Die konfigurasielêer config.php bestaan reeds. Gebruik admin/cli/install_database.php asseblief om Moodle vir hierdie webwerf by te werk.';
|
||||
$string['cliinstallheader'] = 'Installasieprogram vir Moodle-{$a}-opdraglyn';
|
||||
$string['databasehost'] = 'Databasisgasheer';
|
||||
$string['databasename'] = 'Databasisnaam';
|
||||
$string['databasetypehead'] = 'Kies databasisdrywer';
|
||||
$string['dataroot'] = 'Datagids';
|
||||
$string['datarootpermission'] = 'Datagidstoestemming';
|
||||
$string['dbprefix'] = 'Tabelvoorvoegsel';
|
||||
$string['dirroot'] = 'Moodle-gids';
|
||||
$string['environmenthead'] = 'Gaan tans jou omgewing na ...';
|
||||
$string['environmentsub2'] = 'Elke Moodle-vrystelling het \'n paar minimumvereistes vir PHP-weergawes en \'n aantal verpligte PHP-uitbreidings.
|
||||
Volledige omgewingskontrole word vóór elke installasie en opgradering gedoen. Kontak bedieneradministrateur asseblief as jy nie weet hoe om nuwe weergawe te installeer of PHP-uitbreidings te ontsper nie.';
|
||||
$string['errorsinenvironment'] = 'Omgewingskontrole het misluk!';
|
||||
$string['installation'] = 'Installasie';
|
||||
$string['langdownloaderror'] = 'Jammer, die taal "{$a}" kon nie afgelaai word nie. Die installasieproses sal in Engels voortgesit word.';
|
||||
$string['memorylimithelp'] = '<p>Die PHP-geheueperk vir jou bediener is tans op {$a} gestel.</p>
|
||||
|
||||
<p>Dit kan veroorsaak dat Moodle mettertyd geheueprobleme ervaar, veral as baie modules aangeskakel en/of daar baie gebruikers is.</p>
|
||||
|
||||
<p>Ons beveel aan dat jy, indien moontlik, PHP herkonfigureer met \'n hoër perk, soos 40M.
|
||||
Jy kan verskeie maniere probeer om dit te doen:</p>
|
||||
<ol>
|
||||
<li>As jy kan, herkompileer PHP met <i>--enable-memory-limit</i>.
|
||||
Dit sal Moodle in staat stel om self die geheueperk te stel.</li>
|
||||
<li>As jy toegang tot jou php.ini-lêer het, kan jy die <b>memory_limit</b>-instelling daarin verander tot iets soos 40M. As jy nie toegang het nie, kan jy dalk jou administrateur vra om dit vir jou te doen.</li>
|
||||
<li>Op sommige PHP-bedieners kan jy \'n .htaccess-lêer in die Moodle-gids skep wat hierdie lyn bevat:
|
||||
<blockquote><div>php_value memory_limit 40M</div></blockquote>
|
||||
<p>Op sommige bedieners kan dit egter verhoed dat <b>alle</b> PHP-blaaie werk (jy sal foute sien wanneer jy na die blaaie kyk), en daarom sal jy die .htaccess-lêer moet verwyder.</p></li>
|
||||
</ol>';
|
||||
$string['paths'] = 'Roetes';
|
||||
$string['pathserrcreatedataroot'] = 'Datagids ({$a->dataroot}) kan nie deur installeerder geskep word nie.';
|
||||
$string['pathshead'] = 'Bevestig roetes';
|
||||
$string['pathsrodataroot'] = 'Datastamgids is nie skryfbaar nie.';
|
||||
$string['pathsroparentdataroot'] = 'Moedergids ({$a->parent}) is nie skryfbaar nie. Datagids ({$a->dataroot}) kan nie deur installeerder geskep word nie.';
|
||||
$string['pathssubadmindir'] = 'Slegs \'n paar webgashere gebruik /admin \'n spesiale URL sodat jy toegang tot \'n kontrolepaneel of iets dergliks kan verkry. Ongelukkig bots dit met die standaardligging vir die Moodle-adminblaaie. Jy kan dit regstel deur die admingids in jou installasie te herbenaam, en daardie nuwe naam hier aan te bring. Byvoorbeeld: <em>moodleadmin</em>. Dit sal die adminskakels in Moodle regstel.';
|
||||
$string['pathssubdataroot'] = '<p>\'n Gids waar Moodle alle lêerinhoud wat deur gebruikers opgelaai is, sal stoor.</p>
|
||||
<p>Hierdie gids moet vir die gebruiker van die webbediener (gewoonlik \'www-data\', \'niemand\' of \'apache\') leesbaar en skryfbaar wees.</p>
|
||||
</p>Dit moet nie regstreeks via die web toeganklik wees nie.</p>
|
||||
<p>As die gids nie tans bestaan nie, sal die installasieproses probeer om dit te skep.</p>';
|
||||
$string['pathssubdirroot'] = '<p>Die volledige roete na die gids wat die Moodle-kode bevat.</p>';
|
||||
$string['pathssubwwwroot'] = '<p>Die volledige adres waar toegang tot Moodle verkry sal word, d.w.s. die adres wat gebruikers in die adresbalk van hul blaaier sal intik om toegang tot Moodle te verkry.</p>
|
||||
<p>Dit is nie moontlik om toegang tot Moodle te verkry deur van veelvoudige adresse gebruik te maak nie. As jou webwerf via veelvoudige adresse toeganklik is, kies dan die maklikste een en stel \'n permanente heradressering vir elk van die ander adresse op.</p>
|
||||
<p>As jou webwerf beide via die Internet en \'n interne netwerk (soms bekend as \'n Intranet) toeganklik is, gebruik dan die publieke adres hier.</p>
|
||||
<p>As die huidige adres nie korrek is nie, verander asseblief die URL in jou blaaier se adresbalk en herbegin die installasie.</p>';
|
||||
$string['pathsunsecuredataroot'] = 'Ligging van datastam is nie veilig nie';
|
||||
$string['pathswrongadmindir'] = 'Admingids bestaan nie';
|
||||
$string['phpextension'] = '{$a} PHP-uitbreiding';
|
||||
$string['phpversion'] = 'PHP-weergawe';
|
||||
$string['phpversionhelp'] = '<p>Moodle vereis \'n PHP-weergawe van ten minste 5.6.5 of 7.1 (7.0.x het \'n paar enjinbeperkings).</p>
|
||||
<p>Jy gebruik tans weergawe {$a}.</p>
|
||||
<p>Jy moet PHP opgradeer of na \'n gasheer met \'n nuwer weergawe van PHP verskuif.</p>';
|
||||
$string['welcomep10'] = '{$a->installername} ({$a->installerversion})';
|
||||
$string['welcomep20'] = 'Jy sien hierdie blad omdat jy die <strong>{$a->packname} {$a->packversion}</strong>-pakket suksesvol geïnstalleer en op jou rekenaar laat loop het. Baie geluk!';
|
||||
$string['welcomep30'] = 'Hierdie vrystelling van die <strong>{$a->installername}</strong> sluit die toepassings in om \'n omgewing te skep waarbinne <strong>Moodle</strong> gaan funksioneer, naamlik:';
|
||||
$string['welcomep40'] = 'Die pakket sluit ook <strong>Moodle {$a->moodlerelease} ({$a->moodleversion})</strong> in.';
|
||||
$string['welcomep60'] = 'Die volgende blaaie gaan jou deur \'n paar maklik volgbare stappe lei om <strong>Moodle</strong> op jou rekenaar te konfigureer en op te stel. Jy kan die verstekinstellings aanvaar of, opsioneel, hulle wysig om by jou eie behoeftes te pas.';
|
||||
$string['welcomep70'] = 'Klik die "Volgende"-knoppie hieronder om voort te gaan met die opstelling van <strong>Moodle</strong>.';
|
||||
$string['wwwroot'] = 'Webadres';
|
||||
|
||||
@@ -29,4 +29,5 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['thisdirection'] = 'ltr';
|
||||
$string['thislanguage'] = 'Afrikaans';
|
||||
|
||||
@@ -33,7 +33,7 @@ $string['cannotcreatedboninstall'] = '<p>Die Datenbank konnte nicht angelegt wer
|
||||
$string['cannotcreatelangdir'] = 'Das Verzeichnis \'lang\' wurde nicht angelegt.';
|
||||
$string['cannotcreatetempdir'] = 'Das Verzeichnis \'temp\' wurde nicht angelegt.';
|
||||
$string['cannotdownloadcomponents'] = 'Einige Komponenten können nicht geladen werden.';
|
||||
$string['cannotdownloadzipfile'] = 'ZIP-Datei kann nicht heruntergeladen werden.';
|
||||
$string['cannotdownloadzipfile'] = 'Die ZIP-Datei kann nicht heruntergeladen werden';
|
||||
$string['cannotfindcomponent'] = 'Die Komponente kann nicht gefunden werden.';
|
||||
$string['cannotsavemd5file'] = 'Die md5-Datei wurde nicht gespeichert.';
|
||||
$string['cannotsavezipfile'] = 'Die ZIP-Datei wurde nicht gespeichert.';
|
||||
|
||||
@@ -73,7 +73,7 @@ $string['pathswrongadmindir'] = 'Das Admin-Verzeichnis existiert nicht';
|
||||
$string['phpextension'] = 'PHP-Extension {$a}';
|
||||
$string['phpversion'] = 'PHP-Version';
|
||||
$string['phpversionhelp'] = '<p>Moodle benötigt mindestens die PHP-Version 5.6.5. oder 7.1 (7.0.x weist einige Einschränkungen auf).</p>
|
||||
<p>Sie nutzen im Moment die Version {$a}.</p>
|
||||
<p>Sie verwenden im Moment die Version {$a}.</p>
|
||||
<p>Sie müssen Ihre PHP-Version aktualisieren oder auf einen Server mit einer neueren PHP-Version wechseln.<br />';
|
||||
$string['welcomep10'] = '{$a->installername} ({$a->installerversion})';
|
||||
$string['welcomep20'] = 'Sie haben das Paket <strong>{$a->packname} {$a->packversion}</strong> erfolgreich auf Ihrem Computer installiert.';
|
||||
|
||||
@@ -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'] = 'ᐃᓄᒃᑎᑐᑦ';
|
||||
@@ -38,5 +38,6 @@ $string['clitypevaluedefault'] = 'Vložte hodnotu a stlačte klávesu Enter pre
|
||||
$string['cliunknowoption'] = 'Nerozoznané voľby: {$a}
|
||||
Prosím, použite možnosť --help.';
|
||||
$string['cliyesnoprompt'] = 'Zvolte A (Áno) alebo N (Nie)';
|
||||
$string['environmentrequireinstall'] = 'vyžadovaný komponent';
|
||||
$string['environmentrequireinstall'] = 'musí by byť nainštalované a povolené';
|
||||
$string['environmentrequireversion'] = 'vyžadovaná je verzia {$a->needed}, teraz používate verziu {$a->current}';
|
||||
$string['upgradekeyset'] = 'Kľúč pre aktualizáciu (nechajte prázdne, ak nechcete nastaviť)';
|
||||
|
||||
@@ -79,7 +79,7 @@ $string['pathsunsecuredataroot'] = 'Dataroot локација није безб
|
||||
$string['pathswrongadmindir'] = 'Админ директоријум не постоји';
|
||||
$string['phpextension'] = '{$a} PHP екстензија';
|
||||
$string['phpversion'] = 'PHP верзија';
|
||||
$string['phpversionhelp'] = '<p>Moodle захтева најмање PHP верзију 5.6.5 или 7.1 (7.0.x има нека ограничења).</p>
|
||||
$string['phpversionhelp'] = '<p>Moodle захтева PHP верзију барем 5.6.5 или 7.1 (7.0.x има нека ограничења).</p>
|
||||
<p>Тренутно користите верзију {$a}</p>
|
||||
<p>Морате да надоградите PHP или да преместити Moodle на веб сервер са новијом верзијом PHP-a.</p>';
|
||||
$string['welcomep10'] = '{$a->installername} ({$a->installerversion})';
|
||||
|
||||
@@ -76,7 +76,7 @@ $string['pathsunsecuredataroot'] = 'Dataroot lokacija nije bezbedna';
|
||||
$string['pathswrongadmindir'] = 'Admin direktorijum ne postoji';
|
||||
$string['phpextension'] = '{$a} PHP ekstenѕija';
|
||||
$string['phpversion'] = 'PHP verzija';
|
||||
$string['phpversionhelp'] = '<p>Moodle zahteva najmanje PHP verziju 5.6.5 ili 7.1 (7.0.x ima neka ograničenja).</p>
|
||||
$string['phpversionhelp'] = '<p>Moodle zahteva PHP verziju barem 5.6.5 ili 7.1 (7.0.x ima neka ograničenja).</p>
|
||||
<p>Trenutno koristite verziju {$a}</p>
|
||||
<p>Morate da nadogradite PHP ili da premestiti Moodle na veb server sa novijom verzijom PHP-a.</p>';
|
||||
$string['welcomep10'] = '{$a->installername} ({$a->installerversion})';
|
||||
|
||||
@@ -33,9 +33,12 @@ $string['clianswerno'] = 'n';
|
||||
$string['cliansweryes'] = 'y';
|
||||
$string['cliincorrectvalueerror'] = 'Fel, värdet "{$a->value}" för "{$a->option}" är inte korrekt.';
|
||||
$string['cliincorrectvalueretry'] = 'Felaktigt värde, var snäll och försök igen';
|
||||
$string['clitypevalue'] = 'Värde för typ';
|
||||
$string['clitypevaluedefault'] = 'skriv in värdet, klicka på "Enter" om du vill använda standardvärdet ({$a})';
|
||||
$string['cliunknowoption'] = 'Ej identifierade alternativ: {$a} Var snäll och använd alternativet Hjälp.';
|
||||
$string['cliyesnoprompt'] = 'skriv in y (betyder ja) eller n (betyder nej)';
|
||||
$string['clitypevalue'] = 'ange värde';
|
||||
$string['clitypevaluedefault'] = 'ange värde. Tryck på <em>Enter</em> för att använda standardvärdet ({$a})';
|
||||
$string['cliunknowoption'] = 'Okända alternativ:
|
||||
{$a}
|
||||
Vänligen använd <code>--help</code> för hjälp med möjliga alternativ.';
|
||||
$string['cliyesnoprompt'] = 'ange <em>y</em> (betyder ja) eller <em>n</em> (betyder nej)';
|
||||
$string['environmentrequireinstall'] = 'måste vara installerat och aktiverat';
|
||||
$string['environmentrequireversion'] = 'version {$a->needed} krävs och du använder {$a->current}';
|
||||
$string['upgradekeyset'] = 'Uppgraderingsnyckel (lämna tom för att inte ange någon)';
|
||||
|
||||
@@ -36,13 +36,13 @@ $string['cannotcreatelangdir'] = 'Det går inte att skapa lang-katalogen';
|
||||
$string['cannotcreatetempdir'] = 'Det går inte att skapa temp-katalogen';
|
||||
$string['cannotdownloadcomponents'] = 'Kan inte ladda ned komponenter';
|
||||
$string['cannotdownloadzipfile'] = 'Kan inte ladda ned ZIP-fil';
|
||||
$string['cannotfindcomponent'] = 'Det går inte att hitta komponent';
|
||||
$string['cannotfindcomponent'] = 'Hittar inte komponenten';
|
||||
$string['cannotsavemd5file'] = 'Det går inte att spara md5-fil';
|
||||
$string['cannotsavezipfile'] = 'Det går inte att spara ZIP-fil';
|
||||
$string['cannotunzipfile'] = 'Det går inte att packa upp fil';
|
||||
$string['componentisuptodate'] = 'Komponenten är av en aktuell version';
|
||||
$string['componentisuptodate'] = 'Komponenten är aktuell';
|
||||
$string['dmlexceptiononinstall'] = '<p>Ett databasfel har inträffat [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'Det gick inte att kontrollera den nedladdade filen';
|
||||
$string['downloadedfilecheckfailed'] = 'Kontrollen av den nedladdade filen misslyckades';
|
||||
$string['invalidmd5'] = 'Kontrollvariabeln var felaktig - försök igen';
|
||||
$string['missingrequiredfield'] = 'Det saknas några obligatoriska fält';
|
||||
$string['remotedownloaderror'] = 'Nedladdningen av en komponent till din server misslyckades. Vänligen verifiera inställningar för proxy. <br /><br />Du måste ladda ner <a href="{$a->url}">{$a->url}</a> filen manuellt, kopiera den till "{$a->dest}" på din server och packa upp den där.';
|
||||
|
||||
+37
-27
@@ -29,48 +29,58 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['admindirname'] = 'Katalog/mapp för administration';
|
||||
$string['admindirname'] = 'Admin-katalog';
|
||||
$string['availablelangs'] = 'Tillgängliga språkpaket';
|
||||
$string['chooselanguagehead'] = 'Välj ett språk';
|
||||
$string['chooselanguagesub'] = 'Vänligen välj ett språk för installationen. Du kommer att ha möjlighet att välja språk för webbplatsen och användarna på en senare skärm.';
|
||||
$string['clialreadyconfigured'] = 'Filen <em>config.php</em> finns redan. Använd <code>admin/cli/install_database.php</code> för att installera Moodle på denna server.';
|
||||
$string['clialreadyinstalled'] = 'Filen config.php finns redan. Vänligen använd admin/cli/upgrade.php om Du vill uppgradera Din webbplats.';
|
||||
$string['cliinstallheader'] = 'Installationsprogram av typ kommandorad {$a} för Moodle ';
|
||||
$string['databasehost'] = 'Värd för databas';
|
||||
$string['cliinstallheader'] = 'Kommandoradsbaserat installationsprogram för Moodle {$a}';
|
||||
$string['databasehost'] = 'Databasserver';
|
||||
$string['databasename'] = 'Namn på databas';
|
||||
$string['databasetypehead'] = 'Välj drivrutin för databasen';
|
||||
$string['dataroot'] = 'katalog för data';
|
||||
$string['dataroot'] = 'Datakatalog';
|
||||
$string['dbprefix'] = 'Prefix för tabeller';
|
||||
$string['dirroot'] = 'Katalogen för Moodle';
|
||||
$string['environmenthead'] = 'Undersöker din miljö...';
|
||||
$string['dirroot'] = 'Moodle-katalog';
|
||||
$string['environmenthead'] = 'Kontrollerar miljön...';
|
||||
$string['errorsinenvironment'] = 'Kontrollen av miljön misslyckades';
|
||||
$string['installation'] = 'Installation';
|
||||
$string['langdownloaderror'] = 'Språket "{$a}" gick tyvärr inte att ladda ner. Installationen kommer att fullföljas på engelska.';
|
||||
$string['memorylimithelp'] = '<p>Den aktuella minnesbegränsningen för PHP på din server är inställt till {$a}.</p>
|
||||
<p>Detta kan förorsaka att Moodle får minnesproblem senare, särskilt om du har aktiverat många moduler och/eller har många användare.</p>
|
||||
<p>Vi rekommenderar att du konfigurerar PHP med en högre begränsning, som t ex 16M. Det finns flera sätt att göra detta som du kan pröva med:</p> <ol>
|
||||
<li>Om du har möjlighet till det så kan du kompilera om PHP med<i>--enable-memory-limit </i>Detta gör det möjligt för Moodle att ställa in minnesbegränsningen själv. </li>
|
||||
<li>Om du har tillgång till din php.ini-fil så kan du ändra inställningen för <b>memory limit</b> till något i stil med 16M. Om du inte har tillgång själv så kan du kanske be din systemadministratör att göra detta åt dig.</li>
|
||||
<li>På en del PHP-servrar kan du skapa en .htaccess-fil i Moodle-katalogen som innehåller den här raden: <blockquote>php_value memory_limit 16M</blockquote>.<br />Detta kan dock på en del servrar leda till att <b>inga</b> PHP-sidor fungerar. (Du får Error-sidor istället för de riktiga) så då får du ta bort .htaccess-filen.</li>
|
||||
$string['memorylimithelp'] = '<p>PHP-minnesgränsen för servern är för närvarande inställd på {$a}.</p>
|
||||
|
||||
<p>Detta kan leda till att Moodle får minnesproblem senare, särskilt om du har många moduler aktiverade och/eller många användare.</p>
|
||||
|
||||
<p>Vi rekommenderar att du konfigurerar PHP med en högre gräns om möjligt, till exempel 40M.
|
||||
Det finns flera sätt som du kan prova att göra detta på:</p>
|
||||
<ol>
|
||||
<li>Om du kan, kompilera om PHP med <code>--enable-memory-limit</code>.
|
||||
Detta gör det möjligt för Moodle att själv ställa in minnesgränsen.</li>
|
||||
<li>Om du har tillgång till din php.ini fil kan du ändra <code>memory_limit</code>
|
||||
inställningen till t.ex. 40M. Om du inte har åtkomst kan du be administratören göra detta åt dig.</li>
|
||||
<li>På vissa PHP-servrar kan du skapa en HTACCESS-fil i Moodle-katalogen
|
||||
som innehåller denna rad:
|
||||
<blockquote><div>php_value memory_limit 40M</div></blockquote>
|
||||
<p>Dock kan detta för vissa servrar resultera i att <b>alla</b> PHP-sidor slutar fungera (du får felmeddelande då du försöker visa dem). I dessa fall behöver du ta bort .htaccess-filen.</p></li>
|
||||
</ol>';
|
||||
$string['paths'] = 'Vägar';
|
||||
$string['paths'] = 'Sökvägar';
|
||||
$string['pathserrcreatedataroot'] = 'Datakatalogen ({$a->dataroot}) går inte att skapa med hjälp av installeraren.';
|
||||
$string['pathshead'] = 'Bekräfta vägar';
|
||||
$string['pathsrodataroot'] = 'Det går inte att skriva till katalogen för dataroot';
|
||||
$string['pathsroparentdataroot'] = 'Det går inte att skriva till föräldrakatalogen ({$a->parent}). Det går inte att installera datakatalogen ({$a->dataroot}) med hjälp av installeraren. ';
|
||||
$string['pathssubdirroot'] = 'Full sökväg till installationen av Moodle.';
|
||||
$string['pathsunsecuredataroot'] = 'Placeringen av dataroot är inte säker';
|
||||
$string['pathswrongadmindir'] = 'Katalogen för admin saknas';
|
||||
$string['phpextension'] = '{$a} PHP tillägg';
|
||||
$string['pathshead'] = 'Bekräfta sökvägar';
|
||||
$string['pathsrodataroot'] = 'Det går inte att skriva till dataroot-katalogen.';
|
||||
$string['pathsroparentdataroot'] = 'Överliggande katalog ({$a->parent}) är inte skrivbar. Installationsprogrammet kan inte skapa dataroot-katalogen ({$a->dataroot}).';
|
||||
$string['pathssubdirroot'] = '<p>Fullständig sökväg till katalogen som innehåller Moodle-koden.</p>';
|
||||
$string['pathsunsecuredataroot'] = 'Platsen för dataroot är inte säker';
|
||||
$string['pathswrongadmindir'] = 'Admin-katalogen saknas';
|
||||
$string['phpextension'] = '{$a} PHP-tillägg';
|
||||
$string['phpversion'] = 'PHP-version';
|
||||
$string['phpversionhelp'] = '<p>Moodle kräver minst PHP 4.3.0 eller 5.1.0 (det finns ett antal kända problem med 5.0.x)</p>
|
||||
<p>Du använder f n version {$a}</p>
|
||||
<p>Du måste uppgradera PHP eller flytta till en värd som har en nyare version av PHP! Om Du har 5.0.x så bör Du nedgradera till 4.4.x.</p>';
|
||||
$string['phpversionhelp'] = '<p>Moodle kräver minst PHP-version 5.6.5 eller 7.1 (7.0.x har vissa motorbegränsningar).</p>
|
||||
<p>Du använder för närvarande version {$a}.</p>
|
||||
<p>Du måste uppgradera PHP eller flytta till en server med en nyare version av PHP.</p>';
|
||||
$string['welcomep10'] = '{$a->installername} ({$a->installerversion})';
|
||||
$string['welcomep20'] = 'Du ser detta eftersom du framgångsrikt har installerat och börjat använda språkpaketet <strong>{$a->packname} {$a->packversion}</strong> på din dator. Gratulerar!';
|
||||
$string['welcomep30'] = 'I den här versionen av <strong>{$a->installername}</strong> ingår de applikationer som kan skapa en miljö som <strong>Moodle</strong> kan fungera i, nämligen:';
|
||||
$string['welcomep20'] = 'Du ser denna sida eftersom installationen av <strong>{$a->packname} {$a->packversion}</strong>-paketet lyckades.';
|
||||
$string['welcomep30'] = 'Den här versionen av <strong>{$a->installername}</strong> innehåller program för att skapa en miljö där <strong>Moodle</strong> kommer att fungera, nämligen:';
|
||||
$string['welcomep40'] = 'I paketet ingår även <strong>Moodle {$a->moodlerelease} ({$a->moodleversion})</strong>.';
|
||||
$string['welcomep50'] = 'Användningen av alla applikationerna i det här paketet regleras av deras respektive licenser. Det kompletta paketet <strong>{$a->installername}</strong> är <a href="http://www.opensource.org/docs/definition_plain.html">Öppen källkod </a> och distribueras
|
||||
under <a href="http://www.gnu.org/copyleft/gpl.html">GPL</a> licensen.';
|
||||
$string['welcomep60'] = 'De följande sidorna leder dig genom några enkla steg för att konfigurera och installera <strong>Moodle</strong> på din dator, du kan acceptera standardinställningarna eller, alternativt, modifiera dem som det passar dina egna behov.';
|
||||
$string['welcomep70'] = 'Klicka på knappen "Nästa" här nedan för att fortsätta installationen av <strong>Moodle</strong>';
|
||||
$string['welcomep60'] = 'Följande sidor leder dig genom några enkla steg för att konfigurera och installera <strong>Moodle</strong> på din dator. Du kan acceptera standardinställningarna eller, alternativt, modifiera dem för att passa dina egna behov.';
|
||||
$string['welcomep70'] = 'Klicka på "Nästa" här nedan för att fortsätta installationen av <strong>Moodle</strong>.';
|
||||
$string['wwwroot'] = 'Webbadress';
|
||||
|
||||
@@ -32,5 +32,5 @@ defined('MOODLE_INTERNAL') || die();
|
||||
$string['language'] = 'Språk';
|
||||
$string['moodlelogo'] = 'Moodie-logotyp';
|
||||
$string['next'] = 'Nästa';
|
||||
$string['previous'] = 'Tidigare';
|
||||
$string['previous'] = 'Föregående';
|
||||
$string['reload'] = 'Uppdatera';
|
||||
|
||||
@@ -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'] = 'Tetun Dili';
|
||||
@@ -0,0 +1,35 @@
|
||||
<?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'] = 'Tokples';
|
||||
$string['moodlelogo'] = 'Moodle logo';
|
||||
$string['next'] = 'Narap\'la';
|
||||
$string['previous'] = 'Bipo';
|
||||
@@ -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'] = 'Yorùbá';
|
||||
@@ -1201,6 +1201,7 @@ $string['unsupportedphpversion71'] = 'PHP version 7.1 is not supported.';
|
||||
$string['unsupportedphpversion72'] = 'PHP version 7.2 is not supported.';
|
||||
$string['unsupportedphpversion73'] = 'PHP version 7.3 is not supported.';
|
||||
$string['unsupportedphpversion74'] = 'PHP version 7.4 is not supported.';
|
||||
$string['unsupportedphpversion80'] = 'PHP version 8.0 is not supported.';
|
||||
$string['unsuspenduser'] = 'Activate user account';
|
||||
$string['updateaccounts'] = 'Update existing accounts';
|
||||
$string['updatecomponent'] = 'Update component';
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
define(["jquery","core/config","core/notification","core/templates","core/yui"],function(a,b,c,d,e){var f,g,h,i,j={ADDROLE:"a.allowlink, a.prohibitlink",REMOVEROLE:"a.preventlink, a.unprohibitlink",UNPROHIBIT:"a.unprohibitlink"},k=a.Event("rolesloaded"),l=null,m=function(){var d={contextid:f,getroles:1,sesskey:b.sesskey};a.post(h+"roles/ajax.php",d,null,"json").done(function(b){try{i=b,m=function(){a("body").trigger(k)},m()}catch(d){c.exception(d)}}).fail(function(a,b,d){c.exception(d)})},n=function(b,e,g){var j={contextid:f,roleid:e,sesskey:M.cfg.sesskey,action:g,capability:b.data("name")};a.post(h+"roles/ajax.php",j,null,"json").done(function(f){var g=f;try{var j={rolename:i[e],roleid:e,adminurl:h,imageurl:M.util.image_url("t/delete","moodle")};switch(g){case"allow":j.spanclass="allowed",j.linkclass="preventlink",j.action="prevent",j.icon="t/delete";break;case"prohibit":j.spanclass="forbidden",j.linkclass="unprohibitlink",j.action="unprohibit",j.icon="t/delete";break;case"prevent":return void b.find('a[data-role-id="'+e+'"]').first().closest(".allowed").remove();case"unprohibit":return void b.find('a[data-role-id="'+e+'"]').first().closest(".forbidden").remove();default:return}d.render("core/permissionmanager_role",j).done(function(c){if("allow"==g)a(c).insertBefore(b.find(".allowmore:first"));else if("prohibit"==g){a(c).insertBefore(b.find(".prohibitmore:first"));var d=b.find(".allowedroles").first().find('a[data-role-id="'+e+'"]');d&&d.first().closest(".allowed").remove()}l.hide()}).fail(c.exception)}catch(k){c.exception(k)}}).fail(function(a,b,d){c.exception(d)})},o=function(b){b.preventDefault(),e.use("moodle-core-notification-dialogue",function(){a("body").one("rolesloaded",function(){var e=a(b.currentTarget),f=e.data("action"),h=e.closest("tr.rolecap"),k={cap:h.data("humanname"),context:g},m=M.util.get_string("role"+f+"info","core_role",k);null===l&&(l=new M.core.dialogue({draggable:!0,modal:!0,closeButton:!0,width:"450px"})),l.set("headerContent",M.util.get_string("role"+f+"header","core_role"));var o,p,q=[];switch(f){case"allow":p=h.find(j.REMOVEROLE);break;case"prohibit":p=h.find(j.UNPROHIBIT)}for(o in i){var r="",s=p.filter("[data-role-id='"+o+"']").length;s&&(r="disabled");var t={roleid:o,rolename:i[o],disabled:r};q.push(t)}d.render("core/permissionmanager_panelcontent",{message:m,roles:q}).done(function(b){l.set("bodyContent",b),l.show(),a("div.role_buttons").delegate("input","click",function(b){var c=a(b.currentTarget).data("role-id");n(h,c,f)})}).fail(c.exception)})}),m()},p=function(b){b.preventDefault(),a("body").one("rolesloaded",function(){var d=a(b.currentTarget),e=d.data("action"),f=d.data("role-id"),h=d.closest("tr.rolecap"),j={role:i[f],cap:h.data("humanname"),context:g};c.confirm(M.util.get_string("confirmunassigntitle","core_role"),M.util.get_string("confirmrole"+e,"core_role",j),M.util.get_string("confirmunassignyes","core_role"),M.util.get_string("confirmunassignno","core_role"),function(){n(h,f,e)})}),m()};return{initialize:function(b){f=b.contextid,g=b.contextname,h=b.adminurl;var c=a("body");c.delegate(j.ADDROLE,"click",o),c.delegate(j.REMOVEROLE,"click",p)}}});
|
||||
define(["jquery","core/config","core/notification","core/templates","core/yui"],function(a,b,c,d,e){var f,g,h,i,j={ADDROLE:"a.allowlink, a.prohibitlink",REMOVEROLE:"a.preventlink, a.unprohibitlink",UNPROHIBIT:"a.unprohibitlink"},k=a.Event("rolesloaded"),l=null,m=function(){var d={contextid:f,getroles:1,sesskey:b.sesskey};a.post(h+"roles/ajax.php",d,null,"json").done(function(b){try{i=b,m=function(){a("body").trigger(k)},m()}catch(d){c.exception(d)}}).fail(function(a,b,d){c.exception(d)})},n=function(b,e,g){var j={contextid:f,roleid:e,sesskey:M.cfg.sesskey,action:g,capability:b.data("name")};a.post(h+"roles/ajax.php",j,null,"json").done(function(f){var g=f;try{var j={rolename:i[e],roleid:e,adminurl:h,imageurl:M.util.image_url("t/delete","moodle")};switch(g){case"allow":j.spanclass="allowed",j.linkclass="preventlink",j.action="prevent",j.icon="t/delete";break;case"prohibit":j.spanclass="forbidden",j.linkclass="unprohibitlink",j.action="unprohibit",j.icon="t/delete";break;case"prevent":return void b.find('a[data-role-id="'+e+'"]').first().closest(".allowed").remove();case"unprohibit":return void b.find('a[data-role-id="'+e+'"]').first().closest(".forbidden").remove();default:return}d.render("core/permissionmanager_role",j).done(function(c){if("allow"==g)a(c).insertBefore(b.find(".allowmore").first());else if("prohibit"==g){a(c).insertBefore(b.find(".prohibitmore").first());var d=b.find(".allowedroles").first().find('a[data-role-id="'+e+'"]');d&&d.first().closest(".allowed").remove()}l.hide()}).fail(c.exception)}catch(k){c.exception(k)}}).fail(function(a,b,d){c.exception(d)})},o=function(b){b.preventDefault(),e.use("moodle-core-notification-dialogue",function(){a("body").one("rolesloaded",function(){var e=a(b.currentTarget),f=e.data("action"),h=e.closest("tr.rolecap"),k={cap:h.data("humanname"),context:g},m=M.util.get_string("role"+f+"info","core_role",k);null===l&&(l=new M.core.dialogue({draggable:!0,modal:!0,closeButton:!0,width:"450px"})),l.set("headerContent",M.util.get_string("role"+f+"header","core_role"));var o,p,q=[];switch(f){case"allow":p=h.find(j.REMOVEROLE);break;case"prohibit":p=h.find(j.UNPROHIBIT)}for(o in i){var r="",s=p.filter("[data-role-id='"+o+"']").length;s&&(r="disabled");var t={roleid:o,rolename:i[o],disabled:r};q.push(t)}d.render("core/permissionmanager_panelcontent",{message:m,roles:q}).done(function(b){l.set("bodyContent",b),l.show(),a("div.role_buttons").delegate("input","click",function(b){var c=a(b.currentTarget).data("role-id");n(h,c,f)})}).fail(c.exception)})}),m()},p=function(b){b.preventDefault(),a("body").one("rolesloaded",function(){var d=a(b.currentTarget),e=d.data("action"),f=d.data("role-id"),h=d.closest("tr.rolecap"),j={role:i[f],cap:h.data("humanname"),context:g};c.confirm(M.util.get_string("confirmunassigntitle","core_role"),M.util.get_string("confirmrole"+e,"core_role",j),M.util.get_string("confirmunassignyes","core_role"),M.util.get_string("confirmunassignno","core_role"),function(){n(h,f,e)})}),m()};return{initialize:function(b){f=b.contextid,g=b.contextname,h=b.adminurl;var c=a("body");c.delegate(j.ADDROLE,"click",o),c.delegate(j.REMOVEROLE,"click",p)}}});
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
define(["jquery"],function(a){var b=/(\s*\S+|\s)$/,c=/^(\S*)/,d=/\s/,e=function(a,b){if(null==this)throw TypeError();var c=String(a),d=c.length,e=b?Number(b):0;if(e!=e&&(e=0),e<=-1||e>=d)return"";e=0|e;var f,g=c.charCodeAt(e),h=e+1,i=1;return g>=55296&&g<=56319&&d>h&&(f=c.charCodeAt(h),f>=56320&&f<=57343&&(i=2)),i},f=function(a){for(var b=0,c=0;c<a.length;c+=e(a,c))b++;return b},g=function(a,b){if(!a.length)return 0;var c=0,d=0;do c+=e(a,c),d++;while(c<a.length&&d<b);return c};return a.truncate=function(b,c){return a("<div></div>").append(b).truncate(c).html()},a.fn.truncate=function(e){a.isNumeric(e)&&(e={length:e});var h=a.extend({},a.truncate.defaults,e);return this.each(function(){var e=a(this);h.noBreaks&&e.find("br").replaceWith(" ");var i=h.ellipsis.length,j=e.text(),k=f(j),l=k-h.length+i;if(!(k<h.length)){if(h.stripTags&&e.text(j),h.words&&l>0){var m=j.slice(0,g(j,h.length-i)+1),n=m.replace(b,""),o=f(n),p=!m.match(d);l=h.keepFirstWord&&0===o?k-f(c.exec(j)[0])-i:p&&0===o?k-h.length+i:k-o-1}l>k&&(l=k-h.length),l<0||!l&&!h.truncated||a.each(e.contents().get().reverse(),function(b,c){var d=a(c),e=d.text(),j=f(e);if(j<=l)return h.truncated=!0,l-=j,void d.remove();if(3===c.nodeType){var k=j-l;return k=k>=0?g(e,k):0,a(c.splitText(k)).replaceWith(h.ellipsis),!1}return d.truncate(a.extend(h,{length:j-l+i})),!1})}})},a.truncate.defaults={stripTags:!1,words:!1,keepFirstWord:!1,noBreaks:!1,length:1/0,ellipsis:"…"},{truncate:a.truncate}});
|
||||
define(["jquery"],function(a){var b=/(\s*\S+|\s)$/,c=/^(\S*)/,d=/\s/,e=function(a,b){if(null==this)throw TypeError();var c=String(a),d=c.length,e=b?Number(b):0;if(e!=e&&(e=0),e<=-1||e>=d)return"";e=0|e;var f,g=c.charCodeAt(e),h=e+1,i=1;return g>=55296&&g<=56319&&d>h&&(f=c.charCodeAt(h),f>=56320&&f<=57343&&(i=2)),i},f=function(a){for(var b=0,c=0;c<a.length;c+=e(a,c))b++;return b},g=function(a,b){if(!a.length)return 0;var c=0,d=0;do c+=e(a,c),d++;while(c<a.length&&d<b);return c};return a.truncate=function(b,c){return a("<div></div>").append(b).truncate(c).html()},a.fn.truncate=function(e){isNaN(parseFloat(e))||(e={length:e});var h=a.extend({},a.truncate.defaults,e);return this.each(function(){var e=a(this);h.noBreaks&&e.find("br").replaceWith(" ");var i=h.ellipsis.length,j=e.text(),k=f(j),l=k-h.length+i;if(!(k<h.length)){if(h.stripTags&&e.text(j),h.words&&l>0){var m=j.slice(0,g(j,h.length-i)+1),n=m.replace(b,""),o=f(n),p=!m.match(d);l=h.keepFirstWord&&0===o?k-f(c.exec(j)[0])-i:p&&0===o?k-h.length+i:k-o-1}l>k&&(l=k-h.length),l<0||!l&&!h.truncated||a.each(e.contents().get().reverse(),function(b,c){var d=a(c),e=d.text(),j=f(e);if(j<=l)return h.truncated=!0,l-=j,void d.remove();if(3===c.nodeType){var k=j-l;return k=k>=0?g(e,k):0,a(c.splitText(k)).replaceWith(h.ellipsis),!1}return d.truncate(a.extend(h,{length:j-l+i})),!1})}})},a.truncate.defaults={stripTags:!1,words:!1,keepFirstWord:!1,noBreaks:!1,length:1/0,ellipsis:"…"},{truncate:a.truncate}});
|
||||
@@ -37,7 +37,7 @@ define(['jquery', 'core/log', 'core/str', 'core/templates', 'core/notification']
|
||||
UP: 38
|
||||
};
|
||||
|
||||
var uniqueId = $.now();
|
||||
var uniqueId = Date.now();
|
||||
|
||||
/**
|
||||
* Make an item in the selection list "active".
|
||||
|
||||
@@ -124,9 +124,9 @@ define(['jquery', 'core/config', 'core/notification', 'core/templates', 'core/yu
|
||||
templates.render('core/permissionmanager_role', templatedata)
|
||||
.done(function(content) {
|
||||
if (action == 'allow') {
|
||||
$(content).insertBefore(row.find('.allowmore:first'));
|
||||
$(content).insertBefore(row.find('.allowmore').first());
|
||||
} else if (action == 'prohibit') {
|
||||
$(content).insertBefore(row.find('.prohibitmore:first'));
|
||||
$(content).insertBefore(row.find('.prohibitmore').first());
|
||||
// Remove allowed link
|
||||
var allowedLink = row.find('.allowedroles').first().find('a[data-role-id="' + roleid + '"]');
|
||||
if (allowedLink) {
|
||||
|
||||
@@ -118,7 +118,7 @@ define(['jquery'], function($) {
|
||||
|
||||
// Truncate the contents of an element in place.
|
||||
$.fn.truncate = function(options) {
|
||||
if ($.isNumeric(options)) options = {length: options};
|
||||
if (!isNaN(parseFloat(options))) options = {length: options};
|
||||
var o = $.extend({}, $.truncate.defaults, options);
|
||||
|
||||
return this.each(function() {
|
||||
|
||||
@@ -700,7 +700,7 @@ class core_user {
|
||||
$fields['lastlogin'] = array('type' => PARAM_INT, 'null' => NULL_NOT_ALLOWED);
|
||||
$fields['currentlogin'] = array('type' => PARAM_INT, 'null' => NULL_NOT_ALLOWED);
|
||||
$fields['lastip'] = array('type' => PARAM_NOTAGS, 'null' => NULL_NOT_ALLOWED);
|
||||
$fields['secret'] = array('type' => PARAM_RAW, 'null' => NULL_NOT_ALLOWED);
|
||||
$fields['secret'] = array('type' => PARAM_ALPHANUM, 'null' => NULL_NOT_ALLOWED);
|
||||
$fields['picture'] = array('type' => PARAM_INT, 'null' => NULL_NOT_ALLOWED);
|
||||
$fields['url'] = array('type' => PARAM_URL, 'null' => NULL_NOT_ALLOWED);
|
||||
$fields['description'] = array('type' => PARAM_RAW, 'null' => NULL_ALLOWED);
|
||||
|
||||
@@ -1639,3 +1639,14 @@ function restrict_php_version_73(&$result) {
|
||||
function restrict_php_version_74(&$result) {
|
||||
return restrict_php_version($result, '7.4');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the current PHP version is greater than or equal to
|
||||
* PHP version 8.0
|
||||
*
|
||||
* @param object $result an environment_results instance
|
||||
* @return bool result of version check
|
||||
*/
|
||||
function restrict_php_version_80($result) {
|
||||
return restrict_php_version($result, '8.0');
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
define(["jquery","core/log","core/str","core/modal_factory","core/modal_events","core/ajax","core/templates","core/tree"],function(a,b,c,d,e,f,g,h){"use strict";var i=function(c,d,e,f){if(this.elementId=c,this.elementLabel=d,this.onlyTypes=e,this.allowAll=f,this.inputField=a("#"+c),this.wrapperBrowserTrigger=a('[data-filetypesbrowser="'+c+'"]'),this.wrapperDescriptions=a('[data-filetypesdescriptions="'+c+'"]'),this.wrapperBrowserTrigger.length)return this.inputField.length&&this.wrapperDescriptions.length?void this.prepareBrowserTrigger().then(function(){return this.prepareBrowserModal()}.bind(this)).then(function(){return this.prepareBrowserTree()}.bind(this)):void b.error("core_form/filetypes: Unexpected DOM structure, unable to enhance filetypes field "+c)};return i.prototype.prepareBrowserTrigger=function(){return g.render("core_form/filetypes-trigger",{}).then(function(a){this.wrapperBrowserTrigger.html(a),this.browserTrigger=this.wrapperBrowserTrigger.find('[data-filetypeswidget="browsertrigger"]')}.bind(this))},i.prototype.prepareBrowserModal=function(){return d.create({type:d.types.SAVE_CANCEL,title:this.elementLabel}).then(function(a){this.browserModal=a}.bind(this)).then(function(){this.browserModal.getRoot().on(e.hidden,function(){this.browserTrigger.focus()}.bind(this)),this.browserModal.getRoot().on(e.save,function(){this.saveBrowserModal()}.bind(this))}.bind(this))},i.prototype.prepareBrowserTree=function(){return this.browserTrigger.on("click",function(b){if(b.preventDefault(),!this.inputField.is("[disabled]")){var c=this.loadBrowserModalBody();c.then(function(){this.browserTree=new h(this.browserModal.getBody()),this.browserTree.handleKeyDown=function(a,b){b.keyCode==this.browserTree.keys.enter||b.keyCode==this.browserTree.keys.space?(b.preventDefault(),b.stopPropagation(),this.toggleCheckbox(a.attr("data-filetypesbrowserkey"))):h.prototype.handleKeyDown.call(this.browserTree,a,b)}.bind(this),this.allowAll&&(this.hideOrShowItemsDependingOnAllowAll(this.browserModal.getRoot().find('input[type="checkbox"][data-filetypesbrowserkey="*"]:first')),this.browserModal.getRoot().on("change",'input[type="checkbox"][data-filetypesbrowserkey="*"]',function(b){this.hideOrShowItemsDependingOnAllowAll(a(b.currentTarget))}.bind(this))),this.browserModal.getRoot().on("change",'input[type="checkbox"][data-filetypesbrowserkey]',function(b){var c=a(b.currentTarget),d=c.attr("data-filetypesbrowserkey");this.browserModal.getRoot().find('input[type="checkbox"][data-filetypesbrowserkey="'+d+'"]').prop("checked",c.prop("checked"))}.bind(this))}.bind(this)).then(function(){this.browserModal.show()}.bind(this)),this.browserModal.setBody(c)}}.bind(this)),a.when()},i.prototype.loadBrowserModalBody=function(){var a={onlytypes:this.onlyTypes.join(),allowall:this.allowAll,current:this.inputField.val()};return f.call([{methodname:"core_form_get_filetypes_browser_data",args:a}])[0].then(function(a){return g.render("core_form/filetypes-browser",{elementid:this.elementId,groups:a.groups})}.bind(this))},i.prototype.toggleCheckbox=function(a){var b=this.browserModal.getRoot().find('input[type="checkbox"][data-filetypesbrowserkey="'+a+'"]:first');b.prop("checked",!b.prop("checked"))},i.prototype.saveBrowserModal=function(){if(this.allowAll){var b=this.browserModal.getRoot().find('input[type="checkbox"][data-filetypesbrowserkey="*"]');if(b.length&&b.prop("checked"))return this.inputField.val("*"),void this.updateDescriptions(["*"])}var c=[];this.browserModal.getRoot().find('input[type="checkbox"]').each(function(){var b=a(this),d=b.attr("data-filetypesbrowserkey");b.prop("checked")&&c.push(d)}),c=c.filter(function(a,b,c){return c.indexOf(a)==b}),this.inputField.val(c.join(" ")),this.updateDescriptions(c)},i.prototype.updateDescriptions=function(a){var b=[];a.forEach(function(a){b.push({description:this.browserModal.getRoot().find('[data-filetypesname="'+a+'"]:first').text().trim(),extensions:this.browserModal.getRoot().find('[data-filetypesextensions="'+a+'"]:first').text().trim()})}.bind(this));var c={hasdescriptions:b.length>0,descriptions:b};return g.render("core_form/filetypes-descriptions",c).then(function(a){this.wrapperDescriptions.html(a)}.bind(this))},i.prototype.hideOrShowItemsDependingOnAllowAll=function(a){var b=this.browserModal.getRoot().find('[role="treeitem"][data-filetypesbrowserkey!="*"]');a.prop("checked")?b.hide():b.show()},{init:function(a,b,c,d){new i(a,b,c,d)}}});
|
||||
define(["jquery","core/log","core/str","core/modal_factory","core/modal_events","core/ajax","core/templates","core/tree"],function(a,b,c,d,e,f,g,h){"use strict";var i=function(c,d,e,f){if(this.elementId=c,this.elementLabel=d,this.onlyTypes=e,this.allowAll=f,this.inputField=a("#"+c),this.wrapperBrowserTrigger=a('[data-filetypesbrowser="'+c+'"]'),this.wrapperDescriptions=a('[data-filetypesdescriptions="'+c+'"]'),this.wrapperBrowserTrigger.length)return this.inputField.length&&this.wrapperDescriptions.length?void this.prepareBrowserTrigger().then(function(){return this.prepareBrowserModal()}.bind(this)).then(function(){return this.prepareBrowserTree()}.bind(this)):void b.error("core_form/filetypes: Unexpected DOM structure, unable to enhance filetypes field "+c)};return i.prototype.prepareBrowserTrigger=function(){return g.render("core_form/filetypes-trigger",{}).then(function(a){this.wrapperBrowserTrigger.html(a),this.browserTrigger=this.wrapperBrowserTrigger.find('[data-filetypeswidget="browsertrigger"]')}.bind(this))},i.prototype.prepareBrowserModal=function(){return d.create({type:d.types.SAVE_CANCEL,title:this.elementLabel}).then(function(a){this.browserModal=a}.bind(this)).then(function(){this.browserModal.getRoot().on(e.hidden,function(){this.browserTrigger.focus()}.bind(this)),this.browserModal.getRoot().on(e.save,function(){this.saveBrowserModal()}.bind(this))}.bind(this))},i.prototype.prepareBrowserTree=function(){return this.browserTrigger.on("click",function(b){if(b.preventDefault(),!this.inputField.is("[disabled]")){var c=this.loadBrowserModalBody();c.then(function(){this.browserTree=new h(this.browserModal.getBody()),this.browserTree.handleKeyDown=function(a,b){b.keyCode==this.browserTree.keys.enter||b.keyCode==this.browserTree.keys.space?(b.preventDefault(),b.stopPropagation(),this.toggleCheckbox(a.attr("data-filetypesbrowserkey"))):h.prototype.handleKeyDown.call(this.browserTree,a,b)}.bind(this),this.allowAll&&(this.hideOrShowItemsDependingOnAllowAll(this.browserModal.getRoot().find('input[type="checkbox"][data-filetypesbrowserkey="*"]').first()),this.browserModal.getRoot().on("change",'input[type="checkbox"][data-filetypesbrowserkey="*"]',function(b){this.hideOrShowItemsDependingOnAllowAll(a(b.currentTarget))}.bind(this))),this.browserModal.getRoot().on("change",'input[type="checkbox"][data-filetypesbrowserkey]',function(b){var c=a(b.currentTarget),d=c.attr("data-filetypesbrowserkey");this.browserModal.getRoot().find('input[type="checkbox"][data-filetypesbrowserkey="'+d+'"]').prop("checked",c.prop("checked"))}.bind(this))}.bind(this)).then(function(){this.browserModal.show()}.bind(this)),this.browserModal.setBody(c)}}.bind(this)),a.when()},i.prototype.loadBrowserModalBody=function(){var a={onlytypes:this.onlyTypes.join(),allowall:this.allowAll,current:this.inputField.val()};return f.call([{methodname:"core_form_get_filetypes_browser_data",args:a}])[0].then(function(a){return g.render("core_form/filetypes-browser",{elementid:this.elementId,groups:a.groups})}.bind(this))},i.prototype.toggleCheckbox=function(a){var b=this.browserModal.getRoot().find('input[type="checkbox"][data-filetypesbrowserkey="'+a+'"]').first();b.prop("checked",!b.prop("checked"))},i.prototype.saveBrowserModal=function(){if(this.allowAll){var b=this.browserModal.getRoot().find('input[type="checkbox"][data-filetypesbrowserkey="*"]');if(b.length&&b.prop("checked"))return this.inputField.val("*"),void this.updateDescriptions(["*"])}var c=[];this.browserModal.getRoot().find('input[type="checkbox"]').each(function(){var b=a(this),d=b.attr("data-filetypesbrowserkey");b.prop("checked")&&c.push(d)}),c=c.filter(function(a,b,c){return c.indexOf(a)==b}),this.inputField.val(c.join(" ")),this.updateDescriptions(c)},i.prototype.updateDescriptions=function(a){var b=[];a.forEach(function(a){b.push({description:this.browserModal.getRoot().find('[data-filetypesname="'+a+'"]').first().text().trim(),extensions:this.browserModal.getRoot().find('[data-filetypesextensions="'+a+'"]').first().text().trim()})}.bind(this));var c={hasdescriptions:b.length>0,descriptions:b};return g.render("core_form/filetypes-descriptions",c).then(function(a){this.wrapperDescriptions.html(a)}.bind(this))},i.prototype.hideOrShowItemsDependingOnAllowAll=function(a){var b=this.browserModal.getRoot().find('[role="treeitem"][data-filetypesbrowserkey!="*"]');a.prop("checked")?b.hide():b.show()},{init:function(a,b,c,d){new i(a,b,c,d)}}});
|
||||
@@ -151,7 +151,7 @@ define(['jquery', 'core/log', 'core/str', 'core/modal_factory', 'core/modal_even
|
||||
if (this.allowAll) {
|
||||
// Hide all other items if "All file types" is enabled.
|
||||
this.hideOrShowItemsDependingOnAllowAll(this.browserModal.getRoot()
|
||||
.find('input[type="checkbox"][data-filetypesbrowserkey="*"]:first'));
|
||||
.find('input[type="checkbox"][data-filetypesbrowserkey="*"]').first());
|
||||
// And do the same whenever we click that checkbox.
|
||||
this.browserModal.getRoot().on('change', 'input[type="checkbox"][data-filetypesbrowserkey="*"]', function(e) {
|
||||
this.hideOrShowItemsDependingOnAllowAll($(e.currentTarget));
|
||||
@@ -213,7 +213,7 @@ define(['jquery', 'core/log', 'core/str', 'core/modal_factory', 'core/modal_even
|
||||
*/
|
||||
FileTypes.prototype.toggleCheckbox = function(key) {
|
||||
|
||||
var checkbox = this.browserModal.getRoot().find('input[type="checkbox"][data-filetypesbrowserkey="' + key + '"]:first');
|
||||
var checkbox = this.browserModal.getRoot().find('input[type="checkbox"][data-filetypesbrowserkey="' + key + '"]').first();
|
||||
|
||||
checkbox.prop('checked', !checkbox.prop('checked'));
|
||||
};
|
||||
@@ -268,8 +268,8 @@ define(['jquery', 'core/log', 'core/str', 'core/modal_factory', 'core/modal_even
|
||||
|
||||
keys.forEach(function(key) {
|
||||
descriptions.push({
|
||||
description: this.browserModal.getRoot().find('[data-filetypesname="' + key + '"]:first').text().trim(),
|
||||
extensions: this.browserModal.getRoot().find('[data-filetypesextensions="' + key + '"]:first').text().trim()
|
||||
description: this.browserModal.getRoot().find('[data-filetypesname="' + key + '"]').first().text().trim(),
|
||||
extensions: this.browserModal.getRoot().find('[data-filetypesextensions="' + key + '"]').first().text().trim()
|
||||
});
|
||||
}.bind(this));
|
||||
|
||||
|
||||
Vendored
-4
File diff suppressed because one or more lines are too long
+1559
-940
File diff suppressed because it is too large
Load Diff
Vendored
+2
File diff suppressed because one or more lines are too long
@@ -36,7 +36,7 @@
|
||||
*/
|
||||
|
||||
$plugins = array(
|
||||
'jquery' => array('files' => array('jquery-3.2.1.min.js')),
|
||||
'jquery' => array('files' => array('jquery-3.5.1.min.js')),
|
||||
'ui' => array('files' => array('ui-1.12.1/jquery-ui.min.js')),
|
||||
'ui-css' => array('files' => array('ui-1.12.1/theme/smoothness/jquery-ui.min.css')),
|
||||
);
|
||||
|
||||
@@ -16,3 +16,8 @@ Description of import of various jQuery libraries into Moodle:
|
||||
6/ Update the version of jquery in core_privacy\local\request\moodle_content_writer::write_html_data()
|
||||
|
||||
Petr Skoda
|
||||
|
||||
Note: jQuery.trim(), jQuery.isFunction(), jQuery.isNumeric(), jQuery.type(), jQuery.now() functions
|
||||
and :first pseudo-class are deprecated. We use String.prototype.trim() and .first()
|
||||
in Moodle code instead. Please note that in third party libraries there are still usages of jQuery.trim
|
||||
for example xhprof and jQuery UI.
|
||||
@@ -205,7 +205,7 @@ function core_myprofile_navigation(core_user\output\myprofile\tree $tree, $user,
|
||||
|
||||
if (isset($identityfields['idnumber']) && $user->idnumber) {
|
||||
$node = new core_user\output\myprofile\node('contact', 'idnumber', get_string('idnumber'), null, null,
|
||||
$user->idnumber);
|
||||
s($user->idnumber));
|
||||
$tree->add_node($node);
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ var require = {
|
||||
waitSeconds : 0,
|
||||
|
||||
paths: {
|
||||
jquery: '[JSURL]lib/jquery/jquery-3.2.1.min[JSEXT]',
|
||||
jquery: '[JSURL]lib/jquery/jquery-3.5.1.min[JSEXT]',
|
||||
jqueryui: '[JSURL]lib/jquery/ui-1.12.1/jquery-ui.min[JSEXT]',
|
||||
jqueryprivate: '[JSURL]lib/requirejs/jquery-private[JSEXT]'
|
||||
},
|
||||
|
||||
@@ -865,6 +865,11 @@ class flexible_table {
|
||||
* build_table which calls this method.
|
||||
*/
|
||||
function other_cols($column, $row) {
|
||||
if (isset($row->$column) && ($column === 'email' || $column === 'idnumber') && !$this->is_downloading()) {
|
||||
// Columns email and idnumber may potentially contain malicious characters, escape them by default.
|
||||
// This function will not be executed if the child class implements col_email() or col_idnumber().
|
||||
return s($row->$column);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -158,7 +158,7 @@
|
||||
<location>jquery</location>
|
||||
<name>jQuery</name>
|
||||
<license>MIT</license>
|
||||
<version>3.2.1</version>
|
||||
<version>3.5.1</version>
|
||||
<licenseversion></licenseversion>
|
||||
</library>
|
||||
<library>
|
||||
|
||||
@@ -1401,7 +1401,7 @@ class assign_grading_table extends table_sql implements renderable {
|
||||
public function other_cols($colname, $row) {
|
||||
// For extra user fields the result is already in $row.
|
||||
if (empty($this->plugincache[$colname])) {
|
||||
return $row->$colname;
|
||||
return parent::other_cols($colname, $row);
|
||||
}
|
||||
|
||||
// This must be a plugin field.
|
||||
|
||||
@@ -323,7 +323,7 @@ class mod_feedback_complete_form extends moodleform {
|
||||
|
||||
// Set default value.
|
||||
if ($setdefaultvalue && ($tmpvalue = $this->get_item_value($item))) {
|
||||
$this->_form->setDefault($element->getName(), htmlspecialchars_decode($tmpvalue, ENT_QUOTES));
|
||||
$this->_form->setDefault($element->getName(), s($tmpvalue));
|
||||
}
|
||||
|
||||
// Freeze if needed.
|
||||
|
||||
@@ -191,7 +191,7 @@ class mod_feedback_responses_table extends table_sql {
|
||||
$itemobj = feedback_get_item_class($items[$matches[1]]->typ);
|
||||
return trim($itemobj->get_printval($items[$matches[1]], (object) ['value' => $row->$column] ));
|
||||
}
|
||||
return $row->$column;
|
||||
return parent::other_cols($column, $row);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
define(["jquery","core/notification","core/str","core/templates","mod_lti/form-field","core/modal_factory","core/modal_events"],function(a,b,c,d,e,f,g){var h,i,j={init:function(a,e,j){i=j;var k={url:a,postData:e},l=d.render("mod_lti/contentitem",k);return h?(h.setBody(l),void h.show()):void c.get_string("selectcontent","lti").then(function(a){return f.create({title:a,body:l,large:!0})}).then(function(a){h=a,a.getRoot().on(g.hidden,function(){a.setBody(""),b.fetchNotifications()}),a.show()})["catch"](b.exception)}},k=[new e("name",e.TYPES.TEXT,(!1),""),new e("introeditor",e.TYPES.EDITOR,(!1),""),new e("toolurl",e.TYPES.TEXT,(!0),""),new e("securetoolurl",e.TYPES.TEXT,(!0),""),new e("instructorchoiceacceptgrades",e.TYPES.CHECKBOX,(!0),(!0)),new e("instructorchoicesendname",e.TYPES.CHECKBOX,(!0),(!0)),new e("instructorchoicesendemailaddr",e.TYPES.CHECKBOX,(!0),(!0)),new e("instructorcustomparameters",e.TYPES.TEXT,(!0),""),new e("icon",e.TYPES.TEXT,(!0),""),new e("secureicon",e.TYPES.TEXT,(!0),""),new e("launchcontainer",e.TYPES.SELECT,(!0),0),new e("grade_modgrade_point",e.TYPES.TEXT,(!1),""),new e("cmidnumber",e.TYPES.TEXT,(!0),"")];return window.processContentItemReturnData=function(b){h&&h.hide();var c;for(c in k){var d=k[c],e=null;"undefined"!==a.type(b[d.name])&&(e=b[d.name]),d.setFieldValue(e)}i&&i()},j});
|
||||
define(["jquery","core/notification","core/str","core/templates","mod_lti/form-field","core/modal_factory","core/modal_events"],function(a,b,c,d,e,f,g){var h,i,j={init:function(a,e,j){i=j;var k={url:a,postData:e},l=d.render("mod_lti/contentitem",k);return h?(h.setBody(l),void h.show()):void c.get_string("selectcontent","lti").then(function(a){return f.create({title:a,body:l,large:!0})}).then(function(a){h=a,a.getRoot().on(g.hidden,function(){a.setBody(""),b.fetchNotifications()}),a.show()})["catch"](b.exception)}},k=[new e("name",e.TYPES.TEXT,(!1),""),new e("introeditor",e.TYPES.EDITOR,(!1),""),new e("toolurl",e.TYPES.TEXT,(!0),""),new e("securetoolurl",e.TYPES.TEXT,(!0),""),new e("instructorchoiceacceptgrades",e.TYPES.CHECKBOX,(!0),(!0)),new e("instructorchoicesendname",e.TYPES.CHECKBOX,(!0),(!0)),new e("instructorchoicesendemailaddr",e.TYPES.CHECKBOX,(!0),(!0)),new e("instructorcustomparameters",e.TYPES.TEXT,(!0),""),new e("icon",e.TYPES.TEXT,(!0),""),new e("secureicon",e.TYPES.TEXT,(!0),""),new e("launchcontainer",e.TYPES.SELECT,(!0),0),new e("grade_modgrade_point",e.TYPES.TEXT,(!1),""),new e("cmidnumber",e.TYPES.TEXT,(!0),"")];return window.processContentItemReturnData=function(a){h&&h.hide();var b;for(b in k){var c=k[b],d=null;"undefined"!=typeof a[c.name]&&(d=a[c.name]),c.setFieldValue(d)}i&&i()},j});
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
define(["jquery"],function(a){var b=function(a,b,c,d){this.name=a,this.id="id_"+this.name,this.selector="#"+this.id,this.type=b,this.resetIfUndefined=c,this.defaultValue=d};return b.TYPES={TEXT:1,SELECT:2,CHECKBOX:3,EDITOR:4},b.prototype.setFieldValue=function(c){if(null===c){if(!this.resetIfUndefined)return;c=this.defaultValue}switch(this.type){case b.TYPES.CHECKBOX:c?a(this.selector).prop("checked",!0):a(this.selector).prop("checked",!1);break;case b.TYPES.EDITOR:if("undefined"!==a.type(c.text)){var d=a(this.selector+"editable");d.length?d.html(c.text):"undefined"!=typeof tinyMCE&&tinyMCE.execInstanceCommand(this.id,"mceInsertContent",!1,c.text),a(this.selector).val(c.text)}break;default:a(this.selector).val(c)}},b});
|
||||
define(["jquery"],function(a){var b=function(a,b,c,d){this.name=a,this.id="id_"+this.name,this.selector="#"+this.id,this.type=b,this.resetIfUndefined=c,this.defaultValue=d};return b.TYPES={TEXT:1,SELECT:2,CHECKBOX:3,EDITOR:4},b.prototype.setFieldValue=function(c){if(null===c){if(!this.resetIfUndefined)return;c=this.defaultValue}switch(this.type){case b.TYPES.CHECKBOX:c?a(this.selector).prop("checked",!0):a(this.selector).prop("checked",!1);break;case b.TYPES.EDITOR:if("undefined"!=typeof c.text){var d=a(this.selector+"editable");d.length?d.html(c.text):"undefined"!=typeof tinyMCE&&tinyMCE.execInstanceCommand(this.id,"mceInsertContent",!1,c.text),a(this.selector).val(c.text)}break;default:a(this.selector).val(c)}},b});
|
||||
+1
-1
@@ -1 +1 @@
|
||||
define(["jquery","core/ajax","core/notification","core/templates","mod_lti/events","mod_lti/keys","mod_lti/tool_type","mod_lti/tool_proxy","core/str"],function(a,b,c,d,e,f,g,h,i){var j={EXTERNAL_REGISTRATION_CONTAINER:"#external-registration-container",EXTERNAL_REGISTRATION_PAGE_CONTAINER:"#external-registration-page-container",CARTRIDGE_REGISTRATION_CONTAINER:"#cartridge-registration-container",CARTRIDGE_REGISTRATION_FORM:"#cartridge-registration-form",ADD_TOOL_FORM:"#add-tool-form",TOOL_LIST_CONTAINER:"#tool-list-container",TOOL_CREATE_BUTTON:"#tool-create-button",REGISTRATION_CHOICE_CONTAINER:"#registration-choice-container",TOOL_URL:"#tool-url"},k=function(){return a(j.TOOL_CREATE_BUTTON)},l=function(){return a(j.TOOL_LIST_CONTAINER)},m=function(){return a(j.EXTERNAL_REGISTRATION_CONTAINER)},n=function(){return a(j.CARTRIDGE_REGISTRATION_CONTAINER)},o=function(){return a(j.REGISTRATION_CHOICE_CONTAINER)},p=function(){return a(j.TOOL_URL).val()},q=function(){m().addClass("hidden")},r=function(){n().addClass("hidden")},s=function(){o().addClass("hidden")},t=function(){r(),s(),m().removeClass("hidden"),w(m())},u=function(a){q(),s(),n().removeClass("hidden"),n().find(j.CARTRIDGE_REGISTRATION_FORM).attr("data-cartridge-url",a),w(n())},v=function(){q(),r(),o().removeClass("hidden"),w(o())},w=function(a){var b=a.children().detach();b.appendTo(a)},x=function(){l().addClass("hidden")},y=function(){l().removeClass("hidden")},z=function(a){var b=a.error?"error":"success";c.addNotification({message:a.message,type:b})},A=function(a){a.addClass("loading")},B=function(a){a.removeClass("loading")},C=function(){var b=a.Deferred(),e=l();A(e),a.when(g.query(),h.query({orphanedonly:!0})).done(function(a,c){d.render("mod_lti/tool_list",{tools:a,proxies:c}).done(function(a,c){e.empty(),e.append(a),d.runTemplateJS(c),b.resolve()}).fail(b.reject)}).fail(b.reject),b.fail(c.exception).always(function(){B(e)})},D=function(){var b=a.trim(p());if(""===b)return a.Deferred().resolve();var d=k();A(d);var f=g.isCartridge(b);return f.always(function(){B(d)}),f.done(function(c){c.iscartridge?(a(j.TOOL_URL).val(""),a(document).trigger(e.START_CARTRIDGE_REGISTRATION,b)):a(document).trigger(e.START_EXTERNAL_REGISTRATION,{url:b})}),f.fail(function(){i.get_string("errorbadurl","mod_lti").done(function(b){a(document).trigger(e.REGISTRATION_FEEDBACK,{message:b,error:!0})}).fail(c.exception)}),f},E=function(){a(document).on(e.NEW_TOOL_TYPE,function(){C()}),a(document).on(e.START_EXTERNAL_REGISTRATION,function(){t(),a(j.TOOL_URL).val(""),x()}),a(document).on(e.STOP_EXTERNAL_REGISTRATION,function(){y(),v()}),a(document).on(e.START_CARTRIDGE_REGISTRATION,function(a,b){u(b)}),a(document).on(e.STOP_CARTRIDGE_REGISTRATION,function(){n().find(j.CARTRIDGE_REGISTRATION_FORM).removeAttr("data-cartridge-url"),v()}),a(document).on(e.REGISTRATION_FEEDBACK,function(a,b){z(b)});var b=a(j.ADD_TOOL_FORM);b.submit(function(a){a.preventDefault(),D()})};return{init:function(){E(),C()}}});
|
||||
define(["jquery","core/ajax","core/notification","core/templates","mod_lti/events","mod_lti/keys","mod_lti/tool_type","mod_lti/tool_proxy","core/str"],function(a,b,c,d,e,f,g,h,i){var j={EXTERNAL_REGISTRATION_CONTAINER:"#external-registration-container",EXTERNAL_REGISTRATION_PAGE_CONTAINER:"#external-registration-page-container",CARTRIDGE_REGISTRATION_CONTAINER:"#cartridge-registration-container",CARTRIDGE_REGISTRATION_FORM:"#cartridge-registration-form",ADD_TOOL_FORM:"#add-tool-form",TOOL_LIST_CONTAINER:"#tool-list-container",TOOL_CREATE_BUTTON:"#tool-create-button",REGISTRATION_CHOICE_CONTAINER:"#registration-choice-container",TOOL_URL:"#tool-url"},k=function(){return a(j.TOOL_CREATE_BUTTON)},l=function(){return a(j.TOOL_LIST_CONTAINER)},m=function(){return a(j.EXTERNAL_REGISTRATION_CONTAINER)},n=function(){return a(j.CARTRIDGE_REGISTRATION_CONTAINER)},o=function(){return a(j.REGISTRATION_CHOICE_CONTAINER)},p=function(){return a(j.TOOL_URL).val()},q=function(){m().addClass("hidden")},r=function(){n().addClass("hidden")},s=function(){o().addClass("hidden")},t=function(){r(),s(),m().removeClass("hidden"),w(m())},u=function(a){q(),s(),n().removeClass("hidden"),n().find(j.CARTRIDGE_REGISTRATION_FORM).attr("data-cartridge-url",a),w(n())},v=function(){q(),r(),o().removeClass("hidden"),w(o())},w=function(a){var b=a.children().detach();b.appendTo(a)},x=function(){l().addClass("hidden")},y=function(){l().removeClass("hidden")},z=function(a){var b=a.error?"error":"success";c.addNotification({message:a.message,type:b})},A=function(a){a.addClass("loading")},B=function(a){a.removeClass("loading")},C=function(){var b=a.Deferred(),e=l();A(e),a.when(g.query(),h.query({orphanedonly:!0})).done(function(a,c){d.render("mod_lti/tool_list",{tools:a,proxies:c}).done(function(a,c){e.empty(),e.append(a),d.runTemplateJS(c),b.resolve()}).fail(b.reject)}).fail(b.reject),b.fail(c.exception).always(function(){B(e)})},D=function(){var b=p().trim();if(""===b)return a.Deferred().resolve();var d=k();A(d);var f=g.isCartridge(b);return f.always(function(){B(d)}),f.done(function(c){c.iscartridge?(a(j.TOOL_URL).val(""),a(document).trigger(e.START_CARTRIDGE_REGISTRATION,b)):a(document).trigger(e.START_EXTERNAL_REGISTRATION,{url:b})}),f.fail(function(){i.get_string("errorbadurl","mod_lti").done(function(b){a(document).trigger(e.REGISTRATION_FEEDBACK,{message:b,error:!0})}).fail(c.exception)}),f},E=function(){a(document).on(e.NEW_TOOL_TYPE,function(){C()}),a(document).on(e.START_EXTERNAL_REGISTRATION,function(){t(),a(j.TOOL_URL).val(""),x()}),a(document).on(e.STOP_EXTERNAL_REGISTRATION,function(){y(),v()}),a(document).on(e.START_CARTRIDGE_REGISTRATION,function(a,b){u(b)}),a(document).on(e.STOP_CARTRIDGE_REGISTRATION,function(){n().find(j.CARTRIDGE_REGISTRATION_FORM).removeAttr("data-cartridge-url"),v()}),a(document).on(e.REGISTRATION_FEEDBACK,function(a,b){z(b)});var b=a(j.ADD_TOOL_FORM);b.submit(function(a){a.preventDefault(),D()})};return{init:function(){E(),C()}}});
|
||||
@@ -123,7 +123,7 @@ define(
|
||||
for (index in ltiFormFields) {
|
||||
var field = ltiFormFields[index];
|
||||
var value = null;
|
||||
if ($.type(returnData[field.name]) !== 'undefined') {
|
||||
if (typeof returnData[field.name] !== 'undefined') {
|
||||
value = returnData[field.name];
|
||||
}
|
||||
field.setFieldValue(value);
|
||||
|
||||
@@ -79,7 +79,7 @@ define(['jquery'],
|
||||
}
|
||||
break;
|
||||
case FormField.TYPES.EDITOR:
|
||||
if ($.type(value.text) !== 'undefined') {
|
||||
if (typeof value.text !== 'undefined') {
|
||||
/* global tinyMCE:false */
|
||||
|
||||
// Set text in editor's editable content, if applicable.
|
||||
|
||||
@@ -293,7 +293,7 @@ define(['jquery', 'core/ajax', 'core/notification', 'core/templates', 'mod_lti/e
|
||||
* @return {Promise} jQuery Deferred object
|
||||
*/
|
||||
var addTool = function() {
|
||||
var url = $.trim(getToolURL());
|
||||
var url = getToolURL().trim();
|
||||
|
||||
if (url === "") {
|
||||
return $.Deferred().resolve();
|
||||
|
||||
@@ -264,7 +264,7 @@ class quiz_overview_table extends quiz_attempts_report_table {
|
||||
*/
|
||||
public function other_cols($colname, $attempt) {
|
||||
if (!preg_match('/^qsgrade(\d+)$/', $colname, $matches)) {
|
||||
return null;
|
||||
return parent::other_cols($colname, $attempt);
|
||||
}
|
||||
$slot = $matches[1];
|
||||
|
||||
|
||||
@@ -135,7 +135,7 @@ class quiz_last_responses_table extends quiz_attempts_report_table {
|
||||
return $this->data_col($matches[1], 'rightanswer', $attempt);
|
||||
|
||||
} else {
|
||||
return null;
|
||||
return parent::other_cols($colname, $attempt);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -623,8 +623,8 @@ class moodle_content_writer implements content_writer {
|
||||
$targetpath = ['js', 'general.js'];
|
||||
$this->copy_data($jspath, $targetpath);
|
||||
|
||||
$jquery = ['lib', 'jquery', 'jquery-3.2.1.min.js'];
|
||||
$jquerydestination = ['js', 'jquery-3.2.1.min.js'];
|
||||
$jquery = ['lib', 'jquery', 'jquery-3.5.1.min.js'];
|
||||
$jquerydestination = ['js', 'jquery-3.5.1.min.js'];
|
||||
$this->copy_data($jquery, $jquerydestination);
|
||||
|
||||
$requirecurrentpath = ['lib', 'requirejs', 'require.min.js'];
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
<div data-main-content class="jumbotron bg-light border">
|
||||
<h2 class="display-8">{{#str}}viewdata, core_privacy{{/str}}</h2>
|
||||
</div>
|
||||
<script src="js/jquery-3.2.1.min.js"></script>
|
||||
<script src="js/jquery-3.5.1.min.js"></script>
|
||||
<script src="js/data_index.js"></script>
|
||||
<script src="js/general.js"></script>
|
||||
<script src="js/require.min.js"></script>
|
||||
@@ -74,7 +74,7 @@
|
||||
"baseUrl": "./",
|
||||
"paths": {
|
||||
"app": "./",
|
||||
"jquery": "./js/jquery-3.2.1.min",
|
||||
"jquery": "./js/jquery-3.5.1.min",
|
||||
"tree": "./js/tree.min"
|
||||
}
|
||||
});
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
define(["jquery","core/ajax","core/notification"],function(a,b,c){return{list:function(b,c){var d=[],e=a(b),f=a(b).data("originaloptionsjson"),g=e.val();a.each(f,function(b,e){return""!==a.trim(c)&&e.label.toLocaleLowerCase().indexOf(c.toLocaleLowerCase())===-1||(a.inArray(e.value,g)>-1||(d.push(e),!0))});var h=new a.Deferred;return h.resolve(d),h.promise()},processResults:function(b,c){var d=[];return a.each(c,function(a,b){d.push({value:b.value,label:b.label})}),d},transport:function(a,b,d){this.list(a,b).then(d)["catch"](c.exception)}}});
|
||||
define(["jquery","core/ajax","core/notification"],function(a,b,c){return{list:function(b,c){var d=[],e=a(b),f=a(b).data("originaloptionsjson"),g=e.val();a.each(f,function(b,e){return""!==c.trim()&&e.label.toLocaleLowerCase().indexOf(c.toLocaleLowerCase())===-1||(a.inArray(e.value,g)>-1||(d.push(e),!0))});var h=new a.Deferred;return h.resolve(d),h.promise()},processResults:function(b,c){var d=[];return a.each(c,function(a,b){d.push({value:b.value,label:b.label})}),d},transport:function(a,b,d){this.list(a,b).then(d)["catch"](c.exception)}}});
|
||||
@@ -41,7 +41,7 @@ define(['jquery', 'core/ajax', 'core/notification'], function($, Ajax, Notificat
|
||||
var selectedFilters = el.val();
|
||||
$.each(originalOptions, function(index, option) {
|
||||
// Skip option if it does not contain the query string.
|
||||
if ($.trim(query) !== '' && option.label.toLocaleLowerCase().indexOf(query.toLocaleLowerCase()) === -1) {
|
||||
if (query.trim() !== '' && option.label.toLocaleLowerCase().indexOf(query.toLocaleLowerCase()) === -1) {
|
||||
return true;
|
||||
}
|
||||
// Skip filters that have already been selected.
|
||||
|
||||
@@ -600,7 +600,7 @@ abstract class user_selector_base {
|
||||
if ($this->extrafields) {
|
||||
$displayfields = array();
|
||||
foreach ($this->extrafields as $field) {
|
||||
$displayfields[] = $user->{$field};
|
||||
$displayfields[] = s($user->{$field});
|
||||
}
|
||||
$out .= ' (' . implode(', ', $displayfields) . ')';
|
||||
}
|
||||
|
||||
+2
-2
@@ -29,11 +29,11 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$version = 2018051716.00; // 20180517 = branching date YYYYMMDD - do not modify!
|
||||
$version = 2018051717.00; // 20180517 = branching date YYYYMMDD - do not modify!
|
||||
// RR = release increments - 00 in DEV branches.
|
||||
// .XX = incremental changes.
|
||||
|
||||
$release = '3.5.16 (Build: 20210118)'; // Human-friendly version name
|
||||
$release = '3.5.17 (Build: 20210308)'; // Human-friendly version name
|
||||
|
||||
$branch = '35'; // This version's branch.
|
||||
$maturity = MATURITY_STABLE; // This version's maturity level.
|
||||
|
||||
Reference in New Issue
Block a user