more progress on content editor
authorCindy Li <cli@ocad.ca>
Tue, 25 May 2010 20:34:10 +0000 (20:34 -0000)
committerCindy Li <cli@ocad.ca>
Tue, 25 May 2010 20:34:10 +0000 (20:34 -0000)
15 files changed:
docs/get.php [new file with mode: 0644]
docs/home/classes/ContentUtility.class.php
docs/home/editor/edit_content.php
docs/home/editor/editor_tab_functions.inc.php
docs/home/editor/editor_tabs/alternatives.inc.php
docs/include/classes/DAO/PrimaryResourcesDAO.class.php
docs/include/jscripts/flowplayer/flowplayer-3.1.2.min.js [new file with mode: 0644]
docs/include/jscripts/flowplayer/flowplayer-3.1.2.swf [new file with mode: 0644]
docs/include/jscripts/flowplayer/flowplayer.controls-3.1.2.swf [new file with mode: 0644]
docs/include/jscripts/infusion/jquery.autoHeight.js [new file with mode: 0644]
docs/include/lib/resources_parser.inc.php
docs/install/db/language_text_temp.sql
docs/install/include/config_template.php
docs/install/include/step4.php
docs/themes/default/include/header.tmpl.php

diff --git a/docs/get.php b/docs/get.php
new file mode 100644 (file)
index 0000000..fbd93e4
--- /dev/null
@@ -0,0 +1,132 @@
+<?php
+/************************************************************************/
+/* Transformable                                                        */
+/************************************************************************/
+/* Copyright (c) 2009                                                   */
+/* Adaptive Technology Resource Centre / University of Toronto          */
+/*                                                                      */
+/* This program is free software. You can redistribute it and/or        */
+/* modify it under the terms of the GNU General Public License          */
+/* as published by the Free Software Foundation.                        */
+/************************************************************************/
+
+define('TR_INCLUDE_PATH', 'include/');
+@ob_end_clean();
+header("Content-Encoding: none");
+if (isset($_GET['test'])) {
+       header('HTTP/1.1 200 OK', TRUE);
+       header('Trans-Get: OK');
+       exit;
+}
+$in_get = TRUE;
+
+require(TR_INCLUDE_PATH . 'vitals.inc.php');
+require(TR_INCLUDE_PATH . 'lib/mime.inc.php');
+
+global $_course_id;
+
+$force_download = false;
+
+//get path to file
+if (defined('TR_FORCE_GET_FILE') && TR_FORCE_GET_FILE) {
+       if ((version_compare(phpversion(), '5.2.0', '<') > 0) && !empty($_SERVER['ORIG_PATH_INFO'])){
+               //http://www.atutor.ca/atutor/mantis/view.php?id=3436
+               $current_file = $_SERVER['ORIG_PATH_INFO'];
+       } else if (!empty($_SERVER['PATH_INFO'])) {
+        $current_file = $_SERVER['PATH_INFO'];
+       } else if (!empty($_SERVER['REQUEST_URI'])) {
+               $current_file = $_SERVER['REQUEST_URI'];
+    } else if (!empty($_SERVER['PHP_SELF'])) {
+               if (!empty($_SERVER['QUERY_STRING'])) {
+            $current_file = $_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING'];
+        } else {
+               $current_file = $_SERVER['PHP_SELF'];
+               }
+    } else if (!empty($_SERVER['SCRIPT_NAME'])) {
+               if (!empty($_SERVER['QUERY_STRING'])) {
+            $current_file = $_SERVER['SCRIPT_NAME'] . '?' . $_SERVER['QUERY_STRING'];
+        } else {
+               $current_file = $_SERVER['SCRIPT_NAME'];
+               }
+    } else if (!empty($_SERVER['URL'])) {
+        if (!empty($_SERVER['QUERY_STRING'])) {
+            $current_file = $_SERVER['URL'] . '?' . $_SERVER['QUERY_STRING'];
+        }
+        $current_file = $_SERVER['URL'];
+       }
+
+       if (($pos = strpos($current_file, '/get.php')) !== FALSE) {
+               $current_file = substr($current_file, $pos + strlen('/get.php'));
+       }
+       if (substr($current_file, 0, 2) == '/@') {
+               $force_download = true;
+               $current_file = substr($current_file, 2);
+       }
+} else {
+       $current_file = $_GET['f'];
+
+       if (substr($current_file, 0, 2) == '/@') {
+               $force_download = true;
+               $current_file = substr($current_file, 2);
+       }
+}
+
+$file_name = pathinfo($current_file);
+$file_name = $file_name['basename'];
+
+if (substr($file_name, 0, 4) == 'b64:') {
+       $base64_file_name = substr($file_name, 4);
+       $file_name = base64_decode($base64_file_name);
+       $current_file = '/'.$file_name;
+}
+
+
+$file = TR_CONTENT_DIR . $_course_id . $current_file;
+
+//send header mime type
+$pathinfo = pathinfo($file);
+$ext = $pathinfo['extension'];
+if ($ext == '') {
+       $ext = 'application/octet-stream';
+} else {
+       $ext = $mime[$ext][0];
+}
+
+//check that this file is within the content directory & exists
+
+// NOTE!! for some reason realpath() is not returning FALSE when the file doesn't exist!
+$real = realpath($file);
+
+if (file_exists($real) && (substr($real, 0, strlen(TR_CONTENT_DIR)) == TR_CONTENT_DIR)) {
+       if ($force_download) {
+               header('Content-Type: application/force-download');
+               header('Content-transfer-encoding: binary'); 
+               header('Content-Disposition: attachment; filename="'.$pathinfo['basename'].'"');
+       } else {
+               header('Content-Disposition: filename="'.$pathinfo['basename'].'"');
+       }
+       
+       /**
+        * although we can check if mod_xsendfile is installed in apache2
+        * we can't actually check if it's enabled. also, we can't check if
+        * it's enabled and installed in lighty, so instead we send the 
+        * header anyway, if it works then the line after it will not
+        * execute. if it doesn't work, then the line after it will replace
+        * it so that the full server path is not exposed.
+        *
+        * x-sendfile is supported in apache2 and lighttpd 1.5+ (previously
+        * named x-send-file in lighttpd 1.4)
+        */
+       header('x-Sendfile: '.$real);
+       header('x-Sendfile: ', TRUE); // if we get here then it didn't work
+
+       header('Content-Type: '.$ext);
+
+       @readfile($real);
+       exit;
+} else {
+       header('HTTP/1.1 404 Not Found', TRUE);
+       exit;
+}
+
+?>
\ No newline at end of file
index 4da9ca9..daea3b0 100644 (file)
@@ -137,6 +137,309 @@ class ContentUtility {
                return $text;\r
        }\r
 \r
