Skip to content

Commit

Permalink
MDL-35836 Rewrite doctonewwindow handling to use delegation instead o…
Browse files Browse the repository at this point in the history
…f individual events
  • Loading branch information
Andrew Robert Nicols committed Oct 26, 2012
1 parent 7e8ae12 commit afe3566
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 34 deletions.
2 changes: 1 addition & 1 deletion course/lib.php
Expand Up @@ -1911,7 +1911,7 @@ function get_module_metadata($course, $modnames, $sectionreturn = null) {
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);
Expand Down
30 changes: 0 additions & 30 deletions course/yui/modchooser/modchooser.js
Expand Up @@ -34,36 +34,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
Expand Down
36 changes: 36 additions & 0 deletions lib/javascript-static.js
Expand Up @@ -1403,6 +1403,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,
Expand Down
10 changes: 7 additions & 3 deletions lib/outputrenderers.php
Expand Up @@ -370,6 +370,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;
Expand Down Expand Up @@ -1514,18 +1517,19 @@ 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'));

$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);
Expand Down

0 comments on commit afe3566

Please sign in to comment.