mirror of
https://github.com/moodle/moodle.git
synced 2025-08-09 10:56:56 +02:00
MDL-76974 javascript: convert remaining uses of old preferences API.
Implement component preference definition callbacks, update JS code to use the `core_user/repository` module instead of the now deprecated API.
This commit is contained in:
parent
d096c60e0c
commit
b30245b3e2
21 changed files with 180 additions and 38 deletions
2
theme/boost/amd/build/drawer.min.js
vendored
2
theme/boost/amd/build/drawer.min.js
vendored
|
@ -5,6 +5,6 @@
|
|||
* @copyright 2016 Damyon Wiese
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define("theme_boost/drawer",["jquery","core/custom_interaction_events","core/log","core/pubsub","core/aria"],(function($,CustomEvents,Log,PubSub,Aria){var SELECTORS_TOGGLE_REGION='[data-region="drawer-toggle"]',SELECTORS_TOGGLE_ACTION='[data-action="toggle-drawer"]',SELECTORS_BODY="body",SELECTORS_SECTION='.list-group-item[href*="#section-"]',SELECTORS_DRAWER="#nav-drawer",small=$(document).width()<768,Drawer=function(){$(SELECTORS_TOGGLE_REGION).length||Log.debug("Page is missing a drawer region"),$(SELECTORS_TOGGLE_ACTION).length||Log.debug("Page is missing a drawer toggle link"),$(SELECTORS_TOGGLE_REGION).each(function(index,ele){var trigger=$(ele).find(SELECTORS_TOGGLE_ACTION),drawerid=trigger.attr("aria-controls"),drawer=$(document.getElementById(drawerid)),hidden="false"==trigger.attr("aria-expanded"),side=trigger.attr("data-side"),body=$(SELECTORS_BODY),preference=trigger.attr("data-preference");small&&M.util.set_user_preference(preference,"false"),drawer.on("mousewheel DOMMouseScroll",this.preventPageScroll),hidden?trigger.attr("aria-expanded","false"):(body.addClass("drawer-open-"+side),trigger.attr("aria-expanded","true"))}.bind(this)),this.registerEventListeners(),small&&this.closeAll()};return Drawer.prototype.closeAll=function(){$(SELECTORS_TOGGLE_REGION).each((function(index,ele){var trigger=$(ele).find(SELECTORS_TOGGLE_ACTION),side=trigger.attr("data-side"),body=$(SELECTORS_BODY),drawerid=trigger.attr("aria-controls"),drawer=$(document.getElementById(drawerid)),preference=trigger.attr("data-preference");trigger.attr("aria-expanded","false"),body.removeClass("drawer-open-"+side),Aria.hide(drawer.get()),drawer.addClass("closed"),small||M.util.set_user_preference(preference,"false")}))},Drawer.prototype.toggleDrawer=function(e){var trigger=$(e.target).closest("[data-action=toggle-drawer]"),drawerid=trigger.attr("aria-controls"),drawer=$(document.getElementById(drawerid)),body=$(SELECTORS_BODY),side=trigger.attr("data-side"),preference=trigger.attr("data-preference");small&&M.util.set_user_preference(preference,"false"),body.addClass("drawer-ease");var open="true"==trigger.attr("aria-expanded");open?(body.removeClass("drawer-open-"+side),trigger.attr("aria-expanded","false"),drawer.addClass("closed").delay(500).queue((function(){$(this).hasClass("closed")&&Aria.hide(this),$(this).dequeue()})),small||M.util.set_user_preference(preference,"false")):(trigger.attr("aria-expanded","true"),Aria.unhide(drawer.get()),drawer.focus(),body.addClass("drawer-open-"+side),drawer.removeClass("closed"),small||M.util.set_user_preference(preference,"true")),PubSub.publish("nav-drawer-toggle-start",open)},Drawer.prototype.preventPageScroll=function(e){var delta=e.wheelDelta||e.originalEvent&&e.originalEvent.wheelDelta||-e.originalEvent.detail,bottomOverflow=this.scrollTop+$(this).outerHeight()-this.scrollHeight>=0,topOverflow=this.scrollTop<=0;(delta<0&&bottomOverflow||delta>0&&topOverflow)&&e.preventDefault()},Drawer.prototype.registerEventListeners=function(){$(SELECTORS_TOGGLE_ACTION).each(function(index,element){CustomEvents.define($(element),[CustomEvents.events.activate]),$(element).on(CustomEvents.events.activate,function(e,data){this.toggleDrawer(data.originalEvent),data.originalEvent.preventDefault()}.bind(this))}.bind(this)),$(SELECTORS_SECTION).click(function(){small&&this.closeAll()}.bind(this)),$(SELECTORS_DRAWER).on("webkitTransitionEnd msTransitionEnd transitionend",(function(e){var open=!!$(e.target).closest(SELECTORS_DRAWER).attr("aria-hidden");PubSub.publish("nav-drawer-toggle-end",open)}))},{init:function(){return new Drawer}}}));
|
||||
define("theme_boost/drawer",["jquery","core/custom_interaction_events","core/log","core/pubsub","core/aria","core_user/repository"],(function($,CustomEvents,Log,PubSub,Aria,UserRepository){var SELECTORS_TOGGLE_REGION='[data-region="drawer-toggle"]',SELECTORS_TOGGLE_ACTION='[data-action="toggle-drawer"]',SELECTORS_BODY="body",SELECTORS_SECTION='.list-group-item[href*="#section-"]',SELECTORS_DRAWER="#nav-drawer",small=$(document).width()<768,Drawer=function(){$(SELECTORS_TOGGLE_REGION).length||Log.debug("Page is missing a drawer region"),$(SELECTORS_TOGGLE_ACTION).length||Log.debug("Page is missing a drawer toggle link"),$(SELECTORS_TOGGLE_REGION).each(function(index,ele){var trigger=$(ele).find(SELECTORS_TOGGLE_ACTION),drawerid=trigger.attr("aria-controls"),drawer=$(document.getElementById(drawerid)),hidden="false"==trigger.attr("aria-expanded"),side=trigger.attr("data-side"),body=$(SELECTORS_BODY),preference=trigger.attr("data-preference");small&&UserRepository.setUserPreference(preference,!1),drawer.on("mousewheel DOMMouseScroll",this.preventPageScroll),hidden?trigger.attr("aria-expanded","false"):(body.addClass("drawer-open-"+side),trigger.attr("aria-expanded","true"))}.bind(this)),this.registerEventListeners(),small&&this.closeAll()};return Drawer.prototype.closeAll=function(){$(SELECTORS_TOGGLE_REGION).each((function(index,ele){var trigger=$(ele).find(SELECTORS_TOGGLE_ACTION),side=trigger.attr("data-side"),body=$(SELECTORS_BODY),drawerid=trigger.attr("aria-controls"),drawer=$(document.getElementById(drawerid)),preference=trigger.attr("data-preference");trigger.attr("aria-expanded","false"),body.removeClass("drawer-open-"+side),Aria.hide(drawer.get()),drawer.addClass("closed"),small||UserRepository.setUserPreference(preference,!1)}))},Drawer.prototype.toggleDrawer=function(e){var trigger=$(e.target).closest("[data-action=toggle-drawer]"),drawerid=trigger.attr("aria-controls"),drawer=$(document.getElementById(drawerid)),body=$(SELECTORS_BODY),side=trigger.attr("data-side"),preference=trigger.attr("data-preference");small&&UserRepository.setUserPreference(preference,!1),body.addClass("drawer-ease");var open="true"==trigger.attr("aria-expanded");open?(body.removeClass("drawer-open-"+side),trigger.attr("aria-expanded","false"),drawer.addClass("closed").delay(500).queue((function(){$(this).hasClass("closed")&&Aria.hide(this),$(this).dequeue()})),small||UserRepository.setUserPreference(preference,!1)):(trigger.attr("aria-expanded","true"),Aria.unhide(drawer.get()),drawer.focus(),body.addClass("drawer-open-"+side),drawer.removeClass("closed"),small||UserRepository.setUserPreference(preference,!0)),PubSub.publish("nav-drawer-toggle-start",open)},Drawer.prototype.preventPageScroll=function(e){var delta=e.wheelDelta||e.originalEvent&&e.originalEvent.wheelDelta||-e.originalEvent.detail,bottomOverflow=this.scrollTop+$(this).outerHeight()-this.scrollHeight>=0,topOverflow=this.scrollTop<=0;(delta<0&&bottomOverflow||delta>0&&topOverflow)&&e.preventDefault()},Drawer.prototype.registerEventListeners=function(){$(SELECTORS_TOGGLE_ACTION).each(function(index,element){CustomEvents.define($(element),[CustomEvents.events.activate]),$(element).on(CustomEvents.events.activate,function(e,data){this.toggleDrawer(data.originalEvent),data.originalEvent.preventDefault()}.bind(this))}.bind(this)),$(SELECTORS_SECTION).click(function(){small&&this.closeAll()}.bind(this)),$(SELECTORS_DRAWER).on("webkitTransitionEnd msTransitionEnd transitionend",(function(e){var open=!!$(e.target).closest(SELECTORS_DRAWER).attr("aria-hidden");PubSub.publish("nav-drawer-toggle-end",open)}))},{init:function(){return new Drawer}}}));
|
||||
|
||||
//# sourceMappingURL=drawer.min.js.map
|
File diff suppressed because one or more lines are too long
2
theme/boost/amd/build/drawers.min.js
vendored
2
theme/boost/amd/build/drawers.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -20,8 +20,8 @@
|
|||
* @copyright 2016 Damyon Wiese
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define(['jquery', 'core/custom_interaction_events', 'core/log', 'core/pubsub', 'core/aria'],
|
||||
function($, CustomEvents, Log, PubSub, Aria) {
|
||||
define(['jquery', 'core/custom_interaction_events', 'core/log', 'core/pubsub', 'core/aria', 'core_user/repository'],
|
||||
function($, CustomEvents, Log, PubSub, Aria, UserRepository) {
|
||||
|
||||
var SELECTORS = {
|
||||
TOGGLE_REGION: '[data-region="drawer-toggle"]',
|
||||
|
@ -55,7 +55,7 @@ define(['jquery', 'core/custom_interaction_events', 'core/log', 'core/pubsub', '
|
|||
var body = $(SELECTORS.BODY);
|
||||
var preference = trigger.attr('data-preference');
|
||||
if (small) {
|
||||
M.util.set_user_preference(preference, 'false');
|
||||
UserRepository.setUserPreference(preference, false);
|
||||
}
|
||||
|
||||
drawer.on('mousewheel DOMMouseScroll', this.preventPageScroll);
|
||||
|
@ -88,7 +88,7 @@ define(['jquery', 'core/custom_interaction_events', 'core/log', 'core/pubsub', '
|
|||
Aria.hide(drawer.get());
|
||||
drawer.addClass('closed');
|
||||
if (!small) {
|
||||
M.util.set_user_preference(preference, 'false');
|
||||
UserRepository.setUserPreference(preference, false);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
@ -107,7 +107,7 @@ define(['jquery', 'core/custom_interaction_events', 'core/log', 'core/pubsub', '
|
|||
var side = trigger.attr('data-side');
|
||||
var preference = trigger.attr('data-preference');
|
||||
if (small) {
|
||||
M.util.set_user_preference(preference, 'false');
|
||||
UserRepository.setUserPreference(preference, false);
|
||||
}
|
||||
|
||||
body.addClass('drawer-ease');
|
||||
|
@ -120,7 +120,7 @@ define(['jquery', 'core/custom_interaction_events', 'core/log', 'core/pubsub', '
|
|||
body.addClass('drawer-open-' + side);
|
||||
drawer.removeClass('closed');
|
||||
if (!small) {
|
||||
M.util.set_user_preference(preference, 'true');
|
||||
UserRepository.setUserPreference(preference, true);
|
||||
}
|
||||
} else {
|
||||
// Close.
|
||||
|
@ -134,7 +134,7 @@ define(['jquery', 'core/custom_interaction_events', 'core/log', 'core/pubsub', '
|
|||
$(this).dequeue();
|
||||
});
|
||||
if (!small) {
|
||||
M.util.set_user_preference(preference, 'false');
|
||||
UserRepository.setUserPreference(preference, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ import {dispatchEvent} from 'core/event_dispatcher';
|
|||
import {debounce} from 'core/utils';
|
||||
import {isSmall, isLarge} from 'core/pagehelpers';
|
||||
import Pending from 'core/pending';
|
||||
import {setUserPreference} from 'core_user/repository';
|
||||
// The jQuery module is only used for interacting with Boostrap 4. It can we removed when MDL-71979 is integrated.
|
||||
import jQuery from 'jquery';
|
||||
|
||||
|
@ -436,7 +437,7 @@ export default class Drawers {
|
|||
|
||||
const preference = this.drawerNode.dataset.preference;
|
||||
if (preference && !isSmall() && (this.drawerNode.dataset.forceopen != 1)) {
|
||||
M.util.set_user_preference(preference, true);
|
||||
setUserPreference(preference, true);
|
||||
}
|
||||
|
||||
const state = this.drawerNode.dataset.state;
|
||||
|
@ -501,7 +502,7 @@ export default class Drawers {
|
|||
|
||||
const preference = this.drawerNode.dataset.preference;
|
||||
if (preference && updatePreferences && !isSmall()) {
|
||||
M.util.set_user_preference(preference, false);
|
||||
setUserPreference(preference, false);
|
||||
}
|
||||
|
||||
const state = this.drawerNode.dataset.state;
|
||||
|
|
|
@ -30,9 +30,6 @@ require_once($CFG->dirroot . '/course/lib.php');
|
|||
// Add block button in editing mode.
|
||||
$addblockbutton = $OUTPUT->addblockbutton();
|
||||
|
||||
user_preference_allow_ajax_update('drawer-open-index', PARAM_BOOL);
|
||||
user_preference_allow_ajax_update('drawer-open-block', PARAM_BOOL);
|
||||
|
||||
if (isloggedin()) {
|
||||
$courseindexopen = (get_user_preferences('drawer-open-index', true) == true);
|
||||
$blockdraweropen = (get_user_preferences('drawer-open-block') == true);
|
||||
|
|
|
@ -93,6 +93,28 @@ function theme_boost_pluginfile($course, $cm, $context, $filearea, $args, $force
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current user preferences that are available
|
||||
*
|
||||
* @return array[]
|
||||
*/
|
||||
function theme_boost_user_preferences(): array {
|
||||
return [
|
||||
'drawer-open-block' => [
|
||||
'type' => PARAM_BOOL,
|
||||
'null' => NULL_NOT_ALLOWED,
|
||||
'default' => false,
|
||||
'permissioncallback' => [core_user::class, 'is_current_user'],
|
||||
],
|
||||
'drawer-open-index' => [
|
||||
'type' => PARAM_BOOL,
|
||||
'null' => NULL_NOT_ALLOWED,
|
||||
'default' => true,
|
||||
'permissioncallback' => [core_user::class, 'is_current_user'],
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the main SCSS content.
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue