Changeset 121


Ignore:
Timestamp:
05/07/05 21:19:31 (14 years ago)
Author:
yermol
Message:

htmlarea.js

. more debugging messages added.
. added HTMLArea.Config.linkReplacementMode which can be either

fullyqualified (the old default behavior) or absolute.


When set to fullyqualified all absolute links (e.g. /somepath) will be changed to fullyqualified URLS (e.g. http://yoursite/somepth).


When set to absolute, all fullyqualified urls back to the current site
will be changed to absolute (e.g. httpyoursite/somepath to /somepath)
making the Xinha generated content portable between sites.


( see HTMLArea.prototype.outwardHtml() )


. bugfix - if plugin .js file has a parse error htmlarea will only try to load

it a configurable number of times before popping up an error message.


backends/backend.php

. initial unified backend created. Requests to this backend are routed

to the corresponding plugin specific backend.php file.


backends/backend_conf.php

. a central server side configuration file has been created for the use

of plugin serverside code.

. all backends hooked into this scheme must include the central config file.

ImageManager?

. modified the config to allow overriding default values.
. default image directory is now xinha/examples/images
. added debugging trace messages which are tagged with the ImageManager? name.
. now uses unified backend.

Linker

. includes central config.
. default directory is now the xinha/examples directory (to avoid scan.php security

problem)

. added debugging trace messages which are tagged with the Linker name.
. links selected from the tree are now displayed in absolute instead of fully qualified

fashion.

. on edit the link that was previously selected is highlighted.
. on edit the selected link is scrolled to if it's outside the viewable area.
. if scan.php returns some kind of error or invalid javascript Linker now pops up

a nice descriptive error message.


. bugfix - same pattern as in loading plugins. If there is some error in loading the directory listing Linker will only attempt it a few times before giving up and

displaying a nice error.


dTree.js

. added clear_s() method to clear the selection
. added getNodeElement() method to return the <a ..> element for a given node.

Location:
branches/unified_backend
Files:
9 added
2 deleted
26 edited
3 moved

Legend:

Unmodified
Added
Removed
  • branches/unified_backend/Configure.php

    r72 r121  
    11<?php 
    22 
    3 // [COPY 
     3// [NOSTRIP 
    44// ----------------------------------------------------------------- 
    55// Copyright (C) DTLink, LLC.  
     
    1717// OR NON-INFRINGEMENT.  
    1818// ------------------------------------------------------------------ 
    19 // COPY] 
     19// NOSTRIP] 
    2020 
    2121/** 
     
    3535// . ported from formVista. 
    3636// . this version relicensed under HTMLArea license. 
     37// 
     38// 2005-05-01 YmL: 
     39//      .       now generates a backend config file containing install root. 
    3740// --------------------------------------------------------------- 
    3841 
     
    100103        } 
    101104 
     105// path to perl (used by makedocs.pl script) 
     106 
    102107while ( true ) 
    103108        { 
     
    129134                } 
    130135        } 
     136 
     137// URL to Xinha install 
     138 
     139while ( true ) 
     140        { 
     141 
     142        print "\n"; 
     143        print "---------------------------------------------------------\n"; 
     144        print "Xinha needs to know what URL it's installed under.\n"; 
     145        print "(e.g. /xinha or maybe http://some_site.com/somedir/xinha)\n"; 
     146        print "\nURL of Xinha install:\n"; 
     147        print "[" . @$dataExport["XINHA_INSTALL_URL"] . "]:"; 
     148 
     149        $response = fgets( $stdin, 256 ); 
     150                                                                                   
     151   if ( preg_match( "/\S/", $response ) ) 
     152                { 
     153                $response = trim($response); 
     154 
     155        $dataExport[ "XINHA_INSTALL_URL" ] = $response; 
     156 
     157                break; 
     158                } 
     159        else 
     160                { 
     161 
     162                // it's possible we've already looped through this  
     163 
     164                if ( preg_match( "/\S/", @$dataExport[ "XINHA_INSTALL_URL" ] )) 
     165                        break; 
     166 
     167                print( "\nPlease enter the url of your Xinha install.\n" ); 
     168                } 
     169        } 
     170 
     171// We assume the current directory is the root of the Xinha install. 
     172 
     173$dataExport[ "XINHA_INSTALL_ROOT"] = getcwd(); 
    131174 
    132175// --------------------------------------------------------------- 
  • branches/unified_backend/INSTALL.txt

    r72 r121  
    33 
    44To set up the software to run please run Configure.php with the full path  
    5 to your command line PHP intepreter as in: 
     5to your command line PHP interpreter as in: 
    66 
    77/usr/local/bin/php Configure.php 
     
    99Configure.php will ask for the completely path to PHP and Perl.  
    1010 
    11 Configure will do some variable expansion in devutils/* and set permissions on 
    12 the plugins/ImageManager/demo_images directory. 
     11Configure will do some variable expansion in devutils/* and backends/*. It will  
     12also set permissions on the examples directory. 
    1313 
    1414For more information please see the README.txt and README_DEVELOPERS.txt files. 
  • branches/unified_backend/RELEASE_NOTES.txt

    r85 r121  
    33by: Yermo Lamers of DTLink, LLC 
    44http://www.formvista.com/contact.html 
     5 
     6--------------------------------------------------------------------- 
     72005-05-06: dev snapshot change summary 
     8 
     9htmlarea.js 
     10 
     11. more debugging messages added. 
     12. added HTMLArea.Config.linkReplacementMode which can be either  
     13  fullyqualified (the old default behavior) or absolute.  
     14   
     15  When set to fullyqualified all absolute links (e.g. /somepath) will be changed 
     16  to fullyqualified URLS (e.g. http://yoursite/somepth). 
     17 
     18  When set to absolute, all fullyqualified urls back to the current site 
     19  will be changed to absolute (e.g. http//yoursite/somepath to /somepath) 
     20  making the Xinha generated content portable between sites.  
     21 
     22  ( see HTMLArea.prototype.outwardHtml() ) 
     23 
     24. bugfix - if plugin .js file has a parse error htmlarea will only try to load 
     25  it a configurable number of times before popping up an error message. 
     26 
     27backends/backend.php 
     28 
     29. initial unified backend created. Requests to this backend are routed 
     30  to the corresponding plugin specific backend.php file.  
     31 
     32backends/backend_conf.php 
     33 
     34. a central server side configuration file has been created for the use 
     35  of plugin serverside code.  
     36. all backends hooked into this scheme must include the central config file. 
     37 
     38ImageManager 
     39 
     40. modified the config to allow overriding default values. 
     41. default image directory is now xinha/examples/images 
     42. added debugging trace messages which are tagged with the ImageManager name. 
     43. now uses unified backend.  
     44 
     45Linker 
     46 
     47. includes central config.  
     48. default directory is now the xinha/examples directory (to avoid scan.php security 
     49  problem) 
     50. added debugging trace messages which are tagged with the Linker name. 
     51. links selected from the tree are now displayed in absolute instead of fully qualified 
     52  fashion. 
     53. on edit the link that was previously selected is highlighted. 
     54. on edit the selected link is scrolled to if it's outside the viewable area. 
     55. if scan.php returns some kind of error or invalid javascript Linker now pops up 
     56  a nice descriptive error message. 
     57 
     58. bugfix - same pattern as in loading plugins. If there is some error in loading 
     59  the directory listing Linker will only attempt it a few times before giving up and 
     60  displaying a nice error. 
     61 
     62dTree.js 
     63 
     64. added clear_s() method to clear the selection 
     65. added getNodeElement() method to return the <a ..> element for a given node. 
    566 
    667--------------------------------------------------------------------- 
  • branches/unified_backend/TODO.txt

    r84 r121  
    33by: Yermo Lamers of DTLink, LLC 
    44http://www.formvista.com/contact.html 
     5 
     6--------------------------------------------- 
     7 
     82005-05-07 - in the order things will be done: 
     9 
     10. fix EnterParagraphs to include style fix to <p> tags. 
     11 
     12. route rest of client/server communications through a single backend script. 
     13  ImageManager and Linker are done. SpellChecker is next. 
     14 
     15. make_runtime.php script needs to be written to generate a debug message and 
     16  comment free "runtime" versions. (For the moment just comment out the 
     17  _ddtOn() calls to turn off debug messages). 
     18 
     19. rework ImageManager and add a permissions system for edit/delete functions. 
    520 
    621--------------------------------------------- 
  • branches/unified_backend/conf/infile_list.txt

    r72 r121  
    33./devutils/buildruntime.php.in 0755 
    44./devutils/ddtpreproc.php.in 0755 
     5./backends/backend_conf.php.in 0644 
  • branches/unified_backend/conf/perms_list.txt

    r72 r121  
    99?> 
    1010 
    11 ./plugins/ImageManager/demo_images 644 nobody 
     11./examples/images 755 nobody 
     12./examples/images/linux 755 nobody 
  • branches/unified_backend/ddt/ddt.js

    r85 r121  
    221221{ 
    222222 
    223 this._ddt( "ddt.js","208", file, line, msg ); 
     223this._ddt(  
     224file, line, msg ); 
     225 
     226if ( typeof obj == 'undefined' ) 
     227        { 
     228        this._ddt( 
     229                file, line, "Object is undefined!" ); 
     230        } 
    224231 
    225232for (var x in obj) 
  • branches/unified_backend/dialog.js

    r20 r121  
    1212// $Id$ 
    1313 
     14// -------------------------------------------------------------------------- 
    1415// Though "Dialog" looks like an object, it isn't really an object.  Instead 
    1516// it's just namespace for protecting global symbols. 
     17// 
     18// Something to note, the ImageManager plugin (and possibly others) has it's 
     19// own version of this file 
     20// -------------------------------------------------------------------------- 
    1621 
    17 function Dialog(url, action, init) { 
    18         if (typeof init == "undefined") { 
    19                 init = window;  // pass this window object by default 
    20         } 
    21         Dialog._geckoOpenModal(url, action, init); 
    22 }; 
     22/** 
     23* should be a function, the return handler of the currently opened dialog. 
     24*/ 
    2325 
    24 Dialog._parentEvent = function(ev) { 
    25         setTimeout( function() { if (Dialog._modal && !Dialog._modal.closed) { Dialog._modal.focus() } }, 50); 
    26         if (Dialog._modal && !Dialog._modal.closed) { 
    27                 HTMLArea._stopEvent(ev); 
    28         } 
    29 }; 
    30  
    31  
    32 // should be a function, the return handler of the currently opened dialog. 
    3326Dialog._return = null; 
    3427 
    35 // constant, the currently opened dialog 
     28/** 
     29* constant, the currently opened dialog 
     30*/ 
     31 
    3632Dialog._modal = null; 
    3733 
    38 // the dialog will read it's args from this variable 
     34/** 
     35* the dialog will read it's args from this variable 
     36*/ 
     37 
    3938Dialog._arguments = null; 
    4039 
    41 Dialog._geckoOpenModal = function(url, action, init) { 
     40/** 
     41* Dialog() 
     42* 
     43* Added an option "editor" parameter to pass-through the editor object 
     44* to the dialog. 
     45*/ 
     46 
     47function Dialog(url, action, init)  
     48  { 
     49 
     50        if (typeof init == "undefined")  
     51          { 
     52                init = window;  // pass this window object by default 
     53          } 
     54 
     55        // optional editor instance parameter that can be propagated through to  
     56        // dialogs. 
     57 
     58        if (typeof Dialog.arguments[3] != "undefined")  
     59          { 
     60                Dialog._editor = Dialog.arguments[3]; 
     61          } 
     62 
     63        Dialog._geckoOpenModal(url, action, init); 
     64 
     65  }; 
     66 
     67// ----------------------------------------- 
     68 
     69/** 
     70* Dialog._parentEvent() 
     71*/ 
     72 
     73Dialog._parentEvent = function(ev)  
     74  { 
     75 
     76        setTimeout( function()  
     77            {  
     78                        if (Dialog._modal && !Dialog._modal.closed)  
     79                          {  
     80                                Dialog._modal.focus()  
     81                                }  
     82                        }, 50); 
     83 
     84        if (Dialog._modal && !Dialog._modal.closed)  
     85          { 
     86                HTMLArea._stopEvent(ev); 
     87          } 
     88  };  // end of Dialog._parentEvent() 
     89 
     90// ------------------------------------------- 
     91 
     92/** 
     93* Dialog._geckoOpenModal() 
     94*/ 
     95 
     96Dialog._geckoOpenModal = function(url, action, init)  
     97  { 
     98 
    4299        var dlg = window.open(url, "hadialog", 
    43100                              "toolbar=no,menubar=no,personalbar=no,width=10,height=10," + 
    44101                              "scrollbars=no,resizable=yes,modal=yes,dependable=yes"); 
     102 
    45103        Dialog._modal = dlg; 
    46104        Dialog._arguments = init; 
    47105 
    48106        // capture some window's events 
    49         function capwin(w) { 
     107        function capwin(w)  
     108          { 
    50109                HTMLArea._addEvent(w, "click", Dialog._parentEvent); 
    51110                HTMLArea._addEvent(w, "mousedown", Dialog._parentEvent); 
    52111                HTMLArea._addEvent(w, "focus", Dialog._parentEvent); 
    53         }; 
     112          }; 
     113 
    54114        // release the captured events 
    55         function relwin(w) { 
     115 
     116        function relwin(w)  
     117          { 
    56118                HTMLArea._removeEvent(w, "click", Dialog._parentEvent); 
    57119                HTMLArea._removeEvent(w, "mousedown", Dialog._parentEvent); 
    58120                HTMLArea._removeEvent(w, "focus", Dialog._parentEvent); 
    59         }; 
     121          }; 
     122 
    60123        capwin(window); 
     124 
    61125        // capture other frames 
     126 
    62127        for (var i = 0; i < window.frames.length; capwin(window.frames[i++])); 
    63         // make up a function to be called when the Dialog ends. 
    64         Dialog._return = function (val) { 
    65                 if (val && action) { 
     128         
     129        // make up a function to be called when the Dialog ends. This will call 
     130        // the function passed to us above. (i.e. action) 
     131 
     132        Dialog._return = function (val)  
     133          { 
     134                if (val && action)  
     135                  { 
    66136                        action(val); 
    67                 } 
     137                  } 
     138 
    68139                relwin(window); 
     140 
    69141                // capture other frames 
     142 
    70143                for (var i = 0; i < window.frames.length; relwin(window.frames[i++])); 
     144 
    71145                Dialog._modal = null; 
    72         }; 
    73 }; 
     146    }; 
     147 
     148  }; // end of Dialog._geckoOpenModal() 
     149 
     150// END 
  • branches/unified_backend/examples/full_example-body.php

    r84 r121  
    1 <html> 
     1<?php 
     2 
     3// [NOSTRIP 
     4// ----------------------------------------------------------------- 
     5// Copyright (C) Gogo Code. 
     6// http://code.gogo.co.nz 
     7// 
     8// Unified backend modifications by DTLink, LLC.  
     9// http://www.dtlink.com and http://www.formvista.com 
     10// ----------------------------------------------------------------- 
     11// This code is distributed under the the sames terms as Xinha 
     12// itself. (HTMLArea license based on the BSD license)  
     13//  
     14// Please read license.txt in this package for details. 
     15// 
     16// All software distributed under the Licenses is provided strictly on 
     17// an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR 
     18// IMPLIED, AND DTLINK LLC HEREBY DISCLAIMS ALL SUCH 
     19// WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF 
     20// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT, 
     21// OR NON-INFRINGEMENT.  
     22// ------------------------------------------------------------------ 
     23// NOSTRIP] 
     24 
     25/** 
     26* Modified version of full_example-body.html for use with the PHP unified backend. 
     27* 
     28* To use the unified backend you must first include the backend_conf.php file which 
     29* is generated by Configure.php. 
     30*/ 
     31 
     32/** 
     33* Configure.php generated config file for PHP unified backend. 
     34*/ 
     35 
     36include_once( "../backends/backend_conf.php" ); 
     37 
     38?><html> 
    239<head> 
    340 
     
    1855  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    1956  <title>Example of Xinha</title> 
    20   <link rel="stylesheet" href="full_example.css" /> 
     57  <link rel="stylesheet" href="<? echo XINHA_INSTALL_URL; ?>/examples/full_example.css" /> 
    2158 
    2259  <script type="text/javascript"> 
    23     // You must set _editor_url to the URL (including trailing slash) where 
    24     // where xinha is installed, it's highly recommended to use an absolute URL 
    25     //  eg: _editor_url = "/path/to/xinha/"; 
    26     // You may try a relative URL if you wish] 
    27     //  eg: _editor_url = "../"; 
    28     // in this example we do a little regular expression to find the absolute path. 
    29     _editor_url  = document.location.href.replace(/examples\/full_example-body\.html.*/, '') 
     60    // You must set _editor_url to the URL (including trailing slash) where Xinha 
     61         // is installed.  
     62         // 
     63         // Before we had the central config, this is the way it was done. 
     64         // 
     65    // _editor_url  = document.location.href.replace(/examples\/full_example-body\.html.*/, '') 
     66 
     67    _editor_url  = "<? echo XINHA_INSTALL_URL; ?>"; 
    3068    _editor_lang = "en";      // And the language we need to use in the editor. 
    3169  </script> 
     
    3371  <!--  load in debug trace message class --> 
    3472 
    35   <script type="text/javascript" src="../ddt.js"></script> 
     73  <script type="text/javascript" src="<? echo XINHA_INSTALL_URL; ?>/ddt/ddt.js"></script> 
    3674 
    3775  <!-- create a global trace message object --> 
     
    4078   var startupDDT = new DDT( "startup" ); 
    4179   startupDDT._ddtOn(); 
     80 
     81        startupDDT._ddt( "full_example-body.php", "81", "ddt object created on calling page" ); 
    4282  </script> 
    4383   
    4484  <!-- Load up the actual editor core --> 
    45   <script type="text/javascript" src="../htmlarea.js"></script> 
     85  <script type="text/javascript" src="<? echo XINHA_INSTALL_URL; ?>/htmlarea.js"></script> 
    4686 
    4787  <script type="text/javascript"> 
     
    71111       'TableOperations' 
    72112      ]; 
    73              // THIS BIT OF JAVASCRIPT LOADS THE PLUGINS, NO TOUCHING  :) 
    74              if(!HTMLArea.loadPlugins(xinha_plugins, xinha_init)) return; 
     113 
     114                // THIS BIT OF JAVASCRIPT LOADS THE PLUGINS, NO TOUCHING  :) 
     115                if (!HTMLArea.loadPlugins(xinha_plugins, xinha_init))  
     116                        return; 
    75117 
    76118      /** STEP 2 *************************************************************** 
     
    163205 
    164206        <div id="lipsum" style="display:none"> 
    165           <p>This is an example of a Xinha editor. The two extra 
    166                          <b>&lt;&gt;</b> buttons on the right of the toolbar  
    167                          turn on debugging trace messages.</p> 
     207          <p>This is an example of a Xinha editor with extensive trace messages 
     208                         turned on. To turn off trace messages, assuming you have the source, just 
     209                         comment out the _ddtOn() calls. Eventually we'll have a script that  
     210                         strips out the trace messages and comments to produce a "runtime' version.</p> 
    168211 
    169212          <p>This branch of Xinha development is called the Unified 
     
    177220            <li> Configure.php script to generate server side scripts and permissions. </li> 
    178221            <li> makedocs.pl script to generate documentation.</li> 
     222                                <li> unified PHP backend script in backends/backend.php through which all 
     223                                                plugin to server communications are routed (ImageManager and Linker are 
     224                                                done, SpellChecker is next). 
    179225          </ul> 
    180226 
  • branches/unified_backend/examples/full_example-menu.html

    r72 r121  
    3333  </p> 
    3434 
    35   <form action="full_example-body.html" target="body"> 
     35  <form action="full_example-body.php" target="body"> 
    3636    <fieldset> 
    3737      <legend>Plugins</legend> 
  • branches/unified_backend/examples/full_example.html

    r20 r121  
    1212  <frameset cols="200,*"> 
    1313    <frame src="full_example-menu.html" name="menu"> 
    14     <frame src="full_example-body.html" name="body"> 
     14    <frame src="full_example-body.php" name="body"> 
    1515  </frameset> 
    1616</html> 
  • branches/unified_backend/examples/full_example.js

    r20 r121  
    4848      // We can load an external stylesheet like this - NOTE : YOU MUST GIVE AN ABSOLUTE URL 
    4949      //  otherwise it won't work! 
    50       config.stylistLoadStylesheet(document.location.href.replace(/[^\/]*\.html/, 'stylist.css')); 
     50      config.stylistLoadStylesheet(document.location.href.replace(/[^\/]*\.php/, 'stylist.css')); 
    5151 
    5252      // Or we can load styles directly 
  • branches/unified_backend/examples/simple_example.php

    r85 r121  
    3636  <!--  load in debug trace message class --> 
    3737 
    38   <script type="text/javascript" src="../ddt.js"></script> 
     38  <script type="text/javascript" src="../ddt/ddt.js"></script> 
    3939 
    4040  <script type="text/javascript"> 
  • branches/unified_backend/htmlarea.js

    r85 r121  
    1 // --------------------------------------:noTabs=true:tabSize=2:indentSize=2:-- 
    2  
    31/** 
    42* @fileoverview Xinha (is not htmlArea) {@link http://xinha.gogo.co.nz/ Xinha.org} 
     
    5856  { 
    5957  _editor_lang = "en"; 
     58  } 
     59 
     60// if no backend_url is defined, set a default. We'll default to the 
     61// PHP backend. This can be overridden on the calling page. 
     62 
     63if (typeof _editor_backend != "string")  
     64  { 
     65  _editor_backend = _editor_url + "/backends/backend.php"; 
    6066  } 
    6167 
     
    139145HTMLArea._scripts = []; 
    140146 
     147/** 
     148* list of plugin load attempts 
     149* 
     150* used to avoid endless loops when trying to load plugins with syntax errors. 
     151* 
     152* @see loadPlugin 
     153*/ 
     154 
     155HTMLArea.plugin_loadattempts = []; 
     156 
     157/** 
     158* number of times to attempt loading something from the server 
     159*/ 
     160 
     161HTMLArea.maxloadattempts = 10; 
     162 
    141163// --------------------------------------------------- 
    142164 
     
    227249 
    228250  /** 
    229   * lcBackend - what's this used for? 
     251  * lcBackend - localization backend. 
    230252  */ 
    231253 
     
    304326 
    305327  this.pageStyleSheets = [ ]; 
     328 
     329  /** 
     330        * type of URL replacements in the document - fullyqualified or absolute 
     331        * 
     332        * in inwardHtml() and outwardHtml() regex's are applied to the document 
     333        * to fix up links in the document. The previous version always modified 
     334        * links to be fully qualified links (i.e. http://somesite/ ..) making 
     335        * content generated by Xinha non-portable between sites.  
     336        * 
     337        * This setting determines whether or not links in the document will 
     338        * be fully qualified (http://thissite/..) or absolute (/...).  
     339        * 
     340        * The default is absolute. 
     341        * 
     342        * @see HTML.prototype.outwardHTML 
     343        * @todo support leaving links relative. 
     344        */ 
     345 
     346        this.linkReplacementMode = 'absolute'; 
    306347 
    307348  /** 
     
    724765    // alert("WARNING [HTMLArea.Config::registerDropdown]:\nA dropdown with the same ID already exists."); 
    725766   
    726     HTMLArea._ddt( "htmlarea.js","726", "registerButton(): WARNING [HTMLArea.Config::registerDropdown]: A dropdown with the same ID already exists." ); 
     767    HTMLArea._ddt( "htmlarea.js","767", "registerButton(): WARNING [HTMLArea.Config::registerDropdown]: A dropdown with the same ID already exists." ); 
    727768    } 
    728769 
     
    730771    { 
    731772    // alert("WARNING [HTMLArea.Config::registerDropdown]:\nA button with the same ID already exists."); 
    732     HTMLArea._ddt( "htmlarea.js","732", "registerbutton(): WARNING [HTMLArea.Config::registerDropdown]:A button with the same ID already exists." ); 
     773    HTMLArea._ddt( "htmlarea.js","773", "registerbutton(): WARNING [HTMLArea.Config::registerDropdown]:A button with the same ID already exists." ); 
    733774    } 
    734775 
     
    760801    { 
    761802         // alert("WARNING [HTMLArea.Config::registerDropdown]:\nA dropdown with the same ID already exists."); 
    762     HTMLArea._ddt( "htmlarea.js","762", "registerDropdown(): WARNING [HTMLArea.Config::registerDropdown]:\nA dropdown with the same ID already exists." ); 
     803    HTMLArea._ddt( "htmlarea.js","803", "registerDropdown(): WARNING [HTMLArea.Config::registerDropdown]:\nA dropdown with the same ID already exists." ); 
    763804    } 
    764805 
     
    766807    { 
    767808         // alert("WARNING [HTMLArea.Config::registerDropdown]:\nA button with the same ID already exists."); 
    768     HTMLArea._ddt( "htmlarea.js","768", "registerDropdown(): WARNING [HTMLArea.Config::registerDropdown]:\nA button with the same ID already exists." ); 
     809    HTMLArea._ddt( "htmlarea.js","809", "registerDropdown(): WARNING [HTMLArea.Config::registerDropdown]:\nA button with the same ID already exists." ); 
    769810    } 
    770811 
     
    826867  { 
    827868 
    828   HTMLArea._ddt( "htmlarea.js","828", "loadScript(): Top with url '" + url + "' and plugin '" + plugin + "'" ); 
     869  HTMLArea._ddt( "htmlarea.js","869", "loadScript(): Top with url '" + url + "' and plugin '" + plugin + "'" ); 
    829870 
    830871  if (plugin) 
     
    870911  { 
    871912 
    872   HTMLArea._ddt( "htmlarea.js","872", "init(): top" ); 
     913  HTMLArea._ddt( "htmlarea.js","913", "init(): top" ); 
    873914 
    874915  var head = document.getElementsByTagName("head")[0]; 
     
    896937      // MSIE is not ready. 
    897938 
    898       HTMLArea._ddt( "htmlarea.js","898", "init(): MSIE ready state not ready '" + window.event.srcElement.readyState + "'" ); 
     939      HTMLArea._ddt( "htmlarea.js","939", "init(): MSIE ready state not ready '" + window.event.srcElement.readyState + "'" ); 
    899940 
    900941      return; 
     
    914955      script.src = url; 
    915956 
    916       HTMLArea._ddt( "htmlarea.js","916", "loadNextScript(): loading '" + url + "'" ); 
     957      HTMLArea._ddt( "htmlarea.js","957", "loadNextScript(): loading '" + url + "'" ); 
    917958 
    918959      // the magic step. evt depends on the browser (See above) 
     
    925966      document.title = savetitle; 
    926967 
    927       HTMLArea._ddt( "htmlarea.js","927", "loadNextScript(): end of list reached. Firing HTMLAreaonLoad handler which is '" + HTMLArea.onLoad + "'" ); 
     968      HTMLArea._ddt( "htmlarea.js","968", "loadNextScript(): end of list reached. Firing HTMLAreaonLoad handler which is '" + HTMLArea.onLoad + "'" ); 
    928969 
    929970           // fire the onLoad handler. See HTMLArea.onload() up top.  
     
    935976    };  // end of in-line loadNextScript() function. 
    936977 
    937   HTMLArea._ddt( "htmlarea.js","937", "init(): calling first loadNextScript()" ); 
     978  HTMLArea._ddt( "htmlarea.js","978", "init(): calling first loadNextScript()" ); 
    938979 
    939980  // start the chain of script loading. 
     
    952993  { 
    953994 
    954   HTMLArea._ddt( "htmlarea.js","954", "replaceAll(): top" ); 
     995  HTMLArea._ddt( "htmlarea.js","995", "replaceAll(): top" ); 
    955996 
    956997  var tas = document.getElementsByTagName("textarea"); 
     
    9671008  { 
    9681009 
    969   HTMLArea._ddt( "htmlarea.js","969", "replace(): top with id '" + id + "'" ); 
     1010  HTMLArea._ddt( "htmlarea.js","1010", "replace(): top with id '" + id + "'" ); 
    9701011 
    9711012  var ta = HTMLArea.getElementById("textarea", id); 
     
    9971038  { 
    9981039 
    999   HTMLArea._ddt( "htmlarea.js","999", "makeBtnImg(): top" ); 
     1040  HTMLArea._ddt( "htmlarea.js","1040", "makeBtnImg(): top" ); 
    10001041 
    10011042  if(!doc) doc = document; 
     
    10651106  i_contain.appendChild(img); 
    10661107 
    1067   HTMLArea._ddt( "htmlarea.js","1067", "makeBtnImg(): bottom" ); 
     1108  HTMLArea._ddt( "htmlarea.js","1108", "makeBtnImg(): bottom" ); 
    10681109 
    10691110  return i_contain; 
     
    10991140{ 
    11001141 
    1101   HTMLArea._ddt( "htmlarea.js","1101", "loadPlugin(): loading plugin '" + pluginName + "'" ); 
     1142  HTMLArea._ddt( "htmlarea.js","1142", "loadPlugin(): loading plugin '" + pluginName + "'" ); 
    11021143 
    11031144  // Might already be loaded 
     
    11061147    { 
    11071148 
    1108     HTMLArea._ddt( "htmlarea.js","1108", "loadPlugin(): plugin '" + pluginName + "' already loaded" ); 
     1149    HTMLArea._ddt( "htmlarea.js","1149", "loadPlugin(): plugin '" + pluginName + "' already loaded" ); 
    11091150 
    11101151    if (callback) 
    11111152      { 
    11121153 
    1113       HTMLArea._ddt( "htmlarea.js","1113", "loadPlugin(): calling plugin '" + pluginName + "' callback" ); 
     1154      HTMLArea._ddt( "htmlarea.js","1154", "loadPlugin(): calling plugin '" + pluginName + "' callback" ); 
    11141155 
    11151156      callback(); 
     
    11221163  var plugin = pluginName.replace(/([a-z])([A-Z])([a-z])/g, 
    11231164          function (str, l1, l2, l3)  
    1124                            { 
     1165                                        { 
    11251166            return l1 + "-" + l2.toLowerCase() + l3; 
    11261167            }).toLowerCase() + ".js"; 
     
    11281169  var plugin_file = dir + "/" + plugin; 
    11291170 
     1171        // if the plugin file contains an error we can get into an endless loop which will 
     1172        // eventually crash the browser. To prevent that fate we limit the number of times 
     1173        // we'll try to load any given plugin. Note that a plugin is loaded once per page, 
     1174        // not once we editor on the page. 
     1175        // 
     1176        // Actually, because of the implementation of _loadback() we should only ever try  
     1177        // to load the plugin once since the callback isn't invoked until the file is loaded. 
     1178        // We can always adjust HTMLArea.maxloadattempts to 1 later. 
     1179        // 
     1180        // we keep an array of plugin load attempt counts in HTMLArea. 
     1181 
     1182        if ( typeof HTMLArea.plugin_loadattempts[ pluginName ] == 'undefined' ) 
     1183                { 
     1184                HTMLArea.plugin_loadattempts[ pluginName ] = 1; 
     1185                } 
     1186        else 
     1187                { 
     1188                HTMLArea.plugin_loadattempts[ pluginName ]++; 
     1189                } 
     1190 
     1191        HTMLArea._ddt( "htmlarea.js","1191", "loadPlugin(): Attempt #" + HTMLArea.plugin_loadattempts[pluginName] + " for plugin '" + pluginName + "'" ); 
     1192 
     1193  if ( HTMLArea.plugin_loadattempts[ pluginName ] > HTMLArea.maxloadattempts ) 
     1194                { 
     1195                alert( "ERROR unsuccessfully attempted to load plugin '" + pluginName + "' '" + HTMLArea.maxloadattempts + "' times. It probably contains an error. Please check your javascript console for details" ); 
     1196                return false; 
     1197                } 
     1198 
    11301199  if ( callback ) 
    11311200    { 
    1132     HTMLArea._ddt( "htmlarea.js","1132", "loadPlugin(): callback defined. Using _loadback() to load plugin" ); 
     1201          HTMLArea._ddt( "htmlarea.js","1201", "loadPlugin(): callback defined. Using _loadback() to load plugin" ); 
    11331202 
    11341203    HTMLArea._loadback(plugin_file, callback); 
    1135     } 
     1204          } 
    11361205  else 
    1137     { 
    1138     HTMLArea._ddt( "htmlarea.js","1138", "loadPlugin(): callback not defined. writing javascript include line to document." ); 
     1206          { 
     1207    HTMLArea._ddt( "htmlarea.js","1207", "loadPlugin(): callback not defined. writing javascript include line to document." ); 
    11391208 
    11401209    document.write("<script type='text/javascript' src='" + plugin_file + "'></script>"); 
    1141     } 
     1210          } 
    11421211 
    11431212  };  // end of loadPlugin() 
     
    11581227  { 
    11591228 
    1160   HTMLArea._ddt( "htmlarea.js","1160", "loadPlugins(): top - cloning plugins array." ); 
     1229  HTMLArea._ddt( "htmlarea.js","1229", "loadPlugins(): top - cloning plugins array." ); 
    11611230 
    11621231  // make a copy of the plugins array that we'll chip away at. 
     
    11751244      var poppedPlugin = nuPlugins.pop(); 
    11761245 
    1177       HTMLArea._ddt( "htmlarea.js","1177", "loadPlugins(): plugin '" + poppedPlugin + "' was already loaded" ); 
     1246      HTMLArea._ddt( "htmlarea.js","1246", "loadPlugins(): plugin '" + poppedPlugin + "' was already loaded" ); 
    11781247 
    11791248      } 
     
    11901259    { 
    11911260 
    1192     HTMLArea._ddt( "htmlarea.js","1192", "loadPlugins(): no plugins left to load" ); 
     1261    HTMLArea._ddt( "htmlarea.js","1261", "loadPlugins(): no plugins left to load" ); 
    11931262 
    11941263    return true; 
     
    12081277  HTMLArea.loadPlugin( nuPlugins.pop(), 
    12091278      function() 
    1210       { 
     1279          { 
    12111280        if(HTMLArea.loadPlugins(nuPlugins, callbackIfNotReady)) 
    1212         { 
     1281                { 
    12131282          if(typeof callbackIfNotReady == 'function') 
    1214           { 
     1283                  { 
    12151284            callbackIfNotReady(); 
    1216           } 
    1217         } 
    1218       } 
    1219     );  // this is the end of the HTMLArea.loadPlugin() recursive call. 
    1220  
    1221   HTMLArea._ddt( "htmlarea.js","1221", "loadPlugins(): end" ); 
     1285                  } 
     1286                } 
     1287            } 
     1288            );  // this is the end of the HTMLArea.loadPlugin() recursive call. 
     1289 
     1290  HTMLArea._ddt( "htmlarea.js","1290", "loadPlugins(): end" ); 
    12221291 
    12231292  return false; 
     
    12341303  { 
    12351304 
    1236   HTMLArea._ddt( "htmlarea.js","1236", "refreshPlugin(): top" ); 
     1305  HTMLArea._ddt( "htmlarea.js","1305", "refreshPlugin(): top" ); 
    12371306 
    12381307  if (typeof plugin.onGenerate == "function") 
    12391308    { 
    1240     HTMLArea._ddt( "htmlarea.js","1240", "refreshPlugin(): onGenerate is a function. calling onGenerate for '" + plugin + "'" ); 
     1309    HTMLArea._ddt( "htmlarea.js","1309", "refreshPlugin(): onGenerate is a function. calling onGenerate for '" + plugin + "'" ); 
    12411310    plugin.onGenerate(); 
    12421311    } 
     
    12441313  if (typeof plugin.onGenerateOnce == "function")  
    12451314    { 
    1246     HTMLArea._ddt( "htmlarea.js","1246", "refreshPlugin(): onGenerateOnce is a function. calling onGenerateOnce for '" + plugin + "'" ); 
     1315    HTMLArea._ddt( "htmlarea.js","1315", "refreshPlugin(): onGenerateOnce is a function. calling onGenerateOnce for '" + plugin + "'" ); 
    12471316    plugin.onGenerateOnce(); 
    12481317    plugin.onGenerateOnce = null; 
     
    12611330  var url = _editor_url || ''; 
    12621331 
    1263   HTMLArea._ddt( "htmlarea.js","1263", "loadStyle(): top with style '" + style + "' and plugin '" + plugin + "'" ); 
     1332  HTMLArea._ddt( "htmlarea.js","1332", "loadStyle(): top with style '" + style + "' and plugin '" + plugin + "'" ); 
    12641333   
    12651334  if (typeof plugin != "undefined")  
     
    12791348  head.appendChild(link); 
    12801349 
    1281   HTMLArea._ddt( "htmlarea.js","1281", "loadStyle(): appending '" + link.href + "' to document" ); 
     1350  HTMLArea._ddt( "htmlarea.js","1350", "loadStyle(): appending '" + link.href + "' to document" ); 
    12821351 
    12831352  //document.write("<style type='text/css'>@import url(" + url + ");</style>"); 
     
    13121381  { 
    13131382 
    1314   HTMLArea._ddt( "htmlarea.js","1314", "getInnerText(): top" ); 
     1383  HTMLArea._ddt( "htmlarea.js","1383", "getInnerText(): top" ); 
    13151384 
    13161385  var txt = '', i; 
     
    13401409  { 
    13411410 
    1342   HTMLArea._ddt( "htmlarea.js","1342", "cloneObject(): top" ); 
     1411  HTMLArea._ddt( "htmlarea.js","1411", "cloneObject(): top" ); 
    13431412 
    13441413  if (!obj) return null; 
     
    13511420    { 
    13521421 
    1353     HTMLArea._ddt( "htmlarea.js","1353", "cloneObject(): contructing an array object." ); 
     1422    HTMLArea._ddt( "htmlarea.js","1422", "cloneObject(): contructing an array object." ); 
    13541423 
    13551424    newObj = obj.constructor(); 
     
    13601429    { 
    13611430 
    1362     HTMLArea._ddt( "htmlarea.js","1362", "cloneObject(): cloning an function object." ); 
     1431    HTMLArea._ddt( "htmlarea.js","1431", "cloneObject(): cloning an function object." ); 
    13631432 
    13641433    newObj = obj; // just copy reference to it 
     
    13671436    { 
    13681437 
    1369     HTMLArea._ddt( "htmlarea.js","1369", "cloneObject(): copying object members." ); 
     1438    HTMLArea._ddt( "htmlarea.js","1438", "cloneObject(): copying object members." ); 
    13701439 
    13711440         for (var n in obj)  
     
    14001469  { 
    14011470 
    1402   HTMLArea._ddt( "htmlarea.js","1402", "checkSupportedBrowser(): top" ); 
     1471  HTMLArea._ddt( "htmlarea.js","1471", "checkSupportedBrowser(): top" ); 
    14031472 
    14041473  if (HTMLArea.is_gecko)  
     
    14361505  { 
    14371506 
    1438   HTMLArea._ddt( "htmlarea.js","1438", "getElementById(): top with tag '" + tag + "' id '" + id + "'" ); 
     1507  HTMLArea._ddt( "htmlarea.js","1507", "getElementById(): top with tag '" + tag + "' id '" + id + "'" ); 
    14391508 
    14401509  var el, i, objs = document.getElementsByTagName(tag); 
     
    14581527  { 
    14591528 
    1460   HTMLArea._ddt( "htmlarea.js","1460", "_postback() : top with url '" + url + "'" ); 
     1529  HTMLArea._ddt( "htmlarea.js","1529", "_postback() : top with url '" + url + "'" ); 
    14611530 
    14621531  var req = null; 
     
    15101579  { 
    15111580 
    1512   HTMLArea._ddt( "htmlarea.js","1512", "_getback(): top" ); 
     1581  HTMLArea._ddt( "htmlarea.js","1581", "_getback(): top" ); 
    15131582 
    15141583  var req = null; 
     
    15521621  { 
    15531622 
    1554   HTMLArea._ddt( "htmlarea.js","1554", "_geturlcontent(): top with url '" + url + "'" ); 
     1623  HTMLArea._ddt( "htmlarea.js","1623", "_geturlcontent(): top with url '" + url + "'" ); 
    15551624 
    15561625  var req = null; 
     
    15871656  { 
    15881657 
    1589   HTMLArea._ddt( "htmlarea.js","1589", "arrayContainsArray(): top" ); 
     1658  HTMLArea._ddt( "htmlarea.js","1658", "arrayContainsArray(): top" ); 
    15901659 
    15911660  var all_found = true; 
     
    16221691  { 
    16231692 
    1624   HTMLArea._ddt( "htmlarea.js","1624", "arrayFilter(): top" ); 
     1693  HTMLArea._ddt( "htmlarea.js","1693", "arrayFilter(): top" ); 
    16251694 
    16261695  var new_a = [ ]; 
     
    16591728  { 
    16601729 
    1661   HTMLArea._ddt( "htmlarea.js","1661", "_loadlang(): top" ); 
     1730  HTMLArea._ddt( "htmlarea.js","1730", "_loadlang(): top" ); 
    16621731 
    16631732  if(typeof _editor_lcbackend == "string") 
     
    17161785  { 
    17171786 
    1718   HTMLArea._ddt( "htmlarea.js","1718", "_lc: top with string '" + string + "'" ); 
     1787  HTMLArea._ddt( "htmlarea.js","1787", "_lc: top with string '" + string + "'" ); 
    17191788 
    17201789  if(_editor_lang == "en") 
     
    17581827  { 
    17591828 
    1760   HTMLArea._ddt( "htmlarea.js","1760", "hasDisplayedChildren(): top" ); 
     1829  HTMLArea._ddt( "htmlarea.js","1829", "hasDisplayedChildren(): top" ); 
    17611830 
    17621831  var children = el.childNodes; 
     
    17881857  { 
    17891858 
    1790   HTMLArea._ddt( "htmlarea.js","1790", "_loadback(): top with src '" + src + "'" ); 
     1859  HTMLArea._ddt( "htmlarea.js","1859", "_loadback(): top with src '" + src + "'" ); 
    17911860 
    17921861  var head = document.getElementsByTagName("head")[0]; 
     
    18101879  head.appendChild(script); 
    18111880 
    1812   HTMLArea._ddt( "htmlarea.js","1812", "_loadback(): script tag to load javascript file appended to head section." ); 
     1881  HTMLArea._ddt( "htmlarea.js","1881", "_loadback(): script tag to load javascript file appended to head section." ); 
    18131882 
    18141883  };  // end of _loadback() 
     
    18231892  { 
    18241893 
    1825   HTMLArea._ddt( "htmlarea.js","1825", "collectionToArray(): top" ); 
     1894  HTMLArea._ddt( "htmlarea.js","1894", "collectionToArray(): top" ); 
    18261895 
    18271896  var array = [ ]; 
     
    18431912  { 
    18441913 
    1845   HTMLArea._ddt( "htmlarea.js","1845", "makeEditors(): top" ); 
     1914  HTMLArea._ddt( "htmlarea.js","1914", "makeEditors(): top" ); 
    18461915 
    18471916  if ( typeof default_config == 'function') 
    18481917    { 
    18491918 
    1850          HTMLArea._ddt( "htmlarea.js","1850", "makeEditors(): default config is a function" ); 
     1919                HTMLArea._ddt( "htmlarea.js","1919", "makeEditors(): default config is a function" ); 
    18511920    default_config = default_config(); 
    18521921    } 
     
    18561925    { 
    18571926 
    1858          HTMLArea._ddt( "htmlarea.js","1858", "makeEditors(): making editor '" + editor_names[x] + "' and copying in cloned default_config" ); 
     1927                HTMLArea._ddt( "htmlarea.js","1927", "makeEditors(): making editor '" + editor_names[x] + "' and copying in cloned default_config" ); 
    18591928 
    18601929    editors[editor_names[x]] = new HTMLArea(editor_names[x], HTMLArea.cloneObject(default_config)); 
     
    18651934        { 
    18661935 
    1867                   HTMLArea._ddt( "htmlarea.js","1867", "makeEditors(): registering plugin '" + plugin_names[i] + "' for editor '" + editor_names[x] + "'" ); 
     1936                                HTMLArea._ddt( "htmlarea.js","1936", "makeEditors(): registering plugin '" + plugin_names[i] + "' for editor '" + editor_names[x] + "'" ); 
    18681937                   
    18691938        editors[editor_names[x]].registerPlugin(eval(plugin_names[i])); 
     
    18711940      } 
    18721941    } 
     1942 
    18731943  return editors; 
    18741944 
     
    18861956  { 
    18871957 
    1888   HTMLArea._ddt( "htmlarea.js","1888", "startEditors(): top" ); 
     1958  HTMLArea._ddt( "htmlarea.js","1958", "startEditors(): top" ); 
    18891959 
    18901960  for(var i in editors) 
     
    19051975  { 
    19061976 
    1907   HTMLArea._ddt( "htmlarea.js","1907", "_makeColor(): top" ); 
     1977  HTMLArea._ddt( "htmlarea.js","1977", "_makeColor(): top" ); 
    19081978 
    19091979  if (typeof v != "number")  
     
    20512121  { 
    20522122 
    2053   HTMLArea._ddt( "htmlarea.js","2073", "getHTML(): top" ); 
     2123  HTMLArea._ddt( "htmlarea.js","2123", "getHTML(): top" ); 
    20542124 
    20552125  try 
     
    20742144  { 
    20752145 
    2076   HTMLArea._ddt( "htmlarea.js","2073", "getHTMLWrapper(): top" ); 
     2146  HTMLArea._ddt( "htmlarea.js","2146", "getHTMLWrapper(): top" ); 
    20772147 
    20782148  var html = ""; 
     
    22722342  { 
    22732343 
    2274   HTMLArea._ddt( "htmlarea.js","2271", "addClasses(): top" ); 
     2344  HTMLArea._ddt( "htmlarea.js","2344", "addClasses(): top" ); 
    22752345 
    22762346  if(el != null) 
     
    23062376  { 
    23072377 
    2308   HTMLArea._ddt( "htmlarea.js","2305", "removeClasses(): top" ); 
     2378  HTMLArea._ddt( "htmlarea.js","2378", "removeClasses(): top" ); 
    23092379 
    23102380  var existing    = el.className.trim().split(); 
     
    24192489  { 
    24202490 
    2421   HTMLArea._ddt( "htmlarea.js","2418", "_addEvent(): adding event for '" + evname + "' func '" + func.toString().substring(0,100) + "'" ); 
     2491  HTMLArea._ddt( "htmlarea.js","2491", "_addEvent(): adding event for '" + evname + "' func '" + func.toString().substring(0,100) + "'" ); 
    24222492 
    24232493  if (HTMLArea.is_ie)  
     
    25442614    // STRIP] 
    25452615 
    2546     this.ddt._ddt( "htmlarea.js","2543", "HTMLArea(): DDT Trace System Initialized." ); 
     2616    this.ddt._ddt( "htmlarea.js","2616", "HTMLArea(): DDT Trace System Initialized." ); 
    25472617 
    25482618    this._htmlArea = null; 
     
    25982668    }  // end of if we are a supported browser. 
    25992669 
    2600   this.ddt._ddt( "htmlarea.js","2597", "HTMLArea(): end" ); 
     2670  this.ddt._ddt( "htmlarea.js","2670", "HTMLArea(): end" ); 
    26012671 
    26022672  };  // end of HTMLArea() constructor 
     
    26112681  { 
    26122682 
    2613   this.ddt._ddt( "htmlarea.js","2610", "_createToolbar(): top" ); 
     2683  this.ddt._ddt( "htmlarea.js","2683", "_createToolbar(): top" ); 
    26142684 
    26152685  var editor = this;    // to access this in nested functions 
     
    26382708  { 
    26392709 
    2640   this.ddt._ddt( "htmlarea.js","2637", "registerPanel(): top with side '" + side + "'" ); 
     2710  this.ddt._ddt( "htmlarea.js","2710", "registerPanel(): top with side '" + side + "'" ); 
    26412711 
    26422712  if(!side) side = 'right'; 
     
    26812751  { 
    26822752 
    2683   this.ddt._ddt( "htmlarea.js","2680", "_createToolbar1(): top" ); 
     2753  this.ddt._ddt( "htmlarea.js","2753", "_createToolbar1(): top" ); 
    26842754 
    26852755  // creates a new line in the toolbar 
     
    26882758    { 
    26892759 
    2690          editor.ddt._ddt( "htmlarea.js","2687", "newLine(): top" ); 
     2760         editor.ddt._ddt( "htmlarea.js","2760", "newLine(): top" ); 
    26912761 
    26922762    var table = document.createElement("table"); 
     
    27242794    { 
    27252795 
    2726          HTMLArea._ddt( "htmlarea.js","2723", "setButtonStatus() : top with id '" + id + "' value '" + newval + '"' ); 
     2796         HTMLArea._ddt( "htmlarea.js","2796", "setButtonStatus() : top with id '" + id + "' value '" + newval + '"' ); 
    27272797 
    27282798    var oldval = this[id]; 
     
    27802850    { 
    27812851 
    2782          HTMLArea._ddt( "htmlarea.js","2779", "createSelect(): top with text '" + txt + "'" ); 
     2852         HTMLArea._ddt( "htmlarea.js","2852", "createSelect(): top with text '" + txt + "'" ); 
    27832853 
    27842854    var options = null; 
     
    28582928 
    28592929      HTMLArea._addEvent(el, "change",  
    2860                   function ()  
    2861                     { 
    2862           editor._comboSelected(el, txt); 
    2863           }); 
    2864       } 
    2865  
    2866          HTMLArea._ddt( "htmlarea.js","2863", "createSelect(): end" ); 
     2930                                function ()  
     2931                                        { 
     2932                                        editor._comboSelected(el, txt); 
     2933                                        }); 
     2934      } 
     2935 
     2936         HTMLArea._ddt( "htmlarea.js","2936", "createSelect(): end" ); 
    28672937 
    28682938    return el; 
     
    28792949    { 
    28802950 
    2881          editor.ddt._ddt( "htmlarea.js","2878", "createButton(): top with text '" + txt + "'" ); 
     2951         editor.ddt._ddt( "htmlarea.js","2951", "createButton(): top with text '" + txt + "'" ); 
    28822952 
    28832953    // the element that will be created 
     
    29563026 
    29573027      HTMLArea._addEvent(el, "mouseout",  
    2958                   function ()  
    2959                     { 
    2960           if (obj.enabled) with (HTMLArea)  
    2961                       { 
     3028                                function ()  
     3029                            { 
     3030                                        if (obj.enabled) with (HTMLArea)  
     3031                                                { 
     3032 
     3033                                                HTMLArea._ddt( "htmlarea.js","3033", "mouseout event: top" ); 
     3034 
    29623035            //_removeClass(el, "buttonHover"); 
    2963             _removeClass(el, "buttonActive"); 
    2964             (obj.active) && _addClass(el, "buttonPressed"); 
    2965           } 
    2966         }); 
     3036                                                _removeClass(el, "buttonActive"); 
     3037                                                (obj.active) && _addClass(el, "buttonPressed"); 
     3038                  } 
     3039              }); 
    29673040 
    29683041      HTMLArea._addEvent(el, "mousedown",  
    2969                   function (ev)  
    2970                     { 
    2971           if (obj.enabled) with (HTMLArea)  
    2972                            { 
    2973             _addClass(el, "buttonActive"); 
    2974             _removeClass(el, "buttonPressed"); 
    2975             _stopEvent(is_ie ? window.event : ev); 
    2976             } 
    2977           }); 
     3042                                function (ev)  
     3043                                        { 
     3044                                        if (obj.enabled) with (HTMLArea)  
     3045                                                { 
     3046 
     3047                                                HTMLArea._ddt( "htmlarea.js","3047", "mousedown event top" ); 
     3048 
     3049                                                _addClass(el, "buttonActive"); 
     3050                                                _removeClass(el, "buttonPressed"); 
     3051                                                _stopEvent(is_ie ? window.event : ev); 
     3052                                                } 
     3053                                        }); 
    29783054 
    29793055      // when clicked, do the following: 
    29803056 
    29813057      HTMLArea._addEvent(el, "click",  
    2982                   function (ev)  
    2983                     { 
    2984           if (obj.enabled) with (HTMLArea)  
    2985                            { 
     3058                          function (ev)  
     3059                                        { 
     3060                                        if (obj.enabled) with (HTMLArea)  
     3061                                                { 
     3062 
     3063                                                HTMLArea._ddt( "htmlarea.js","3063", "click event top" ); 
     3064 
    29863065            _removeClass(el, "buttonActive"); 
    29873066            //_removeClass(el, "buttonHover"); 
     
    30993178  { 
    31003179 
    3101   this.ddt._ddt( "htmlarea.js","3098", "_createStatusBar(): top" ); 
     3180  this.ddt._ddt( "htmlarea.js","3180", "_createStatusBar(): top" ); 
    31023181 
    31033182  var statusbar = document.createElement("div"); 
     
    31333212  { 
    31343213 
    3135   this.ddt._ddt( "htmlarea.js","3132", "generate(): top" ); 
     3214  this.ddt._ddt( "htmlarea.js","3214", "generate(): top" ); 
    31363215 
    31373216  var editor = this;    // we'll need "this" in some nested functions 
     
    31483227          { 
    31493228 
    3150                          this.ddt._ddt( "htmlarea.js","3147", "generate(): mozParaHandler config set to 'best'. Loading EnterParagraphs" ); 
     3229                         this.ddt._ddt( "htmlarea.js","3229", "generate(): mozParaHandler config set to 'best'. Loading EnterParagraphs" ); 
    31513230 
    31523231          EnterParagraphs = 'null'; 
     
    32003279  textarea.parentNode.insertBefore(htmlarea, textarea); 
    32013280 
    3202   this.ddt._ddt( "htmlarea.js","3199", "generate(): creating toolbar" ); 
     3281  this.ddt._ddt( "htmlarea.js","3281", "generate(): creating toolbar" ); 
    32033282 
    32043283  // creates & appends the toolbar 
     
    32283307  // } 
    32293308 
    3230   this.ddt._ddt( "htmlarea.js","3227", "generate(): adding panels" ); 
     3309  this.ddt._ddt( "htmlarea.js","3309", "generate(): adding panels" ); 
    32313310 
    32323311  // Add the panels 
     
    32363315    } 
    32373316 
    3238   this.ddt._ddt( "htmlarea.js","3235", "generate(): creating Status Bar" ); 
     3317  this.ddt._ddt( "htmlarea.js","3317", "generate(): creating Status Bar" ); 
    32393318 
    32403319  // creates & appends the status bar 
     
    32633342        { 
    32643343 
    3265                   this.ddt._ddt( "htmlarea.js","3262", "generate(): f.onsubmit(): top" ); 
     3344                  this.ddt._ddt( "htmlarea.js","3344", "generate(): f.onsubmit(): top" ); 
    32663345 
    32673346        var a = this.__msh_prevOnSubmit; 
     
    33023381        { 
    33033382 
    3304         this.ddt._ddt( "htmlarea.js","3301", "generate(): f.onreset(): top" ); 
     3383        this.ddt._ddt( "htmlarea.js","3383", "generate(): f.onreset(): top" ); 
    33053384 
    33063385        var a = this.__msh_prevOnReset; 
     
    33303409  try  
    33313410    { 
    3332     HTMLArea._addEvent(window, 'unload', function() {textarea.value = editor.outwardHtml(editor.getHTML());} ); 
     3411    HTMLArea._addEvent(window, 'unload',  
     3412                        function()  
     3413                                { 
     3414                                HTMLArea._ddt( "htmlarea.js","3414", "unload event top" ); 
     3415                                textarea.value = editor.outwardHtml(editor.getHTML()); 
     3416                                } ); 
    33333417    } catch(e) {}; 
    33343418 
     
    33373421  textarea.style.display = "none"; 
    33383422 
    3339   this.ddt._ddt( "htmlarea.js","3336", "generate(): calculating starting size" ); 
     3423  this.ddt._ddt( "htmlarea.js","3423", "generate(): calculating starting size" ); 
    33403424 
    33413425  // Calculate the starting size, EXCLUDING THE TOOLBAR & STATUS BAR (always) 
     
    33753459  this.notifyOn('panel_change',function(){editor.setInnerSize();}); 
    33763460 
    3377   this.ddt._ddt( "htmlarea.js","3374", "generate(): bottom before timeout call to initIframe()" ); 
     3461  this.ddt._ddt( "htmlarea.js","3461", "generate(): bottom before timeout call to initIframe()" ); 
    33783462 
    33793463  // IMPORTANT: we have to allow Mozilla a short time to recognize the 
     
    33973481  var editor = this; 
    33983482 
    3399   this.ddt._ddt( "htmlarea.js","3396", "initFrame(): top" ); 
     3483  this.ddt._ddt( "htmlarea.js","3483", "initFrame(): top" ); 
    34003484 
    34013485  try 
     
    34883572        ["mousedown"], 
    34893573        function()  
    3490                     {  
    3491  
    3492                          editor.ddt._ddt( "htmlarea.js","3489", "_iframe.contentWindow mouse down event. activating editor" ); 
    3493                          editor.activateEditor();   
    3494                          } 
     3574                        {  
     3575                                        HTMLArea._ddt( "htmlarea.js","3575", "mousedown iframe event top" ); 
     3576                                        editor.ddt._ddt( "htmlarea.js","3576", "_iframe.contentWindow mouse down event. activating editor" ); 
     3577                                        editor.activateEditor();   
     3578                                        } 
    34953579        ); 
    34963580    } 
     
    35053589  HTMLArea._addEvents( doc,  
    35063590    ["keydown", "keypress", "mousedown", "mouseup", "drag"], 
    3507        function (event)  
    3508                    { 
    3509          return editor._editorEvent(HTMLArea.is_ie ? editor._iframe.contentWindow.event : event); 
    3510          }); 
     3591                                function (event)  
     3592                                        { 
     3593                                        HTMLArea._ddt( "htmlarea.js","3593", "event '" + event + "' top" ); 
     3594                                        return editor._editorEvent(HTMLArea.is_ie ? editor._iframe.contentWindow.event : event); 
     3595                                        }); 
    35113596 
    35123597  // check if any plugins have registered refresh handlers 
     
    35573642  { 
    35583643 
    3559   this.ddt._ddt( "htmlarea.js","3556", "setInnerSize(): top with width '" + width + "' height '" + height + "'" ); 
     3644  this.ddt._ddt( "htmlarea.js","3644", "setInnerSize(): top with width '" + width + "' height '" + height + "'" ); 
    35603645 
    35613646  if (typeof width == 'undefined' || width == null) 
     
    36863771  { 
    36873772 
    3688   this.ddt._ddt( "htmlarea.js","3685", "addPanel() : top with side '" + side + "'" ); 
     3773  this.ddt._ddt( "htmlarea.js","3773", "addPanel() : top with side '" + side + "'" ); 
    36893774 
    36903775  var div = document.createElement('div'); 
     
    37063791  { 
    37073792 
    3708   this.ddt._ddt( "htmlarea.js","3705", "removePanel() : top" ); 
     3793  this.ddt._ddt( "htmlarea.js","3793", "removePanel() : top" ); 
    37093794 
    37103795  this._panels[panel.side].div.removeChild(panel); 
     
    37303815  { 
    37313816 
    3732   this.ddt._ddt( "htmlarea.js","3729", "hidePanel() : top" ); 
     3817  this.ddt._ddt( "htmlarea.js","3817", "hidePanel() : top" ); 
    37333818 
    37343819  if (panel) 
     
    37463831  { 
    37473832 
    3748   this.ddt._ddt( "htmlarea.js","3745", "showPanel() : top" ); 
     3833  this.ddt._ddt( "htmlarea.js","3833", "showPanel() : top" ); 
    37493834 
    37503835  if ( panel ) 
     
    37623847  { 
    37633848 
    3764   this.ddt._ddt( "htmlarea.js","3761", "hidePanels() : top" ); 
     3849  this.ddt._ddt( "htmlarea.js","3849", "hidePanels() : top" ); 
    37653850 
    37663851  if(typeof sides == 'undefined') 
     
    37893874  { 
    37903875 
    3791   this.ddt._ddt( "htmlarea.js","3788", "showPanels() : top" ); 
     3876  this.ddt._ddt( "htmlarea.js","3876", "showPanels() : top" ); 
    37923877 
    37933878  if(typeof sides == 'undefined') 
     
    38173902  { 
    38183903 
    3819   this.ddt._ddt( "htmlarea.js","3816", "activateEditor(): top - called by '" + HTMLArea.prototype.activateEditor.caller.toString().substring(0,100) + "'" ); 
     3904  this.ddt._ddt( "htmlarea.js","3904", "activateEditor(): top - called by '" + HTMLArea.prototype.activateEditor.caller.toString().substring(0,100) + "'" ); 
    38203905 
    38213906  if (HTMLArea.is_gecko && this._doc.designMode != 'on') 
     
    38243909    try{HTMLArea.last_on.designMode = 'off';} catch(e) { } 
    38253910 
    3826     this.ddt._ddt( "htmlarea.js","3823", "activateEditor(): _iframe.style.display is '" + this._iframe.style.display + "'" ); 
     3911    this.ddt._ddt( "htmlarea.js","3911", "activateEditor(): _iframe.style.display is '" + this._iframe.style.display + "'" ); 
    38273912 
    38283913    if(this._iframe.style.display == 'none') 
     
    38353920      { 
    38363921 
    3837                 this.ddt._ddt( "htmlarea.js","3834", "activateEditor(): setting designMode to on" ); 
     3922                this.ddt._ddt( "htmlarea.js","3922", "activateEditor(): setting designMode to on" ); 
    38383923 
    38393924      this._doc.designMode = 'on'; 
     
    38433928    { 
    38443929 
    3845          this.ddt._ddt( "htmlarea.js","3842", "activateEditor(): Setting contentEditable to true" ); 
     3930         this.ddt._ddt( "htmlarea.js","3930", "activateEditor(): Setting contentEditable to true" ); 
    38463931 
    38473932    this._doc.body.contentEditable = true; 
     
    38503935  HTMLArea.last_on = this._doc; 
    38513936 
    3852   this.ddt._ddt( "htmlarea.js","3849", "activateEditor(): end" ); 
     3937  this.ddt._ddt( "htmlarea.js","3937", "activateEditor(): end" ); 
    38533938 
    38543939  }  // end of activateEditor() 
     
    38633948  { 
    38643949 
    3865   this.ddt._ddt( "htmlarea.js","3862", "deactivateEditor(): top" ); 
     3950  this.ddt._ddt( "htmlarea.js","3950", "deactivateEditor(): top" ); 
    38663951 
    38673952  if (HTMLArea.is_gecko && this._doc.designMode == 'on') 
     
    38883973  { 
    38893974 
    3890   this.ddt._ddt( "htmlarea.js","3887", "setMode(): setting mode to '" + mode + "'" ); 
     3975  this.ddt._ddt( "htmlarea.js","3975", "setMode(): setting mode to '" + mode + "'" ); 
    38913976 
    38923977  if (typeof mode == "undefined")  
     
    39674052  { 
    39684053 
    3969   this.ddt._ddt( "htmlarea.js","3966", "setFullHTML(): top" ); 
     4054  this.ddt._ddt( "htmlarea.js","4054", "setFullHTML(): top" ); 
    39704055 
    39714056  var save_multiline = RegExp.multiline; 
     
    40144099  { 
    40154100 
    4016   this.ddt._ddt( "htmlarea.js","4013", "registerPlugin(): top" ); 
     4101  this.ddt._ddt( "htmlarea.js","4101", "registerPlugin(): top" ); 
    40174102 
    40184103  var plugin = arguments[0]; 
     
    40364121  { 
    40374122 
    4038   this.ddt._ddt( "htmlarea.js","4035", "registerPlugin2(): top" ); 
     4123  this.ddt._ddt( "htmlarea.js","4123", "registerPlugin2(): top" ); 
    40394124 
    40404125  if (typeof plugin == "string") 
     
    40444129    { 
    40454130 
    4046          this.ddt._ddt( "htmlarea.js","4043", "registerPlugin2(): INTERNAL ERROR: plugin is undefined. " ); 
     4131         this.ddt._ddt( "htmlarea.js","4131", "registerPlugin2(): INTERNAL ERROR: plugin is undefined. " ); 
    40474132 
    40484133    /* FIXME: This should never happen. But why does it do? */ 
     
    41184203  var editor = this; 
    41194204 
    4120   this.ddt._ddt( "htmlarea.js","4117", "_wordClean(): top" ); 
     4205  this.ddt._ddt( "htmlarea.js","4205", "_wordClean(): top" ); 
    41214206 
    41224207  var stats =  
     
    42354320  // this.forceRedraw(); 
    42364321 
    4237   this.ddt._ddt( "htmlarea.js","4234", "_wordClean(): bottom" ); 
     4322  this.ddt._ddt( "htmlarea.js","4322", "_wordClean(): bottom" ); 
    42384323 
    42394324  this.updateToolbar(); 
     
    42504335  { 
    42514336 
    4252   this.ddt._ddt( "htmlarea.js","4249", "_clearFonts(): top" ); 
     4337  this.ddt._ddt( "htmlarea.js","4337", "_clearFonts(): top" ); 
    42534338   
    42544339  var D = this.getInnerHTML(); 
     
    42884373  { 
    42894374 
    4290   this.ddt._ddt( "htmlarea.js","4287", "_splitBlock(): top" ); 
     4375  this.ddt._ddt( "htmlarea.js","4375", "_splitBlock(): top" ); 
    42914376 
    42924377  this._doc.execCommand('formatblock', false, '<div>'); 
     
    43024387  { 
    43034388 
    4304   this.ddt._ddt( "htmlarea.js","4301", "forceRedraw(): top" ); 
     4389  this.ddt._ddt( "htmlarea.js","4389", "forceRedraw(): top" ); 
    43054390 
    43064391  this._doc.body.style.visibility = "hidden"; 
     
    43204405  { 
    43214406 
    4322   this.ddt._ddt( "htmlarea.js","4319", "focusEditor(): top _editMode is '" + this._editMode + "'" ); 
     4407  this.ddt._ddt( "htmlarea.js","4407", "focusEditor(): top _editMode is '" + this._editMode + "'" ); 
    43234408 
    43244409  switch (this._editMode)  
     
    43684453  { 
    43694454 
    4370   this.ddt._ddt( "htmlarea.js","4367", "_undoTakeSnapshot(): top" ); 
     4455  this.ddt._ddt( "htmlarea.js","4455", "_undoTakeSnapshot(): top" ); 
    43714456 
    43724457  ++this._undoPos; 
     
    44054490  { 
    44064491 
    4407   this.ddt._ddt( "htmlarea.js","4404", "undo(): top" ); 
     4492  this.ddt._ddt( "htmlarea.js","4492", "undo(): top" ); 
    44084493 
    44094494  if (this._undoPos > 0)  
     
    44244509  { 
    44254510 
    4426   this.ddt._ddt( "htmlarea.js","4423", "redo(): top" ); 
     4511  this.ddt._ddt( "htmlarea.js","4511", "redo(): top" ); 
    44274512 
    44284513  if (this._undoPos < this._undoQueue.length - 1)  
     
    44434528  { 
    44444529 
    4445   this.ddt._ddt( "htmlarea.js","4442", "disableToolbar(): top" ); 
     4530  this.ddt._ddt( "htmlarea.js","4530", "disableToolbar(): top" ); 
    44464531 
    44474532  if(typeof except == 'undefined') 
     
    44754560  { 
    44764561 
    4477   this.ddt._ddt( "htmlarea.js","4474", "enableToolbar(): top" ); 
     4562  this.ddt._ddt( "htmlarea.js","4562", "enableToolbar(): top" ); 
    44784563 
    44794564  this.updateToolbar(); 
     
    44924577  var ancestors = null; 
    44934578 
    4494   this.ddt._ddt( "htmlarea.js","4491", "updateToolbar(): top" ); 
     4579  this.ddt._ddt( "htmlarea.js","4579", "updateToolbar(): top" ); 
    44954580 
    44964581  if (!text)  
     
    45064591                    { 
    45074592 
    4508                          this.ddt._ddt( "htmlarea.js","4505", "updateToolbar(): INTERNAL ERROR" ); 
     4593                         this.ddt._ddt( "htmlarea.js","4593", "updateToolbar(): INTERNAL ERROR" ); 
    45094594 
    45104595          // hell knows why we get here; this 
     
    45884673                    { 
    45894674 
    4590                          this.ddt._ddt( "htmlarea.js","4587", "updateToolbar(): INTERNAL ERROR" ); 
     4675                         this.ddt._ddt( "htmlarea.js","4675", "updateToolbar(): INTERNAL ERROR" ); 
    45914676 
    45924677          // the impossible really happens. 
     
    48074892    } 
    48084893 
    4809   this.ddt._ddt( "htmlarea.js","4806", "updateToolbar(): end" ); 
     4894  this.ddt._ddt( "htmlarea.js","4894", "updateToolbar(): end" ); 
    48104895 
    48114896  }  // end of updateToolbar() 
     
    48234908  { 
    48244909 
    4825   this.ddt._ddt( "htmlarea.js","4822", "insertNodeAtSelection(): top" ); 
     4910  this.ddt._ddt( "htmlarea.js","4910", "insertNodeAtSelection(): top" ); 
    48264911 
    48274912  if (!HTMLArea.is_ie)  
     
    48964981  { 
    48974982 
    4898   this.ddt._ddt( "htmlarea.js","4895", "getParentElement(): top" ); 
     4983  this.ddt._ddt( "htmlarea.js","4983", "getParentElement(): top" ); 
    48994984 
    49004985  if (typeof sel == 'undefined') 
     
    49635048  { 
    49645049 
    4965   this.ddt._ddt( "htmlarea.js","4962", "getAllAncestors(): top" ); 
     5050  this.ddt._ddt( "htmlarea.js","5050", "getAllAncestors(): top" ); 
    49665051 
    49675052  var p = this.getParentElement(); 
     
    49895074  { 
    49905075 
    4991   this.ddt._ddt( "htmlarea.js","4988", "_getFirstAncestor(): top" ); 
     5076  this.ddt._ddt( "htmlarea.js","5076", "_getFirstAncestor(): top" ); 
    49925077 
    49935078  var prnt = this._activeElement(sel); 
     
    50445129  { 
    50455130 
    5046   this.ddt._ddt( "htmlarea.js","5043", "_activeElement(): top" ); 
     5131  this.ddt._ddt( "htmlarea.js","5131", "_activeElement(): top" ); 
    50475132 
    50485133  if(sel == null) return null; 
    50495134  if ( this._selectionEmpty(sel) )  
    50505135    { 
    5051          this.ddt._ddt( "htmlarea.js","5048", "_activeElement(): _selectionEmpty returned true. Returning null" ); 
     5136         this.ddt._ddt( "htmlarea.js","5136", "_activeElement(): _selectionEmpty returned true. Returning null" ); 
    50525137    return null; 
    50535138         } 
     
    51075192      { 
    51085193 
    5109                 this.ddt._ddt( "htmlarea.js","5106", "_activeElement(): selection is not collapsed" ); 
     5194                this.ddt._ddt( "htmlarea.js","5194", "_activeElement(): selection is not collapsed" ); 
    51105195 
    51115196      if(sel.anchorNode.nodeType == 1) 
    51125197        { 
    5113                   this.ddt._ddt( "htmlarea.js","5110", "_activeElement(): nodeType is 1. Returning sel.anchorNode" ); 
     5198                  this.ddt._ddt( "htmlarea.js","5198", "_activeElement(): nodeType is 1. Returning sel.anchorNode" ); 
    51145199 
    51155200        return sel.anchorNode; 
     
    51175202      } 
    51185203 
    5119     this.ddt._ddt( "htmlarea.js","5116", "_activeElement(): bottom" ); 
     5204    this.ddt._ddt( "htmlarea.js","5204", "_activeElement(): bottom" ); 
    51205205 
    51215206    return null; 
     
    51335218  { 
    51345219 
    5135   this.ddt._ddt( "htmlarea.js","5132", "_selectionEmpty(): top" ); 
     5220  this.ddt._ddt( "htmlarea.js","5220", "_selectionEmpty(): top" ); 
    51365221 
    51375222  if (!sel)  
    51385223    { 
    5139          this.ddt._ddt( "htmlarea.js","5136", "_selectionEmpty(): no selection" ); 
     5224         this.ddt._ddt( "htmlarea.js","5224", "_selectionEmpty(): no selection" ); 
    51405225    return true; 
    51415226         } 
     
    51475232  else if(typeof sel.isCollapsed != 'undefined') 
    51485233    { 
    5149          this.ddt._ddt( "htmlarea.js","5146", "_selectionEmpty(): isCollapsed" ); 
     5234         this.ddt._ddt( "htmlarea.js","5234", "_selectionEmpty(): isCollapsed" ); 
    51505235    return sel.isCollapsed; 
    51515236    } 
    51525237 
    5153   this.ddt._ddt( "htmlarea.js","5150", "_selectionEmpty(): bottom. returning true." ); 
     5238  this.ddt._ddt( "htmlarea.js","5238", "_selectionEmpty(): bottom. returning true." ); 
    51545239 
    51555240  return true; 
     
    51665251  { 
    51675252 
    5168   this.ddt._ddt( "htmlarea.js","5165", "_getAncestorBlock(): top" ); 
     5253  this.ddt._ddt( "htmlarea.js","5253", "_getAncestorBlock(): top" ); 
    51695254 
    51705255  // Scan upwards to find a block level element that we can change or apply to 
     
    52235308  { 
    52245309 
    5225   this.ddt._ddt( "htmlarea.js","5222", "_createImplicitBlock(): top" ); 
     5310  this.ddt._ddt( "htmlarea.js","5310", "_createImplicitBlock(): top" ); 
    52265311 
    52275312  // expand it until we reach a block element in either direction 
     
    53695454  { 
    53705455 
    5371   this.ddt._ddt( "htmlarea.js","5368", "selectNodeContents(): top" ); 
     5456  this.ddt._ddt( "htmlarea.js","5456", "selectNodeContents(): top" ); 
    53725457 
    53735458  this.focusEditor(); 
     
    54305515  { 
    54315516 
    5432   this.ddt._ddt( "htmlarea.js","5429", "insertHTML(): top" ); 
     5517  this.ddt._ddt( "htmlarea.js","5517", "insertHTML(): top" ); 
    54335518 
    54345519  var sel = this._getSelection(); 
     
    54675552  { 
    54685553 
    5469   this.ddt._ddt( "htmlarea.js","5466", "surroundHTML(): top" ); 
     5554  this.ddt._ddt( "htmlarea.js","5554", "surroundHTML(): top" ); 
    54705555 
    54715556  var html = this.getSelectedHTML(); 
     
    54845569  { 
    54855570 
    5486   this.ddt._ddt( "htmlarea.js","5483", "getSelectedHTML(): top" ); 
     5571  this.ddt._ddt( "htmlarea.js","5571", "getSelectedHTML(): top" ); 
    54875572 
    54885573  var sel = this._getSelection(); 
     
    56445729  { 
    56455730 
    5646   this.ddt._ddt( "htmlarea.js","5643", "_insertImage(): top" ); 
     5731  this.ddt._ddt( "htmlarea.js","5731", "_insertImage(): top" ); 
    56475732 
    56485733  var editor = this;    // for nested functions 
     
    57275812  { 
    57285813 
    5729   this.ddt._ddt( "htmlarea.js","5726", "_insertTable(): top" ); 
     5814  this.ddt._ddt( "htmlarea.js","5814", "_insertTable(): top" ); 
    57305815 
    57315816  var sel = this._getSelection(); 
     
    58195904  { 
    58205905 
    5821   this.ddt._ddt( "htmlarea.js","5818", "_comboSelected(): top" ); 
     5906  this.ddt._ddt( "htmlarea.js","5906", "_comboSelected(): top" ); 
    58225907 
    58235908  this.focusEditor(); 
     
    58595944  { 
    58605945 
    5861   this.ddt._ddt( "htmlarea.js","5858", "execCommand(): top with cmdId '" + cmdID + "'" ); 
     5946  this.ddt._ddt( "htmlarea.js","5946", "execCommand(): top with cmdId '" + cmdID + "'" ); 
    58625947 
    58635948  var editor = this;    // for nested functions 
     
    59906075  { 
    59916076 
    5992   this.ddt._ddt( "htmlarea.js","5989", "_editorEvent(): top with event type '" + ev.type + "'" ); 
     6077  this.ddt._ddt( "htmlarea.js","6077", "_editorEvent(): top with event type '" + ev.type + "'" ); 
    59936078 
    59946079  var editor = this; 
     
    60156100    { 
    60166101 
    6017     this.ddt._ddt( "htmlarea.js","6014", "_editorEvent(): keyEvent" ); 
     6102    this.ddt._ddt( "htmlarea.js","6102", "_editorEvent(): keyEvent" ); 
    60186103 
    60196104         // loop over all the plugins and pass this event to any that have  
     
    60336118                  { 
    60346119 
    6035                   this.ddt._ddt( "htmlarea.js","6032", "_editorEvent(): keyEvent - invoking onKeyPress method in plugin '" + ( plugin.name ? plugin.name : "unknown" ) + "'" ); 
     6120                  this.ddt._ddt( "htmlarea.js","6120", "_editorEvent(): keyEvent - invoking onKeyPress method in plugin '" + ( plugin.name ? plugin.name : "unknown" ) + "'" ); 
    60366121                                                                                                                                                                                                                                                                                                                                  
    60376122        if (plugin.onKeyPress(ev)) 
    60386123          { 
    60396124 
    6040                          this.ddt._ddt( "htmlarea.js","6037", "_editorEvent(): keyEvent - onKeyPress() returned false. Returning false" ); 
     6125                         this.ddt._ddt( "htmlarea.js","6125", "_editorEvent(): keyEvent - onKeyPress() returned false. Returning false" ); 
    60416126          return false; 
    60426127                         } 
     
    60506135    { 
    60516136 
    6052          this.ddt._ddt( "htmlarea.js","6049", "_editorEvent(): control key key event" ); 
     6137         this.ddt._ddt( "htmlarea.js","6137", "_editorEvent(): control key key event" ); 
    60536138 
    60546139    var sel = null; 
     
    60616146      case 'a': 
    60626147 
    6063                   this.ddt._ddt( "htmlarea.js","6060", "_editorEvent(): cntrl-a select all" ); 
     6148                  this.ddt._ddt( "htmlarea.js","6148", "_editorEvent(): cntrl-a select all" ); 
    60646149 
    60656150        if (!HTMLArea.is_ie)  
     
    60806165      case 'b':  
    60816166                   
    6082                   this.ddt._ddt( "htmlarea.js","6079", "_editorEvent(): cntrl-b bold" ); 
     6167                  this.ddt._ddt( "htmlarea.js","6167", "_editorEvent(): cntrl-b bold" ); 
    60836168                  cmd = "bold";  
    60846169                  break; 
     
    60866171      case 'i':  
    60876172                   
    6088                   this.ddt._ddt( "htmlarea.js","6085", "_editorEvent(): cntrl-i italics" ); 
     6173                  this.ddt._ddt( "htmlarea.js","6173", "_editorEvent(): cntrl-i italics" ); 
    60896174                  cmd = "italic";  
    60906175                  break; 
     
    60926177      case 'u':  
    60936178                 
    6094                   this.ddt._ddt( "htmlarea.js","6091", "_editorEvent(): cntrl-u underline" ); 
     6179                  this.ddt._ddt( "htmlarea.js","6179", "_editorEvent(): cntrl-u underline" ); 
    60956180                  cmd = "underline";  
    60966181                  break; 
     
    60986183      case 's':  
    60996184                 
    6100                   this.ddt._ddt( "htmlarea.js","6097", "_editorEvent(): cntrl-s strikethrough" ); 
     6185                  this.ddt._ddt( "htmlarea.js","6185", "_editorEvent(): cntrl-s strikethrough" ); 
    61016186                  cmd = "strikethrough";  
    61026187                  break; 
     
    61046189      case 'l':  
    61056190                 
    6106                   this.ddt._ddt( "htmlarea.js","6103", "_editorEvent(): cntrl-l justify left" ); 
     6191                  this.ddt._ddt( "htmlarea.js","6191", "_editorEvent(): cntrl-l justify left" ); 
    61076192                  cmd = "justifyleft";  
    61086193                  break; 
     
    61106195      case 'e':  
    61116196                   
    6112                   this.ddt._ddt( "htmlarea.js","6109", "_editorEvent(): cntrl-e justify center" ); 
     6197                  this.ddt._ddt( "htmlarea.js","6197", "_editorEvent(): cntrl-e justify center" ); 
    61136198                  cmd = "justifycenter";  
    61146199                  break; 
     
    61166201      case 'r':  
    61176202                 
    6118                   this.ddt._ddt( "htmlarea.js","6115", "_editorEvent(): cntrl-r justify right" ); 
     6203                  this.ddt._ddt( "htmlarea.js","6203", "_editorEvent(): cntrl-r justify right" ); 
    61196204                  cmd = "justifyright";  
    61206205                  break; 
     
    61226207      case 'j':  
    61236208                 
    6124                   this.ddt._ddt( "htmlarea.js","6121", "_editorEvent(): cntrl-j justify full" ); 
     6209                  this.ddt._ddt( "htmlarea.js","6209", "_editorEvent(): cntrl-j justify full" ); 
    61256210                  cmd = "justifyfull";  
    61266211                  break; 
     
    61286213      case 'z':  
    61296214                 
    6130                   this.ddt._ddt( "htmlarea.js","6127", "_editorEvent(): cntrl-z undo" ); 
     6215                  this.ddt._ddt( "htmlarea.js","6215", "_editorEvent(): cntrl-z undo" ); 
    61316216                  cmd = "undo";  
    61326217                  break; 
     
    61346219      case 'y':  
    61356220                 
    6136                   this.ddt._ddt( "htmlarea.js","6133", "_editorEvent(): cntrl-y redo" ); 
     6221                  this.ddt._ddt( "htmlarea.js","6221", "_editorEvent(): cntrl-y redo" ); 
    61376222                  cmd = "redo";  
    61386223                  break; 
     
    61406225      case 'v':  
    61416226                 
    6142                   this.ddt._ddt( "htmlarea.js","6139", "_editorEvent(): cntrl-v paste" ); 
     6227                  this.ddt._ddt( "htmlarea.js","6227", "_editorEvent(): cntrl-v paste" ); 
    61436228                  if (HTMLArea.is_ie || editor.config.htmlareaPaste)  
    61446229                    {  
     
    61506235                 
    61516236                   
    6152                   this.ddt._ddt( "htmlarea.js","6149", "_editorEvent(): cntrl-n format block" ); 
     6237                  this.ddt._ddt( "htmlarea.js","6237", "_editorEvent(): cntrl-n format block" ); 
    61536238                  cmd = "formatblock";  
    61546239                  value = HTMLArea.is_ie ? "<p>" : "p";  
     
    61576242      case '0':  
    61586243                 
    6159                   this.ddt._ddt( "htmlarea.js","6156", "_editorEvent(): cntrl-O kill word" ); 
     6244                  this.ddt._ddt( "htmlarea.js","6244", "_editorEvent(): cntrl-O kill word" ); 
    61606245                  cmd = "killword";  
    61616246                  break; 
     
    61696254      case '6': 
    61706255 
    6171                   this.ddt._ddt( "htmlarea.js","6168", "_editorEvent(): cntrl-[1-6] heading" ); 
     6256                  this.ddt._ddt( "htmlarea.js","6256", "_editorEvent(): cntrl-[1-6] heading" ); 
    61726257        cmd = "formatblock"; 
    61736258        value = "h" + key; 
     
    61806265    if (cmd)  
    61816266           { 
    6182       this.ddt._ddt( "htmlarea.js","6179", "_editorEvent(): executing simple command '" + cmd + "'" ); 
     6267      this.ddt._ddt( "htmlarea.js","6267", "_editorEvent(): executing simple command '" + cmd + "'" ); 
    61836268      // execute simple command 
    61846269      this.execCommand(cmd, false, value); 
     
    62436328          { 
    62446329 
    6245                          this.ddt._ddt( "htmlarea.js","6242", "_editorEvent(): entered a space" ); 
     6330                         this.ddt._ddt( "htmlarea.js","6330", "_editorEvent(): entered a space" ); 
    62466331 
    62476332          if(s && s.isCollapsed && s.anchorNode.nodeType == 3 && s.anchorNode.data.length > 3 && s.anchorNode.data.indexOf('.') >= 0) 
     
    62866371          { 
    62876372 
    6288                          this.ddt._ddt( "htmlarea.js","6285", "_editorEvent(): keycode is '" + ev.keyCode + "' which (normal key) is '" + ev.which + "'" ); 
     6373                         this.ddt._ddt( "htmlarea.js","6373", "_editorEvent(): keycode is '" + ev.keyCode + "' which (normal key) is '" + ev.which + "'" ); 
    62896374 
    62906375                         // is it an escape character or ... 
     
    63046389                                // backspace or period?  
    63056390 
    6306             this.ddt._ddt( "htmlarea.js","6303", "_editorEvent(): normal key or backspace or period" ); 
     6391            this.ddt._ddt( "htmlarea.js","6391", "_editorEvent(): normal key or backspace or period" ); 
    63076392 
    63086393            this._unlinkOnUndo = false; 
     
    63156400              if (!a)  
    63166401                                    { 
    6317                                          this.ddt._ddt( "htmlarea.js","6314", "_editorEvent(): not an anchor" ); 
     6402                                         this.ddt._ddt( "htmlarea.js","6402", "_editorEvent(): not an anchor" ); 
    63186403                                         break; // not an anchor 
    63196404                                         } 
     
    63656450      case 13: // KEY enter 
    63666451 
    6367                  this.ddt._ddt( "htmlarea.js","6364", "_editorEvent(): enter key handling" ); 
     6452                 this.ddt._ddt( "htmlarea.js","6452", "_editorEvent(): enter key handling" ); 
    63686453 
    63696454        if (HTMLArea.is_gecko && !ev.shiftKey && this.config.mozParaHandler == 'dirty' ) 
     
    63776462      case 46: // KEY delete 
    63786463 
    6379                  this.ddt._ddt( "htmlarea.js","6376", "_editorEvent(): delete or backspace handling" ); 
     6464                 this.ddt._ddt( "htmlarea.js","6464", "_editorEvent(): delete or backspace handling" ); 
    63806465 
    63816466        if (HTMLArea.is_gecko && !ev.shiftKey)  
     
    64056490    }, 100); 
    64066491 
    6407   this.ddt._ddt( "htmlarea.js","6404", "_editorEvent(): bottom" ); 
     6492  this.ddt._ddt( "htmlarea.js","6492", "_editorEvent(): bottom" ); 
    64086493 
    64096494  };  // end of _editorEvent() 
     
    64176502HTMLArea.prototype.convertNode = function(el, newTagName)  
    64186503  { 
    6419   this.ddt._ddt( "htmlarea.js","6416", "convertNode(): top" ); 
     6504  this.ddt._ddt( "htmlarea.js","6504", "convertNode(): top" ); 
    64206505 
    64216506  var newel = this._doc.createElement(newTagName); 
     
    64636548  { 
    64646549 
    6465   this.ddt._ddt( "htmlarea.js","6462", "dom_checkBackspace(): top" ); 
     6550  this.ddt._ddt( "htmlarea.js","6550", "dom_checkBackspace(): top" ); 
    64666551 
    64676552  var self = this; 
     
    67306815  { 
    67316816 
    6732   this.ddt._ddt( "htmlarea.js","6729", "scrollToElement(): top" ); 
     6817  this.ddt._ddt( "htmlarea.js","6817", "scrollToElement(): top" ); 
    67336818 
    67346819  if(HTMLArea.is_gecko) 
     
    67666851  { 
    67676852 
    6768   this.ddt._ddt( "htmlarea.js", "6768", "getHTML() - prototype version - top" ); 
     6853  this.ddt._ddt( "htmlarea.js","6853", "getHTML() - prototype version - top" ); 
    67696854 
    67706855  var html = ''; 
     
    68016886/** 
    68026887* outwardHTML() 
     6888* 
     6889* based on HTML.config.linkReplacementMode setting. fullyqualified or absolute. 
    68036890*/ 
    68046891 
     
    68066893  { 
    68076894 
    6808   this.ddt._ddt( "htmlarea.js","6802", "outwardHtml(): top" ); 
     6895  this.ddt._ddt( "htmlarea.js","6895", "outwardHtml(): top" ); 
    68096896 
    68106897  html = html.replace(/<(\/?)b(\s|>|\/)/ig, "<$1strong$2"); 
    68116898  html = html.replace(/<(\/?)i(\s|>|\/)/ig, "<$1em$2"); 
    68126899 
    6813   // Figure out what our server name is, and how it's referenced 
    6814   var serverBase = location.href.replace(/(https?:\/\/[^\/]*)\/.*/, '$1') + '/'; 
    6815  
    6816   // IE puts this in can't figure out why 
    6817   html = html.replace(/https?:\/\/null\//g, serverBase); 
    6818  
    6819   // Make semi-absolute links to be truely absolute 
    6820   //  we do this just to standardize so that special replacements knows what 
    6821   //  to expect 
    6822   html = html.replace(/((href|src|background)=[\'\"])\/+/ig, '$1' + serverBase); 
     6900        // either turn all links to absolute or fully qualified depending 
     6901        // on config.linkReplacementMode 
     6902 
     6903        if ( this.config.linkReplacementMode == 'fullyqualified' ) 
     6904                { 
     6905 
     6906                var serverBase = location.href.replace(/(https?:\/\/[^\/]*)\/.*/, '$1') + '/'; 
     6907 
     6908          this.ddt._ddt( "htmlarea.js","6908", "outwardHtml(): replacing links with fully qualified versions - serverBase is '" + serverBase + "'." ); 
     6909 
     6910          // IE bug tacks on http://null/ to links 
     6911 
     6912          html = html.replace(/https?:\/\/null\//g, serverBase); 
     6913 
     6914          // Make semi-absolute links to be truely absolute 
     6915          // we do this just to standardize so that special replacements knows what 
     6916          // to expect 
     6917 
     6918          html = html.replace(/((href|src|background)=[\'\"])\/+/ig, '$1' + serverBase); 
     6919 
     6920                }       // end of doing fullyqualified replacements. 
     6921        else 
     6922                { 
     6923 
     6924                var serverBase = location.href.replace(/(https?:\/\/[^\/]*)\/.*/, '$1'); 
     6925 
     6926          this.ddt._ddt( "htmlarea.js","6926", "outwardHtml(): stripping serverBase from links '" + serverBase + "'." ); 
     6927 
     6928                // remove the protocol and host from any links back to the current site. Using the 
     6929                // serverBase we figured out above create a regular expression that will match any 
     6930                // href= src= background= starting with http://<current_site and the protocol 
     6931                // and site part. The RegExp() class allows you to create a regular expression from 
     6932                // a string. 
     6933 
     6934                var linkBackRE = new RegExp( "((href|src|background)=['\"])" + serverBase , "ig" ); 
     6935 
     6936          this.ddt._ddt( "htmlarea.js","6936", "outwardHtml(): regex is '" + linkBackRE + "'" ); 
     6937 
     6938          html = html.replace( linkBackRE, '$1' ); 
     6939 
     6940          // IE puts this in can't figure out why 
     6941 
     6942          html = html.replace(/https?:\/\/null/g, ""); 
     6943 
     6944                } 
    68236945 
    68246946  html = this.outwardSpecialReplacements(html); 
     
    68346956/** 
    68356957* inwardHtml() 
     6958* 
     6959* process HTML links and other special replacements. 
     6960* 
     6961* @todo check modifying links to fully qualified. We probably don't want to do this in all cases. 
    68366962*/ 
    68376963 
     
    68396965  { 
    68406966 
    6841   this.ddt._ddt( "htmlarea.js","6835", "inwardHtml(): top" ); 
     6967  this.ddt._ddt( "htmlarea.js","6967", "inwardHtml(): top" ); 
    68426968 
    68436969  // Midas uses b and i instead of strong and em, um, hello, 
     
    68536979 
    68546980  // For IE's sake, make any URLs that are semi-absolute (="/....") to be 
    6855   // truely absolute 
     6981  // fully qualified. (http://foo.com/..) 
    68566982 
    68576983  var nullRE = new RegExp('((href|src|background)=[\'"])/+', 'gi'); 
     6984 
     6985        // the first $1 applies to href=" src=" or background=" 
     6986        //  
     6987        // the second one is getting the hostname and protocol out of the location object 
     6988        // referring to the URL of the current document. 
     6989        // 
     6990        // so the effect is we regex through the document replacing in the http[s]://location/  
     6991        // into every link .. making every link in the document fully qualified. This is  
     6992        // an implicit work around for the MSIE tendency to introduce http://null/'s into 
     6993        // links when the host and protocol are not defined. 
     6994 
    68586995  html = html.replace(nullRE, '$1' + location.href.replace(/(https?:\/\/[^\/]*)\/.*/, '$1') + '/'); 
    68596996 
     
    68737010  { 
    68747011 
    6875   this.ddt._ddt( "htmlarea.js","6869", "outwardSpecialReplacements(): top" ); 
     7012  this.ddt._ddt( "htmlarea.js","7012", "outwardSpecialReplacements(): top" ); 
    68767013 
    68777014  for(var i in this.config.specialReplacements) 
     
    68977034HTMLArea.prototype.inwardSpecialReplacements = function(html) 
    68987035  { 
    6899   this.ddt._ddt( "htmlarea.js","6893", "inwardSpecialReplacements(): top" ); 
     7036  this.ddt._ddt( "htmlarea.js","7036", "inwardSpecialReplacements(): top" ); 
    69007037 
    69017038  // alert("inward"); 
     
    69207057/** 
    69217058* fixRelativeLinks() 
     7059* 
     7060* applies some optional regex's to html source. 
     7061* @see HTML.Config 
     7062* 
    69227063*/ 
    69237064 
     
    69257066  { 
    69267067 
    6927   this.ddt._ddt( "htmlarea.js","6921", "fixRelativeLinks(): top" ); 
     7068  this.ddt._ddt( "htmlarea.js","7068", "fixRelativeLinks(): top" ); 
    69287069 
    69297070  if (typeof this.config.stripSelfNamedAnchors != 'undefined' && this.config.stripSelfNamedAnchors) 
    69307071    { 
     7072 
     7073                this.ddt._ddt( "htmlarea.js","7073", "fixRelativeLinks(): handling stripSelfNamedAnchors()" ); 
     7074 
    69317075    var stripRe = new RegExp(document.location.href.replace(HTMLArea.RE_Specials, '\\$1') + '(#.*)', 'g'); 
    69327076    html = html.replace(stripRe, '$1'); 
     
    69357079  if(typeof this.config.stripBaseHref != 'undefined' && this.config.stipBaseHref) 
    69367080    { 
     7081 
     7082                this.ddt._ddt( "htmlarea.js","7082", "fixRelativeLinks(): handling stripBaseHref()" ); 
     7083 
    69377084    var baseRe = null 
    69387085    if(typeof this.config.baseHref != 'undefined' && this.config.baseHref != null) 
     
    69717118  { 
    69727119 
    6973   this.ddt._ddt( "htmlarea.js","6967", "stripBaseURL(): top" ); 
     7120  this.ddt._ddt( "htmlarea.js","7120", "stripBaseURL(): top" ); 
    69747121 
    69757122  var baseurl = this.config.baseURL; 
     
    69997146  { 
    70007147 
    7001   this.ddt._ddt( "htmlarea.js","6995", "getInnerHTML(): top" ); 
     7148  this.ddt._ddt( "htmlarea.js","7148", "getInnerHTML(): top" ); 
    70027149 
    70037150  if(!this._doc.body) return ''; 
     
    70367183  { 
    70377184   
    7038   this.ddt._ddt( "htmlarea.js","7032", "setHTML(): top" ); 
     7185  this.ddt._ddt( "htmlarea.js","7185", "setHTML(): top" ); 
    70397186 
    70407187  switch (this._editMode)  
     
    71087255  { 
    71097256 
    7110   this.ddt._ddt( "htmlarea.js","7104", "_createRange(): top" ); 
     7257  this.ddt._ddt( "htmlarea.js","7257", "_createRange(): top" ); 
    71117258 
    71127259  if (HTMLArea.is_ie)  
     
    71447291  { 
    71457292 
    7146   this.ddt._ddt( "htmlarea.js","7140", "notifyOn(): top" ); 
     7293  this.ddt._ddt( "htmlarea.js","7293", "notifyOn(): top" ); 
    71477294 
    71487295  if(typeof this._notifyListeners[ev] == 'undefined') 
     
    71647311  { 
    71657312 
    7166   this.ddt._ddt( "htmlarea.js","7160", "notifyOf(): top" ); 
     7313  this.ddt._ddt( "htmlarea.js","7313", "notifyOf(): top" ); 
    71677314 
    71687315  if(this._notifyListeners[ev]) 
     
    71917338  { 
    71927339 
    7193   this.ddt._ddt( "htmlarea.js","7187", "_popupDialog(): top with url '" + url + "' action '" + action + "'" ); 
     7340  this.ddt._ddt( "htmlarea.js","7340", "_popupDialog(): top with url '" + url + "' action '" + action + "'" ); 
    71947341 
    71957342  Dialog(this.popupURL(url), action, init); 
     
    72847431  { 
    72857432 
    7286   this.ddt._ddt( "htmlarea.js","7280", "registerPlugins(): top" ); 
     7433  this.ddt._ddt( "htmlarea.js","7433", "registerPlugins(): top" ); 
    72877434 
    72887435  if(plugin_names) 
  • branches/unified_backend/inline-dialog.js

    r20 r121  
     1/** 
     2* @fileoverview inline dialog support 
     3*/ 
     4 
     5/** 
     6* @class Dialog 
     7* 
     8* constructor 
     9*/ 
    110 
    211HTMLArea.Dialog = function(editor, html, localizer) 
    3 { 
     12        { 
    413  this.id    = { }; 
    514  this.r_id  = { }; // reverse lookup id 
     
    1726  var dialog = this; 
    1827  if(typeof localizer == 'function') 
    19   { 
     28        { 
    2029    this._lc = localizer; 
    21   } 
     30          } 
    2231  else if(localizer) 
    23   { 
     32        { 
     33    this._lc =  
     34                        function(string) 
     35                        { 
     36        return HTMLArea._lc(string,localizer); 
     37                } 
     38          } 
     39  else 
     40        { 
    2441    this._lc = function(string) 
    25     { 
    26       return HTMLArea._lc(string,localizer); 
    27     } 
    28   } 
    29   else 
    30   { 
    31     this._lc = function(string) 
    32     { 
     42        { 
    3343      return string; 
    34     } 
    35   } 
     44            } 
     45        } 
     46 
     47        // ok, this is just bloody ugly. Four parameters, the last three 
     48        // are in-line functions. 
    3649 
    3750  html = html.replace(/\[([a-z0-9_]+)\]/ig, 
    38                       function(fullString, id) 
    39                       { 
    40                         if(typeof dialog.id[id] == 'undefined') 
    41                         { 
    42                           dialog.id[id] = HTMLArea.uniq('Dialog'); 
    43                           dialog.r_id[dialog.id[id]] = id; 
    44                         } 
    45                         return dialog.id[id]; 
    46                       } 
    47              ).replace(/<l10n>(.*?)<\/l10n>/ig, 
    48                        function(fullString,translate) 
    49                        { 
    50                          return dialog._lc(translate) ; 
    51                        } 
    52              ).replace(/="_\((.*?)\)"/g, 
    53                        function(fullString, translate) 
    54                        { 
    55                          return '="' + dialog._lc(translate) + '"'; 
    56                        } 
    57              ); 
     51                                                function(fullString, id) 
     52                                                        { 
     53                                                        if(typeof dialog.id[id] == 'undefined') 
     54                                                                { 
     55                                                                dialog.id[id] = HTMLArea.uniq('Dialog'); 
     56                                                                dialog.r_id[dialog.id[id]] = id; 
     57                                                                } 
     58                                                        return dialog.id[id]; 
     59                                                        } ).replace(/<l10n>(.*?)<\/l10n>/ig, 
     60                                                function(fullString,translate) 
     61                                                        { 
     62                                                        return dialog._lc(translate) ; 
     63                                                        } ).replace(/="_\((.*?)\)"/g, 
     64                                                function(fullString, translate) 
     65                                                        { 
     66                                                        return '="' + dialog._lc(translate) + '"'; 
     67                                                        }); // end of html.replace() call. 
    5868 
    5969  this.rootElem.innerHTML = html; 
     
    6171  this.editor.innerEditor.appendChild(this.rootElem); 
    6272 
    63  
    64   this.editor.notifyOn 
    65    ('resize', 
     73  this.editor.notifyOn('resize', 
    6674      function(e, args) 
    67       { 
     75        { 
    6876        dialog.width  = parseInt(dialog.rootElem.style.width  = args.editorWidth  + 'px'); 
    6977        dialog.height = parseInt(dialog.rootElem.style.height = args.editorHeight + 'px'); 
    7078        dialog.onresize(); 
    71       } 
    72     ); 
    73 } 
     79        }); 
     80 
     81        }       // end of HTMLArea.Dialog() 
     82 
     83// -------------------------------------------------------------------------------- 
     84 
     85/** 
     86* onresize() 
     87*/ 
     88 
    7489 
    7590HTMLArea.Dialog.prototype.onresize = function() 
     
    7893} 
    7994 
     95// -------------------------------------------------------------------------------- 
     96 
     97/** 
     98* show() 
     99*/ 
     100 
    80101HTMLArea.Dialog.prototype.show = function(values) 
    81 { 
     102        { 
     103 
    82104  // We need to preserve the selection for IE 
     105 
    83106  if(HTMLArea.is_ie) 
    84   { 
     107        { 
    85108    this._lastRange = this.editor._createRange(this.editor._getSelection()); 
    86   } 
     109          } 
    87110 
    88111  if(typeof values != 'undefined') 
    89   { 
     112        { 
    90113    this.setValues(values); 
    91   } 
     114          } 
     115 
    92116  this._restoreTo = [this.editor._textArea.style.display, this.editor._iframe.style.visibility, this.editor.hidePanels()]; 
    93117 
     
    95119  this.editor._iframe.style.visibility   = 'hidden'; 
    96120  this.rootElem.style.display   = ''; 
    97 } 
     121 
     122        }       // end of show() 
     123 
     124// -------------------------------------------------------------------------------- 
     125 
     126/** 
     127* hide() 
     128*/ 
    98129 
    99130HTMLArea.Dialog.prototype.hide = function() 
    100 { 
     131        { 
     132 
    101133  this.rootElem.style.display         = 'none'; 
    102134  this.editor._textArea.style.display = this._restoreTo[0]; 
    103135  this.editor._iframe.style.visibility   = this._restoreTo[1]; 
    104136  this.editor.showPanels(this._restoreTo[2]); 
     137 
    105138  // Restore the selection 
    106139  if(HTMLArea.is_ie) 
    107   { 
     140        { 
    108141    this._lastRange.select(); 
    109   } 
     142          } 
     143 
    110144  return this.getValues(); 
    111 } 
     145 
     146        }       // end of hide() 
     147 
     148// -------------------------------------------------------------------------------- 
     149 
     150/** 
     151* toggle() 
     152*/ 
    112153 
    113154HTMLArea.Dialog.prototype.toggle = function() 
    114 { 
     155        { 
    115156  if(this.rootElem.style.display == 'none') 
    116   { 
     157        { 
    117158    this.show(); 
    118   } 
     159          } 
    119160  else 
    120   { 
     161        { 
    121162    this.hide(); 
    122   } 
    123 } 
    124  
     163          } 
     164        } 
     165 
     166// -------------------------------------------------------------------------------- 
     167 
     168/** 
     169* setValues() 
     170*/ 
     171         
    125172HTMLArea.Dialog.prototype.setValues = function(values) 
    126 { 
     173        { 
     174 
    127175  for(var i in values) 
    128   { 
     176        { 
     177 
     178 
    129179    var elems = this.getElementsByName(i); 
     180 
     181                // loop over all the elements in the current dialog.  
     182                // (essentially this is a client-side html template consisting of a form 
     183                // that has it's values set using the values array passed to us. 
     184 
    130185    for(var x = 0; x < elems.length; x++) 
    131     { 
     186        { 
    132187      var e = elems[x]; 
     188 
     189                        // for the current element, if it's a select list, input, or textarea set 
     190                        // it's value ...  
     191 
    133192      switch(e.tagName.toLowerCase()) 
    134       { 
     193          { 
     194 
    135195        case 'select'  : 
    136         { 
     196                { 
    137197          for(var j = 0; j < e.options.length; j++) 
    138           { 
     198                { 
    139199            if(typeof values[i] == 'object') 
    140             { 
     200                { 
    141201              for(var k = 0; k < values[i].length; k++) 
    142               { 
     202                { 
    143203                if(values[i][k] == e.options[j].value) 
    144                 { 
     204                        { 
    145205                  e.options[j].selected = true; 
    146                 } 
    147               } 
    148             } 
     206                        } 
     207                    } 
     208                } 
    149209            else if(values[i] == e.options[j].value) 
    150             { 
     210              { 
    151211              e.options[j].selected = true; 
    152             } 
    153           } 
     212                    } 
     213                } 
    154214          break; 
    155         } 
     215 
     216                }       // end of select case 
    156217 
    157218 
    158219        case 'textarea': 
    159220        case 'input'   : 
    160         { 
     221                { 
    161222          switch(e.getAttribute('type')) 
    162           { 
     223                { 
     224 
    163225            case 'radio'   : 
    164             { 
     226                { 
    165227              if(e.value == values[i]) 
    166               { 
     228                { 
    167229                e.checked = true; 
    168               } 
     230                      } 
    169231              break; 
    170             } 
     232                  } 
    171233 
    172234            case 'checkbox': 
    173             { 
     235                { 
    174236              if(typeof values[i] == 'object') 
    175               { 
     237                { 
    176238                for(var j in values[i]) 
    177                 { 
     239                        { 
    178240                  if(values[i][j] == e.value) 
    179                   { 
     241                        { 
    180242                    e.checked = true; 
    181                   } 
    182                 } 
    183               } 
     243                      } 
     244                        } 
     245                    } 
    184246              else 
    185               { 
     247                  { 
    186248                if(values[i] == e.value) 
    187                 { 
     249                  { 
    188250                  e.checked = true; 
    189                 } 
    190               } 
    191               break; 
    192             } 
     251                        } 
     252                  } 
     253                                                        break; 
     254                  }     // end of checkbox case. 
    193255 
    194256            default    : 
    195             { 
     257                    { 
    196258              e.value = values[i]; 
    197             } 
    198           } 
     259                  } 
     260              } 
    199261          break; 
    200         } 
     262          }     // end of textarea/input case. 
    201263 
    202264        default        : 
    203         break; 
    204       } 
    205     } 
    206   } 
    207 } 
     265                break; 
     266            } 
     267            } 
     268          } 
     269 
     270        }       // end of setValues() 
     271 
     272// ------------------------------------------------------------------ 
     273 
     274/** 
     275* getValues() 
     276* 
     277* return the values of all named inputs, textareas and select lists in the dialog. 
     278*/ 
    208279 
    209280HTMLArea.Dialog.prototype.getValues = function() 
    210 { 
     281        { 
    211282  var values = [ ]; 
     283 
    212284  var inputs = HTMLArea.collectionToArray(this.rootElem.getElementsByTagName('input')) 
    213285              .append(HTMLArea.collectionToArray(this.rootElem.getElementsByTagName('textarea'))) 
     
    215287 
    216288  for(var x = 0; x < inputs.length; x++) 
    217   { 
     289          { 
    218290    var i = inputs[x]; 
    219     if(!(i.name && this.r_id[i.name])) continue; 
     291 
     292    if(!(i.name && this.r_id[i.name]))  
     293                        continue; 
    220294 
    221295    if(typeof values[this.r_id[i.name]] == 'undefined') 
    222     { 
     296            { 
    223297      values[this.r_id[i.name]] = null; 
    224     } 
     298          } 
     299 
    225300    var v = values[this.r_id[i.name]]; 
    226301 
    227302    switch(i.tagName.toLowerCase()) 
    228     { 
     303            { 
    229304      case 'select': 
    230       { 
     305            { 
    231306        if(i.multiple) 
    232         { 
     307            { 
    233308          if(!v.push) 
    234           { 
     309            { 
    235310            if(v != null) 
    236             { 
     311                    { 
    237312              v = [v]; 
    238             } 
     313                  } 
    239314            else 
    240             { 
     315                { 
    241316              v = new Array(); 
    242             } 
    243           } 
     317                    } 
     318                } 
     319 
    244320          for(var j = 0; j < i.options.length; j++) 
    245           { 
     321                  { 
    246322            if(i.options[j].selected) 
    247             { 
     323                  { 
    248324              v.push(i.options[j].value); 
    249             } 
    250           } 
    251         } 
     325                } 
     326            } 
     327                } 
    252328        else 
    253         { 
     329                { 
    254330          if(i.selectedIndex) 
    255           { 
     331                { 
    256332            v = i.options[i.selectedIndex]; 
    257           } 
    258         } 
     333              } 
     334          } 
    259335        break; 
    260       } 
     336              } 
    261337 
    262338      case 'textarea': 
    263339      case 'input'   : 
    264340      default        : 
    265       { 
     341              { 
    266342        switch(i.type.toLowerCase()) 
    267         { 
     343              { 
    268344          case  'radio': 
    269           { 
     345              { 
    270346            if(i.checked) 
    271             { 
     347              { 
    272348              v = i.value; 
    273349              break; 
    274             } 
    275           } 
     350                    } 
     351                } 
    276352 
    277353          case 'checkbox': 
    278           { 
     354                  { 
    279355            if(v == null) 
    280             { 
    281               if(this.getElementsByName(this.r_id[i.name]).length > 1) 
    282               { 
     356                    { 
     357                    if(this.getElementsByName(this.r_id[i.name]).length > 1) 
     358                    { 
    283359                v = new Array(); 
    284               } 
    285             } 
     360                  } 
     361              } 
    286362 
    287363            if(i.checked) 
    288             { 
     364                    { 
    289365              if(v.push) 
    290               { 
     366                    { 
    291367                v.push(i.value); 
    292               } 
     368                  } 
    293369              else 
    294               { 
     370                { 
    295371                v = i.value; 
    296               } 
    297             } 
     372                      } 
     373                  } 
    298374            break; 
    299           } 
     375                  } 
    300376 
    301377          default   : 
    302           { 
     378                { 
    303379            v = i.value; 
    304380            break; 
    305           } 
    306         } 
    307       } 
    308  
    309     } 
     381              } 
     382                } 
     383            } 
     384 
     385        } 
    310386 
    311387    values[this.r_id[i.name]] = v; 
    312   } 
     388          } 
     389 
    313390  return values; 
    314 } 
     391 
     392        }       // end of getValues() 
     393 
     394// --------------------------------------------------------------------------- 
     395 
     396/** 
     397* getElementById() 
     398*/ 
    315399 
    316400HTMLArea.Dialog.prototype.getElementById = function(id) 
    317 { 
     401        { 
    318402  return this.document.getElementById(this.id[id] ? this.id[id] : id); 
    319 } 
     403        } 
     404 
     405// --------------------------------------------------------------------------- 
     406 
     407/** 
     408* getElementsByName() 
     409*/ 
    320410 
    321411HTMLArea.Dialog.prototype.getElementsByName = function(name) 
    322 { 
     412        { 
    323413  return this.document.getElementsByName(this.id[name] ? this.id[name] : name); 
    324 } 
     414        } 
  • branches/unified_backend/plugins/ImageManager/assets/dialog.js

    r43 r121  
    1212// $Id: dialog.js 26 2004-03-31 02:35:21Z Wei Zhuo $ 
    1313 
     14// ------------------------------------------------------------------ 
     15// 
     16// this is a modified duplicate of the /dialog.js in the Xinha root. 
     17// the code seems to make the assumption that only one of these dialogs 
     18// can be open at once (modal). 
     19// 
     20// REVISION HISTORY: 
     21// 
     22// 2005-05-01 YmL: 
     23//      .       added optional editor parameter to Dialog() "constructor". 
     24// 
     25// ------------------------------------------------------------------ 
     26// should be a function, the return handler of the currently opened dialog. 
     27Dialog._return = null; 
     28 
     29// constant, the currently opened dialog 
     30Dialog._modal = null; 
     31 
     32// the dialog will read it's args from this variable 
     33Dialog._arguments = null; 
     34 
     35Dialog.agt = navigator.userAgent.toLowerCase(); 
     36 
     37Dialog.is_ie       = ((Dialog.agt.indexOf("msie") != -1) && (Dialog.agt.indexOf("opera") == -1)); 
     38 
     39// ------------------------------------------------------------------ 
     40 
    1441// Though "Dialog" looks like an object, it isn't really an object.  Instead 
    1542// it's just namespace for protecting global symbols. 
    1643 
    17 function Dialog(url, action, init) { 
    18         if (typeof init == "undefined") { 
     44function Dialog(url, action, init)  
     45  { 
     46        if (typeof init == "undefined")  
     47          { 
    1948                init = window;  // pass this window object by default 
    20         } 
     49          } 
     50 
     51        // optional editor instance parameter that can be propagated through to  
     52        // dialogs. 
     53 
     54        if (typeof Dialog.arguments[3] != "undefined")  
     55          { 
     56                Dialog._editor = Dialog.arguments[3]; 
     57          } 
     58 
    2159        Dialog._geckoOpenModal(url, action, init); 
    22 }; 
    23  
    24 Dialog._parentEvent = function(ev) { 
    25         setTimeout( function() { if (Dialog._modal && !Dialog._modal.closed) { Dialog._modal.focus() } }, 50); 
    26         if (Dialog._modal && !Dialog._modal.closed) { 
     60 
     61  }; // end of Dialog() 
     62 
     63// ---------------------------------------------------------- 
     64 
     65/** 
     66* Dialog._parentEvent() 
     67*/ 
     68 
     69Dialog._parentEvent = function(ev)  
     70  { 
     71        setTimeout(  
     72          function()  
     73            {  
     74                        if (Dialog._modal && !Dialog._modal.closed)  
     75                          {  
     76                                Dialog._modal.focus()  
     77                                }  
     78                        }, 50); // end of setTimeout() call. 
     79                 
     80        if (Dialog._modal && !Dialog._modal.closed)  
     81          { 
    2782                Dialog._stopEvent(ev); 
    28         } 
    29 }; 
    30  
    31  
    32 // should be a function, the return handler of the currently opened dialog. 
    33 Dialog._return = null; 
    34  
    35 // constant, the currently opened dialog 
    36 Dialog._modal = null; 
    37  
    38 // the dialog will read it's args from this variable 
    39 Dialog._arguments = null; 
    40  
    41 Dialog._geckoOpenModal = function(url, action, init) { 
     83          } 
     84 
     85  }; // end of _parentEvent(); 
     86 
     87// ---------------------------------------------------------- 
     88 
     89/** 
     90* Dialog._geckoOpenModal() 
     91*/ 
     92 
     93Dialog._geckoOpenModal = function(url, action, init)  
     94  { 
    4295        //var urlLink = "hadialog"+url.toString(); 
     96 
    4397        var myURL = "hadialog"+url; 
    4498        var regObj = /\W/g; 
     99 
    45100        myURL = myURL.replace(regObj,'_'); 
     101 
    46102        var dlg = window.open(url, myURL, 
    47103                              "toolbar=no,menubar=no,personalbar=no,width=10,height=10," + 
    48104                              "scrollbars=no,resizable=yes,modal=yes,dependable=yes"); 
     105 
    49106        Dialog._modal = dlg; 
    50107        Dialog._arguments = init; 
    51108 
    52109        // capture some window's events 
    53         function capwin(w) { 
     110        function capwin(w)  
     111          { 
    54112                Dialog._addEvent(w, "click", Dialog._parentEvent); 
    55113                Dialog._addEvent(w, "mousedown", Dialog._parentEvent); 
    56114                Dialog._addEvent(w, "focus", Dialog._parentEvent); 
    57         }; 
     115          }; 
     116 
    58117        // release the captured events 
    59         function relwin(w) { 
     118        function relwin(w)  
     119          { 
    60120                Dialog._removeEvent(w, "click", Dialog._parentEvent); 
    61121                Dialog._removeEvent(w, "mousedown", Dialog._parentEvent); 
    62122                Dialog._removeEvent(w, "focus", Dialog._parentEvent); 
    63         }; 
     123          }; 
     124 
    64125        capwin(window); 
     126 
    65127        // capture other frames 
    66128        for (var i = 0; i < window.frames.length; capwin(window.frames[i++])); 
    67         // make up a function to be called when the Dialog ends. 
    68         Dialog._return = function (val) { 
    69                 if (val && action) { 
     129 
     130        // make up a function to be called when the Dialog ends, using the function 
     131        // passed to us. 
     132 
     133        Dialog._return = function (val)  
     134          { 
     135                if (val && action)  
     136                  { 
    70137                        action(val); 
    71                 } 
     138                  } 
     139 
    72140                relwin(window); 
    73141                // capture other frames 
     142 
    74143                for (var i = 0; i < window.frames.length; relwin(window.frames[i++])); 
     144 
    75145                Dialog._modal = null; 
    76         }; 
    77 }; 
    78  
    79  
    80 // event handling 
    81  
    82 Dialog._addEvent = function(el, evname, func) { 
    83         if (Dialog.is_ie) { 
     146 
     147    }; 
     148  }; // end of Dialog._geckoOpenModal 
     149 
     150/** 
     151* event handling 
     152*/ 
     153 
     154Dialog._addEvent = function(el, evname, func)  
     155  { 
     156        if (Dialog.is_ie)  
     157          { 
    84158                el.attachEvent("on" + evname, func); 
    85         } else { 
     159          }  
     160        else  
     161          { 
    86162                el.addEventListener(evname, func, true); 
    87         } 
    88 }; 
    89  
    90  
    91 Dialog._removeEvent = function(el, evname, func) { 
    92         if (Dialog.is_ie) { 
     163    } 
     164  }; 
     165 
     166/** 
     167* _removeEvent() 
     168*/ 
     169 
     170Dialog._removeEvent = function(el, evname, func)  
     171  { 
     172        if (Dialog.is_ie)  
     173          { 
    93174                el.detachEvent("on" + evname, func); 
    94         } else { 
     175          }  
     176        else  
     177          { 
    95178                el.removeEventListener(evname, func, true); 
    96         } 
    97 }; 
    98  
    99  
    100 Dialog._stopEvent = function(ev) { 
    101         if (Dialog.is_ie) { 
     179        } 
     180  }; 
     181 
     182/** 
     183* _stopEvent() 
     184*/ 
     185 
     186Dialog._stopEvent = function(ev)  
     187  { 
     188        if (Dialog.is_ie)  
     189          { 
    102190                ev.cancelBubble = true; 
    103191                ev.returnValue = false; 
    104         } else { 
     192          }  
     193        else  
     194          { 
    105195                ev.preventDefault(); 
    106196                ev.stopPropagation(); 
    107         } 
    108 }; 
    109  
    110 Dialog.agt = navigator.userAgent.toLowerCase(); 
    111 Dialog.is_ie       = ((Dialog.agt.indexOf("msie") != -1) && (Dialog.agt.indexOf("opera") == -1)); 
     197          } 
     198  }; 
     199 
     200Dialog.hello = function() 
     201{ 
     202alert( "HELLO" ); 
     203} 
     204 
     205// END 
  • branches/unified_backend/plugins/ImageManager/assets/editor.js

    r60 r121  
    11/** 
    2  * Functions for the ImageEditor interface, used by editor.php only      
    3  * @author $Author: Wei Zhuo $ 
    4  * @version $Id: editor.js 26 2004-03-31 02:35:21Z Wei Zhuo $ 
    5  * @package ImageManager 
    6  */ 
    7  
    8         var current_action = null; 
    9         var actions = ['crop', 'scale', 'rotate', 'measure', 'save']; 
    10         var orginal_width = null, orginal_height=null; 
    11         function toggle(action)  
    12         { 
    13                 if(current_action != action) 
    14                 { 
    15  
    16                         for (var i in actions) 
    17                         { 
    18                                 if(actions[i] != action) 
     2* @fileoverview Functions for the ImageEditor interface, used by editor.php only         
     3* 
     4* Note "editor" in this file refers to the image editor, not the Xinha editor. 
     5* 
     6* @author $Author: Wei Zhuo $ 
     7* @version $Id: editor.js 26 2004-03-31 02:35:21Z Wei Zhuo $ 
     8* @package ImageManager 
     9*/ 
     10 
     11var current_action = null; 
     12var actions = ['crop', 'scale', 'rotate', 'measure', 'save']; 
     13var orginal_width = null, orginal_height=null; 
     14 
     15// ------------------------------------------------------------------ 
     16 
     17/** 
     18* toggle() 
     19*/ 
     20 
     21function toggle(action)  
     22        { 
     23 
     24        _imgManager.ddt._ddt( "editor.js","24", "toggle(): top with action '" + action + "'" ); 
     25 
     26        if(current_action != action) 
     27                { 
     28 
     29                for (var i in actions) 
     30                        { 
     31                        if(actions[i] != action) 
    1932                                { 
    20                                         var tools = document.getElementById('tools_'+actions[i]); 
    21                                         tools.style.display = 'none'; 
    22                                         var icon = document.getElementById('icon_'+actions[i]); 
    23                                         icon.className = ''; 
     33                                var tools = document.getElementById('tools_'+actions[i]); 
     34                                tools.style.display = 'none'; 
     35                                var icon = document.getElementById('icon_'+actions[i]); 
     36                                icon.className = ''; 
    2437                                } 
    2538                        } 
    2639 
    27                         current_action = action; 
     40                current_action = action; 
    2841                         
    29                         var tools = document.getElementById('tools_'+action); 
    30                         tools.style.display = 'block'; 
    31                         var icon = document.getElementById('icon_'+action); 
    32                         icon.className = 'iconActive'; 
    33  
    34                         var indicator = document.getElementById('indicator_image'); 
    35                         indicator.src = 'img/'+action+'.gif'; 
    36  
    37                         editor.setMode(current_action); 
    38  
    39                         //constraints on the scale, 
    40                         //code by Frédéric Klee <fklee@isuisse.com> 
    41                         if(action == 'scale')  
    42                         { 
    43                                 var theImage = editor.window.document.getElementById('theImage'); 
    44                                 orginal_width = theImage.width ; 
    45                                 orginal_height = theImage.height; 
    46  
    47                 var w = document.getElementById('sw'); 
    48                                 w.value = orginal_width ; 
    49                                 var h = document.getElementById('sh') ; 
    50                                 h.value = orginal_height ; 
    51                         } 
    52  
    53                 } 
    54         } 
    55  
    56         function toggleMarker()  
    57         { 
    58                 var marker = document.getElementById("markerImg"); 
    59                  
    60                 if(marker != null && marker.src != null) { 
    61                         if(marker.src.indexOf("t_black.gif") >= 0) 
    62                                 marker.src = "img/t_white.gif"; 
    63                         else 
    64                                 marker.src = "img/t_black.gif"; 
    65  
    66                         editor.toggleMarker(); 
    67                 } 
    68         } 
    69  
    70         //Togggle constraints, by Frédéric Klee <fklee@isuisse.com> 
    71         function toggleConstraints()  
    72         { 
    73                 var lock = document.getElementById("scaleConstImg"); 
    74                 var checkbox = document.getElementById("constProp"); 
    75                  
    76                 if(lock != null && lock.src != null) { 
    77                         if(lock.src.indexOf("unlocked2.gif") >= 0) 
    78                         { 
    79                                 lock.src = "img/islocked2.gif"; 
    80                                 checkbox.checked = true; 
    81                                 checkConstrains('width'); 
    82  
    83                         } 
    84                         else 
    85                         { 
    86                                 lock.src = "img/unlocked2.gif"; 
    87                                 checkbox.checked = false; 
    88                         } 
    89                 } 
    90         } 
     42                var tools = document.getElementById('tools_'+action); 
     43                tools.style.display = 'block'; 
     44                var icon = document.getElementById('icon_'+action); 
     45                icon.className = 'iconActive'; 
     46 
     47                var indicator = document.getElementById('indicator_image'); 
     48                indicator.src = 'img/'+action+'.gif'; 
     49 
     50                editor.setMode(current_action); 
     51 
     52                //constraints on the scale, 
     53                //code by Frédéric Klee <fklee@isuisse.com> 
     54 
     55                if(action == 'scale')  
     56                        { 
     57                        var theImage = editor.window.document.getElementById('theImage'); 
     58                        orginal_width = theImage.width ; 
     59                        orginal_height = theImage.height; 
     60 
     61                        var w = document.getElementById('sw'); 
     62                        w.value = orginal_width ; 
     63                        var h = document.getElementById('sh') ; 
     64                        h.value = orginal_height ; 
     65                        } 
     66 
     67                } 
     68 
     69        } // end of toggle() 
     70 
     71// ------------------------------------------------------------- 
     72 
     73/** 
     74* toggleMarker() 
     75*/ 
     76 
     77function toggleMarker()  
     78        { 
     79 
     80        _imgManager.ddt._ddt( "editor.js","80", "toggleMarker(): top" ); 
     81 
     82        var marker = document.getElementById("markerImg"); 
     83                 
     84        if(marker != null && marker.src != null)  
     85                { 
     86                if(marker.src.indexOf("t_black.gif") >= 0) 
     87                        marker.src = "img/t_white.gif"; 
     88                else 
     89                        marker.src = "img/t_black.gif"; 
     90 
     91                editor.toggleMarker(); 
     92                } 
     93        } 
     94 
     95// ----------------------------------------------------------------- 
     96 
     97/** 
     98* Togggle constraints, by Frédéric Klee <fklee@isuisse.com> 
     99*/ 
     100 
     101function toggleConstraints()  
     102        { 
     103 
     104        _imgManager.ddt._ddt( "editor.js","104", "toggleConstraints(): top" ); 
     105 
     106        var lock = document.getElementById("scaleConstImg"); 
     107        var checkbox = document.getElementById("constProp"); 
     108                 
     109        if(lock != null && lock.src != null)  
     110                { 
     111                if(lock.src.indexOf("unlocked2.gif") >= 0) 
     112                        { 
     113                        lock.src = "img/islocked2.gif"; 
     114                        checkbox.checked = true; 
     115                        checkConstrains('width'); 
     116                        } 
     117                else 
     118                        { 
     119                        lock.src = "img/unlocked2.gif"; 
     120                        checkbox.checked = false; 
     121                        } 
     122                } 
     123        }       // end of toggleContraints() 
     124 
     125// --------------------------------------------------------------------- 
    91126         
    92         //check the constraints, by Frédéric Klee <fklee@isuisse.com> 
    93         function checkConstrains(changed)  
    94         { 
    95                 var constrained = document.getElementById('constProp'); 
    96                 if(constrained.checked)  
    97                 { 
    98                         var w = document.getElementById('sw') ; 
    99                         var width = w.value ; 
    100                         var h = document.getElementById('sh') ; 
    101                         var height = h.value ; 
     127/** 
     128* check the constraints, by Frédéric Klee <fklee@isuisse.com> 
     129*/ 
     130 
     131function checkConstrains(changed)  
     132        { 
     133 
     134        _imgManager.ddt._ddt( "editor.js","134", "checkConstrains(): top" ); 
     135 
     136        var constrained = document.getElementById('constProp'); 
     137        if(constrained.checked)  
     138                { 
     139                var w = document.getElementById('sw') ; 
     140                var width = w.value ; 
     141                var h = document.getElementById('sh') ; 
     142                var height = h.value ; 
    102143                         
    103                         if(orginal_width > 0 && orginal_height > 0)  
    104                         { 
    105                                 if(changed == 'width' && width > 0)  
    106                                         h.value = parseInt((width/orginal_width)*orginal_height); 
    107                                 else if(changed == 'height' && height > 0)  
    108                                         w.value = parseInt((height/orginal_height)*orginal_width); 
    109                         } 
    110                 } 
    111                  
    112                 updateMarker('scale') ; 
    113         } 
    114  
    115  
    116         function updateMarker(mode)  
    117         { 
    118                 if (mode == 'crop') 
    119                 { 
    120                         var t_cx = document.getElementById('cx'); 
    121                         var t_cy = document.getElementById('cy'); 
    122                         var t_cw = document.getElementById('cw'); 
    123                         var t_ch = document.getElementById('ch'); 
    124  
    125                         editor.setMarker(parseInt(t_cx.value), parseInt(t_cy.value), parseInt(t_cw.value), parseInt(t_ch.value)); 
    126                 } 
    127                 else if(mode == 'scale') { 
    128                         var s_sw = document.getElementById('sw'); 
    129                         var s_sh = document.getElementById('sh'); 
    130                         editor.setMarker(0, 0, parseInt(s_sw.value), parseInt(s_sh.value)); 
    131                 } 
    132         } 
    133  
     144                if(orginal_width > 0 && orginal_height > 0)  
     145                        { 
     146                        if(changed == 'width' && width > 0)  
     147                                h.value = parseInt((width/orginal_width)*orginal_height); 
     148                        else if(changed == 'height' && height > 0)  
     149                                w.value = parseInt((height/orginal_height)*orginal_width); 
     150                        } 
     151                } 
     152                 
     153        updateMarker('scale') ; 
     154 
     155        }       // end of checkContrains() 
     156 
     157// -------------------------------------------------------------------- 
     158 
     159/** 
     160* updateMarker() 
     161*/ 
     162 
     163function updateMarker(mode)  
     164        { 
     165 
     166        _imgManager.ddt._ddt( "editor.js","166", "updateMarker(): top with mode '" + mode + "'" ); 
     167 
     168        if (mode == 'crop') 
     169                { 
     170                var t_cx = document.getElementById('cx'); 
     171                var t_cy = document.getElementById('cy'); 
     172                var t_cw = document.getElementById('cw'); 
     173                var t_ch = document.getElementById('ch'); 
     174 
     175                editor.setMarker(parseInt(t_cx.value), parseInt(t_cy.value), parseInt(t_cw.value), parseInt(t_ch.value)); 
     176                } 
     177        else if(mode == 'scale')  
     178                { 
     179                var s_sw = document.getElementById('sw'); 
     180                var s_sh = document.getElementById('sh'); 
     181                editor.setMarker(0, 0, parseInt(s_sw.value), parseInt(s_sh.value)); 
     182                } 
     183 
     184        }       // end of updateMarker() 
     185 
     186// --------------------------------------------------------------------- 
     187 
     188/** 
     189* rotatePresent() 
     190*/ 
    134191         
    135         function rotatePreset(selection)  
    136         { 
    137                 var value = selection.options[selection.selectedIndex].value; 
    138                  
    139                 if(value.length > 0 && parseInt(value) != 0) { 
    140                         var ra = document.getElementById('ra'); 
    141                         ra.value = parseInt(value); 
    142                 } 
    143         } 
    144  
    145         function updateFormat(selection)  
    146         { 
    147                 var selected = selection.options[selection.selectedIndex].value; 
    148  
    149                 var values = selected.split(","); 
    150                 if(values.length >1) { 
    151                         updateSlider(parseInt(values[1])); 
    152                 } 
    153  
    154         } 
    155         function addEvent(obj, evType, fn) 
     192function rotatePreset(selection)  
     193        { 
     194 
     195        _imgManager.ddt._ddt( "editor.js","195", "rotatePresent(): top" ); 
     196 
     197        var value = selection.options[selection.selectedIndex].value; 
     198                 
     199        if(value.length > 0 && parseInt(value) != 0)  
     200                { 
     201                var ra = document.getElementById('ra'); 
     202                ra.value = parseInt(value); 
     203                } 
     204        } 
     205 
     206// --------------------------------------------------------------------- 
     207 
     208/** 
     209* updateFormat() 
     210*/ 
     211 
     212function updateFormat(selection)  
     213        { 
     214 
     215        _imgManager.ddt._ddt( "editor.js","215", "updateFormat(): top" ); 
     216 
     217        var selected = selection.options[selection.selectedIndex].value; 
     218 
     219        var values = selected.split(","); 
     220        if(values.length >1)  
     221                { 
     222                updateSlider(parseInt(values[1])); 
     223                } 
     224 
     225        } 
     226 
     227// --------------------------------------------------------------------- 
     228 
     229/** 
     230* addEvent() 
     231*/ 
     232 
     233function addEvent(obj, evType, fn) 
    156234        {  
    157                 if (obj.addEventListener) { obj.addEventListener(evType, fn, true); return true; }  
    158                 else if (obj.attachEvent) {  var r = obj.attachEvent("on"+evType, fn);  return r;  }  
    159                 else {  return false; }  
    160         }  
    161  
    162         init = function() 
    163         { 
    164                 var bottom = document.getElementById('bottom'); 
    165                 if(window.opener) 
    166                 { 
    167                         __dlg_init(bottom); 
    168                         __dlg_translate('ImageManager'); 
    169                 } 
    170         } 
    171  
    172         addEvent(window, 'load', init); 
     235 
     236        _imgManager.ddt._ddt( "editor.js","236", "addEvent(): top" ); 
     237 
     238        if (obj.addEventListener)  
     239                {  
     240                obj.addEventListener(evType, fn, true);  
     241                return true;  
     242                }  
     243        else if (obj.attachEvent)  
     244                {   
     245                var r = obj.attachEvent("on"+evType, fn);   
     246                return r;   
     247                }  
     248        else  
     249                {   
     250                return false;  
     251                }  
     252 
     253        } // end of addEvent() 
     254 
     255// ------------------------------------------------------ 
     256 
     257/** 
     258* init() 
     259*/ 
     260 
     261init = function() 
     262        { 
     263 
     264        _imgManager.ddt._ddt( "editor.js","264", "init(): top" ); 
     265 
     266        var bottom = document.getElementById('bottom'); 
     267        if(window.opener) 
     268                { 
     269                __dlg_init(bottom); 
     270                __dlg_translate('ImageManager'); 
     271                } 
     272        } 
     273 
     274// -------------------------------------------------------- 
     275 
     276_imgManager.ddt._ddt( "editor.js","276", "bottom: hooking onLoad event" ); 
     277 
     278addEvent(window, 'load', init); 
     279 
     280// END 
  • branches/unified_backend/plugins/ImageManager/assets/images.js

    r60 r121  
    11/** 
    2  * Functions for the image listing, used by images.php only      
    3  * @author $Author: Wei Zhuo $ 
    4  * @version $Id: images.js 26 2004-03-31 02:35:21Z Wei Zhuo $ 
    5  * @package ImageManager 
    6  */ 
     2* Functions for the image listing, used by images.php only       
     3* @author $Author: Wei Zhuo $ 
     4* @version $Id: images.js 26 2004-03-31 02:35:21Z Wei Zhuo $ 
     5* @package ImageManager 
     6*/ 
    77 
    8         function i18n(str) { 
    9         return HTMLArea._lc(str, 'ImageManager'); 
     8// the _imgManager reference must be set before this file is included. 
     9 
     10// -------------------------------------------- 
     11 
     12/** 
     13* i18n() 
     14*/ 
     15 
     16function i18n(str)  
     17        { 
     18 
     19        _imgManager.ddt._ddt( "images.js","19", "i18n(): top with string '" + str + "'" ); 
     20 
     21        return HTMLArea._lc(str, 'ImageManager'); 
    1022        }; 
    1123 
    12         function changeDir(newDir)  
     24// -------------------------------------------- 
     25 
     26function changeDir(newDir)  
    1327        { 
    14                 showMessage('Loading'); 
    1528 
    16                 // backend_url is defined in the calling page. For now we  
    17                 // assume it has a trailing & 
     29        _imgManager.ddt._ddt( "images.js","29", "changeDir(): top with newDir '" + newDir + "'" ); 
    1830 
    19                 location.href = _backend_url + "__function=images&dir="+newDir; 
     31        showMessage('Loading'); 
     32 
     33        // backend_url is defined in the calling page. For now we  
     34        // assume it has a trailing & 
     35 
     36        location.href = _backend_url + "__function=images&dir="+newDir; 
    2037        } 
    2138 
     39// ------------------------------------------------ 
    2240 
    23         function newFolder(dir, newDir)  
     41/** 
     42* newFolder() 
     43*/ 
     44 
     45function newFolder(dir, newDir)  
    2446        { 
    25                 location.href = _backend_url + "__function=images&dir="+dir+"&newDir="+newDir; 
     47 
     48        _imgManager.ddt._ddt( "images.js","48", "newFolder(): top with dir '" + dir + "' and newDir '" + newDir + "'" ); 
     49 
     50        location.href = _backend_url + "__function=images&dir="+dir+"&newDir="+newDir; 
    2651        } 
    2752 
    28         //update the dir list in the parent window. 
    29         function updateDir(newDir) 
     53// ---------------------------------------------------------------------- 
     54 
     55/** 
     56* update the dir list in the parent window. 
     57*/ 
     58 
     59function updateDir(newDir) 
    3060        { 
    31                 var selection = window.top.document.getElementById('dirPath'); 
    32                 if(selection) 
     61        _imgManager.ddt._ddt( "images.js","61", "updatDir(): top with string '" + newDir + "'" ); 
     62 
     63        var selection = window.top.document.getElementById('dirPath'); 
     64        if(selection) 
    3365                { 
    34                         for(var i = 0; i < selection.length; i++) 
     66                for(var i = 0; i < selection.length; i++) 
    3567                        { 
    36                                 var thisDir = selection.options[i].text; 
    37                                 if(thisDir == newDir) 
     68                        var thisDir = selection.options[i].text; 
     69                        if(thisDir == newDir) 
    3870                                { 
    39                                         selection.selectedIndex = i; 
    40                                         showMessage('Loading'); 
    41                                         break; 
     71                                selection.selectedIndex = i; 
     72                                showMessage('Loading'); 
     73                                break; 
    4274                                } 
    4375                        }                
     
    4577        } 
    4678 
    47         function selectImage(filename, alt, width, height)  
     79// ------------------------------------------------------------------------- 
     80 
     81/** 
     82* selectImage() 
     83*/ 
     84 
     85function selectImage(filename, alt, width, height)  
    4886        { 
    49                 var topDoc = window.top.document; 
     87 
     88        _imgManager.ddt._ddt( "images.js","88", "selectImage(): top with filename '" + filename + "'" ); 
     89 
     90        var topDoc = window.top.document; 
    5091                 
    51                 var obj = topDoc.getElementById('f_url');  obj.value = filename; 
    52                 var obj = topDoc.getElementById('f_width');  obj.value = width; 
    53                 var obj = topDoc.getElementById('f_width'); obj.value = width; 
    54                 var obj = topDoc.getElementById('f_height'); obj.value = height; 
    55                 var obj = topDoc.getElementById('f_alt'); obj.value = alt; 
    56                 var obj = topDoc.getElementById('orginal_width'); obj.value = width; 
    57                 var obj = topDoc.getElementById('orginal_height'); obj.value = height;           
     92        var obj = topDoc.getElementById('f_url');  obj.value = filename; 
     93        var obj = topDoc.getElementById('f_width');  obj.value = width; 
     94        var obj = topDoc.getElementById('f_width'); obj.value = width; 
     95        var obj = topDoc.getElementById('f_height'); obj.value = height; 
     96        var obj = topDoc.getElementById('f_alt'); obj.value = alt; 
     97        var obj = topDoc.getElementById('orginal_width'); obj.value = width; 
     98        var obj = topDoc.getElementById('orginal_height'); obj.value = height;           
    5899        } 
    59100 
    60         function showMessage(newMessage)  
     101// -------------------------------------------------------------------------- 
     102 
     103/** 
     104* showMessage() 
     105*/ 
     106 
     107function showMessage(newMessage)  
    61108        { 
    62                 var topDoc = window.top.document; 
    63109 
    64                 var message = topDoc.getElementById('message'); 
    65                 var messages = topDoc.getElementById('messages'); 
    66                 if(message && messages) 
     110        _imgManager.ddt._ddt( "images.js","110", "showMessage(): top with newMessage '" + newMessage + "'" ); 
     111 
     112        var topDoc = window.top.document; 
     113 
     114        var message = topDoc.getElementById('message'); 
     115        var messages = topDoc.getElementById('messages'); 
     116 
     117        if(message && messages) 
    67118                { 
    68                         if(message.firstChild) 
     119                if(message.firstChild) 
    69120                                message.removeChild(message.firstChild); 
    70121 
    71                         message.appendChild(topDoc.createTextNode(i18n(newMessage))); 
     122                message.appendChild(topDoc.createTextNode(i18n(newMessage))); 
    72123                         
    73                         messages.style.display = "block"; 
     124                messages.style.display = "block"; 
    74125                } 
     126 
    75127        } 
    76128 
    77         function addEvent(obj, evType, fn) 
     129// ------------------------------------------------------------ 
     130 
     131/** 
     132* addEvent() 
     133*/ 
     134 
     135function addEvent(obj, evType, fn) 
    78136        {  
    79                 if (obj.addEventListener) { obj.addEventListener(evType, fn, true); return true; }  
    80                 else if (obj.attachEvent) {  var r = obj.attachEvent("on"+evType, fn);  return r;  }  
    81                 else {  return false; }  
     137 
     138        _imgManager.ddt._ddt( "images.js","138", "addEvent(): top" ); 
     139 
     140        if (obj.addEventListener)  
     141                {  
     142                obj.addEventListener(evType, fn, true);  
     143                return true;  
     144                }  
     145        else if (obj.attachEvent)  
     146                {   
     147                var r = obj.attachEvent("on"+evType, fn);  return r;   
     148                }  
     149        else {  return false; }  
     150 
    82151        }  
    83152 
    84         function confirmDeleteFile(file)  
     153// -------------------------------------------------------- 
     154 
     155/** 
     156* confirmDeleteFile() 
     157*/ 
     158 
     159function confirmDeleteFile(file)  
    85160        { 
    86                 if(confirm(i18n("Delete file?"))) 
    87                         return true; 
    88          
    89                 return false;            
     161 
     162        _imgManager.ddt._ddt( "images.js","162", "confirmDeleteFile(): top with file '" + file + "'" ); 
     163 
     164        if(confirm(i18n("Delete file?"))) 
     165                return true; 
     166 
     167        return false;            
    90168        } 
    91169 
    92         function confirmDeleteDir(dir, count)  
     170// ---------------------------------------------------------- 
     171 
     172/** 
     173* confirmDeleteDir() 
     174*/ 
     175 
     176function confirmDeleteDir(dir, count)  
    93177        { 
    94                 if(count > 0) 
     178 
     179        _imgManager.ddt._ddt( "images.js","179", "confirmDeleteDir(): top with dir '" + dir + "' count '" + count + "'" ); 
     180 
     181        if(count > 0) 
    95182                { 
    96                         alert(i18n("Please delete all files/folders inside the folder you wish to delete first.")); 
    97                         return; 
     183                alert(i18n("Please delete all files/folders inside the folder you wish to delete first.")); 
     184                return; 
    98185                } 
    99186 
    100                 if(confirm(i18n("Delete folder?")))  
     187        if(confirm(i18n("Delete folder?")))  
    101188                        return true; 
    102189 
    103                 return false; 
     190        return false; 
    104191        } 
    105192 
    106         addEvent(window, 'load', init); 
     193// ---------------------------------------- 
     194 
     195_imgManager.ddt._ddt( "images.js","195", "bottom: hooking onload event" ); 
     196 
     197addEvent(window, 'load', init); 
     198 
     199// END 
  • branches/unified_backend/plugins/ImageManager/assets/manager.js

    r60 r121  
    11/** 
    2  * Functions for the ImageManager, used by manager.php only      
    3  * @author $Author: Wei Zhuo $ 
    4  * @version $Id: manager.js 26 2004-03-31 02:35:21Z Wei Zhuo $ 
    5  * @package ImageManager 
    6  */ 
     2* @fileoverview Functions for the ImageManager, used by manager.php only         
     3* 
     4* The _imgManager object must be present before this file can be included. 
     5* 
     6* @see manager.php 
     7* 
     8* @author $Author: Wei Zhuo $ 
     9* @version $Id: manager.js 26 2004-03-31 02:35:21Z Wei Zhuo $ 
     10* @package ImageManager 
     11* 
     12* @todo this should be turned into a class, possibly made part of ImageManager. 
     13*/ 
     14 
     15// ---------------------------------------------------- 
    716         
    8         //Translation 
    9         function i18n(str) { 
    10         return HTMLArea._lc(str, 'ImageManager'); 
     17/** 
     18* Translation 
     19* 
     20function i18n(str)  
     21        { 
     22 
     23        _imgManager.ddt._ddt( "manager.js","23", "i18n(): top with string '" + str + "'" ); 
     24 
     25        return HTMLArea._lc(str, 'ImageManager'); 
     26 
    1127        }; 
    1228 
    13  
    14         //set the alignment options 
    15         function setAlign(align)  
    16         { 
    17                 var selection = document.getElementById('f_align'); 
    18                 for(var i = 0; i < selection.length; i++) 
    19                 { 
    20                         if(selection.options[i].value == align) 
    21                         { 
    22                                 selection.selectedIndex = i; 
    23                                 break; 
     29// ---------------------------------------------------- 
     30 
     31/** 
     32* set the alignment options 
     33*/ 
     34 
     35function setAlign(align)  
     36        { 
     37 
     38        _imgManager.ddt._ddt( "manager.js","38", "setAlign(): top with align '" + align + "'" ); 
     39 
     40        var selection = document.getElementById('f_align'); 
     41 
     42        for(var i = 0; i < selection.length; i++) 
     43                { 
     44                if (selection.options[i].value == align) 
     45                        { 
     46                        selection.selectedIndex = i; 
     47                        break; 
    2448                        } 
    2549                } 
     50        }  // end of setAlign() 
     51 
     52// -------------------------------------------- 
     53 
     54/** 
     55* initialise the form 
     56*/ 
     57 
     58init = function ()  
     59        { 
     60 
     61        _imgManager.ddt._ddt( "manager.js","61", "init(): top." ); 
     62 
     63        __dlg_init(); 
     64 
     65        __dlg_translate('ImageManager'); 
     66 
     67        var uploadForm = document.getElementById('uploadForm'); 
     68 
     69        if(uploadForm) uploadForm.target = 'imgManager'; 
     70 
     71        var param = window.dialogArguments; 
     72 
     73        if (param)  
     74                { 
     75                document.getElementById("f_url").value = param["f_url"]; 
     76                document.getElementById("f_alt").value = param["f_alt"]; 
     77                document.getElementById("f_border").value = param["f_border"]; 
     78                document.getElementById("f_vert").value = param["f_vert"]; 
     79                document.getElementById("f_horiz").value = param["f_horiz"]; 
     80                document.getElementById("f_width").value = param["f_width"]; 
     81                document.getElementById("f_height").value = param["f_height"]; 
     82                setAlign(param["f_align"]); 
     83                } 
     84 
     85        _imgManager.ddt._ddt( "manager.js","85", "init(): setting focus" ); 
     86 
     87        document.getElementById("f_url").focus(); 
     88 
     89        }  // end of init. 
     90 
     91// ----------------------------------------------------------------- 
     92 
     93/** 
     94* onCancel() 
     95*/ 
     96 
     97function onCancel()  
     98        { 
     99 
     100        _imgManager.ddt._ddt( "manager.js","100", "onCancel(): top" ); 
     101 
     102        __dlg_close(null); 
     103        return false; 
     104        }; 
     105 
     106// ------------------------------------------------------------------ 
     107 
     108/** 
     109* onOK() 
     110*/ 
     111 
     112function onOK()  
     113        { 
     114 
     115        _imgManager.ddt._ddt( "manager.js","115", "onOK(): top" ); 
     116 
     117        // pass data back to the calling window 
     118 
     119        var fields = ["f_url", "f_alt", "f_align", "f_border", "f_horiz", "f_vert", "f_height", "f_width"]; 
     120        var param = new Object(); 
     121 
     122        for (var i in fields)  
     123                { 
     124                var id = fields[i]; 
     125                var el = document.getElementById(id); 
     126                if (id == "f_url" && el.value.indexOf('://') < 0 ) 
     127                        { 
     128 
     129                        if ( el.value == "" ) 
     130                                { 
     131                                alert( "No Image selected." ); 
     132                                return( false ); 
     133                                } 
     134 
     135                        param[id] = makeURL(base_url,el.value); 
     136                        } 
     137                else 
     138                        { 
     139                        param[id] = el.value; 
     140                        } 
     141                } 
     142 
     143        _imgManager.ddt._ddt( "manager.js","143", "onOK(): closing dialog" ); 
     144 
     145        __dlg_close(param); 
     146        return false; 
     147 
     148        };  // end of onOK() 
     149 
     150// --------------------------------------------------- 
     151 
     152/** 
     153* makeURL() 
     154* 
     155* similar to the Files::makeFile() in Files.php 
     156*/ 
     157 
     158function makeURL(pathA, pathB)  
     159        { 
     160 
     161        _imgManager.ddt._ddt( "manager.js","161", "makeURL(): pathA '" + pathA + "' pathB '" + pathB + "'" ); 
     162 
     163        if (pathA.substring(pathA.length-1) != '/') 
     164                        pathA += '/'; 
     165 
     166        if (pathB.charAt(0) == '/');     
     167                        pathB = pathB.substring(1); 
     168 
     169        return pathA+pathB; 
     170 
     171        }  // end of makeURL() 
     172 
     173// --------------------------------------------- 
     174 
     175/** 
     176* updateDir() 
     177*/ 
     178 
     179function updateDir(selection)  
     180        { 
     181 
     182        var newDir = selection.options[selection.selectedIndex].value; 
     183 
     184        _imgManager.ddt._ddt( "manager.js","184", "updateDir(): newDir is '" + newDir + "'" ); 
     185 
     186        changeDir(newDir); 
    26187        } 
    27188 
    28         //initialise the form 
    29         init = function ()  
    30         { 
    31                 __dlg_init(); 
    32  
    33                 __dlg_translate('ImageManager'); 
    34  
    35                 var uploadForm = document.getElementById('uploadForm'); 
    36                 if(uploadForm) uploadForm.target = 'imgManager'; 
    37  
    38                 var param = window.dialogArguments; 
    39                 if (param)  
    40                 { 
    41                         document.getElementById("f_url").value = param["f_url"]; 
    42                         document.getElementById("f_alt").value = param["f_alt"]; 
    43                         document.getElementById("f_border").value = param["f_border"]; 
    44                         document.getElementById("f_vert").value = param["f_vert"]; 
    45                         document.getElementById("f_horiz").value = param["f_horiz"]; 
    46                         document.getElementById("f_width").value = param["f_width"]; 
    47                         document.getElementById("f_height").value = param["f_height"]; 
    48                         setAlign(param["f_align"]); 
    49                 } 
    50  
    51                 document.getElementById("f_url").focus(); 
     189// --------------------------------------------- 
     190 
     191/** 
     192* goUpDir() 
     193*/ 
     194 
     195function goUpDir()  
     196        { 
     197 
     198        _imgManager.ddt._ddt( "manager.js","198", "goUpDir(): top" ); 
     199 
     200        var selection = document.getElementById('dirPath'); 
     201        var currentDir = selection.options[selection.selectedIndex].text; 
     202 
     203        if(currentDir.length < 2) 
     204                        return false; 
     205 
     206        var dirs = currentDir.split('/'); 
     207                 
     208        var search = ''; 
     209 
     210        for(var i = 0; i < dirs.length - 2; i++) 
     211                { 
     212                search += dirs[i]+'/'; 
     213                } 
     214 
     215        for(var i = 0; i < selection.length; i++) 
     216                { 
     217                var thisDir = selection.options[i].text; 
     218                if(thisDir == search) 
     219                        { 
     220                        selection.selectedIndex = i; 
     221                        var newDir = selection.options[i].value; 
     222                        changeDir(newDir); 
     223                        break; 
     224                        } 
     225                } 
     226        }  // end of goUpDir() 
     227 
     228// ---------------------------------------------- 
     229 
     230/** 
     231* changeDir() 
     232*/ 
     233 
     234function changeDir(newDir)  
     235        { 
     236 
     237        _imgManager.ddt._ddt( "manager.js","237", "changeDir(): newDir is '" + newDir + "'" ); 
     238 
     239        if (typeof imgManager != 'undefined') 
     240                { 
     241 
     242                _imgManager.ddt._ddt( "manager.js","242", "changeDir(): imgManager is defined" ); 
     243 
     244                imgManager.changeDir(newDir); 
     245                } 
    52246        } 
    53247 
    54  
    55         function onCancel()  
    56         { 
    57                 __dlg_close(null); 
    58                 return false; 
    59         }; 
    60  
    61         function onOK()  
    62         { 
    63                 // pass data back to the calling window 
    64                 var fields = ["f_url", "f_alt", "f_align", "f_border", "f_horiz", "f_vert", "f_height", "f_width"]; 
    65                 var param = new Object(); 
    66                 for (var i in fields)  
    67                 { 
    68                         var id = fields[i]; 
    69                         var el = document.getElementById(id); 
    70                         if(id == "f_url" && el.value.indexOf('://') < 0 ) 
    71                                 { 
    72  
    73                                 if ( el.value == "" ) 
    74                                         { 
    75                                         alert( "No Image selected." ); 
    76                                         return( false ); 
    77                                         } 
    78  
    79                                 param[id] = makeURL(base_url,el.value); 
    80                                 } 
    81                         else 
    82                                 param[id] = el.value; 
    83                 } 
    84                 __dlg_close(param); 
    85                 return false; 
    86         }; 
    87  
    88         //similar to the Files::makeFile() in Files.php 
    89         function makeURL(pathA, pathB)  
    90         { 
    91                 if(pathA.substring(pathA.length-1) != '/') 
    92                         pathA += '/'; 
    93  
    94                 if(pathB.charAt(0) == '/');      
    95                         pathB = pathB.substring(1); 
    96  
    97                 return pathA+pathB; 
    98         } 
    99  
    100  
    101         function updateDir(selection)  
    102         { 
    103                 var newDir = selection.options[selection.selectedIndex].value; 
    104                 changeDir(newDir); 
    105         } 
    106  
    107         function goUpDir()  
    108         { 
    109                 var selection = document.getElementById('dirPath'); 
    110                 var currentDir = selection.options[selection.selectedIndex].text; 
    111                 if(currentDir.length < 2) 
    112                         return false; 
    113                 var dirs = currentDir.split('/'); 
     248// ----------------------------------------------- 
     249 
     250/** 
     251* toggleContrains() 
     252*/ 
     253 
     254function toggleConstrains(constrains)  
     255        { 
     256 
     257        _imgManager.ddt._ddt( "manager.js","257", "toggleConstrains(): top" ); 
     258 
     259        var lockImage = document.getElementById('imgLock'); 
     260        var constrains = document.getElementById('constrain_prop'); 
     261 
     262        if(constrains.checked)  
     263                { 
     264                lockImage.src = "img/locked.gif";        
     265                checkConstrains('width')  
     266                } 
     267        else 
     268                { 
     269                lockImage.src = "img/unlocked.gif";      
     270                } 
     271        } // end of toggleConstrains() 
     272 
     273// --------------------------------------------------- 
     274 
     275/** 
     276* checkConstrains() 
     277*/ 
     278 
     279function checkConstrains(changed)  
     280        { 
     281 
     282        _imgManager.ddt._ddt( "manager.js","282", "checkConstrains(): top" ); 
     283 
     284        //alert(document.form1.constrain_prop); 
     285 
     286        var constrains = document.getElementById('constrain_prop'); 
    114287                 
    115                 var search = ''; 
    116  
    117                 for(var i = 0; i < dirs.length - 2; i++) 
    118                 { 
    119                         search += dirs[i]+'/'; 
    120                 } 
    121  
    122                 for(var i = 0; i < selection.length; i++) 
    123                 { 
    124                         var thisDir = selection.options[i].text; 
    125                         if(thisDir == search) 
    126                         { 
    127                                 selection.selectedIndex = i; 
    128                                 var newDir = selection.options[i].value; 
    129                                 changeDir(newDir); 
    130                                 break; 
    131                         } 
    132                 } 
    133         } 
    134  
    135         function changeDir(newDir)  
    136         { 
    137                 if(typeof imgManager != 'undefined') 
    138                         imgManager.changeDir(newDir); 
    139         } 
    140  
    141         function toggleConstrains(constrains)  
    142         { 
    143                 var lockImage = document.getElementById('imgLock'); 
    144                 var constrains = document.getElementById('constrain_prop'); 
    145  
    146                 if(constrains.checked)  
    147                 { 
    148                         lockImage.src = "img/locked.gif";        
    149                         checkConstrains('width')  
    150                 } 
    151                 else 
    152                 { 
    153                         lockImage.src = "img/unlocked.gif";      
    154                 } 
    155         } 
    156  
    157         function checkConstrains(changed)  
    158         { 
    159                 //alert(document.form1.constrain_prop); 
    160                 var constrains = document.getElementById('constrain_prop'); 
    161                  
    162                 if(constrains.checked)  
    163                 { 
    164                         var obj = document.getElementById('orginal_width'); 
    165                         var orginal_width = parseInt(obj.value); 
    166                         var obj = document.getElementById('orginal_height'); 
    167                         var orginal_height = parseInt(obj.value); 
    168  
    169                         var widthObj = document.getElementById('f_width'); 
    170                         var heightObj = document.getElementById('f_height'); 
     288        if(constrains.checked)  
     289                { 
     290                var obj = document.getElementById('orginal_width'); 
     291                var orginal_width = parseInt(obj.value); 
     292                var obj = document.getElementById('orginal_height'); 
     293                var orginal_height = parseInt(obj.value); 
     294 
     295                var widthObj = document.getElementById('f_width'); 
     296                var heightObj = document.getElementById('f_height'); 
    171297                         
    172                         var width = parseInt(widthObj.value); 
    173                         var height = parseInt(heightObj.value); 
    174  
    175                         if(orginal_width > 0 && orginal_height > 0)  
    176                         { 
    177                                 if(changed == 'width' && width > 0) { 
    178                                         heightObj.value = parseInt((width/orginal_width)*orginal_height); 
    179                                 } 
    180  
    181                                 if(changed == 'height' && height > 0) { 
    182                                         widthObj.value = parseInt((height/orginal_height)*orginal_width); 
     298                var width = parseInt(widthObj.value); 
     299                var height = parseInt(heightObj.value); 
     300 
     301                if(orginal_width > 0 && orginal_height > 0)  
     302                        { 
     303                        if(changed == 'width' && width > 0)  
     304                          { 
     305                                heightObj.value = parseInt((width/orginal_width)*orginal_height); 
     306                          } 
     307 
     308                        if(changed == 'height' && height > 0)  
     309                          { 
     310                                widthObj.value = parseInt((height/orginal_height)*orginal_width); 
    183311                                } 
    184312                        }                        
    185313                } 
     314        } // end of checkContrains() 
     315 
     316// -------------------------------------------------------------------- 
     317 
     318/** 
     319* showMessage() 
     320*/ 
     321 
     322function showMessage(newMessage)  
     323        { 
     324 
     325        _imgManager.ddt._ddt( "manager.js","325", "showMessage(): top with message '" + newMessage + "'" ); 
     326 
     327        var message = document.getElementById('message'); 
     328        var messages = document.getElementById('messages'); 
     329 
     330        if (message.firstChild) 
     331                message.removeChild(message.firstChild); 
     332 
     333        message.appendChild(document.createTextNode(i18n(newMessage))); 
     334                 
     335        messages.style.display = "block"; 
    186336        } 
    187337 
    188         function showMessage(newMessage)  
    189         { 
    190                 var message = document.getElementById('message'); 
    191                 var messages = document.getElementById('messages'); 
    192                 if(message.firstChild) 
    193                         message.removeChild(message.firstChild); 
    194  
    195                 message.appendChild(document.createTextNode(i18n(newMessage))); 
     338// --------------------------------------------------------------------- 
     339 
     340/** 
     341* addEvent() 
     342*/ 
     343 
     344function addEvent(obj, evType, fn) 
     345        {  
     346 
     347        _imgManager.ddt._ddt( "manager.js","347", "addEvent() : top" ); 
     348 
     349        if (obj.addEventListener)  
     350                {  
     351                obj.addEventListener(evType, fn, true);  
     352                return true;  
     353                } 
     354        else if (obj.attachEvent)  
     355                {   
     356                var r = obj.attachEvent("on"+evType, fn);   
     357                return r;   
     358                }  
     359        else  
     360                {   
     361                return false;  
     362                }  
     363        }  // end of addEvent()  
     364 
     365// ---------------------------------------------- 
     366 
     367/** 
     368* doUpload() 
     369*/ 
     370 
     371function doUpload()  
     372        { 
     373        _imgManager.ddt._ddt( "manager.js","373", "doUpload(): top" ); 
    196374                 
    197                 messages.style.display = "block"; 
     375        var uploadForm = document.getElementById('uploadForm'); 
     376 
     377        if(uploadForm) 
     378                { 
     379                showMessage('Uploading'); 
     380                } 
    198381        } 
    199382 
    200         function addEvent(obj, evType, fn) 
    201         {  
    202                 if (obj.addEventListener) { obj.addEventListener(evType, fn, true); return true; }  
    203                 else if (obj.attachEvent) {  var r = obj.attachEvent("on"+evType, fn);  return r;  }  
    204                 else {  return false; }  
    205         }  
    206  
    207         function doUpload()  
    208         { 
    209                  
    210                 var uploadForm = document.getElementById('uploadForm'); 
    211                 if(uploadForm) 
    212                         showMessage('Uploading'); 
     383// ----------------------------------------------------- 
     384 
     385/** 
     386* refresh() 
     387*/ 
     388 
     389function refresh() 
     390        { 
     391        _imgManager.ddt._ddt( "manager.js","391", "refresh(): top" ); 
     392 
     393        var selection = document.getElementById('dirPath'); 
     394        updateDir(selection); 
    213395        } 
    214396 
    215         function refresh() 
    216         { 
    217                 var selection = document.getElementById('dirPath'); 
    218                 updateDir(selection); 
    219         } 
    220  
    221  
    222         function newFolder()  
    223         { 
    224                 var selection = document.getElementById('dirPath'); 
    225                 var dir = selection.options[selection.selectedIndex].value; 
    226  
    227                 Dialog("newFolder.html", function(param)  
    228                 { 
     397// ---------------------------------------------------- 
     398 
     399/** 
     400* newFolder() 
     401*/ 
     402 
     403function newFolder()  
     404        { 
     405 
     406        _imgManager.ddt._ddt( "manager.js","406", "newFolder(): top" ); 
     407 
     408        var selection = document.getElementById('dirPath'); 
     409        var dir = selection.options[selection.selectedIndex].value; 
     410 
     411        // the popup dialog also needs access to the editor instance. See the last 
     412        // parm. 
     413 
     414        Dialog("newFolder.html",  
     415                function(param)  
     416                        { 
     417 
     418                        _imgManager.ddt._ddt( "manager.js","418", "Dialog() newFolder function parm: top" ); 
     419 
    229420                        if (!param) // user must have pressed Cancel 
    230421                                return false; 
    231422                        else 
    232                         { 
     423                                { 
    233424                                var folder = param['f_foldername']; 
     425 
    234426                                if(folder == thumbdir) 
    235                                 { 
     427                                        { 
    236428                                        alert(i18n('Invalid folder name, please choose another folder name.')); 
    237429                                        return false; 
    238                                 } 
     430                                        } 
    239431 
    240432                                if (folder && folder != '' && typeof imgManager != 'undefined')  
    241433                                        imgManager.newFolder(dir, encodeURI(folder));  
    242                         } 
    243                 }, null); 
    244         } 
    245  
    246         addEvent(window, 'load', init); 
     434                                } 
     435                        }, null, _imgManager._editor);  // end of Dialog() function parm 
     436 
     437        }       // end of newFolder() 
     438 
     439// ------------------------------------------------------------- 
     440// once the window loads fire the init() function defined above 
     441 
     442_imgManager.ddt._ddt( "manager.js","442", "bottom, adding event to window onload" ); 
     443 
     444addEvent(window, 'load', init); 
     445 
     446// end. 
  • branches/unified_backend/plugins/ImageManager/backend.php

    r48 r121  
    1 <? 
     1<?php 
    22 
    33/** 
     
    88* 
    99* Unified backend sponsored by DTLink Software, http://www.dtlink.com 
    10 * Implementation by Yermo Lamers, http://www.formvista.com 
     10* Implementation by Yermo Lamers, http://www.formvista.com/contact.html 
    1111* 
    1212* (c) DTLink, LLC 2005. 
     
    4141*/ 
    4242 
    43 include_once( "ddt.php" ); 
     43include_once( "../ddt/ddt.php" ); 
    4444 
    4545// uncomment to turn on debugging 
    4646// _ddtOn(); 
    4747 
     48// --------------------------------------------------------------- 
     49 
     50/** 
     51* ImageManager backend callback 
     52* 
     53* After including this file, the unified backend.php script 
     54* will call this function 
     55*/ 
     56 
     57function imagemanager_callback( $formVars ) 
     58{ 
     59 
     60global $IMConfig; 
     61 
    4862_ddt( __FILE__, __LINE__, "backend.php: top with query '" . $_SERVER["PHP_SELF"] . "' string '" . $_SERVER["QUERY_STRING"] . "'" ); 
    49  
    50 $formVars = empty($_POST) ? $_GET : $_POST; 
    5163 
    5264// make sure the request is for us (this gives us the ability to eventually organize 
     
    122134return false ; 
    123135 
     136}       // end of ImageManager_plugin 
     137 
    124138// END 
    125139 
  • branches/unified_backend/plugins/ImageManager/config.inc.php

    r60 r121  
    1414//      . unified backend. 
    1515// . created a set of defaults that make sense for bundling with Xinha. 
    16  
    17 // ------------------------------------------------------------------------- 
     16// 
     17// 2005-05-01 YmL: 
     18//      . modified for master unified backend.  
     19// . config values can be overridden by the calling page (makes integration 
     20//        easier. 
     21// ------------------------------------------------------------------------- 
     22 
     23/** 
     24* Xinha PHP backend config file. 
     25* 
     26* probably already included. We assume we are in the xinha/plugins/ImageManager 
     27* directory 
     28*/ 
     29 
     30if ( ! defined( "XINHA_INSTALL_ROOT" ) ) 
     31        { 
     32        include_once( "../../backends/backend_conf.php" ); 
     33        } 
    1834 
    1935/** 
     
    2541*/ 
    2642 
    27 $IMConfig['backend_url'] = "backend.php?__plugin=ImageManager&"; 
     43if ( @$IMConfig['backend_url' ] == NULL ) 
     44        { 
     45        $IMConfig['backend_url'] = XINHA_INSTALL_URL . "/backends/backend.php?__plugin=ImageManager&"; 
     46        } 
    2847 
    2948/** 
     
    3655*/ 
    3756 
    38 $IMConfig['base_dir'] = getcwd(); 
    39 $IMConfig['base_url'] = ''; 
     57if ( @$IMConfig[ 'base_dir' ] == NULL ) 
     58        { 
     59        $IMConfig['base_dir'] = XINHA_INSTALL_ROOT . "/plugins/ImageManager/"; 
     60        $IMConfig['base_url'] = XINHA_INSTALL_URL . "/plugins/ImageManager/"; 
     61        } 
    4062 
    4163// ------------------------------------------------------------ 
     
    5173* Able to create directories is nice, but not necessary. 
    5274* 
    53 * CHANGE THIS: for out-of-the-box demo purposes we're setting this to ./demo_images 
    54 * which has some graphics in it. 
     75* For out-of-the-box demo purposes we're setting this to  
     76* xinha/examples/images which has some graphics in it. 
    5577*/ 
    5678 
    5779// $IMConfig['images_dir'] = "/some/path/to/images/directory; 
    5880 
    59 $IMConfig['images_dir'] = "demo_images"; 
     81if ( @$IMConfig['images_dir'] == NULL ) 
     82        { 
     83        $IMConfig['images_dir'] = XINHA_INSTALL_ROOT . "/examples/images"; 
     84        } 
    6085 
    6186// ------------------------------------------------------------------------- 
     
    7095* for this directory (i.e. disable PHP, Perl, CGI). We only want to store assets 
    7196* in this directory and its subdirectories. 
    72 * 
    73 * CHANGE THIS: You need to change this to match the url where you have Xinha 
    74 * installed. If the images show up blank chances are this is not set correctly. 
    75 */ 
    76  
    77 // $IMConfig['images_url'] = "/url/to/above"; 
    78  
    79 // try to figure out the URL of the sample images directory. For your installation 
    80 // you will probably want to keep images in another directory. 
    81  
    82 $IMConfig['images_url'] = str_replace( "backend.php", "", $_SERVER["PHP_SELF"] ) . "demo_images"; 
     97*/ 
     98 
     99if ( @$IMConfig['images_url'] == NULL ) 
     100        { 
     101        $IMConfig['images_url'] = XINHA_INSTALL_URL . "/examples/images"; 
     102        } 
    83103 
    84104// ------------------------------------------------------------------------- 
     
    97117*/ 
    98118 
    99 $IMConfig['safe_mode'] = false; 
     119if ( @$IMConfig['safe_mode'] == NULL ) 
     120        { 
     121        $IMConfig['safe_mode'] = false; 
     122        } 
    100123 
    101124// ------------------------------------------------------------------------- 
     
    155178*/ 
    156179 
    157 $IMConfig['thumbnail_dir'] = '.thumbs'; 
     180if ( @$IMConfig[ 'thumbnail_dir' ] == NULL ) 
     181        { 
     182        $IMConfig['thumbnail_dir'] = '.thumbs'; 
     183        } 
    158184 
    159185// ------------------------------------------------------------------------- 
     
    176202*/ 
    177203 
    178 $IMConfig['allow_new_dir'] = true; 
     204if ( @$IMConfig[ 'allow_new_dir' ] === NULL ) 
     205        { 
     206        $IMConfig['allow_new_dir'] = false; 
     207        } 
    179208 
    180209// ------------------------------------------------------------------------- 
     
    192221*/ 
    193222 
    194 $IMConfig['allow_upload'] = true; 
     223if ( @$IMConfig['allow_upload'] === NULL ) 
     224        { 
     225        $IMConfig['allow_upload'] = false; 
     226        } 
    195227 
    196228// ------------------------------------------------------------------------- 
     
    210242*/ 
    211243 
    212 $IMConfig['validate_images'] = true; 
     244if ( @$IMConfig[ 'validate_images' ] === NULL ) 
     245        { 
     246        $IMConfig['validate_images'] = true; 
     247        } 
    213248 
    214249// ------------------------------------------------------------------------- 
     
    221256*/ 
    222257 
    223 $IMConfig['default_thumbnail'] = 'img/default.gif'; 
     258if ( @$IMConfig['default_thumbnail'] == NULL ) 
     259        { 
     260        $IMConfig['default_thumbnail'] = 'img/default.gif'; 
     261        } 
    224262 
    225263// ------------------------------------------------------------------------- 
     
    229267*/ 
    230268 
    231 $IMConfig['thumbnail_width'] = 96; 
    232 $IMConfig['thumbnail_height'] = 96; 
     269if ( @$IMConfig['thumbnail_width'] == NULL ) 
     270        { 
     271        $IMConfig['thumbnail_width'] = 96; 
     272        $IMConfig['thumbnail_height'] = 96; 
     273        } 
    233274 
    234275// ------------------------------------------------------------------------- 
     
    240281*/ 
    241282 
    242 $IMConfig['tmp_prefix'] = '.editor_'; 
    243  
     283if ( @$IMConfig['tmp_prefix'] == NULL ) 
     284        { 
     285        $IMConfig['tmp_prefix'] = '.editor_'; 
     286        } 
     287 
     288// used to verify that the config has been loaded. 
    244289 
    245290define( "IM_CONFIG_LOADED", "yes" ); 
    246291 
    247 // bring in the debugging library 
    248  
    249 include_once( "ddt.php" ); 
     292// bring in the debugging library. 
     293 
     294include_once( XINHA_INSTALL_ROOT . "/ddt/ddt.php" ); 
    250295 
    251296// uncomment to send debug messages to a local file 
    252 _setDebugLog( "/tmp/debug_log.txt" ); 
    253  
    254 // turn debugging on everywhere. 
    255 _ddtOn(); 
     297// _setDebugLog( "/tmp/debug_log.txt" ); 
     298 
     299// uncomment to turn on debugging messages. 
     300//_ddtOn(); 
    256301 
    257302// END 
  • branches/unified_backend/plugins/ImageManager/editor.php

    r60 r121  
    1 <? 
     1<?php 
    22/** 
    33 * The PHP Image Editor user interface. 
     
    2121        <title></title> 
    2222<script type="text/javascript"> 
    23 _backend_url = "<? print $IMConfig['backend_url']; ?>"; 
     23_backend_url = "<?php print $IMConfig['backend_url']; ?>"; 
     24 
     25// This page is opened by a call to Dialog() in ImageManager/images.php in the  
     26// editImage() js function. (That Dialog() call is defined in ImageManager/assets/dialog.js 
     27// 
     28// The Dialog() call accepts an optional fourth parameter, the editor instance 
     29// that is raising this dialog. From there we can pull out the ImageManager instance and 
     30// get access to the ddt instance. This has an added benefit allowing us to 
     31// put all the previously free standing manager functions into the image manager class. 
     32 
     33_imgManager = window.opener.Dialog._editor.plugins[ "ImageManager" ].instance; 
     34 
     35_imgManager.ddt._ddt( "editor.php", "38", "top of editor.php file." ); 
     36 
    2437</script> 
    25         <link href="<? print $IMConfig['base_url'];?>assets/editor.css" rel="stylesheet" type="text/css" />      
    26 <script type="text/javascript" src="<? print $IMConfig['base_url'];?>assets/slider.js"></script> 
    27 <script type="text/javascript" src="<? print $IMConfig['base_url'];?>assets/popup.js"></script> 
     38        <link href="<?php print $IMConfig['base_url'];?>assets/editor.css" rel="stylesheet" type="text/css" />   
     39<script type="text/javascript" src="<?php print $IMConfig['base_url'];?>assets/slider.js"></script> 
     40<script type="text/javascript" src="<?php print $IMConfig['base_url'];?>assets/popup.js"></script> 
    2841<script type="text/javascript"> 
    2942/*<![CDATA[*/ 
     
    3447/*]]>*/ 
    3548</script> 
    36 <script type="text/javascript" src="<? print $IMConfig['base_url'];?>assets/editor.js"></script> 
     49<script type="text/javascript" src="<?php print $IMConfig['base_url'];?>assets/editor.js"></script> 
    3750</head> 
    3851 
    3952<body> 
    4053<div id="indicator"> 
    41 <img src="<? print $IMConfig['base_url'];?>img/spacer.gif" id="indicator_image" height="20" width="20" alt="" /> 
     54<img src="<?php print $IMConfig['base_url'];?>img/spacer.gif" id="indicator_image" height="20" width="20" alt="" /> 
    4255</div> 
    4356<div id="tools"> 
     
    4861                        <label for="cw">Width:</label><input type="text" id="cw" class="textInput" onchange="updateMarker('crop')"/> 
    4962                        <label for="ch">Height:</label><input type="text" id="ch" class="textInput" onchange="updateMarker('crop')"/> 
    50                         <img src="<? print $IMConfig['base_url'];?>img/div.gif" height="30" width="2" class="div" alt="|" /> 
     63                        <img src="<?php print $IMConfig['base_url'];?>img/div.gif" height="30" width="2" class="div" alt="|" /> 
    5164                </div>   
    52                 <a href="javascript: editor.doSubmit('crop');" class="buttons" title="OK"><img src="<? print $IMConfig['base_url'];?>img/btn_ok.gif" height="30" width="30" alt="OK" /></a> 
    53                 <a href="javascript: editor.reset();" class="buttons" title="Cancel"><img src="<? print $IMConfig['base_url'];?>img/btn_cancel.gif" height="30" width="30" alt="Cancel" /></a>           
     65                <a href="javascript: editor.doSubmit('crop');" class="buttons" title="OK"><img src="<?php print $IMConfig['base_url'];?>img/btn_ok.gif" height="30" width="30" alt="OK" /></a> 
     66                <a href="javascript: editor.reset();" class="buttons" title="Cancel"><img src="<?php print $IMConfig['base_url'];?>img/btn_cancel.gif" height="30" width="30" alt="Cancel" /></a>                
    5467        </div>   
    5568        <div id="tools_scale" style="display:none;"> 
    5669                <div id="tool_inputs"> 
    5770                        <label for="sw">Width:</label><input type="text" id="sw" class="textInput" onchange="checkConstrains('width')"/> 
    58                         <a href="javascript:toggleConstraints();" title="Lock"><img src="<? print $IMConfig['base_url'];?>img/islocked2.gif" id="scaleConstImg" height="14" width="8" alt="Lock" class="div" /></a><label for="sh">Height:</label> 
     71                        <a href="javascript:toggleConstraints();" title="Lock"><img src="<?php print $IMConfig['base_url'];?>img/islocked2.gif" id="scaleConstImg" height="14" width="8" alt="Lock" class="div" /></a><label for="sh">Height:</label> 
    5972                        <input type="text" id="sh" class="textInput" onchange="checkConstrains('height')"/> 
    6073                        <input type="checkbox" id="constProp" value="1" checked="checked" onclick="toggleConstraints()"/> 
    6174                        <label for="constProp">Constrain Proportions</label> 
    62                         <img src="<? print $IMConfig['base_url'];?>img/div.gif" height="30" width="2" class="div" alt="|" /> 
     75                        <img src="<?php print $IMConfig['base_url'];?>img/div.gif" height="30" width="2" class="div" alt="|" /> 
    6376                </div>   
    64                 <a href="javascript: editor.doSubmit('scale');" class="buttons" title="OK"><img src="<? print $IMConfig['base_url'];?>img/btn_ok.gif" height="30" width="30" alt="OK" /></a> 
    65                 <a href="javascript: editor.reset();" class="buttons" title="Cancel"><img src="<? print $IMConfig['base_url'];?>img/btn_cancel.gif" height="30" width="30" alt="Cancel" /></a>           
     77                <a href="javascript: editor.doSubmit('scale');" class="buttons" title="OK"><img src="<?php print $IMConfig['base_url'];?>img/btn_ok.gif" height="30" width="30" alt="OK" /></a> 
     78                <a href="javascript: editor.reset();" class="buttons" title="Cancel"><img src="<?php print $IMConfig['base_url'];?>img/btn_cancel.gif" height="30" width="30" alt="Cancel" /></a>                
    6679        </div>   
    6780        <div id="tools_rotate" style="display:none;"> 
     
    8295         </select> 
    8396                        <label for="ra">Angle:</label><input type="text" id="ra" class="textInput" /> 
    84                         <img src="<? print $IMConfig['base_url'];?>img/div.gif" height="30" width="2" class="div" alt="|" /> 
     97                        <img src="<?php print $IMConfig['base_url'];?>img/div.gif" height="30" width="2" class="div" alt="|" /> 
    8598                </div>   
    86                 <a href="javascript: editor.doSubmit('rotate');" class="buttons" title="OK"><img src="<? print $IMConfig['base_url'];?>img/btn_ok.gif" height="30" width="30" alt="OK" /></a> 
    87                 <a href="javascript: editor.reset();" class="buttons" title="Cancel"><img src="<? print $IMConfig['base_url'];?>img/btn_cancel.gif" height="30" width="30" alt="Cancel" /></a>           
     99                <a href="javascript: editor.doSubmit('rotate');" class="buttons" title="OK"><img src="<?php print $IMConfig['base_url'];?>img/btn_ok.gif" height="30" width="30" alt="OK" /></a> 
     100                <a href="javascript: editor.reset();" class="buttons" title="Cancel"><img src="<?php print $IMConfig['base_url'];?>img/btn_cancel.gif" height="30" width="30" alt="Cancel" /></a>                
    88101        </div>           
    89102        <div id="tools_measure" style="display:none;"> 
     
    91104                        <label>X:</label><input type="text" class="measureStats" id="sx" /> 
    92105                        <label>Y:</label><input type="text" class="measureStats" id="sy" /> 
    93                         <img src="<? print $IMConfig['base_url'];?>img/div.gif" height="30" width="2" class="div" alt="|" /> 
     106                        <img src="<?php print $IMConfig['base_url'];?>img/div.gif" height="30" width="2" class="div" alt="|" /> 
    94107                        <label>W:</label><input type="text" class="measureStats" id="mw" /> 
    95108                        <label>H:</label><input type="text" class="measureStats" id="mh" /> 
    96                         <img src="<? print $IMConfig['base_url'];?>img/div.gif" height="30" width="2" class="div" alt="|" /> 
     109                        <img src="<?php print $IMConfig['base_url'];?>img/div.gif" height="30" width="2" class="div" alt="|" /> 
    97110                        <label>A:</label><input type="text" class="measureStats" id="ma" />              
    98111                        <label>D:</label><input type="text" class="measureStats" id="md" />              
    99                         <img src="<? print $IMConfig['base_url'];?>img/div.gif" height="30" width="2" class="div" alt="|" /> 
     112                        <img src="<?php print $IMConfig['base_url'];?>img/div.gif" height="30" width="2" class="div" alt="|" /> 
    100113                        <button type="button" onclick="editor.reset();" >Clear</button> 
    101114                </div>   
     
    103116        <div id="tools_save" style="display:none;"> 
    104117                <div id="tool_inputs"> 
    105                         <label for="save_filename">Filename:</label><input type="text" id="save_filename" value="<? echo $editor->getDefaultSaveFile();?>"/> 
     118                        <label for="save_filename">Filename:</label><input type="text" id="save_filename" value="<?php echo $editor->getDefaultSaveFile();?>"/> 
    106119                        <select name="format" id="save_format" style="margin-left: 10px; vertical-align: middle;" onchange="updateFormat(this)"> 
    107120            <option value="" selected>Image Format</option> 
     
    111124            <option value="jpeg,35">JPEG Low</option> 
    112125            <option value="png">PNG</option> 
    113                         <? if($editor->isGDGIFAble() != -1) { ?> 
     126                        <?php if($editor->isGDGIFAble() != -1) { ?> 
    114127            <option value="gif">GIF</option> 
    115                         <? } ?> 
     128                        <?php } ?> 
    116129         </select> 
    117130                        <label>Quality:</label> 
     
    120133                                <td> 
    121134                                        <div id="slidercasing">  
    122                                 <div id="slidertrack" style="width:100px"><img src="<? print $IMConfig['base_url'];?>img/spacer.gif" width="1" height="1" border="0" alt="track"></div> 
    123             <div id="sliderbar" style="left:85px" onmousedown="captureStart();"><img src="<? print $IMConfig['base_url'];?>img/spacer.gif" width="1" height="1" border="0" alt="track"></div> 
     135                                <div id="slidertrack" style="width:100px"><img src="<?php print $IMConfig['base_url'];?>img/spacer.gif" width="1" height="1" border="0" alt="track"></div> 
     136            <div id="sliderbar" style="left:85px" onmousedown="captureStart();"><img src="<?php print $IMConfig['base_url'];?>img/spacer.gif" width="1" height="1" border="0" alt="track"></div> 
    124137                        </div>   
    125138                                </td> 
     
    127140                        </table>                                 
    128141                        <input type="text" id="quality" onchange="updateSlider(this.value)" style="width: 2em;" value="85"/> 
    129                         <img src="<? print $IMConfig['base_url'];?>img/div.gif" height="30" width="2" class="div" alt="|" /> 
     142                        <img src="<?php print $IMConfig['base_url'];?>img/div.gif" height="30" width="2" class="div" alt="|" /> 
    130143                </div>   
    131                 <a href="javascript: editor.doSubmit('save');" class="buttons" title="OK"><img src="<? print $IMConfig['base_url'];?>img/btn_ok.gif" height="30" width="30" alt="OK" /></a> 
    132                 <a href="javascript: editor.reset();" class="buttons" title="Cancel"><img src="<? print $IMConfig['base_url'];?>img/btn_cancel.gif" height="30" width="30" alt="Cancel" /></a>           
     144                <a href="javascript: editor.doSubmit('save');" class="buttons" title="OK"><img src="<?php print $IMConfig['base_url'];?>img/btn_ok.gif" height="30" width="30" alt="OK" /></a> 
     145                <a href="javascript: editor.reset();" class="buttons" title="Cancel"><img src="<?php print $IMConfig['base_url'];?>img/btn_cancel.gif" height="30" width="30" alt="Cancel" /></a>                
    133146        </div>   
    134147</div> 
    135148<div id="toolbar"> 
    136 <a href="javascript:toggle('crop')" id="icon_crop" title="Crop"><img src="<? print $IMConfig['base_url'];?>img/crop.gif" height="20" width="20" alt="Crop" /><span>Crop</span></a> 
    137 <a href="javascript:toggle('scale')" id="icon_scale" title="Resize"><img src="<? print $IMConfig['base_url'];?>img/scale.gif" height="20" width="20" alt="Resize" /><span>Resize</span></a> 
    138 <a href="javascript:toggle('rotate')" id="icon_rotate" title="Rotate"><img src="<? print $IMConfig['base_url'];?>img/rotate.gif" height="20" width="20" alt="Rotate" /><span>Rotate</span></a> 
    139 <a href="javascript:toggle('measure')" id="icon_measure" title="Measure"><img src="<? print $IMConfig['base_url'];?>img/measure.gif" height="20" width="20" alt="Measure" /><span>Measure</span></a> 
    140 <a href="javascript: toggleMarker();" title="Marker"><img id="markerImg" src="<? print $IMConfig['base_url'];?>img/t_black.gif" height="20" width="20" alt="Marker" /><span>Marker</span></a> 
    141 <a href="javascript:toggle('save')" id="icon_save" title="Save"><img src="<? print $IMConfig['base_url'];?>img/save.gif" height="20" width="20" alt="Save" /><span>Save</span></a> 
     149<a href="javascript:toggle('crop')" id="icon_crop" title="Crop"><img src="<?php print $IMConfig['base_url'];?>img/crop.gif" height="20" width="20" alt="Crop" /><span>Crop</span></a> 
     150<a href="javascript:toggle('scale')" id="icon_scale" title="Resize"><img src="<?php print $IMConfig['base_url'];?>img/scale.gif" height="20" width="20" alt="Resize" /><span>Resize</span></a> 
     151<a href="javascript:toggle('rotate')" id="icon_rotate" title="Rotate"><img src="<?php print $IMConfig['base_url'];?>img/rotate.gif" height="20" width="20" alt="Rotate" /><span>Rotate</span></a> 
     152<a href="javascript:toggle('measure')" id="icon_measure" title="Measure"><img src="<?php print $IMConfig['base_url'];?>img/measure.gif" height="20" width="20" alt="Measure" /><span>Measure</span></a> 
     153<a href="javascript: toggleMarker();" title="Marker"><img id="markerImg" src="<?php print $IMConfig['base_url'];?>img/t_black.gif" height="20" width="20" alt="Marker" /><span>Marker</span></a> 
     154<a href="javascript:toggle('save')" id="icon_save" title="Save"><img src="<?php print $IMConfig['base_url'];?>img/save.gif" height="20" width="20" alt="Save" /><span>Save</span></a> 
    142155</div> 
    143156<div id="contents"> 
    144 <iframe src="<? print $IMConfig['backend_url']; ?>__function=editorFrame&img=<? if(isset($_GET['img'])) echo rawurlencode($_GET['img']); ?>" name="editor" id="editor"  scrolling="auto" title="Image Editor" frameborder="0"></iframe> 
     157<iframe src="<?php print $IMConfig['backend_url']; ?>__function=editorFrame&img=<?php if(isset($_GET['img'])) echo rawurlencode($_GET['img']); ?>" name="editor" id="editor"  scrolling="auto" title="Image Editor" frameborder="0"></iframe> 
    145158</div> 
    146159<div id="bottom"></div> 
  • branches/unified_backend/plugins/ImageManager/image-manager.js

    r60 r121  
    1 /** 
    2  * The ImageManager plugin javascript. 
    3  * @author $Author: Wei Zhuo $ 
    4  * @version $Id: image-manager.js 26 2004-03-31 02:35:21Z Wei Zhuo $ 
    5  * @package ImageManager 
    6  */ 
    7  
    8 /** 
    9  * To Enable the plug-in add the following line before HTMLArea is initialised. 
    10  * 
    11  * HTMLArea.loadPlugin("ImageManager"); 
    12  * 
    13  * Then configure the config.inc.php file, that is all. 
    14  * For up-to-date documentation, please visit http://www.zhuo.org/htmlarea/ 
    15  */ 
    16  
    17 /** 
    18  * It is pretty simple, this file over rides the HTMLArea.prototype._insertImage 
    19  * function with our own, only difference is the popupDialog url 
    20  * point that to the php script. 
    21  */ 
    22  
    23 function ImageManager(editor) 
    24 { 
    25  
    26 }; 
    27  
    28 ImageManager._pluginInfo = { 
     1 
     2// tabs: 3 
     3 
     4/** 
     5* @fileoverview  The ImageManager plugin javascript. 
     6* 
     7* This plugin implements a client side image manager and editor. 
     8* 
     9* @version $Id: image-manager.js 26 2004-03-31 02:35:21Z Wei Zhuo $ 
     10* @package ImageManager 
     11* @author $Author: Wei Zhuo $ 
     12* @author Yermo Lamers http://www.formvista.com (unified backend modifications) 
     13*/ 
     14 
     15/** 
     16* To Enable the plug-in add the following line before HTMLArea is initialised. 
     17* 
     18* HTMLArea.loadPlugin("ImageManager"); 
     19* 
     20* Then configure the config.inc.php file, that is all. 
     21* For up-to-date documentation, please visit http://www.zhuo.org/htmlarea/ 
     22*/ 
     23 
     24// ----------------------------------------------------------------- 
     25 
     26/** 
     27* pluginInfo for about box. 
     28*/ 
     29 
     30ImageManager._pluginInfo =  
     31        { 
    2932        name          : "ImageManager", 
    3033        version       : "1.0", 
     
    3235        developer_url : "http://www.zhuo.org/htmlarea/", 
    3336        license       : "htmlArea" 
    34 }; 
    35  
    36 // default Xinha layout. plugins are beneath the Xinha directory. 
    37 // Note the trailing &. Makes forming our URL's easier.  
    38 // 
    39 // To change the backend, just set this config variable in the calling page. 
    40 // The images_url config option is used to strip out the directory info when 
    41 // images are selected from the document. 
     37        }; 
     38 
     39/** 
     40* ImageManager plugin configuration 
     41* 
     42* default Xinha layout. plugins are beneath the Xinha directory. 
     43* all plugin requests are routed through a single entry point. 
     44* 
     45* Note the trailing &. Makes forming our URL's easier.  
     46* 
     47* To change the backend, just set this config variable in the calling page. 
     48* The images_url config option is used to strip out the directory info when 
     49* images are selected from the document. 
     50*/ 
    4251 
    4352HTMLArea.Config.prototype.ImageManager = 
    44 { 
    45   'backend' : _editor_url + 'plugins/ImageManager/backend.php?__plugin=ImageManager&', 
    46   'images_url' : _editor_url + 'plugins/ImageManager/demo_images' 
    47 } 
    48  
    49 // Over ride the _insertImage function in htmlarea.js. 
    50 // Open up the ImageManger script instead. 
    51  
    52 HTMLArea.prototype._insertImage = function(image) { 
     53        { 
     54 
     55        // the backend URL may already include variables. 
     56 
     57        'backend' : _editor_backend + ( _editor_backend.match(/.*\?.*/) ? "&" : "?" ) + '__plugin=ImageManager&', 
     58        'images_url' : _editor_url + 'examples/images' 
     59 
     60        } 
     61 
     62/** 
     63* It is pretty simple, this file over rides the HTMLArea.prototype._insertImage 
     64* function with our own, only difference is the popupDialog url 
     65* point that to the php script. 
     66* 
     67* @class Image Manager Plugin. 
     68*/ 
     69 
     70function ImageManager(editor) 
     71        { 
     72 
     73        this.editor = editor; 
     74 
     75        // [STRIP 
     76        // create a ddt debug trace object. There may be multiple editors on  
     77        // the page each with an ImageManager .. to distinguish which instance 
     78        // is generating the message we tack on the name of the textarea. 
     79 
     80        this.ddt = new DDT( editor._textArea + ":ImageManager Plugin" ); 
     81 
     82        // uncomment to turn on debugging messages. 
     83  
     84        this.ddt._ddtOn(); 
     85 
     86        this.ddt._ddt( "image-manager.js","86", "ImageManager(): constructor" ); 
     87 
     88        // STRIP] 
     89 
     90        }; 
     91 
     92// ---------------------------------------------------------------- 
     93 
     94/** 
     95* Override the _insertImage function in htmlarea.js. 
     96* 
     97* If no image is selected, the image parameter will be null. If  
     98* an image is selected (right click->image properties for instance) 
     99* then image will contain the selected image. 
     100* 
     101* @todo figure out how to get to editor object from Dialog function. 
     102*/ 
     103 
     104HTMLArea.prototype._insertImage = function(image)  
     105        { 
     106 
     107        this.ddt._ddt( "image-manager.js","107", "_insertImage(): top" ); 
    53108 
    54109        var editor = this;      // for nested functions 
    55110        var outparam = null; 
    56         if (typeof image == "undefined") { 
     111 
     112        if (typeof image == "undefined")  
     113                { 
     114                this.ddt._ddt( "image-manager.js","114", "_insertImage(): no image." ); 
    57115                image = this.getParentElement(); 
     116 
    58117                if (image && !/^img$/i.test(image.tagName)) 
    59118                        image = null; 
    60         } 
     119                } 
    61120 
    62121        // the selection will have the absolute url to the image.  
     
    81140 
    82141                        var images_url = editor.config.ImageManager.images_url.replace( /https?:\/\/[^\/]*/, "" ); 
    83  
    84                         // alert( "images_url is '" + images_url + "'" ); 
    85  
    86142                        var image_regex = new RegExp( images_url ); 
    87  
    88                         // alert(" regex is '" + image_regex.source + "'" ); 
    89  
    90143                        image_src = image_src.replace( image_regex, "" ); 
    91144 
    92                         // alert( "new source is " + image_src ); 
     145                        this.ddt._ddt( "image-manager.js","145", "_insertImage(): new source is " + image_src ); 
    93146                        } 
    94147         
     
    112165        // actual config variable in each place .. for now this is good enough. 
    113166 
    114         // alert( "backend is '" + editor.config.ImageManager.backend + "'" ); 
     167        this.ddt._ddt( "image-manager.js","167", "_insertImage(): backend is '" + editor.config.ImageManager.backend + "'" ); 
    115168 
    116169        var manager = editor.config.ImageManager.backend + '__function=manager'; 
    117170 
    118         Dialog(manager, function(param) { 
    119                 if (!param) {   // user must have pressed Cancel 
    120                         return false; 
    121                 } 
    122                 var img = image; 
    123                 if (!img) { 
    124                         var sel = editor._getSelection(); 
    125                         var range = editor._createRange(sel);                    
    126                         editor._doc.execCommand("insertimage", false, param.f_url); 
    127                         if (HTMLArea.is_ie) { 
    128                                 img = range.parentElement(); 
    129                                 // wonder if this works... 
    130                                 if (img.tagName.toLowerCase() != "img") { 
    131                                         img = img.previousSibling; 
     171        // NOTE the extremely long function as parameter #2 to Dialog() here. 
     172        // javascript scoping rules seem really messy. editor is available within 
     173        // this function ..  
     174 
     175        Dialog( manager,  
     176                function(param)  
     177                        { 
     178 
     179      // [STRIP 
     180                        // 
     181      // we want to use the ImageManager DDT instance to output these 
     182                        // debug messages (so we can turn off all ImageManager plugin debug messages 
     183                        // from one spot). To get that object we need to go through the 
     184                        // editor object to the plugins array (see htlarea.js HTMLArea() constructor line 
     185                        //  ~2559 as of this writing) to the named plugin (ImageManager), to the plugin 
     186                        // instance to the ddt instance. 
     187 
     188                        var ddt = editor.plugins[ 'ImageManager'].instance.ddt; 
     189 
     190                        // STRIP] 
     191 
     192                        ddt._ddt( "image-manager.js","192", "Dialog() parm: top" ); 
     193 
     194                        if (!param)  
     195                                {        // user must have pressed Cancel 
     196                                return false; 
    132197                                } 
    133                         } else { 
    134                                 img = range.startContainer.previousSibling; 
    135                         } 
    136                 } else {                         
    137                         img.src = param.f_url; 
    138                 } 
     198 
     199                        var img = image; 
     200 
     201                        if (!img)  
     202                                { 
     203                                var sel = editor._getSelection(); 
     204                                var range = editor._createRange(sel);                    
     205 
     206                                ddt._ddt( "image-manager.js","206", "_insertImage(): execing insertImage" ); 
     207 
     208                                editor._doc.execCommand("insertimage", false, param.f_url); 
     209 
     210                                if (HTMLArea.is_ie)  
     211                                        { 
     212                                        img = range.parentElement(); 
     213 
     214                                        // wonder if this works... 
     215 
     216                                        if (img.tagName.toLowerCase() != "img")  
     217                                                { 
     218                                                img = img.previousSibling; 
     219                                                } 
     220                                        }  
     221                                else  
     222                                        { 
     223                                        img = range.startContainer.previousSibling; 
     224                                        } 
     225                                }  
     226                        else  
     227                                {                        
     228                                img.src = param.f_url; 
     229                                } 
    139230                 
    140                 for (field in param) { 
    141                         var value = param[field]; 
    142                         switch (field) { 
    143                             case "f_alt"    : img.alt    = value; break; 
    144                             case "f_border" : img.border = parseInt(value || "0"); break; 
    145                             case "f_align"  : img.align  = value; break; 
    146                             case "f_vert"   : img.vspace = parseInt(value || "0"); break; 
    147                             case "f_horiz"  : img.hspace = parseInt(value || "0"); break; 
    148                                 case "f_width"  : img.width = parseInt(value || "0"); break; 
    149                                 case "f_height"  : img.height = parseInt(value || "0"); break; 
    150                         } 
    151                 } 
    152                  
    153                  
    154         }, outparam); 
    155 }; 
    156  
    157  
     231                        for (field in param)  
     232                                { 
     233                                var value = param[field]; 
     234 
     235                                switch (field)  
     236                                        { 
     237                                   case "f_alt"    : img.alt     = value; break; 
     238                                   case "f_border" : img.border = parseInt(value || "0"); break; 
     239                                   case "f_align"  : img.align   = value; break; 
     240                                   case "f_vert"   : img.vspace = parseInt(value || "0"); break; 
     241                                   case "f_horiz"  : img.hspace = parseInt(value || "0"); break; 
     242                                        case "f_width"  : img.width = parseInt(value || "0"); break; 
     243                                        case "f_height"  : img.height = parseInt(value || "0"); break; 
     244                                        } 
     245                                } 
     246 
     247      ddt._ddt( "image-manager.js","247", "end of Dialog() parm function" ); 
     248                                         
     249                        }, outparam, editor);   // end of Dialog() parm. 
     250 
     251        };      // end of _insertImage(); 
     252 
     253// END 
  • branches/unified_backend/plugins/ImageManager/images.php

    r60 r121  
    88 
    99require_once('config.inc.php'); 
    10 require_once('ddt.php'); 
     10require_once(XINHA_INSTALL_ROOT . '/ddt/ddt.php'); 
    1111require_once('Classes/ImageManager.php'); 
    1212 
     
    4242$manager = new ImageManager($IMConfig); 
    4343 
    44  
    4544//get the list of files and directories 
    4645$list = $manager->getFiles($relative); 
    47  
    4846 
    4947/* ================= OUTPUT/DRAW FUNCTIONS ======================= */ 
     
    6260                <td> 
    6361 
    64                 <? _ddt( __FILE__, __LINE__, "drawFiles(): relative is '" . $file['relative'] . "' thumbnail '" . $manager->getThumbnail($file['relative']) . "'" ); ?> 
     62                <?php _ddt( __FILE__, __LINE__, "drawFiles(): relative is '" . $file['relative'] . "' thumbnail '" . $manager->getThumbnail($file['relative']) . "'" ); ?> 
    6563 
    6664                <table width="100" cellpadding="0" cellspacing="0"><tr><td class="block"> 
    6765 
    68                 <a href="javascript:;" onclick="selectImage('<? echo $file['relative'];?>', '<? echo $entry; ?>', <? echo $file['image'][0];?>, <? echo $file['image'][1]; ?>);"title="<? echo $entry; ?> - <? echo Files::formatSize($file['stat']['size']); ?>"><img src="<? print $manager->getThumbnail($file['relative']); ?>" alt="<? echo $entry; ?> - <? echo Files::formatSize($file['stat']['size']); ?>"/></a> 
     66                <a href="javascript:;" onclick="selectImage('<?php echo $file['relative'];?>', '<?php echo $entry; ?>', <?php echo $file['image'][0];?>, <?php echo $file['image'][1]; ?>);"title="<?php echo $entry; ?> - <?php echo Files::formatSize($file['stat']['size']); ?>"><img src="<?php print $manager->getThumbnail($file['relative']); ?>" alt="<?php echo $entry; ?> - <?php echo Files::formatSize($file['stat']['size']); ?>"/></a> 
    6967                </td></tr><tr><td class="edit"> 
    70                         <a href="<? print $IMConfig['backend_url']; ?>__function=images&dir=<? echo $relative; ?>&amp;delf=<? echo rawurlencode($file['relative']);?>" title="Trash" onclick="return confirmDeleteFile('<? echo $entry; ?>');"><img src="<? print $IMConfig['base_url'];?>img/edit_trash.gif" height="15" width="15" alt="Trash"/></a><a href="javascript:;" title="Edit" onclick="editImage('<? echo rawurlencode($file['relative']);?>');"><img src="<? print $IMConfig['base_url'];?>img/edit_pencil.gif" height="15" width="15" alt="Edit"/></a> 
    71                 <? if($file['image']){ echo $file['image'][0].'x'.$file['image'][1]; } else echo $entry;?> 
     68                        <a href="<?php echo $IMConfig['backend_url']; ?>__function=images&dir=<?php echo $relative; ?>&amp;delf=<?php echo rawurlencode($file['relative']);?>" title="Trash" onclick="return confirmDeleteFile('<?php echo $entry; ?>');"><img src="<?php print $IMConfig['base_url'];?>img/edit_trash.gif" height="15" width="15" alt="Trash"/></a><a href="javascript:;" title="Edit" onclick="editImage('<?php echo rawurlencode($file['relative']);?>');"><img src="<?php print $IMConfig['base_url'];?>img/edit_pencil.gif" height="15" width="15" alt="Edit"/></a> 
     69                <?php if($file['image']){ echo $file['image'][0].'x'.$file['image'][1]; } else echo $entry;?> 
    7270                </td></tr></table></td>  
    73           <?  
     71          <?php  
    7472        }//foreach 
    7573}//function drawFiles