+       private static function embedFLV($text) {\r
+               global $content_base_href, $_course_id;\r
+               \r
+               // .flv - uses Flowplayer 3.0 from flowplayer.org (playing file via full URL)\r
+               preg_match_all("#\[media[0-9a-z\|]*\]http://([\w\./-]+)\.flv\[/media\]#i",$text,$media_matches[0],PREG_SET_ORDER);\r
+               $media_replace[0] ="<a class=\"flowplayerholder\"\r
+               style=\"display:block;width:##WIDTH##px;height:##HEIGHT##px;\"\r
+               href=\"http://##MEDIA1##.flv\">\r
+               </a>";\r
+               \r
+               // .flv - uses Flowplayer 3.0 from flowplayer.org (playing file from AT_content_dir)\r
+               preg_match_all("#\[media[0-9a-z\|]*\]([\w\./-]+)\.flv\[/media\]#i",$text,$media_matches[1],PREG_SET_ORDER);\r
+               $media_replace[1] ="<a class=\"flowplayerholder\"\r
+               style=\"display:block;width:##WIDTH##px;height:##HEIGHT##px;\"\r
+               href=\"".TR_BASE_HREF."get.php/".$content_base_href."##MEDIA1##.flv?_course_id=".$_course_id."\">\r
+               </a>";\r
+               \r
+               $has_flv = false;\r
+               // Executing the replace\r
+               for ($i=0;$i<count($media_replace);$i++){\r
+                       foreach($media_matches[$i] as $media)\r
+                       {\r
+                               if (is_array($media)) $has_flv = true;\r
+                               \r
+                               //find width and height for each matched media\r
+                               if (preg_match("/\[media\|([0-9]*)\|([0-9]*)\]*/", $media[0], $matches)) \r
+                               {\r
+                                       $width = $matches[1];\r
+                                       $height = $matches[2];\r
+                               }\r
+                               else\r
+                               {\r
+                                       $width = 425;\r
+                                       $height = 350;\r
+                               }\r
+                               \r
+                               //replace media tags with embedded media for each media tag\r
+                               $media_input = $media_replace[$i];\r
+                               $media_input = str_replace("##WIDTH##","$width",$media_input);\r
+                               $media_input = str_replace("##HEIGHT##","$height",$media_input);\r
+                               $media_input = str_replace("##MEDIA1##","$media[1]",$media_input);\r
+                               $media_input = str_replace("##MEDIA2##","$media[2]",$media_input);\r
+                               $text = str_replace($media[0],$media_input,$text);\r
+                       }\r
+               }\r
+               \r
+               if ($has_flv)\r
+               {\r
+                       $text .= '\r
+                       <script language="JavaScript">\r
+                               $f("a.flowplayerholder", "'.TR_BASE_HREF.'include/jscripts/flowplayer/flowplayer-3.1.2.swf", { \r
+                                       clip: { autoPlay: false },              \r
+                               plugins:  { \r
+                                       controls: { \r
+                                           all: false,  \r
+                                           play: true,  \r
+                                           scrubber: true \r
+                                       }         \r
+                                   }\r
+                               });\r
+                       </script>\r
+                       ';\r
+               }\r
+               \r
+               return $text;           \r
+       }\r
+       \r
+       public static function embedMedia($text) {\r
+               if (preg_match("/\[media(\|[0-9]+\|[0-9]+)?\]*/", $text)==0){\r
+                       return $text;\r
+               }\r
+       \r
+               $media_matches = Array();\r
+               \r
+               /*\r
+                       First, we search though the text for all different kinds of media defined by media tags and store the results in $media_matches.\r
+                       \r
+                       Then the different replacements for the different media tags are stored in $media_replace.\r
+                       \r
+                       Lastly, we loop through all $media_matches / $media_replaces. (We choose $media_replace as index because $media_matches is multi-dimensioned.) It is important that for each $media_matches there is a $media_replace with the same index. For each media match we check the width/height, or we use the default value of 425x350. We then replace the height/width/media1/media2 parameter placeholders in $media_replace with the correct ones, before running a str_replace on $text, replacing the given media with its correct replacement.\r
+                       \r
+               */\r
+               \r
+               // youtube videos\r
+               preg_match_all("#\[media[0-9a-z\|]*\]http://([a-z0-9\.]*)?youtube.com/watch\?v=([a-z0-9_-]+)\[/media\]#i",$text,$media_matches[1],PREG_SET_ORDER);\r
+               $media_replace[1] = '<object width="##WIDTH##" height="##HEIGHT##"><param name="movie" value="http://##MEDIA1##youtube.com/v/##MEDIA2##"></param><embed src="http://##MEDIA1##youtube.com/v/##MEDIA2##" type="application/x-shockwave-flash" width="##WIDTH##" height="##HEIGHT##"></embed></object>';\r
+                       \r
+               // .mpg\r
+               preg_match_all("#\[media[0-9a-z\|]*\]([.\w\d]+[^\s\"]+).mpg\[/media\]#i",$text,$media_matches[2],PREG_SET_ORDER);\r
+               $media_replace[2] = "<object data=\"##MEDIA1##.mpg\" type=\"video/mpeg\" width=\"##WIDTH##\" height=\"##HEIGHT##\"><param name=\"src\" value=\"##MEDIA1##.mpg\"><param name=\"autoplay\" value=\"false\"><param name=\"autoStart\" value=\"0\"><a href=\"##MEDIA1##.mpg\">##MEDIA1##.mpg</a></object>";\r
+               \r
+               // .avi\r
+               preg_match_all("#\[media[0-9a-z\|]*\]([.\w\d]+[^\s\"]+).avi\[/media\]#i",$text,$media_matches[3],PREG_SET_ORDER);\r
+               $media_replace[3] = "<object data=\"##MEDIA1##.avi\" type=\"video/x-msvideo\" width=\"##WIDTH##\" height=\"##HEIGHT##\"><param name=\"src\" value=\"##MEDIA1##.avi\"><param name=\"autoplay\" value=\"false\"><param name=\"autoStart\" value=\"0\"><a href=\"##MEDIA1##.avi\">##MEDIA1##.avi</a></object>";\r
+               \r
+               // .wmv\r
+               preg_match_all("#\[media[0-9a-z\|]*\]([.\w\d]+[^\s\"]+).wmv\[/media\]#i",$text,$media_matches[4],PREG_SET_ORDER);\r
+               $media_replace[4] = "<object data=\"##MEDIA1##.wmv\" type=\"video/x-ms-wmv\" width=\"##WIDTH##\" height=\"##HEIGHT##\"><param name=\"src\" value=\"##MEDIA1##.wmv\"><param name=\"autoplay\" value=\"false\"><param name=\"autoStart\" value=\"0\"><a href=\"##MEDIA1##.wmv\">##MEDIA1##.wmv</a></object>";\r
+               \r
+               // .mov\r
+               preg_match_all("#\[media[0-9a-z\|]*\]([.\w\d]+[^\s\"]+).mov\[/media\]#i",$text,$media_matches[5],PREG_SET_ORDER);\r
+               $media_replace[5] = "<object classid=\"clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B\" codebase=\"http://www.apple.com/qtactivex/qtplugin.cab\" width=\"##WIDTH##\" height=\"##HEIGHT##\"><param name=\"src\" value=\"##MEDIA1##.mov\"><param name=\"controller\" value=\"true\"><param name=\"autoplay\" value=\"false\"><!--[if gte IE 7]> <!--><object type=\"video/quicktime\" data=\"##MEDIA1##.mov\" width=\"##WIDTH##\" height=\"##HEIGHT##\"><param name=\"controller\" value=\"true\"><param name=\"autoplay\" value=\"false\"><a href=\"##MEDIA1##.mov\">##MEDIA1##.mov</a></object><!--<![endif]--><!--[if lt IE 7]><a href=\"##MEDIA1##.mov\">##MEDIA1##.mov</a><![endif]--></object>";\r
+               \r
+               // .swf\r
+               preg_match_all("#\[media[0-9a-z\|]*\]([.\w\d]+[^\s\"]+).swf\[/media\]#i",$text,$media_matches[6],PREG_SET_ORDER);\r
+               $media_replace[6] = "<object type=\"application/x-shockwave-flash\" data=\"##MEDIA1##.swf\" width=\"##WIDTH##\" height=\"##HEIGHT##\">  <param name=\"movie\" value=\"##MEDIA1##.swf\"><param name=\"loop\" value=\"false\"><a href=\"##MEDIA1##.swf\">##MEDIA1##.swf</a></object>";\r
+               \r
+               // .mp3\r
+               preg_match_all("#\[media[0-9a-z\|]*\](.+[^\s\"]+).mp3\[/media\]#i",$text,$media_matches[7],PREG_SET_ORDER);\r
+               $media_replace[7] = "<object type=\"audio/mpeg\" data=\"##MEDIA1##.mp3\" width=\"##WIDTH##\" height=\"##HEIGHT##\"><param name=\"src\" value=\"##MEDIA1##.mp3\"><param name=\"autoplay\" value=\"false\"><param name=\"autoStart\" value=\"0\"><a href=\"##MEDIA1##.mp3\">##MEDIA1##.mp3</a></object>";\r
+               \r
+               // .wav\r
+               preg_match_all("#\[media[0-9a-z\|]*\](.+[^\s\"]+).wav\[/media\]#i",$text,$media_matches[8],PREG_SET_ORDER);\r
+               $media_replace[8] ="<object type=\"audio/x-wav\" data=\"##MEDIA1##.wav\" width=\"##WIDTH##\" height=\"##HEIGHT##\"><param name=\"src\" value=\"##MEDIA1##.wav\"><param name=\"autoplay\" value=\"false\"><param name=\"autoStart\" value=\"0\"><a href=\"##MEDIA1##.wav\">##MEDIA1##.wav</a></object>";\r
+               \r
+               // .ogg\r
+               preg_match_all("#\[media[0-9a-z\|]*\](.+[^\s\"]+).ogg\[/media\]#i",$text,$media_matches[9],PREG_SET_ORDER);\r
+               $media_replace[9] ="<object type=\"application/ogg\" data=\"##MEDIA1##.ogg\" width=\"##WIDTH##\" height=\"##HEIGHT##\"><param name=\"src\" value=\"##MEDIA1##.ogg\"><a href=\"##MEDIA1##.ogg\">##MEDIA1##.ogg</a></object>";\r
+               \r
+               // .mid\r
+               preg_match_all("#\[media[0-9a-z\|]*\](.+[^\s\"]+).mid\[/media\]#i",$text,$media_matches[10],PREG_SET_ORDER);\r
+               $media_replace[10] ="<object type=\"application/x-midi\" data=\"##MEDIA1##.mid\" width=\"##WIDTH##\" height=\"##HEIGHT##\"><param name=\"src\" value=\"##MEDIA1##.mid\"><a href=\"##MEDIA1##.mid\">##MEDIA1##.mid</a></object>";\r
+               \r
+               $text = preg_replace("#\[media[0-9a-z\|]*\](.+[^\s\"]+).mid\[/media\]#i", "<object type=\"application/x-midi\" data=\"\\1.mid\" width=\"".$width."\" height=\"".$height."\"><param name=\"src\" value=\"\\1.mid\"><a href=\"\\1.mid\">\\1.mid</a></object>", $text);\r
+       \r
+               // Executing the replace\r
+               for ($i=1;$i<=count($media_replace);$i++){\r
+                       foreach($media_matches[$i] as $media)\r
+                       {\r
+                               \r
+                               //find width and height for each matched media\r
+                               if (preg_match("/\[media\|([0-9]*)\|([0-9]*)\]*/", $media[0], $matches)) \r
+                               {\r
+                                       $width = $matches[1];\r
+                                       $height = $matches[2];\r
+                               }\r
+                               else\r
+                               {\r
+                                       $width = 425;\r
+                                       $height = 350;\r
+                               }\r
+                               \r
+                               //replace media tags with embedded media for each media tag\r
+                               $media_input = $media_replace[$i];\r
+                               $media_input = str_replace("##WIDTH##","$width",$media_input);\r
+                               $media_input = str_replace("##HEIGHT##","$height",$media_input);\r
+                               $media_input = str_replace("##MEDIA1##","$media[1]",$media_input);\r
+                               $media_input = str_replace("##MEDIA2##","$media[2]",$media_input);\r
+                               $text = str_replace($media[0],$media_input,$text);\r
+                       }\r
+               }\r
+               \r
+               $text = ContentUtility::embedFLV($text);\r
+               \r
+               return $text;\r
+       }\r
+\r
+       private static function makeClickable($text) {\r
+               $text = ContentUtility::embedMedia($text);\r
+       \r
+       //      $text = eregi_replace("([[:space:]])(http[s]?)://([^[:space:]<]*)([[:alnum:]#?/&=])", "\\1<a href=\"\\2://\\3\\4\">\\3\\4</a>", $text);\r
+       //\r
+       //      $text = eregi_replace(  '([_a-zA-Z0-9\-]+(\.[_a-zA-Z0-9\-]+)*'.\r
+       //                                                      '\@'.'[_a-zA-Z0-9\-]+(\.[_a-zA-Z0-9\-]+)*'.'(\.[a-zA-Z]{1,6})+)',\r
+       //                                                      "<a href=\"mailto:\\1\">\\1</a>",\r
+       //                                                      $text);\r
+       \r
+               $text = preg_replace("/([\s])(http[s]?):\/\/(.*)(\s|\$|<br\s\/\>)(.*)/U", \r
+                                    "\\1<a href=\"\\2://\\3\">\\3</a>\\4\\5", $text);\r
+               \r
+               $text = preg_replace('/([_a-zA-Z0-9\-]+(\.[_a-zA-Z0-9\-]+)*'.\r
+                                                       '\@'.'[_a-zA-Z0-9\-]+(\.[_a-zA-Z0-9\-]+)*'.'(\.[a-zA-Z]{1,6})+)/i',\r
+                                                       "<a href=\"mailto:\\1\">\\1</a>",\r
+                                                       $text);\r
+               return $text;\r
+       }\r
+\r
+       private static function myCodes($text, $html = false) {\r
+               global $_base_path;\r
+               global $HTTP_USER_AGENT;\r
+       \r
+               if (substr($HTTP_USER_AGENT,0,11) == 'Mozilla/4.7') {\r
+                       $text = str_replace('[quote]','</p><p class="block">',$text);\r
+                       $text = str_replace('[/quote]','</p><p>',$text);\r
+       \r
+                       $text = str_replace('[reply]','</p><p class="block">',$text);\r
+                       $text = str_replace('[/reply]','</p><p>',$text);\r
+               } else {\r
+                       $text = str_replace('[quote]','<blockquote>',$text);\r
+                       $text = str_replace('[/quote]','</blockquote><p>',$text);\r
+       \r
+                       $text = str_replace('[reply]','</p><blockquote class="block"><p>',$text);\r
+                       $text = str_replace('[/reply]','</p></blockquote><p>',$text);\r
+               }\r
+       \r
+               $text = str_replace('[b]','<strong>',$text);\r
+               $text = str_replace('[/b]','</strong>',$text);\r
+       \r
+               $text = str_replace('[i]','<em>',$text);\r
+               $text = str_replace('[/i]','</em>',$text);\r
+       \r
+               $text = str_replace('[u]','<u>',$text);\r
+               $text = str_replace('[/u]','</u>',$text);\r
+       \r
+               $text = str_replace('[center]','<center>',$text);\r
+               $text = str_replace('[/center]','</center><p>',$text);\r
+       \r
+               /* colours */\r
+               $text = str_replace('[blue]','<span style="color: blue;">',$text);\r
+               $text = str_replace('[/blue]','</span>',$text);\r
+       \r
+               $text = str_replace('[orange]','<span style="color: orange;">',$text);\r
+               $text = str_replace('[/orange]','</span>',$text);\r
+       \r
+               $text = str_replace('[red]','<span style="color: red;">',$text);\r
+               $text = str_replace('[/red]','</span>',$text);\r
+       \r
+               $text = str_replace('[purple]','<span style="color: purple;">',$text);\r
+               $text = str_replace('[/purple]','</span>',$text);\r
+       \r
+               $text = str_replace('[green]','<span style="color: green;">',$text);\r
+               $text = str_replace('[/green]','</span>',$text);\r
+       \r
+               $text = str_replace('[gray]','<span style="color: gray;">',$text);\r
+               $text = str_replace('[/gray]','</span>',$text);\r
+       \r
+               $text = str_replace('[op]','<span class="bigspacer"></span> <a href="',$text);\r
+               $text = str_replace('[/op]','">'._AT('view_entire_post').'</a>',$text);\r
+       \r
+               $text = str_replace('[head1]','<h2>',$text);\r
+               $text = str_replace('[/head1]','</h2>',$text);\r
+       \r
+               $text = str_replace('[head2]','<h3>',$text);\r
+               $text = str_replace('[/head2]','</h3>',$text);\r
+       \r
+               $text = str_replace('[cid]',$_base_path.'content.php?_cid='.$_SESSION['s_cid'],$text);\r
+       \r
+               global $sequence_links, $_course_id, $_content_id;\r
+               if ($_course_id > 0 && !isset($sequence_links) && $_content_id > 0) {\r
+                       global $contentManager;\r
+                       $sequence_links = $contentManager->generateSequenceCrumbs($_content_id);\r
+               }\r
+               if (isset($sequence_links['previous']) && $sequence_links['previous']['url']) {\r
+                       $text = str_replace('[pid]', $sequence_links['previous']['url'], $text);\r
+               }\r
+               if (isset($sequence_links['next']) && $sequence_links['next']['url']) {\r
+                       $text = str_replace('[nid]', $sequence_links['next']['url'], $text);\r
+               }\r
+               if (isset($sequence_links['resume']) && $sequence_links['resume']['url']) {\r
+                       $text = str_replace('[nid]', $sequence_links['resume']['url'], $text);\r
+               }\r
+               if (isset($sequence_links['first']) && $sequence_links['first']['url']) {\r
+                       $text = str_replace('[fid]', $sequence_links['first']['url'], $text);\r
+               }\r
+       \r
+               /* contributed by Thomas M. Duffey <tduffey at homeboyz.com> */\r
+           $html = !$html ? 0 : 1;\r
+           \r
+               // little hack added by greg to add syntax highlighting without using <?php \?\>\r
+               \r
+               $text = str_replace("[code]","[code]<?php",$text);\r
+               $text = str_replace("[/code]","?>[/code]",$text);\r
+       \r
+               $text = preg_replace("/\[code\]\s*(.*)\s*\[\\/code\]/Usei", "highlight_code(fix_quotes('\\1'), $html)", $text);\r
+               // now remove the <?php added above and leave the syntax colour behind.\r
+               $text = str_replace("&lt;?php", "", $text);\r
+               $text = str_replace("?&gt;", "", $text);\r
+       \r
+               return $text;\r
+       }\r
+\r
+       private static function imageReplace($text) {\r
+               /* image urls do not require http:// */\r
+               \r
+       //      $text = eregi_replace("\[image(\|)?([[:alnum:][:space:]]*)\]" .\r
+       //                                               "[:space:]*" .\r
+       //                                               "([[:alnum:]#?/&=:\"'_.-]+)" .\r
+       //                                               "[:space:]*" .\r
+       //                                               "((\[/image\])|(.*\[/image\]))",\r
+       //                                "<img src=\"\\3\" alt=\"\\2\" />",\r
+       //                                $text);\r
+                \r
+               $text = preg_replace("/\[image(\|)?([a-zA-Z0-9\s]*)\]".\r
+                                    "[\s]*".\r
+                                    "([a-zA-Z0-9\#\?\/\&\=\:\\\"\'\_\.\-]+)[\s]*".\r
+                                    "((\[\/image\])|(.*\[\/image\]))/i",\r
+                                         "<img src=\"\\3\" alt=\"\\2\" />",\r
+                                         $text);\r
+                                         \r
+               return $text;\r
+       }\r
+       \r
+       private static function formatFinalOutput($text, $nl2br = true) {\r
+               global $_base_path;\r
+       \r
+               $text = str_replace('CONTENT_DIR/', '', $text);\r
+               if ($nl2br) {\r
+                       return nl2br(ContentUtility::imageReplace(ContentUtility::makeClickable(ContentUtility::myCodes(' '.$text, false))));\r
+               }\r
+       \r
+               return ContentUtility::imageReplace(ContentUtility::makeClickable(ContentUtility::myCodes(' '.$text, true)));\r
+       }\r
+\r
        /**\r
        * This function converts the input string into Transformable html content string \r
        * @access  public\r
@@ -215,14 +518,12 @@ class ContentUtility {
                        $input = preg_replace('/\[tex\](.*?)\[\/tex\]/sie', "'<img src=\"'.\$_config['latex_server'].rawurlencode('$1').'\" align=\"middle\">'", $input);\r
                }\r
        \r
-               /* Commented by Cindy Qi Li on Jan 12, 2010\r
                if ($html) {\r
-                       $x = apply_customized_format(format_final_output($input, false));\r
+                       $x = ContentUtility::formatFinalOutput($input, false);\r
                        return $x;\r
                }\r
        \r
-               $output = apply_customized_format(format_final_output($input));\r
-               */\r
+               $output = ContentUtility::formatFinalOutput($input);\r
        \r
                $output = '<p>'.$input.'</p>';\r
        \r
