diff --git a/mod/resource/lib.php b/mod/resource/lib.php index 44afba3b5e1..bbb58889398 100644 --- a/mod/resource/lib.php +++ b/mod/resource/lib.php @@ -276,30 +276,6 @@ function resource_get_coursemodule_info($coursemodule) { $fullurl = "$CFG->wwwroot/mod/resource/view.php?id=$coursemodule->id&redirect=1"; $info->onclick = "window.open('$fullurl'); return false;"; - } else if ($display == RESOURCELIB_DISPLAY_OPEN) { - $fullurl = "$CFG->wwwroot/mod/resource/view.php?id=$coursemodule->id&redirect=1"; - $info->onclick = "window.location.href ='$fullurl';return false;"; - - } else if ($display == RESOURCELIB_DISPLAY_DOWNLOAD) { - if (empty($mainfile)) { - return NULL; - } - // do not open any window because it would be left there after download - $path = '/'.$context->id.'/mod_resource/content/'.$resource->revision.$mainfile->get_filepath().$mainfile->get_filename(); - $fullurl = addslashes_js(file_encode_url($CFG->wwwroot.'/pluginfile.php', $path, true)); - - // When completion information is enabled for download files, make - // the JavaScript version go to the view page with redirect set, - // instead of directly to the file, otherwise we can't make it tick - // the box for them - if (!$course = $DB->get_record('course', array('id'=>$coursemodule->course), 'id, enablecompletion')) { - return NULL; - } - $completion = new completion_info($course); - if ($completion->is_enabled($coursemodule) == COMPLETION_TRACKING_AUTOMATIC) { - $fullurl = "$CFG->wwwroot/mod/resource/view.php?id=$coursemodule->id&redirect=1"; - } - $info->onclick = "window.open('$fullurl'); return false;"; } return $info; diff --git a/mod/resource/view.php b/mod/resource/view.php index ee3c694f391..7901843ba65 100644 --- a/mod/resource/view.php +++ b/mod/resource/view.php @@ -76,16 +76,26 @@ if (count($files) < 1) { unset($files); } +$resource->mainfile = $file->get_filename(); +$displaytype = resource_get_final_display_type($resource); +if ($displaytype == RESOURCELIB_DISPLAY_OPEN || $displaytype == RESOURCELIB_DISPLAY_DOWNLOAD) { + // For 'open' and 'download' links, we always redirect to the content - except + // if the user just chose 'save and display' from the form then that would be + // confusing + if (!isset($_SERVER['HTTP_REFERER']) || strpos($_SERVER['HTTP_REFERER'], 'modedit.php') === false) { + $redirect = true; + } +} + if ($redirect) { // coming from course page or url index page // this redirect trick solves caching problems when tracking views ;-) $path = '/'.$context->id.'/mod_resource/content/'.$resource->revision.$file->get_filepath().$file->get_filename(); - $fullurl = file_encode_url($CFG->wwwroot.'/pluginfile.php', $path, false); + $fullurl = moodle_url::make_file_url('/pluginfile.php', $path, $displaytype == RESOURCELIB_DISPLAY_DOWNLOAD); redirect($fullurl); } -$resource->mainfile = $file->get_filename(); -switch (resource_get_final_display_type($resource)) { +switch ($displaytype) { case RESOURCELIB_DISPLAY_EMBED: resource_display_embed($resource, $cm, $course, $file); break; diff --git a/mod/url/lib.php b/mod/url/lib.php index f8400e25608..0e40ab18e92 100644 --- a/mod/url/lib.php +++ b/mod/url/lib.php @@ -286,9 +286,6 @@ function url_get_coursemodule_info($coursemodule) { $fullurl = "$CFG->wwwroot/mod/url/view.php?id=$coursemodule->id&redirect=1"; $info->onclick = "window.open('$fullurl'); return false;"; - } else if ($display == RESOURCELIB_DISPLAY_OPEN) { - $fullurl = "$CFG->wwwroot/mod/url/view.php?id=$coursemodule->id&redirect=1"; - $info->onclick = "window.location.href ='$fullurl';return false;"; } if ($coursemodule->showdescription) { diff --git a/mod/url/view.php b/mod/url/view.php index 6840abd7ab4..6cb73abeec8 100644 --- a/mod/url/view.php +++ b/mod/url/view.php @@ -67,6 +67,15 @@ if (empty($exturl) or $exturl === 'http://') { } unset($exturl); +$displaytype = url_get_final_display_type($url); +if ($displaytype == RESOURCELIB_DISPLAY_OPEN) { + // For 'open' links, we always redirect to the content - except if the user + // just chose 'save and display' from the form then that would be confusing + if (!isset($_SERVER['HTTP_REFERER']) || strpos($_SERVER['HTTP_REFERER'], 'modedit.php') === false) { + $redirect = true; + } +} + if ($redirect) { // coming from course page or url index page, // the redirection is needed for completion tracking and logging @@ -74,7 +83,7 @@ if ($redirect) { redirect(str_replace('&', '&', $fullurl)); } -switch (url_get_final_display_type($url)) { +switch ($displaytype) { case RESOURCELIB_DISPLAY_EMBED: url_display_embed($url, $cm, $course); break;