Browse files

MDL-31015 File/URL resource 'Open' and 'Force download' options shoul…

…d work consistently
  • Loading branch information...
1 parent d4b3034 commit 8c8a31c21d3f442e50db62f75d7e002022c3a2d3 @sammarshallou sammarshallou committed Jan 4, 2012
Showing with 23 additions and 31 deletions.
  1. +0 −24 mod/resource/lib.php
  2. +13 −3 mod/resource/view.php
  3. +0 −3 mod/url/lib.php
  4. +10 −1 mod/url/view.php
View
24 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;
View
16 mod/resource/view.php
@@ -76,16 +76,26 @@
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;
View
3 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) {
View
11 mod/url/view.php
@@ -67,14 +67,23 @@
}
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
$fullurl = url_get_full_url($url, $cm, $course);
redirect(str_replace('&', '&', $fullurl));
}
-switch (url_get_final_display_type($url)) {
+switch ($displaytype) {
case RESOURCELIB_DISPLAY_EMBED:
url_display_embed($url, $cm, $course);
break;

0 comments on commit 8c8a31c

Please sign in to comment.