]> git.mjollnir.org Git - moodle.git/commitdiff
resource: MDL-10021 upload file resource: change "keep navigation visible" into selec...
authorjerome <jerome>
Thu, 8 Jan 2009 04:27:44 +0000 (04:27 +0000)
committerjerome <jerome>
Thu, 8 Jan 2009 04:27:44 +0000 (04:27 +0000)
lang/en_utf8/help/resource/frameifpossible.html
lang/en_utf8/resource.php
mod/resource/type/file/resource.class.php

index 05b1ee63bec01e9e14c516d864e0ee0a77306d03..8950478f194c0931a7c91af08a091263456e448b 100644 (file)
@@ -1,6 +1,8 @@
-<h1>Embedding files in a frame</h1>
-<p>This option will allow the file to be displayed in a frame, so that the Moodle navigation remains on the page in an upper frame.</p>
+<h1>Embedding files</h1>
+<p>This option will allow the file to be displayed in a frame or to be embedded within a navigable page, so that the Moodle navigation remains on the top of the page.</p>
 
 <p>Note that this option is normally not necessary for media types such as movies, audio files and flash files, as without this option turned on they will be embedded within a navigable page.</p>
 
-<p>Note also that the use of frames can break accessibility, and so this option will be completely ignored if the user has chosen the "Screenreader" option in their profile.</p>
\ No newline at end of file
+<p>Note also that the use of frame can break accessibility, and so this option will be completely ignored if the user has chosen the "Screenreader" option in their profile.</p>
+
+<p>Note finally that the use of frame isn't XHTML strict. However the "without frame" option could break some Moodle themes. In conclusion, if the resource is well displayed without frame, prefer this option to the "with frame" option.</p>
\ No newline at end of file
index 50cffef0de7274933175ce0e2bcbcfb28e80286f..04ec1c0e31e6fa36009b8ba574320fa61cf8dc79 100644 (file)
@@ -59,6 +59,9 @@ $string['imspackageloaded'] = 'Package loaded';
 $string['invalidassignment'] = 'incorrect assignment';
 $string['invalidid'] = 'Resource ID was incorrect';
 $string['keepnavigationvisible'] = 'Keep page navigation visible on the same page';
+$string['keepnavigationvisibleno'] = 'No';
+$string['keepnavigationvisibleyesframe'] = 'Yes, with frame';
+$string['keepnavigationvisibleyesobject'] = 'Yes, without frame';
 $string['localfile'] = 'Local file';
 $string['localfilechoose'] = 'Choose a local file (CD-ROM)';
 $string['localfilehelp'] = 'Help displaying local files';
index 53385c79e9a300f280cf4b5a8fd549f1ac884f43..cadd975e12b961ae8837c12b38037f8e232cb62c 100644 (file)
@@ -153,7 +153,17 @@ class resource_file extends resource_base {
             if (empty($resource->framepage)) {
                 $resource->options = '';
             } else {
-                $resource->options = 'frame';
+                switch ($resource->framepage) {
+                    case 1:
+                        $resource->options = 'frame';
+                        break;
+                    case 2:
+                        $resource->options = 'objectframe';
+                        break;
+                    default:
+                        $resource->options = '';
+                        break;
+                }
             }
             unset($resource->framepage);
             $resource->popup = '';
@@ -376,73 +386,94 @@ class resource_file extends resource_base {
         /// Now check whether we need to display a frameset
 
         $frameset = optional_param('frameset', '', PARAM_ALPHA);
-        if (empty($frameset) and !$embedded and !$inpopup and ($resource->options == "frame") and empty($USER->screenreader)) {  
-        ///Yahoo javascript libaries for updating embedded object size
-            require_js(array('yui_utilities'));
-            require_js(array('yui_container'));
-            require_js(array('yui_dom-event'));
-            require_js(array('yui_dom'));
-
-        ///Moodle Header and navigation bar
-            $navigation = build_navigation($this->navlinks, $cm);
-            print_header($pagetitle, $course->fullname, $navigation, "", "", true, update_module_button($cm->id, $course->id, $this->strresource), navmenu($course, $cm, "parent"));
-            $options = new object();
-            $options->para = false;
-            if (!empty($localpath)) {  // Show some help
-                echo '<div class="mdl-right helplink">';
-                link_to_popup_window ('/mod/resource/type/file/localpath.php', get_string('localfile', 'resource'), get_string('localfilehelp','resource'), 400, 500, get_string('localfilehelp', 'resource'));
-                echo '</div>';
-            }
-            echo '</div></div>';
-            
-        ///embedded file into iframe if the resource is on another domain
-        ///
-        ///This case is not XHTML strict but there is no alternative
-        ///The object tag alternative is XHTML strict, however IE6-7 displays a blank object on accross domain by default,
-        ///so we decided to use iframe for accross domain MDL-10021
-        if (!stristr($fullurl,$CFG->wwwroot)) {
-           echo '<p><iframe id="embeddedhtml" src ="'.$fullurl.'" width="100%" height="600"></iframe></p>';
-        }
-        else {
-        ///embedded HTML file into an object tag
-            echo '<p><object id="embeddedhtml" data="' . $fullurl . '" type="'.$mimetype.'" width="800" height="600">
-                    alt : <a href="' . $fullurl . '">' . $fullurl . '</a>
-                  </object></p>';
-        }
-        ///add some javascript in order to fit this object tag into the browser window
-            echo '<script type="text/javascript">
-                     //<![CDATA[
-                     function resizeEmbeddedHtml() {
-                         //calculate new embedded html height size
-                    ';
-            if (!empty($resource->summary)) {
-                echo'    objectheight =  YAHOO.util.Dom.getViewportHeight() - 230;
-                    ';
-            }
-            else {
-                echo'    objectheight =  YAHOO.util.Dom.getViewportHeight() - 120;
-                    ';
-            }
-            echo '       //the object tag cannot be smaller than a human readable size
-                         if (objectheight < 200) {
-                             objectheight = 200;
+        if (empty($frameset) and !$embedded and !$inpopup and ($resource->options == "frame"  || $resource->options == "objectframe") and empty($USER->screenreader)) {
+        /// display the resource into a object tag
+            if ($resource->options == "objectframe") {
+            ///Yahoo javascript libaries for updating embedded object size
+                require_js(array('yui_utilities'));
+                require_js(array('yui_container'));
+                require_js(array('yui_dom-event'));
+                require_js(array('yui_dom'));
+
+            ///Moodle Header and navigation bar
+                $navigation = build_navigation($this->navlinks, $cm);
+                print_header($pagetitle, $course->fullname, $navigation, "", "", true, update_module_button($cm->id, $course->id, $this->strresource), navmenu($course, $cm, "parent"));
+                $options = new object();
+                $options->para = false;
+                if (!empty($localpath)) {  // Show some help
+                    echo '<div class="mdl-right helplink">';
+                    link_to_popup_window ('/mod/resource/type/file/localpath.php', get_string('localfile', 'resource'), get_string('localfilehelp','resource'), 400, 500, get_string('localfilehelp', 'resource'));
+                    echo '</div>';
+                }
+                echo '</div></div>';
+
+            /// embedded file into iframe if the resource is on another domain
+            ///
+            /// This case is not XHTML strict but there is no alternative
+            /// The object tag alternative is XHTML strict, however IE6-7 displays a blank object on accross domain by default,
+            /// so we decided to use iframe for accross domain MDL-10021
+                if (!stristr($fullurl,$CFG->wwwroot)) {
+                   echo '<p><iframe id="embeddedhtml" src ="'.$fullurl.'" width="100%" height="600"></iframe></p>';
+                }
+                else {
+                ///embedded HTML file into an object tag
+                    echo '<p><object id="embeddedhtml" data="' . $fullurl . '" type="'.$mimetype.'" width="800" height="600">
+                            alt : <a href="' . $fullurl . '">' . $fullurl . '</a>
+                          </object></p>';
+                }
+            ///add some javascript in order to fit this object tag into the browser window
+                echo '<script type="text/javascript">
+                         //<![CDATA[
+                         function resizeEmbeddedHtml() {
+                             //calculate new embedded html height size
+                        ';
+                if (!empty($resource->summary)) {
+                    echo'    objectheight =  YAHOO.util.Dom.getViewportHeight() - 230;
+                        ';
+                }
+                else {
+                    echo'    objectheight =  YAHOO.util.Dom.getViewportHeight() - 120;
+                        ';
+                }
+                echo '       //the object tag cannot be smaller than a human readable size
+                             if (objectheight < 200) {
+                                 objectheight = 200;
+                             }
+                             //resize the embedded html object
+                             YAHOO.util.Dom.setStyle("embeddedhtml", "height", objectheight+"px");
+                             YAHOO.util.Dom.setStyle("embeddedhtml", "width", "100%");
                          }
-                         //resize the embedded html object
-                         YAHOO.util.Dom.setStyle("embeddedhtml", "height", objectheight+"px");
-                         YAHOO.util.Dom.setStyle("embeddedhtml", "width", "100%");
-                     }
-                     resizeEmbeddedHtml();
-                     YAHOO.widget.Overlay.windowResizeEvent.subscribe(resizeEmbeddedHtml);
-                     //]]>
-                  </script>
-            ';
-
-        ///print the summary
-            if (!empty($resource->summary)) {
-                print_simple_box(format_text($resource->summary, FORMAT_MOODLE, $formatoptions, $course->id), "center");
-            }
-            echo "</body></html>";
-            exit;            
+                         resizeEmbeddedHtml();
+                         YAHOO.widget.Overlay.windowResizeEvent.subscribe(resizeEmbeddedHtml);
+                         //]]>
+                      </script>
+                ';
+
+            ///print the summary
+                if (!empty($resource->summary)) {
+                    print_simple_box(format_text($resource->summary, FORMAT_MOODLE, $formatoptions, $course->id), "center");
+                }
+                echo "</body></html>";
+                exit;
+            } else {
+            /// display the resource into a frame tag
+                @header('Content-Type: text/html; charset=utf-8');
+                echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">\n";
+                echo "<html dir=\"ltr\">\n";
+                echo '<head>';
+                echo '<meta http-equiv="content-type" content="text/html; charset=utf-8" />';
+                echo "<title>" . format_string($course->shortname) . ": ".strip_tags(format_string($resource->name,true))."</title></head>\n";
+                echo "<frameset rows=\"$CFG->resource_framesize,*\">";
+                echo "<frame src=\"view.php?id={$cm->id}&amp;type={$resource->type}&amp;frameset=top\" title=\"".get_string('modulename','resource')."\"/>";
+                if (!empty($localpath)) {  // Show it like this so we interpose some HTML
+                    echo "<frame src=\"view.php?id={$cm->id}&amp;type={$resource->type}&amp;inpopup=true\" title=\"".get_string('modulename','resource')."\"/>";
+                } else {
+                    echo "<frame src=\"$fullurl\" title=\"".get_string('modulename','resource')."\"/>";
+                }
+                echo "</frameset>";
+                echo "</html>";
+                exit;
+             }
         }
 
 
@@ -732,8 +763,15 @@ class resource_file extends resource_base {
             }
         } else {
             $defaults['windowpopup'] = 0;
+        /// set default value of 'keep navigation visible'
             if (array_key_exists('options', $defaults)) {
-                $defaults['framepage'] = ($defaults['options']=='frame');
+                if ($defaults['options']=='frame') {
+                    $defaults['framepage'] = 1;
+                } else if ($defaults['options']=='objectframe') {
+                    $defaults['framepage'] = 2;
+                } else {
+                    $defaults['framepage'] = 0;
+                }
             }
         }
         /// load up any stored parameters
@@ -789,7 +827,8 @@ class resource_file extends resource_base {
         $mform->setDefault('windowpopup', !empty($CFG->resource_popup));
         $mform->disabledIf('windowpopup', 'forcedownload', 'checked');
 
-        $mform->addElement('checkbox', 'framepage', get_string('keepnavigationvisible', 'resource'));
+        $navoptions = array(0 => get_string('keepnavigationvisibleno','resource'), 1 => get_string('keepnavigationvisibleyesframe','resource'), 2 => get_string('keepnavigationvisibleyesobject','resource'));
+        $mform->addElement('select', 'framepage', get_string('keepnavigationvisible', 'resource'), $navoptions);
 
         $mform->setHelpButton('framepage', array('frameifpossible', get_string('keepnavigationvisible', 'resource'), 'resource'));
         $mform->setDefault('framepage', 0);