mirror of
https://github.com/moodle/moodle.git
synced 2025-01-29 19:50:14 +01:00
MDL-82693 contentbank: improve display unlisted module, add tests.
This commit is contained in:
parent
056f473a6e
commit
ef1ebea848
9
contentbank/amd/build/displayunlisted.min.js
vendored
9
contentbank/amd/build/displayunlisted.min.js
vendored
@ -1,3 +1,10 @@
|
||||
define("core_contentbank/displayunlisted",["exports","core/ajax"],(function(_exports,_ajax){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.update=void 0;_exports.update=elementSelector=>{const element=document.querySelector(elementSelector);element.addEventListener("click",(function(){const args={userid:this.userId,preferences:[{type:"core_contentbank_displayunlisted",value:!!element.checked}]};(0,_ajax.call)([{methodname:"core_user_update_user_preferences",args:args}])[0].done((function(){document.location.reload()}))}))}}));
|
||||
define("core_contentbank/displayunlisted",["exports","core/notification","core/pending","core_user/repository"],(function(_exports,_notification,_pending,_repository){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}
|
||||
/**
|
||||
* Module to handle toggling "Display unlisted" preference
|
||||
*
|
||||
* @module core_contentbank/displayunlisted
|
||||
* @copyright 2023 Daniel Neis Araujo
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=void 0,_notification=_interopRequireDefault(_notification),_pending=_interopRequireDefault(_pending);_exports.init=elementSelector=>{document.addEventListener("click",(event=>{const element=event.target.closest(elementSelector);if(element){const pendingPromise=new _pending.default("core_contentbank/displayunlisted");(0,_repository.setUserPreference)("core_contentbank_displayunlisted",!!element.checked).then((()=>(pendingPromise.resolve(),document.location.reload()))).catch(_notification.default.exception)}}))}}));
|
||||
|
||||
//# sourceMappingURL=displayunlisted.min.js.map
|
@ -1 +1 @@
|
||||
{"version":3,"file":"displayunlisted.min.js","sources":["../src/displayunlisted.js"],"sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * Module to handle AJAX interactions with content bank upload files.\n *\n * @module core_contentbank/displayunlisted\n * @copyright 2023 Daniel Neis Araujo\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\nimport {call as fetchMany} from 'core/ajax';\n\n/**\n * Initialize upload files to the content bank form as Modal form.\n *\n * @param {String} elementSelector\n */\nexport const update = (elementSelector) => {\n const element = document.querySelector(elementSelector);\n element.addEventListener('click', function() {\n const args = {\n userid: this.userId,\n preferences: [\n {\n type: 'core_contentbank_displayunlisted',\n value: !!element.checked,\n }\n ],\n };\n fetchMany([{\n methodname: 'core_user_update_user_preferences',\n args: args,\n }])[0].done(function() {\n document.location.reload();\n });\n });\n};\n"],"names":["elementSelector","element","document","querySelector","addEventListener","args","userid","this","userId","preferences","type","value","checked","methodname","done","location","reload"],"mappings":"2LA6BuBA,wBACbC,QAAUC,SAASC,cAAcH,iBACvCC,QAAQG,iBAAiB,SAAS,iBACxBC,KAAO,CACTC,OAAQC,KAAKC,OACbC,YAAa,CACT,CACIC,KAAM,mCACNC,QAASV,QAAQW,0BAInB,CAAC,CACPC,WAAY,oCACZR,KAAMA,QACN,GAAGS,MAAK,WACRZ,SAASa,SAASC"}
|
||||
{"version":3,"file":"displayunlisted.min.js","sources":["../src/displayunlisted.js"],"sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * Module to handle toggling \"Display unlisted\" preference\n *\n * @module core_contentbank/displayunlisted\n * @copyright 2023 Daniel Neis Araujo\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Notification from 'core/notification';\nimport Pending from 'core/pending';\nimport {setUserPreference} from 'core_user/repository';\n\n/**\n * Initialize module, add event listeners\n *\n * @param {String} elementSelector\n */\nexport const init = elementSelector => {\n document.addEventListener('click', event => {\n const element = event.target.closest(elementSelector);\n if (element) {\n const pendingPromise = new Pending('core_contentbank/displayunlisted');\n\n setUserPreference('core_contentbank_displayunlisted', !!element.checked)\n .then(() => {\n pendingPromise.resolve();\n return document.location.reload();\n })\n .catch(Notification.exception);\n }\n });\n};\n"],"names":["elementSelector","document","addEventListener","event","element","target","closest","pendingPromise","Pending","checked","then","resolve","location","reload","catch","Notification","exception"],"mappings":";;;;;;;8LAgCoBA,kBAChBC,SAASC,iBAAiB,SAASC,cACzBC,QAAUD,MAAME,OAAOC,QAAQN,oBACjCI,QAAS,OACHG,eAAiB,IAAIC,iBAAQ,sEAEjB,qCAAsCJ,QAAQK,SAC3DC,MAAK,KACFH,eAAeI,UACRV,SAASW,SAASC,YAE5BC,MAAMC,sBAAaC"}
|
@ -14,36 +14,34 @@
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Module to handle AJAX interactions with content bank upload files.
|
||||
* Module to handle toggling "Display unlisted" preference
|
||||
*
|
||||
* @module core_contentbank/displayunlisted
|
||||
* @copyright 2023 Daniel Neis Araujo
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
import {call as fetchMany} from 'core/ajax';
|
||||
|
||||
import Notification from 'core/notification';
|
||||
import Pending from 'core/pending';
|
||||
import {setUserPreference} from 'core_user/repository';
|
||||
|
||||
/**
|
||||
* Initialize upload files to the content bank form as Modal form.
|
||||
* Initialize module, add event listeners
|
||||
*
|
||||
* @param {String} elementSelector
|
||||
*/
|
||||
export const update = (elementSelector) => {
|
||||
const element = document.querySelector(elementSelector);
|
||||
element.addEventListener('click', function() {
|
||||
const args = {
|
||||
userid: this.userId,
|
||||
preferences: [
|
||||
{
|
||||
type: 'core_contentbank_displayunlisted',
|
||||
value: !!element.checked,
|
||||
}
|
||||
],
|
||||
};
|
||||
fetchMany([{
|
||||
methodname: 'core_user_update_user_preferences',
|
||||
args: args,
|
||||
}])[0].done(function() {
|
||||
document.location.reload();
|
||||
});
|
||||
export const init = elementSelector => {
|
||||
document.addEventListener('click', event => {
|
||||
const element = event.target.closest(elementSelector);
|
||||
if (element) {
|
||||
const pendingPromise = new Pending('core_contentbank/displayunlisted');
|
||||
|
||||
setUserPreference('core_contentbank_displayunlisted', !!element.checked)
|
||||
.then(() => {
|
||||
pendingPromise.resolve();
|
||||
return document.location.reload();
|
||||
})
|
||||
.catch(Notification.exception);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
@ -79,25 +79,19 @@ foreach ($enabledcontenttypes as $contenttypename) {
|
||||
$toolbar = array ();
|
||||
|
||||
if (has_capability('moodle/contentbank:viewunlistedcontent', $context)) {
|
||||
$setdisplay = optional_param('displayunlisted', null, PARAM_INT);
|
||||
if (is_null($setdisplay)) {
|
||||
$display = get_user_preferences('core_contentbank_displayunlisted', 1);
|
||||
} else {
|
||||
set_user_preference('core_contentbank_displayunlisted', $setdisplay);
|
||||
$display = $setdisplay;
|
||||
}
|
||||
$display = get_user_preferences('core_contentbank_displayunlisted', 1);
|
||||
$toolbar[] = [
|
||||
'name' => 'displayunlisted',
|
||||
'id' => 'displayunlisted',
|
||||
'checkbox' => true,
|
||||
'checked' => $display,
|
||||
'checked' => !empty($display),
|
||||
'label' => get_string('displayunlisted', 'contentbank'),
|
||||
'class' => 'displayunlisted m-2',
|
||||
'action' => 'displayunlisted',
|
||||
];
|
||||
$PAGE->requires->js_call_amd(
|
||||
'core_contentbank/displayunlisted',
|
||||
'update',
|
||||
'init',
|
||||
['[data-action=displayunlisted]']
|
||||
);
|
||||
}
|
||||
|
@ -36,6 +36,23 @@ Feature: Make content public or unlisted
|
||||
And I click on "More" "button"
|
||||
And I should see "Make public"
|
||||
|
||||
Scenario: Unlisted content can be hidden by user preference
|
||||
Given the following "contentbank content" exist:
|
||||
| contextlevel | reference | contenttype | user | contentname | filepath | visibility |
|
||||
| System | | contenttype_h5p | admin | filltheblanks.h5p | /h5p/tests/fixtures/filltheblanks.h5p | 1 |
|
||||
| System | | contenttype_h5p | admin | find-the-words.h5p | /h5p/tests/fixtures/find-the-words.h5p | 2 |
|
||||
And I am on the "Content bank" page logged in as "admin"
|
||||
And I should see "filltheblanks.h5p"
|
||||
And I should see "find-the-words.h5p (Unlisted)"
|
||||
When I set the field "Show unlisted content" to "0"
|
||||
And I wait until the page is ready
|
||||
Then I should see "filltheblanks.h5p"
|
||||
And I should not see "find-the-words.h5p (Unlisted)"
|
||||
And I set the field "Show unlisted content" to "1"
|
||||
And I wait until the page is ready
|
||||
And I should see "filltheblanks.h5p"
|
||||
And I should see "find-the-words.h5p (Unlisted)"
|
||||
|
||||
Scenario: Unlisted content cannot be seen by other users
|
||||
Given the following "users" exist:
|
||||
| username | firstname | lastname | email |
|
||||
|
Loading…
x
Reference in New Issue
Block a user