added function to include javascript libraries in the backend
authorBenni Mack <benni.mack@typo3.org>
Mon, 22 Oct 2007 19:48:05 +0000 (19:48 +0000)
committerBenni Mack <benni.mack@typo3.org>
Mon, 22 Oct 2007 19:48:05 +0000 (19:48 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@2608 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
typo3/alt_db_navframe.php
typo3/template.php

index ec5f262..d80959a 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2007-10-21  Benjamin Mack  <mack@xnos.org>
+
+       * (feature) added function to include javascript libraries in the backend
+
 2007-10-22  Andreas Otto  <andreas.otto@dkd.de>
 
        * Fixed bug #6340: JS errors with dividers2tabs and rtehtmlarea
index ea1d5cd..ff995a3 100755 (executable)
@@ -140,9 +140,8 @@ class SC_alt_db_navframe {
                        $this->doc->docType = 'xhtml_trans';
 
                                // Adding javascript code for AJAX (prototype), drag&drop and the pagetree
-                       $this->doc->JScode  = '
-                       <script type="text/javascript" src="'.$this->backPath.'contrib/prototype/prototype.js"></script>
-                       <script type="text/javascript" src="'.$this->backPath.'tree.js"></script>'."\n";
+                       $this->doc->loadJavascriptLib('contrib/prototype/prototype.js');
+                       $this->doc->loadJavascriptLib('tree.js');
 
                        $this->doc->JScode .= $this->doc->wrapScriptTags(
                        ($this->currentSubScript?'top.currentSubScript=unescape("'.rawurlencode($this->currentSubScript).'");':'').'
@@ -357,4 +356,4 @@ $SOBE->init();
 $SOBE->main();
 $SOBE->printContent();
 
-?>
\ No newline at end of file
+?>
index 99252d9..bc5f012 100755 (executable)
@@ -171,6 +171,7 @@ class template {
                // Vars you typically might want to/should set from outside after making instance of this class:
        var $backPath = '';                             // 'backPath' pointing back to the PATH_typo3
        var $form='';                                   // This can be set to the HTML-code for a formtag. Useful when you need a form to span the whole page; Inserted exactly after the body-tag.
+       var $JScodeLibArray = array();          // Similar to $JScode (see below) but used as an associative array to prevent double inclusion of JS code. This is used to include certain external Javascript libraries before the inline JS code. <script>-Tags are not wrapped around automatically
        var $JScode='';                                 // Additional header code (eg. a JavaScript section) could be accommulated in this var. It will be directly outputted in the header.
        var $JScodeArray = array();             // Similar to $JScode but for use as array with associative keys to prevent double inclusion of JS code. a <script> tag is automatically wrapped around.
        var $postCode='';                               // Additional 'page-end' code could be accommulated in this var. It will be outputted at the end of page before </body> and some other internal page-end code.
@@ -661,12 +662,14 @@ class template {
        '.$generator.'
        <title>'.htmlspecialchars($title).'</title>
        '.$this->docStyle().'
+       '.implode("\n", $this->JScodeLibArray).'
        '.$this->JScode.'
        '.$tabJScode.'
        '.$this->wrapScriptTags(implode("\n", $this->JScodeArray)).'
        <!--###POSTJSMARKER###-->
 </head>
 ';
+               $this->JScodeLibArray=array();
                $this->JScode='';
                $this->JScodeArray=array();
 
@@ -1243,6 +1246,22 @@ $str.=$this->docBodyTagBegin().
                }
        }
 
+
+       /**
+        * Includes a javascript library that exists in the core /typo3/ directory. The 
+        * backpath is automatically applied
+        *
+        * @param       string          $lib: Library name. Call it with the full path
+        *                              like "contrib/prototype/prototype.js" to load it
+        * @return      void
+        */
+       function loadJavascriptLib($lib)        {
+               if (!isset($this->JScodeLibArray[$lib]))        {
+                       $this->JScodeLibArray[$lib] = '<script language="text/javascript" src="'.$this->backPath.$lib.'"></script>';
+               }
+       }
+
+
        /**
         * Returns an array with parts (JavaScript, init-functions, <div>-layers) for use on pages which displays the clickmenu layers (context sensitive menus)
         *