YUI.add('moodle-core-popuphelp', function (Y, NAME) { /** * A popup help dialogue for Moodle. * * @module moodle-core-popuphelp */ /** * A popup help dialogue for Moodle. * * @class M.core.popuphelp * @constructor */ function POPUPHELP() { POPUPHELP.superclass.constructor.apply(this, arguments); } var SELECTORS = { CLICKABLELINKS: 'span.helptooltip > a', FOOTER: 'div.moodle-dialogue-ft' }, CSS = { ICON: 'icon', ICONPRE: 'icon-pre' }, ATTRS = {}; // Set the modules base properties. POPUPHELP.NAME = 'moodle-core-popuphelp'; POPUPHELP.ATTRS = ATTRS; Y.extend(POPUPHELP, Y.Base, { panel: null, /** * Setup the popuphelp. * * @method initializer */ initializer: function() { Y.one('body').delegate('click', this.display_panel, SELECTORS.CLICKABLELINKS, this); }, /** * Display the help tooltip. * * @method display_panel * @param {EventFacade} e */ display_panel: function(e) { if (!this.panel) { this.panel = new M.core.tooltip({ bodyhandler: this.set_body_content, footerhandler: this.set_footer, initialheadertext: M.util.get_string('loadinghelp', 'moodle'), initialfootertext: '' }); } // Call the tooltip setup. this.panel.display_panel(e); }, /** * Override the footer handler to add a 'More help' link where relevant. * * @method set_footer * @param {Object} helpobject The object returned from the AJAX call. */ set_footer: function(helpobject) { // Check for an optional link to documentation on moodle.org. if (helpobject.doclink) { // Wrap a help icon and the morehelp text in an anchor. The class of the anchor should // determine whether it's opened in a new window or not. var doclink = Y.Node.create('') .setAttrs({ 'href': helpobject.doclink.link }) .addClass(helpobject.doclink['class']); var helpicon = Y.Node.create('') .setAttrs({ 'src': M.util.image_url('docs', 'core') }) .addClass(CSS.ICON) .addClass(CSS.ICONPRE); doclink.appendChild(helpicon); doclink.appendChild(helpobject.doclink.linktext); // Set the footerContent to the contents of the doclink. this.set('footerContent', doclink); this.bb.one(SELECTORS.FOOTER).show(); } else { this.bb.one(SELECTORS.FOOTER).hide(); } } }); M.core = M.core || {}; M.core.popuphelp = M.core.popuphelp || null; M.core.init_popuphelp = M.core.init_popuphelp || function(config) { // Only set up a single instance of the popuphelp. if (!M.core.popuphelp) { M.core.popuphelp = new POPUPHELP(config); } return M.core.popuphelp; }; }, '@VERSION@', {"requires": ["moodle-core-tooltip"]});