Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

MDL-35836 Rewrite doctonewwindow handling to use delegation instead o…

…f individual events
  • Loading branch information...
commit 1754dc2cb6cd98d64b417cf374ba082b8d65db41 1 parent 7033316
@andrewnicols andrewnicols authored
View
2  course/lib.php
@@ -1972,7 +1972,7 @@ function get_module_metadata($course, $modnames, $sectionreturn = 0) {
if ($sm->string_exists('modulename_link', $modname)) { // Link to further info in Moodle docs
$link = get_string('modulename_link', $modname);
$linktext = get_string('morehelp');
- $module->help .= html_writer::tag('div', $OUTPUT->doc_link($link, $linktext), array('class' => 'helpdoclink'));
+ $module->help .= html_writer::tag('div', $OUTPUT->doc_link($link, $linktext, true), array('class' => 'helpdoclink'));
}
}
$module->archetype = plugin_supports('mod', $modname, FEATURE_MOD_ARCHETYPE, MOD_ARCHETYPE_OTHER);
View
30 course/yui/modchooser/modchooser.js
@@ -36,36 +36,6 @@ YUI.add('moodle-course-modchooser', function(Y) {
// Catch the page toggle
Y.all('.block_settings #settingsnav .type_course .modchoosertoggle a').on('click', this.toggle_mod_chooser, this);
-
- // Ensure that help links are opened in an appropriate popup
- this.container.all('div.helpdoclink a').on('click', function(e) {
- var anchor = e.target.ancestor('a', true);
-
- var args = {
- 'name' : 'popup',
- 'url' : anchor.getAttribute('href'),
- 'option' : ''
- };
- var options = [
- 'height=600',
- 'width=800',
- 'top=0',
- 'left=0',
- 'menubar=0',
- 'location=0',
- 'scrollbars',
- 'resizable',
- 'toolbar',
- 'status',
- 'directories=0',
- 'fullscreen=0',
- 'dependent'
- ]
- args.options = options.join(',');
-
- // Note: openpopup is provided by lib/javascript-static.js
- openpopup(e, args);
- });
},
/**
* Update any section areas within the scope of the specified
View
36 lib/javascript-static.js
@@ -1350,6 +1350,42 @@ function hide_item(itemid) {
}
}
+M.util.help_popups = {
+ setup : function(Y) {
+ Y.one('body').delegate('click', this.open_popup, 'a.helplinkpopup', this);
+ },
+ open_popup : function(e) {
+ // Prevent the default page action
+ e.preventDefault();
+
+ // Grab the anchor that was clicked
+ var anchor = e.target.ancestor('a', true);
+ var args = {
+ 'name' : 'popup',
+ 'url' : anchor.getAttribute('href'),
+ 'options' : ''
+ };
+ var options = [
+ 'height=600',
+ 'width=800',
+ 'top=0',
+ 'left=0',
+ 'menubar=0',
+ 'location=0',
+ 'scrollbars',
+ 'resizable',
+ 'toolbar',
+ 'status',
+ 'directories=0',
+ 'fullscreen=0',
+ 'dependent'
+ ]
+ args.options = options.join(',');
+
+ openpopup(e, args);
+ }
+}
+
M.util.help_icon = {
Y : null,
instance : null,
View
10 lib/outputrenderers.php
@@ -372,6 +372,9 @@ public function standard_head_html() {
// flow player embedding support
$this->page->requires->js_function_call('M.util.load_flowplayer');
+ // Set up help link popups for all links with the helplinkpopup class
+ $this->page->requires->js_init_call('M.util.help_popups.setup');
+
$this->page->requires->js_function_call('setTimeout', array('fix_column_widths()', 20));
$focus = $this->page->focuscontrol;
@@ -1495,9 +1498,10 @@ protected function render_url_select(url_select $select) {
*
* @param string $path The page link after doc root and language, no leading slash.
* @param string $text The text to be displayed for the link
+ * @param boolean $forcepopup Whether to force a popup regardless of the value of $CFG->doctonewwindow
* @return string
*/
- public function doc_link($path, $text = '') {
+ public function doc_link($path, $text = '', $forcepopup = false) {
global $CFG;
$icon = $this->pix_icon('docs', $text, 'moodle', array('class'=>'iconhelp'));
@@ -1505,8 +1509,8 @@ public function doc_link($path, $text = '') {
$url = new moodle_url(get_docs_url($path));
$attributes = array('href'=>$url);
- if (!empty($CFG->doctonewwindow)) {
- $attributes['id'] = $this->add_action_handler(new popup_action('click', $url));
+ if (!empty($CFG->doctonewwindow) || $forcepopup) {
+ $attributes['class'] = 'helplinkpopup';
}
return html_writer::tag('a', $icon.$text, $attributes);
Please sign in to comment.
Something went wrong with that request. Please try again.