Skip to content

Commit

Permalink
javascript cleanup: MDL-16583 clean up the close_window function in w…
Browse files Browse the repository at this point in the history
…eblib.php.
  • Loading branch information
tjhunt committed Dec 10, 2008
1 parent ff9b4ea commit b166403
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 17 deletions.
1 change: 1 addition & 0 deletions lang/en_utf8/moodle.php
Original file line number Diff line number Diff line change
Expand Up @@ -1686,6 +1686,7 @@
$a->profileurl';
$string['whattocallzip'] = 'What do you want to call the zip file?';
$string['whattodo'] = 'What to do';
$string['windowclosing'] = 'This window should close automatically. If not, please close it now.';
$string['withchosenfiles'] = 'With chosen files';
$string['withoutuserdata'] = 'without user data';
$string['withselectedusers'] = 'With selected users...';
Expand Down
16 changes: 16 additions & 0 deletions lib/javascript-static.js
Original file line number Diff line number Diff line change
Expand Up @@ -731,4 +731,20 @@ collapsible_region.prototype.handle_animation_complete = function() {
if (this.collapsed) {
this.div.className += ' collapsed';
}
}

/** Close the current browser window. */
function close_window() {
window.close();
}

/**
* Close the current browser window, forcing the window/tab that opened this
* popup to reload itself. */
function close_window_reloading_opener() {
if (window.opener) {
window.opener.location.reload(1);
close_window();
// Intentionally, only try to close the window if there is some evidence we are in a popup.
}
}
39 changes: 22 additions & 17 deletions lib/weblib.php
Original file line number Diff line number Diff line change
Expand Up @@ -675,26 +675,31 @@ function close_window_button($name='closewindow', $return=false, $reloadopener =
}

/*
* Try and close the current window immediately using Javascript
* @param int $delay the delay in seconds before closing the window
* Try and close the current window using JavaScript, either immediately, or after a delay.
* @param integer $delay a delay in seconds before closing the window. Default 0.
* @param boolean $reloadopener if true, we will see if this window was a pop-up, and try
* to reload the parent window before this one closes.
*/
function close_window($delay=0) {
?>
<script type="text/javascript">
//<![CDATA[
function close_this_window() {
self.close();
function close_window($delay = 0, $reloadopener = false) {
global $THEME;

if (!defined('HEADER_PRINTED')) {
print_header(get_string('closewindow'));
} else {
print_container_end_all(false, $THEME->open_header_containers);
}
setTimeout("close_this_window()", <?php echo $delay * 1000 ?>);
//]]>
</script>
<noscript><center>
<?php print_string('pleaseclose') ?>
</center></noscript>
<?php
die;
}

if ($reloadopener) {
$function = 'close_window_reloading_opener';
} else {
$function = 'close_window';
}
echo '<p class="centerpara">' . get_string('windowclosing') . '</p>';
print_delayed_js_call($delay, $function);

print_footer('empty');
exit;
}

/**
* Given an array of values, output the HTML for a select element with those options.
Expand Down

0 comments on commit b166403

Please sign in to comment.