@@ -361,7 +662,7 @@ class ContentUtility {
        * @author       Cindy Qi Li\r
        */\r
        public static function applyAlternatives($cid, $content){\r
-               global $db;\r
+               global $db, $_course_id;\r
                \r
                include_once(TR_INCLUDE_PATH.'classes/DAO/DAO.class.php');\r
                $dao = new DAO();\r
@@ -427,10 +728,10 @@ class ContentUtility {
                                        $file .= $file_location;\r
                                        \r
                                        if ($row['content_path'] <> '') {\r
-                                               $file = TR_CONTENT_DIR.$_SESSION['course_id'] . '/'.$row['content_path'].'/'.$file_location;\r
+                                               $file = TR_CONTENT_DIR.$_course_id . '/'.$row['content_path'].'/'.$file_location;\r
                                        }\r
                                        else {\r
-                                               $file = TR_CONTENT_DIR.$_SESSION['course_id'] . '/'.$file_location;\r
+                                               $file = TR_CONTENT_DIR.$_course_id . '/'.$file_location;\r
                                        }\r
                                        $target = file_get_contents($file);\r
                                        \r
@@ -441,7 +742,7 @@ class ContentUtility {
                                                if (defined('TR_FORCE_GET_FILE') && TR_FORCE_GET_FILE) {\r
                                                        $course_base_href = 'get.php/';\r
                                                } else {\r
-                                                       $course_base_href = 'content/' . $_SESSION['course_id'] . '/';\r
+                                                       $course_base_href = 'content/' . $_course_id . '/';\r
                                                }\r
                \r
                                                $file = TR_BASE_HREF . $course_base_href.$file_location;\r
index 22012fb..c4375d6 100644 (file)
@@ -43,11 +43,11 @@ if ($_POST['close'] || $_GET['close']) {
                }
        }
        
-       if ($_REQUEST['cid'] == 0) {
+       if (!isset($_content_id) || $_content_id == 0) {
                header('Location: '.TR_BASE_HREF.'home/course/index.php?_course_id='.$_course_id);
                exit;
        }
-       header('Location: '.TR_BASE_HREF.'home/course/content.php?_cid='.$_cid);
+       header('Location: '.TR_BASE_HREF.'home/course/content.php?_cid='.$_content_id);
        exit;
 }
        
@@ -190,7 +190,7 @@ if ($current_tab == 0 || $current_tab == 2)
 $pid = intval($_REQUEST['pid']);
 ?>
 
-<form action="<?php echo $_SERVER['PHP_SELF']; ?>?cid=<?php echo $cid; ?>" method="post" name="form" enctype="multipart/form-data">
+<form action="<?php echo $_SERVER['PHP_SELF']; ?>?_cid=<?php echo $cid; ?>" method="post" name="form" enctype="multipart/form-data">
 <?php
 
        if ($cid) {
index b5cffac..4fe111e 100644 (file)
@@ -84,10 +84,10 @@ function isValidURL($url) {
 
 // save all changes to the DB
 function save_changes($redir, $current_tab) {
-       global $contentManager, $db, $addslashes, $msg;
+       global $contentManager, $addslashes, $msg, $_course_id, $_content_id;
        
        $_POST['pid']   = intval($_POST['pid']);
-       $_POST['cid']   = intval($_POST['cid']);
+       $_POST['_cid']  = intval($_POST['_cid']);
        
        $_POST['alternatives'] = intval($_POST['alternatives']);
        
@@ -115,33 +115,33 @@ function save_changes($redir, $current_tab) {
                $content_type_pref = CONTENT_TYPE_CONTENT;
        }
 
-       if (!($release_date = generate_release_date())) {
+       /*if (!($release_date = generate_release_date())) {
                $msg->addError('BAD_DATE');
-       }
+       }*/
 
-       if ($_POST['title'] == '') {
-               $msg->addError(array('EMPTY_FIELDS', _AT('title')));
-       }
+//     if ($_POST['title'] == '') {
+//             $msg->addError(array('EMPTY_FIELDS', _AT('title')));
+//     }
                
-       if (!$msg->containsErrors()) {
-               $_POST['title']                 = $addslashes($_POST['title']);
-               $_POST['body_text']             = $addslashes($_POST['body_text']);
-               $_POST['head']                  = $addslashes($_POST['head']);
-               $_POST['keywords']              = $addslashes($_POST['keywords']);
-               $_POST['test_message']  = $addslashes($_POST['test_message']);          
+//     if (!$msg->containsErrors()) {
+//             $_POST['title']                 = $addslashes($_POST['title']);
+//             $_POST['body_text']             = $addslashes($_POST['body_text']);
+//             $_POST['head']                  = $addslashes($_POST['head']);
+//             $_POST['keywords']              = $addslashes($_POST['keywords']);
+//             $_POST['test_message']  = $addslashes($_POST['test_message']);          
 
                // add or edit content
-               if ($_POST['cid']) {
+               if ($_POST['_cid']) {
                        /* editing an existing page */
-                       $err = $contentManager->editContent($_POST['cid'], $_POST['title'], $_POST['body_text'], 
+                       $err = $contentManager->editContent($_POST['_cid'], $_POST['title'], $_POST['body_text'], 
                                                            $_POST['keywords'], $_POST['formatting'], 
-                                                           $release_date, $_POST['head'], $_POST['use_customized_head'], 
+                                                           $_POST['head'], $_POST['use_customized_head'], 
                                                            $_POST['test_message'], $_POST['allow_test_export']);
-                       $cid = $_POST['cid'];
+                       $cid = $_POST['_cid'];
                } else {
                        /* insert new */
                        
-                       $cid = $contentManager->addContent($_SESSION['course_id'],
+                       $cid = $contentManager->addContent($_course_id,
                                                                                                  $_POST['pid'],
                                                                                                  $_POST['ordering'],
                                                                                                  $_POST['title'],
@@ -149,18 +149,18 @@ function save_changes($redir, $current_tab) {
                                                                                                  $_POST['keywords'],
                                                                                                  $_POST['related'],
                                                                                                  $_POST['formatting'],
-                                                                                                 $release_date,
                                                                                                  $_POST['head'],
                                                                                                  $_POST['use_customized_head'],
                                                                                                  $_POST['test_message'],
                                                                                                  $_POST['allow_test_export'],
                                                                                                  $content_type_pref);
-                       $_POST['cid']    = $cid;
-                       $_REQUEST['cid'] = $cid;
+                       $_POST['_cid']    = $cid;
+                       $_REQUEST['_cid'] = $cid;
                }
-       }
+//     }
 
        /* insert glossary terms */
+       /*
        if (is_array($_POST['glossary_defs']) && ($num_terms = count($_POST['glossary_defs']))) {
                global $glossary, $glossary_ids, $msg;
 
@@ -185,7 +185,7 @@ function save_changes($redir, $current_tab) {
                                $glossary[$old_w] = $d;
                        }
                }
-       }
+       }*/
        if (isset($_GET['tab'])) {
                $current_tab = intval($_GET['tab']);
        }
@@ -196,6 +196,9 @@ function save_changes($redir, $current_tab) {
        // adapted content: save primary content type
        if (isset($_POST['use_post_for_alt']))
        {
+               include_once(TR_INCLUDE_PATH.'classes/DAO/PrimaryResourcesTypesDAO.class.php');
+               $primaryResourcesTypesDAO = new PrimaryResourcesTypesDAO();
+               
                // 1. delete old primary content type
                $sql = "DELETE FROM ".TABLE_PREFIX."primary_resources_types
                         WHERE primary_resource_id in 
@@ -203,7 +206,7 @@ function save_changes($redir, $current_tab) {
                                  FROM ".TABLE_PREFIX."primary_resources
                                 WHERE content_id=".$cid."
                                   AND language_code='".$_SESSION['lang']."')";
-               $result = mysql_query($sql, $db);
+               $primaryResourcesTypesDAO->execute($sql);
                
                // 2. insert the new primary content type
                $sql = "SELECT pr.primary_resource_id, rt.type_id
@@ -211,24 +214,31 @@ function save_changes($redir, $current_tab) {
                                 TABLE_PREFIX."resource_types rt
                         WHERE pr.content_id = ".$cid."
                           AND pr.language_code = '".$_SESSION['lang']."'";
-               $all_types_result = mysql_query($sql, $db);
+               $all_types_rows = $primaryResourcesTypesDAO->execute($sql);
                
-               while ($type = mysql_fetch_assoc($all_types_result)) {
-                       if (isset($_POST['alt_'.$type['primary_resource_id'].'_'.$type['type_id']]))
-                       {
-                               $sql = "INSERT INTO ".TABLE_PREFIX."primary_resources_types (primary_resource_id, type_id)
-                                       VALUES (".$type['primary_resource_id'].", ".$type['type_id'].")";
-                               $result = mysql_query($sql, $db);
+               if (is_array($all_types_rows)) {
+                       foreach ($all_types_rows as $type) {
+                               if (isset($_POST['alt_'.$type['primary_resource_id'].'_'.$type['type_id']]))
+                               {
+                                       $primaryResourcesTypesDAO->Create($type['primary_resource_id'], $type['type_id']);
+//                                     $sql = "INSERT INTO ".TABLE_PREFIX."primary_resources_types (primary_resource_id, type_id)
+//                                             VALUES (".$type['primary_resource_id'].", ".$type['type_id'].")";
+//                                     $result = mysql_query($sql, $db);
+                               }
                        }
                }
        }
        
-       //Add test to this content - @harris
-       $sql = 'SELECT * FROM '.TABLE_PREFIX."content_tests_assoc WHERE content_id=$_POST[cid]";
-       $result = mysql_query($sql, $db);
+       include_once(TR_INCLUDE_PATH.'classes/DAO/ContentTestsAssocDAO.class.php');
+       $contentTestsAssocDAO = new ContentTestsAssocDAO();
+       $test_rows = $contentTestsAssocDAO->getByContent($_POST['_cid']);
+//     $sql = 'SELECT * FROM '.TABLE_PREFIX."content_tests_assoc WHERE content_id=$_POST[cid]";
+//     $result = mysql_query($sql, $db);
        $db_test_array = array();
-       while ($row = mysql_fetch_assoc($result)) {
-               $db_test_array[] = $row['test_id'];
+       if (is_array($test_rows)) {
+               foreach ($test_rows as $row) {
+                       $db_test_array[] = $row['test_id'];
+               }
        }
 
        if (is_array($_POST['tid']) && sizeof($_POST['tid']) > 0){
@@ -238,73 +248,57 @@ function save_changes($redir, $current_tab) {
                if (!empty($toBeDeleted)){
                        $tids = implode(",", $toBeDeleted);
                        $sql = 'DELETE FROM '. TABLE_PREFIX . "content_tests_assoc WHERE content_id=$_POST[cid] AND test_id IN ($tids)";
-                       $result = mysql_query($sql, $db);
+                       $contentTestsAssocDAO->execute($sql);
                }
        
                //Add entries
                if (!empty($toBeAdded)){
                        foreach ($toBeAdded as $i => $tid){
                                $tid = intval($tid);
-                               $sql = 'INSERT INTO '. TABLE_PREFIX . "content_tests_assoc SET content_id=$_POST[cid], test_id=$tid";
-                               $result = mysql_query($sql, $db);
-                               if ($result===false){
-                                       $msg->addError('MYSQL_FAILED');
+//                             $sql = 'INSERT INTO '. TABLE_PREFIX . "content_tests_assoc SET content_id=$_POST[cid], test_id=$tid";
+//                             $result = mysql_query($sql, $db);
+                               if ($contentTestsAssocDAO->Create($_POST['_cid'], $tid) === false){
+                                       $msg->addError('DB_NOT_UPDATED');
                                }
                        }
                }
        } else {
                //All tests has been removed.
-               $sql = 'DELETE FROM '. TABLE_PREFIX . "content_tests_assoc WHERE content_id=$_POST[cid]";
-               $result = mysql_query($sql, $db);
+               $contentTestsAssocDAO->DeleteByContentID($_POST['_cid']);
+//             $sql = 'DELETE FROM '. TABLE_PREFIX . "content_tests_assoc WHERE content_id=$_POST[cid]";
+//             $result = mysql_query($sql, $db);
        }
        //End Add test
 
-       // add pre-tests
-       $sql = "DELETE FROM ". TABLE_PREFIX . "content_prerequisites 
-                WHERE content_id=".$_POST[cid]." AND type='".CONTENT_PRE_TEST."'";
-       $result = mysql_query($sql, $db);
-       
-       if (is_array($_POST['pre_tid']) && sizeof($_POST['pre_tid']) > 0)
-       {
-               foreach ($_POST['pre_tid'] as $i => $tid){
-                       $tid = intval($tid);
-                       $sql = "INSERT INTO ". TABLE_PREFIX . "content_prerequisites 
-                                  SET content_id=".$_POST[cid].", type='".CONTENT_PRE_TEST."', item_id=$tid";
-                       $result = mysql_query($sql, $db);
-                       
-                       if ($result===false) $msg->addError('MYSQL_FAILED');
+       //TODO*******************BOLOGNA****************REMOVE ME**************/
+/*
+       if(isset($_SESSION['associated_forum']) && !$msg->containsErrors()){
+               if($_SESSION['associated_forum']=='none'){
+                       $sql = "DELETE FROM ".TABLE_PREFIX."content_forums_assoc WHERE content_id='$_POST[cid]'";
+                       mysql_query($sql,$db);
+               } else {
+                       $sql = "DELETE FROM ".TABLE_PREFIX."content_forums_assoc WHERE content_id='$_POST[cid]'";
+                       mysql_query($sql,$db);
+                       $associated_forum = $_SESSION['associated_forum'];
+                       for($i=0; $i<count($associated_forum); $i++){
+                               $sql="INSERT INTO ".TABLE_PREFIX."content_forums_assoc SET content_id='$_POST[cid]',forum_id='$associated_forum[$i]'";
+                               mysql_query($sql,$db);
+                       }
                }
+               unset($_SESSION['associated_forum']);
        }
-
-        //TODO*******************BOLOGNA****************REMOVE ME**************/
-         if(isset($_SESSION['associated_forum']) && !$msg->containsErrors()){
-            if($_SESSION['associated_forum']=='none'){
-                $sql = "DELETE FROM ".TABLE_PREFIX."content_forums_assoc WHERE content_id='$_POST[cid]'";
-                mysql_query($sql,$db);
-            } else {
-                $sql = "DELETE FROM ".TABLE_PREFIX."content_forums_assoc WHERE content_id='$_POST[cid]'";
-                mysql_query($sql,$db);
-                $associated_forum = $_SESSION['associated_forum'];
-                for($i=0; $i<count($associated_forum); $i++){
-                    $sql="INSERT INTO ".TABLE_PREFIX."content_forums_assoc SET content_id='$_POST[cid]',forum_id='$associated_forum[$i]'";
-                    mysql_query($sql,$db);
-                }
-            }
-            unset($_SESSION['associated_forum']);
-         }
-
-
+*/
        if (!$msg->containsErrors() && $redir) {
                $_SESSION['save_n_close'] = $_POST['save_n_close'];
                
                $msg->addFeedback('ACTION_COMPLETED_SUCCESSFULLY');
-               header('Location: '.basename($_SERVER['PHP_SELF']).'?cid='.$cid.SEP.'close='.$addslashes($_POST['save_n_close']).SEP.'tab='.$addslashes($_POST['current_tab']).SEP.'displayhead='.$addslashes($_POST['displayhead']).SEP.'alternatives='.$addslashes($_POST['alternatives']));
+               header('Location: '.basename($_SERVER['PHP_SELF']).'?_cid='.$cid.SEP.'close='.$addslashes($_POST['save_n_close']).SEP.'tab='.$addslashes($_POST['current_tab']).SEP.'displayhead='.$addslashes($_POST['displayhead']).SEP.'alternatives='.$addslashes($_POST['alternatives']));
                exit;
        } else {
                return;
        }
 }
-
+/*
 function generate_release_date($now = false) {
        if ($now) {
                $day  = date('d');
@@ -340,7 +334,7 @@ function generate_release_date($now = false) {
        
        return $release_date;
 }
-
+*/
 function check_for_changes($row, $row_alternatives) {
        global $contentManager, $cid, $glossary, $glossary_ids_related, $addslashes;
 
index f7b188f..7b83734 100644 (file)
@@ -23,12 +23,12 @@ if (!defined('TR_INCLUDE_PATH')) { exit; }
  */
 function get_preview_link($file)
 {
-       global $content_row;
+       global $content_row, $_course_id;
        
        if (defined('TR_FORCE_GET_FILE') && TR_FORCE_GET_FILE) {
                $get_file = 'get.php/';
        } else {
-               $get_file = 'content/' . $_SESSION['course_id'] . '/';
+               $get_file = 'content/' . $_course_id . '/';
        }
        
        return $get_file.$content_row['content_path'].'/'.$file;
index 692c82e..ca2b3b4 100644 (file)
@@ -100,9 +100,9 @@ class PrimaryResourcesDAO extends DAO {
        }
        
        /**
-       * Return a config row by content_id
+       * Return rows by content_id
        * @access  public
-       * @param   name
+       * @param   cid: content_id
        * @return  table rows
        * @author  Cindy Qi Li
        */
diff --git a/docs/include/jscripts/flowplayer/flowplayer-3.1.2.min.js b/docs/include/jscripts/flowplayer/flowplayer-3.1.2.min.js
new file mode 100644 (file)
index 0000000..0d202cb
--- /dev/null
@@ -0,0 +1,24 @@
+/* 
+ * flowplayer.js 3.1.2. The Flowplayer API
+ * 
+ * Copyright 2009 Flowplayer Oy
+ * 
+ * This file is part of Flowplayer.
+ * 
+ * Flowplayer is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * Flowplayer is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with Flowplayer.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * Date: 2009-02-25 16:24:29 -0500 (Wed, 25 Feb 2009)
+ * Revision: 166 
+ */
+(function(){function g(o){console.log("$f.fireEvent",[].slice.call(o))}function k(q){if(!q||typeof q!="object"){return q}var o=new q.constructor();for(var p in q){if(q.hasOwnProperty(p)){o[p]=k(q[p])}}return o}function m(t,q){if(!t){return}var o,p=0,r=t.length;if(r===undefined){for(o in t){if(q.call(t[o],o,t[o])===false){break}}}else{for(var s=t[0];p<r&&q.call(s,p,s)!==false;s=t[++p]){}}return t}function c(o){return document.getElementById(o)}function i(q,p,o){if(typeof p!="object"){return q}if(q&&p){m(p,function(r,s){if(!o||typeof s!="function"){q[r]=s}})}return q}function n(s){var q=s.indexOf(".");if(q!=-1){var p=s.substring(0,q)||"*";var o=s.substring(q+1,s.length);var r=[];m(document.getElementsByTagName(p),function(){if(this.className&&this.className.indexOf(o)!=-1){r.push(this)}});return r}}function f(o){o=o||window.event;if(o.preventDefault){o.stopPropagation();o.preventDefault()}else{o.returnValue=false;o.cancelBubble=true}return false}function j(q,o,p){q[o]=q[o]||[];q[o].push(p)}function e(){return"_"+(""+Math.random()).substring(2,10)}var h=function(t,r,s){var q=this;var p={};var u={};q.index=r;if(typeof t=="string"){t={url:t}}i(this,t,true);m(("Begin*,Start,Pause*,Resume*,Seek*,Stop*,Finish*,LastSecond,Update,BufferFull,BufferEmpty,BufferStop").split(","),function(){var v="on"+this;if(v.indexOf("*")!=-1){v=v.substring(0,v.length-1);var w="onBefore"+v.substring(2);q[w]=function(x){j(u,w,x);return q}}q[v]=function(x){j(u,v,x);return q};if(r==-1){if(q[w]){s[w]=q[w]}if(q[v]){s[v]=q[v]}}});i(this,{onCuepoint:function(x,w){if(arguments.length==1){p.embedded=[null,x];return q}if(typeof x=="number"){x=[x]}var v=e();p[v]=[x,w];if(s.isLoaded()){s._api().fp_addCuepoints(x,r,v)}return q},update:function(w){i(q,w);if(s.isLoaded()){s._api().fp_updateClip(w,r)}var v=s.getConfig();var x=(r==-1)?v.clip:v.playlist[r];i(x,w,true)},_fireEvent:function(v,y,w,A){if(v=="onLoad"){m(p,function(B,C){if(C[0]){s._api().fp_addCuepoints(C[0],r,B)}});return false}A=A||q;if(v=="onCuepoint"){var z=p[y];if(z){return z[1].call(s,A,w)}}if(y&&"onBeforeBegin,onMetaData,onStart,onUpdate,onResume".indexOf(v)!=-1){i(A,y);if(y.metaData){if(!A.duration){A.duration=y.metaData.duration}else{A.fullDuration=y.metaData.duration}}}var x=true;m(u[v],function(){x=this.call(s,A,y,w)});return x}});if(t.onCuepoint){var o=t.onCuepoint;q.onCuepoint.apply(q,typeof o=="function"?[o]:o);delete t.onCuepoint}m(t,function(v,w){if(typeof w=="function"){j(u,v,w);delete t[v]}});if(r==-1){s.onCuepoint=this.onCuepoint}};var l=function(p,r,q,t){var s={};var o=this;var u=false;if(t){i(s,t)}m(r,function(v,w){if(typeof w=="function"){s[v]=w;delete r[v]}});i(this,{animate:function(y,z,x){if(!y){return o}if(typeof z=="function"){x=z;z=500}if(typeof y=="string"){var w=y;y={};y[w]=z;z=500}if(x){var v=e();s[v]=x}if(z===undefined){z=500}r=q._api().fp_animate(p,y,z,v);return o},css:function(w,x){if(x!==undefined){var v={};v[w]=x;w=v}r=q._api().fp_css(p,w);i(o,r);return o},show:function(){this.display="block";q._api().fp_showPlugin(p);return o},hide:function(){this.display="none";q._api().fp_hidePlugin(p);return o},toggle:function(){this.display=q._api().fp_togglePlugin(p);return o},fadeTo:function(y,x,w){if(typeof x=="function"){w=x;x=500}if(w){var v=e();s[v]=w}this.display=q._api().fp_fadeTo(p,y,x,v);this.opacity=y;return o},fadeIn:function(w,v){return o.fadeTo(1,w,v)},fadeOut:function(w,v){return o.fadeTo(0,w,v)},getName:function(){return p},getPlayer:function(){return q},_fireEvent:function(w,v,x){if(w=="onUpdate"){var y=q._api().fp_getPlugin(p);if(!y){return}i(o,y);delete o.methods;if(!u){m(y.methods,function(){var A=""+this;o[A]=function(){var B=[].slice.call(arguments);var C=q._api().fp_invoke(p,A,B);return C==="undefined"||C===undefined?o:C}});u=true}}var z=s[w];if(z){z.apply(o,v);if(w.substring(0,1)=="_"){delete s[w]}}}})};function b(o,t,z){var E=this,y=null,x,u,p=[],s={},B={},r,v,w,D,A,q;i(E,{id:function(){return r},isLoaded:function(){return(y!==null)},getParent:function(){return o},hide:function(F){if(F){o.style.height="0px"}if(y){y.style.height="0px"}return E},show:function(){o.style.height=q+"px";if(y){y.style.height=A+"px"}return E},isHidden:function(){return y&&parseInt(y.style.height,10)===0},load:function(F){if(!y&&E._fireEvent("onBeforeLoad")!==false){m(a,function(){this.unload()});x=o.innerHTML;if(x&&!flashembed.isSupported(t.version)){o.innerHTML=""}flashembed(o,t,{config:z});if(F){F.cached=true;j(B,"onLoad",F)}}return E},unload:function(){try{if(!y||y.fp_isFullscreen()){return E}}catch(F){return E}if(x.replace(/\s/g,"")!==""){if(E._fireEvent("onBeforeUnload")===false){return E}y.fp_close();y=null;o.innerHTML=x;E._fireEvent("onUnload")}return E},getClip:function(F){if(F===undefined){F=D}return p[F]},getCommonClip:function(){return u},getPlaylist:function(){return p},getPlugin:function(F){var H=s[F];if(!H&&E.isLoaded()){var G=E._api().fp_getPlugin(F);if(G){H=new l(F,G,E);s[F]=H}}return H},getScreen:function(){return E.getPlugin("screen")},getControls:function(){return E.getPlugin("controls")},getConfig:function(F){return F?k(z):z},getFlashParams:function(){return t},loadPlugin:function(I,H,K,J){if(typeof K=="function"){J=K;K={}}var G=J?e():"_";E._api().fp_loadPlugin(I,H,K,G);var F={};F[G]=J;var L=new l(I,null,E,F);s[I]=L;return L},getState:function(){return y?y.fp_getState():-1},play:function(G,F){function H(){if(G!==undefined){E._api().fp_play(G,F)}else{E._api().fp_play()}}if(y){H()}else{E.load(function(){H()})}return E},getVersion:function(){var G="flowplayer.js 3.1.2";if(y){var F=y.fp_getVersion();F.push(G);return F}return G},_api:function(){if(!y){throw"Flowplayer "+E.id()+" not loaded when calling an API method"}return y},setClip:function(F){E.setPlaylist([F]);return E},getIndex:function(){return w}});m(("Click*,Load*,Unload*,Keypress*,Volume*,Mute*,Unmute*,PlaylistReplace,ClipAdd,Fullscreen*,FullscreenExit,Error,MouseOver,MouseOut").split(","),function(){var F="on"+this;if(F.indexOf("*")!=-1){F=F.substring(0,F.length-1);var G="onBefore"+F.substring(2);E[G]=function(H){j(B,G,H);return E}}E[F]=function(H){j(B,F,H);return E}});m(("pause,resume,mute,unmute,stop,toggle,seek,getStatus,getVolume,setVolume,getTime,isPaused,isPlaying,startBuffering,stopBuffering,isFullscreen,toggleFullscreen,reset,close,setPlaylist,addClip").split(","),function(){var F=this;E[F]=function(H,G){if(!y){return E}var I=null;if(H!==undefined&&G!==undefined){I=y["fp_"+F](H,G)}else{I=(H===undefined)?y["fp_"+F]():y["fp_"+F](H)}return I==="undefined"||I===undefined?E:I}});E._fireEvent=function(O){if(typeof O=="string"){O=[O]}var P=O[0],M=O[1],K=O[2],J=O[3],I=0;if(z.debug){g(O)}if(!y&&P=="onLoad"&&M=="player"){y=y||c(v);A=y.clientHeight;m(p,function(){this._fireEvent("onLoad")});m(s,function(Q,R){R._fireEvent("onUpdate")});u._fireEvent("onLoad")}if(P=="onLoad"&&M!="player"){return}if(P=="onError"){if(typeof M=="string"||(typeof M=="number"&&typeof K=="number")){M=K;K=J}}if(P=="onContextMenu"){m(z.contextMenu[M],function(Q,R){R.call(E)});return}if(P=="onPluginEvent"){var F=M.name||M;var G=s[F];if(G){G._fireEvent("onUpdate",M);G._fireEvent(K,O.slice(3))}return}if(P=="onPlaylistReplace"){p=[];var L=0;m(M,function(){p.push(new h(this,L++,E))})}if(P=="onClipAdd"){if(M.isInStream){return}M=new h(M,K,E);p.splice(K,0,M);for(I=K+1;I<p.length;I++){p[I].index++}}var N=true;if(typeof M=="number"&&M<p.length){D=M;var H=p[M];if(H){N=H._fireEvent(P,K,J)}if(!H||N!==false){N=u._fireEvent(P,K,J,H)}}m(B[P],function(){N=this.call(E,M,K);if(this.cached){B[P].splice(I,1)}if(N===false){return false}I++});return N};function C(){if($f(o)){$f(o).getParent().innerHTML="";w=$f(o).getIndex();a[w]=E}else{a.push(E);w=a.length-1}q=parseInt(o.style.height,10)||o.clientHeight;if(typeof t=="string"){t={src:t}}r=o.id||"fp"+e();v=t.id||r+"_api";t.id=v;z.playerId=r;if(typeof z=="string"){z={clip:{url:z}}}if(typeof z.clip=="string"){z.clip={url:z.clip}}z.clip=z.clip||{};if(o.getAttribute("href",2)&&!z.clip.url){z.clip.url=o.getAttribute("href",2)}u=new h(z.clip,-1,E);z.playlist=z.playlist||[z.clip];var F=0;m(z.playlist,function(){var H=this;if(typeof H=="object"&&H.length){H={url:""+H}}m(z.clip,function(I,J){if(J!==undefined&&H[I]===undefined&&typeof J!="function"){H[I]=J}});z.playlist[F]=H;H=new h(H,F,E);p.push(H);F++});m(z,function(H,I){if(typeof I=="function"){if(u[H]){u[H](I)}else{j(B,H,I)}delete z[H]}});m(z.plugins,function(H,I){if(I){s[H]=new l(H,I,E)}});if(!z.plugins||z.plugins.controls===undefined){s.controls=new l("controls",null,E)}s.canvas=new l("canvas",null,E);t.bgcolor=t.bgcolor||"#000000";t.version=t.version||[9,0];t.expressInstall="http://www.flowplayer.org/swf/expressinstall.swf";function G(H){if(!E.isLoaded()&&E._fireEvent("onBeforeClick")!==false){E.load()}return f(H)}x=o.innerHTML;if(x.replace(/\s/g,"")!==""){if(o.addEventListener){o.addEventListener("click",G,false)}else{if(o.attachEvent){o.attachEvent("onclick",G)}}}else{if(o.addEventListener){o.addEventListener("click",f,false)}E.load()}}if(typeof o=="string"){flashembed.domReady(function(){var F=c(o);if(!F){throw"Flowplayer cannot access element: "+o}else{o=F;C()}})}else{C()}}var a=[];function d(o){this.length=o.length;this.each=function(p){m(o,p)};this.size=function(){return o.length}}window.flowplayer=window.$f=function(){var p=null;var o=arguments[0];if(!arguments.length){m(a,function(){if(this.isLoaded()){p=this;return false}});return p||a[0]}if(arguments.length==1){if(typeof o=="number"){return a[o]}else{if(o=="*"){return new d(a)}m(a,function(){if(this.id()==o.id||this.id()==o||this.getParent()==o){p=this;return false}});return p}}if(arguments.length>1){var r=arguments[1];var q=(arguments.length==3)?arguments[2]:{};if(typeof o=="string"){if(o.indexOf(".")!=-1){var t=[];m(n(o),function(){t.push(new b(this,k(r),k(q)))});return new d(t)}else{var s=c(o);return new b(s!==null?s:o,r,q)}}else{if(o){return new b(o,r,q)}}}return null};i(window.$f,{fireEvent:function(){var o=[].slice.call(arguments);var q=$f(o[0]);return q?q._fireEvent(o.slice(1)):null},addPlugin:function(o,p){b.prototype[o]=p;return $f},each:m,extend:i});if(typeof jQuery=="function"){jQuery.prototype.flowplayer=function(q,p){if(!arguments.length||typeof arguments[0]=="number"){var o=[];this.each(function(){var r=$f(this);if(r){o.push(r)}});return arguments.length?o[arguments[0]]:new d(o)}return this.each(function(){$f(this,k(q),p?k(p):{})})}}})();(function(){var e=typeof jQuery=="function";function i(){if(c.done){return false}var k=document;if(k&&k.getElementsByTagName&&k.getElementById&&k.body){clearInterval(c.timer);c.timer=null;for(var j=0;j<c.ready.length;j++){c.ready[j].call()}c.ready=null;c.done=true}}var c=e?jQuery:function(j){if(c.done){return j()}if(c.timer){c.ready.push(j)}else{c.ready=[j];c.timer=setInterval(i,13)}};function f(k,j){if(j){for(key in j){if(j.hasOwnProperty(key)){k[key]=j[key]}}}return k}function g(j){switch(h(j)){case"string":j=j.replace(new RegExp('(["\\\\])',"g"),"\\$1");j=j.replace(/^\s?(\d+)%/,"$1pct");return'"'+j+'"';case"array":return"["+b(j,function(m){return g(m)}).join(",")+"]";case"function":return'"function()"';case"object":var k=[];for(var l in j){if(j.hasOwnProperty(l)){k.push('"'+l+'":'+g(j[l]))}}return"{"+k.join(",")+"}"}return String(j).replace(/\s/g," ").replace(/\'/g,'"')}function h(k){if(k===null||k===undefined){return false}var j=typeof k;return(j=="object"&&k.push)?"array":j}if(window.attachEvent){window.attachEvent("onbeforeunload",function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){}})}function b(j,m){var l=[];for(var k in j){if(j.hasOwnProperty(k)){l[k]=m(j[k])}}return l}function a(q,s){var o=f({},q);var r=document.all;var m='<object width="'+o.width+'" height="'+o.height+'"';if(r&&!o.id){o.id="_"+(""+Math.random()).substring(9)}if(o.id){m+=' id="'+o.id+'"'}o.src+=((o.src.indexOf("?")!=-1?"&":"?")+Math.random());if(o.w3c||!r){m+=' data="'+o.src+'" type="application/x-shockwave-flash"'}else{m+=' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'}m+=">";if(o.w3c||r){m+='<param name="movie" value="'+o.src+'" />'}o.width=o.height=o.id=o.w3c=o.src=null;for(var j in o){if(o[j]!==null){m+='<param name="'+j+'" value="'+o[j]+'" />'}}var n="";if(s){for(var l in s){if(s[l]!==null){n+=l+"="+(typeof s[l]=="object"?g(s[l]):s[l])+"&"}}n=n.substring(0,n.length-1);m+='<param name="flashvars" value=\''+n+"' />"}m+="</object>";return m}function d(l,o,k){var j=flashembed.getVersion();f(this,{getContainer:function(){return l},getConf:function(){return o},getVersion:function(){return j},getFlashvars:function(){return k},getApi:function(){return l.firstChild},getHTML:function(){return a(o,k)}});var p=o.version;var q=o.expressInstall;var n=!p||flashembed.isSupported(p);if(n){o.onFail=o.version=o.expressInstall=null;l.innerHTML=a(o,k)}else{if(p&&q&&flashembed.isSupported([6,65])){f(o,{src:q});k={MMredirectURL:location.href,MMplayerType:"PlugIn",MMdoctitle:document.title};l.innerHTML=a(o,k)}else{if(l.innerHTML.replace(/\s/g,"")!==""){}else{l.innerHTML="<h2>Flash version "+p+" or greater is required</h2><h3>"+(j[0]>0?"Your version is "+j:"You have no flash plugin installed")+"</h3>"+(l.tagName=="A"?"<p>Click here to download latest version</p>":"<p>Download latest version from <a href='http://www.adobe.com/go/getflashplayer'>here</a></p>");if(l.tagName=="A"){l.onclick=function(){location.href="http://www.adobe.com/go/getflashplayer"}}}}}if(!n&&o.onFail){var m=o.onFail.call(this);if(typeof m=="string"){l.innerHTML=m}}if(document.all){window[o.id]=document.getElementById(o.id)}}window.flashembed=function(k,l,j){if(typeof k=="string"){var m=document.getElementById(k);if(m){k=m}else{c(function(){flashembed(k,l,j)});return}}if(!k){return}var n={width:"100%",height:"100%",allowfullscreen:true,allowscriptaccess:"always",quality:"high",version:null,onFail:null,expressInstall:null,w3c:false};if(typeof l=="string"){l={src:l}}f(n,l);return new d(k,n,j)};f(window.flashembed,{getVersion:function(){var l=[0,0];if(navigator.plugins&&typeof navigator.plugins["Shockwave Flash"]=="object"){var k=navigator.plugins["Shockwave Flash"].description;if(typeof k!="undefined"){k=k.replace(/^.*\s+(\S+\s+\S+$)/,"$1");var m=parseInt(k.replace(/^(.*)\..*$/,"$1"),10);var q=/r/.test(k)?parseInt(k.replace(/^.*r(.*)$/,"$1"),10):0;l=[m,q]}}else{if(window.ActiveXObject){try{var o=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")}catch(p){try{o=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");l=[6,0];o.AllowScriptAccess="always"}catch(j){if(l[0]==6){return l}}try{o=new ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(n){}}if(typeof o=="object"){k=o.GetVariable("$version");if(typeof k!="undefined"){k=k.replace(/^\S+\s+(.*)$/,"$1").split(",");l=[parseInt(k[0],10),parseInt(k[2],10)]}}}}return l},isSupported:function(j){var l=flashembed.getVersion();var k=(l[0]>j[0])||(l[0]==j[0]&&l[1]>=j[1]);return k},domReady:c,asString:g,getHTML:a});if(e){jQuery.tools=jQuery.tools||{version:{}};jQuery.tools.version.flashembed="1.0.3";jQuery.fn.flashembed=function(k,j){var l=null;this.each(function(){l=flashembed(this,k,j)});return k.api===false?this:l}}})();
\ No newline at end of file
diff --git a/docs/include/jscripts/flowplayer/flowplayer-3.1.2.swf b/docs/include/jscripts/flowplayer/flowplayer-3.1.2.swf
new file mode 100644 (file)
index 0000000..40b9647
Binary files /dev/null and b/docs/include/jscripts/flowplayer/flowplayer-3.1.2.swf differ
diff --git a/docs/include/jscripts/flowplayer/flowplayer.controls-3.1.2.swf b/docs/include/jscripts/flowplayer/flowplayer.controls-3.1.2.swf
new file mode 100644 (file)
index 0000000..82c03fd
Binary files /dev/null and b/docs/include/jscripts/flowplayer/flowplayer.controls-3.1.2.swf differ
diff --git a/docs/include/jscripts/infusion/jquery.autoHeight.js b/docs/include/jscripts/infusion/jquery.autoHeight.js
new file mode 100644 (file)
index 0000000..01e0399
--- /dev/null
@@ -0,0 +1,34 @@
+function doIframe(){\r
+       o = document.getElementsByTagName('iframe');\r
+       for(i=0;i<o.length;i++){\r
+               if (/\bautoHeight\b/.test(o[i].className)){\r
+                       setHeight(o[i]);\r
+                       addEvent(o[i],'load', doIframe);\r
+               }\r
+       }\r
+}\r
+\r
+function setHeight(e){\r
+       if(e.contentDocument){\r
+               e.height = e.contentDocument.body.offsetHeight + 35;\r
+       } else {\r
+               e.height = e.contentWindow.document.body.scrollHeight;\r
+       }\r
+}\r
+\r
+function addEvent(obj, evType, fn){\r
+       if(obj.addEventListener)\r
+       {\r
+       obj.addEventListener(evType, fn,false);\r
+       return true;\r
+       } else if (obj.attachEvent){\r
+       var r = obj.attachEvent("on"+evType, fn);\r
+       return r;\r
+       } else {\r
+       return false;\r
+       }\r
+}\r
+\r
+if (document.getElementById && document.createTextNode){\r
+ addEvent(window,'load', doIframe);    \r
+}\r
index ee329c2..eec3c27 100644 (file)
@@ -1,33 +1,28 @@
 <?php
-/****************************************************************/
-/* ATutor                                                                                                              */
-/****************************************************************/
-/* Copyright (c) 2002-2008 by Greg Gay & Joel Kronenberg        */
-/* Adaptive Technology Resource Centre / University of Toronto  */
-/* http://atutor.ca                                                                                            */
-/*                                                              */
-/* This program is free software. You can redistribute it and/or*/
-/* modify it under the terms of the GNU General Public License  */
-/* as published by the Free Software Foundation.                               */
-/****************************************************************/
-// $Id: resources_parser_inc.inc.php 7208 2008-07-04 16:07:24Z silvia $
-
-if (!defined('AT_INCLUDE_PATH')) { exit; }
-//require(AT_INCLUDE_PATH.'lib/output.inc.php');
+/************************************************************************/
+/* Transformable                                                        */
+/************************************************************************/
+/* Copyright (c) 2009                                                   */
+/* Adaptive Technology Resource Centre / University of Toronto          */
+/*                                                                      */
+/* This program is free software. You can redistribute it and/or        */
+/* modify it under the terms of the GNU General Public License          */
+/* as published by the Free Software Foundation.                        */
+/************************************************************************/
+
+if (!defined('TR_INCLUDE_PATH')) { exit; }
 
 global $db;
 
-define('AT_INCLUDE_PATH', '../include/');
-
-//echo 'uffa';
-//echo $_POST['body_text'];
+define('TR_INCLUDE_PATH', '../include/');
+include_once(TR_INCLUDE_PATH.'../home/classes/ContentUtility.class.php');
 
 $body_text     = htmlspecialchars($stripslashes($_POST['body_text']));
 $body_t                = html_entity_decode($body_text);
                
 
-require(AT_INCLUDE_PATH.'classes/XML/XML_HTMLSax/XML_HTMLSax.php');    /* for XML_HTMLSax */
-require(AT_INCLUDE_PATH.'../mods/_core/imscp/include/ims_template.inc.php');                           /* for ims templates + print_organizations() */
+require(TR_INCLUDE_PATH.'classes/XML/XML_HTMLSax/XML_HTMLSax.php');    /* for XML_HTMLSax */
+//require(TR_INCLUDE_PATH.'../mods/_core/imscp/include/ims_template.inc.php');                         /* for ims templates + print_organizations() */
 
 /*
 the following resources are to be identified:
@@ -105,7 +100,7 @@ $my_files           = array();
 $content_files         = "\n";
 
 //in order to control if some [media] is in the body_text
-$body = embed_media($body_t);
+$body = ContentUtility::embedMedia($body_t);
 
 $parser->parse($body);
                
index c9fb0d2..b21f779 100644 (file)
@@ -467,6 +467,8 @@ INSERT INTO `TR_language_text` VALUES ('en', '_msgs','TR_INFOS_NO_TESTS', 'No te
 INSERT INTO `TR_language_text` VALUES ('en', '_msgs','TR_FEEDBACK_FILE_PASTED', 'The file was successfully pasted into the textarea below. <strong><em>Save to apply changes</em></strong>, or Cancel to return to the previously saved content.', now(), '');\r
 INSERT INTO `TR_language_text` VALUES ('en', '_msgs','TR_ERROR_FILE_NOT_SELECTED', 'You did not select a file to upload.', now(), '');\r
 INSERT INTO `TR_language_text` VALUES ('en', '_msgs','TR_ERROR_BAD_FILE_TYPE', 'Unsupported file type. Plain Text or HTML files only.', now(), '');\r
+INSERT INTO `TR_language_text` VALUES ('en', '_msgs','TR_ERROR_INVALID_INPUT', 'Invalid URL: %s', now(), '');\r
+INSERT INTO `TR_language_text` VALUES ('en', '_msgs','TR_FEEDBACK_CLOSED', 'Successfully closed', now(), '');\r
 \r
 INSERT INTO `TR_language_text` VALUES ('en', '_msgs','TR_', '', now(), '');\r
 INSERT INTO `TR_language_text` VALUES ('en', '_msgs','TR_', '', now(), '');\r
@@ -475,8 +477,6 @@ INSERT INTO `TR_language_text` VALUES ('en', '_msgs','TR_', '', now(), '');
 INSERT INTO `TR_language_text` VALUES ('en', '_msgs','TR_', '', now(), '');\r
 INSERT INTO `TR_language_text` VALUES ('en', '_msgs','TR_', '', now(), '');\r
 INSERT INTO `TR_language_text` VALUES ('en', '_msgs','TR_', '', now(), '');\r
-INSERT INTO `TR_language_text` VALUES ('en', '_msgs','TR_', '', now(), '');\r
-INSERT INTO `TR_language_text` VALUES ('en', '_msgs','TR_', '', now(), '');\r
 \r
 \r
 INSERT INTO `AT_language_text` VALUES ('en', '_msgs','AT_ERROR_TILE_AUTHENTICATION_FAIL','The Transformable authentication fails at:<br />%s.',now(),'');\r
index 6255ca8..41bfb2e 100644 (file)
@@ -23,6 +23,7 @@ function write_config_file($filename, $comments) {
                                        '{TABLE_PREFIX}',
                                        '{CONTENT_DIR}',
                                        '{GENERATED_COMMENTS}',
+                                       '{GET_FILE}'
                                );
 
                $values = array(urldecode($_POST['step2']['db_login']),
@@ -33,7 +34,8 @@ function write_config_file($filename, $comments) {
                                        $_POST['step2']['tb_prefix'],
                                        addslashes(urldecode($_POST['step4']['content_dir'])),
                                        $comments,
-                               );
+                                       $_POST['step4']['get_file']
+                                       );
 
        $config_template = str_replace($tokens, $values, $config_template);
 
@@ -88,6 +90,12 @@ define('TABLE_PREFIX',                 '{TABLE_PREFIX}');
 /* accessible area.                                                                                                            */
 define('TR_CONTENT_DIR', '{CONTENT_DIR}');
 
+/* Whether or not to use the TR_CONTENT_DIR as a protected directory.   */
+/* The if set to FALSE then the content directory will be hard coded    */
+/* to Transformable_install_dir/content/ and TR_CONTENT_DIR will be ignored.   */
+/* This option is used for compatability with IIS and Apache 2.         */
+define('TR_FORCE_GET_FILE', {GET_FILE});
+
 /* DO NOT ALTER THIS LAST LINE                                          */
 define('TR_INSTALL', TRUE);
 
index bdb957a..0e49e19 100644 (file)
@@ -133,7 +133,7 @@ else
                }
        
                if (strlen($content) == 0) {
-                       $headers[] = 'Transformable-Get: OK';
+                       $headers[] = 'Trans-Get: OK';
                } else {
                        $headers[] = '';
                }
@@ -151,7 +151,7 @@ else
                }
        }
        
-       if (in_array('Transformable-Get: OK', $headers)) {
+       if (in_array('Trans-Get: OK', $headers)) {
                $get_file = 'TRUE';
        } else {
                $get_file = 'FALSE';
index 4a52e2e..a9e10a8 100644 (file)
@@ -82,7 +82,8 @@ $starttime = $mtime;
        <![endif]-->
 <?php echo $this->rtl_css; ?>
        <script src="<?php echo $this->base_path; ?>include/jscripts/infusion/InfusionAll.js" type="text/javascript"></script>
-       <script src="<?php echo $this->base_path; ?>jscripts/infusion/jquery.autoHeight.js" type="text/javascript"></script>
+       <script src="<?php echo $this->base_path; ?>include/jscripts/infusion/jquery.autoHeight.js" type="text/javascript"></script>
+       <script src="<?php echo $this->base_path; ?>include/jscripts/flowplayer/flowplayer-3.1.2.min.js"></script>
        <script src="<?php echo $this->base_path; ?>include/jscripts/handleAjaxResponse.js" type="text/javascript"></script>
        <script src="<?php echo $this->base_path; ?>include/jscripts/transformable.js" type="text/javascript"></script>
 <?php echo $this->custom_css; ?>
@@ -315,10 +316,9 @@ foreach ($this->top_level_pages as $page) {
 //} // end of else
 ?>
  <!-- the sub navigation -->
+<?php if (is_array($this->sub_menus) && count($this->sub_menus) > 0): ?>
 <div id="subnavlistcontainer">
     <div id="sub-navigation">
-
-      <?php if (is_array($this->sub_menus) && count($this->sub_menus) > 0): ?>
          <?php if (isset($this->back_to_page)): ?>
            <div id="subnavbacktopage">   
              <a href="<?php echo $this->back_to_page['url']; ?>" id="back-to"><?php echo '<img src="'.$_base_href.'images/arrowicon.gif"  alt="'._AT('back_to').':'.$this->back_to_page['title'].'" title="'._AT('back_to').':'.$this->back_to_page['title'].'" style="vertical-align:center;">'?></a> 
@@ -342,7 +342,6 @@ foreach ($this->top_level_pages as $page) {
       <?php endif; ?>
       <?php if (is_array($this->sub_menus) && count($this->sub_menus) > 0): ?>
       </ul>
-      <?php endif; ?>
-
     </div>
-</div>
\ No newline at end of file
+</div>
+<?php endif; ?>