From 3c10b3da9feaf945c68f4c698bf0e341b0e8e557 Mon Sep 17 00:00:00 2001 From: patdenice Date: Wed, 17 Mar 2010 15:27:14 +0000 Subject: [PATCH] [LocalFiles Editor] Update editarea to 0.8.2. Remove CSS tab. Fix jQuery path. git-svn-id: http://piwigo.org/svn/trunk@5160 68402e56-0260-453c-a942-63ccdbb3a9ee --- plugins/LocalFilesEditor/admin.php | 32 - plugins/LocalFilesEditor/admin.tpl | 1 - .../editarea/autocompletion.js | 491 +++++++ .../LocalFilesEditor/editarea/edit_area.css | 530 ++++++++ .../LocalFilesEditor/editarea/edit_area.js | 527 ++++++++ .../editarea/edit_area_compressor.php | 428 ++++++ .../editarea/edit_area_full.gz | Bin 0 -> 29377 bytes .../editarea/edit_area_full.js | 62 +- .../editarea/edit_area_functions.js | 1202 +++++++++++++++++ .../editarea/edit_area_loader.js | 1081 +++++++++++++++ .../editarea/elements_functions.js | 336 +++++ .../LocalFilesEditor/editarea/highlight.js | 407 ++++++ .../editarea/images/word_wrap.gif | Bin 0 -> 951 bytes plugins/LocalFilesEditor/editarea/keyboard.js | 145 ++ plugins/LocalFilesEditor/editarea/langs/bg.js | 54 + plugins/LocalFilesEditor/editarea/langs/cs.js | 19 +- plugins/LocalFilesEditor/editarea/langs/de.js | 19 +- plugins/LocalFilesEditor/editarea/langs/dk.js | 19 +- plugins/LocalFilesEditor/editarea/langs/en.js | 19 +- plugins/LocalFilesEditor/editarea/langs/eo.js | 48 + plugins/LocalFilesEditor/editarea/langs/es.js | 16 +- plugins/LocalFilesEditor/editarea/langs/fi.js | 48 + plugins/LocalFilesEditor/editarea/langs/fr.js | 19 +- plugins/LocalFilesEditor/editarea/langs/hr.js | 19 +- plugins/LocalFilesEditor/editarea/langs/it.js | 19 +- plugins/LocalFilesEditor/editarea/langs/ja.js | 19 +- plugins/LocalFilesEditor/editarea/langs/mk.js | 19 +- plugins/LocalFilesEditor/editarea/langs/nl.js | 19 +- plugins/LocalFilesEditor/editarea/langs/pl.js | 19 +- plugins/LocalFilesEditor/editarea/langs/pt.js | 19 +- plugins/LocalFilesEditor/editarea/langs/ru.js | 19 +- plugins/LocalFilesEditor/editarea/langs/sk.js | 19 +- plugins/LocalFilesEditor/editarea/langs/zh.js | 48 + .../editarea/license_apache.txt | 7 + .../LocalFilesEditor/editarea/license_bsd.txt | 10 + .../editarea/license_lgpl.txt | 458 +++++++ .../LocalFilesEditor/editarea/manage_area.js | 623 +++++++++ .../editarea/plugins/charmap/charmap.js | 90 ++ .../editarea/plugins/charmap/css/charmap.css | 64 + .../plugins/charmap/images/charmap.gif | Bin 0 -> 245 bytes .../editarea/plugins/charmap/jscripts/map.js | 373 +++++ .../editarea/plugins/charmap/langs/bg.js | 12 + .../editarea/plugins/charmap/langs/cs.js | 6 + .../editarea/plugins/charmap/langs/de.js | 6 + .../editarea/plugins/charmap/langs/dk.js | 6 + .../editarea/plugins/charmap/langs/en.js | 6 + .../editarea/plugins/charmap/langs/eo.js | 6 + .../editarea/plugins/charmap/langs/es.js | 6 + .../editarea/plugins/charmap/langs/fr.js | 6 + .../editarea/plugins/charmap/langs/hr.js | 6 + .../editarea/plugins/charmap/langs/it.js | 6 + .../editarea/plugins/charmap/langs/ja.js | 6 + .../editarea/plugins/charmap/langs/mk.js | 6 + .../editarea/plugins/charmap/langs/nl.js | 6 + .../editarea/plugins/charmap/langs/pl.js | 6 + .../editarea/plugins/charmap/langs/pt.js | 6 + .../editarea/plugins/charmap/langs/ru.js | 6 + .../editarea/plugins/charmap/langs/sk.js | 6 + .../editarea/plugins/charmap/langs/zh.js | 6 + .../editarea/plugins/charmap/popup.html | 24 + .../editarea/plugins/test/css/test.css | 3 + .../editarea/plugins/test/images/Thumbs.db | Bin 0 -> 3584 bytes .../editarea/plugins/test/images/test.gif | Bin 0 -> 87 bytes .../editarea/plugins/test/langs/bg.js | 10 + .../editarea/plugins/test/langs/cs.js | 4 + .../editarea/plugins/test/langs/de.js | 4 + .../editarea/plugins/test/langs/dk.js | 4 + .../editarea/plugins/test/langs/en.js | 4 + .../editarea/plugins/test/langs/eo.js | 4 + .../editarea/plugins/test/langs/es.js | 4 + .../editarea/plugins/test/langs/fr.js | 4 + .../editarea/plugins/test/langs/hr.js | 4 + .../editarea/plugins/test/langs/it.js | 4 + .../editarea/plugins/test/langs/ja.js | 4 + .../editarea/plugins/test/langs/mk.js | 4 + .../editarea/plugins/test/langs/nl.js | 4 + .../editarea/plugins/test/langs/pl.js | 4 + .../editarea/plugins/test/langs/pt.js | 4 + .../editarea/plugins/test/langs/ru.js | 4 + .../editarea/plugins/test/langs/sk.js | 4 + .../editarea/plugins/test/langs/zh.js | 4 + .../editarea/plugins/test/test.js | 110 ++ .../editarea/plugins/test/test2.js | 1 + .../LocalFilesEditor/editarea/reg_syntax.js | 166 +++ .../editarea/reg_syntax/basic.js | 70 + .../editarea/reg_syntax/brainfuck.js | 45 + .../LocalFilesEditor/editarea/reg_syntax/c.js | 63 + .../editarea/reg_syntax/coldfusion.js | 120 ++ .../editarea/reg_syntax/cpp.js | 66 + .../editarea/reg_syntax/css.js | 3 +- .../editarea/reg_syntax/html.js | 8 +- .../editarea/reg_syntax/java.js | 57 + .../editarea/reg_syntax/js.js | 94 ++ .../editarea/reg_syntax/pas.js | 83 ++ .../editarea/reg_syntax/perl.js | 88 ++ .../editarea/reg_syntax/php.js | 3 +- .../editarea/reg_syntax/python.js | 145 ++ .../editarea/reg_syntax/robotstxt.js | 25 + .../editarea/reg_syntax/ruby.js | 68 + .../editarea/reg_syntax/sql.js | 56 + .../editarea/reg_syntax/tsql.js | 88 ++ .../editarea/reg_syntax/vb.js | 53 + .../editarea/reg_syntax/xml.js | 57 + plugins/LocalFilesEditor/editarea/regexp.js | 139 ++ .../LocalFilesEditor/editarea/resize_area.js | 73 + .../editarea/search_replace.js | 174 +++ .../LocalFilesEditor/editarea/template.html | 100 ++ plugins/LocalFilesEditor/main.inc.php | 2 +- 108 files changed, 9184 insertions(+), 339 deletions(-) create mode 100644 plugins/LocalFilesEditor/editarea/autocompletion.js create mode 100644 plugins/LocalFilesEditor/editarea/edit_area.css create mode 100644 plugins/LocalFilesEditor/editarea/edit_area.js create mode 100644 plugins/LocalFilesEditor/editarea/edit_area_compressor.php create mode 100644 plugins/LocalFilesEditor/editarea/edit_area_full.gz create mode 100644 plugins/LocalFilesEditor/editarea/edit_area_functions.js create mode 100644 plugins/LocalFilesEditor/editarea/edit_area_loader.js create mode 100644 plugins/LocalFilesEditor/editarea/elements_functions.js create mode 100644 plugins/LocalFilesEditor/editarea/highlight.js create mode 100644 plugins/LocalFilesEditor/editarea/images/word_wrap.gif create mode 100644 plugins/LocalFilesEditor/editarea/keyboard.js create mode 100644 plugins/LocalFilesEditor/editarea/langs/bg.js create mode 100644 plugins/LocalFilesEditor/editarea/langs/eo.js create mode 100644 plugins/LocalFilesEditor/editarea/langs/fi.js create mode 100644 plugins/LocalFilesEditor/editarea/langs/zh.js create mode 100644 plugins/LocalFilesEditor/editarea/license_apache.txt create mode 100644 plugins/LocalFilesEditor/editarea/license_bsd.txt create mode 100644 plugins/LocalFilesEditor/editarea/license_lgpl.txt create mode 100644 plugins/LocalFilesEditor/editarea/manage_area.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/charmap.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/css/charmap.css create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/images/charmap.gif create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/jscripts/map.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/langs/bg.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/langs/cs.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/langs/de.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/langs/dk.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/langs/en.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/langs/eo.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/langs/es.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/langs/fr.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/langs/hr.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/langs/it.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/langs/ja.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/langs/mk.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/langs/nl.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/langs/pl.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/langs/pt.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/langs/ru.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/langs/sk.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/langs/zh.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/charmap/popup.html create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/css/test.css create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/images/Thumbs.db create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/images/test.gif create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/langs/bg.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/langs/cs.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/langs/de.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/langs/dk.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/langs/en.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/langs/eo.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/langs/es.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/langs/fr.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/langs/hr.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/langs/it.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/langs/ja.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/langs/mk.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/langs/nl.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/langs/pl.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/langs/pt.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/langs/ru.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/langs/sk.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/langs/zh.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/test.js create mode 100644 plugins/LocalFilesEditor/editarea/plugins/test/test2.js create mode 100644 plugins/LocalFilesEditor/editarea/reg_syntax.js create mode 100644 plugins/LocalFilesEditor/editarea/reg_syntax/basic.js create mode 100644 plugins/LocalFilesEditor/editarea/reg_syntax/brainfuck.js create mode 100644 plugins/LocalFilesEditor/editarea/reg_syntax/c.js create mode 100644 plugins/LocalFilesEditor/editarea/reg_syntax/coldfusion.js create mode 100644 plugins/LocalFilesEditor/editarea/reg_syntax/cpp.js create mode 100644 plugins/LocalFilesEditor/editarea/reg_syntax/java.js create mode 100644 plugins/LocalFilesEditor/editarea/reg_syntax/js.js create mode 100644 plugins/LocalFilesEditor/editarea/reg_syntax/pas.js create mode 100644 plugins/LocalFilesEditor/editarea/reg_syntax/perl.js create mode 100644 plugins/LocalFilesEditor/editarea/reg_syntax/python.js create mode 100644 plugins/LocalFilesEditor/editarea/reg_syntax/robotstxt.js create mode 100644 plugins/LocalFilesEditor/editarea/reg_syntax/ruby.js create mode 100644 plugins/LocalFilesEditor/editarea/reg_syntax/sql.js create mode 100644 plugins/LocalFilesEditor/editarea/reg_syntax/tsql.js create mode 100644 plugins/LocalFilesEditor/editarea/reg_syntax/vb.js create mode 100644 plugins/LocalFilesEditor/editarea/reg_syntax/xml.js create mode 100644 plugins/LocalFilesEditor/editarea/regexp.js create mode 100644 plugins/LocalFilesEditor/editarea/resize_area.js create mode 100644 plugins/LocalFilesEditor/editarea/search_replace.js create mode 100644 plugins/LocalFilesEditor/editarea/template.html diff --git a/plugins/LocalFilesEditor/admin.php b/plugins/LocalFilesEditor/admin.php index 088d6f84c..149bae919 100644 --- a/plugins/LocalFilesEditor/admin.php +++ b/plugins/LocalFilesEditor/admin.php @@ -39,9 +39,6 @@ $tabsheet = new tabsheet(); $tabsheet->add('localconf', l10n('locfiledit_onglet_localconf'), $my_base_url.'&tab=localconf'); -$tabsheet->add('css', - l10n('locfiledit_onglet_css'), - $my_base_url.'&tab=css'); $tabsheet->add('tpl', l10n('locfiledit_onglet_tpl'), $my_base_url.'&tab=tpl'); @@ -141,35 +138,6 @@ switch ($page['tab']) $editarea_options['syntax'] = 'php'; break; - case 'css': - $template_dir = PHPWG_ROOT_PATH . 'template'; - $selected = 0; - $options[] = l10n('locfiledit_choose_file'); - $options[] = '----------------------'; - $value = PHPWG_ROOT_PATH . "template-common/local-layout.css"; - $options[$value] = 'template-common / local-layout.css'; - if ($edited_file == $value) $selected = $value; - - foreach (get_dirs($template_dir) as $pwg_template) - { - $options[] = '----------------------'; - $value = $template_dir . '/' . $pwg_template . '/local-layout.css'; - $options[$value] = $pwg_template . ' / local-layout.css'; - if ($edited_file == $value) $selected = $value; - $options[] = '----------------------'; - foreach (get_dirs($template_dir.'/'.$pwg_template.'/theme') as $theme) - { - $value = $template_dir.'/'.$pwg_template.'/theme/'.$theme.'/theme.css'; - $options[$value] = $pwg_template . ' / ' . $theme . ' / theme.css'; - if ($edited_file == $value) $selected = $value; - } - } - $template->assign('css_lang_tpl', array( - 'OPTIONS' => $options, - 'SELECTED' => $selected)); - $editarea_options['syntax'] = 'css'; - break; - case 'tpl': // New file form creation if ($newfile_page and !is_adviser()) diff --git a/plugins/LocalFilesEditor/admin.tpl b/plugins/LocalFilesEditor/admin.tpl index 83b629f8f..b96890fbd 100644 --- a/plugins/LocalFilesEditor/admin.tpl +++ b/plugins/LocalFilesEditor/admin.tpl @@ -1,5 +1,4 @@ {html_head}{/html_head} -{known_script id="jquery" src=$ROOT_URL|@cat:"template-common/lib/jquery.packed.js"} {known_script id="editarea" src=$LOCALEDIT_PATH|@cat:"editarea/edit_area_full.js"} \";\n", $sub_scripts); + + + // add the script and use a last compression + if( $this->param['compress'] ) + { + $last_comp = array( 'ร' => 'this', + 'ร‚' => 'textarea', + 'รƒ' => 'function', + 'ร„' => 'prototype', + 'ร…' => 'settings', + 'ร†' => 'length', + 'ร‡' => 'style', + 'รˆ' => 'parent', + 'ร‰' => 'last_selection', + 'รŠ' => 'value', + 'ร‹' => 'true', + 'รŒ' => 'false' + /*, + 'รŽ' => '"', + 'ร' => "\n", + 'ร€' => "\r"*/); + } + else + { + $last_comp = array(); + } + + $js_replace= ''; + foreach( $last_comp as $key => $val ) + $js_replace .= ".replace(/". $key ."/g,'". str_replace( array("\n", "\r"), array('\n','\r'), $val ) ."')"; + + $this->datas.= sprintf("editAreaLoader.iframe_script= \"\"%s;\n", + str_replace( array_values($last_comp), array_keys($last_comp), $sub_scripts ), + $js_replace); + + if($this->load_all_plugins) + $this->datas.="editAreaLoader.all_plugins_loaded=true;\n"; + + + // load the template + $this->datas.= sprintf("editAreaLoader.template= \"%s\";\n", $this->get_html_content("template.html")); + // load the css + $this->datas.= sprintf("editAreaLoader.iframe_css= \"\";\n", $this->get_css_content("edit_area.css")); + + // $this->datas= "function editArea(){};editArea.prototype.loader= function(){alert('bouhbouh');} var a= new editArea();a.loader();"; + + } + + function send_datas() + { + if($this->param['debug']){ + $header=sprintf("/* USE PHP COMPRESSION\n"); + $header.=sprintf("javascript size: based files: %s => PHP COMPRESSION => %s ", $this->file_loaded_size, strlen($this->datas)); + if($this->use_gzip){ + $gzip_datas= gzencode($this->datas, 9, FORCE_GZIP); + $header.=sprintf("=> GZIP COMPRESSION => %s", strlen($gzip_datas)); + $ratio = round(100 - strlen($gzip_datas) / $this->file_loaded_size * 100.0); + }else{ + $ratio = round(100 - strlen($this->datas) / $this->file_loaded_size * 100.0); + } + $header.=sprintf(", reduced by %s%%\n", $ratio); + $header.=sprintf("compression time: %s\n", $this->get_microtime()-$this->start_time); + $header.=sprintf("%s\n", implode("\n", $this->infos)); + $header.=sprintf("*/\n"); + $this->datas= $header.$this->datas; + } + $mtime= time(); // ensure that the 2 disk files will have the same update time + // generate gzip file and cahce it if using disk cache + if($this->use_gzip){ + $this->gzip_datas= gzencode($this->datas, 9, FORCE_GZIP); + if($this->param['use_disk_cache']) + $this->file_put_contents($this->gzip_cache_file, $this->gzip_datas, $mtime); + } + + // generate full js file and cache it if using disk cache + if($this->param['use_disk_cache']) + $this->file_put_contents($this->full_cache_file, $this->datas, $mtime); + + // generate output + if($this->use_gzip) + echo $this->gzip_datas; + else + echo $this->datas; + +// die; + } + + + function get_content($end_uri) + { + $end_uri=preg_replace("/\.\./", "", $end_uri); // Remove any .. (security) + $file= $this->path.$end_uri; + if(file_exists($file)){ + $this->infos[]=sprintf("'%s' loaded", $end_uri); + /*$fd = fopen($file, 'rb'); + $content = fread($fd, filesize($file)); + fclose($fd); + return $content;*/ + return $this->file_get_contents($file); + }else{ + $this->infos[]=sprintf("'%s' not loaded", $end_uri); + return ""; + } + } + + function get_javascript_content($end_uri) + { + $val=$this->get_content($end_uri); + + $this->compress_javascript($val); + $this->prepare_string_for_quotes($val); + return $val; + } + + function compress_javascript(&$code) + { + if($this->param['compress']) + { + // remove all comments + // (\"(?:[^\"\\]*(?:\\\\)*(?:\\\"?)?)*(?:\"|$))|(\'(?:[^\'\\]*(?:\\\\)*(?:\\'?)?)*(?:\'|$))|(?:\/\/(?:.|\r|\t)*?(\n|$))|(?:\/\*(?:.|\n|\r|\t)*?(?:\*\/|$)) + $code= preg_replace("/(\"(?:[^\"\\\\]*(?:\\\\\\\\)*(?:\\\\\"?)?)*(?:\"|$))|(\'(?:[^\'\\\\]*(?:\\\\\\\\)*(?:\\\\\'?)?)*(?:\'|$))|(?:\/\/(?:.|\r|\t)*?(\n|$))|(?:\/\*(?:.|\n|\r|\t)*?(?:\*\/|$))/s", "$1$2$3", $code); + // remove line return, empty line and tabulation + $code= preg_replace('/(( |\t|\r)*\n( |\t)*)+/s', " ", $code); + // add line break before "else" otherwise navigators can't manage to parse the file + $code= preg_replace('/(\b(else)\b)/', "\n$1", $code); + // remove unnecessary spaces + $code= preg_replace('/( |\t|\r)*(;|\{|\}|=|==|\-|\+|,|\(|\)|\|\||&\&|\:)( |\t|\r)*/', "$2", $code); + } + } + + function get_css_content($end_uri){ + $code=$this->get_content($end_uri); + // remove comments + $code= preg_replace("/(?:\/\*(?:.|\n|\r|\t)*?(?:\*\/|$))/s", "", $code); + // remove spaces + $code= preg_replace('/(( |\t|\r)*\n( |\t)*)+/s', "", $code); + // remove spaces + $code= preg_replace('/( |\t|\r)?(\:|,|\{|\})( |\t|\r)+/', "$2", $code); + + $this->prepare_string_for_quotes($code); + return $code; + } + + function get_html_content($end_uri){ + $code=$this->get_content($end_uri); + //$code= preg_replace('/(\"(?:\\\"|[^\"])*(?:\"|$))|' . "(\'(?:\\\'|[^\'])*(?:\'|$))|(?:\/\/(?:.|\r|\t)*?(\n|$))|(?:\/\*(?:.|\n|\r|\t)*?(?:\*\/|$))/s", "$1$2$3", $code); + $code= preg_replace('/(( |\t|\r)*\n( |\t)*)+/s', " ", $code); + $this->prepare_string_for_quotes($code); + return $code; + } + + function prepare_string_for_quotes(&$str){ + // prepare the code to be putted into quotes + /*$pattern= array("/(\\\\)?\"/", '/\\\n/' , '/\\\r/' , "/(\r?\n)/"); + $replace= array('$1$1\\"', '\\\\\\n', '\\\\\\r' , '\\\n"$1+"');*/ + $pattern= array("/(\\\\)?\"/", '/\\\n/' , '/\\\r/' , "/(\r?\n)/"); + if($this->param['compress']) + $replace= array('$1$1\\"', '\\\\\\n', '\\\\\\r' , '\n'); + else + $replace= array('$1$1\\"', '\\\\\\n', '\\\\\\r' , "\\n\"\n+\""); + $str= preg_replace($pattern, $replace, $str); + } + + function replace_scripts($var, $param1, $param2) + { + $this->$var=stripslashes($param2); + return $param1."[];"; + } + + /* for php version that have not thoses functions */ + function file_get_contents($file) + { + $fd = fopen($file, 'rb'); + $content = fread($fd, filesize($file)); + fclose($fd); + $this->file_loaded_size+= strlen($content); + return $content; + } + + function file_put_contents($file, &$content, $mtime=-1) + { + if($mtime==-1) + $mtime=time(); + $fp = @fopen($file, "wb"); + if ($fp) { + fwrite($fp, $content); + fclose($fp); + touch($file, $mtime); + return true; + } + return false; + } + + function get_microtime() + { + list($usec, $sec) = explode(" ", microtime()); + return ((float)$usec + (float)$sec); + } + } +?> diff --git a/plugins/LocalFilesEditor/editarea/edit_area_full.gz b/plugins/LocalFilesEditor/editarea/edit_area_full.gz new file mode 100644 index 0000000000000000000000000000000000000000..29bcc50eb6986d64b9ec3d663bc953533cc5a615 GIT binary patch literal 29377 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 qWNr)Z`Jn&XUxIzf?#IuR?rs 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 M1MNl0yM)340KP9L^8f$< literal 0 HcmV?d00001 diff --git a/plugins/LocalFilesEditor/editarea/edit_area_full.js b/plugins/LocalFilesEditor/editarea/edit_area_full.js index b849266c4..267574c36 100644 --- a/plugins/LocalFilesEditor/editarea/edit_area_full.js +++ b/plugins/LocalFilesEditor/editarea/edit_area_full.js @@ -1,38 +1,38 @@ - function EAL(){this.version="0.7.2.3";date=new Date();this.start_time=date.getTime();this.win="loading";this.error=false;this.baseURL="";this.template="";this.lang=new Object();this.load_syntax=new Object();this.syntax=new Object();this.loadedFiles=new Array();this.waiting_loading=new Object();this.scripts_to_load=new Array();this.sub_scripts_to_load=new Array();this.resize=new Array();this.hidden=new Object();this.default_settings={debug:false ,smooth_selection:true ,font_size:"10" ,font_family:"monospace" ,start_highlight:false ,autocompletion:false ,toolbar:"search,go_to_line,fullscreen,|,undo,redo,|,select_font,|,change_smooth_selection,highlight,reset_highlight,|,help" ,begin_toolbar:"" ,end_toolbar:"" ,is_multi_files:false ,allow_resize:"both" ,show_line_colors:false ,min_width:400 ,min_height:125 ,replace_tab_by_spaces:false ,allow_toggle:true ,language:"en" ,syntax:"" ,syntax_selection_allow:"basic,brainfuck,c,coldfusion,cpp,css,html,js,pas,perl,php,python,ruby,robotstxt,sql,tsql,vb,xml" ,display:"onload" ,max_undo:30 ,browsers:"known" ,plugins:"" ,gecko_spellcheck:false ,fullscreen:false ,is_editable:true ,wrap_text:false ,load_callback:"" ,save_callback:"" ,change_callback:"" ,submit_callback:"" ,EA_init_callback:"" ,EA_delete_callback:"" ,EA_load_callback:"" ,EA_unload_callback:"" ,EA_toggle_on_callback:"" ,EA_toggle_off_callback:"" ,EA_file_switch_on_callback:"" ,EA_file_switch_off_callback:"" ,EA_file_close_callback:"" };this.advanced_buttons=[ ['new_document','newdocument.gif','new_document',false],['search','search.gif','show_search',false],['go_to_line','go_to_line.gif','go_to_line',false],['undo','undo.gif','undo',true],['redo','redo.gif','redo',true],['change_smooth_selection','smooth_selection.gif','change_smooth_selection_mode',true],['reset_highlight','reset_highlight.gif','resync_highlight',true],['highlight','highlight.gif','change_highlight',true],['help','help.gif','show_help',false],['save','save.gif','save',false],['load','load.gif','load',false],['fullscreen','fullscreen.gif','toggle_full_screen',false],['autocompletion','autocompletion.gif','toggle_autocompletion',true] ];ua=navigator.userAgent;this.nav=new Object();this.nav['isMacOS']=(ua.indexOf('Mac OS')!=-1);this.nav['isIE']=(navigator.appName=="Microsoft Internet Explorer");if(this.nav['isIE']){this.nav['isIE']=ua.replace(/^.*?MSIE ([0-9\.]*).*$/,"$1");if(this.nav['isIE']<6)this.has_error();}if(this.nav['isNS']=ua.indexOf('Netscape/')!=-1){this.nav['isNS']=ua.substr(ua.indexOf('Netscape/')+9);if(this.nav['isNS']<8||!this.nav['isIE'])this.has_error();}if(this.nav['isOpera']=(ua.indexOf('Opera')!=-1)){this.nav['isOpera']=ua.replace(/^.*?Opera.*?([0-9\.]+).*$/i,"$1");if(this.nav['isOpera']<9)this.has_error();this.nav['isIE']=false;}this.nav['isGecko']=(ua.indexOf('Gecko')!=-1);if(this.nav['isFirefox'] =(ua.indexOf('Firefox')!=-1))this.nav['isFirefox']=ua.replace(/^.*?Firefox.*?([0-9\.]+).*$/i,"$1");if(this.nav['isIceweasel'] =(ua.indexOf('Iceweasel')!=-1))this.nav['isFirefox']=this.nav['isIceweasel']=ua.replace(/^.*?Iceweasel.*?([0-9\.]+).*$/i,"$1");if(this.nav['GranParadiso'] =(ua.indexOf('GranParadiso')!=-1))this.nav['isFirefox']=this.nav['isGranParadiso']=ua.replace(/^.*?GranParadiso.*?([0-9\.]+).*$/i,"$1");if(this.nav['BonEcho'] =(ua.indexOf('BonEcho')!=-1))this.nav['isFirefox']=this.nav['isBonEcho']=ua.replace(/^.*?BonEcho.*?([0-9\.]+).*$/i,"$1");if(this.nav['isCamino'] =(ua.indexOf('Camino')!=-1))this.nav['isCamino']=ua.replace(/^.*?Camino.*?([0-9\.]+).*$/i,"$1");if(this.nav['isChrome'] =(ua.indexOf('Chrome')!=-1))this.nav['isChrome']=ua.replace(/^.*?Chrome.*?([0-9\.]+).*$/i,"$1");if(this.nav['isSafari'] =(ua.indexOf('Safari')!=-1))this.nav['isSafari']=ua.replace(/^.*?Version\/([0-9]+\.[0-9]+).*$/i,"$1");if(this.nav['isIE']>=6||this.nav['isOpera']>=9||this.nav['isFirefox']||this.nav['isChrome']||this.nav['isCamino']||this.nav['isSafari']>=3)this.nav['isValidBrowser']=true; -else this.nav['isValidBrowser']=false;this.set_base_url();for(var i=0;i0)settings["toolbar"]=settings["begin_toolbar"] +","+settings["toolbar"];if(settings["end_toolbar"].length>0)settings["toolbar"]=settings["toolbar"] +","+settings["end_toolbar"];settings["tab_toolbar"]=settings["toolbar"].replace(/ /g,"").split(",");settings["plugins"]=settings["plugins"].replace(/ /g,"").split(",");for(var i=0;i0){settings["syntax"]=settings["syntax"].toLowerCase();this.load_script(this.baseURL+"reg_syntax/"+settings["syntax"]+".js");}eAs[settings["id"]]={"settings":settings};eAs[settings["id"]]["displayed"]=false;eAs[settings["id"]]["hidden"]=false;eAL.start(settings["id"]);},delete_instance:function(id){eAL.execCommand(id,"EA_delete");if(window.frames["frame_"+id]&&window.frames["frame_"+id].editArea){if(eAs[id]["displayed"])eAL.toggle(id,"off");window.frames["frame_"+id].editArea.execCommand("EA_unload");}var span=document.getElementById("EditAreaArroundInfos_"+id);if(span)span.parentNode.removeChild(span);var iframe=document.getElementById("frame_"+id);if(iframe){iframe.parentNode.removeChild(iframe);try{delete window.frames["frame_"+id];}catch (e){}}delete eAs[id];},start:function(id){if(this.win!="loaded"){setTimeout("eAL.start('"+id+"');",50);return;}for(var i in eAL.waiting_loading){if(eAL.waiting_loading[i]!="loaded"&&typeof(eAL.waiting_loading[i])!="function"){setTimeout("eAL.start('"+id+"');",50);return;}}if(!eAL.lang[eAs[id]["settings"]["language"]]||(eAs[id]["settings"]["syntax"].length>0&&!eAL.load_syntax[eAs[id]["settings"]["syntax"]])){setTimeout("eAL.start('"+id+"');",50);return;}if(eAs[id]["settings"]["syntax"].length>0)eAL.init_syntax_regexp();if(!document.getElementById("EditAreaArroundInfos_"+id)&&(eAs[id]["settings"]["debug"]||eAs[id]["settings"]["allow_toggle"])){var span=document.createElement("span");span.id="EditAreaArroundInfos_"+id;var html="";if(eAs[id]["settings"]["allow_toggle"]){checked=(eAs[id]["settings"]["display"]=="onload")?"checked":"";html+="
";html+="";html+="
";}if(eAs[id]["settings"]["debug"])html+="
";html=eAL.translate(html,eAs[id]["settings"]["language"]);span.innerHTML=html;var father=document.getElementById(id).parentNode;var next=document.getElementById(id).nextSibling;if(next==null)father.appendChild(span); -else father.insertBefore(span,next);}if(!eAs[id]["initialized"]){this.execCommand(id,"EA_init");if(eAs[id]["settings"]["display"]=="later"){eAs[id]["initialized"]=true;return;}}if(this.nav['isIE']){eAL.init_ie_textarea(id);}var html_toolbar_content="";area=eAs[id];for(var i=0;i';}for(var i=0;i';this.iframe_script+='';}if(!this.iframe_css){this.iframe_css="";}var template=this.template.replace(/\[__BASEURL__\]/g,this.baseURL);template=template.replace("[__TOOLBAR__]",html_toolbar_content);template=this.translate(template,area["settings"]["language"],"template");template=template.replace("[__CSSRULES__]",this.iframe_css);template=template.replace("[__JSCODE__]",this.iframe_script);template=template.replace("[__EA_VERSION__]",this.version);area.textarea=document.getElementById(area["settings"]["id"]);eAs[area["settings"]["id"]]["textarea"]=area.textarea;if(typeof(window.frames["frame_"+area["settings"]["id"]])!='undefined')delete window.frames["frame_"+area["settings"]["id"]];var father=area.textarea.parentNode;var content=document.createElement("iframe");content.name="frame_"+area["settings"]["id"];content.id="frame_"+area["settings"]["id"];content.style.borderWidth="0px";setAttribute(content,"frameBorder","0");content.style.overflow="hidden";content.style.display="none";var next=area.textarea.nextSibling;if(next==null)father.appendChild(content); -else father.insertBefore(content,next);var frame=window.frames["frame_"+area["settings"]["id"]];frame.document.open();frame.eAs=eAs;frame.area_id=area["settings"]["id"];frame.document.area_id=area["settings"]["id"];frame.document.write(template);frame.document.close();},toggle:function(id,toggle_to){if(!toggle_to)toggle_to=(eAs[id]["displayed"]==true)?"off":"on";if(eAs[id]["displayed"]==true &&toggle_to=="off"){this.toggle_off(id);} -else if(eAs[id]["displayed"]==false &&toggle_to=="on"){this.toggle_on(id);}return false;},toggle_off:function(id){if(window.frames["frame_"+id]){var frame=window.frames["frame_"+id];if(frame.editArea.fullscreen['isFull'])frame.editArea.toggle_full_screen(false);eAs[id]["displayed"]=false;eAs[id]["textarea"].wrap="off";setAttribute(eAs[id]["textarea"],"wrap","off");var parNod=eAs[id]["textarea"].parentNode;var nxtSib=eAs[id]["textarea"].nextSibling;parNod.removeChild(eAs[id]["textarea"]);parNod.insertBefore(eAs[id]["textarea"],nxtSib);eAs[id]["textarea"].value=frame.editArea.textarea.value;var selStart=frame.editArea.last_selection["selectionStart"];var selEnd=frame.editArea.last_selection["selectionEnd"];var scrollTop=frame.document.getElementById("result").scrollTop;var scrollLeft=frame.document.getElementById("result").scrollLeft;document.getElementById("frame_"+id).style.display='none';eAs[id]["textarea"].style.display="inline";eAs[id]["textarea"].focus();if(this.nav['isIE']){eAs[id]["textarea"].selectionStart=selStart;eAs[id]["textarea"].selectionEnd=selEnd;eAs[id]["textarea"].focused=true;set_IE_selection(eAs[id]["textarea"]);} -else{if(this.nav['isOpera']){eAs[id]["textarea"].setSelectionRange(0,0);}try{eAs[id]["textarea"].setSelectionRange(selStart,selEnd);}catch(e){};}eAs[id]["textarea"].scrollTop=scrollTop;eAs[id]["textarea"].scrollLeft=scrollLeft;frame.editArea.execCommand("toggle_off");}},toggle_on:function(id){if(window.frames["frame_"+id]){var frame=window.frames["frame_"+id];area=window.frames["frame_"+id].editArea;area.textarea.value=eAs[id]["textarea"].value;var selStart=0;var selEnd=0;var scrollTop=0;var scrollLeft=0;if(eAs[id]["textarea"].use_last==true){var selStart=eAs[id]["textarea"].last_selectionStart;var selEnd=eAs[id]["textarea"].last_selectionEnd;var scrollTop=eAs[id]["textarea"].last_scrollTop;var scrollLeft=eAs[id]["textarea"].last_scrollLeft;eAs[id]["textarea"].use_last=false;} -else{try{var selStart=eAs[id]["textarea"].selectionStart;var selEnd=eAs[id]["textarea"].selectionEnd;var scrollTop=eAs[id]["textarea"].scrollTop;var scrollLeft=eAs[id]["textarea"].scrollLeft;}catch(ex){}}this.set_editarea_size_from_textarea(id,document.getElementById("frame_"+id));eAs[id]["textarea"].style.display="none";document.getElementById("frame_"+id).style.display="inline";area.execCommand("focus");eAs[id]["displayed"]=true;area.execCommand("update_size");window.frames["frame_"+id].document.getElementById("result").scrollTop=scrollTop;window.frames["frame_"+id].document.getElementById("result").scrollLeft=scrollLeft;area.area_select(selStart,selEnd-selStart);area.execCommand("toggle_on");} -else{var elem=document.getElementById(id);elem.last_selectionStart=elem.selectionStart;elem.last_selectionEnd=elem.selectionEnd;elem.last_scrollTop=elem.scrollTop;elem.last_scrollLeft=elem.scrollLeft;elem.use_last=true;eAL.start(id);}},set_editarea_size_from_textarea:function(id,frame){var elem=document.getElementById(id);var width=Math.max(eAs[id]["settings"]["min_width"],elem.offsetWidth)+"px";var height=Math.max(eAs[id]["settings"]["min_height"],elem.offsetHeight)+"px";if(elem.style.width.indexOf("%")!=-1)width=elem.style.width;if(elem.style.height.indexOf("%")!=-1)height=elem.style.height;frame.style.width=width;frame.style.height=height;},set_base_url:function(){if (!this.baseURL){var elements=document.getElementsByTagName('script');for (var i=0;i';html+='';return html;},get_control_html:function(button_name,lang){for (var i=0;i";case "|":case "separator":return '';case "select_font":html="";return html;case "syntax_selection":var html="";return html;}return "["+button_name+"]";},get_template:function(){if(this.template==""){var xhr_object=null;if(window.XMLHttpRequest)xhr_object=new XMLHttpRequest(); + function EAL(){var t=this;t.version="0.8.2";date=new Date();t.start_time=date.getTime();t.win="loading";t.error=false;t.baseURL="";t.template="";t.lang={};t.load_syntax={};t.syntax={};t.loadedFiles=[];t.waiting_loading={};t.scripts_to_load=[];t.sub_scripts_to_load=[];t.syntax_display_name={'basic':'Basic','brainfuck':'Brainfuck','c':'C','coldfusion':'Coldfusion','cpp':'CPP','css':'CSS','html':'HTML','java':'Java','js':'Javascript','pas':'Pascal','perl':'Perl','php':'Php','python':'Python','robotstxt':'Robots txt','ruby':'Ruby','sql':'SQL','tsql':'T-SQL','vb':'Visual Basic','xml':'XML'};t.resize=[];t.hidden={};t.default_settings={debug:false,smooth_selection:true,font_size:"10",font_family:"monospace",start_highlight:false,toolbar:"search,go_to_line,fullscreen,|,undo,redo,|,select_font,|,change_smooth_selection,highlight,reset_highlight,word_wrap,|,help",begin_toolbar:"",end_toolbar:"",is_multi_files:false,allow_resize:"both",show_line_colors:false,min_width:400,min_height:125,replace_tab_by_spaces:false,allow_toggle:true,language:"en",syntax:"",syntax_selection_allow:"basic,brainfuck,c,coldfusion,cpp,css,html,java,js,pas,perl,php,python,ruby,robotstxt,sql,tsql,vb,xml",display:"onload",max_undo:30,browsers:"known",plugins:"",gecko_spellcheck:false,fullscreen:false,is_editable:true,cursor_position:"begin",word_wrap:false,autocompletion:false,load_callback:"",save_callback:"",change_callback:"",submit_callback:"",EA_init_callback:"",EA_delete_callback:"",EA_load_callback:"",EA_unload_callback:"",EA_toggle_on_callback:"",EA_toggle_off_callback:"",EA_file_switch_on_callback:"",EA_file_switch_off_callback:"",EA_file_close_callback:""};t.advanced_buttons=[ ['new_document','newdocument.gif','new_document',false],['search','search.gif','show_search',false],['go_to_line','go_to_line.gif','go_to_line',false],['undo','undo.gif','undo',true],['redo','redo.gif','redo',true],['change_smooth_selection','smooth_selection.gif','change_smooth_selection_mode',true],['reset_highlight','reset_highlight.gif','resync_highlight',true],['highlight','highlight.gif','change_highlight',true],['help','help.gif','show_help',false],['save','save.gif','save',false],['load','load.gif','load',false],['fullscreen','fullscreen.gif','toggle_full_screen',false],['word_wrap','word_wrap.gif','toggle_word_wrap',true],['autocompletion','autocompletion.gif','toggle_autocompletion',true] ];t.set_browser_infos(t);if(t.isIE>=6||t.isGecko||(t.isWebKit&&!t.isSafari<3)||t.isOpera>=9||t.isCamino)t.isValidBrowser=true; +else t.isValidBrowser=false;t.set_base_url();for(var i=0;i0)s["toolbar"]=s["begin_toolbar"]+","+s["toolbar"];if(s["end_toolbar"].length>0)s["toolbar"]=s["toolbar"]+","+s["end_toolbar"];s["tab_toolbar"]=s["toolbar"].replace(/ /g,"").split(",");s["plugins"]=s["plugins"].replace(/ /g,"").split(",");for(i=0;i0){s["syntax"]=s["syntax"].toLowerCase();t.load_script(t.baseURL+"reg_syntax/"+s["syntax"]+".js");}eAs[s["id"]]={"settings":s};eAs[s["id"]]["displayed"]=false;eAs[s["id"]]["hidden"]=false;t.start(s["id"]);},delete_instance:function(id){var d=document,fs=window.frames,span,iframe;eAL.execCommand(id,"EA_delete");if(fs["frame_"+id]&&fs["frame_"+id].editArea){if(eAs[id]["displayed"])eAL.toggle(id,"off");fs["frame_"+id].editArea.execCommand("EA_unload");}span=d.getElementById("EditAreaArroundInfos_"+id);if(span)span.parentNode.removeChild(span);iframe=d.getElementById("frame_"+id);if(iframe){iframe.parentNode.removeChild(iframe);try{delete fs["frame_"+id];}catch(e){}}delete eAs[id];},start:function(id){var t=this,d=document,f,span,father,next,html='',html_toolbar_content='',template,content,i;if(t.win!="loaded"){setTimeout("eAL.start('"+id+"');",50);return;}for(i in t.waiting_loading){if(t.waiting_loading[i]!="loaded"&&typeof(t.waiting_loading[i])!="function"){setTimeout("eAL.start('"+id+"');",50);return;}}if(!t.lang[eAs[id]["settings"]["language"]]||(eAs[id]["settings"]["syntax"].length>0&&!t.load_syntax[eAs[id]["settings"]["syntax"]])){setTimeout("eAL.start('"+id+"');",50);return;}if(eAs[id]["settings"]["syntax"].length>0)t.init_syntax_regexp();if(!d.getElementById("EditAreaArroundInfos_"+id)&&(eAs[id]["settings"]["debug"]||eAs[id]["settings"]["allow_toggle"])){span=d.createElement("span");span.id="EditAreaArroundInfos_"+id;if(eAs[id]["settings"]["allow_toggle"]){checked=(eAs[id]["settings"]["display"]=="onload")?"checked='checked'":"";html+="
";html+="";html+="
";}if(eAs[id]["settings"]["debug"])html+="
";html=t.translate(html,eAs[id]["settings"]["language"]);span.innerHTML=html;father=d.getElementById(id).parentNode;next=d.getElementById(id).nextSibling;if(next==null)father.appendChild(span); +else father.insertBefore(span,next);}if(!eAs[id]["initialized"]){t.execCommand(id,"EA_init");if(eAs[id]["settings"]["display"]=="later"){eAs[id]["initialized"]=true;return;}}if(t.isIE){t.init_ie_textarea(id);}var area=eAs[id];for(i=0;i';}for(i=0;i';t.iframe_script+='';}if(!t.iframe_css){t.iframe_css="";}template=t.template.replace(/\[__BASEURL__\]/g,t.baseURL);template=template.replace("[__TOOLBAR__]",html_toolbar_content);template=t.translate(template,area["settings"]["language"],"template");template=template.replace("[__CSSRULES__]",t.iframe_css);template=template.replace("[__JSCODE__]",t.iframe_script);template=template.replace("[__EA_VERSION__]",t.version);area.textarea=d.getElementById(area["settings"]["id"]);eAs[area["settings"]["id"]]["textarea"]=area.textarea;if(typeof(window.frames["frame_"+area["settings"]["id"]])!='undefined')delete window.frames["frame_"+area["settings"]["id"]];father=area.textarea.parentNode;content=d.createElement("iframe");content.name="frame_"+area["settings"]["id"];content.id="frame_"+area["settings"]["id"];content.style.borderWidth="0px";setAttribute(content,"frameBorder","0");content.style.overflow="hidden";content.style.display="none";next=area.textarea.nextSibling;if(next==null)father.appendChild(content); +else father.insertBefore(content,next);f=window.frames["frame_"+area["settings"]["id"]];f.document.open();f.eAs=eAs;f.area_id=area["settings"]["id"];f.document.area_id=area["settings"]["id"];f.document.write(template);f.document.close();},toggle:function(id,toggle_to){if(!toggle_to)toggle_to=(eAs[id]["displayed"]==true)?"off":"on";if(eAs[id]["displayed"]==true&&toggle_to=="off"){this.toggle_off(id);} +else if(eAs[id]["displayed"]==false&&toggle_to=="on"){this.toggle_on(id);}return false;},toggle_off:function(id){var fs=window.frames,f,t,parNod,nxtSib,selStart,selEnd,scrollTop,scrollLeft;if(fs["frame_"+id]){f=fs["frame_"+id];t=eAs[id]["textarea"];if(f.editArea.fullscreen['isFull'])f.editArea.toggle_full_screen(false);eAs[id]["displayed"]=false;t.wrap="off";setAttribute(t,"wrap","off");parNod=t.parentNode;nxtSib=t.nextSibling;parNod.removeChild(t);parNod.insertBefore(t,nxtSib);t.value=f.editArea.textarea.value;selStart=f.editArea.last_selection["selectionStart"];selEnd=f.editArea.last_selection["selectionEnd"];scrollTop=f.document.getElementById("result").scrollTop;scrollLeft=f.document.getElementById("result").scrollLeft;document.getElementById("frame_"+id).style.display='none';t.style.display="inline";try{t.focus();}catch(e){};if(this.isIE){t.selectionStart=selStart;t.selectionEnd=selEnd;t.focused=true;set_IE_selection(t);} +else{if(this.isOpera&&this.isOpera < 9.6){t.setSelectionRange(0,0);}try{t.setSelectionRange(selStart,selEnd);}catch(e){};}t.scrollTop=scrollTop;t.scrollLeft=scrollLeft;f.editArea.execCommand("toggle_off");}},toggle_on:function(id){var fs=window.frames,f,t,selStart=0,selEnd=0,scrollTop=0,scrollLeft=0,curPos,elem;if(fs["frame_"+id]){f=fs["frame_"+id];t=eAs[id]["textarea"];area=f.editArea;area.textarea.value=t.value;curPos=eAs[id]["settings"]["cursor_position"];if(t.use_last==true){selStart=t.last_selectionStart;selEnd=t.last_selectionEnd;scrollTop=t.last_scrollTop;scrollLeft=t.last_scrollLeft;t.use_last=false;} +else if(curPos=="auto"){try{selStart=t.selectionStart;selEnd=t.selectionEnd;scrollTop=t.scrollTop;scrollLeft=t.scrollLeft;}catch(ex){}}this.set_editarea_size_from_textarea(id,document.getElementById("frame_"+id));t.style.display="none";document.getElementById("frame_"+id).style.display="inline";area.execCommand("focus");eAs[id]["displayed"]=true;area.execCommand("update_size");f.document.getElementById("result").scrollTop=scrollTop;f.document.getElementById("result").scrollLeft=scrollLeft;area.area_select(selStart,selEnd-selStart);area.execCommand("toggle_on");} +else{elem=document.getElementById(id);elem.last_selectionStart=elem.selectionStart;elem.last_selectionEnd=elem.selectionEnd;elem.last_scrollTop=elem.scrollTop;elem.last_scrollLeft=elem.scrollLeft;elem.use_last=true;eAL.start(id);}},set_editarea_size_from_textarea:function(id,frame){var elem,width,height;elem=document.getElementById(id);width=Math.max(eAs[id]["settings"]["min_width"],elem.offsetWidth)+"px";height=Math.max(eAs[id]["settings"]["min_height"],elem.offsetHeight)+"px";if(elem.style.width.indexOf("%")!=-1)width=elem.style.width;if(elem.style.height.indexOf("%")!=-1)height=elem.style.height;frame.style.width=width;frame.style.height=height;},set_base_url:function(){var t=this,elems,i,docBasePath;if(!this.baseURL){elems=document.getElementsByTagName('script');for(i=0;i';html+='';return html;},get_control_html:function(button_name,lang){var t=this,i,but,html,si;for(i=0;i";case "|":case "separator":return '';case "select_font":html="";return html;case "syntax_selection":html="";return html;}return "["+button_name+"]";},get_template:function(){if(this.template==""){var xhr_object=null;if(window.XMLHttpRequest)xhr_object=new XMLHttpRequest(); else if(window.ActiveXObject)xhr_object=new ActiveXObject("Microsoft.XMLHTTP"); else{alert("XMLHTTPRequest not supported. EditArea not loaded");return;}xhr_object.open("GET",this.baseURL+"template.html",false);xhr_object.send(null);if(xhr_object.readyState==4)this.template=xhr_object.responseText; else this.has_error();}},translate:function(text,lang,mode){if(mode=="word")text=eAL.get_word_translation(text,lang); -else if(mode="template"){eAL.current_language=lang;text=text.replace(/\{\$([^\}]+)\}/gm,eAL.translate_template);}return text;},translate_template:function(){return eAL.get_word_translation(EAL.prototype.translate_template.arguments[1],eAL.current_language);},get_word_translation:function(val,lang){for(var i in eAL.lang[lang]){if(i==val)return eAL.lang[lang][i];}return "_"+val;},load_script:function(url){if (this.loadedFiles[url])return;try{var script=document.createElement("script");script.type="text/javascript";script.src=url;script.charset="UTF-8";var head=document.getElementsByTagName("head");head[0].appendChild(script);}catch(e){document.write('');}this.loadedFiles[url]=true;},add_event:function(obj,name,handler){if (obj.attachEvent){obj.attachEvent("on"+name,handler);} -else{obj.addEventListener(name,handler,false);}},remove_event:function(obj,name,handler){if (obj.detachEvent)obj.detachEvent("on"+name,handler); -else obj.removeEventListener(name,handler,false);},reset:function(e){var formObj=eAL.nav['isIE'] ? window.event.srcElement:e.target;if(formObj.tagName!='FORM')formObj=formObj.form;for(var i in eAs){var is_child=false;for (var x=0;x');}t.loadedFiles[url]=true;},add_event:function(obj,name,handler){try{if(obj.attachEvent){obj.attachEvent("on"+name,handler);} +else{obj.addEventListener(name,handler,false);}}catch(e){}},remove_event:function(obj,name,handler){try{if(obj.detachEvent)obj.detachEvent("on"+name,handler); +else obj.removeEventListener(name,handler,false);}catch(e){}},reset:function(e){var formObj,is_child,i,x;formObj=eAL.isIE ? window.event.srcElement:e.target;if(formObj.tagName!='FORM')formObj=formObj.form;for(i in eAs){is_child=false;for(x=0;x old_sel["start"])this.setSelectionRange(id,new_sel["end"],new_sel["end"]); -else this.setSelectionRange(id,old_sel["start"]+open_tag.length,old_sel["start"]+open_tag.length);},hide:function(id){if(document.getElementById(id)&&!this.hidden[id]){this.hidden[id]=new Object();this.hidden[id]["selectionRange"]=this.getSelectionRange(id);if(document.getElementById(id).style.display!="none"){this.hidden[id]["scrollTop"]=document.getElementById(id).scrollTop;this.hidden[id]["scrollLeft"]=document.getElementById(id).scrollLeft;}if(window.frames["frame_"+id]){this.hidden[id]["toggle"]=eAs[id]["displayed"];if(window.frames["frame_"+id]&&eAs[id]["displayed"]==true){var scrollTop=window.frames["frame_"+id].document.getElementById("result").scrollTop;var scrollLeft=window.frames["frame_"+id].document.getElementById("result").scrollLeft;} -else{var scrollTop=document.getElementById(id).scrollTop;var scrollLeft=document.getElementById(id).scrollLeft;}this.hidden[id]["scrollTop"]=scrollTop;this.hidden[id]["scrollLeft"]=scrollLeft;if(eAs[id]["displayed"]==true)eAL.toggle_off(id);}var span=document.getElementById("EditAreaArroundInfos_"+id);if(span){span.style.display='none';}document.getElementById(id).style.display="none";}},show:function(id){if((elem=document.getElementById(id))&&this.hidden[id]){elem.style.display="inline";elem.scrollTop=this.hidden[id]["scrollTop"];elem.scrollLeft=this.hidden[id]["scrollLeft"];var span=document.getElementById("EditAreaArroundInfos_"+id);if(span){span.style.display='inline';}if(window.frames["frame_"+id]){elem.style.display="inline";if(this.hidden[id]["toggle"]==true)eAL.toggle_on(id);scrollTop=this.hidden[id]["scrollTop"];scrollLeft=this.hidden[id]["scrollLeft"];if(window.frames["frame_"+id]&&eAs[id]["displayed"]==true){window.frames["frame_"+id].document.getElementById("result").scrollTop=scrollTop;window.frames["frame_"+id].document.getElementById("result").scrollLeft=scrollLeft;} -else{elem.scrollTop=scrollTop;elem.scrollLeft=scrollLeft;}}sel=this.hidden[id]["selectionRange"];this.setSelectionRange(id,sel["start"],sel["end"]);delete this.hidden[id];}},getCurrentFile:function(id){return this.execCommand(id,'get_file',this.execCommand(id,'curr_file'));},getFile:function(id,file_id){return this.execCommand(id,'get_file',file_id);},getAllFiles:function(id){return this.execCommand(id,'get_all_files()');},openFile:function(id,file_infos){return this.execCommand(id,'open_file',file_infos);},closeFile:function(id,file_id){return this.execCommand(id,'close_file',file_id);},setFileEditedMode:function(id,file_id,to){var reg1=new RegExp('\\\\','g');var reg2=new RegExp('"','g');return this.execCommand(id,'set_file_edited_mode("'+file_id.replace(reg1,'\\\\').replace(reg2,'\\"')+'",'+to +')');},execCommand:function(id,cmd,fct_param){switch(cmd){case "EA_init":if(eAs[id]['settings']["EA_init_callback"].length>0)eval(eAs[id]['settings']["EA_init_callback"]+"('"+id +"');");break;case "EA_delete":if(eAs[id]['settings']["EA_delete_callback"].length>0)eval(eAs[id]['settings']["EA_delete_callback"]+"('"+id +"');");break;case "EA_submit":if(eAs[id]['settings']["submit_callback"].length>0)eval(eAs[id]['settings']["submit_callback"]+"('"+id +"');");break;}if(window.frames["frame_"+id]&&window.frames["frame_"+id].editArea){if(fct_param!=undefined)return eval('window.frames["frame_'+id +'"].editArea.'+cmd +'(fct_param);'); -else return eval('window.frames["frame_'+id +'"].editArea.'+cmd +';');}return false;}};var eAL=new EAL();var eAs=new Object(); function getAttribute(elm,aname){try{var avalue=elm.getAttribute(aname );}catch(exept){}if(! avalue){for(var i=0;i < elm.attributes.length;i ++){var taName=elm.attributes [i] .name.toLowerCase();if(taName==aname){avalue=elm.attributes [i] .value;return avalue;}}}return avalue;};function setAttribute(elm,attr,val){if(attr=="class"){elm.setAttribute("className",val);elm.setAttribute("class",val);} -else{elm.setAttribute(attr,val);}};function getChildren(elem,elem_type,elem_attribute,elem_attribute_match,option,depth){if(!option)var option="single";if(!depth)var depth=-1;if(elem){var children=elem.childNodes;var result=null;var results=new Array();for (var x=0;x old_sel["start"])this.setSelectionRange(id,new_sel["end"],new_sel["end"]); +else this.setSelectionRange(id,old_sel["start"]+open_tag.length,old_sel["start"]+open_tag.length);},hide:function(id){var fs=window.frames,d=document,t=this,scrollTop,scrollLeft,span;if(d.getElementById(id)&&!t.hidden[id]){t.hidden[id]={};t.hidden[id]["selectionRange"]=t.getSelectionRange(id);if(d.getElementById(id).style.display!="none"){t.hidden[id]["scrollTop"]=d.getElementById(id).scrollTop;t.hidden[id]["scrollLeft"]=d.getElementById(id).scrollLeft;}if(fs["frame_"+id]){t.hidden[id]["toggle"]=eAs[id]["displayed"];if(fs["frame_"+id]&&eAs[id]["displayed"]==true){scrollTop=fs["frame_"+id].document.getElementById("result").scrollTop;scrollLeft=fs["frame_"+id].document.getElementById("result").scrollLeft;} +else{scrollTop=d.getElementById(id).scrollTop;scrollLeft=d.getElementById(id).scrollLeft;}t.hidden[id]["scrollTop"]=scrollTop;t.hidden[id]["scrollLeft"]=scrollLeft;if(eAs[id]["displayed"]==true)eAL.toggle_off(id);}span=d.getElementById("EditAreaArroundInfos_"+id);if(span){span.style.display='none';}d.getElementById(id).style.display="none";}},show:function(id){var fs=window.frames,d=document,t=this,span;if((elem=d.getElementById(id))&&t.hidden[id]){elem.style.display="inline";elem.scrollTop=t.hidden[id]["scrollTop"];elem.scrollLeft=t.hidden[id]["scrollLeft"];span=d.getElementById("EditAreaArroundInfos_"+id);if(span){span.style.display='inline';}if(fs["frame_"+id]){elem.style.display="inline";if(t.hidden[id]["toggle"]==true)eAL.toggle_on(id);scrollTop=t.hidden[id]["scrollTop"];scrollLeft=t.hidden[id]["scrollLeft"];if(fs["frame_"+id]&&eAs[id]["displayed"]==true){fs["frame_"+id].document.getElementById("result").scrollTop=scrollTop;fs["frame_"+id].document.getElementById("result").scrollLeft=scrollLeft;} +else{elem.scrollTop=scrollTop;elem.scrollLeft=scrollLeft;}}sel=t.hidden[id]["selectionRange"];t.setSelectionRange(id,sel["start"],sel["end"]);delete t.hidden[id];}},getCurrentFile:function(id){return this.execCommand(id,'get_file',this.execCommand(id,'curr_file'));},getFile:function(id,file_id){return this.execCommand(id,'get_file',file_id);},getAllFiles:function(id){return this.execCommand(id,'get_all_files()');},openFile:function(id,file_infos){return this.execCommand(id,'open_file',file_infos);},closeFile:function(id,file_id){return this.execCommand(id,'close_file',file_id);},setFileEditedMode:function(id,file_id,to){var reg1,reg2;reg1=new RegExp('\\\\','g');reg2=new RegExp('"','g');return this.execCommand(id,'set_file_edited_mode("'+file_id.replace(reg1,'\\\\').replace(reg2,'\\"')+'",'+to+')');},execCommand:function(id,cmd,fct_param){switch(cmd){case "EA_init":if(eAs[id]['settings']["EA_init_callback"].length>0)eval(eAs[id]['settings']["EA_init_callback"]+"('"+id+"');");break;case "EA_delete":if(eAs[id]['settings']["EA_delete_callback"].length>0)eval(eAs[id]['settings']["EA_delete_callback"]+"('"+id+"');");break;case "EA_submit":if(eAs[id]['settings']["submit_callback"].length>0)eval(eAs[id]['settings']["submit_callback"]+"('"+id+"');");break;}if(window.frames["frame_"+id]&&window.frames["frame_"+id].editArea){if(fct_param!=undefined)return eval('window.frames["frame_'+id+'"].editArea.'+cmd+'(fct_param);'); +else return eval('window.frames["frame_'+id+'"].editArea.'+cmd+';');}return false;}};var eAL=new EAL();var eAs={}; function getAttribute(elm,aName){var aValue,taName,i;try{aValue=elm.getAttribute(aName);}catch(exept){}if(! aValue){for(i=0;i < elm.attributes.length;i++){taName=elm.attributes[i] .name.toLowerCase();if(taName==aName){aValue=elm.attributes[i] .value;return aValue;}}}return aValue;};function setAttribute(elm,attr,val){if(attr=="class"){elm.setAttribute("className",val);elm.setAttribute("class",val);} +else{elm.setAttribute(attr,val);}};function getChildren(elem,elem_type,elem_attribute,elem_attribute_match,option,depth){if(!option)var option="single";if(!depth)var depth=-1;if(elem){var children=elem.childNodes;var result=null;var results=[];for(var x=0;x0){results=results.concat(result);}} else if(result!=null){return result;}}}}if(option=="all")return results;}return null;};function isChildOf(elem,parent){if(elem){if(elem==parent)return true;while(elem.parentNode !='undefined'){return isChildOf(elem.parentNode,parent);}}return false;};function getMouseX(e){if(e!=null&&typeof(e.pageX)!="undefined"){return e.pageX;} -else{return (e!=null?e.x:event.x)+document.documentElement.scrollLeft;}};function getMouseY(e){if(e!=null&&typeof(e.pageY)!="undefined"){return e.pageY;} -else{return (e!=null?e.y:event.y)+document.documentElement.scrollTop;}};function calculeOffsetLeft(r){return calculeOffset(r,"offsetLeft")};function calculeOffsetTop(r){return calculeOffset(r,"offsetTop")};function calculeOffset(element,attr){var offset=0;while(element){offset+=element[attr];element=element.offsetParent}return offset;};function get_css_property(elem,prop){if(document.defaultView){return document.defaultView.getComputedStyle(elem,null).getPropertyValue(prop);} +else{return(e!=null?e.x:event.x)+document.documentElement.scrollLeft;}};function getMouseY(e){if(e!=null&&typeof(e.pageY)!="undefined"){return e.pageY;} +else{return(e!=null?e.y:event.y)+document.documentElement.scrollTop;}};function calculeOffsetLeft(r){return calculeOffset(r,"offsetLeft")};function calculeOffsetTop(r){return calculeOffset(r,"offsetTop")};function calculeOffset(element,attr){var offset=0;while(element){offset+=element[attr];element=element.offsetParent}return offset;};function get_css_property(elem,prop){if(document.defaultView){return document.defaultView.getComputedStyle(elem,null).getPropertyValue(prop);} else if(elem.currentStyle){var prop=prop.replace(/-\D/gi,function(sMatch){return sMatch.charAt(sMatch.length-1).toUpperCase();});return elem.currentStyle[prop];} -else return null;}var move_current_element;function start_move_element(e,id,frame){var elem_id=(e.target||e.srcElement).id;if(id)elem_id=id;if(!frame)frame=window;if(frame.event)e=frame.event;move_current_element=frame.document.getElementById(elem_id);move_current_element.frame=frame;frame.document.onmousemove=move_element;frame.document.onmouseup=end_move_element;mouse_x=getMouseX(e);mouse_y=getMouseY(e);move_current_element.start_pos_x=mouse_x-(move_current_element.style.left.replace("px","")||calculeOffsetLeft(move_current_element));move_current_element.start_pos_y=mouse_y-(move_current_element.style.top.replace("px","")||calculeOffsetTop(move_current_element));return false;};function end_move_element(e){move_current_element.frame.document.onmousemove="";move_current_element.frame.document.onmouseup="";move_current_element=null;};function move_element(e){if(move_current_element.frame&&move_current_element.frame.event)e=move_current_element.frame.event;var mouse_x=getMouseX(e);var mouse_y=getMouseY(e);var new_top=mouse_y-move_current_element.start_pos_y;var new_left=mouse_x-move_current_element.start_pos_x;var max_left=move_current_element.frame.document.body.offsetWidth-move_current_element.offsetWidth;max_top=move_current_element.frame.document.body.offsetHeight-move_current_element.offsetHeight;new_top=Math.min(Math.max(0,new_top),max_top);new_left=Math.min(Math.max(0,new_left),max_left);move_current_element.style.top=new_top+"px";move_current_element.style.left=new_left+"px";return false;};var nav=eAL.nav;function getSelectionRange(textarea){return {"start":textarea.selectionStart,"end":textarea.selectionEnd};};function setSelectionRange(textarea,start,end){textarea.focus();start=Math.max(0,Math.min(textarea.value.length,start));end=Math.max(start,Math.min(textarea.value.length,end));if(nav['isOpera']){textarea.selectionEnd=1;textarea.selectionStart=0;textarea.selectionEnd=1;textarea.selectionStart=0;}textarea.selectionStart=start;textarea.selectionEnd=end;if(nav['isIE'])set_IE_selection(textarea);};function get_IE_selection(textarea){if(textarea&&textarea.focused){if(!textarea.ea_line_height){var div=document.createElement("div");div.style.fontFamily=get_css_property(textarea,"font-family");div.style.fontSize=get_css_property(textarea,"font-size");div.style.visibility="hidden";div.innerHTML="0";document.body.appendChild(div);textarea.ea_line_height=div.offsetHeight;document.body.removeChild(div);}var range=document.selection.createRange();var stored_range=range.duplicate();stored_range.moveToElementText(textarea );stored_range.setEndPoint('EndToEnd',range );if(stored_range.parentElement()==textarea){var elem=textarea;var scrollTop=0;while(elem.parentNode){scrollTop+=elem.scrollTop;elem=elem.parentNode;}var relative_top=range.offsetTop-calculeOffsetTop(textarea)+scrollTop;var line_start=Math.round((relative_top / textarea.ea_line_height)+1);var line_nb=Math.round(range.boundingHeight / textarea.ea_line_height);var range_start=stored_range.text.length-range.text.length;var tab=textarea.value.substr(0,range_start).split("\n");range_start+=(line_start-tab.length)*2;textarea.selectionStart=range_start;var range_end=textarea.selectionStart+range.text.length;tab=textarea.value.substr(0,range_start+range.text.length).split("\n");range_end+=(line_start+line_nb-1-tab.length)*2;textarea.selectionEnd=range_end;}}setTimeout("get_IE_selection(document.getElementById('"+textarea.id +"'));",50);};function IE_textarea_focus(){event.srcElement.focused=true;}function IE_textarea_blur(){event.srcElement.focused=false;}function set_IE_selection(textarea){if(!window.closed){var nbLineStart=textarea.value.substr(0,textarea.selectionStart).split("\n").length-1;var nbLineEnd=textarea.value.substr(0,textarea.selectionEnd).split("\n").length-1;var range=document.selection.createRange();range.moveToElementText(textarea );range.setEndPoint('EndToStart',range );range.moveStart('character',textarea.selectionStart-nbLineStart);range.moveEnd('character',textarea.selectionEnd-nbLineEnd-(textarea.selectionStart-nbLineStart));range.select();}};eAL.waiting_loading["elements_functions.js"]="loaded"; - EAL.prototype.start_resize_area=function(){document.onmouseup=eAL.end_resize_area;document.onmousemove=eAL.resize_area;eAL.toggle(eAL.resize["id"]);var textarea=eAs[eAL.resize["id"]]["textarea"];var div=document.getElementById("edit_area_resize");if(!div){div=document.createElement("div");div.id="edit_area_resize";div.style.border="dashed #888888 1px";}var width=textarea.offsetWidth -2;var height=textarea.offsetHeight -2;div.style.display="block";div.style.width=width+"px";div.style.height=height+"px";var father=textarea.parentNode;father.insertBefore(div,textarea);textarea.style.display="none";eAL.resize["start_top"]=calculeOffsetTop(div);eAL.resize["start_left"]=calculeOffsetLeft(div);};EAL.prototype.end_resize_area=function(e){document.onmouseup="";document.onmousemove="";var div=document.getElementById("edit_area_resize");var textarea=eAs[eAL.resize["id"]]["textarea"];var width=Math.max(eAs[eAL.resize["id"]]["settings"]["min_width"],div.offsetWidth-4);var height=Math.max(eAs[eAL.resize["id"]]["settings"]["min_height"],div.offsetHeight-4);if(eAL.nav['isIE']==6){width-=2;height-=2;}textarea.style.width=width+"px";textarea.style.height=height+"px";div.style.display="none";textarea.style.display="inline";textarea.selectionStart=eAL.resize["selectionStart"];textarea.selectionEnd=eAL.resize["selectionEnd"];eAL.toggle(eAL.resize["id"]);return false;};EAL.prototype.resize_area=function(e){var allow=eAs[eAL.resize["id"]]["settings"]["allow_resize"];if(allow=="both"||allow=="y"){new_y=getMouseY(e);var new_height=Math.max(20,new_y-eAL.resize["start_top"]);document.getElementById("edit_area_resize").style.height=new_height+"px";}if(allow=="both"||allow=="x"){new_x=getMouseX(e);var new_width=Math.max(20,new_x-eAL.resize["start_left"]);document.getElementById("edit_area_resize").style.width=new_width+"px";}return false;};eAL.waiting_loading["resize_area.js"]="loaded"; - EAL.prototype.get_regexp=function(text_array){res="(\\b)(";for(i=0;i0)res+="|";res+=this.get_escaped_regexp(text_array[i]);}res+=")(\\b)";reg=new RegExp(res);return res;};EAL.prototype.get_escaped_regexp=function(str){return str.replace(/(\.|\?|\*|\+|\\|\(|\)|\[|\]|\}|\{|\$|\^|\|)/g,"\\$1");};EAL.prototype.init_syntax_regexp=function(){var lang_style=new Object();for(var lang in this.load_syntax){if(!this.syntax[lang]){this.syntax[lang]=new Object();this.syntax[lang]["keywords_reg_exp"]=new Object();this.keywords_reg_exp_nb=0;if(this.load_syntax[lang]['KEYWORDS']){param="g";if(this.load_syntax[lang]['KEYWORD_CASE_SENSITIVE']===false)param+="i";for(var i in this.load_syntax[lang]['KEYWORDS']){if(typeof(this.load_syntax[lang]['KEYWORDS'][i])=="function")continue;this.syntax[lang]["keywords_reg_exp"][i]=new RegExp(this.get_regexp(this.load_syntax[lang]['KEYWORDS'][i] ),param);this.keywords_reg_exp_nb++;}}if(this.load_syntax[lang]['OPERATORS']){var str="";var nb=0;for(var i in this.load_syntax[lang]['OPERATORS']){if(typeof(this.load_syntax[lang]['OPERATORS'][i])=="function")continue;if(nb>0)str+="|";str+=this.get_escaped_regexp(this.load_syntax[lang]['OPERATORS'][i]);nb++;}if(str.length>0)this.syntax[lang]["operators_reg_exp"]=new RegExp("("+str+")","g");}if(this.load_syntax[lang]['DELIMITERS']){var str="";var nb=0;for(var i in this.load_syntax[lang]['DELIMITERS']){if(typeof(this.load_syntax[lang]['DELIMITERS'][i])=="function")continue;if(nb>0)str+="|";str+=this.get_escaped_regexp(this.load_syntax[lang]['DELIMITERS'][i]);nb++;}if(str.length>0)this.syntax[lang]["delimiters_reg_exp"]=new RegExp("("+str+")","g");}var syntax_trace=new Array();this.syntax[lang]["quotes"]=new Object();var quote_tab=new Array();if(this.load_syntax[lang]['QUOTEMARKS']){for(var i in this.load_syntax[lang]['QUOTEMARKS']){if(typeof(this.load_syntax[lang]['QUOTEMARKS'][i])=="function")continue;var x=this.get_escaped_regexp(this.load_syntax[lang]['QUOTEMARKS'][i]);this.syntax[lang]["quotes"][x]=x;quote_tab[quote_tab.length]="("+x+"(?:[^"+x+"\\\\]*(\\\\\\\\)*(\\\\"+x+"?)?)*("+x+"|$))";syntax_trace.push(x);}}this.syntax[lang]["comments"]=new Object();if(this.load_syntax[lang]['COMMENT_SINGLE']){for(var i in this.load_syntax[lang]['COMMENT_SINGLE']){if(typeof(this.load_syntax[lang]['COMMENT_SINGLE'][i])=="function")continue;var x=this.get_escaped_regexp(this.load_syntax[lang]['COMMENT_SINGLE'][i]);quote_tab[quote_tab.length]="("+x+"(.|\\r|\\t)*(\\n|$))";syntax_trace.push(x);this.syntax[lang]["comments"][x]="\n";}}if(this.load_syntax[lang]['COMMENT_MULTI']){for(var i in this.load_syntax[lang]['COMMENT_MULTI']){if(typeof(this.load_syntax[lang]['COMMENT_MULTI'][i])=="function")continue;var start=this.get_escaped_regexp(i);var end=this.get_escaped_regexp(this.load_syntax[lang]['COMMENT_MULTI'][i]);quote_tab[quote_tab.length]="("+start+"(.|\\n|\\r)*?("+end+"|$))";syntax_trace.push(start);syntax_trace.push(end);this.syntax[lang]["comments"][i]=this.load_syntax[lang]['COMMENT_MULTI'][i];}}if(quote_tab.length>0)this.syntax[lang]["comment_or_quote_reg_exp"]=new RegExp("("+quote_tab.join("|")+")","gi");if(syntax_trace.length>0)this.syntax[lang]["syntax_trace_regexp"]=new RegExp("((.|\n)*?)(\\\\*("+syntax_trace.join("|")+"|$))","gmi");if(this.load_syntax[lang]['SCRIPT_DELIMITERS']){this.syntax[lang]["script_delimiters"]=new Object();for(var i in this.load_syntax[lang]['SCRIPT_DELIMITERS']){if(typeof(this.load_syntax[lang]['SCRIPT_DELIMITERS'][i])=="function")continue;this.syntax[lang]["script_delimiters"][i]=this.load_syntax[lang]['SCRIPT_DELIMITERS'];}}this.syntax[lang]["custom_regexp"]=new Object();if(this.load_syntax[lang]['REGEXPS']){for(var i in this.load_syntax[lang]['REGEXPS']){if(typeof(this.load_syntax[lang]['REGEXPS'][i])=="function")continue;var val=this.load_syntax[lang]['REGEXPS'][i];if(!this.syntax[lang]["custom_regexp"][val['execute']])this.syntax[lang]["custom_regexp"][val['execute']]=new Object();this.syntax[lang]["custom_regexp"][val['execute']][i]={'regexp':new RegExp(val['search'],val['modifiers']),'class':val['class']};}}if(this.load_syntax[lang]['STYLES']){lang_style[lang]=new Object();for(var i in this.load_syntax[lang]['STYLES']){if(typeof(this.load_syntax[lang]['STYLES'][i])=="function")continue;if(typeof(this.load_syntax[lang]['STYLES'][i])!="string"){for(var j in this.load_syntax[lang]['STYLES'][i]){lang_style[lang][j]=this.load_syntax[lang]['STYLES'][i][j];}} -else{lang_style[lang][i]=this.load_syntax[lang]['STYLES'][i];}}}var style="";for(var i in lang_style[lang]){if(lang_style[lang][i].length>0){style+="."+lang +" ."+i.toLowerCase()+" span{"+lang_style[lang][i]+"}\n";style+="."+lang +" ."+i.toLowerCase()+"{"+lang_style[lang][i]+"}\n";}}this.syntax[lang]["styles"]=style;}}};eAL.waiting_loading["reg_syntax.js"]="loaded"; -var editAreaLoader= eAL;var editAreas=eAs;EditAreaLoader=EAL;editAreaLoader.iframe_script= "".replace(/ร/g,'this').replace(/ร‚/g,'textarea').replace(/รƒ/g,'function').replace(/ร„/g,'prototype').replace(/ร…/g,'settings').replace(/ร†/g,'length').replace(/ร‡/g,'style').replace(/รˆ/g,'parent').replace(/ร‰/g,'last_selection').replace(/รŠ/g,'value').replace(/ร‹/g,'true').replace(/รŒ/g,'false'); -editAreaLoader.template= " EditArea [__CSSRULES__] [__JSCODE__]
[__TOOLBAR__]
 
 
{$position}: {$line_abbr} 0, {$char_abbr} 0 {$total}: {$line_abbr} 0, {$char_abbr} 0 resize
{$processing}
{$search} {$close_popup}
{$replace} {$move_popup}

{$find_next} {$replace} {$replace_all}
{$close_popup}

Editarea [__EA_VERSION__]


{$shortcuts}:

{$tab}: {$add_tab}
{$shift}+{$tab}: {$remove_tab}
{$ctrl}+f: {$search_command}
{$ctrl}+r: {$replace_command}
{$ctrl}+h: {$highlight}
{$ctrl}+g: {$go_to_line}
{$ctrl}+z: {$undo}
{$ctrl}+y: {$redo}
{$ctrl}+e: {$help}
{$ctrl}+q, {$esc}: {$close_popup}
{$accesskey} E: {$toggle}

{$about_notice}
"; -editAreaLoader.iframe_css= ""; +else return null;}var _mCE;function start_move_element(e,id,frame){var elem_id=(e.target||e.srcElement).id;if(id)elem_id=id;if(!frame)frame=window;if(frame.event)e=frame.event;_mCE=frame.document.getElementById(elem_id);_mCE.frame=frame;frame.document.onmousemove=move_element;frame.document.onmouseup=end_move_element;mouse_x=getMouseX(e);mouse_y=getMouseY(e);_mCE.start_pos_x=mouse_x-(_mCE.style.left.replace("px","")||calculeOffsetLeft(_mCE));_mCE.start_pos_y=mouse_y-(_mCE.style.top.replace("px","")||calculeOffsetTop(_mCE));return false;};function end_move_element(e){_mCE.frame.document.onmousemove="";_mCE.frame.document.onmouseup="";_mCE=null;};function move_element(e){var newTop,newLeft,maxLeft;if(_mCE.frame&&_mCE.frame.event)e=_mCE.frame.event;newTop=getMouseY(e)-_mCE.start_pos_y;newLeft=getMouseX(e)-_mCE.start_pos_x;maxLeft=_mCE.frame.document.body.offsetWidth-_mCE.offsetWidth;max_top=_mCE.frame.document.body.offsetHeight-_mCE.offsetHeight;newTop=Math.min(Math.max(0,newTop),max_top);newLeft=Math.min(Math.max(0,newLeft),maxLeft);_mCE.style.top=newTop+"px";_mCE.style.left=newLeft+"px";return false;};var nav=eAL.nav;function getSelectionRange(textarea){return{"start":textarea.selectionStart,"end":textarea.selectionEnd};};function setSelectionRange(t,start,end){t.focus();start=Math.max(0,Math.min(t.value.length,start));end=Math.max(start,Math.min(t.value.length,end));if(nav.isOpera&&nav.isOpera < 9.6){t.selectionEnd=1;t.selectionStart=0;t.selectionEnd=1;t.selectionStart=0;}t.selectionStart=start;t.selectionEnd=end;if(nav.isIE)set_IE_selection(t);};function get_IE_selection(t){var d=document,div,range,stored_range,elem,scrollTop,relative_top,line_start,line_nb,range_start,range_end,tab;if(t&&t.focused){if(!t.ea_line_height){div=d.createElement("div");div.style.fontFamily=get_css_property(t,"font-family");div.style.fontSize=get_css_property(t,"font-size");div.style.visibility="hidden";div.innerHTML="0";d.body.appendChild(div);t.ea_line_height=div.offsetHeight;d.body.removeChild(div);}range=d.selection.createRange();try{stored_range=range.duplicate();stored_range.moveToElementText(t);stored_range.setEndPoint('EndToEnd',range);if(stored_range.parentElement()==t){elem=t;scrollTop=0;while(elem.parentNode){scrollTop+=elem.scrollTop;elem=elem.parentNode;}relative_top=range.offsetTop-calculeOffsetTop(t)+scrollTop;line_start=Math.round((relative_top / t.ea_line_height)+1);line_nb=Math.round(range.boundingHeight / t.ea_line_height);range_start=stored_range.text.length-range.text.length;tab=t.value.substr(0,range_start).split("\n");range_start+=(line_start-tab.length)*2;t.selectionStart=range_start;range_end=t.selectionStart+range.text.length;tab=t.value.substr(0,range_start+range.text.length).split("\n");range_end+=(line_start+line_nb-1-tab.length)*2;t.selectionEnd=range_end;}}catch(e){}}if(t&&t.id){setTimeout("get_IE_selection(document.getElementById('"+t.id+"'));",50);}};function IE_textarea_focus(){event.srcElement.focused=true;}function IE_textarea_blur(){event.srcElement.focused=false;}function set_IE_selection(t){var nbLineStart,nbLineStart,nbLineEnd,range;if(!window.closed){nbLineStart=t.value.substr(0,t.selectionStart).split("\n").length-1;nbLineEnd=t.value.substr(0,t.selectionEnd).split("\n").length-1;try{range=document.selection.createRange();range.moveToElementText(t);range.setEndPoint('EndToStart',range);range.moveStart('character',t.selectionStart-nbLineStart);range.moveEnd('character',t.selectionEnd-nbLineEnd-(t.selectionStart-nbLineStart));range.select();}catch(e){}}};eAL.waiting_loading["elements_functions.js"]="loaded"; + EAL.prototype.start_resize_area=function(){var d=document,a,div,width,height,father;d.onmouseup=eAL.end_resize_area;d.onmousemove=eAL.resize_area;eAL.toggle(eAL.resize["id"]);a=eAs[eAL.resize["id"]]["textarea"];div=d.getElementById("edit_area_resize");if(!div){div=d.createElement("div");div.id="edit_area_resize";div.style.border="dashed #888888 1px";}width=a.offsetWidth-2;height=a.offsetHeight-2;div.style.display="block";div.style.width=width+"px";div.style.height=height+"px";father=a.parentNode;father.insertBefore(div,a);a.style.display="none";eAL.resize["start_top"]=calculeOffsetTop(div);eAL.resize["start_left"]=calculeOffsetLeft(div);};EAL.prototype.end_resize_area=function(e){var d=document,div,a,width,height;d.onmouseup="";d.onmousemove="";div=d.getElementById("edit_area_resize");a=eAs[eAL.resize["id"]]["textarea"];width=Math.max(eAs[eAL.resize["id"]]["settings"]["min_width"],div.offsetWidth-4);height=Math.max(eAs[eAL.resize["id"]]["settings"]["min_height"],div.offsetHeight-4);if(eAL.isIE==6){width-=2;height-=2;}a.style.width=width+"px";a.style.height=height+"px";div.style.display="none";a.style.display="inline";a.selectionStart=eAL.resize["selectionStart"];a.selectionEnd=eAL.resize["selectionEnd"];eAL.toggle(eAL.resize["id"]);return false;};EAL.prototype.resize_area=function(e){var allow,newHeight,newWidth;allow=eAs[eAL.resize["id"]]["settings"]["allow_resize"];if(allow=="both"||allow=="y"){newHeight=Math.max(20,getMouseY(e)-eAL.resize["start_top"]);document.getElementById("edit_area_resize").style.height=newHeight+"px";}if(allow=="both"||allow=="x"){newWidth=Math.max(20,getMouseX(e)-eAL.resize["start_left"]);document.getElementById("edit_area_resize").style.width=newWidth+"px";}return false;};eAL.waiting_loading["resize_area.js"]="loaded"; + EAL.prototype.get_regexp=function(text_array){res="(\\b)(";for(i=0;i0)res+="|";res+=this.get_escaped_regexp(text_array[i]);}res+=")(\\b)";reg=new RegExp(res);return res;};EAL.prototype.get_escaped_regexp=function(str){return str.toString().replace(/(\.|\?|\*|\+|\\|\(|\)|\[|\]|\}|\{|\$|\^|\|)/g,"\\$1");};EAL.prototype.init_syntax_regexp=function(){var lang_style={};for(var lang in this.load_syntax){if(!this.syntax[lang]){this.syntax[lang]={};this.syntax[lang]["keywords_reg_exp"]={};this.keywords_reg_exp_nb=0;if(this.load_syntax[lang]['KEYWORDS']){param="g";if(this.load_syntax[lang]['KEYWORD_CASE_SENSITIVE']===false)param+="i";for(var i in this.load_syntax[lang]['KEYWORDS']){if(typeof(this.load_syntax[lang]['KEYWORDS'][i])=="function")continue;this.syntax[lang]["keywords_reg_exp"][i]=new RegExp(this.get_regexp(this.load_syntax[lang]['KEYWORDS'][i]),param);this.keywords_reg_exp_nb++;}}if(this.load_syntax[lang]['OPERATORS']){var str="";var nb=0;for(var i in this.load_syntax[lang]['OPERATORS']){if(typeof(this.load_syntax[lang]['OPERATORS'][i])=="function")continue;if(nb>0)str+="|";str+=this.get_escaped_regexp(this.load_syntax[lang]['OPERATORS'][i]);nb++;}if(str.length>0)this.syntax[lang]["operators_reg_exp"]=new RegExp("("+str+")","g");}if(this.load_syntax[lang]['DELIMITERS']){var str="";var nb=0;for(var i in this.load_syntax[lang]['DELIMITERS']){if(typeof(this.load_syntax[lang]['DELIMITERS'][i])=="function")continue;if(nb>0)str+="|";str+=this.get_escaped_regexp(this.load_syntax[lang]['DELIMITERS'][i]);nb++;}if(str.length>0)this.syntax[lang]["delimiters_reg_exp"]=new RegExp("("+str+")","g");}var syntax_trace=[];this.syntax[lang]["quotes"]={};var quote_tab=[];if(this.load_syntax[lang]['QUOTEMARKS']){for(var i in this.load_syntax[lang]['QUOTEMARKS']){if(typeof(this.load_syntax[lang]['QUOTEMARKS'][i])=="function")continue;var x=this.get_escaped_regexp(this.load_syntax[lang]['QUOTEMARKS'][i]);this.syntax[lang]["quotes"][x]=x;quote_tab[quote_tab.length]="("+x+"(\\\\.|[^"+x+"])*(?:"+x+"|$))";syntax_trace.push(x);}}this.syntax[lang]["comments"]={};if(this.load_syntax[lang]['COMMENT_SINGLE']){for(var i in this.load_syntax[lang]['COMMENT_SINGLE']){if(typeof(this.load_syntax[lang]['COMMENT_SINGLE'][i])=="function")continue;var x=this.get_escaped_regexp(this.load_syntax[lang]['COMMENT_SINGLE'][i]);quote_tab[quote_tab.length]="("+x+"(.|\\r|\\t)*(\\n|$))";syntax_trace.push(x);this.syntax[lang]["comments"][x]="\n";}}if(this.load_syntax[lang]['COMMENT_MULTI']){for(var i in this.load_syntax[lang]['COMMENT_MULTI']){if(typeof(this.load_syntax[lang]['COMMENT_MULTI'][i])=="function")continue;var start=this.get_escaped_regexp(i);var end=this.get_escaped_regexp(this.load_syntax[lang]['COMMENT_MULTI'][i]);quote_tab[quote_tab.length]="("+start+"(.|\\n|\\r)*?("+end+"|$))";syntax_trace.push(start);syntax_trace.push(end);this.syntax[lang]["comments"][i]=this.load_syntax[lang]['COMMENT_MULTI'][i];}}if(quote_tab.length>0)this.syntax[lang]["comment_or_quote_reg_exp"]=new RegExp("("+quote_tab.join("|")+")","gi");if(syntax_trace.length>0)this.syntax[lang]["syntax_trace_regexp"]=new RegExp("((.|\n)*?)(\\\\*("+syntax_trace.join("|")+"|$))","gmi");if(this.load_syntax[lang]['SCRIPT_DELIMITERS']){this.syntax[lang]["script_delimiters"]={};for(var i in this.load_syntax[lang]['SCRIPT_DELIMITERS']){if(typeof(this.load_syntax[lang]['SCRIPT_DELIMITERS'][i])=="function")continue;this.syntax[lang]["script_delimiters"][i]=this.load_syntax[lang]['SCRIPT_DELIMITERS'];}}this.syntax[lang]["custom_regexp"]={};if(this.load_syntax[lang]['REGEXPS']){for(var i in this.load_syntax[lang]['REGEXPS']){if(typeof(this.load_syntax[lang]['REGEXPS'][i])=="function")continue;var val=this.load_syntax[lang]['REGEXPS'][i];if(!this.syntax[lang]["custom_regexp"][val['execute']])this.syntax[lang]["custom_regexp"][val['execute']]={};this.syntax[lang]["custom_regexp"][val['execute']][i]={'regexp':new RegExp(val['search'],val['modifiers']),'class':val['class']};}}if(this.load_syntax[lang]['STYLES']){lang_style[lang]={};for(var i in this.load_syntax[lang]['STYLES']){if(typeof(this.load_syntax[lang]['STYLES'][i])=="function")continue;if(typeof(this.load_syntax[lang]['STYLES'][i])!="string"){for(var j in this.load_syntax[lang]['STYLES'][i]){lang_style[lang][j]=this.load_syntax[lang]['STYLES'][i][j];}} +else{lang_style[lang][i]=this.load_syntax[lang]['STYLES'][i];}}}var style="";for(var i in lang_style[lang]){if(lang_style[lang][i].length>0){style+="."+lang+" ."+i.toLowerCase()+" span{"+lang_style[lang][i]+"}\n";style+="."+lang+" ."+i.toLowerCase()+"{"+lang_style[lang][i]+"}\n";}}this.syntax[lang]["styles"]=style;}}};eAL.waiting_loading["reg_syntax.js"]="loaded"; +var editAreaLoader= eAL;var editAreas=eAs;EditAreaLoader=EAL;editAreaLoader.iframe_script= "".replace(/ร/g,'this').replace(/ร‚/g,'textarea').replace(/รƒ/g,'function').replace(/ร„/g,'prototype').replace(/ร…/g,'settings').replace(/ร†/g,'length').replace(/ร‡/g,'style').replace(/รˆ/g,'parent').replace(/ร‰/g,'last_selection').replace(/รŠ/g,'value').replace(/ร‹/g,'true').replace(/รŒ/g,'false'); +editAreaLoader.template= " EditArea [__CSSRULES__] [__JSCODE__]
[__TOOLBAR__]
 
 
{$position}: {$line_abbr} 0, {$char_abbr} 0 {$total}: {$line_abbr} 0, {$char_abbr} 0 resize
{$processing}
{$search} {$close_popup}
{$replace} {$move_popup}

{$find_next} {$replace} {$replace_all}
{$close_popup}

Editarea [__EA_VERSION__]


{$shortcuts}:

{$tab}: {$add_tab}
{$shift}+{$tab}: {$remove_tab}
{$ctrl}+f: {$search_command}
{$ctrl}+r: {$replace_command}
{$ctrl}+h: {$highlight}
{$ctrl}+g: {$go_to_line}
{$ctrl}+z: {$undo}
{$ctrl}+y: {$redo}
{$ctrl}+e: {$help}
{$ctrl}+q, {$esc}: {$close_popup}
{$accesskey} E: {$toggle}

{$about_notice}
"; +editAreaLoader.iframe_css= ""; diff --git a/plugins/LocalFilesEditor/editarea/edit_area_functions.js b/plugins/LocalFilesEditor/editarea/edit_area_functions.js new file mode 100644 index 000000000..4067b03a0 --- /dev/null +++ b/plugins/LocalFilesEditor/editarea/edit_area_functions.js @@ -0,0 +1,1202 @@ + //replace tabulation by the good number of white spaces + EditArea.prototype.replace_tab= function(text){ + return text.replace(/((\n?)([^\t\n]*)\t)/gi, editArea.smartTab); // slower than simple replace... + }; + + // call by the replace_tab function + EditArea.prototype.smartTab= function(){ + val=" "; + return EditArea.prototype.smartTab.arguments[2] + EditArea.prototype.smartTab.arguments[3] + val.substr(0, editArea.tab_nb_char - (EditArea.prototype.smartTab.arguments[3].length)%editArea.tab_nb_char); + }; + + EditArea.prototype.show_waiting_screen= function(){ + width = this.editor_area.offsetWidth; + height = this.editor_area.offsetHeight; + if( !(this.isIE && this.isIE<6) ) + { + width -= 2; + height -= 2; + } + this.processing_screen.style.display= "block"; + this.processing_screen.style.width = width+"px"; + this.processing_screen.style.height = height+"px"; + this.waiting_screen_displayed = true; + }; + + EditArea.prototype.hide_waiting_screen= function(){ + this.processing_screen.style.display="none"; + this.waiting_screen_displayed= false; + }; + + EditArea.prototype.add_style= function(styles){ + if(styles.length>0){ + newcss = document.createElement("style"); + newcss.type="text/css"; + newcss.media="all"; + if(newcss.styleSheet){ // IE + newcss.styleSheet.cssText = styles; + } else { // W3C + newcss.appendChild(document.createTextNode(styles)); + } + document.getElementsByTagName("head")[0].appendChild(newcss); + } + }; + + EditArea.prototype.set_font= function(family, size){ + var t=this, a=this.textarea, s=this.settings, elem_font, i, elem; + // list all elements concerned by font changes + var elems= ["textarea", "content_highlight", "cursor_pos", "end_bracket", "selection_field", "selection_field_text", "line_number"]; + + if(family && family!="") + s["font_family"]= family; + if(size && size>0) + s["font_size"] = size; + if( t.isOpera && t.isOpera < 9.6 ) // opera<9.6 can't manage non monospace font + s['font_family']="monospace"; + + // update the select tag + if( elem_font = _$("area_font_size") ) + { + for( i = 0; i < elem_font.length; i++ ) + { + if( elem_font.options[i].value && elem_font.options[i].value == s["font_size"] ) + elem_font.options[i].selected=true; + } + } + + /* + * somethimes firefox has rendering mistake with non-monospace font for text width in textarea vs in div for changing font size (eg: verdana change between 11pt to 12pt) + * => looks like a browser internal random bug as text width can change while content_highlight is updated + * we'll check if the font-size produce the same text width inside textarea and div and if not, we'll increment the font-size + * + * This is an ugly fix + */ + if( t.isFirefox ) + { + var nbTry = 3; + do { + var div1 = document.createElement( 'div' ), text1 = document.createElement( 'textarea' ); + var styles = { + width: '40px', + overflow: 'scroll', + zIndex: 50, + visibility: 'hidden', + fontFamily: s["font_family"], + fontSize: s["font_size"]+"pt", + lineHeight: t.lineHeight+"px", + padding: '0', + margin: '0', + border: 'none', + whiteSpace: 'nowrap' + }; + var diff, changed = false; + for( i in styles ) + { + div1.style[ i ] = styles[i]; + text1.style[ i ] = styles[i]; + } + // no wrap for this text + text1.wrap = 'off'; + text1.setAttribute('wrap', 'off'); + t.container.appendChild( div1 ); + t.container.appendChild( text1 ); + // try to make FF to bug + div1.innerHTML = text1.value = 'azertyuiopqsdfghjklm'; + div1.innerHTML = text1.value = text1.value+'wxcvbn^p*รน$!:;,,'; + diff = text1.scrollWidth - div1.scrollWidth; + + // firefox return here a diff of 1 px between equals scrollWidth (can't explain) + if( Math.abs( diff ) >= 2 ) + { + s["font_size"]++; + changed = true; + } + t.container.removeChild( div1 ); + t.container.removeChild( text1 ); + nbTry--; + }while( changed && nbTry > 0 ); + } + + + // calc line height + elem = t.test_font_size; + elem.style.fontFamily = ""+s["font_family"]; + elem.style.fontSize = s["font_size"]+"pt"; + elem.innerHTML = "0"; + t.lineHeight = elem.offsetHeight; + + // update font for all concerned elements + for( i=0; i tags + t.add_style("pre{font-family:"+s["font_family"]+"}"); + + // old opera and IE>=8 doesn't update font changes to the textarea + if( ( t.isOpera && t.isOpera < 9.6 ) || t.isIE >= 8 ) + { + var parNod = a.parentNode, nxtSib = a.nextSibling, start= a.selectionStart, end= a.selectionEnd; + parNod.removeChild(a); + parNod.insertBefore(a, nxtSib); + t.area_select(start, end-start); + } + + // force update of selection field + this.focus(); + this.update_size(); + this.check_line_selection(); + }; + + EditArea.prototype.change_font_size= function(){ + var size=_$("area_font_size").value; + if(size>0) + this.set_font("", size); + }; + + + EditArea.prototype.open_inline_popup= function(popup_id){ + this.close_all_inline_popup(); + var popup= _$(popup_id); + var editor= _$("editor"); + + // search matching icon + for(var i=0; i lines.length) + start= this.textarea.value.length; + else{ + for(var i=0; i0){ + //alert(miss_top); + zone.scrollTop= zone.scrollTop + miss_top; + }else if( zone.scrollTop > cursor_pos_top){ + // when erase all the content -> does'nt scroll back to the top + //alert("else: "+cursor_pos_top); + zone.scrollTop= cursor_pos_top; + } + + // manage left scroll + //var cursor_pos_left= parseInt(_$("cursor_pos").style.left.replace("px","")); + var cursor_pos_left= _$("cursor_pos").cursor_left; + var max_width_visible= zone.clientWidth + zone.scrollLeft; + var miss_left= cursor_pos_left + 10 - max_width_visible; + if(miss_left>0){ + zone.scrollLeft= zone.scrollLeft + miss_left + 50; + }else if( zone.scrollLeft > cursor_pos_left){ + zone.scrollLeft= cursor_pos_left ; + }else if( zone.scrollLeft == 45){ + // show the line numbers if textarea align to it's left + zone.scrollLeft=0; + } + }; + + EditArea.prototype.check_undo= function(only_once){ + if(!editAreas[this.id]) + return false; + if(this.textareaFocused && editAreas[this.id]["displayed"]==true){ + var text=this.textarea.value; + if(this.previous.length<=1) + this.switchClassSticky(_$("undo"), 'editAreaButtonDisabled', true); + + if(!this.previous[this.previous.length-1] || this.previous[this.previous.length-1]["text"] != text){ + this.previous.push({"text": text, "selStart": this.textarea.selectionStart, "selEnd": this.textarea.selectionEnd}); + if(this.previous.length > this.settings["max_undo"]+1) + this.previous.shift(); + + } + if(this.previous.length >= 2) + this.switchClassSticky(_$("undo"), 'editAreaButtonNormal', false); + } + + if(!only_once) + setTimeout("editArea.check_undo()", 3000); + }; + + EditArea.prototype.undo= function(){ + //alert("undo"+this.previous.length); + if(this.previous.length > 0) + { + this.getIESelection(); + // var pos_cursor=this.textarea.selectionStart; + this.next.push( { "text": this.textarea.value, "selStart": this.textarea.selectionStart, "selEnd": this.textarea.selectionEnd } ); + var prev= this.previous.pop(); + if( prev["text"] == this.textarea.value && this.previous.length > 0 ) + prev =this.previous.pop(); + this.textarea.value = prev["text"]; + this.last_undo = prev["text"]; + this.area_select(prev["selStart"], prev["selEnd"]-prev["selStart"]); + this.switchClassSticky(_$("redo"), 'editAreaButtonNormal', false); + this.resync_highlight(true); + //alert("undo"+this.previous.length); + this.check_file_changes(); + } + }; + + EditArea.prototype.redo= function(){ + if(this.next.length > 0) + { + /*this.getIESelection();*/ + //var pos_cursor=this.textarea.selectionStart; + var next= this.next.pop(); + this.previous.push(next); + this.textarea.value= next["text"]; + this.last_undo= next["text"]; + this.area_select(next["selStart"], next["selEnd"]-next["selStart"]); + this.switchClassSticky(_$("undo"), 'editAreaButtonNormal', false); + this.resync_highlight(true); + this.check_file_changes(); + } + if( this.next.length == 0) + this.switchClassSticky(_$("redo"), 'editAreaButtonDisabled', true); + }; + + EditArea.prototype.check_redo= function(){ + if(editArea.next.length == 0 || editArea.textarea.value!=editArea.last_undo){ + editArea.next= []; // undo the ability to use "redo" button + editArea.switchClassSticky(_$("redo"), 'editAreaButtonDisabled', true); + } + else + { + this.switchClassSticky(_$("redo"), 'editAreaButtonNormal', false); + } + }; + + + // functions that manage icons roll over, disabled, etc... + EditArea.prototype.switchClass = function(element, class_name, lock_state) { + var lockChanged = false; + + if (typeof(lock_state) != "undefined" && element != null) { + element.classLock = lock_state; + lockChanged = true; + } + + if (element != null && (lockChanged || !element.classLock)) { + element.oldClassName = element.className; + element.className = class_name; + } + }; + + EditArea.prototype.restoreAndSwitchClass = function(element, class_name) { + if (element != null && !element.classLock) { + this.restoreClass(element); + this.switchClass(element, class_name); + } + }; + + EditArea.prototype.restoreClass = function(element) { + if (element != null && element.oldClassName && !element.classLock) { + element.className = element.oldClassName; + element.oldClassName = null; + } + }; + + EditArea.prototype.setClassLock = function(element, lock_state) { + if (element != null) + element.classLock = lock_state; + }; + + EditArea.prototype.switchClassSticky = function(element, class_name, lock_state) { + var lockChanged = false; + if (typeof(lock_state) != "undefined" && element != null) { + element.classLock = lock_state; + lockChanged = true; + } + + if (element != null && (lockChanged || !element.classLock)) { + element.className = class_name; + element.oldClassName = class_name; + } + }; + + //make the "page up" and "page down" buttons works correctly + EditArea.prototype.scroll_page= function(params){ + var dir= params["dir"], shift_pressed= params["shift"]; + var lines= this.textarea.value.split("\n"); + var new_pos=0, length=0, char_left=0, line_nb=0, curLine=0; + var toScrollAmount = _$("result").clientHeight -30; + var nbLineToScroll = 0, diff= 0; + + if(dir=="up"){ + nbLineToScroll = Math.ceil( toScrollAmount / this.lineHeight ); + + // fix number of line to scroll + for( i = this.last_selection["line_start"]; i - diff > this.last_selection["line_start"] - nbLineToScroll ; i-- ) + { + if( elem = _$('line_'+ i) ) + { + diff += Math.floor( ( elem.offsetHeight - 1 ) / this.lineHeight ); + } + } + nbLineToScroll -= diff; + + if(this.last_selection["selec_direction"]=="up"){ + for(line_nb=0; line_nb< Math.min(this.last_selection["line_start"]-nbLineToScroll, lines.length); line_nb++){ + new_pos+= lines[line_nb].length + 1; + } + char_left=Math.min(lines[Math.min(lines.length-1, line_nb)].length, this.last_selection["curr_pos"]-1); + if(shift_pressed) + length=this.last_selection["selectionEnd"]-new_pos-char_left; + this.area_select(new_pos+char_left, length); + view="top"; + }else{ + view="bottom"; + for(line_nb=0; line_nb< Math.min(this.last_selection["line_start"]+this.last_selection["line_nb"]-1-nbLineToScroll, lines.length); line_nb++){ + new_pos+= lines[line_nb].length + 1; + } + char_left=Math.min(lines[Math.min(lines.length-1, line_nb)].length, this.last_selection["curr_pos"]-1); + if(shift_pressed){ + //length=this.last_selection["selectionEnd"]-new_pos-char_left; + start= Math.min(this.last_selection["selectionStart"], new_pos+char_left); + length= Math.max(new_pos+char_left, this.last_selection["selectionStart"] )- start ; + if(new_pos+char_left < this.last_selection["selectionStart"]) + view="top"; + }else + start=new_pos+char_left; + this.area_select(start, length); + + } + } + else + { + var nbLineToScroll= Math.floor( toScrollAmount / this.lineHeight ); + // fix number of line to scroll + for( i = this.last_selection["line_start"]; i + diff < this.last_selection["line_start"] + nbLineToScroll ; i++ ) + { + if( elem = _$('line_'+ i) ) + { + diff += Math.floor( ( elem.offsetHeight - 1 ) / this.lineHeight ); + } + } + nbLineToScroll -= diff; + + if(this.last_selection["selec_direction"]=="down"){ + view="bottom"; + for(line_nb=0; line_nb< Math.min(this.last_selection["line_start"]+this.last_selection["line_nb"]-2+nbLineToScroll, lines.length); line_nb++){ + if(line_nb==this.last_selection["line_start"]-1) + char_left= this.last_selection["selectionStart"] -new_pos; + new_pos+= lines[line_nb].length + 1; + + } + if(shift_pressed){ + length=Math.abs(this.last_selection["selectionStart"]-new_pos); + length+=Math.min(lines[Math.min(lines.length-1, line_nb)].length, this.last_selection["curr_pos"]); + //length+=Math.min(lines[Math.min(lines.length-1, line_nb)].length, char_left); + this.area_select(Math.min(this.last_selection["selectionStart"], new_pos), length); + }else{ + this.area_select(new_pos+char_left, 0); + } + + }else{ + view="top"; + for(line_nb=0; line_nb< Math.min(this.last_selection["line_start"]+nbLineToScroll-1, lines.length, lines.length); line_nb++){ + if(line_nb==this.last_selection["line_start"]-1) + char_left= this.last_selection["selectionStart"] -new_pos; + new_pos+= lines[line_nb].length + 1; + } + if(shift_pressed){ + length=Math.abs(this.last_selection["selectionEnd"]-new_pos-char_left); + length+=Math.min(lines[Math.min(lines.length-1, line_nb)].length, this.last_selection["curr_pos"])- char_left-1; + //length+=Math.min(lines[Math.min(lines.length-1, line_nb)].length, char_left); + this.area_select(Math.min(this.last_selection["selectionEnd"], new_pos+char_left), length); + if(new_pos+char_left > this.last_selection["selectionEnd"]) + view="bottom"; + }else{ + this.area_select(new_pos+char_left, 0); + } + + } + } + //console.log( new_pos, char_left, length, nbLineToScroll, toScrollAmount, _$("result").clientHeigh ); + this.check_line_selection(); + this.scroll_to_view(view); + }; + + EditArea.prototype.start_resize= function(e){ + parent.editAreaLoader.resize["id"] = editArea.id; + parent.editAreaLoader.resize["start_x"] = (e)? e.pageX : event.x + document.body.scrollLeft; + parent.editAreaLoader.resize["start_y"] = (e)? e.pageY : event.y + document.body.scrollTop; + if(editArea.isIE) + { + editArea.textarea.focus(); + editArea.getIESelection(); + } + parent.editAreaLoader.resize["selectionStart"] = editArea.textarea.selectionStart; + parent.editAreaLoader.resize["selectionEnd"] = editArea.textarea.selectionEnd; + parent.editAreaLoader.start_resize_area(); + }; + + EditArea.prototype.toggle_full_screen= function(to){ + var t=this, p=parent, a=t.textarea, html, frame, selStart, selEnd, old, icon; + if(typeof(to)=="undefined") + to= !t.fullscreen['isFull']; + old = t.fullscreen['isFull']; + t.fullscreen['isFull']= to; + icon = _$("fullscreen"); + selStart = t.textarea.selectionStart; + selEnd = t.textarea.selectionEnd; + html = p.document.getElementsByTagName("html")[0]; + frame = p.document.getElementById("frame_"+t.id); + + if(to && to!=old) + { // toogle on fullscreen + + t.fullscreen['old_overflow'] = p.get_css_property(html, "overflow"); + t.fullscreen['old_height'] = p.get_css_property(html, "height"); + t.fullscreen['old_width'] = p.get_css_property(html, "width"); + t.fullscreen['old_scrollTop'] = html.scrollTop; + t.fullscreen['old_scrollLeft'] = html.scrollLeft; + t.fullscreen['old_zIndex'] = p.get_css_property(frame, "z-index"); + if(t.isOpera){ + html.style.height = "100%"; + html.style.width = "100%"; + } + html.style.overflow = "hidden"; + html.scrollTop = 0; + html.scrollLeft = 0; + + frame.style.position = "absolute"; + frame.style.width = html.clientWidth+"px"; + frame.style.height = html.clientHeight+"px"; + frame.style.display = "block"; + frame.style.zIndex = "999999"; + frame.style.top = "0px"; + frame.style.left = "0px"; + + // if the iframe was in a div with position absolute, the top and left are the one of the div, + // so I fix it by seeing at witch position the iframe start and correcting it + frame.style.top = "-"+p.calculeOffsetTop(frame)+"px"; + frame.style.left = "-"+p.calculeOffsetLeft(frame)+"px"; + + // parent.editAreaLoader.execCommand(t.id, "update_size();"); + // var body=parent.document.getElementsByTagName("body")[0]; + // body.appendChild(frame); + + t.switchClassSticky(icon, 'editAreaButtonSelected', false); + t.fullscreen['allow_resize']= t.resize_allowed; + t.allow_resize(false); + + //t.area_select(selStart, selEnd-selStart); + + + // opera can't manage to do a direct size update + if(t.isFirefox){ + p.editAreaLoader.execCommand(t.id, "update_size();"); + t.area_select(selStart, selEnd-selStart); + t.scroll_to_view(); + t.focus(); + }else{ + setTimeout("parent.editAreaLoader.execCommand('"+ t.id +"', 'update_size();');editArea.focus();", 10); + } + + + } + else if(to!=old) + { // toogle off fullscreen + frame.style.position="static"; + frame.style.zIndex= t.fullscreen['old_zIndex']; + + if(t.isOpera) + { + html.style.height = "auto"; + html.style.width = "auto"; + html.style.overflow = "auto"; + } + else if(t.isIE && p!=top) + { // IE doesn't manage html overflow in frames like in normal page... + html.style.overflow = "auto"; + } + else + { + html.style.overflow = t.fullscreen['old_overflow']; + } + html.scrollTop = t.fullscreen['old_scrollTop']; + html.scrollLeft = t.fullscreen['old_scrollLeft']; + + p.editAreaLoader.hide(t.id); + p.editAreaLoader.show(t.id); + + t.switchClassSticky(icon, 'editAreaButtonNormal', false); + if(t.fullscreen['allow_resize']) + t.allow_resize(t.fullscreen['allow_resize']); + if(t.isFirefox){ + t.area_select(selStart, selEnd-selStart); + setTimeout("editArea.scroll_to_view();", 10); + } + + //p.editAreaLoader.remove_event(p.window, "resize", editArea.update_size); + } + + }; + + EditArea.prototype.allow_resize= function(allow){ + var resize= _$("resize_area"); + if(allow){ + + resize.style.visibility="visible"; + parent.editAreaLoader.add_event(resize, "mouseup", editArea.start_resize); + }else{ + resize.style.visibility="hidden"; + parent.editAreaLoader.remove_event(resize, "mouseup", editArea.start_resize); + } + this.resize_allowed= allow; + }; + + + EditArea.prototype.change_syntax= function(new_syntax, is_waiting){ + // alert("cahnge to "+new_syntax); + // the syntax is the same + if(new_syntax==this.settings['syntax']) + return true; + + // check that the syntax is one allowed + var founded= false; + for(var i=0; i"; + elem.innerHTML= "*"+ this.files[id]['title'] + close +""; + _$('tab_browsing_list').appendChild(elem); + var elem= document.createElement('text'); + this.update_size(); + } + + // open file callback (for plugin) + if(id!="") + this.execCommand('file_open', this.files[id]); + + this.switch_to_file(id, true); + return true; + } + else + return false; + }; + + // close the given file + EditArea.prototype.close_file= function(id){ + if(this.files[id]) + { + this.save_file(id); + + // close file callback + if(this.execCommand('file_close', this.files[id])!==false) + { + // remove the tab in the toolbar + var li= _$(this.files[id]['html_id']); + li.parentNode.removeChild(li); + // select a new file + if(id== this.curr_file) + { + var next_file= ""; + var is_next= false; + for(var i in this.files) + { + if( is_next ) + { + next_file = i; + break; + } + else if( i == id ) + is_next = true; + else + next_file = i; + } + // display the next file + this.switch_to_file(next_file); + } + // clear datas + delete (this.files[id]); + this.update_size(); + } + } + }; + + // backup current file datas + EditArea.prototype.save_file= function(id){ + var t= this, save, a_links, a_selects, save_butt, img, i; + if(t.files[id]) + { + var save= t.files[id]; + save['last_selection'] = t.last_selection; + save['last_text_to_highlight'] = t.last_text_to_highlight; + save['last_hightlighted_text'] = t.last_hightlighted_text; + save['previous'] = t.previous; + save['next'] = t.next; + save['last_undo'] = t.last_undo; + save['smooth_selection'] = t.smooth_selection; + save['do_highlight'] = t.do_highlight; + save['syntax'] = t.settings['syntax']; + save['text'] = t.textarea.value; + save['scroll_top'] = t.result.scrollTop; + save['scroll_left'] = t.result.scrollLeft; + save['selection_start'] = t.last_selection["selectionStart"]; + save['selection_end'] = t.last_selection["selectionEnd"]; + save['font_size'] = t.settings["font_size"]; + save['font_family'] = t.settings["font_family"]; + save['word_wrap'] = t.settings["word_wrap"]; + save['toolbar'] = {'links':{}, 'selects': {}}; + + // save toolbar buttons state for fileSpecific buttons + a_links= _$("toolbar_1").getElementsByTagName("a"); + for( i=0; i