Subversion Repositories Sites.tela-botanica.org

Compare Revisions

No changes between revisions

Ignore whitespace Rev 419 → Rev 420

/trunk/wikini/maj_wikini/tools/hashcash/secret/.htaccess
New file
0,0 → 1,0
deny from all
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/hashcash/secret/wp-hashcash.lib
New file
0,0 → 1,49
<?php
 
define('HASHCASH_FORM_ACTION', 'wp-comments-post.php');
define('HASHCASH_SECRET_FILE', realpath(dirname(__FILE__) . '/') . '/wp-hashcash.key');
define('HASHCASH_FORM_ID', 'ACEditor');
define('HASHCASH_FORM_CLASS', 'page');
define('HASHCASH_REFRESH', 60*60*4);
define('HASHCASH_IP_EXPIRE', 60*60*24*7);
define('HASHCASH_VERSION', 3.2);
 
// Produce random unique strings
function hashcash_random_string($l, $exclude = array()) {
// Sanity check
if($l < 1){
return '';
}
$str = '';
while(in_array($str, $exclude) || strlen($str) < $l){
$str = '';
while(strlen($str) < $l){
$str .= chr(rand(65, 90) + rand(0, 1) * 32);
}
}
return $str;
}
 
// looks up the secret key
function hashcash_field_value(){
if(function_exists('file_get_contents')){
return file_get_contents(HASHCASH_SECRET_FILE);
} else {
$fp = fopen(HASHCASH_SECRET_FILE, 'r');
$data = fread($fp, @filesize(HASHCASH_SECRET_FILE));
fclose($fp);
return $data;
}
}
 
// Returns a phrase representing the product
function hashcash_verbage(){
 
$phrase = 'Protection anti-spam active';
 
return $phrase;
}
 
?>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/hashcash/secret/wp-hashcash.key
New file
0,0 → 1,0
1600348414
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/hashcash/wp-hashcash-js.php
New file
0,0 → 1,94
<?php
ob_start("ob_gzhandler");
require_once(realpath(dirname(__FILE__) . '/') . '/secret/wp-hashcash.lib');
$field_id = hashcash_random_string(rand(6,18));
$fn_enable_name = hashcash_random_string(rand(6,18));
?>
 
addLoadEvent(<?php echo $fn_enable_name; ?>);
 
function createHiddenField(){
var inp = document.createElement('input');
inp.setAttribute('type', 'hidden');
inp.setAttribute('id', '<?php echo $field_id; ?>');
inp.setAttribute('name', 'hashcash_value');
inp.setAttribute('value', '-1');
var e = document.getElementById('<?php echo HASHCASH_FORM_ID; ?>');
e.appendChild(inp);
}
 
function addVerbage(){
var e = getElementsByClass('<?php echo HASHCASH_FORM_CLASS; ?>');
var p = document.createElement('p');
p.innerHTML = '<?php echo str_replace("'", "\'", hashcash_verbage()); ?>';
e[0].appendChild(p);
}
 
function <?php echo $fn_enable_name;?>(){
createHiddenField();
addVerbage();
loadHashCashKey('<?php
echo $_GET['siteurl']; ?>/tools/hashcash/wp-hashcash-getkey.php', '<?php echo $field_id; ?>');
}
 
function loadHashCashKey(fragment_url, e_id) {
var xmlhttp=createXMLHttp();
var element = document.getElementById(e_id);
 
xmlhttp.open("GET", fragment_url, true);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
element.value = eval(xmlhttp.responseText);
}
}
 
xmlhttp.send(null);
}
 
function getElementsByClass(searchClass,node,tag) {
var classElements = new Array();
if ( node == null )
node = document;
if ( tag == null )
tag = '*';
var els = node.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
for (i = 0, j = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
}
 
function createXMLHttp() {
if (typeof XMLHttpRequest != "undefined")
return new XMLHttpRequest();
var xhrVersion = [ "MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp","Microsoft.XMLHttp" ];
for (var i = 0; i < xhrVersion.length; i++) {
try {
var xhrObj = new ActiveXObject(xhrVersion[i]);
return xhrObj;
} catch (e) { }
}
return null;
}
 
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
func();
oldonload();
}
}
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/hashcash/wiki.php
New file
0,0 → 1,23
<?php
// Partie publique
 
if (!defined("WIKINI_VERSION"))
{
die ("acc&egrave;s direct interdit");
}
 
$wikiClasses [] = 'Hashcash';
$wikiClassesContent [] = '
 
function FormOpen($method = "", $tag = "", $formMethod = "post") {
 
if (ereg("edit$", $this->href($method, $tag))) {
$result = "<form id=\"ACEditor\" name=\"ACEditor\" action=\"".$this->href($method, $tag)."\" method=\"".$formMethod."\">\n";
} else {
$result = "<form action=\"".$this->href($method, $tag)."\" method=\"".$formMethod."\">\n";
}
 
if (!$this->config["rewrite_mode"]) $result .= "<input type=\"hidden\" name=\"wiki\" value=\"".$this->MiniHref($method, $tag)."\" />\n";
return $result;
}
';
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/hashcash/desc.xml
New file
0,0 → 1,6
<?xml version="1.0" encoding="ISO-8859-1"?>
<plugin name="wkhasshcash" version="0.1" active="1">
<author>David</author>
<label>Hashcash adaptation pour wikini</label>
<desc>Hashcash adaptation pour wikini</desc>
</plugin>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/hashcash/index.php
New file
0,0 → 1,12
<?php
// index.php
// Administration de l'extension : initialisations (tables, fichier de configuration) , information etc. : toutes
// opérations réservées à l'administrateur technique de Wikini.
 
// Vérification de sécurité
if (!defined("TOOLS_MANAGER"))
{
die ("acc&egrave;s direct interdit");
}
 
?>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/hashcash/handlers/page/__edit.php
New file
0,0 → 1,22
<?php
/*
*/
if (!defined("WIKINI_VERSION"))
{
die ("acc&egrave;s direct interdit");
}
 
 
if ($this->HasAccess("write") && $this->HasAccess("read"))
{
if ($_POST["submit"] == 'Sauver') {
require_once('tools/hashcash/secret/wp-hashcash.lib');
if($_POST["hashcash_value"] != hashcash_field_value()) {
$this->SetMessage("Cette page n\'a pas &eacute;t&eacute; enregistr&eacute;e car ce wiki pense que vous etes un robot !");
$this->Redirect($this->href());
}
}
}
 
?>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/hashcash/handlers/page/edit__.php
New file
0,0 → 1,56
<?php
/*
*/
if (!defined("WIKINI_VERSION"))
{
die ("acc&egrave;s direct interdit");
}
 
 
if ($this->HasAccess("write") && $this->HasAccess("read"))
{
// Edition
if ($_POST["submit"] != 'Aperçu' && $_POST["submit"] != 'Sauver') {
require_once('tools/hashcash/secret/wp-hashcash.lib');
 
// UPDATE RANDOM SECRET
$curr = @file_get_contents(HASHCASH_SECRET_FILE);
if(empty($curr) || (time() - @filemtime(HASHCASH_SECRET_FILE)) > HASHCASH_REFRESH){
// update our secret
$fp = fopen(HASHCASH_SECRET_FILE, 'w');
 
if(@flock($fp, LOCK_EX)){
fwrite($fp, rand(21474836, 2126008810));
@flock($fp, LOCK_UN);
}
 
fclose($fp);
}
if (substr($this->config['base_url'],0,4)!="http") { // Wakka.config mal configure
$base_url="http://".$_SERVER["SERVER_NAME"].($_SERVER["SERVER_PORT"] != 80 ? ":".$_SERVER["SERVER_PORT"] : "").$_SERVER["REQUEST_URI"].(preg_match("/".preg_quote("wakka.php")."$/", $_SERVER["REQUEST_URI"]) ? "?wiki=" : "");
$a = parse_url($base_url);
}
else {
$a = parse_url($this->config['base_url']);
}
$siteurl = ($a['scheme'].'://'.$a['host'].dirname($a['path']));
 
 
$ChampsHashcash =
'<script type="text/javascript" src="' . $siteurl . '/tools/hashcash/wp-hashcash-js.php?siteurl='.$siteurl.'"></script>';
$plugin_output_new=preg_replace ('/\<input name=\"submit\" type=\"submit\" value=\"Sauver\"/',
$ChampsHashcash.'<input name="submit" type="submit" value="Sauver"', $plugin_output_new);
}
 
}
 
?>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/hashcash/handlers/page/__addcomment.php
New file
0,0 → 1,11
<?php
 
if (!defined("WIKINI_VERSION"))
{
die ("acc&egrave;s direct interdit");
}
 
$this->SetMessage("Commentaires desactives");
$this->Redirect($this->href());
 
?>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/hashcash/wp-hashcash-getkey.php
New file
0,0 → 1,149
<?php
 
require_once(realpath(dirname(__FILE__) . '/') . '/secret/wp-hashcash.lib');
 
header("Pragma: no-cache");
header("Expires: 0");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
$expired = array();
 
$function_name = hashcash_random_string(rand(6,18));
$expired [] = $function_name;
 
$js = "function $function_name (){";
 
$type = rand(0, 3) * 0;
switch($type){
/* Addition of n times of field value / n, + modulus:
Time guarantee: 100 iterations or less */
case 0:
$eax = hashcash_random_string(rand(8,10), $expired);
$expired [] = $eax;
$val = hashcash_field_value();
$inc = rand($val / 100, $val - 1);
$n = floor($val / $inc);
$r = $val % $inc;
$js .= "var $eax = $inc; ";
for($i = 0; $i < $n - 1; $i++){
$js .= "$eax += $inc; ";
}
$js .= "$eax += $r; ";
$js .= "return $eax; ";
break;
/* Conversion from binary:
Time guarantee: log(n) iterations or less */
case 1:
$eax = hashcash_random_string(rand(8,10), $expired);
$expired [] = $eax;
$ebx = hashcash_random_string(rand(8,10), $expired);
$expired [] = $ebx;
$ecx = hashcash_random_string(rand(8,10), $expired);
$expired [] = $ecx;
$val = hashcash_field_value();
$binval = strrev(base_convert($val, 10, 2));
$js .= "var $eax = \"$binval\"; ";
$js .= "var $ebx = 0; ";
$js .= "var $ecx = 0; ";
$js .= "while($ecx < $eax.length){ ";
$js .= "if($eax.charAt($ecx) == \"1\") { ";
$js .= "$ebx += Math.pow(2, $ecx); ";
$js .= "} ";
$js .= "$ecx++; ";
$js .= "} ";
$js .= "return $ebx; ";
break;
/* Multiplication of square roots:
Time guarantee: constant time */
case 2:
$val = hashcash_field_value();
$sqrt = floor(sqrt($val));
$r = $val - ($sqrt * $sqrt);
$js .= "return $sqrt * $sqrt + $r; ";
break;
/* Sum of random numbers to the final value:
Time guarantee: log(n) expected value */
case 3:
$val = hashcash_field_value();
$js .= "return ";
 
$i = 0;
while($val > 0){
if($i++ > 0)
$js .= "+";
$temp = rand(1, $val);
$val -= $temp;
$js .= $temp;
}
 
$js .= ";";
break;
}
$js .= "} $function_name ();";
 
// pack bytes
function strToLongs($s) {
$l = array();
// pad $s to some multiple of 4
$s = preg_split('//', $s, -1, PREG_SPLIT_NO_EMPTY);
while(count($s) % 4 != 0){
$s [] = ' ';
}
 
for ($i = 0; $i < ceil(count($s)/4); $i++) {
$l[$i] = ord($s[$i*4]) + (ord($s[$i*4+1]) << 8) + (ord($s[$i*4+2]) << 16) + (ord($s[$i*4+3]) << 24);
}
 
return $l;
}
 
// xor all the bytes with a random key
$key = rand(21474836, 2126008810);
$js = strToLongs($js);
 
for($i = 0; $i < count($js); $i++){
$js[$i] = $js[$i] ^ $key;
}
 
// libs function encapsulation
$libs_name = hashcash_random_string(rand(6,18), $expired);
$expired [] = $libs_name;
 
$libs = "function $libs_name(){";
 
// write bytes to javascript, xor with key
$data_name = hashcash_random_string(rand(6,18), $expired);
$expired [] = $data_name;
 
$libs .= "var $data_name = new Array(" . count($js) . "); ";
for($i = 0; $i < count($js); $i++){
$libs .= $data_name . '[' . $i . '] = ' . $js[$i] . ' ^ ' . $key .'; ';
}
 
// convert bytes back to string
$libs .= " var a = new Array($data_name.length); ";
$libs .= "for (var i=0; i<" . $data_name . ".length; i++) { ";
$libs .= 'a[i] = String.fromCharCode(' . $data_name .'[i] & 0xFF, ' . $data_name . '[i]>>>8 & 0xFF, ';
$libs .= $data_name . '[i]>>>16 & 0xFF, ' . $data_name . '[i]>>>24 & 0xFF); } ';
$libs .= "return eval(a.join('')); ";
 
// call libs function
$libs .= "} $libs_name();";
 
// return code
echo $libs;
?>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/toolsmng/icon.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/toolsmng/icon.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/toolsmng/desc.xml
New file
0,0 → 1,7
<?xml version="1.0" encoding="ISO-8859-1"?>
<plugin name="Plugins Manager" version="0.1" active="1">
<author>David Delon (auteur original : Olivier Meunier)</author>
<label>Gestionnaire d'extension</label>
<desc>Gestionnaire d'extensions pour Wikini.</desc>
</plugin>
/trunk/wikini/maj_wikini/tools/toolsmng/index.php
New file
0,0 → 1,144
<?php
 
// Vérification de sécurité
if (!defined("TOOLS_MANAGER"))
{
die ("acc&egrave;s direct interdit");
}
 
 
$err = '';
$tool_url = '';
 
# Liste des thèmes
$plugins_root = dirname(__FILE__).'/../';
$plugins = new plugins($plugins_root);
$plugins->getPlugins(false);
$plugins_list = $plugins->getPluginsList();
 
$is_writable = is_writable($plugins_root);
 
# Installation d'un thème
if ($is_writable && !empty($_GET['tool_url']))
{
$tool_url = $_GET['tool_url'];
$parsed_url = parse_url($tool_url);
if (empty($parsed_url['scheme']) || !preg_match('/^http|ftp$/',$parsed_url['scheme'])
|| empty($parsed_url['host']) || empty($parsed_url['path']))
{
$err = __('URL is not valid.');
}
else
{
if (($err = $plugins->install($tool_url)) === true)
{
header('Location: tools.php?p=toolsmng');
exit;
}
}
}
 
# Changement de status d'un plugin
$switch = (!empty($_GET['switch'])) ? $_GET['switch'] : '';
 
if ($is_writable && $switch != '' && in_array($switch,array_keys($plugins_list)) && $switch != 'toolsmng')
{
$plugins->switchStatus($switch);
header('Location: tools.php?p=toolsmng');
exit;
}
 
# Suppression d'un thème
$delete = (!empty($_GET['delete'])) ? $_GET['delete'] : '';
 
if ($is_writable && $delete != '' && in_array($delete,array_keys($plugins_list)) && $delete != 'toolsmng')
{
files::deltree($plugins_root.'/'.$delete);
header('Location: tools.php?p=toolsmng');
exit;
}
 
if($err != '')
{
buffer::str(
'<div class="erreur"><p><strong>'.__('Error(s)').' :</strong></p>'.$err.'</div>'
);
}
 
buffer::str(
'<h2>'.__('Plugins manager').'</h2>'.
'<h3>'.__('Install a plugin').'</h3>'
);
 
if (!$is_writable)
{
buffer::str(
'<p>'.sprintf(__('The folder %s is not writable, please check its permissions.'),
DC_ECRIRE.'/tools/').'</p>'
);
}
else
{
buffer::str(
'<form action="tools.php" method="get">'.
'<p><label for="tool_url">'.__('Please give the URL (http or ftp) of the plugin\'s file').' :</label>'.
form::field('tool_url',50,'',$tool_url).'</p>'.
'<p><input type="submit" class="submit" value="'.__('install').'" />'.
'<input type="hidden" name="p" value="toolsmng" /></p>'.
'</form>'
);
}
 
buffer::str(
'<p><a href="http://www.wikini.net">'.__('Install new plugins').'</a></p>'
);
 
# Traduction des plugins
foreach ($plugins_list as $k => $v)
{
$plugins->loadl10n($k);
$plugins_list[$k]['label'] = __($v['label']);
$plugins_list[$k]['desc'] = __($v['desc']);
}
 
# Tri des plugins par leur nom
uasort($plugins_list,create_function('$a,$b','return strcmp($a["label"],$b["label"]);'));
 
buffer::str(
'<h3>'.__('List of installed plugins').'</h3>'.
'<dl>'
);
 
foreach ($plugins_list as $k => $v)
{
buffer::str(
'<dt>'.__($v['label']).' - '.$k.'</dt>'.
'<dd>'.__($v['desc']).' <br />'.
'par '.$v['author'].' - '.__('version').' '.$v['version'].' <br />'
);
if ($k != 'toolsmng')
{
if (is_writable($plugins_root.$k.'/desc.xml')) {
$action = $v['active'] ? 'disable' : 'enable';
buffer::str('<a href="tools.php?p=toolsmng&switch='.$k.'">'.__($action).'</a>');
} else {
buffer::str('<em>'.sprintf(__('cannot enable/disable'),'desc.xml').'</em>');
}
if ($is_writable)
{
buffer::str(
' - <a href="tools.php?p=toolsmng&amp;delete='.$k.'" '.
'onclick="return window.confirm(\''.__('Are you sure you want to delete this plugin ?').'\')">'.
__('delete').'</a>'
);
}
}
buffer::str('</dd>');
}
buffer::str('</dl>');
?>
/trunk/wikini/maj_wikini/tools/prepend.php
New file
0,0 → 1,130
<?php
 
// Vérification de sécurité
if (!defined("WIKINI_VERSION"))
{
die ("acc&egrave;s direct interdit");
}
 
 
// Meme nom : remplace
// _Meme nom : avant
// Meme nom : _apres
 
 
require_once('libs/class.plugins.php');
 
 
Class WikiTools extends Wiki {
function Format($text, $formatter = "wakka") {
return $this->IncludeBuffered($formatter.".php", "<i>Impossible de trouver le formateur \"$formatter\"</i>", compact("text"),$this->config['formatter_path']);
}
function IncludeBuffered($filename, $notfoundText = "", $vars = "", $path = "") {
if ($path) $dirs = explode(":", $path);
else $dirs = array("");
$included['before']=array();
$included['new']=array();
$included['after']=array();
foreach($dirs as $dir) {
if ($dir) $dir .= "/";
$fullfilename = $dir.$filename;
if (strstr($filename,'page/')) {
list($file,$extension) = explode("page/", $filename);
$beforefullfilename = $dir.$file.'page/__'.$extension;
}
else {
$beforefullfilename = $dir.'__'.$filename;
}
list($file,$extension) = explode(".", $filename);
$afterfullfilename = $dir.$file.'__.'.$extension;
if (file_exists($beforefullfilename)) {
$included['before'][]=$beforefullfilename;
}
if (file_exists($fullfilename)) {
$included['new'][]=$fullfilename;
}
if (file_exists($afterfullfilename)) {
$included['after'][]=$afterfullfilename;
}
}
 
$plugin_output_before='';
$plugin_output_new='';
$plugin_output_after='';
$found=0;
if (is_array($vars)) extract($vars);
foreach ($included['before'] as $before) {
$found=1;
ob_start();
include($before);
$plugin_output_before.= ob_get_contents();
ob_end_clean();
}
foreach ($included['new'] as $new) {
$found=1;
ob_start();
require($new);
$plugin_output_new = ob_get_contents();
ob_end_clean();
break;
}
foreach ($included['after'] as $after) {
$found=1;
ob_start();
include($after);
$plugin_output_after.= ob_get_contents();
ob_end_clean();
}
if ($found) return $plugin_output_before.$plugin_output_new.$plugin_output_after;
if ($notfoundText) return $notfoundText;
else return false;
}
}
 
$plugins_root = 'tools/';
 
$objPlugins = new plugins($plugins_root);
$objPlugins->getPlugins(true);
$plugins_list = $objPlugins->getPluginsList();
 
$wakkaConfig['formatter_path']='formatters';
$wikiClasses [] = 'WikiTools';
$wikiClassesContent [] = '';
 
foreach ($plugins_list as $k => $v) {
if (file_exists($plugins_root.$k.'/wiki.php')) {
include($plugins_root.$k.'/wiki.php');
}
if (file_exists($plugins_root.$k.'/actions')) {
$wakkaConfig['action_path']=$plugins_root.$k.'/actions/'.':'.$wakkaConfig['action_path'];
}
if (file_exists($plugins_root.$k.'/handlers')) {
$wakkaConfig['handler_path']=$plugins_root.$k.'/handlers/'.':'.$wakkaConfig['handler_path'];
}
if (file_exists($plugins_root.$k.'/formatters')) {
$wakkaConfig['formatter_path']=$plugins_root.$k.'/formatters/'.':'.$wakkaConfig['formatter_path'];
}
}
 
for ($iw=0;$iw<count($wikiClasses);$iw++) {
if ($wikiClasses[$iw]!='WikiTools') {
eval('Class '. $wikiClasses[$iw] .' extends '. $wikiClasses[$iw-1] . ' { '.$wikiClassesContent[$iw].' }; ');
}
}
 
//$wiki = new WikiTools($wakkaConfig);
eval ('$wiki = new '.$wikiClasses[count($wikiClasses)-1]. '($wakkaConfig);');
 
?>
/trunk/wikini/maj_wikini/tools/attach/desc.xml
New file
0,0 → 1,6
<?xml version="1.0" encoding="ISO-8859-1"?>
<plugin name="wkattach" version="0.1" active="1">
<author>GarfieldFr</author>
<label>Attach</label>
<desc>Action permettant de joindre un fichier a Wikini</desc>
</plugin>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/attach/index.php
New file
0,0 → 1,12
<?php
// index.php
// Administration de l'extension : initialisations (tables, fichier de configuration) , information etc. : toutes
// opérations réservées à l'administrateur technique de Wikini.
 
// Vérification de sécurité
if (!defined("TOOLS_MANAGER"))
{
die ("acc&egrave;s direct interdit");
}
 
?>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/attach/actions/attach.php
New file
0,0 → 1,127
<?php
/*
attach.php
Code original de ce fichier : Eric FELDSTEIN
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de>
Copyright 2002, 2003 David DELON
Copyright 2002, 2003 Charles NEPOTE
Copyright 2003,2004 Eric FELDSTEIN
Copyright 2003 Jean-Pascal MILCENT
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
 
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/******************************************************************************
* DOCUMENTATION
*******************************************************************************
RESUME
L'action {{attach}} permet de lier un fichier à une page, d'uploader ce fichier
et de downloader ce fichier. Si le fichier est une image, elle est affichée
dans la page. Lorsque le fichier est sur le serveur, il est possible de faire
une mise à jour de celui-ci.
 
PARAMETRES DE L'ACTION
L'action {{attach}} prend les paramètres suivants :
- file ou attachfile: nom du fichier tel qu'il sera sur le serveur. Les
espaces sont remplacé par des "_". (OBLIGATOIRE)
- desc ou attachdesc: description du fichier. C'est le texte qui sera affiché
comme lien vers le fichier ou dans l'attribut alt de la balise <img>. Ce
paramètre est obligatoire pour les images pour être conforme au XHTML.
- delete ou attachdelete: Si ce paramètre est non vide alors le fichier sera
effacé sur le serveur.
- link ou attachlink: URL de lien pour une image sensible. le lien peut être
un nom de page WikiNi, un lien interwiki ou une adresse http
- class: indique le nom de la ou les classes de style à utiliser pour afficher
l'image. les noms des classes sont séparés par un espace.
 
EXEMPLES
- Attacher un fichier archive:
{{attach file="archive.zip"}}
- Attacher un fichier archive avec une description
{{attach file="archive.zip" desc="Code source de l'application"}}
- Supprimer un fichier:
{{attach file="archive.zip" delete="y"}}
- Afficher une image:
{{attach file="image.png" desc="voici une image"}}
- Afficher une image sensible:
{{attach file="image.png" desc="voici une image" link="PagePrincipale"}}
{{attach file="image.png" desc="voici une image" link="WikiNi:PagePrincipale"}}
{{attach file="image.png" desc="voici une image" link="http://www.wikini.net"}}
- Afficher une image collé sur le bord droit et sans contour:
{{attach file="image.png" desc="voici une image" class="right noborder"}}
 
INSTALLATION
1) Copiez le fichier attach.php dans le répertoire des actions (/actions)
2) Copiez le fichier attach.class.php dans le répertoire des actions (/actions)
3) Copiez le fichier attachfm.php dans le repertoire des actions (/actions)
4) Copiez le fichier filamanager.php dans le répertoire des handlers (/handlers/page)
5) Copiez le fichier upload.php dans le répertoire des handlers (/handlers/page)
6) Copiez le fichier download.php dans le répertoire des handlers (/handlers/page)
7) Créez le répertoire racine des uploads sur le site du wiki. Si le SAFE_MODE
de PHP est activé, vous devez créer vous même ce répertoire et autoriser
l'écriture dans ce répertoire pour l'utilisateur et le groupe.
8) Ouvrez le fichier wakka.config.php et ajoutez la configuration de l'action.
Tous les paramètres de configuration ont une valeur par défaut.
Le configuration par défaut est:
 
$wakkaConfig["attach_config"] = array(
"upload_path" => 'files', //repertoire racine des uploads
"ext_images" => 'gif|jpeg|png|jpg', //extension des fichiers images
"ext_script" => 'php|php3|asp|asx|vb|vbs|js', //extension des script(non utilisé)
"update_symbole" => '*', //symbole pour faire un update du fichier
"max_file_size" => 1024*2000, //taille maximum du fichier en octer (2M par défaut)
"fmDelete_symbole" => 'Supr', //symbole a afficher pour le lien "supprimer" dans le gestionnaire de fichier
"fmRestore_symbole" => 'Rest', //symbole a afficher pour le lien "restaurer" dans le gestionnaire de fichier
"fmTrash_symbole" => 'Poubelle') //symbole a afficher pour le lien "Poubelle" dans le gestionnaire de fichier
 
9) Ajoutez les classes de style au fichier wakka.css. Exemple de style :
.attach_margin05em { margin: 0.5em;}
.attach_margin1em { margin: 1em;}
.attach_left {float: left;}
.attach_right {float: right;}
.attach_noborder {border-width: 0px;}
.attach_vmiddle {vertical-align: text-bottom;}
 
10)Pour configurer l'aspect du gestionnnaire de fichier utiliser les classes de style .tableFM
tableFMCol1 et tableFMCol2
Exemple :
.tableFM {border: thin solid Black; width: 100%; }
.tableFM THEAD { background-color: Silver; font-weight: bold; text-align: center; }
.tableFM TFOOT { background-color: Silver; font-weight: bold; text-align: left; }
.tableFM TBODY TR { text-align: center; }
.tableFMCol1 { background-color: Aqua; }
.tableFMCol2 { background-color: Yellow; }
*******************************************************************************/
 
if (!defined("WIKINI_VERSION"))
{
die ("acc&egrave;s direct interdit");
}
 
 
if (!class_exists('attach')){
include('tools/attach/actions/attach.class.php');
}
$att = new attach($this);
$att->doAttach();
unset($att);
?>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/attach/actions/attachfm.php
New file
0,0 → 1,45
<?php
/*
attachfm.php
Code original de ce fichier : Eric FELDSTEIN
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de>
Copyright 2002, 2003 David DELON
Copyright 2002, 2003 Charles NEPOTE
Copyright 2003,2004 Eric FELDSTEIN
Copyright 2003 Jean-Pascal MILCENT
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
 
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
 
*/
 
if (!defined("WIKINI_VERSION"))
{
die ("acc&egrave;s direct interdit");
}
 
 
$url = $this->href('filemanager',$this->GetPageTag());
echo '<a href="'.$url.'"><span class="attachfm"><span>Gestion des fichiers attachés</span></span></a>';
?>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/attach/actions/attach.class.php
New file
0,0 → 1,689
<?php
/*
attach.class.php
Code original de ce fichier : Eric FELDSTEIN
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de>
Copyright 2002, 2003 David DELON
Copyright 2002, 2003 Charles NEPOTE
Copyright 2003,2004 Eric FELDSTEIN
Copyright 2003 Jean-Pascal MILCENT
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
 
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
# Classe de gestion de l'action {{attach}}
# voir actions/attach.php ppour la documentation
# copyrigth Eric Feldstein 2003-2004
 
if (!defined("WIKINI_VERSION"))
{
die ("acc&egrave;s direct interdit");
}
 
 
class attach {
var $wiki = ''; //objet wiki courant
var $attachConfig = array(); //configuration de l'action
var $file = ''; //nom du fichier
var $desc = ''; //description du fichier
var $link = ''; //url de lien (image sensible)
var $isPicture = 0; //indique si c'est une image
var $isAudio = 0; //indique si c'est un fichier audio
var $isFreeMindMindMap = 0; //indique si c'est un fichier miindmpa freemind
var $classes = ''; //classe pour afficher une image
var $attachErr = ''; //message d'erreur
var $pageId = 0; //identifiant de la page
var $isSafeMode = false; //indicateur du safe mode de PHP
/**
* Constructeur. Met les valeurs par defaut aux param�tres de configuration
*/
function attach(&$wiki){
$this->wiki = $wiki;
$this->attachConfig = $this->wiki->GetConfigValue("attach_config");
if (empty($this->attachConfig["ext_images"])) $this->attachConfig["ext_images"] = "gif|jpeg|png|jpg";
if (empty($this->attachConfig["ext_audio"])) $this->attachConfig["ext_audio"] = "mp3";
if (empty($this->attachConfig["ext_freemind"])) $this->attachConfig["ext_freemind"] = "mm";
if (empty($this->attachConfig["ext_script"])) $this->attachConfig["ext_script"] = "php|php3|asp|asx|vb|vbs|js";
if (empty($this->attachConfig['upload_path'])) $this->attachConfig['upload_path'] = 'files';
if (empty($this->attachConfig['update_symbole'])) $this->attachConfig['update_symbole'] = '*';
if (empty($this->attachConfig['max_file_size'])) $this->attachConfig['max_file_size'] = 1024*10000; //10000ko max
if (empty($this->attachConfig['fmDelete_symbole'])) $this->attachConfig['fmDelete_symbole'] = 'Supr';
if (empty($this->attachConfig['fmRestore_symbole'])) $this->attachConfig['fmRestore_symbole'] = 'Rest';
if (empty($this->attachConfig['fmTrash_symbole'])) $this->attachConfig['fmTrash_symbole'] = 'Poubelle';
$this->isSafeMode = ini_get("safe_mode");
}
/******************************************************************************
* FONCTIONS UTILES
*******************************************************************************/
/**
* Cr�ation d'une suite de r�pertoires r�cursivement
*/
function mkdir_recursif ($dir) {
if (strlen($dir) == 0) return 0;
if (is_dir($dir)) return 1;
elseif (dirname($dir) == $dir) return 1;
return ($this->mkdir_recursif(dirname($dir)) and mkdir($dir,0755));
}
/**
* Renvois le chemin du script
*/
function GetScriptPath () {
if (preg_match("/.(php)$/i",$_SERVER["PHP_SELF"])){
$a = explode('/',$_SERVER["PHP_SELF"]);
$a[count($a)-1] = '';
$path = implode('/',$a);
}else{
$path = $_SERVER["PHP_SELF"];
}
return !empty($_SERVER["HTTP_HOST"])? 'http://'.$_SERVER["HTTP_HOST"].$path : 'http://'.$_SERVER["SERVER_NAME"].$path ;
}
/**
* Calcul le repertoire d'upload en fonction du safe_mode
*/
function GetUploadPath(){
if ($this->isSafeMode) {
$path = $this->attachConfig['upload_path'];
}else{
$path = $this->attachConfig['upload_path'].'/'.$this->wiki->GetPageTag();
if (! is_dir($path)) $this->mkdir_recursif($path);
}
return $path;
}
/**
* Calcule le nom complet du fichier attach� en fonction du safe_mode, du nom et de la date de
* revision la page courante.
* Le nom du fichier "mon fichier.ext" attache � la page "LaPageWiki"sera :
* mon_fichier_datepage_update.ext
* update : date de derniere mise a jour du fichier
* datepage : date de revision de la page � laquelle le fichier a ete li�/mis a jour
* Si le fichier n'est pas une image un '_' est ajoute : mon_fichier_datepage_update.ext_
* Selon la valeur de safe_mode :
* safe_mode = on : LaPageWiki_mon_fichier_datepage_update.ext_
* safe_mode = off: LaPageWiki/mon_fichier_datepage_update.ext_ avec "LaPageWiki" un sous-repertoire du r�pertoire upload
*/
function GetFullFilename($newName = false){
$pagedate = $this->convertDate($this->wiki->page['time']);
//decompose le nom du fichier en nom+extension
if (preg_match('`^(.*)\.(.*)$`', str_replace(' ','_',$this->file), $match)){
list(,$file['name'],$file['ext'])=$match;
if(!$this->isPicture() && !$this->isAudio() && !$this->isFreeMindMindMap()) $file['ext'] .= '_';
}else{
return false;
}
//recuperation du chemin d'upload
$path = $this->GetUploadPath($this->isSafeMode);
//generation du nom ou recherche de fichier ?
if ($newName){
$full_file_name = $file['name'].'_'.$pagedate.'_'.$this->getDate().'.'.$file['ext'];
if($this->isSafeMode){
$full_file_name = $path.'/'.$this->wiki->GetPageTag().'_'.$full_file_name;
}else{
$full_file_name = $path.'/'.$full_file_name;
}
}else{
//recherche du fichier
if($this->isSafeMode){
//TODO Recherche dans le cas ou safe_mode=on
$searchPattern = '`^'.$this->wiki->GetPageTag().'_'.$file['name'].'_\d{14}_\d{14}\.'.$file['ext'].'$`';
}else{
$searchPattern = '`^'.$file['name'].'_\d{14}_\d{14}\.'.$file['ext'].'$`';
}
$files = $this->searchFiles($searchPattern,$path);
 
$unedate = 0;
foreach ($files as $file){
//recherche du fichier qui une datepage <= a la date de la page
if($file['datepage']<=$pagedate){
//puis qui a une dateupload la plus grande
if ($file['dateupload']>$unedate){
$theFile = $file;
$unedate = $file['dateupload'];
}
}
}
if (is_array($theFile)){
$full_file_name = $path.'/'.$theFile['realname'];
}
}
return $full_file_name;
}
/**
* Test si le fichier est une image
*/
function isPicture(){
return preg_match("/.(".$this->attachConfig["ext_images"].")$/i",$this->file)==1;
}
/**
* Test si le fichier est un fichier audio
*/
function isAudio(){
return preg_match("/.(".$this->attachConfig["ext_audio"].")$/i",$this->file)==1;
}
/**
* Test si le fichier est un fichier freemind mind map
*/
function isFreeMindMindMap(){
return preg_match("/.(".$this->attachConfig["ext_freemind"].")$/i",$this->file)==1;
}
 
/**
* Renvoie la date courante au format utilise par les fichiers
*/
function getDate(){
return date('YmdHis');
}
/**
* convertie une date yyyy-mm-dd hh:mm:ss au format yyyymmddhhmmss
*/
function convertDate($date){
$date = str_replace(' ','', $date);
$date = str_replace(':','', $date);
return str_replace('-','', $date);
}
/**
* Parse une date au format yyyymmddhhmmss et renvoie un tableau assiatif
*/
function parseDate($sDate){
$pattern = '`^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$`';
$res = '';
if (preg_match($pattern, $sDate, $m)){
//list(,$res['year'],$res['month'],$res['day'],$res['hour'],$res['min'],$res['sec'])=$m;
$res = $m[1].'-'.$m[2].'-'.$m[3].' '.$m[4].':'.$m[5].':'.$m[6];
}
return ($res?$res:false);
}
/**
* Decode un nom long de fichier
*/
function decodeLongFilename($filename){
$afile = array();
$afile['realname'] = basename($filename);
$afile['size'] = filesize($filename);
$afile['path'] = dirname($filename);
if(preg_match('`^(.*)_(\d{14})_(\d{14})\.(.*)(trash\d{14})?$`', $afile['realname'], $m)){
$afile['name'] = $m[1];
//suppression du nom de la page si safe_mode=on
if ($this->isSafeMode){
$afile['name'] = preg_replace('`^('.$this->wiki->tag.')_(.*)$`i', '$2', $afile['name']);
}
$afile['datepage'] = $m[2];
$afile['dateupload'] = $m[3];
$afile['trashdate'] = preg_replace('`(.*)trash(\d{14})`', '$2', $m[4]);
//suppression de trashxxxxxxxxxxxxxx eventuel
$afile['ext'] = preg_replace('`^(.*)(trash\d{14})$`', '$1', $m[4]);
$afile['ext'] = rtrim($afile['ext'],'_');
//$afile['ext'] = rtrim($m[4],'_');
}
return $afile;
}
/**
* Renvois un tableau des fichiers correspondant au pattern. Chaque element du tableau est un
* tableau associatif contenant les informations sur le fichier
*/
function searchFiles($filepattern,$start_dir){
$files_matched = array();
$start_dir = rtrim($start_dir,'\/');
$fh = opendir($start_dir);
while (($file = readdir($fh)) !== false) {
if (strcmp($file, '.')==0 || strcmp($file, '..')==0 || is_dir($file)) continue;
if (preg_match($filepattern, $file)){
$files_matched[] = $this->decodeLongFilename($start_dir.'/'.$file);
}
}
return $files_matched;
}
/******************************************************************************
* FONCTIONS D'ATTACHEMENTS
*******************************************************************************/
/**
* Test les param�tres pass� � l'action
*/
function CheckParams(){
//recuperation des parametres necessaire
$this->file = $this->wiki->GetParameter("attachfile");
if (empty($this->file)) $this->file = $this->wiki->GetParameter("file");
$this->desc = $this->wiki->GetParameter("attachdesc");
if (empty($this->desc)) $this->desc = $this->wiki->GetParameter("desc");
$this->link = $this->wiki->GetParameter("attachlink");//url de lien - uniquement si c'est une image
if (empty($this->link)) $this->link = $this->wiki->GetParameter("link");
//test de validit� des parametres
if (empty($this->file)){
$this->attachErr = $this->wiki->Format("//action attach : param�tre **file** manquant//---");
}
if ($this->isPicture() && empty($this->desc)){
$this->attachErr .= $this->wiki->Format("//action attach : param�tre **desc** obligatoire pour une image//---");
}
if ($this->wiki->GetParameter("class")) {
$array_classes = explode(" ", $this->wiki->GetParameter("class"));
foreach ($array_classes as $c) { $this->classes = $this->classes . "attach_" . $c . " "; }
$this->classes = trim($this->classes);
}
}
/**
* Affiche le fichier li� comme une image
*/
function showAsImage($fullFilename){
//c'est une image : balise <IMG..../>
$img = "<img src=\"".$this->GetScriptPath().$fullFilename."\" ".
"alt=\"".$this->desc.($this->link?"\nLien vers: $this->link":"")."\" />";
//test si c'est une image sensible
if(!empty($this->link)){
//c'est une image sensible
//test si le lien est un lien interwiki
if (preg_match("/^([A-Z][A-Z,a-z]+)[:]([A-Z,a-z,0-9]*)$/s", $this->link, $matches))
{ //modifie $link pour �tre un lien vers un autre wiki
$this->link = $this->wiki->GetInterWikiUrl($matches[1], $matches[2]);
}
//calcule du lien
$output = $this->wiki->Format('[['.$this->link." $this->file]]");
$output = eregi_replace(">$this->file<",">$img<",$output);//insertion du tag <img...> dans le lien
}else{
//ce n'est pas une image sensible
$output = $img;
}
$output = ($this->classes?"<span class=\"$this->classes\">$output</span>":$output);
echo $output;
$this->showUpdateLink();
}
/**
* Affiche le fichier li� comme un lien
*/
function showAsLink($fullFilename){
$url = $this->wiki->href("download",$this->wiki->GetPageTag(),"file=$this->file");
echo '<a href="'.$url.'">'.($this->desc?$this->desc:$this->file)."</a>";
$this->showUpdateLink();
}
// Affiche le fichier liee comme un fichier audio
function showAsAudio($fullFilename){
$output = "<object type=\"application/x-shockwave-flash\" data=\"tools/player/dewplayer.swf?son=$fullFilename&amp;bgcolor=FFFFFF\" width=\"200\"
height=\"20\"><param name=\"movie\" value=\"tools/player/dewplayer.swf?son=$fullFilename&amp;bgcolor=FFFFFF\"/></object>";
$output .= "<br></br>";
$output .="[<a href=\"$fullFilename\">mp3</a>]";
echo $output;
$this->showUpdateLink();
}
 
// Affiche le fichier liee comme un fichier mind map freemind
function showAsFreeMindMindMap($fullFilename){
$haut=$this->haut;
$large=$this->large;
if (!$haut) $haut = "650";
if (!$large) $large = "100%";
$mindmap_url = $this->wiki->href("download",$this->wiki->GetPageTag(),"file=$this->file");
$output = "<object type=\"application/x-shockwave-flash\" data=\"tools/freemind/visorFreemind.swf?initLoadFile=$fullFilename&amp;bgcolor=FFFFFF\" width=\"100%\"
height=\"650\"><param name=\"mindmap\" value=\"tools/freemind/visorFreemind.swf?initLoadFile=$fullFilename&amp;bgcolor=FFFFFF\"/></object>";
$output .= "<br></br>";
$output .="[<a href=\"$fullFilename\">mm</a>]";
echo $output;
$this->showUpdateLink();
}
 
 
// End Paste
 
 
 
/**
* Affiche le lien de mise � jour
*/
function showUpdateLink(){
echo " <a href=\"".
$this->wiki->href("upload",$this->wiki->GetPageTag(),"file=$this->file").
"\" title='Mise � jour'>".$this->attachConfig['update_symbole']."</a>";
}
/**
* Affiche un liens comme un fichier inexistant
*/
function showFileNotExits(){
echo $this->file."<a href=\"".$this->wiki->href("upload",$this->wiki->GetPageTag(),"file=$this->file")."\">?</a>";
}
/**
* Affiche l'attachement
*/
function doAttach(){
$this->CheckParams();
if ($this->attachErr) {
echo $this->attachErr;
return;
}
$fullFilename = $this->GetFullFilename();
//test d'existance du fichier
if((!file_exists($fullFilename))||($fullFilename=='')){
$this->showFileNotExits();
return;
}
//le fichier existe : affichage en fonction du type
if($this->isPicture()){
$this->showAsImage($fullFilename);
}else{
if($this->isAudio()){
$this->showAsAudio($fullFilename);
}
else {
if($this->isFreeMindMindMap()){
$this->showAsFreeMindMindMap($fullFilename);
}
else {
$this->showAsLink($fullFilename);
}
}
}
}
/******************************************************************************
* FONTIONS D'UPLOAD DE FICHIERS
*******************************************************************************/
/**
* Traitement des uploads
*/
function doUpload(){
$HasAccessWrite=$this->wiki->HasAccess("write");
if ($HasAccessWrite){
switch ($_SERVER["REQUEST_METHOD"]) {
case 'GET' : $this->showUploadForm(); break;
case 'POST': $this->performUpload(); break;
default : echo $this->wiki->Format("//Methode de requete invalide//---");
}
}else{
echo $this->wiki->Format("//Vous n'avez pas l'acc�s en �criture � cette page//---");
echo $this->wiki->Format("Retour � la page ".$this->wiki->GetPageTag());
}
}
/**
* Formulaire d'upload
*/
function showUploadForm(){
echo $this->wiki->Format("====Formulaire d'envois de fichier====\n---");
$this->file = $_GET['file'];
echo $this->wiki->Format("**Envois du fichier $this->file :**\n")
."<form enctype=\"multipart/form-data\" name=\"frmUpload\" method=\"POST\" action=\"".$_SERVER["PHP_SELF"]."\">\n"
." <input type=\"hidden\" name=\"wiki\" value=\"".$this->wiki->GetPageTag()."/upload\" />\n"
." <input TYPE=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"".$this->attachConfig['max_file_size']."\" />\n"
." <input type=\"hidden\" name=\"file\" value=\"$this->file\" />\n"
." <input type=\"file\" name=\"upFile\" size=\"50\" /><br />\n"
." <input type=\"submit\" value=\"Envoyer\" />\n"
."</form>\n";
}
/**
* Execute l'upload
*/
function performUpload(){
$this->file = $_POST['file'];
 
$destFile = $this->GetFullFilename(true); //nom du fichier destination
//test de la taille du fichier recu
if($_FILES['upFile']['error']==0){
$size = filesize($_FILES['upFile']['tmp_name']);
if ($size > $this->attachConfig['max_file_size']){
$_FILES['upFile']['error']=2;
}
}
switch ($_FILES['upFile']['error']){
case 0:
$srcFile = $_FILES['upFile']['tmp_name'];
if (move_uploaded_file($srcFile,$destFile)){
chmod($destFile,0644);
header("Location: ".$this->wiki->href("",$this->wiki->GetPageTag(),""));
}else{
echo $this->wiki->Format("//Erreur lors du d�placement du fichier temporaire//---");
}
break;
case 1:
echo $this->wiki->Format("//Le fichier t�l�charg� exc�de la taille de upload_max_filesize, configur� dans le php.ini.//---");
break;
case 2:
echo $this->wiki->Format("//Le fichier t�l�charg� exc�de la taille de MAX_FILE_SIZE, qui a �t� sp�cifi�e dans le formulaire HTML.//---");
break;
case 3:
echo $this->wiki->Format("//Le fichier n'a �t� que partiellement t�l�charg�.//---");
break;
case 4:
echo $this->wiki->Format("//Aucun fichier n'a �t� t�l�charg�.//---");
break;
}
echo $this->wiki->Format("Retour � la page ".$this->wiki->GetPageTag());
}
/******************************************************************************
* FUNCTIONS DE DOWNLOAD DE FICHIERS
*******************************************************************************/
function doDownload(){
$this->file = $_GET['file'];
$fullFilename = $this->GetUploadPath().'/'.basename(realpath($this->file).$this->file);
// $fullFilename = $this->GetUploadPath().'/'.$this->file;
if(!file_exists($fullFilename)){
$fullFilename = $this->GetFullFilename();
$dlFilename = $this->file;
$size = filesize($fullFilename);
}else{
$file = $this->decodeLongFilename($fullFilename);
$size = $file['size'];
$dlFilename =$file['name'].'.'.$file['ext'];
}
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Content-type: application/force-download");
header('Pragma: public');
header("Pragma: no-cache");// HTTP/1.0
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1
header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1
header('Content-Transfer-Encoding: none');
header('Content-Type: application/octet-stream; name="' . $dlFilename . '"'); //This should work for the rest
header('Content-Type: application/octetstream; name="' . $dlFilename . '"'); //This should work for IE & Opera
header('Content-Type: application/download; name="' . $dlFilename . '"'); //This should work for IE & Opera
header('Content-Disposition: attachment; filename="'.$dlFilename.'"');
header("Content-Description: File Transfer");
header("Content-length: $size".'bytes');
readfile($fullFilename);
}
/******************************************************************************
* FONTIONS DU FILEMANAGER
*******************************************************************************/
function doFileManager(){
$do = $_GET['do']?$_GET['do']:'';
switch ($do){
case 'restore' :
$this->fmRestore();
$this->fmShow(true);
break;
case 'erase' :
$this->fmErase();
$this->fmShow(true);
break;
case 'del' :
$this->fmDelete();
$this->fmShow();
break;
case 'trash' :
$this->fmShow(true); break;
case 'emptytrash' :
$this->fmEmptyTrash(); //pas de break car apres un emptytrash => retour au gestionnaire
default :
$this->fmShow();
}
}
/**
* Affiche la liste des fichiers
*/
function fmShow($trash=false){
$fmTitlePage = $this->wiki->Format("====Gestion des fichiers attach�s � la page ".$this->wiki->tag."====\n---");
if($trash){
//Avertissement
$fmTitlePage .= '<div class="prev_alert">Les fichiers effac�s sur cette page le sont d�finitivement</div>';
//Pied du tableau
$url = $this->wiki->Link($this->wiki->tag,'filemanager','Gestion des fichiers');
$fmFootTable = ' <tfoot>'."\n".
' <tr>'."\n".
' <td colspan="6">'.$url.'</td>'."\n";
$url = $this->wiki->Link($this->wiki->tag,'filemanager&do=emptytrash','Vider la poubelle');
$fmFootTable.= ' <td>'.$url.'</td>'."\n".
' </tr>'."\n".
' </tfoot>'."\n";
}else{
//pied du tableau
$url = '<a href="'.$this->wiki->href('filemanager',$this->wiki->GetPageTag(),'do=trash').'" title="Poubelle">'.$this->attachConfig['fmTrash_symbole']."</a>";
$fmFootTable = ' <tfoot>'."\n".
' <tr>'."\n".
' <td colspan="6">'.$url.'</td>'."\n".
' </tr>'."\n".
' </tfoot>'."\n";
}
//entete du tableau
$fmHeadTable = ' <thead>'."\n".
' <tr>'."\n".
' <td>&nbsp;</td>'."\n".
' <td>Nom du fichier</td>'."\n".
' <td>Nom r�el du fichier</td>'."\n".
' <td>Taille</td>'."\n".
' <td>R�vision de la page</td>'."\n".
' <td>R�vison du fichier</td>'."\n";
if($trash){
$fmHeadTable.= ' <td>Suppression</td>'."\n";
}
$fmHeadTable.= ' </tr>'."\n".
' </thead>'."\n";
//corps du tableau
$files = $this->fmGetFiles($trash);
$files = $this->sortByNameRevFile($files);
 
$fmBodyTable = ' <tbody>'."\n";
$i = 0;
foreach ($files as $file){
$i++;
$color= ($i%2?"tableFMCol1":"tableFMCol2");
//lien de suppression
if ($trash){
$url = $this->wiki->href('filemanager',$this->wiki->GetPageTag(),'do=erase&file='.$file['realname']);
}else{
$url = $this->wiki->href('filemanager',$this->wiki->GetPageTag(),'do=del&file='.$file['realname']);
}
$dellink = '<a href="'.$url.'" title="Supprimer">'.$this->attachConfig['fmDelete_symbole']."</a>";
//lien de restauration
$restlink = '';
if ($trash){
$url = $this->wiki->href('filemanager',$this->wiki->GetPageTag(),'do=restore&file='.$file['realname']);
$restlink = '<a href="'.$url.'" title="Restaurer">'.$this->attachConfig['fmRestore_symbole']."</a>";
}
 
//lien pour downloader le fichier
$url = $this->wiki->href("download",$this->wiki->GetPageTag(),"file=".$file['realname']);
$dlLink = '<a href="'.$url.'">'.$file['name'].'.'.$file['ext']."</a>";
$fmBodyTable .= ' <tr class="'.$color.'">'."\n".
' <td>'.$dellink.' '.$restlink.'</td>'."\n".
' <td>'.$dlLink.'</td>'."\n".
' <td>'.$file['realname'].'</td>'."\n".
' <td>'.$file['size'].'</td>'."\n".
' <td>'.$this->parseDate($file['datepage']).'</td>'."\n".
' <td>'.$this->parseDate($file['dateupload']).'</td>'."\n";
if($trash){
$fmBodyTable.= ' <td>'.$this->parseDate($file['trashdate']).'</td>'."\n";
}
$fmBodyTable .= ' </tr>'."\n";
}
$fmBodyTable .= ' </tbody>'."\n";
//pied de la page
$fmFooterPage = "---\n-----\n[[".$this->wiki->tag." Retour � la page ".$this->wiki->tag."]]\n";
//affichage
echo $fmTitlePage."\n";
echo '<table class="tableFM" border="0" cellspacing="0">'."\n".$fmHeadTable.$fmFootTable.$fmBodyTable.'</table>'."\n";
echo $this->wiki->Format($fmFooterPage);
}
/**
* Renvoie la liste des fichiers
*/
function fmGetFiles($trash=false){
$path = $this->GetUploadPath();
if($this->isSafeMode){
$filePattern = '^'.$this->wiki->GetPageTag().'_.*_\d{14}_\d{14}\..*';
}else{
$filePattern = '^.*_\d{14}_\d{14}\..*';
}
if($trash){
$filePattern .= 'trash\d{14}';
}else{
$filePattern .= '[^(trash\d{14})]';
}
return $this->searchFiles('`'.$filePattern.'$`', $path);
}
/**
* Vide la poubelle
*/
function fmEmptyTrash(){
$files = $this->fmGetFiles(true);
foreach ($files as $file){
$filename = $file['path'].'/'.$file['realname'];
if(file_exists($filename)){
unlink($filename);
}
}
}
/**
* Effacement d'un fichier dans la poubelle
*/
function fmErase(){
$path = $this->GetUploadPath();
$filename = $path.'/'.($_GET['file']?$_GET['file']:'');
if (file_exists($filename)){
unlink($filename);
}
}
/**
* Met le fichier a la poubelle
*/
function fmDelete(){
$path = $this->GetUploadPath();
$filename = $path.'/'.($_GET['file']?$_GET['file']:'');
if (file_exists($filename)){
$trash = $filename.'trash'.$this->getDate();
rename($filename, $trash);
}
}
/**
* Restauration d'un fichier mis a la poubelle
*/
function fmRestore(){
$path = $this->GetUploadPath();
$filename = $path.'/'.($_GET['file']?$_GET['file']:'');
if (file_exists($filename)){
$restFile = preg_replace('`^(.*\..*)trash\d{14}$`', '$1', $filename);
rename($filename, $restFile);
}
}
/**
* Tri tu tableau liste des fichiers par nom puis par date de revision(upload) du fichier, ordre croissant
*/
function sortByNameRevFile($files){
if (!function_exists('ByNameByRevFile')){
function ByNameByRevFile($f1,$f2){
$f1Name = $f1['name'].'.'.$f1['ext'];
$f2Name = $f2['name'].'.'.$f2['ext'];
$res = strcasecmp($f1Name, $f2Name);
if($res==0){
//si meme nom => compare la revision du fichier
$res = strcasecmp($f1['dateupload'], $f2['dateupload']);
}
return $res;
}
}
usort($files,'ByNameByRevFile');
return $files;
}
}
?>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/attach/handlers/page/filemanager.php
New file
0,0 → 1,58
<?php
/*
filemanager.php
Code original de ce fichier : Eric FELDSTEIN
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de>
Copyright 2002, 2003 David DELON
Copyright 2002, 2003 Charles NEPOTE
Copyright 2003,2004 Eric FELDSTEIN
Copyright 2003 Jean-Pascal MILCENT
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
 
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
# Execute le gestion des fichiers lier par l'action {{attach}}
# Necessite le fichier actions/attach.php pour fonctionner
# voir actions/attach.php ppour la documentation
# copyrigth Eric Feldstein 2003-2004
 
//vérification de sécurité
if (!WIKINI_VERSION) {
die ("acc&egrave;s direct interdit");
}
echo $this->Header();
?>
<div class="page">
<?php
if($this->UserIsOwner()){
if (!class_exists('attach')){
include('tools/attach/actions/attach.class.php');
}
$att = new attach($this);
$att->doFilemanager();
unset($att);
}else{
echo $this->Format("//Seul le propriétaire de cette page peut accéder au gestionnaire des fichiers attaché//");
}
?>
</div>
<?php echo $this->Footer(); ?>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/attach/handlers/page/upload.php
New file
0,0 → 1,55
<?php
/*
upload.php
Code original de ce fichier : Eric FELDSTEIN
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de>
Copyright 2002, 2003 David DELON
Copyright 2002, 2003 Charles NEPOTE
Copyright 2003,2004 Eric FELDSTEIN
Copyright 2003 Jean-Pascal MILCENT
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
 
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
# Execute l'upload des fichiers lier par l'action {{attach}}
# Necessite le fichier actions/attach.php pour fonctionner
# voir actions/attach.php ppour la documentation
# copyrigth Eric Feldstein 2003-2004
 
//vérification de sécurité
if (!WIKINI_VERSION) {
die ("acc&egrave;s direct interdit");
}
echo $this->Header();
?>
<div class="page">
<?php
 
if (!class_exists('attach')){
include('tools/attach/actions/attach.class.php');
}
$att = new attach($this);
$att->doUpload();
unset($att);
?>
</div>
<?php echo $this->Footer(); ?>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/attach/handlers/page/download.php
New file
0,0 → 1,48
<?php
/*
download.php
Code original de ce fichier : Eric FELDSTEIN
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de>
Copyright 2002, 2003 David DELON
Copyright 2002, 2003 Charles NEPOTE
Copyright 2003,2004 Eric FELDSTEIN
Copyright 2003 Jean-Pascal MILCENT
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
 
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
# Execute le download des fichiers lier par l'action {{attach}}
# Necessite le fichier actions/attach.php pour fonctionner
# voir actions/attach.php ppour la documentation
# copyrigth Eric Feldstein 2003-2004
 
//vérification de sécurité
if (!WIKINI_VERSION) {
die ("acc&egrave;s direct interdit");
}
if (!class_exists('attach')){
include('tools/attach/actions/attach.class.php');
}
$att = new attach($this);
$att->doDownload();
unset($att);
?>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/libs/lib.buffer.php
New file
0,0 → 1,46
<?php
# ***** BEGIN LICENSE BLOCK *****
# This file is part of DotClear.
# Copyright (c) 2004 Olivier Meunier and contributors. All rights
# reserved.
#
# DotClear is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# DotClear is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with DotClear; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# ***** END LICENSE BLOCK *****
 
class buffer
{
function init()
{
$GLOBALS['__dc_buffer'] = NULL;
}
function clean()
{
$GLOBALS['__dc_buffer'] = NULL;
}
function getContent()
{
return $GLOBALS['__dc_buffer'];
}
function str($str)
{
$GLOBALS['__dc_buffer'] .= $str;
}
}
 
?>
/trunk/wikini/maj_wikini/tools/libs/Auth.php
New file
0,0 → 1,1093
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker: */
 
/**
* The main include file for Auth package
*
* PHP versions 4 and 5
*
* LICENSE: This source file is subject to version 3.01 of the PHP license
* that is available through the world-wide-web at the following URI:
* http://www.php.net/license/3_01.txt. If you did not receive a copy of
* the PHP License and are unable to obtain it through the web, please
* send a note to license@php.net so we can mail you a copy immediately.
*
* @category Authentication
* @package Auth
* @author Martin Jansen <mj@php.net>
* @author Adam Ashley <aashley@php.net>
* @copyright 2001-2006 The PHP Group
* @license http://www.php.net/license/3_01.txt PHP License 3.01
* @version CVS: $Id: Auth.php,v 1.107 2006/08/10 03:01:15 aashley Exp $
* @link http://pear.php.net/package/Auth
*/
 
/**
* Returned if session exceeds idle time
*/
define('AUTH_IDLED', -1);
/**
* Returned if session has expired
*/
define('AUTH_EXPIRED', -2);
/**
* Returned if container is unable to authenticate user/password pair
*/
define('AUTH_WRONG_LOGIN', -3);
/**
* Returned if a container method is not supported.
*/
define('AUTH_METHOD_NOT_SUPPORTED', -4);
/**
* Returned if new Advanced security system detects a breach
*/
define('AUTH_SECURITY_BREACH', -5);
 
/**
* PEAR::Auth
*
* The PEAR::Auth class provides methods for creating an
* authentication system using PHP.
*
* @category Authentication
* @package Auth
* @author Martin Jansen <mj@php.net>
* @author Adam Ashley <aashley@php.net>
* @copyright 2001-2006 The PHP Group
* @license http://www.php.net/license/3_01.txt PHP License 3.01
* @version Release: @package_version@ File: $Revision: 1.107 $
* @link http://pear.php.net/package/Auth
*/
class Auth {
 
// {{{ properties
 
/**
* Auth lifetime in seconds
*
* If this variable is set to 0, auth never expires
*
* @var integer
* @see setExpire(), checkAuth()
*/
var $expire = 0;
 
/**
* Has the auth session expired?
*
* @var bool
* @see checkAuth()
*/
var $expired = false;
 
/**
* Maximum idletime in seconds
*
* The difference to $expire is, that the idletime gets
* refreshed each time checkAuth() is called. If this
* variable is set to 0, idletime is never checked.
*
* @var integer
* @see setIdle(), checkAuth()
*/
var $idle = 0;
 
/**
* Is the maximum idletime over?
*
* @var boolean
* @see checkAuth()
*/
var $idled = false;
 
/**
* Storage object
*
* @var object
* @see Auth(), validateLogin()
*/
var $storage = '';
 
/**
* User-defined function that creates the login screen
*
* @var string
*/
var $loginFunction = '';
 
/**
* Should the login form be displayed
*
* @var bool
* @see setShowlogin()
*/
var $showLogin = true;
/**
* Is Login Allowed from this page
*
* @var bool
* @see setAllowLogin
*/
var $allowLogin = true;
 
/**
* Current authentication status
*
* @var string
*/
var $status = '';
 
/**
* Username
*
* @var string
*/
var $username = '';
 
/**
* Password
*
* @var string
*/
var $password = '';
 
/**
* Login callback function name
*
* @var string
* @see setLoginCallback()
*/
var $loginCallback = '';
 
/**
* Failed Login callback function name
*
* @var string
* @see setFailedLoginCallback()
*/
var $loginFailedCallback = '';
 
/**
* Logout callback function name
*
* @var string
* @see setLogoutCallback()
*/
var $logoutCallback = '';
 
/**
* Auth session-array name
*
* @var string
*/
var $_sessionName = '_authsession';
 
/**
* Package Version
*
* @var string
*/
var $version = "@version@";
 
/**
* Flag to use advanced security
* When set extra checks will be made to see if the
* user's IP or useragent have changed across requests.
* Turned off by default to preserve BC.
*
* @var boolean
*/
var $advancedsecurity = false;
 
/**
* Username key in POST array
*
* @var string
*/
var $_postUsername = 'username';
 
/**
* Password key in POST array
*
* @var string
*/
var $_postPassword = 'password';
 
/**
* Holds a reference to the session auth variable
* @var array
*/
var $session;
 
/**
* Holds a reference to the global server variable
* @var array
*/
var $server;
 
/**
* Holds a reference to the global post variable
* @var array
*/
var $post;
 
/**
* Holds a reference to the global cookie variable
* @var array
*/
var $cookie;
 
/**
* A hash to hold various superglobals as reference
* @var array
*/
var $authdata;
/**
* How many times has checkAuth been called
* var int
*/
var $authChecks = 0;
 
// }}}
// {{{ Auth() [constructor]
 
/**
* Constructor
*
* Set up the storage driver.
*
* @param string Type of the storage driver
* @param mixed Additional options for the storage driver
* (example: if you are using DB as the storage
* driver, you have to pass the dsn string here)
*
* @param string Name of the function that creates the login form
* @param boolean Should the login form be displayed if neccessary?
* @return void
*/
function Auth($storageDriver, $options = '', $loginFunction = '', $showLogin = true)
{
$this->applyAuthOptions($options);
 
// Start the session suppress error if already started
if(!session_id()){
@session_start();
if(!session_id()) {
// Throw error
include_once 'PEAR.php';
PEAR::throwError('Session could not be started by Auth, '
.'possibly headers are already sent, try putting '
.'ob_start in the beginning of your script');
}
}
 
// Make Sure Auth session variable is there
if( !isset($_SESSION[$this->_sessionName])
&& !isset($GLOBALS['HTTP_SESSION_VARS'][$this->_sessionName])) {
isset($_SESSION)
? $_SESSION[$this->_sessionName] = array()
: $GLOBALS['HTTP_SESSION_VARS'][$this->_sessionName] = array();
}
 
// Assign Some globals to internal references, this will replace _importGlobalVariable
isset($_SESSION)
? $this->session =& $_SESSION[$this->_sessionName]
: $this->session =& $GLOBALS['HTTP_SESSION_VARS'][$this->_sessionName] ;
isset($_SERVER)
? $this->server =& $_SERVER
: $this->server =& $GLOBALS['HTTP_SERVER_VARS'];
isset($_POST)
? $this->post =& $_POST
: $this->post =& $GLOBALS['HTTP_POST_VARS'];
isset($_COOKIE)
? $this->cookie =& $_COOKIE
: $this->cookie =& $GLOBALS['HTTP_COOKIE_VARS'];
//isset($_GET) ? $var = &$_GET : $var = &$GLOBALS['HTTP_GET_VARS'];
 
if ($loginFunction != '' && is_callable($loginFunction)) {
$this->loginFunction = $loginFunction;
}
 
if (is_bool($showLogin)) {
$this->showLogin = $showLogin;
}
 
if (is_object($storageDriver)) {
$this->storage =& $storageDriver;
// Pass a reference to auth to the container, ugly but works
// this is used by the DB container to use method setAuthData not staticaly.
$this->storage->_auth_obj =& $this;
} else {
// $this->storage = $this->_factory($storageDriver, $options);
//
$this->storage_driver = $storageDriver;
$this->storage_options =& $options;
}
}
 
// }}}
// {{{ applyAuthOptions()
 
/**
* Set the Auth options
*
* Some options which are Auth specific will be applied
* the rest will be left for usage by the container
*
* @param array An array of Auth options
* @return array The options which were not applied
* @access private
*/
function &applyAuthOptions(&$options)
{
if(is_array($options)){
if (!empty($options['sessionName'])) {
$this->_sessionName = $options['sessionName'];
unset($options['sessionName']);
}
if (isset($options['allowLogin'])) {
$this->allowLogin = $options['allowLogin'];
unset($options['allowLogin']);
}
if (!empty($options['postUsername'])) {
$this->_postUsername = $options['postUsername'];
unset($options['postUsername']);
}
if (!empty($options['postPassword'])) {
$this->_postPassword = $options['postPassword'];
unset($options['postPassword']);
}
if (isset($options['advancedsecurity'])) {
$this->advancedsecurity = $options['advancedsecurity'];
unset($options['advancedsecurity']);
}
}
return($options);
}
 
// }}}
// {{{ _loadStorage()
/**
* Load Storage Driver if not already loaded
*
* Suspend storage instantiation to make Auth lighter to use
* for calls which do not require login
*
* @return bool True if the conainer is loaded, false if the container
* is already loaded
* @access private
*/
function _loadStorage()
{
if(!is_object($this->storage)) {
$this->storage =& $this->_factory($this->storage_driver,
$this->storage_options);
$this->storage->_auth_obj =& $this;
return(true);
}
return(false);
}
 
// }}}
// {{{ _factory()
 
/**
* Return a storage driver based on $driver and $options
*
* @static
* @param string $driver Type of storage class to return
* @param string $options Optional parameters for the storage class
* @return object Object Storage object
* @access private
*/
function &_factory($driver, $options = '')
{
$storage_class = 'Auth_Container_' . $driver;
include_once $driver . '.php';
$obj =& new $storage_class($options);
return $obj;
}
 
// }}}
// {{{ assignData()
 
/**
* Assign data from login form to internal values
*
* This function takes the values for username and password
* from $HTTP_POST_VARS/$_POST and assigns them to internal variables.
* If you wish to use another source apart from $HTTP_POST_VARS/$_POST,
* you have to derive this function.
*
* @global $HTTP_POST_VARS, $_POST
* @see Auth
* @return void
* @access private
*/
function assignData()
{
if ( isset($this->post[$this->_postUsername])
&& $this->post[$this->_postUsername] != '') {
$this->username = (get_magic_quotes_gpc() == 1
? stripslashes($this->post[$this->_postUsername])
: $this->post[$this->_postUsername]);
}
if ( isset($this->post[$this->_postPassword])
&& $this->post[$this->_postPassword] != '') {
$this->password = (get_magic_quotes_gpc() == 1
? stripslashes($this->post[$this->_postPassword])
: $this->post[$this->_postPassword] );
}
}
 
// }}}
// {{{ start()
 
/**
* Start new auth session
*
* @return void
* @access public
*/
function start()
{
$this->assignData();
if (!$this->checkAuth() && $this->allowLogin) {
$this->login();
}
}
 
// }}}
// {{{ login()
 
/**
* Login function
*
* @return void
* @access private
*/
function login()
{
$login_ok = false;
$this->_loadStorage();
// Check if using challenge response
(isset($this->post['authsecret']) && $this->post['authsecret'] == 1)
? $usingChap = true
: $usingChap = false;
 
// When the user has already entered a username, we have to validate it.
if (!empty($this->username)) {
if (true === $this->storage->fetchData($this->username, $this->password, $usingChap)) {
$this->session['challengekey'] = md5($this->username.$this->password);
$login_ok = true;
}
}
 
if (!empty($this->username) && $login_ok) {
$this->setAuth($this->username);
if (is_callable($this->loginCallback)) {
call_user_func_array($this->loginCallback, array($this->username, $this));
}
}
 
// If the login failed or the user entered no username,
// output the login screen again.
if (!empty($this->username) && !$login_ok) {
$this->status = AUTH_WRONG_LOGIN;
if (is_callable($this->loginFailedCallback)) {
call_user_func_array($this->loginFailedCallback, array($this->username, $this));
}
}
 
if ((empty($this->username) || !$login_ok) && $this->showLogin) {
if (is_callable($this->loginFunction)) {
call_user_func_array($this->loginFunction, array($this->username, $this->status, $this));
} else {
// BC fix Auth used to use drawLogin for this
// call is sub classes implement this
if (is_callable(array($this, 'drawLogin'))) {
return $this->drawLogin($this->username, $this);
}
 
// New Login form
include_once 'Html.php';
return Auth_Frontend_Html::render($this, $this->username);
}
} else {
return;
}
}
 
// }}}
// {{{ setExpire()
 
/**
* Set the maximum expire time
*
* @param integer time in seconds
* @param bool add time to current expire time or not
* @return void
* @access public
*/
function setExpire($time, $add = false)
{
$add ? $this->expire += $time : $this->expire = $time;
}
 
// }}}
// {{{ setIdle()
 
/**
* Set the maximum idle time
*
* @param integer time in seconds
* @param bool add time to current maximum idle time or not
* @return void
* @access public
*/
function setIdle($time, $add = false)
{
$add ? $this->idle += $time : $this->idle = $time;
}
 
// }}}
// {{{ setSessionName()
 
/**
* Set name of the session to a customized value.
*
* If you are using multiple instances of PEAR::Auth
* on the same domain, you can change the name of
* session per application via this function.
* This will chnage the name of the session variable
* auth uses to store it's data in the session
*
* @param string New name for the session
* @return void
* @access public
*/
function setSessionName($name = 'session')
{
$this->_sessionName = '_auth_'.$name;
isset($_SESSION)
? $this->session =& $_SESSION[$this->_sessionName]
: $this->session =& $GLOBALS['HTTP_SESSION_VARS'][$this->_sessionName] ;
}
 
// }}}
// {{{ setShowLogin()
 
/**
* Should the login form be displayed if neccessary?
*
* @param bool show login form or not
* @return void
* @access public
*/
function setShowLogin($showLogin = true)
{
$this->showLogin = $showLogin;
}
 
// }}}
// {{{ setAllowLogin()
 
/**
* Should the login form be displayed if neccessary?
*
* @param bool show login form or not
* @return void
* @access public
*/
function setAllowLogin($allowLogin = true)
{
$this->allowLogin = $allowLogin;
}
 
// }}}
// {{{ setLoginCallback()
/**
* Register a callback function to be called on user login.
* The function will receive two parameters, the username and a reference to the auth object.
*
* @param string callback function name
* @return void
* @see setLogoutCallback()
* @access public
*/
function setLoginCallback($loginCallback)
{
$this->loginCallback = $loginCallback;
}
 
// }}}
// {{{ setFailedLoginCallback()
 
/**
* Register a callback function to be called on failed user login.
* The function will receive a single parameter, the username and a reference to the auth object.
*
* @param string callback function name
* @return void
* @access public
*/
function setFailedLoginCallback($loginFailedCallback)
{
$this->loginFailedCallback = $loginFailedCallback;
}
 
// }}}
// {{{ setLogoutCallback()
 
/**
* Register a callback function to be called on user logout.
* The function will receive three parameters, the username and a reference to the auth object.
*
* @param string callback function name
* @return void
* @see setLoginCallback()
* @access public
*/
function setLogoutCallback($logoutCallback)
{
$this->logoutCallback = $logoutCallback;
}
 
// }}}
// {{{ setAuthData()
 
/**
* Register additional information that is to be stored
* in the session.
*
* @param string Name of the data field
* @param mixed Value of the data field
* @param boolean Should existing data be overwritten? (default
* is true)
* @return void
* @access public
*/
function setAuthData($name, $value, $overwrite = true)
{
if (!empty($this->session['data'][$name]) && $overwrite == false) {
return;
}
$this->session['data'][$name] = $value;
}
 
// }}}
// {{{ getAuthData()
 
/**
* Get additional information that is stored in the session.
*
* If no value for the first parameter is passed, the method will
* return all data that is currently stored.
*
* @param string Name of the data field
* @return mixed Value of the data field.
* @access public
*/
function getAuthData($name = null)
{
if (!isset($this->session['data'])) {
return null;
}
if(!isset($name)) {
return $this->session['data'];
}
if (isset($name) && isset($this->session['data'][$name])) {
return $this->session['data'][$name];
}
return null;
}
 
// }}}
// {{{ setAuth()
 
/**
* Register variable in a session telling that the user
* has logged in successfully
*
* @param string Username
* @return void
* @access public
*/
function setAuth($username)
{
// #2021 - Change the session id to avoid session fixation attacks php 4.3.3 >
// session_regenerate_id(true);
 
if (!isset($this->session) || !is_array($this->session)) {
$this->session = array();
}
 
if (!isset($this->session['data'])) {
$this->session['data'] = array();
}
 
$this->session['sessionip'] = isset($this->server['REMOTE_ADDR'])
? $this->server['REMOTE_ADDR']
: '';
$this->session['sessionuseragent'] = isset($this->server['HTTP_USER_AGENT'])
? $this->server['HTTP_USER_AGENT']
: '';
 
// This should be set by the container to something more safe
// Like md5(passwd.microtime)
if(empty($this->session['challengekey'])) {
$this->session['challengekey'] = md5($username.microtime());
}
 
$this->session['challengecookie'] = md5($this->session['challengekey'].microtime());
setcookie('authchallenge', $this->session['challengecookie']);
 
$this->session['registered'] = true;
$this->session['username'] = $username;
$this->session['timestamp'] = time();
$this->session['idle'] = time();
}
 
// }}}
// {{{ setAdvancedSecurity()
/**
* Enables advanced security checks
*
* Currently only ip change and useragent change
* are detected
* @todo Add challenge cookies - Create a cookie which changes every time
* and contains some challenge key which the server can verify with
* a session var cookie might need to be crypted (user pass)
* @param bool Enable or disable
* @return void
* @access public
*/
function setAdvancedSecurity($flag=true)
{
$this->advancedsecurity = $flag;
}
 
// }}}
// {{{ checkAuth()
 
/**
* Checks if there is a session with valid auth information.
*
* @access public
* @return boolean Whether or not the user is authenticated.
*/
function checkAuth()
{
$this->authChecks++;
if (isset($this->session)) {
// Check if authentication session is expired
if ( $this->expire > 0
&& isset($this->session['timestamp'])
&& ($this->session['timestamp'] + $this->expire) < time()) {
$this->expired = true;
$this->status = AUTH_EXPIRED;
$this->logout();
return false;
}
 
// Check if maximum idle time is reached
if ( $this->idle > 0
&& isset($this->session['idle'])
&& ($this->session['idle'] + $this->idle) < time()) {
$this->idled = true;
$this->status = AUTH_IDLED;
$this->logout();
return false;
}
 
if ( isset($this->session['registered'])
&& isset($this->session['username'])
&& $this->session['registered'] == true
&& $this->session['username'] != '') {
Auth::updateIdle();
 
if ($this->advancedsecurity) {
// Only Generate the challenge once
if($this->authChecks == 1) {
$this->session['challengecookieold'] = $this->session['challengecookie'];
$this->session['challengecookie'] = md5($this->session['challengekey'].microtime());
setcookie('authchallenge', $this->session['challengecookie']);
}
// Check for ip change
if ( isset($this->server['REMOTE_ADDR'])
&& $this->session['sessionip'] != $this->server['REMOTE_ADDR']) {
// Check if the IP of the user has changed, if so we
// assume a man in the middle attack and log him out
$this->expired = true;
$this->status = AUTH_SECURITY_BREACH;
$this->logout();
return false;
}
// Check for useragent change
if ( isset($this->server['HTTP_USER_AGENT'])
&& $this->session['sessionuseragent'] != $this->server['HTTP_USER_AGENT']) {
// Check if the User-Agent of the user has changed, if
// so we assume a man in the middle attack and log him out
$this->expired = true;
$this->status = AUTH_SECURITY_BREACH;
$this->logout();
return false;
}
// Check challenge cookie here, if challengecookieold is not set
// this is the first time and check is skipped
// TODO when user open two pages similtaneuly (open in new window,open
// in tab) auth breach is caused find out a way around that if possible
if ( isset($this->session['challengecookieold'])
&& $this->session['challengecookieold'] != $this->cookie['authchallenge']) {
$this->expired = true;
$this->status = AUTH_SECURITY_BREACH;
$this->logout();
$this->login();
return false;
}
}
 
return true;
}
}
return false;
}
 
// }}}
// {{{ staticCheckAuth() [static]
 
/**
* Statically checks if there is a session with valid auth information.
*
* @access public
* @see checkAuth
* @return boolean Whether or not the user is authenticated.
* @static
*/
function staticCheckAuth($options = null)
{
static $staticAuth;
if(!isset($staticAuth)) {
$staticAuth = new Auth('null', $options);
}
return $staticAuth->checkAuth();
}
 
// }}}
// {{{ getAuth()
 
/**
* Has the user been authenticated?
*
* @access public
* @return bool True if the user is logged in, otherwise false.
*/
function getAuth()
{
return $this->checkAuth();
}
 
// }}}
// {{{ logout()
 
/**
* Logout function
*
* This function clears any auth tokens in the currently
* active session and executes the logout callback function,
* if any
*
* @access public
* @return void
*/
function logout()
{
if (is_callable($this->logoutCallback)) {
call_user_func_array($this->logoutCallback, array($this->session['username'], $this));
}
 
$this->username = '';
$this->password = '';
$this->session = null;
}
 
// }}}
// {{{ updateIdle()
 
/**
* Update the idletime
*
* @access private
* @return void
*/
function updateIdle()
{
$this->session['idle'] = time();
}
 
// }}}
// {{{ getUsername()
 
/**
* Get the username
*
* @return string
* @access public
*/
function getUsername()
{
if (isset($this->session['username'])) {
return($this->session['username']);
}
return('');
}
 
// }}}
// {{{ getStatus()
 
/**
* Get the current status
*
* @return string
* @access public
*/
function getStatus()
{
return $this->status;
}
 
// }}}
// {{{ getPostUsernameField()
/**
* Gets the post varible used for the username
*
* @return string
* @access public
*/
function getPostUsernameField()
{
return($this->_postUsername);
}
 
// }}}
// {{{ getPostPasswordField()
 
/**
* Gets the post varible used for the username
*
* @return string
* @access public
*/
function getPostPasswordField()
{
return($this->_postPassword);
}
 
// }}}
// {{{ sessionValidThru()
 
/**
* Returns the time up to the session is valid
*
* @access public
* @return integer
*/
function sessionValidThru()
{
if (!isset($this->session['idle'])) {
return 0;
}
if ($this->idle == 0) {
return 0;
}
return ($this->session['idle'] + $this->idle);
}
 
// }}}
// {{{ listUsers()
 
/**
* List all users that are currently available in the storage
* container
*
* @access public
* @return array
*/
function listUsers()
{
$this->_loadStorage();
return $this->storage->listUsers();
}
 
// }}}
// {{{ addUser()
 
/**
* Add user to the storage container
*
* @access public
* @param string Username
* @param string Password
* @param mixed Additional parameters
* @return mixed True on success, PEAR error object on error
* and AUTH_METHOD_NOT_SUPPORTED otherwise.
*/
function addUser($username, $password, $additional = '')
{
$this->_loadStorage();
return $this->storage->addUser($username, $password, $additional);
}
 
// }}}
// {{{ removeUser()
 
/**
* Remove user from the storage container
*
* @access public
* @param string Username
* @return mixed True on success, PEAR error object on error
* and AUTH_METHOD_NOT_SUPPORTED otherwise.
*/
function removeUser($username)
{
$this->_loadStorage();
return $this->storage->removeUser($username);
}
 
// }}}
// {{{ changePassword()
 
/**
* Change password for user in the storage container
*
* @access public
* @param string Username
* @param string The new password
* @return mixed True on success, PEAR error object on error
* and AUTH_METHOD_NOT_SUPPORTED otherwise.
*/
function changePassword($username, $password)
{
$this->_loadStorage();
return $this->storage->changePassword($username, $password);
}
 
// }}}
 
}
?>
/trunk/wikini/maj_wikini/tools/libs/Container.php
New file
0,0 → 1,224
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker: */
 
/**
* Auth_Container Base Class
*
* PHP versions 4 and 5
*
* LICENSE: This source file is subject to version 3.01 of the PHP license
* that is available through the world-wide-web at the following URI:
* http://www.php.net/license/3_01.txt. If you did not receive a copy of
* the PHP License and are unable to obtain it through the web, please
* send a note to license@php.net so we can mail you a copy immediately.
*
* @category Authentication
* @package Auth
* @author Martin Jansen <mj@php.net>
* @author Adam Ashley <aashley@php.net>
* @copyright 2001-2006 The PHP Group
* @license http://www.php.net/license/3_01.txt PHP License 3.01
* @version CVS: $Id: Container.php,v 1.23 2006/03/02 06:53:08 aashley Exp $
* @link http://pear.php.net/package/Auth
*/
 
/**
* Storage class for fetching login data
*
* @category Authentication
* @package Auth
* @author Martin Jansen <mj@php.net>
* @author Adam Ashley <aashley@php.net>
* @copyright 2001-2006 The PHP Group
* @license http://www.php.net/license/3_01.txt PHP License 3.01
* @version Release: @package_version@ File: $Revision: 1.23 $
* @link http://pear.php.net/package/Auth
*/
class Auth_Container
{
 
// {{{ properties
 
/**
* User that is currently selected from the storage container.
*
* @access public
*/
var $activeUser = "";
 
// }}}
// {{{ Auth_Container() [constructor]
 
/**
* Constructor
*
* Has to be overwritten by each storage class
*
* @access public
*/
function Auth_Container()
{
}
 
// }}}
// {{{ fetchData()
 
/**
* Fetch data from storage container
*
* Has to be overwritten by each storage class
*
* @access public
*/
function fetchData($username, $password, $isChallengeResponse=false)
{
}
 
// }}}
// {{{ verifyPassword()
 
/**
* Crypt and verfiy the entered password
*
* @param string Entered password
* @param string Password from the data container (usually this password
* is already encrypted.
* @param string Type of algorithm with which the password from
* the container has been crypted. (md5, crypt etc.)
* Defaults to "md5".
* @return bool True, if the passwords match
*/
function verifyPassword($password1, $password2, $cryptType = "md5")
{
switch ($cryptType) {
case "crypt" :
return ( crypt($password1, $password2) == $password2 );
break;
case "none" :
case "" :
return ($password1 == $password2);
break;
case "md5" :
return (md5($password1) == $password2);
break;
default :
if (function_exists($cryptType)) {
return ($cryptType($password1) == $password2);
} elseif (method_exists($this,$cryptType)) {
return ($this->$cryptType($password1) == $password2);
} else {
return false;
}
break;
}
}
 
// }}}
// {{{ supportsChallengeResponse()
/**
* Returns true if the container supports Challenge Response
* password authentication
*/
function supportsChallengeResponse()
{
return(false);
}
 
// }}}
// {{{ getCryptType()
/**
* Returns the crypt current crypt type of the container
*
* @return string
*/
function getCryptType()
{
return('');
}
 
// }}}
// {{{ listUsers()
 
/**
* List all users that are available from the storage container
*/
function listUsers()
{
return AUTH_METHOD_NOT_SUPPORTED;
}
 
// }}}
// {{{ getUser()
 
/**
* Returns a user assoc array
*
* Containers which want should overide this
*
* @param string The username
*/
function getUser($username)
{
$users = $this->listUsers();
if ($users === AUTH_METHOD_NOT_SUPPORTED) {
return AUTH_METHOD_NOT_SUPPORTED;
}
for ($i=0; $c = count($users), $i<$c; $i++) {
if ($users[$i]['username'] == $username) {
return $users[$i];
}
}
return false;
}
 
// }}}
// {{{ addUser()
 
/**
* Add a new user to the storage container
*
* @param string Username
* @param string Password
* @param array Additional information
*
* @return boolean
*/
function addUser($username, $password, $additional=null)
{
return AUTH_METHOD_NOT_SUPPORTED;
}
 
// }}}
// {{{ removeUser()
 
/**
* Remove user from the storage container
*
* @param string Username
*/
function removeUser($username)
{
return AUTH_METHOD_NOT_SUPPORTED;
}
 
// }}}
// {{{ changePassword()
 
/**
* Change password for user in the storage container
*
* @param string Username
* @param string The new password
*/
function changePassword($username, $password)
{
return AUTH_METHOD_NOT_SUPPORTED;
}
 
// }}}
 
}
 
?>
/trunk/wikini/maj_wikini/tools/libs/Html.php
New file
0,0 → 1,141
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker: */
 
/**
* Standard Html Login form
*
* PHP versions 4 and 5
*
* LICENSE: This source file is subject to version 3.01 of the PHP license
* that is available through the world-wide-web at the following URI:
* http://www.php.net/license/3_01.txt. If you did not receive a copy of
* the PHP License and are unable to obtain it through the web, please
* send a note to license@php.net so we can mail you a copy immediately.
*
* @category Authentication
* @package Auth
* @author Martin Jansen <mj@php.net>
* @author Adam Ashley <aashley@php.net>
* @copyright 2001-2006 The PHP Group
* @license http://www.php.net/license/3_01.txt PHP License 3.01
* @version CVS: $Id: Html.php,v 1.10 2006/08/10 02:15:40 aashley Exp $
* @link http://pear.php.net/package/Auth
* @since File available since Release 1.3.0
*/
 
/**
* Standard Html Login form
*
* @category Authentication
* @package Auth
* @author Yavor Shahpasov <yavo@netsmart.com.cy>
* @author Adam Ashley <aashley@php.net>
* @copyright 2001-2006 The PHP Group
* @license http://www.php.net/license/3_01.txt PHP License 3.01
* @version Release: @package_version@ File: $Revision: 1.10 $
* @link http://pear.php.net/package/Auth
* @since Class available since Release 1.3.0
*/
class Auth_Frontend_Html {
// {{{ render()
 
/**
* Displays the login form
*
* @param object The calling auth instance
* @param string The previously used username
* @return void
*/
function render(&$caller, $username = '') {
$loginOnClick = 'return true;';
// Try To Use Challene response
// TODO javascript might need some improvement for work on other browsers
if($caller->advancedsecurity && $caller->storage->supportsChallengeResponse() ) {
 
// Init the secret cookie
$caller->session['loginchallenege'] = md5(microtime());
 
print "\n";
print '<script language="JavaScript">'."\n";
 
 
print "\n";
print ' function securePassword() { '."\n";
print ' var pass = document.getElementById(\''.$caller->getPostPasswordField().'\');'."\n";
print ' var secret = document.getElementById(\'authsecret\')'."\n";
//print ' alert(pass);alert(secret); '."\n";
 
// If using md5 for password storage md5 the password before
// we hash it with the secret
// print ' alert(pass.value);';
if ($caller->storage->getCryptType() == 'md5' ) {
print ' pass.value = hex_md5(pass.value); '."\n";
#print ' alert(pass.value);';
}
 
print ' pass.value = hex_md5(pass.value+\''.$caller->session['loginchallenege'].'\'); '."\n";
// print ' alert(pass.value);';
print ' secret.value = 1;'."\n";
print ' var doLogin = document.getElementById(\'doLogin\')'."\n";
print ' doLogin.disabled = true;'."\n";
print ' return true;';
print ' } '."\n";
print '</script>'."\n";;
print "\n";
 
$loginOnClick = ' return securePassword(); ';
}
 
print '<center>'."\n";
 
$status = '';
if (!empty($caller->status) && $caller->status == AUTH_EXPIRED) {
$status = '<i>Your session has expired. Please login again!</i>'."\n";
} else if (!empty($caller->status) && $caller->status == AUTH_IDLED) {
$status = '<i>You have been idle for too long. Please login again!</i>'."\n";
} else if (!empty ($caller->status) && $caller->status == AUTH_WRONG_LOGIN) {
$status = '<i>Wrong login data!</i>'."\n";
} else if (!empty ($caller->status) && $caller->status == AUTH_SECURITY_BREACH) {
$status = '<i>Security problem detected. </i>'."\n";
}
print '<form method="post" action="'.$caller->server['PHP_SELF'].'" '
.'onSubmit="'.$loginOnClick.'">'."\n";
print '<table border="0" cellpadding="2" cellspacing="0" '
.'summary="login form" align="center" >'."\n";
print '<tr>'."\n";
print ' <td colspan="2" bgcolor="#eeeeee"><strong>Login </strong>'
.$status.'</td>'."\n";
print '</tr>'."\n";
print '<tr>'."\n";
print ' <td>Username:</td>'."\n";
print ' <td><input type="text" id="'.$caller->getPostUsernameField()
.'" name="'.$caller->getPostUsernameField().'" value="' . $username
.'" /></td>'."\n";
print '</tr>'."\n";
print '<tr>'."\n";
print ' <td>Password:</td>'."\n";
print ' <td><input type="password" id="'.$caller->getPostPasswordField()
.'" name="'.$caller->getPostPasswordField().'" /></td>'."\n";
print '</tr>'."\n";
print '<tr>'."\n";
//onClick=" '.$loginOnClick.' "
print ' <td colspan="2" bgcolor="#eeeeee"><input value="Login" '
.'id="doLogin" name="doLogin" type="submit" /></td>'."\n";
print '</tr>'."\n";
print '</table>'."\n";
 
// Might be a good idea to make the variable name variable
print '<input type="hidden" id="authsecret" name="authsecret" value="" />';
print '</form>'."\n";
print '</center>'."\n";
}
 
// }}}
}
 
?>
/trunk/wikini/maj_wikini/tools/libs/class.plugins.php
New file
0,0 → 1,279
<?php
# ***** BEGIN LICENSE BLOCK *****
# This file is part of DotClear.
# Copyright (c) 2004 Olivier Meunier and contributors. All rights
# reserved.
#
# DotClear is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# DotClear is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with DotClear; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# ***** END LICENSE BLOCK *****
 
/*
Classe de gestion des plugins et des thèmes
*/
 
class plugins
{
var $location;
var $type;
var $_xml;
var $p_list = array();
function plugins($location,$type='plugin')
{
if (is_dir($location)) {
$this->location = $location.'/';
} else {
$this->location = NULL;
}
$this->type = $type;
}
function getPlugins($active_only=true)
{
if (($list_files = $this->_readDir()) !== false)
{
$this->p_list = array();
foreach ($list_files as $entry => $pfile)
{
if (($info = $this->_getPluginInfo($pfile)) !== false) {
if (($active_only && $info['active']) || !$active_only) {
$this->p_list[$entry] = $info;
}
}
}
ksort($this->p_list);
return true;
}
else
{
return false;
}
}
function getPluginsList()
{
return $this->p_list;
}
function getFunctions($f='functions.php')
{
$res = array();
if (($list_files = $this->_readDir()) !== false)
{
foreach ($list_files as $entry => $pfile)
{
if (file_exists(dirname($pfile).'/'.$f)) {
$res[] = dirname($pfile).'/'.$f;
}
}
}
return $res;
}
function loadCallbacks()
{
$res['onPost'] = array();
$ires = array_keys($res);
foreach ($this->p_list as $k => $v)
{
# Chargement des fichiers events.php
if (file_exists($this->location.$k.'/events.php'))
{
require_once $this->location.$k.'/events.php';
foreach ($v['callbacks'] as $f)
{
if (in_array($f[0],$ires))
{
$pf = explode('::',$f[1]);
if (count($pf) == 2 && is_callable($pf)) {
$res[$f[0]][] = $pf;
}
}
}
}
}
return $res;
}
function loadl10n($p)
{
if (defined('DC_LANG')) {
if (dc_encoding == 'UTF-8') {
l10n::set($this->location.$p.'/l10n/'.DC_LANG.'-utf8/main');
} else {
l10n::set($this->location.$p.'/l10n/'.DC_LANG.'/main');
}
}
}
function switchStatus($p)
{
$xml_path = $this->location.$p.'/desc.xml';
$p_info = $this->_getPluginInfo($xml_path);
$xml = implode('',file($xml_path));
$active = (integer) !$p_info['active'];
$xml = preg_replace('|(<'.$this->type.'[^>]*?active=)"([^"]+)([^>]*>)|ms',
'$1"'.$active.'$3',$xml);
if (!files::putContent($xml_path,$xml)) {
return false;
}
return true;
}
/* Installation d'un plugin */
function install($url)
{
$dest = $this->location.'/'.basename($url);
if ((!file_exists($dest)) && ($err = files::copyRemote($url,$dest) !== true)) {
return $err;
}
else
{
if (($content = @implode('',@gzfile($dest))) === false) {
return __('Cannot open file');
} else {
if (($list = unserialize($content)) === false)
{
return __('Plugin not valid');
}
else
{
if (is_dir($this->location.'/'.$list['name']))
{
/*if (files::deltree($this->location.'/'.$list['name']) === false)
{
return 'Impossible de supprimer le plugin existant';
}*/
unlink($dest);
return __('This plugin still exists. Delete it before.');
}
foreach ($list['dirs'] as $d)
{
mkdir ($this->location.'/'.$d,fileperms($this->location));
chmod($this->location.'/'.$d,fileperms($this->location));
}
foreach ($list['files'] as $f => $v)
{
$v = base64_decode($v);
$fp = fopen($this->location.'/'.$f,'w');
fwrite($fp,$v,strlen($v));
fclose($fp);
chmod($this->location.'/'.$f,fileperms($this->location) & ~0111);
}
unlink($dest);
}
}
}
return true;
}
/* Lecture d'un répertoire à la recherche des desc.xml */
function _readDir()
{
if ($this->location === NULL) {
return false;
}
$res = array();
$d = dir($this->location);
# Liste du répertoire des plugins
while (($entry = $d->read()) !== false)
{
if ($entry != '.' && $entry != '..' &&
is_dir($this->location.$entry) && file_exists($this->location.$entry.'/desc.xml'))
{
$res[$entry] = $this->location.$entry.'/desc.xml';
}
}
return $res;
}
function _getPluginInfo($p)
{
if (file_exists($p))
{
$this->_current_tag_cdata = '';
$this->_p_info = array('name'=>NULL,'version'=>NULL,
'active'=>NULL,'author'=>NULL,'label'=>NULL,
'desc'=>NULL,'callbacks'=>array());
$this->_xml = xml_parser_create('ISO-8859-1');
xml_parser_set_option($this->_xml, XML_OPTION_CASE_FOLDING, false);
xml_set_object($this->_xml, $this);
xml_set_element_handler($this->_xml,'_openTag','_closeTag');
xml_set_character_data_handler($this->_xml, '_cdata');
xml_parse($this->_xml,implode('',file($p)));
xml_parser_free($this->_xml);
if (!empty($this->_p_info['name'])) {
return $this->_p_info;
} else {
return false;
}
}
}
function _openTag($p,$tag,$attr)
{
if ($tag == $this->type && !empty($attr['name']))
{
$this->_p_info['name'] = $attr['name'];
$this->_p_info['version'] = (!empty($attr['version'])) ? $attr['version'] : NULL;
$this->_p_info['active'] = (!empty($attr['active'])) ? (boolean) $attr['active'] : false;
}
if ($tag == 'callback') {
$this->_p_info['callbacks'][] = array($attr['event'],$attr['function']);
}
}
function _closeTag($p,$tag)
{
switch ($tag)
{
case 'author':
case 'label':
case 'desc':
$this->_p_info[$tag] = $this->_current_tag_cdata;
break;
}
}
function _cdata($p,$cdata)
{
$this->_current_tag_cdata = $cdata;
}
}
 
?>
/trunk/wikini/maj_wikini/tools/libs/class.wiki.php
New file
0,0 → 1,56
<?php
require_once('wakka.config.php');
 
// Une classe minimal wiki pour l'acces à la base de donnée
 
class Wiki
{
var $dblink;
var $VERSION;
 
// constructor
function Wiki($config)
{
$this->config = $config;
// some host do not allow mysql_pconnect
$this->dblink = @mysql_connect (
$this->config["mysql_host"],
$this->config["mysql_user"],
$this->config["mysql_password"]);
if ($this->dblink)
{
if (!@mysql_select_db($this->config["mysql_database"], $this->dblink))
{
@mysql_close($this->dblink);
$this->dblink = false;
}
}
$this->VERSION = WAKKA_VERSION;
 
}
 
 
// DATABASE
function Query($query)
{
if (!$result = mysql_query($query, $this->dblink))
{
ob_end_clean();
die("Query failed: ".$query." (".mysql_error().")");
}
return $result;
}
function LoadSingle($query) { if ($data = $this->LoadAll($query)) return $data[0]; }
function LoadAll($query)
{
$data=array();
if ($r = $this->Query($query))
{
while ($row = mysql_fetch_assoc($r)) $data[] = $row;
mysql_free_result($r);
}
return $data;
}
 
}
?>
/trunk/wikini/maj_wikini/tools/libs/lib.files.php
New file
0,0 → 1,328
<?php
# ***** BEGIN LICENSE BLOCK *****
# This file is part of DotClear.
# Copyright (c) 2004 Olivier Meunier and contributors. All rights
# reserved.
#
# DotClear is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# DotClear is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with DotClear; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# ***** END LICENSE BLOCK *****
 
class files
{
function scandir($d,$order=0)
{
$res = array();
if (($dh = @opendir($d)) !== false)
{
while (($f = readdir($dh)) !== false) {
$res[] = $f;
}
closedir($dh);
sort($res);
if ($order == 1) {
rsort($res);
}
return $res;
}
else
{
return false;
}
}
function isDeletable($f)
{
if (is_file($f)) {
return is_writable(dirname($f));
} elseif (is_dir($f)) {
return (is_writable(dirname($f)) && count(files::scandir($f)) <= 2);
}
}
# Suppression récursive d'un répertoire (rm -rf)
function deltree($dir)
{
$current_dir = opendir($dir);
while($entryname = readdir($current_dir))
{
if (is_dir($dir.'/'.$entryname) and ($entryname != '.' and $entryname!='..'))
{
if (!files::deltree($dir.'/'.$entryname)) {
return false;
}
}
elseif ($entryname != '.' and $entryname!='..')
{
if (!@unlink($dir.'/'.$entryname)) {
return false;
}
}
}
closedir($current_dir);
return @rmdir($dir);
}
function touch($f)
{
if (is_writable($f)) {
$c = implode('',file($f));
if ($fp = @fopen($f,'w')) {
fwrite($fp,$c,strlen($c));
fclose($fp);
}
}
}
function secureFile($f)
{
if (is_file($f))
{
@chmod($f,0600);
if (is_readable($f)) {
return true;
} else {
@chmod($f,0660);
if (is_readable($f)) {
return true;
} else {
@chmod($f,0666);
}
}
}
}
function makeDir($f)
{
if (@mkdir($f,fileperms(dirname($f))) === false) {
return false;
}
@chmod($f,fileperms(dirname($f)));
}
function putContent($f, $f_content)
{
if (is_writable($f))
{
if ($fp = @fopen($f, 'w'))
{
fwrite($fp,$f_content,strlen($f_content));
fclose($fp);
return true;
}
}
return false;
}
function size($size)
{
$kb = 1024;
$mb = 1024 * $kb;
$gb = 1024 * $mb;
$tb = 1024 * $gb;
if($size < $kb) {
return $size." B";
}
else if($size < $mb) {
return round($size/$kb,2)." KB";
}
else if($size < $gb) {
return round($size/$mb,2)." MB";
}
else if($size < $tb) {
return round($size/$gb,2)." GB";
}
else {
return round($size/$tb,2)." TB";
}
}
# Copier d'un fichier binaire distant
function copyRemote($src,$dest)
{
if (($fp1 = @fopen($src,'r')) === false)
{
return __('An error occured while downloading the file.');
}
else
{
if (($fp2 = @fopen($dest,'w')) === false)
{
fclose($fp1);
return __('An error occured while writing the file.');
}
else
{
while (($buffer = fgetc($fp1)) !== false) {
fwrite($fp2,$buffer);
}
fclose($fp1);
fclose($fp2);
return true;
}
}
}
# Fonctions de création de packages
#
function getDirList($dirName)
{
static $filelist = array();
static $dirlist = array();
$exclude_list=array('.','..','.svn');
if (empty($res)) {
$res = array();
}
$dirName = preg_replace('|/$|','',$dirName);
if (!is_dir($dirName)) {
return false;
}
$dirlist[] = $dirName;
$d = dir($dirName);
while($entry = $d->read())
{
if (!in_array($entry,$exclude_list))
{
if (is_dir($dirName.'/'.$entry))
{
if ($entry != 'CVS')
{
files::getDirList($dirName.'/'.$entry);
}
}
else
{
$filelist[] = $dirName.'/'.$entry;
}
}
}
$d->close();
return array('dirs'=>$dirlist, 'files'=>$filelist);
}
function makePackage($name,$dir,$remove_path='',$gzip=true)
{
if ($gzip && !function_exists('gzcompress')) {
return false;
}
if (($filelist = files::getDirList($dir)) === false) {
return false;
}
$res = array ('name' => $name, 'dirs' => array(), 'files' => array());
foreach ($filelist['dirs'] as $v) {
$res['dirs'][] = preg_replace('/^'.preg_quote($remove_path,'/').'/','',$v);
}
foreach ($filelist['files'] as $v) {
$f_content = base64_encode(file_get_contents($v));
$v = preg_replace('/^'.preg_quote($remove_path,'/').'/','',$v);
$res['files'][$v] = $f_content;
}
$res = serialize($res);
if ($gzip) {
$res = gzencode($res);
}
return $res;
}
}
 
 
class path
{
function real($p,$strict=true)
{
$os = (DIRECTORY_SEPARATOR == '\\') ? 'win' : 'nix';
# Chemin absolu ou non ?
if ($os == 'win') {
$_abs = preg_match('/^\w+:/',$p);
} else {
$_abs = substr($p,0,1) == '/';
}
# Transformation du chemin, forme std
if ($os == 'win') {
$p = str_replace('\\','/',$p);
}
# Ajout de la racine du fichier appelant si
if (!$_abs) {
$p = dirname($_SERVER['SCRIPT_FILENAME']).'/'.$p;
}
# Nettoyage
$p = preg_replace('|/+|','/',$p);
if (strlen($p) > 1) {
$p = preg_replace('|/$|','',$p);
}
$_start = '';
if ($os == 'win') {
list($_start,$p) = explode(':',$p);
$_start .= ':/';
} else {
$_start = '/';
}
$p = substr($p,1);
# Parcours
$P = explode('/',$p);
$res = array();
for ($i=0;$i<count($P);$i++)
{
if ($P[$i] == '.') {
continue;
}
if ($P[$i] == '..') {
if (count($res) > 0) {
array_pop($res);
}
} else {
array_push($res,$P[$i]);
}
}
$p = $_start.implode('/',$res);
if ($strict && !@file_exists($p)) {
return false;
}
return $p;
}
}
?>
/trunk/wikini/maj_wikini/tools/libs/lib.compat.php
New file
0,0 → 1,64
<?php
# ***** BEGIN LICENSE BLOCK *****
# This file is part of DotClear.
# Copyright (c) 2004 Olivier Meunier and contributors. All rights
# reserved.
#
# DotClear is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# DotClear is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with DotClear; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# ***** END LICENSE BLOCK *****
 
/* Missing functions
source : http://pear.php.net/package/PHP_Compat
*/
 
/* files_get_contents */
if (!function_exists('file_get_contents'))
{
function file_get_contents($filename, $incpath = false, $resource_context = null)
{
if (false === $fh = fopen($filename, 'rb', $incpath))
{
trigger_error('file_get_contents() failed to open stream: No such file or directory', E_USER_WARNING);
return false;
}
clearstatcache();
if ($fsize = filesize($filename))
{
$data = fread($fh, $fsize);
}
else
{
while (!feof($fh)) {
$data .= fread($fh, 8192);
}
}
fclose($fh);
return $data;
}
}
 
if (!function_exists('is_a'))
{
function is_a($obj, $classname)
{
if (strtolower(get_class($obj)) == strtolower($classname)) {
return true;
} else {
return(is_subclass_of($obj, $classname));
}
}
}
?>
/trunk/wikini/maj_wikini/tools/libs/lib.form.php
New file
0,0 → 1,137
<?php
# ***** BEGIN LICENSE BLOCK *****
# This file is part of DotClear.
# Copyright (c) 2004 Olivier Meunier and contributors. All rights
# reserved.
#
# DotClear is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# DotClear is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with DotClear; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# ***** END LICENSE BLOCK *****
 
class form
{
function combo($name,$arryData,$default='',$class='',$id='',$tabindex='')
{
$res = '<select name="'.$name.'" ';
if($class != '')
$res .= 'class="'.$class.'" ';
if($tabindex != '')
$res .= 'tabindex="'.$tabindex.'" ';
if($id != '')
$res .= 'id="'.$id.'" ';
else
$res .= 'id="'.$name.'" ';
$res .= '>'."\n";
foreach($arryData as $k => $v)
{
$res .= '<option value="'.$v.'"';
if($v == $default)
$res .= ' selected="selected"';
$res .= '>'.$k.'</option>'."\n";
}
$res .= '</select>'."\n";
return $res;
}
function radio($name, $value, $checked='', $class='', $id='')
{
$res = '<input type="radio" name="'.$name.'" value="'.$value.'" ';
if($class != '') {
$res .= 'class="'.$class.'" ';
}
if($id != '') {
$res .= 'id="'.$id.'" ';
}
if (($checked === 0) or $checked >= 1) {
$res .= 'checked="checked" ';
}
$res .= '/>'."\n";
return $res;
}
 
function checkbox($name, $value, $checked='', $class='', $id='')
{
$res = '<input type="checkbox" name="'.$name.'" value="'.$value.'"';
if($class != '')
$res .= 'class="'.$class.'" ';
if($id != '') {
$res .= 'id="'.$id.'" ';
}
 
if($checked != '') {
$res.='checked="checked"';
}
$res .= ' />'."\n";
 
return $res;
}
 
function field($id,$size,$max,$default='',$tabindex='',$html='')
{
if (is_array($id)) {
$name = $id[0];
$id = isset($id[1]) ? $id[1] : '';
} else {
$name = $id;
}
$res = '<input type="text" size="'.$size.'" name="'.$name.'" ';
$res .= ($id != '') ? 'id="'.$id.'" ' : '';
$res .= ($max != '') ? 'maxlength="'.$max.'" ' : '';
$res .= ($tabindex != '') ? 'tabindex="'.$tabindex.'" ' : '';
$res .= ($default != '') ? 'value="'.$default.'" ' : '';
$res .= $html;
$res .= ' />';
return $res;
}
function textArea($id,$cols,$rows,$default='',$tabindex='',$html='')
{
$res = '<textarea cols="'.$cols.'" rows="'.$rows.'" ';
$res .= 'name="'.$id.'" id="'.$id.'" ';
$res .= ($tabindex != '') ? 'tabindex="'.$tabindex.'" ' : '';
$res .= $html.'>';
$res .= $default;
$res .= '</textarea>';
return $res;
}
function hidden($id,$value)
{
return '<input type="hidden" name="'.$id.'" value="'.$value.'" />';
}
}
?>
/trunk/wikini/maj_wikini/tools/aceditor/actions/header__.php
New file
0,0 → 1,34
<?php
 
if (!defined("WIKINI_VERSION"))
{
die ("acc&egrave;s direct interdit");
}
 
 
 
if ($this->GetMethod() == "edit") {
$plugin_output_new=preg_replace ('/<\/head>/',
'
<style type="text/css">
.buttons { background: #ccc; border: 1px solid #ccc; margin: 1; float:left; }
.raise{ border-top: 1px solid buttonhighlight; border-left: 1px solid buttonhighlight; border-bottom: 1px solid buttonshadow; border-right: 1px solid buttonshadow; background: #ccc; margin:1; float:left; }
.press { border-top: 1px solid buttonshadow; border-left: 1px solid buttonshadow; border-bottom: 1px solid buttonhighlight; border-right: 1px solid buttonhighlight; background: #ccc; margin:1; float:left; }
/* ci dessous les petits champs */
.ACsearchbox { background: #FFFFF8; border: 0px; border-bottom: 1px solid #CCCCAA; padding: 0px; margin: 0px; font-size: 10px; }
.texteChampsImage {font-size: 10px; }
#toolbar { margin: 0; width: 450px; padding: 0; height:20px; background: #ccc; border-top: 1px solid buttonhighlight; border-left: 1px solid buttonhighlight; border-bottom: 1px solid buttonshadow; border-right: 1px solid buttonshadow; text-align:left; }
#toolbar_suite { margin: 0; width: 450px; padding: 0; height:20px; background: #ccc; border-top: 1px solid buttonhighlight; border-left: 1px solid buttonhighlight; border-bottom: 1px solid buttonshadow; border-right: 1px solid buttonshadow; text-align:left; }
</style>
<script type="text/javascript" src="tools/aceditor/ACeditor.js"></script>
</head>
',
$plugin_output_new);
 
$plugin_output_new=preg_replace ('/<body /',
"<body onload=\"thisForm=document.ACEditor;\""
,
$plugin_output_new);
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/handlers/page/edit__.php
New file
0,0 → 1,80
<?php
 
if (!defined("WIKINI_VERSION"))
{
die ("acc&egrave;s direct interdit");
}
 
if ($this->HasAccess("write") && $this->HasAccess("read"))
{
// preview?
if ($_POST["submit"] == "Aperçu")
{
// Rien
}
else
{
$ACbuttonsBar = "
<div id=\"toolbar\">
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'**','**');\" src=\"tools/aceditor/ACEdImages/bold.gif\" title=\"Passe le texte sélectionné en gras ( Ctrl-Maj-b )\" alt=\"Gras\"></img>
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'//','//');\" src=\"tools/aceditor/ACEdImages/italic.gif\" title=\"Passe le texte sélectionné en italique ( Ctrl-Maj-t )\" alt=\"Italique\"></img>
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'__','__');\" src=\"tools/aceditor/ACEdImages/underline.gif\" title=\"Souligne le texte sélectionné ( Ctrl-Maj-u )\" alt=\"Souligné\"></img>
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'@@','@@');\" src=\"tools/aceditor/ACEdImages/strike.gif\" title=\"Barre le texte sélectionné\" alt=\"Barre\"></img>
<img class=\"buttons\" src=\"tools/aceditor/ACEdImages/separator.gif\" alt=\"\" ></img>
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'======','======\\n');\" src=\"tools/aceditor/ACEdImages/t1.gif\" title=\" En-tête énorme\" alt=\"\"> </img>
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'=====','=====\\n');\" src=\"tools/aceditor/ACEdImages/t2.gif\" title=\" En-tête très gros\" alt=\"\"> </img>
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'====','====\\n');\" src=\"tools/aceditor/ACEdImages/t3.gif\" title=\" En-tête gros\" alt=\"\"> </img>
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'===','===\\n');\" src=\"tools/aceditor/ACEdImages/t4.gif\" title=\" En-tête normal\" alt=\"\"> </img>
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'==','==');\" src=\"tools/aceditor/ACEdImages/t5.gif\" title=\" Petit en-tête\" alt=\"\"> </img>
<img class=\"buttons\" src=\"tools/aceditor/ACEdImages/separator.gif\" alt=\"\" ></img>
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelectionWithLink(thisForm.body);\" src=\"tools/aceditor/ACEdImages/link.gif\" title=\"Ajoute un lien au texte sélectionné\" alt=\"\"></img>
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'\\t-&nbsp;','');\" src=\"tools/aceditor/ACEdImages/listepuce.gif\" title=\"Liste\" alt=\"\"></img>
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'\\t1)&nbsp;','');\" src=\"tools/aceditor/ACEdImages/listenum.gif\" title=\"Liste numérique\" alt=\"\"></img>
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'\\ta)&nbsp;','');\" src=\"tools/aceditor/ACEdImages/listealpha.gif\" title=\"Liste alphabéthique\" alt=\"\"></img>
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelectionBis(thisForm.body,'\\n---','');\" src=\"tools/aceditor/ACEdImages/crlf.gif\" title=\"Insère un retour chariot\" alt=\"\"></img>
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelectionBis(thisForm.body,'\\n------','');\" src=\"tools/aceditor/ACEdImages/hr.gif\" title=\"Insère une ligne horizontale\" alt=\"\"> </img>
<img class=\"buttons\" src=\"tools/aceditor/ACEdImages/separator.gif\" alt=\"\" ></img>
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'%%','%%');\" src=\"tools/aceditor/ACEdImages/code.gif\" title=\"Code\" alt=\"\"></img>
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'%%(php)','%%');\" src=\"tools/aceditor/ACEdImages/php.gif\" title=\"Code PHP\" alt=\"\"></img>
</div>
<div id=\"toolbar_suite\">
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelectionWithImage(thisForm.body);\" src=\"tools/aceditor/ACEdImages/image.gif\" title=\"insère un tag image \" alt=\"\"> </img>
<span class=\"texteChampsImage\">
&nbsp;&nbsp;Fichier&nbsp;<input type=\"text\" name=\"filename\" class=\"ACsearchbox\" size=\"10\"/>&nbsp;&nbsp;Description&nbsp;<input type=\"text\" name=\"description\" class=\"ACsearchbox\" size=\"10\"/>
&nbsp;&nbsp;Alignement&nbsp;<select id=\"alignment\" class=\"ACsearchbox\">
<option value=\"left\">Gauche</option>
<option value=\"center\">Centré</option>
<option value=\"right\">Droite</option>
</select>
</span>
</div>";
if (substr(WIKINI_VERSION,2,1)<=4) {
 
$plugin_output_new=preg_replace ('/\<textarea onkeydown/',
$ACbuttonsBar.
'<textarea onkeydown',
$plugin_output_new);
}
else {
if (substr(WIKINI_VERSION,2,1)>=5) {
$plugin_output_new=preg_replace ('/\<textarea id="body"/',
$ACbuttonsBar.
'<textarea id="body"',
$plugin_output_new);
}
}
}
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/t5.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/t5.gif
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/listepuce.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/listepuce.gif
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/link.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/link.gif
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/separator.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/separator.gif
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/listenum.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/listenum.gif
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/strike.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/strike.gif
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/italic.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/italic.gif
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/hr.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/hr.gif
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/code.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/code.gif
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/link.old.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/link.old.gif
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/bold.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/bold.gif
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/image.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/image.gif
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/t1.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/t1.gif
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/underline.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/underline.gif
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/t2.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/t2.gif
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/t3.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/t3.gif
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/crlf.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/crlf.gif
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/listealpha.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/listealpha.gif
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/t4.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/t4.gif
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/php.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/aceditor/ACEdImages/php.gif
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/ACeditor.js
New file
0,0 → 1,124
/*
written by chris wetherell
http://www.massless.org
chris [THE AT SIGN] massless.org
warning: it only works for IE4+/Win and Moz1.1+
feel free to take it for your site
if there are any problems, let chris know.
*/
var ACEditor; /* make sure to change the onload handler of the
<body> tag to the form you're using!... */
function mozWrap(txtarea, lft, rgt) {
var selLength = txtarea.textLength;
var selStart = txtarea.selectionStart;
var selEnd = txtarea.selectionEnd;
if (selEnd==1 || selEnd==2) selEnd=selLength;
var s1 = (txtarea.value).substring(0,selStart);
var s2 = (txtarea.value).substring(selStart, selEnd)
var s3 = (txtarea.value).substring(selEnd, selLength);
txtarea.value = s1 + lft + s2 + rgt + s3;
}
function IEWrap(lft, rgt) {
strSelection = document.selection.createRange().text;
if (strSelection!="") {
document.selection.createRange().text = lft + strSelection + rgt;
}
}
// Cette fonction permet de faire fonctionner l'insertion de tag image dans un textarea de IE sans sélection initiale,
// à la position du curseur
 
function IEWrap2(txtarea,lft, rgt) {
txtarea.focus();
if (document.selection) {
txtarea.focus();
sel = document.selection.createRange();
sel.text = lft+rgt;
}
}
function wrapSelection(txtarea, lft, rgt) {
if (document.all) {IEWrap(lft, rgt);}
else if (document.getElementById) {mozWrap(txtarea, lft, rgt);}
}
function wrapSelectionBis(txtarea, lft, rgt) {
// pareil que la wrapSelection, avec une différence dans IE
// qui permet à wrapSelectionBis de pouvoir insérer à l'endroit du curseur même sans avoir sélectionné des caractères !!!
// Pour mozilla, c'est bien la fonction Wrap standard qui est appelée, aucun changement
if (document.all) { // document.all est une infamie de IE, on détecte cette horreur !
IEWrap2(txtarea,lft, rgt); // Attention, un parametre de plus que IEWrap
} else if (document.getElementById) {
mozWrap(txtarea, lft, rgt); // là on est chez les gentils
}
}
function wrapSelectionWithLink(txtarea) {
var my_link = prompt("Entrez l'URL: ","http://");
if (my_link != null) {
lft="[[" + my_link + " ";
rgt="]]";
wrapSelection(txtarea, lft, rgt);
}
return;
}
/* Aaaxl modif for ACeditor */
function wrapSelectionWithImage(txtarea) {
nom = document.ACEditor.filename.value;
descript = document.ACEditor.description.value;
align = document.ACEditor.alignment.value;
 
lft= " {{attach file=\"" + nom + "\" desc=\"" + descript + "\" class=\"" + align + "\" }} ";
rgt = "";
wrapSelectionBis(txtarea, lft, rgt);
return;
}
document.onkeypress = function (e) {
if (document.all) {
key=event.keyCode; txtarea=thisForm.body;
if (key == 1) wrapSelectionWithLink(txtarea);
if (key == 2) wrapSelection(txtarea,'**','**');
if (key == 20) wrapSelection(txtarea,'//','//');
}
else if (document.getElementById) {
ctrl=e.ctrlKey; shft=e.shiftKey; chr=e.charCode;
if (ctrl) if (shft) if (chr==65) wrapSelectionWithLink(thisForm.body);
if (ctrl) if (shft) if (chr==66) wrapSelection(thisForm.body,'**','**');
if (ctrl) if (shft) if (chr==84) wrapSelection(thisForm.body,'//','//');
//if (ctrl) if (shft) if (chr==85) wrapSelection(thisForm.body,'__','__');
}
return true;
}
/* end chris w. script */
 
/*
written by meg hourihan
http://www.megnut.com
meg@megnut.com
warning: it only works for IE4+/Win and Moz1.1+
feel free to take it for your site
but leave this text in place.
any problems, let meg know.
*/
function mouseover(el) {
el.className = "raise";
}
function mouseout(el) {
el.className = "buttons";
}
function mousedown(el) {
el.className = "press";
}
function mouseup(el) {
el.className = "raise";
}
/* end meg script */
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/wiki.php
New file
0,0 → 1,23
<?php
// Partie publique
 
if (!defined("WIKINI_VERSION"))
{
die ("acc&egrave;s direct interdit");
}
 
$wikiClasses [] = 'Aceditor';
$wikiClassesContent [] = '
 
function FormOpen($method = "", $tag = "", $formMethod = "post") {
 
if (ereg("edit$", $this->href($method, $tag))) {
$result = "<form id=\"ACEditor\" name=\"ACEditor\" action=\"".$this->href($method, $tag)."\" method=\"".$formMethod."\">\n";
} else {
$result = "<form action=\"".$this->href($method, $tag)."\" method=\"".$formMethod."\">\n";
}
 
if (!$this->config["rewrite_mode"]) $result .= "<input type=\"hidden\" name=\"wiki\" value=\"".$this->MiniHref($method, $tag)."\" />\n";
return $result;
}
';
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/desc.xml
New file
0,0 → 1,6
<?xml version="1.0" encoding="ISO-8859-1"?>
<plugin name="wkaceditor" version="0.1" active="1">
<author>Alexandre Vicq et Philippe Drouot</author>
<label>Barre d'outil</label>
<desc>Aide à la saisie des règles de formatage wikini, en particulier pour l'insertion d'images et de documents à partir de la contribution ActionAttach</desc>
</plugin>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/aceditor/index.php
New file
0,0 → 1,12
<?php
// index.php
// Administration de l'extension : initialisations (tables, fichier de configuration) , information etc. : toutes
// opérations réservées à l'administrateur technique de Wikini.
 
// Vérification de sécurité
if (!defined("TOOLS_MANAGER"))
{
die ("acc&egrave;s direct interdit");
}
 
?>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/tableau/formatters/wakka__.php
New file
0,0 → 1,113
<?php
if (!defined("WIKINI_VERSION"))
{
die ("acc&egrave;s direct interdit");
}
 
if (!function_exists("wakka2callbacktableaux"))
{
function parsetable($thing)
{
$tableattr = 'border="1"';
// echo "parsetable debut : \$thing = $thing<br>";
// recuperation des attributs
preg_match("/^\[\|(.*)$/m",$thing,$match);
// echo "parsetable : \$match = ";var_dump($match);echo "<br>";
if ($match[1]){
$tableattr = $match[1];
}
$table = "<table $tableattr >\n";
//suppression de [|xxxx et de |]
$thing = preg_replace("/^\[\|(.*)$/m","",$thing);
$thing = trim(preg_replace("/\|\]/m","",$thing));
// echo "parsetable suppression [| |]: \$thing = $thing<br>";
//recuperation de chaque ligne
$rows = preg_split("/$/m",$thing,-1,PREG_SPLIT_NO_EMPTY);
// echo "parsetable preg_split:";var_dump($rows);echo "<br>";
//analyse de chaque ligne
foreach ($rows as $row){
$table .= parsetablerow($row);
}
$table.= "</table>";
return $table;
}
//parse la definition d'une ligne
function parsetablerow($row)
{
$rowattr = "";
$row = trim($row);
// echo "parsetablerow debut : \$row = $row<br>";
//detection des attributs de ligne => si la ligne ne commence pas par | alors attribut
if (!preg_match("/^\|/",$row,$match)){
preg_match("/^!([^\|]*)!\|/",$row,$match);
$rowattr = $match[1];
// echo "\$rowattr = $rowattr<br>";
$row = trim(preg_replace("/^!([^\|]*)!/","",$row));
}
$result .= " <tr $rowattr>\n";
$row = trim(preg_replace("/^\|/","",trim($row)));
$row = trim(preg_replace("/\|$/","",trim($row)));
// echo "parsetablerow sans attribut : \$row = $row<br>";
//recuperation de chaque cellule
$cells = explode("|",$row); //nb : seule les indices impaire sont significatif
// echo "parsetablerow preg_split \$cells:";var_dump($cells);echo "<br>";
$i=0;
foreach ($cells as $cell){
// if ($i % 2){
// echo "\$cell = $cell<br>";
$result .= parsetablecell($cell);
// }
$i++;
}
$result .= " </tr>\n";
return $result;
}
//parse la definition d'une cellule
function parsetablecell($cell)
{
global $wiki;
$cellattr = "";
if (preg_match("/^!(.*)!/",$cell,$match)){
$cellattr = $match[1];
}
$cell = preg_replace("/^!(.*)!/","",$cell);
//si espace au debut => align=right
//si espace a la fin => align=left
//si espace debut et fin => align=center
if (preg_match("/^\s(.*)/",$cell)){
$align="right";
}
if (preg_match("/^(.*)\s$/",$cell)){
$align="left";
}
if (preg_match("/^\s(.*)\s$/",$cell)){
$align="center";
}
if ($align) $cellattr .= " align=\"$align\"";
// echo "\$this->classname = ".get_class($wiki)."<br>";
return " <td $cellattr>".$wiki->Format($cell)."</td>\n";
}
 
 
 
function wakka2callbacktableaux($things)
{
$thing = $things[1];
 
global $wiki;
if (preg_match("/^\[\|(.*)\|\]/s", $thing)) {
$thing=preg_replace("/<br \/>/","", $thing);
return parsetable($thing);
}
// if we reach this point, it must have been an accident.
return $thing;
}
}
 
$plugin_output_new = preg_replace_callback("/(^\[\|.*?\|\])/ms", "wakka2callbacktableaux", $plugin_output_new);
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/tableau/desc.xml
New file
0,0 → 1,6
<?xml version="1.0" encoding="ISO-8859-1"?>
<plugin name="wkattach" version="0.1" active="1">
<author>GardFieldFr</author>
<label>Tableau</label>
<desc>Permet de créer des tableaux dans Wikini</desc>
</plugin>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/tableau/index.php
New file
0,0 → 1,8
<?php
// Vérification de sécurité
if (!defined("TOOLS_MANAGER"))
{
die ("acc&egrave;s direct interdit");
}
 
?>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/api/IT.php
New file
0,0 → 1,1001
<?php
//
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2005 Ulf Wendel, Pierre-Alain Joye |
// +----------------------------------------------------------------------+
// | This source file is subject to the New BSD license, That is bundled |
// | with this package in the file LICENSE, and is available through |
// | the world-wide-web at |
// | http://www.opensource.org/licenses/bsd-license.php |
// | If you did not receive a copy of the new BSDlicense and are unable |
// | to obtain it through the world-wide-web, please send a note to |
// | pajoye@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Author: Ulf Wendel <ulf.wendel@phpdoc.de> |
// | Pierre-Alain Joye <pajoye@php.net> |
// +----------------------------------------------------------------------+
//
// $Id: IT.php,v 1.20 2006/08/17 15:47:22 dsp Exp $
//
 
require_once 'PEAR.php';
 
define('IT_OK', 1);
define('IT_ERROR', -1);
define('IT_TPL_NOT_FOUND', -2);
define('IT_BLOCK_NOT_FOUND', -3);
define('IT_BLOCK_DUPLICATE', -4);
define('IT_UNKNOWN_OPTION', -6);
/**
* Integrated Template - IT
*
* Well there's not much to say about it. I needed a template class that
* supports a single template file with multiple (nested) blocks inside and
* a simple block API.
*
* The Isotemplate API is somewhat tricky for a beginner although it is the best
* one you can build. template::parse() [phplib template = Isotemplate] requests
* you to name a source and a target where the current block gets parsed into.
* Source and target can be block names or even handler names. This API gives you
* a maximum of fexibility but you always have to know what you do which is
* quite unusual for php skripter like me.
*
* I noticed that I do not any control on which block gets parsed into which one.
* If all blocks are within one file, the script knows how they are nested and in
* which way you have to parse them. IT knows that inner1 is a child of block2, there's
* no need to tell him about this.
*
* <table border>
* <tr>
* <td colspan=2>
* __global__
* <p>
* (hidden and automatically added)
* </td>
* </tr>
* <tr>
* <td>block1</td>
* <td>
* <table border>
* <tr>
* <td colspan=2>block2</td>
* </tr>
* <tr>
* <td>inner1</td>
* <td>inner2</td>
* </tr>
* </table>
* </td>
* </tr>
* </table>
*
* To add content to block1 you simply type:
* <code>$tpl->setCurrentBlock("block1");</code>
* and repeat this as often as needed:
* <code>
* $tpl->setVariable(...);
* $tpl->parseCurrentBlock();
* </code>
*
* To add content to block2 you would type something like:
* <code>
* $tpl->setCurrentBlock("inner1");
* $tpl->setVariable(...);
* $tpl->parseCurrentBlock();
*
* $tpl->setVariable(...);
* $tpl->parseCurrentBlock();
*
* $tpl->parse("block1");
* </code>
*
* This will result in one repition of block1 which contains two repitions
* of inner1. inner2 will be removed if $removeEmptyBlock is set to true which is the default.
*
* Usage:
* <code>
* $tpl = new HTML_Template_IT( [string filerootdir] );
*
* // load a template or set it with setTemplate()
* $tpl->loadTemplatefile( string filename [, boolean removeUnknownVariables, boolean removeEmptyBlocks] )
*
* // set "global" Variables meaning variables not beeing within a (inner) block
* $tpl->setVariable( string variablename, mixed value );
*
* // like with the Isotemplates there's a second way to use setVariable()
* $tpl->setVariable( array ( string varname => mixed value ) );
*
* // Let's use any block, even a deeply nested one
* $tpl->setCurrentBlock( string blockname );
*
* // repeat this as often as you need it.
* $tpl->setVariable( array ( string varname => mixed value ) );
* $tpl->parseCurrentBlock();
*
* // get the parsed template or print it: $tpl->show()
* $tpl->get();
* </code>
*
* @author Ulf Wendel <uw@netuse.de>
* @version $Id: IT.php,v 1.20 2006/08/17 15:47:22 dsp Exp $
* @access public
* @package HTML_Template_IT
*/
class HTML_Template_IT
{
/**
* Contains the error objects
* @var array
* @access public
* @see halt(), $printError, $haltOnError
*/
var $err = array();
 
/**
* Clear cache on get()?
* @var boolean
*/
var $clearCache = false;
 
/**
* First character of a variable placeholder ( _{_VARIABLE} ).
* @var string
* @access public
* @see $closingDelimiter, $blocknameRegExp, $variablenameRegExp
*/
var $openingDelimiter = '{';
 
/**
* Last character of a variable placeholder ( {VARIABLE_}_ ).
* @var string
* @access public
* @see $openingDelimiter, $blocknameRegExp, $variablenameRegExp
*/
var $closingDelimiter = '}';
 
/**
* RegExp matching a block in the template.
* Per default "sm" is used as the regexp modifier, "i" is missing.
* That means a case sensitive search is done.
* @var string
* @access public
* @see $variablenameRegExp, $openingDelimiter, $closingDelimiter
*/
var $blocknameRegExp = '[\.0-9A-Za-z_-]+';
 
/**
* RegExp matching a variable placeholder in the template.
* Per default "sm" is used as the regexp modifier, "i" is missing.
* That means a case sensitive search is done.
* @var string
* @access public
* @see $blocknameRegExp, $openingDelimiter, $closingDelimiter
*/
var $variablenameRegExp = '[\.0-9A-Za-z_-]+';
 
/**
* RegExp used to find variable placeholder, filled by the constructor.
* @var string Looks somewhat like @(delimiter varname delimiter)@
* @access public
* @see IntegratedTemplate()
*/
var $variablesRegExp = '';
 
/**
* RegExp used to strip unused variable placeholder.
* @brother $variablesRegExp
*/
var $removeVariablesRegExp = '';
 
/**
* Controls the handling of unknown variables, default is remove.
* @var boolean
* @access public
*/
var $removeUnknownVariables = true;
 
/**
* Controls the handling of empty blocks, default is remove.
* @var boolean
* @access public
*/
var $removeEmptyBlocks = true;
 
/**
* RegExp used to find blocks an their content, filled by the constructor.
* @var string
* @see IntegratedTemplate()
*/
var $blockRegExp = '';
 
/**
* Name of the current block.
* @var string
*/
var $currentBlock = '__global__';
 
/**
* Content of the template.
* @var string
*/
var $template = '';
 
/**
* Array of all blocks and their content.
*
* @var array
* @see findBlocks()
*/
var $blocklist = array();
 
/**
* Array with the parsed content of a block.
*
* @var array
*/
var $blockdata = array();
 
/**
* Array of variables in a block.
* @var array
*/
var $blockvariables = array();
 
/**
* Array of inner blocks of a block.
* @var array
*/
var $blockinner = array();
 
/**
* List of blocks to preverse even if they are "empty".
*
* This is something special. Sometimes you have blocks that
* should be preserved although they are empty (no placeholder replaced).
* Think of a shopping basket. If it's empty you have to drop a message to
* the user. If it's filled you have to show the contents of
* the shopping baseket. Now where do you place the message that the basket
* is empty? It's no good idea to place it in you applications as customers
* tend to like unecessary minor text changes. Having another template file
* for an empty basket means that it's very likely that one fine day
* the filled and empty basket templates have different layout. I decided
* to introduce blocks that to not contain any placeholder but only
* text such as the message "Your shopping basked is empty".
*
* Now if there is no replacement done in such a block the block will
* be recognized as "empty" and by default ($removeEmptyBlocks = true) be
* stripped off. To avoid thisyou can now call touchBlock() to avoid this.
*
* The array $touchedBlocks stores a list of touched block which must not
* be removed even if they are empty.
*
* @var array $touchedBlocks
* @see touchBlock(), $removeEmptyBlocks
*/
var $touchedBlocks = array();
 
/**
* List of blocks which should not be shown even if not "empty"
* @var array $_hiddenBlocks
* @see hideBlock(), $removeEmptyBlocks
*/
var $_hiddenBlocks = array();
 
/**
* Variable cache.
*
* Variables get cached before any replacement is done.
* Advantage: empty blocks can be removed automatically.
* Disadvantage: might take some more memory
*
* @var array
* @see setVariable(), $clearCacheOnParse
*/
var $variableCache = array();
 
/**
* Clear the variable cache on parse?
*
* If you're not an expert just leave the default false.
* True reduces memory consumption somewhat if you tend to
* add lots of values for unknown placeholder.
*
* @var boolean
*/
var $clearCacheOnParse = false;
 
/**
* Root directory for all file operations.
* The string gets prefixed to all filenames given.
* @var string
* @see HTML_Template_IT(), setRoot()
*/
var $fileRoot = '';
 
/**
* Internal flag indicating that a blockname was used multiple times.
* @var boolean
*/
var $flagBlocktrouble = false;
 
/**
* Flag indicating that the global block was parsed.
* @var boolean
*/
var $flagGlobalParsed = false;
 
/**
* EXPERIMENTAL! FIXME!
* Flag indication that a template gets cached.
*
* Complex templates require some times to be preparsed
* before the replacement can take place. Often I use
* one template file over and over again but I don't know
* before that I will use the same template file again.
* Now IT could notice this and skip the preparse.
*
* @var boolean
*/
var $flagCacheTemplatefile = true;
 
/**
* EXPERIMENTAL! FIXME!
*/
var $lastTemplatefile = '';
 
/**
* $_options['preserve_data'] Whether to substitute variables and remove
* empty placeholders in data passed through setVariable
* (see also bugs #20199, #21951).
* $_options['use_preg'] Whether to use preg_replace instead of
* str_replace in parse()
* (this is a backwards compatibility feature, see also bugs #21951, #20392)
*/
var $_options = array(
'preserve_data' => false,
'use_preg' => true
);
 
/**
* Builds some complex regular expressions and optinally sets the
* file root directory.
*
* Make sure that you call this constructor if you derive your template
* class from this one.
*
* @param string File root directory, prefix for all filenames
* given to the object.
* @see setRoot()
*/
function HTML_Template_IT($root = '', $options = null)
{
if (!is_null($options)) {
$this->setOptions($options);
}
$this->variablesRegExp = '@' . $this->openingDelimiter .
'(' . $this->variablenameRegExp . ')' .
$this->closingDelimiter . '@sm';
$this->removeVariablesRegExp = '@' . $this->openingDelimiter .
"\s*(" . $this->variablenameRegExp .
")\s*" . $this->closingDelimiter .'@sm';
 
$this->blockRegExp = '@<!--\s+BEGIN\s+(' . $this->blocknameRegExp .
')\s+-->(.*)<!--\s+END\s+\1\s+-->@sm';
 
$this->setRoot($root);
} // end constructor
 
 
/**
* Sets the option for the template class
*
* @access public
* @param string option name
* @param mixed option value
* @return mixed IT_OK on success, error object on failure
*/
function setOption($option, $value)
{
if (array_key_exists($option, $this->_options)) {
$this->_options[$option] = $value;
return IT_OK;
}
 
return PEAR::raiseError(
$this->errorMessage(IT_UNKNOWN_OPTION) . ": '{$option}'",
IT_UNKNOWN_OPTION
);
}
 
/**
* Sets the options for the template class
*
* @access public
* @param string options array of options
* default value:
* 'preserve_data' => false,
* 'use_preg' => true
* @param mixed option value
* @return mixed IT_OK on success, error object on failure
* @see $options
*/
function setOptions($options)
{
if (is_array($options)) {
foreach ($options as $option => $value) {
$error = $this->setOption($option, $value);
if (PEAR::isError($error)) {
return $error;
}
}
}
 
return IT_OK;
}
 
/**
* Print a certain block with all replacements done.
* @brother get()
*/
function show($block = '__global__')
{
print $this->get($block);
} // end func show
 
/**
* Returns a block with all replacements done.
*
* @param string name of the block
* @return string
* @throws PEAR_Error
* @access public
* @see show()
*/
function get($block = '__global__')
{
if ($block == '__global__' && !$this->flagGlobalParsed) {
$this->parse('__global__');
}
 
if (!isset($this->blocklist[$block])) {
$this->err[] = PEAR::raiseError(
$this->errorMessage(IT_BLOCK_NOT_FOUND) .
'"' . $block . "'",
IT_BLOCK_NOT_FOUND
);
return '';
}
 
if (isset($this->blockdata[$block])) {
$ret = $this->blockdata[$block];
if ($this->clearCache) {
unset($this->blockdata[$block]);
}
if ($this->_options['preserve_data']) {
$ret = str_replace(
$this->openingDelimiter .
'%preserved%' . $this->closingDelimiter,
$this->openingDelimiter,
$ret
);
}
return $ret;
}
 
return '';
} // end func get()
 
/**
* Parses the given block.
*
* @param string name of the block to be parsed
* @access public
* @see parseCurrentBlock()
* @throws PEAR_Error
*/
function parse($block = '__global__', $flag_recursion = false)
{
static $regs, $values;
 
if (!isset($this->blocklist[$block])) {
return PEAR::raiseError(
$this->errorMessage( IT_BLOCK_NOT_FOUND ) . '"' . $block . "'",
IT_BLOCK_NOT_FOUND
);
}
 
if ($block == '__global__') {
$this->flagGlobalParsed = true;
}
 
if (!$flag_recursion) {
$regs = array();
$values = array();
}
$outer = $this->blocklist[$block];
$empty = true;
 
if ($this->clearCacheOnParse) {
foreach ($this->variableCache as $name => $value) {
$regs[] = $this->openingDelimiter .
$name . $this->closingDelimiter;
$values[] = $value;
$empty = false;
}
$this->variableCache = array();
} else {
foreach ($this->blockvariables[$block] as $allowedvar => $v) {
 
if (isset($this->variableCache[$allowedvar])) {
$regs[] = $this->openingDelimiter .
$allowedvar . $this->closingDelimiter;
$values[] = $this->variableCache[$allowedvar];
unset($this->variableCache[$allowedvar]);
$empty = false;
}
}
}
 
if (isset($this->blockinner[$block])) {
foreach ($this->blockinner[$block] as $k => $innerblock) {
 
$this->parse($innerblock, true);
if ($this->blockdata[$innerblock] != '') {
$empty = false;
}
 
$placeholder = $this->openingDelimiter . "__" .
$innerblock . "__" . $this->closingDelimiter;
$outer = str_replace(
$placeholder,
$this->blockdata[$innerblock], $outer
);
$this->blockdata[$innerblock] = "";
}
 
}
 
if (!$flag_recursion && 0 != count($values)) {
if ($this->_options['use_preg']) {
$regs = array_map(array(
&$this, '_addPregDelimiters'),
$regs
);
$funcReplace = 'preg_replace';
} else {
$funcReplace = 'str_replace';
}
 
if ($this->_options['preserve_data']) {
$values = array_map(
array(&$this, '_preserveOpeningDelimiter'), $values
);
}
 
$outer = $funcReplace($regs, $values, $outer);
 
if ($this->removeUnknownVariables) {
$outer = preg_replace($this->removeVariablesRegExp, "", $outer);
}
}
 
if ($empty) {
if (!$this->removeEmptyBlocks) {
$this->blockdata[$block ].= $outer;
} else {
if (isset($this->touchedBlocks[$block])) {
$this->blockdata[$block] .= $outer;
unset($this->touchedBlocks[$block]);
}
}
} else {
if (empty($this->blockdata[$block])) {
$this->blockdata[$block] = $outer;
} else {
$this->blockdata[$block] .= $outer;
}
}
 
return $empty;
} // end func parse
 
/**
* Parses the current block
* @see parse(), setCurrentBlock(), $currentBlock
* @access public
*/
function parseCurrentBlock()
{
return $this->parse($this->currentBlock);
} // end func parseCurrentBlock
 
/**
* Sets a variable value.
*
* The function can be used eighter like setVariable( "varname", "value")
* or with one array $variables["varname"] = "value"
* given setVariable($variables) quite like phplib templates set_var().
*
* @param mixed string with the variable name or an array
* %variables["varname"] = "value"
* @param string value of the variable or empty if $variable
* is an array.
* @param string prefix for variable names
* @access public
*/
function setVariable($variable, $value = '')
{
if (is_array($variable)) {
$this->variableCache = array_merge(
$this->variableCache, $variable
);
} else {
$this->variableCache[$variable] = $value;
}
} // end func setVariable
 
/**
* Sets the name of the current block that is the block where variables
* are added.
*
* @param string name of the block
* @return boolean false on failure, otherwise true
* @throws PEAR_Error
* @access public
*/
function setCurrentBlock($block = '__global__')
{
 
if (!isset($this->blocklist[$block])) {
return PEAR::raiseError(
$this->errorMessage( IT_BLOCK_NOT_FOUND ) .
'"' . $block . "'", IT_BLOCK_NOT_FOUND
);
}
 
$this->currentBlock = $block;
 
return true;
} // end func setCurrentBlock
 
/**
* Preserves an empty block even if removeEmptyBlocks is true.
*
* @param string name of the block
* @return boolean false on false, otherwise true
* @throws PEAR_Error
* @access public
* @see $removeEmptyBlocks
*/
function touchBlock($block)
{
if (!isset($this->blocklist[$block])) {
return PEAR::raiseError(
$this->errorMessage(IT_BLOCK_NOT_FOUND) .
'"' . $block . "'", IT_BLOCK_NOT_FOUND);
}
 
$this->touchedBlocks[$block] = true;
 
return true;
} // end func touchBlock
 
/**
* Clears all datafields of the object and rebuild the internal blocklist
*
* LoadTemplatefile() and setTemplate() automatically call this function
* when a new template is given. Don't use this function
* unless you know what you're doing.
*
* @access public
* @see free()
*/
function init()
{
$this->free();
$this->findBlocks($this->template);
// we don't need it any more
$this->template = '';
$this->buildBlockvariablelist();
} // end func init
 
/**
* Clears all datafields of the object.
*
* Don't use this function unless you know what you're doing.
*
* @access public
* @see init()
*/
function free()
{
$this->err = array();
 
$this->currentBlock = '__global__';
 
$this->variableCache = array();
$this->blocklist = array();
$this->touchedBlocks = array();
 
$this->flagBlocktrouble = false;
$this->flagGlobalParsed = false;
} // end func free
 
/**
* Sets the template.
*
* You can eighter load a template file from disk with
* LoadTemplatefile() or set the template manually using this function.
*
* @param string template content
* @param boolean remove unknown/unused variables?
* @param boolean remove empty blocks?
* @see LoadTemplatefile(), $template
* @access public
* @return boolean
*/
function setTemplate( $template, $removeUnknownVariables = true,
$removeEmptyBlocks = true)
{
$this->removeUnknownVariables = $removeUnknownVariables;
$this->removeEmptyBlocks = $removeEmptyBlocks;
 
if ($template == '' && $this->flagCacheTemplatefile) {
$this->variableCache = array();
$this->blockdata = array();
$this->touchedBlocks = array();
$this->currentBlock = '__global__';
} else {
$this->template = '<!-- BEGIN __global__ -->' . $template .
'<!-- END __global__ -->';
$this->init();
}
 
if ($this->flagBlocktrouble) {
return false;
}
 
return true;
} // end func setTemplate
 
/**
* Reads a template file from the disk.
*
* @param string name of the template file
* @param bool how to handle unknown variables.
* @param bool how to handle empty blocks.
* @access public
* @return boolean false on failure, otherwise true
* @see $template, setTemplate(), $removeUnknownVariables,
* $removeEmptyBlocks
*/
function loadTemplatefile( $filename,
$removeUnknownVariables = true,
$removeEmptyBlocks = true )
{
$template = '';
if (!$this->flagCacheTemplatefile ||
$this->lastTemplatefile != $filename
) {
$template = $this->getFile($filename);
}
$this->lastTemplatefile = $filename;
 
return $template != '' ?
$this->setTemplate(
$template,$removeUnknownVariables, $removeEmptyBlocks
) : false;
} // end func LoadTemplatefile
 
/**
* Sets the file root. The file root gets prefixed to all filenames passed
* to the object.
*
* Make sure that you override this function when using the class
* on windows.
*
* @param string
* @see HTML_Template_IT()
* @access public
*/
function setRoot($root)
{
if ($root != '' && substr($root, -1) != '/') {
$root .= '/';
}
 
$this->fileRoot = $root;
} // end func setRoot
 
/**
* Build a list of all variables within of a block
*/
function buildBlockvariablelist()
{
foreach ($this->blocklist as $name => $content) {
preg_match_all($this->variablesRegExp, $content, $regs);
 
if (count($regs[1]) != 0) {
foreach ($regs[1] as $k => $var) {
$this->blockvariables[$name][$var] = true;
}
} else {
$this->blockvariables[$name] = array();
}
}
} // end func buildBlockvariablelist
 
/**
* Returns a list of all global variables
*/
function getGlobalvariables()
{
$regs = array();
$values = array();
 
foreach ($this->blockvariables['__global__'] as $allowedvar => $v) {
if (isset($this->variableCache[$allowedvar])) {
$regs[] = '@' . $this->openingDelimiter .
$allowedvar . $this->closingDelimiter . '@';
$values[] = $this->variableCache[$allowedvar];
unset($this->variableCache[$allowedvar]);
}
}
 
return array($regs, $values);
} // end func getGlobalvariables
 
/**
* Recusively builds a list of all blocks within the template.
*
* @param string string that gets scanned
* @see $blocklist
*/
function findBlocks($string)
{
$blocklist = array();
 
if (preg_match_all($this->blockRegExp, $string, $regs, PREG_SET_ORDER)) {
foreach ($regs as $k => $match) {
$blockname = $match[1];
$blockcontent = $match[2];
 
if (isset($this->blocklist[$blockname])) {
$this->err[] = PEAR::raiseError(
$this->errorMessage(
IT_BLOCK_DUPLICATE, $blockname),
IT_BLOCK_DUPLICATE
);
$this->flagBlocktrouble = true;
}
 
$this->blocklist[$blockname] = $blockcontent;
$this->blockdata[$blockname] = "";
 
$blocklist[] = $blockname;
 
$inner = $this->findBlocks($blockcontent);
foreach ($inner as $k => $name) {
$pattern = sprintf(
'@<!--\s+BEGIN\s+%s\s+-->(.*)<!--\s+END\s+%s\s+-->@sm',
$name,
$name
);
 
$this->blocklist[$blockname] = preg_replace(
$pattern,
$this->openingDelimiter .
'__' . $name . '__' .
$this->closingDelimiter,
$this->blocklist[$blockname]
);
$this->blockinner[$blockname][] = $name;
$this->blockparents[$name] = $blockname;
}
}
}
 
return $blocklist;
} // end func findBlocks
 
/**
* Reads a file from disk and returns its content.
* @param string Filename
* @return string Filecontent
*/
function getFile($filename)
{
if ($filename{0} == '/' && substr($this->fileRoot, -1) == '/') {
$filename = substr($filename, 1);
}
 
$filename = $this->fileRoot . $filename;
 
if (!($fh = @fopen($filename, 'r'))) {
$this->err[] = PEAR::raiseError(
$this->errorMessage(IT_TPL_NOT_FOUND) .
': "' .$filename .'"',
IT_TPL_NOT_FOUND
);
return "";
}
 
$fsize = filesize($filename);
if ($fsize < 1) {
fclose($fh);
return '';
}
 
$content = fread($fh, $fsize);
fclose($fh);
 
return preg_replace(
"#<!-- INCLUDE (.*) -->#ime", "\$this->getFile('\\1')", $content
);
} // end func getFile
 
/**
* Adds delimiters to a string, so it can be used as a pattern
* in preg_* functions
*
* @param string
* @return string
*/
function _addPregDelimiters($str)
{
return '@' . $str . '@';
}
 
/**
* Replaces an opening delimiter by a special string
*
* @param string
* @return string
*/
function _preserveOpeningDelimiter($str)
{
return (false === strpos($str, $this->openingDelimiter))?
$str:
str_replace(
$this->openingDelimiter,
$this->openingDelimiter .
'%preserved%' . $this->closingDelimiter,
$str
);
}
 
/**
* Return a textual error message for a IT error code
*
* @param integer $value error code
*
* @return string error message, or false if the error code was
* not recognized
*/
function errorMessage($value, $blockname = '')
{
static $errorMessages;
if (!isset($errorMessages)) {
$errorMessages = array(
IT_OK => '',
IT_ERROR => 'unknown error',
IT_TPL_NOT_FOUND => 'Cannot read the template file',
IT_BLOCK_NOT_FOUND => 'Cannot find this block',
IT_BLOCK_DUPLICATE => 'The name of a block must be'.
' uniquewithin a template.'.
' Found "' . $blockname . '" twice.'.
'Unpredictable results '.
'may appear.',
IT_UNKNOWN_OPTION => 'Unknown option'
);
}
 
if (PEAR::isError($value)) {
$value = $value->getCode();
}
 
return isset($errorMessages[$value]) ?
$errorMessages[$value] : $errorMessages[IT_ERROR];
}
} // end class IntegratedTemplate
?>
/trunk/wikini/maj_wikini/tools/templates/api/ITX.php
New file
0,0 → 1,832
<?php
//
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2005 Ulf Wendel, Pierre-Alain Joye |
// +----------------------------------------------------------------------+
// | This source file is subject to the New BSD license, That is bundled |
// | with this package in the file LICENSE, and is available through |
// | the world-wide-web at |
// | http://www.opensource.org/licenses/bsd-license.php |
// | If you did not receive a copy of the new BSD license and are unable |
// | to obtain it through the world-wide-web, please send a note to |
// | pajoye@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Author: Ulf Wendel <ulf.wendel@phpdoc.de> |
// | Pierre-Alain Joye <pajoye@php.net> |
// +----------------------------------------------------------------------+
//
// $Id: ITX.php,v 1.16 2006/08/17 15:47:22 dsp Exp $
//
 
require_once 'HTML/Template/IT.php';
require_once 'HTML/Template/IT_Error.php';
 
/**
* Integrated Template Extension - ITX
*
* With this class you get the full power of the phplib template class.
* You may have one file with blocks in it but you have as well one main file
* and multiple files one for each block. This is quite usefull when you have
* user configurable websites. Using blocks not in the main template allows
* you to modify some parts of your layout easily.
*
* Note that you can replace an existing block and add new blocks at runtime.
* Adding new blocks means changing a variable placeholder to a block.
*
* @author Ulf Wendel <uw@netuse.de>
* @access public
* @version $Id: ITX.php,v 1.16 2006/08/17 15:47:22 dsp Exp $
* @package HTML_Template_IT
*/
class HTML_Template_ITX extends HTML_Template_IT
{
/**
* Array with all warnings.
* @var array
* @access public
* @see $printWarning, $haltOnWarning, warning()
*/
var $warn = array();
 
/**
* Print warnings?
* @var array
* @access public
* @see $haltOnWarning, $warn, warning()
*/
var $printWarning = false;
 
/**
* Call die() on warning?
* @var boolean
* @access public
* @see $warn, $printWarning, warning()
*/
var $haltOnWarning = false;
 
/**
* RegExp used to test for a valid blockname.
* @var string
*/
var $checkblocknameRegExp = '';
 
/**
* Functionnameprefix used when searching function calls in the template.
* @var string
*/
var $functionPrefix = 'func_';
 
/**
* Functionname RegExp.
* @var string
*/
var $functionnameRegExp = '[_a-zA-Z]+[A-Za-z_0-9]*';
 
/**
* RegExp used to grep function calls in the template.
*
* The variable gets set by the constructor.
*
* @var string
* @see HTML_Template_IT()
*/
var $functionRegExp = '';
 
/**
* List of functions found in the template.
*
* @var array
*/
var $functions = array();
 
/**
* List of callback functions specified by the user.
*
* @var array
*/
var $callback = array();
 
/**
* Builds some complex regexps and calls the constructor
* of the parent class.
*
* Make sure that you call this constructor if you derive your own
* template class from this one.
*
* @see HTML_Template_IT()
*/
function HTML_Template_ITX($root = '')
{
 
$this->checkblocknameRegExp = '@' . $this->blocknameRegExp . '@';
$this->functionRegExp = '@' . $this->functionPrefix . '(' .
$this->functionnameRegExp . ')\s*\(@sm';
 
$this->HTML_Template_IT($root);
} // end func constructor
 
function init()
{
$this->free();
$this->buildFunctionlist();
$this->findBlocks($this->template);
// we don't need it any more
$this->template = '';
$this->buildBlockvariablelist();
 
} // end func init
 
/**
* Replaces an existing block with new content.
*
* This function will replace a block of the template and all blocks
* contained in the replaced block and add a new block insted, means
* you can dynamically change your template.
*
* Note that changing the template structure violates one of the IT[X]
* development goals. I've tried to write a simple to use template engine
* supporting blocks. In contrast to other systems IT[X] analyses the way
* you've nested blocks and knows which block belongs into another block.
* The nesting information helps to make the API short and simple. Replacing
* blocks does not only mean that IT[X] has to update the nesting
* information (relatively time consumpting task) but you have to make sure
* that you do not get confused due to the template change itself.
*
* @param string Blockname
* @param string Blockcontent
* @param boolean true if the new block inherits the content
* of the old block
* @return boolean
* @throws IT_Error
* @see replaceBlockfile(), addBlock(), addBlockfile()
* @access public
*/
function replaceBlock($block, $template, $keep_content = false)
{
if (!isset($this->blocklist[$block])) {
return new IT_Error(
"The block "."'$block'".
" does not exist in the template and thus it can't be replaced.",
__FILE__, __LINE__
);
}
 
if ($template == '') {
return new IT_Error('No block content given.', __FILE__, __LINE__);
}
 
if ($keep_content) {
$blockdata = $this->blockdata[$block];
}
 
// remove all kinds of links to the block / data of the block
$this->removeBlockData($block);
 
$template = "<!-- BEGIN $block -->" . $template . "<!-- END $block -->";
$parents = $this->blockparents[$block];
$this->findBlocks($template);
$this->blockparents[$block] = $parents;
 
// KLUDGE: rebuild the list for all block - could be done faster
$this->buildBlockvariablelist();
 
if ($keep_content) {
$this->blockdata[$block] = $blockdata;
}
 
// old TODO - I'm not sure if we need this
// update caches
 
return true;
} // end func replaceBlock
 
/**
* Replaces an existing block with new content from a file.
*
* @brother replaceBlock()
* @param string Blockname
* @param string Name of the file that contains the blockcontent
* @param boolean true if the new block inherits the content of the old block
* @access public
*/
function replaceBlockfile($block, $filename, $keep_content = false)
{
return $this->replaceBlock($block, $this->getFile($filename), $keep_content);
} // end func replaceBlockfile
 
/**
* Adds a block to the template changing a variable placeholder
* to a block placeholder.
*
* Add means "replace a variable placeholder by a new block".
* This is different to PHPLibs templates. The function loads a
* block, creates a handle for it and assigns it to a certain
* variable placeholder. To to the same with PHPLibs templates you would
* call set_file() to create the handle and parse() to assign the
* parsed block to a variable. By this PHPLibs templates assume
* that you tend to assign a block to more than one one placeholder.
* To assign a parsed block to more than only the placeholder you specify
* in this function you have to use a combination of getBlock()
* and setVariable().
*
* As no updates to cached data is necessary addBlock() and addBlockfile()
* are rather "cheap" meaning quick operations.
*
* The block content must not start with <!-- BEGIN blockname -->
* and end with <!-- END blockname --> this would cause overhead and
* produce an error.
*
* @param string Name of the variable placeholder, the name must be unique
* within the template.
* @param string Name of the block to be added
* @param string Content of the block
* @return boolean
* @throws IT_Error
* @see addBlockfile()
* @access public
*/
function addBlock($placeholder, $blockname, $template)
{
// Don't trust any user even if it's a programmer or yourself...
if ($placeholder == '') {
return new IT_Error('No variable placeholder given.',
__FILE__, __LINE__
);
} elseif ($blockname == '' ||
!preg_match($this->checkblocknameRegExp, $blockname)
) {
return new IT_Error("No or invalid blockname '$blockname' given.",
__FILE__, __LINE__
);
} elseif ($template == '') {
return new IT_Error('No block content given.', __FILE__, __LINE__);
} elseif (isset($this->blocklist[$blockname])) {
return new IT_Error('The block already exists.',
__FILE__, __LINE__
);
}
 
// find out where to insert the new block
$parents = $this->findPlaceholderBlocks($placeholder);
if (count($parents) == 0) {
 
return new IT_Error(
"The variable placeholder".
" '$placeholder' was not found in the template.",
__FILE__, __LINE__
);
 
} elseif (count($parents) > 1) {
 
reset($parents);
while (list($k, $parent) = each($parents)) {
$msg .= "$parent, ";
}
$msg = substr($parent, -2);
 
return new IT_Error("The variable placeholder "."'$placeholder'".
" must be unique, found in multiple blocks '$msg'.",
__FILE__, __LINE__
);
}
 
$template = "<!-- BEGIN $blockname -->" . $template . "<!-- END $blockname -->";
$this->findBlocks($template);
if ($this->flagBlocktrouble) {
return false; // findBlocks() already throws an exception
}
$this->blockinner[$parents[0]][] = $blockname;
$this->blocklist[$parents[0]] = preg_replace(
'@' . $this->openingDelimiter . $placeholder .
$this->closingDelimiter . '@',
 
$this->openingDelimiter . '__' . $blockname . '__' .
$this->closingDelimiter,
 
$this->blocklist[$parents[0]]
);
 
$this->deleteFromBlockvariablelist($parents[0], $placeholder);
$this->updateBlockvariablelist($blockname);
 
return true;
} // end func addBlock
 
/**
* Adds a block taken from a file to the template changing a variable
* placeholder to a block placeholder.
*
* @param string Name of the variable placeholder to be converted
* @param string Name of the block to be added
* @param string File that contains the block
* @brother addBlock()
* @access public
*/
function addBlockfile($placeholder, $blockname, $filename)
{
return $this->addBlock($placeholder, $blockname, $this->getFile($filename));
} // end func addBlockfile
 
/**
* Returns the name of the (first) block that contains
* the specified placeholder.
*
* @param string Name of the placeholder you're searching
* @param string Name of the block to scan. If left out (default)
* all blocks are scanned.
* @return string Name of the (first) block that contains
* the specified placeholder.
* If the placeholder was not found or an error occured
* an empty string is returned.
* @throws IT_Error
* @access public
*/
function placeholderExists($placeholder, $block = '')
{
if ($placeholder == '') {
new IT_Error('No placeholder name given.', __FILE__, __LINE__);
return '';
}
 
if ($block != '' && !isset($this->blocklist[$block])) {
new IT_Error("Unknown block '$block'.", __FILE__, __LINE__);
return '';
}
 
// name of the block where the given placeholder was found
$found = '';
 
if ($block != '') {
if (is_array($variables = $this->blockvariables[$block])) {
// search the value in the list of blockvariables
reset($variables);
while (list($k, $variable) = each($variables)) {
if ($k == $placeholder) {
$found = $block;
break;
}
}
}
} else {
 
// search all blocks and return the name of the first block that
// contains the placeholder
reset($this->blockvariables);
while (list($blockname, $variables) = each($this->blockvariables)){
if (is_array($variables) && isset($variables[$placeholder])) {
$found = $blockname;
break;
}
}
}
 
return $found;
} // end func placeholderExists
 
/**
* Checks the list of function calls in the template and
* calls their callback function.
*
* @access public
*/
function performCallback()
{
reset($this->functions);
while (list($func_id, $function) = each($this->functions)) {
if (isset($this->callback[$function['name']])) {
if ($this->callback[$function['name']]['expandParameters']) {
$callFunction = 'call_user_func_array';
} else {
$callFunction = 'call_user_func';
}
 
if ($this->callback[$function['name']]['object'] != '') {
$call =
$callFunction(
array(
&$GLOBALS[$this->callback[$function['name']]['object']],
$this->callback[$function['name']]['function']),
$function['args']
);
} else {
$call =
$callFunction(
$this->callback[$function['name']]['function'],
$function['args']
);
}
$this->variableCache['__function' . $func_id . '__'] = $call;
}
}
} // end func performCallback
 
/**
* Returns a list of all function calls in the current template.
*
* @return array
* @access public
*/
function getFunctioncalls()
{
return $this->functions;
} // end func getFunctioncalls
 
/**
* Replaces a function call with the given replacement.
*
* @param int Function ID
* @param string Replacement
* @deprecated
*/
function setFunctioncontent($functionID, $replacement)
{
$this->variableCache['__function' . $functionID . '__'] = $replacement;
} // end func setFunctioncontent
 
/**
* Sets a callback function.
*
* IT[X] templates (note the X) can contain simple function calls.
* "function call" means that the editor of the template can add
* special placeholder to the template like 'func_h1("embedded in h1")'.
* IT[X] will grab this function calls and allow you to define a callback
* function for them.
*
* This is an absolutely evil feature. If your application makes heavy
* use of such callbacks and you're even implementing if-then etc. on
* the level of a template engine you're reiventing the wheel... - that's
* actually how PHP came into life. Anyway, sometimes it's handy.
*
* Consider also using XML/XSLT or native PHP. And please do not push
* IT[X] any further into this direction of adding logics to the template
* engine.
*
* For those of you ready for the X in IT[X]:
*
* <?php
* ...
* function h_one($args) {
* return sprintf('<h1>%s</h1>', $args[0]);
* }
*
* ...
* $itx = new HTML_Template_ITX( ... );
* ...
* $itx->setCallbackFunction('h1', 'h_one');
* $itx->performCallback();
* ?>
*
* template:
* func_h1('H1 Headline');
*
* @param string Function name in the template
* @param string Name of the callback function
* @param string Name of the callback object
* @param boolean If the callback is called with a list of parameters or
* with an array holding the parameters
* @return boolean False on failure.
* @throws IT_Error
* @access public
* @deprecated The $callbackobject parameter is depricated since
* version 1.2 and might be dropped in further versions.
*/
function
setCallbackFunction($tplfunction, $callbackfunction, $callbackobject = '', $expandCallbackParameters=false)
{
if ($tplfunction == '' || $callbackfunction == '') {
return new IT_Error(
"No template function "."('$tplfunction')".
" and/or no callback function ('$callback') given.",
__FILE__, __LINE__
);
}
$this->callback[$tplfunction] = array(
'function' => $callbackfunction,
'object' => $callbackobject,
'expandParameters' => (boolean) $expandCallbackParameters
);
 
return true;
} // end func setCallbackFunction
 
/**
* Sets the Callback function lookup table
*
* @param array function table
* array[templatefunction] =
* array(
* "function" => userfunction,
* "object" => userobject
* )
* @access public
*/
function setCallbackFuntiontable($functions)
{
$this->callback = $functions;
} // end func setCallbackFunctiontable
 
/**
* Recursively removes all data assiciated with a block, including all inner blocks
*
* @param string block to be removed
* @access private
*/
function removeBlockData($block)
{
if (isset($this->blockinner[$block])) {
foreach ($this->blockinner[$block] as $k => $inner) {
$this->removeBlockData($inner);
}
 
unset($this->blockinner[$block]);
}
 
unset($this->blocklist[$block]);
unset($this->blockdata[$block]);
unset($this->blockvariables[$block]);
unset($this->touchedBlocks[$block]);
 
} // end func removeBlockinner
 
/**
* Returns a list of blocknames in the template.
*
* @return array [blockname => blockname]
* @access public
* @see blockExists()
*/
function getBlocklist()
{
$blocklist = array();
foreach ($this->blocklist as $block => $content) {
$blocklist[$block] = $block;
}
 
return $blocklist;
} // end func getBlocklist
 
/**
* Checks wheter a block exists.
*
* @param string
* @return boolean
* @access public
* @see getBlocklist()
*/
function blockExists($blockname)
{
return isset($this->blocklist[$blockname]);
} // end func blockExists
 
/**
* Returns a list of variables of a block.
*
* @param string Blockname
* @return array [varname => varname]
* @access public
* @see BlockvariableExists()
*/
function getBlockvariables($block)
{
if (!isset($this->blockvariables[$block])) {
return array();
}
 
$variables = array();
foreach ($this->blockvariables[$block] as $variable => $v) {
$variables[$variable] = $variable;
}
 
return $variables;
} // end func getBlockvariables
 
/**
* Checks wheter a block variable exists.
*
* @param string Blockname
* @param string Variablename
* @return boolean
* @access public
* @see getBlockvariables()
*/
function BlockvariableExists($block, $variable)
{
return isset($this->blockvariables[$block][$variable]);
} // end func BlockvariableExists
 
/**
* Builds a functionlist from the template.
* @access private
*/
function buildFunctionlist()
{
$this->functions = array();
 
$template = $this->template;
$num = 0;
 
while (preg_match($this->functionRegExp, $template, $regs)) {
 
$pos = strpos($template, $regs[0]);
$template = substr($template, $pos + strlen($regs[0]));
 
$head = $this->getValue($template, ')');
$args = array();
 
$search = $regs[0] . $head . ')';
 
$replace = $this->openingDelimiter .
'__function' . $num . '__' .
$this->closingDelimiter;
 
$this->template = str_replace($search, $replace, $this->template);
$template = str_replace($search, $replace, $template);
 
while ($head != '' && $args2 = $this->getValue($head, ',')) {
$arg2 = trim($args2);
$args[] = ('"' == $arg2{0} || "'" == $arg2{0}) ?
substr($arg2, 1, -1) : $arg2;
if ($arg2 == $head) {
break;
}
$head = substr($head, strlen($arg2) + 1);
}
 
$this->functions[$num++] = array(
'name' => $regs[1],
'args' => $args
);
}
 
} // end func buildFunctionlist
 
/**
* Truncates the given code from the first occurence of
* $delimiter but ignores $delimiter enclosed by " or '.
*
* @access private
* @param string The code which should be parsed
* @param string The delimiter char
* @return string
* @see buildFunctionList()
*/
function getValue($code, $delimiter) {
if ($code == '') {
return '';
}
 
if (!is_array($delimiter)) {
$delimiter = array( $delimiter => true );
}
 
$len = strlen($code);
$enclosed = false;
$enclosed_by = '';
 
if (isset($delimiter[$code[0]])) {
$i = 1;
} else {
for ($i = 0; $i < $len; ++$i) {
$char = $code[$i];
 
if (
($char == '"' || $char == "'") &&
($char == $enclosed_by || '' == $enclosed_by) &&
(0 == $i || ($i > 0 && '\\' != $code[$i - 1]))
) {
 
if (!$enclosed) {
$enclosed_by = $char;
} else {
$enclosed_by = "";
}
$enclosed = !$enclosed;
 
}
 
if (!$enclosed && isset($delimiter[$char])) {
break;
}
}
}
 
return substr($code, 0, $i);
} // end func getValue
 
/**
* Deletes one or many variables from the block variable list.
*
* @param string Blockname
* @param mixed Name of one variable or array of variables
* ( array ( name => true ) ) to be stripped.
* @access private
*/
function deleteFromBlockvariablelist($block, $variables)
{
if (!is_array($variables)) {
$variables = array($variables => true);
}
 
reset($this->blockvariables[$block]);
while (list($varname, $val) = each($this->blockvariables[$block])) {
if (isset($variables[$varname])) {
unset($this->blockvariables[$block][$varname]);
}
}
} // end deleteFromBlockvariablelist
 
/**
* Updates the variable list of a block.
*
* @param string Blockname
* @access private
*/
function updateBlockvariablelist($block)
{
preg_match_all( $this->variablesRegExp,
$this->blocklist[$block], $regs
);
 
if (count($regs[1]) != 0) {
foreach ($regs[1] as $k => $var) {
$this->blockvariables[$block][$var] = true;
}
} else {
$this->blockvariables[$block] = array();
}
 
// check if any inner blocks were found
if (isset($this->blockinner[$block]) &&
is_array($this->blockinner[$block]) &&
count($this->blockinner[$block]) > 0
) {
/*
* loop through inner blocks, registering the variable
* placeholders in each
*/
foreach ($this->blockinner[$block] as $childBlock) {
$this->updateBlockvariablelist($childBlock);
}
}
} // end func updateBlockvariablelist
 
/**
* Returns an array of blocknames where the given variable
* placeholder is used.
*
* @param string Variable placeholder
* @return array $parents parents[0..n] = blockname
* @access public
*/
function findPlaceholderBlocks($variable)
{
$parents = array();
reset($this->blocklist);
while (list($blockname, $content) = each($this->blocklist)) {
reset($this->blockvariables[$blockname]);
while (
list($varname, $val) = each($this->blockvariables[$blockname]))
{
if ($variable == $varname) {
$parents[] = $blockname;
}
}
}
 
return $parents;
} // end func findPlaceholderBlocks
 
/**
* Handles warnings, saves them to $warn and prints them or
* calls die() depending on the flags
*
* @param string Warning
* @param string File where the warning occured
* @param int Linenumber where the warning occured
* @see $warn, $printWarning, $haltOnWarning
* @access private
*/
function warning($message, $file = '', $line = 0)
{
$message = sprintf(
'HTML_Template_ITX Warning: %s [File: %s, Line: %d]',
$message,
$file,
$line
);
 
$this->warn[] = $message;
 
if ($this->printWarning) {
print $message;
}
 
if ($this->haltOnWarning) {
die($message);
}
} // end func warning
 
} // end class HTML_Template_ITX
?>
/trunk/wikini/maj_wikini/tools/templates/api/IT_Error.php
New file
0,0 → 1,51
<?php
//
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2005 Ulf Wendel, Pierre-Alain Joye |
// +----------------------------------------------------------------------+
// | This source file is subject to the New BSD license, That is bundled |
// | with this package in the file LICENSE, and is available through |
// | the world-wide-web at |
// | http://www.opensource.org/licenses/bsd-license.php |
// | If you did not receive a copy of the new BSD license and are unable |
// | to obtain it through the world-wide-web, please send a note to |
// | pajoye@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Author: Ulf Wendel <ulf.wendel@phpdoc.de> |
// | Pierre-Alain Joye <pajoye@php.net> |
// +----------------------------------------------------------------------+
//
// $Id: IT_Error.php,v 1.3 2006/08/17 15:44:31 dsp Exp $
 
require_once "PEAR.php";
 
/**
* IT[X] Error class
*
* @package HTML_Template_IT
*/
class IT_Error extends PEAR_Error {
 
 
/**
* Prefix of all error messages.
*
* @var string
*/
var $error_message_prefix = "IntegratedTemplate Error: ";
/**
* Creates an cache error object.
*
* @param string error message
* @param string file where the error occured
* @param string linenumber where the error occured
*/
function IT_Error($msg, $file = __FILE__, $line = __LINE__) {
$this->PEAR_Error(sprintf("%s [%s on line %d].", $msg, $file, $line));
} // end func IT_Error
} // end class IT_Error
?>
/trunk/wikini/maj_wikini/tools/templates/wiki.php
New file
0,0 → 1,76
<?php
 
// Partie publique
 
if (!defined("WIKINI_VERSION"))
{
die ("acc&egrave;s direct interdit");
}
define ('CSS_PAR_DEFAUT', 'default.css');
define ('SQUELETTE_PAR_DEFAUT', 'default');
define ('THEME_PAR_DEFAUT', 'mandarine');
 
//=======Changer de theme=================================================================================================
//on cherche tous les dossiers du repertoire themes et on les range dans le tableau $wakkaConfig['themes']
$repertoire = 'tools/templates/themes';
$dir = opendir($repertoire);
while (false !== ($file = readdir($dir))) {
if ($file!='.' && $file!='..') $wakkaConfig['themes'][$file]=$file;
}
closedir($dir);
 
if (isset($_POST['theme']) && array_key_exists($_POST['theme'], $wakkaConfig['themes'])) {
$wakkaConfig['favorite_theme'] = $_POST['theme'];
}
elseif (isset($_COOKIE['favorite_theme'])) {
$wakkaConfig['favorite_theme'] = $_COOKIE['favorite_theme'];
}
else {
$wakkaConfig['favorite_theme'] = THEME_PAR_DEFAUT;
 
}
setcookie('favorite_theme', $wakkaConfig['favorite_theme'], time() + 63115200);
 
//=======Changer de style=====================================================================================================
//on cherche tous les fichiers avec l'extension .css du répertoire des styles et on les range dans le tableau $wakkaConfig['styles']
$repertoire = 'tools/templates/themes/'.$wakkaConfig['favorite_theme'].'/styles';
$dir = opendir($repertoire);
$styles['none']='pas de style';
while (false !== ($file = readdir($dir))) {
if (substr($file, -4, 4)=='.css') $wakkaConfig['styles'][$file]=$file;
}
closedir($dir);
 
if (isset($_POST['style']) && array_key_exists($_POST['style'], $wakkaConfig['styles'])) {
$wakkaConfig['favorite_style'] = $_POST['style'];
}
elseif (isset($_COOKIE['favorite_style'])) {
$wakkaConfig['favorite_style'] = $_COOKIE['favorite_style'];
}
else {
$wakkaConfig['favorite_style'] = CSS_PAR_DEFAUT;
}
setcookie('favorite_style', $wakkaConfig['favorite_style'], time() + 63115200);
 
//=======Changer de squelette=================================================================================================
//on cherche tous les fichiers avec l'extension .html du répertoire des squelettes et on les range dans $wakkaConfig['squelettes']
$repertoire = 'tools/templates/themes/'.$wakkaConfig['favorite_theme'].'/squelettes';
$dir = opendir($repertoire);
while (false !== ($file = readdir($dir))) {
$nom_extension_squelette=substr($file, -9, 9);
$nom_squelette=str_replace($nom_extension_squelette, '', $file);
if ($nom_extension_squelette=='.tpl.html') $wakkaConfig['squelettes'][$nom_squelette]=$file;
}
closedir($dir);
 
if(isset($_POST['squelette']) && array_key_exists($_POST['squelette'], $wakkaConfig['squelettes'])) {
$wakkaConfig['favorite_squelette'] = $_POST['squelette'];
}
elseif(isset($_COOKIE['favorite_squelette'])) {
$wakkaConfig['favorite_squelette'] = $_COOKIE['favorite_squelette'];
}
else {
$wakkaConfig['favorite_squelette'] = SQUELETTE_PAR_DEFAUT;
}
setcookie('favorite_squelette', $wakkaConfig['favorite_squelette'], time() + 63115200);
?>
/trunk/wikini/maj_wikini/tools/templates/desc.xml
New file
0,0 → 1,6
<?xml version="1.0" encoding="ISO-8859-1"?>
<plugin name="wktemplates" version="0.1" active="1">
<author>Florian Schmitt</author>
<label>Templates</label>
<desc>Le plugin "Templates" vous permet de gérer des template html et css vous votre design web.</desc>
</plugin>
/trunk/wikini/maj_wikini/tools/templates/index.php
New file
0,0 → 1,20
<?php
// Administration
 
 
// Vérification de sécurité
if (!defined("TOOLS_MANAGER"))
{
die ("acc&egrave;s direct interdit");
}
 
 
buffer::str(
'
Le plugin "Templates" vous permet de gérer des template html et css vous votre design web.
'
 
 
);
 
?>
/trunk/wikini/maj_wikini/tools/templates/actions/header.php
New file
0,0 → 1,88
<?php
//=======Restes de wikini=====================================================================================================
$message = $this->GetMessage();
$user = $this->GetUser();
 
//On r�cupere le template et on execute les actions wikini
$template = file_get_contents('tools/templates/themes/'.$this->config['favorite_theme'].'/squelettes/'.$this->config['favorite_squelette'].'.tpl.html');
$template_decoupe = explode("{WIKINI_PAGE}", $template);
if ($act=preg_match_all ("/".'(\\{\\{)'.'(.*?)'.'(\\}\\})'."/is", $template_decoupe[0], $matches)) {
$i = 0; $j = 0;
foreach($matches as $valeur) {
foreach($valeur as $val) {
if ($matches[2][$j]!='') {
$action= $matches[2][$j];
$template=str_replace('{{'.$action.'}}', $this->Format('{{'.$action.'}}'), $template_decoupe[0]);
}
$j++;
}
$i++;
}
}
 
 
//on utilise la bibliotheque pear template it pour gerer les variables dans la template
require_once 'tools/templates/api/IT.php';
$tpl = new HTML_Template_IT('tools/templates/themes/'.$this->config['favorite_theme'].'/squelettes');
$tpl->setTemplate($template, true, true);
 
//on assigne les valeurs aux variables du template
 
//titre de la page
$wikini_titre=$this->GetWakkaName().":".$this->GetPageTag();
$tpl->setVariable('WIKINI_TITRE', $wikini_titre);
 
// meta robots
if ($this->GetMethod() != 'show') $wikini_meta_robots="<meta name=\"robots\" content=\"noindex, nofollow\"/>\n";
if (isset($wikini_meta_robots)) $tpl->setVariable('WIKINI_META_ROBOTS', $wikini_meta_robots);
 
//mots cles
$wikini_mots_cles = $this->config['meta_keywords'];
$tpl->setVariable('WIKINI_MOTS_CLES', $wikini_mots_cles);
 
//description
$wikini_description = $this->config['meta_description'];
$tpl->setVariable('WIKINI_DESCRIPTION', $wikini_description);
 
//feuilles de styles
$wikini_styles_css = '';
if ($this->config['favorite_style']!='none') $wikini_styles_css .= '<link rel="stylesheet" type="text/css" href="tools/templates/themes/'.$this->config['favorite_theme'].'/styles/'.$this->config['favorite_style'].'" media="screen" title="'.$this->config['favorite_style'].'" />'."\n";
foreach($this->config['styles'] as $key => $value) {
if($key !== $this->config['favorite_style'] && $key !== 'none') {
$wikini_styles_css .= '<link rel="alternate stylesheet" type="text/css" href="tools/templates/themes/'.$this->config['favorite_theme'].'/styles/'.$key.'" media="screen" title="'.$value.'" />'."\n";
}
}
$tpl->setVariable('WIKINI_STYLES_CSS', $wikini_styles_css);
 
//javascripts
$wikini_javascripts = '';
$repertoire = 'tools/templates/themes/'.$this->config['favorite_theme'].'/javascripts';
$dir = opendir($repertoire);
while (false !== ($file = readdir($dir))) {
if (substr($file, -3, 3)=='.js') $scripts[] = '<script type="text/javascript" src="'.$repertoire.'/'.$file.'"></script>'."\n";
}
asort($scripts);
foreach ($scripts as $key => $val) {
$wikini_javascripts .= "$val\n";
}
closedir($dir);
if ($wikini_javascripts!='') $tpl->setVariable('WIKINI_JAVASCRIPTS', $wikini_javascripts);
 
 
//attributs du body
$wikini_body = $message ? "onLoad=\"alert('".$message."');\" " : "";
$tpl->setVariable('WIKINI_BODY', $wikini_body);
 
//nom du site
$wikini_titre_site = $this->config["wakka_name"] ;
$tpl->setVariable('WIKINI_TITRE_SITE', $wikini_titre_site);
 
//remise a zero des styles css
$wikini_resetstyle .= $this->href().'/resetstyle';
$tpl->setVariable('WIKINI_RESETSTYLE', $wikini_resetstyle);
 
//javascript du double clic
$wikini_double_clic = "ondblclick=\"document.location='".$this->href("edit")."';\" ";
$tpl->setVariable('WIKINI_DOUBLE_CLIC', $wikini_double_clic);
 
$plugin_output_new = $tpl->show();
/trunk/wikini/maj_wikini/tools/templates/actions/selecteur.php
New file
0,0 → 1,71
<?php
/*
selecteur.php
Code original de ce fichier : Florian SCHMITT
Copyright (c) 2007, Florian SCHMITT <florian.schmitt@laposte.net>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
 
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
 
/* Paramètres :
-- type : type de selecteur: theme, style, ou squelette
 
*******************************************************************************/
 
 
 
if (!defined("WIKINI_VERSION"))
{
die ("acc&egrave;s direct interdit");
}
 
 
$type = $this->GetParameter("type");
 
// Affichage de la page ou d'un message d'erreur
if (empty($type)) {
echo $this->Format("//Le paramètre \"type\" est manquant.//");
} elseif ($type=='squelette' || $type=='style' || $type=='theme' ) {
$wikini_selecteur= '<div class="selecteur_'.$type.'">
<form action="" method="post">
<select name="'.$type.'" onchange="javascript:this.form.submit();">';
foreach($this->config[$type.'s'] as $key => $value) {
if($key !== $this->config['favorite_'.$type]) {
$wikini_selecteur .= '<option value="'.$key.'">'.$value.'</option>'."\n";
}
else {
$squelettes=$this->config[$type.'s'];
$wikini_selecteur .= '<option value="'.$this->config['favorite_'.$type].'" selected="selected">'. $squelettes[$this->config['favorite_'.$type]].'</option>'."\n";
}
}
$wikini_selecteur .= '</select>
<input type="submit" value="Changer le '.$type.'" />
</form>
</div> <!--fin div selecteur_'.$type.'-->';
 
echo $wikini_selecteur;
}
else {
echo $this->Format("//Le paramètre \"type\" ne contient pas les valeurs 'squelette', 'style' ou 'theme'.//");
}
?>
/trunk/wikini/maj_wikini/tools/templates/actions/footer.php
New file
0,0 → 1,73
<?php
//On recupere le template et on execute les actions wikini
$template = file_get_contents('tools/templates/themes/'.$this->config['favorite_theme'].'/squelettes/'.$this->config['favorite_squelette'].'.tpl.html');
$template_decoupe = explode("{WIKINI_PAGE}", $template);
if ($act=preg_match_all ("/".'(\\{\\{)'.'(.*?)'.'(\\}\\})'."/is", $template_decoupe[1], $matches)) {
$i = 0; $j = 0;
foreach($matches as $valeur) {
foreach($valeur as $val) {
if ($matches[2][$j]!='') {
$action= $matches[2][$j];
$template_decoupe[1]=str_replace('{{'.$action.'}}', $this->Format('{{'.$action.'}}'), $template_decoupe[1]);
}
$j++;
}
$i++;
}
}
 
//on utilise la bibliotheque pear template it pour gerer les variables dans la template
require_once 'tools/templates/api/IT.php';
$tpl = new HTML_Template_IT('tools/templates/themes/'.$this->config['favorite_theme'].'/squelettes');
 
$tpl->setTemplate($template_decoupe[1], true, true);
 
//action pour le footer de wikini
$wikini_barre_bas =
'<div class="footer">'."\n";
//echo $this->FormOpen("", "RechercheTexte", "get");
$wikini_barre_bas .=
$this->FormOpen("", "RechercheTexte", "get")."\n";
if ( $this->HasAccess("write") ) {
$wikini_barre_bas .= "<a href=\"".$this->href("edit")."\" title=\"Cliquez pour &eacute;diter cette page.\">&Eacute;diter cette page</a> ::\n";
}
if ( $this->GetPageTime() ) {
$wikini_barre_bas .= "<a href=\"".$this->href("revisions")."\" title=\"Cliquez pour voir les derni&egrave;res modifications sur cette page.\">".$this->GetPageTime()."</a> ::\n";
}
// if this page exists
if ($this->page)
{
// if owner is current user
if ($this->UserIsOwner())
{
$wikini_barre_bas .=
"Propri&eacute;taire&nbsp;: vous :: \n".
"<a href=\"".$this->href("acls")."\" title=\"Cliquez pour &eacute;diter les permissions de cette page.\">&Eacute;diter permissions</a> :: \n".
"<a href=\"".$this->href("deletepage")."\">Supprimer</a> :: \n";
}
else
{
if ($owner = $this->GetPageOwner())
{
$wikini_barre_bas .= "Propri&eacute;taire : ".$this->Format($owner);
}
else
{
$wikini_barre_bas .= "Pas de propri&eacute;taire ";
$wikini_barre_bas .= ($this->GetUser() ? "(<a href=\"".$this->href("claim")."\">Appropriation</a>)" : "");
}
$wikini_barre_bas .= " :: \n";
}
}
$wikini_barre_bas .=
'<a href="'.$this->href("referrers").'" title="Cliquez pour voir les URLs faisant r&eacute;f&eacute;rence &agrave; cette page.">'."\n".
'R&eacute;f&eacute;rences</a> ::'."\n".
'Recherche : <input name="phrase" size="15" class="searchbox" />'."\n".
$this->FormClose()."\n".
'</div>'."\n";
 
$tpl->setVariable('WIKINI_BARRE_BAS', $wikini_barre_bas);
$tpl->setVariable('WIKINI_VERSION', $this->GetWikiNiVersion());
 
$plugin_output_new = $tpl->show();
?>
/trunk/wikini/maj_wikini/tools/templates/themes/default/styles/default.css
New file
0,0 → 1,58
body { background-color: #F5F5F5; color: black; }
 
body, p, td, li, input, select, textarea { font-family: 'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 1.3; }
h1, h2, h3, h4, h5 { margin: 0px; padding: 0px; }
a { color: #993333; }
ul { margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; }
ol { margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; }
form { margin: 0px; padding: 0px; }
tt { color: Navy; }
hr { border: 0px; color: Black; /* Internet Explorer */ background-color: Black; height: 1px; }
 
#selecteur_squelette {position:absolute; top:3px; right:3px;}
#selecteur_style {position:absolute; top:30px; right:3px;}
.wiki_name { float: left; margin: 0px 15px 0px 10px; font-size: 150%; }
.page_name { font-size: 150%; }
 
#page {margin: 0px; padding: 0px ; border: none; height: 100%;width: 100%;}
#colonne_gauche {float:left; background: #f8f8f8; width: 19%; border: 1px solid #ccc; padding:5px;}
#colonne_droite {margin-left:21%; border: none; padding:0;}
 
.error { color: #CC3333; font-weight: bold; }
.indent { margin-left: 40px; }
.additions { color: #008800; }
.deletions { color: #880000; }
.add { font-weight: bold; color: #c00; text-decoration: underline; }
.del { font-style: italic; color: #c00; text-decoration: line-through; }
.header { padding: 10px; padding-top: 0px }
.page { background-color: #FFFFFF; padding: 10px; border: 1px inset; border-bottom: none; }
.prev_alert { background-color: red; color: white; font-size: 1.7em; font-weight: bold; margin-bottom: 5px; }
.edit { width: 100%; height: 400px; }
.footer { background-color: #DDDDDD; padding: 5px 10px; border: 1px inset; border-top: none; border-top: 1px solid #CCCCCC }
.code { background: #FFFFFF; border: solid #888888 2px; font-family: 'Courier New', Courier; width: 100%; height: 400px; overflow: scroll; padding: 3px; }
.revisioninfo { color: #AAAAAA; padding-bottom: 20px; }
 
.commentsheader { background-color: #DDDDDD; padding: 2px 10px; border-left: 1px inset; border-right: 1px inset; border-top: 1px solid #CCCCCC }
.comment { background-color: #EEEEEE; padding: 10px; border-left: 1px inset; border-right: 1px inset; border-top: 1px solid #CCCCCC; border-bottom: 1px solid #EEEEEE; }
.commentinfo { color: #AAAAAA; }
.commentform { background-color: #EEEEEE; padding: 10px; border-left: 1px inset; border-right: 1px inset; border-top: 1px solid #CCCCCC }
 
.copyright { font-size: 11px; color: #AAAAAA; text-align: right; }
.copyright A { color: #AAAAAA; }
.searchbox { background: #FFFFF8; border: 0px; border-bottom: 1px solid #CCCCAA; padding: 0px; margin: 0px; }
.debug { font-size: 11px; color: #888888; }
 
.hr_clear { clear: both; visibility: hidden; }
.include_right { float: right; width: 17%; } /* bloc flotant à droite */
.include_left { float: left; width: 17%; } /* bloc flotant à gauche */
.include_solid_border { border: solid; padding: 2px; } /* encadré noir */
.include_gray_background { background-color: #DDDDDD; } /* fond gris */
.include_small_fonts { font-size: 0.8em; } /* petites polices */
.include_big_fonts { font-size: 1.2em; } /* grandes polces */
.include_height10em { height: 10em; overflow: scroll; } /* boite de 10em de hauteur, avec ascenseur */
.include_height15em { height: 15em; overflow: scroll; }
.include_height30em { height: 30em; overflow: scroll; }
.include_height60em { height: 60em; overflow: scroll; }
 
.trail_table { line-height: 30px;}
.trail_button { color: #993333; }
/trunk/wikini/maj_wikini/tools/templates/themes/default/styles/ecopaca.css
New file
0,0 → 1,111
/*Debut modification sytle TELA BOTANICA*/
* {margin:0; padding:0; text-indent:0;}
body {background:#FFF; font:12pt Arial, sans-serif; color:#000; text-align:center;}
#page {position:relative; width:758px; text-align:left; margin:0 auto;}
 
hr {margin:2px; width:100%; color: #7F8343; background-color: #7F8343; height: 1px;}
a {margin:0; padding:0; color:#751451; text-decoration:none;}
a:hover {text-decoration:none; color:#2D6C98;}
img{border:0;}
img a{display:block;}
#selecteur_squelette {position:absolute; top:3px; right:3px;}
#selecteur_style {position:absolute; top:30px; right:3px;}
 
/*****************Titres********************************************************/
h1, h2, h3, h4, h5, h6 {font-family:'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif; text-align:left; margin:4px 0;}
h1 {padding:2px; font-size: 20pt; color:rgb(79, 52, 147);}
#colonne_droite h1 {padding:4px 0 4px 40px; background:url('../images/puce_titre.png') no-repeat top left;}
h2 {padding:2px; text-align: left; font-size: 18pt; color: #93117e;}
h3 {padding:2px; font-weight: bold; font-size:17pt; color: #9cc300;}
h4 {padding:2px; text-align: center; font-weight: bold; font-size: 14pt; color: #05AEF8;}
h5 {padding:2px; text-align: center; font-weight: bold; font-size: 12pt; color: #4F3493;}
 
ul {padding:0;margin: 0 0 0 10px;}
#colonne_droite li {padding:2px 0 2px 20px; margin:2px 0 0 0; color:#000; background:url('../images/puce_menu.png') no-repeat top left; list-style-type:none;}
 
/*****************Bandeau du haut********************************************************/
#zone_bandeau {height:288px; width:758px; background:url(../images/bandeau_haut.png) no-repeat top left;}
#titre_site {padding:20px 0 0 0; text-align:center;}
#titre_site a {text-decoration:none; color:#08429C; font-size:18px;}
 
/*****************Contenu page (colonne gauche + corps)********************************************************/
#zone_contenu {float:left; margin:0; padding:0 ;width:758px; background:url(../images/barre_conteneur.png) repeat-y top left;}
p, .page {clear:both;background-color:transparent;text-align: justify;line-height: 22px;}
 
/*****************Colonne de gauche********************************************************/
#colonne_gauche {clear:both; float:left; width:176px; padding:0; margin:0; text-align:center;}
#colonne_gauche h1 {padding:6px 0 0 0; margin:0; text-align:center; font-weight:bold; font-size:13px; color:#751451; }
#menu_haut {margin:0 0 0 15px; width:151px; height:34px; background:url(../images/bandeau_menu_haut.png) no-repeat top left;}
#menu_contenu {margin:0 0 0 15px; width:151px; background:url(../images/barre_menu.png) repeat-y top left;}
#menu_bas {margin:0 0 40px 15px; width:151px; height:12px; background:url(../images/bandeau_menu_bas.png) no-repeat top left;}
#menu_contenu ul {display:block;margin:0; padding:1px; color:#FFF; list-style:none; list-style-type:none;}
#menu_contenu li, #menu li li {margin:2px 0; padding:0; color:#000;}
#menu_contenu li ul {margin:0 0 0 12px; padding:0; border-left:1px solid #08429c;}
#menu_contenu li a {display:block; padding:2px 0 2px 10px; margin:0; text-decoration:none; color:#08429c; font-size:12px; background:transparent; text-align:left;}
#menu_contenu li a:hover, #menu_contenu li.menu_actif a {margin-left:3px; padding-left:19px; color:#751451; background:url(../images/puce_menu.png) no-repeat top left;}
 
#colonne_droite {float:left; width:524px; margin:0 0 0 10px; padding:0 10px 0 10px; text-align:justify;}
 
/*****************Pied de page********************************************************/
#zone_pied {float:left; text-align:center; margin:0; padding:0; width:758px; height:259px; background: url(../images/bandeau_bas.png) no-repeat top left;}
#zone_pied a {font:12pt arial, sans-serif; color:#751451; text-decoration:none;}
#zone_pied a:hover {text-decoration:underline; color:#efb521;}
#copyright {padding:220px 0 0 0; float:left; color:#000; width:758px;}
 
.error { color: #CC3333; font-weight: bold; }
.indent { margin-left: 40px; }
.additions { color: #008800; }
.deletions { color: #880000; }
.add { font-weight: bold; color: #c00; text-decoration: underline; }
.del { font-style: italic; color: #c00; text-decoration: line-through; }
.prev_alert { background-color: red; color: white; font-size: 1.7em; font-weight: bold; margin-bottom: 5px; }
.edit { width: 100%; height: 400px; }
.footer { background-color: #DDDDDD; padding: 5px 10px; border: 1px solid #000; display: none; }
.code { background: #FFFFFF; border: solid #888888 2px; font-family: 'Courier New', Courier; color: black; font-size: 10pt; width: 100%; height: 400px; overflow: scroll; padding: 3px; }
.revisioninfo { color: #AAAAAA; padding-bottom: 20px; }
 
.commentsheader { display:none; background-color: #DDDDDD; padding: 2px 10px; border-left: 1px inset; border-right: 1px inset; border-top: 1px solid #CCCCCC }
.comment { display:none; background-color: #EEEEEE; padding: 10px; border-left: 1px inset; border-right: 1px inset; border-top: 1px solid #CCCCCC; border-bottom: 1px solid #EEEEEE; }
.commentinfo { display:none; color: #AAAAAA; }
.commentform { display:none; background-color: #EEEEEE; padding: 10px; border-left: 1px inset; border-right: 1px inset; border-top: 1px solid #CCCCCC }
 
.copyright { font-size: 11px; color: #AAAAAA; text-align: right; display: none;}
.copyright A { color: #AAAAAA; }
.searchbox { background: #FFFFF8; border: 0px; border-bottom: 1px solid #CCCCAA; padding: 0px; margin: 0px; }
.debug { font-size: 11px; color: #888888; }
 
.hr_clear { clear: both; visibility: hidden; }
.include_right { float: right; width: 17%; } /* bloc flotant � droite */
.include_left { float: left; width: 17%; } /* bloc flotant � gauche */
.include_solid_border { border: solid; padding: 2px; } /* encadr� noir */
.include_gray_background { background-color: #DDDDDD; } /* fond gris */
.include_small_fonts { font-size: 0.8em; } /* petites polices */
.include_big_fonts { font-size: 1.2em; } /* grandes polces */
.include_height10em { height: 10em; overflow: scroll; } /* boite de 10em de hauteur, avec ascenseur */
.include_height15em { height: 15em; overflow: scroll; }
.include_height30em { height: 30em; overflow: scroll; }
.include_height60em { height: 60em; overflow: scroll; }
 
.trail_table { line-height: 30px;}
.trail_button { color: #993333; }
 
/* CONTRIBUTION ACTION ATTACH */
/* - les images */
.attach_margin05em { margin: 0.5em;} /* marge de 0.5 em autour de l'image*/
.attach_margin1em { margin: 1em;} /* marge de 1em autour de l'image*/
.attach_left {float: left;} /* bloc flotant � gauche */
.attach_right {float: right;} /* bloc flotant � droite */
.attach_noborder {border-width: 0px;} /* pas de bordure */
.attach_vmiddle {vertical-align: text-bottom;} /* aligenement vertical au milieu */
/* - le gestionnaire des uploads */
.tableFM {border: thin solid Black; width: 100%; }
.tableFM THEAD { background-color: Silver; font-weight: bold; text-align: center; }
.tableFM TFOOT { background-color: Silver; font-weight: bold; text-align: left; }
.tableFM TBODY TR { text-align: center; }
.tableFMCol1 { background-color: Aqua; }
.tableFMCol2 { background-color: Yellow; }
 
/* CONTRIBUTION ACeditor */
.image_left {float: left;} /* bloc flotant � gauche */
.image_right {float: right;} /* bloc flotant � droite */
.image_center {text-align:center;} /* bloc centr� */
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/input.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/input.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/menu_inactif.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/menu_inactif.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/puce_titre.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/puce_titre.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/bandeau_menu_haut.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/bandeau_menu_haut.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/logoEN.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/logoEN.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/rss.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/rss.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/bandeau_menu_bas.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/bandeau_menu_bas.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/menu_actif.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/menu_actif.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/bg_menu.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/bg_menu.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/barre_conteneur.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/barre_conteneur.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/barre_menu.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/barre_menu.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/bandeau_haut.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/bandeau_haut.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/puce_menu.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/puce_menu.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/bandeau_bas.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/bandeau_bas.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/loupe.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/loupe.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/Info.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/Info.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/puce.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/images/puce.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/fonctions_wikini.js
New file
0,0 → 1,6
function fKeyDown() {
if (event.keyCode == 9) {
event.returnValue= false;
document.selection.createRange().text = String.fromCharCode(9);
}
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/blank.htm
New file
0,0 → 1,9
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>blank_page</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body class="mceContentBody">
 
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/license.txt
New file
0,0 → 1,504
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
 
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
 
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
 
Preamble
 
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
 
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
 
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
 
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
 
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
 
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
 
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
 
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
 
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
 
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
 
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
 
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
 
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
 
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
 
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
 
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
 
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
 
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
 
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
 
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
 
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
 
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
 
a) The modified work must itself be a software library.
 
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
 
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
 
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
 
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
 
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
 
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
 
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
 
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
 
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
 
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
 
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
 
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
 
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
 
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
 
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
 
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
 
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
 
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
 
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
 
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
 
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
 
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
 
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
 
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
 
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
 
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
 
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
 
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
 
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
 
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
 
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
 
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
 
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
 
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
 
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
 
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
 
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
 
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
 
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
 
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
 
NO WARRANTY
 
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
 
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
 
END OF TERMS AND CONDITIONS
 
How to Apply These Terms to Your New Libraries
 
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
 
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
 
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
 
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
 
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
 
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
Also add information on how to contact you by electronic and paper mail.
 
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
 
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
 
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
 
That's all there is to it!
 
 
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/utils/editable_selects.js
New file
0,0 → 1,61
/**
* $Id: editable_selects.js 162 2007-01-03 16:16:52Z spocke $
*
* Makes select boxes editable.
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
var TinyMCE_EditableSelects = {
editSelectElm : null,
 
init : function() {
var nl = document.getElementsByTagName("select"), i, d = document, o;
 
for (i=0; i<nl.length; i++) {
if (nl[i].className.indexOf('mceEditableSelect') != -1) {
o = new Option('(value)', '__mce_add_custom__');
 
o.className = 'mceAddSelectValue';
 
nl[i].options[nl[i].options.length] = o;
nl[i].setAttribute('onchange', 'TinyMCE_EditableSelects.onChangeEditableSelect(this);');
}
}
},
 
onChangeEditableSelect : function(se) {
var d = document, ne;
 
if (se.options[se.selectedIndex].value == '__mce_add_custom__') {
ne = d.createElement("input");
ne.id = se.id + "_custom";
ne.name = se.name + "_custom";
ne.type = "text";
 
ne.style.width = se.clientWidth;
se.parentNode.insertBefore(ne, se);
se.style.display = 'none';
ne.focus();
ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput;
TinyMCE_EditableSelects.editSelectElm = se;
}
},
 
onBlurEditableSelectInput : function() {
var se = TinyMCE_EditableSelects.editSelectElm;
 
if (se) {
if (se.previousSibling.value != '') {
addSelectValue(document.forms[0], se.id, se.previousSibling.value, se.previousSibling.value);
selectByValue(document.forms[0], se.id, se.previousSibling.value);
} else
selectByValue(document.forms[0], se.id, '');
 
se.style.display = 'inline';
se.parentNode.removeChild(se.previousSibling);
TinyMCE_EditableSelects.editSelectElm = null;
}
}
};
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/utils/mclayer.js
New file
0,0 → 1,210
/**
* $Id: mclayer.js 162 2007-01-03 16:16:52Z spocke $
*
* Moxiecode floating layer script.
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
function MCLayer(id) {
this.id = id;
this.settings = new Array();
this.blockerElement = null;
this.isMSIE = navigator.appName == "Microsoft Internet Explorer";
this.events = false;
this.autoHideCallback = null;
}
 
MCLayer.prototype = {
moveRelativeTo : function(re, p, a) {
var rep = this.getAbsPosition(re);
var w = parseInt(re.offsetWidth);
var h = parseInt(re.offsetHeight);
var x, y;
 
switch (p) {
case "tl":
break;
 
case "tr":
x = rep.absLeft + w;
y = rep.absTop;
break;
 
case "bl":
break;
 
case "br":
break;
}
 
this.moveTo(x, y);
},
 
moveBy : function(dx, dy) {
var e = this.getElement();
var x = parseInt(e.style.left);
var y = parseInt(e.style.top);
 
e.style.left = (x + dx) + "px";
e.style.top = (y + dy) + "px";
 
this.updateBlocker();
},
 
moveTo : function(x, y) {
var e = this.getElement();
 
e.style.left = x + "px";
e.style.top = y + "px";
 
this.updateBlocker();
},
 
show : function() {
MCLayer.visibleLayer = this;
 
this.getElement().style.display = 'block';
this.updateBlocker();
},
 
hide : function() {
this.getElement().style.display = 'none';
this.updateBlocker();
},
 
setAutoHide : function(s, cb) {
this.autoHideCallback = cb;
this.registerEventHandlers();
},
 
getElement : function() {
return document.getElementById(this.id);
},
 
updateBlocker : function() {
if (!this.isMSIE)
return;
 
var e = this.getElement();
var b = this.getBlocker();
var x = this.parseInt(e.style.left);
var y = this.parseInt(e.style.top);
var w = this.parseInt(e.offsetWidth);
var h = this.parseInt(e.offsetHeight);
 
b.style.left = x + 'px';
b.style.top = y + 'px';
b.style.width = w + 'px';
b.style.height = h + 'px';
b.style.display = e.style.display;
},
 
getBlocker : function() {
if (!this.blockerElement) {
var d = document, b = d.createElement("iframe");
 
b.style.cssText = 'display: none; left: 0px; position: absolute; top: 0';
b.src = 'javascript:false;';
b.frameBorder = '0';
b.scrolling = 'no';
 
d.body.appendChild(b);
this.blockerElement = b;
}
 
return this.blockerElement;
},
 
getAbsPosition : function(n) {
var p = {absLeft : 0, absTop : 0};
 
while (n) {
p.absLeft += n.offsetLeft;
p.absTop += n.offsetTop;
n = n.offsetParent;
}
 
return p;
},
 
registerEventHandlers : function() {
if (!this.events) {
var d = document;
 
this.addEvent(d, 'mousedown', MCLayer.prototype.onMouseDown);
 
this.events = true;
}
},
 
addEvent : function(o, n, h) {
if (o.attachEvent)
o.attachEvent("on" + n, h);
else
o.addEventListener(n, h, false);
},
 
onMouseDown : function(e) {
e = typeof(e) == "undefined" ? window.event : e;
var b = document.body;
var l = MCLayer.visibleLayer;
 
if (l) {
var mx = l.isMSIE ? e.clientX + b.scrollLeft : e.pageX;
var my = l.isMSIE ? e.clientY + b.scrollTop : e.pageY;
var el = l.getElement();
var x = parseInt(el.style.left);
var y = parseInt(el.style.top);
var w = parseInt(el.offsetWidth);
var h = parseInt(el.offsetHeight);
 
if (!(mx > x && mx < x + w && my > y && my < y + h)) {
MCLayer.visibleLayer = null;
 
if (l.autoHideCallback && l.autoHideCallback(l, e, mx, my))
return true;
 
l.hide();
}
}
},
 
addCSSClass : function(e, c) {
this.removeCSSClass(e, c);
var a = this.explode(' ', e.className);
a[a.length] = c;
e.className = a.join(' ');
},
 
removeCSSClass : function(e, c) {
var a = this.explode(' ', e.className), i;
 
for (i=0; i<a.length; i++) {
if (a[i] == c)
a[i] = '';
}
 
e.className = a.join(' ');
},
 
explode : function(d, s) {
var ar = s.split(d);
var oar = new Array();
 
for (var i = 0; i<ar.length; i++) {
if (ar[i] != "")
oar[oar.length] = ar[i];
}
 
return oar;
},
 
parseInt : function(s) {
if (s == null || s == '')
return 0;
 
return parseInt(s);
}
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/utils/form_utils.js
New file
0,0 → 1,210
/**
* $Id: form_utils.js 162 2007-01-03 16:16:52Z spocke $
*
* Various form utilitiy functions.
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
var themeBaseURL = tinyMCE.baseURL + '/themes/' + tinyMCE.getParam("theme");
 
function getColorPickerHTML(id, target_form_element) {
var h = "";
 
h += '<a id="' + id + '_link" href="javascript:void(0);" onkeydown="pickColor(event,\'' + target_form_element +'\');" onmousedown="pickColor(event,\'' + target_form_element +'\');return false;">';
h += '<img id="' + id + '" src="' + themeBaseURL + '/images/color.gif"';
h += ' onmouseover="this.className=\'mceButtonOver\'"';
h += ' onmouseout="this.className=\'mceButtonNormal\'"';
h += ' onmousedown="this.className=\'mceButtonDown\'"';
h += ' width="20" height="16" border="0" title="' + tinyMCE.getLang('lang_browse') + '"';
h += ' class="mceButtonNormal" alt="' + tinyMCE.getLang('lang_browse') + '" /></a>';
 
return h;
}
 
function pickColor(e, target_form_element) {
if ((e.keyCode == 32 || e.keyCode == 13) || e.type == "mousedown")
tinyMCEPopup.pickColor(e, target_form_element);
}
 
function updateColor(img_id, form_element_id) {
document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value;
}
 
function setBrowserDisabled(id, state) {
var img = document.getElementById(id);
var lnk = document.getElementById(id + "_link");
 
if (lnk) {
if (state) {
lnk.setAttribute("realhref", lnk.getAttribute("href"));
lnk.removeAttribute("href");
tinyMCE.switchClass(img, 'mceButtonDisabled', true);
} else {
lnk.setAttribute("href", lnk.getAttribute("realhref"));
tinyMCE.switchClass(img, 'mceButtonNormal', false);
}
}
}
 
function getBrowserHTML(id, target_form_element, type, prefix) {
var option = prefix + "_" + type + "_browser_callback";
var cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback"));
if (cb == null)
return "";
 
var html = "";
 
html += '<a id="' + id + '_link" href="javascript:openBrower(\'' + id + '\',\'' + target_form_element + '\', \'' + type + '\',\'' + option + '\');" onmousedown="return false;">';
html += '<img id="' + id + '" src="' + themeBaseURL + '/images/browse.gif"';
html += ' onmouseover="this.className=\'mceButtonOver\';"';
html += ' onmouseout="this.className=\'mceButtonNormal\';"';
html += ' onmousedown="this.className=\'mceButtonDown\';"';
html += ' width="20" height="18" border="0" title="' + tinyMCE.getLang('lang_browse') + '"';
html += ' class="mceButtonNormal" alt="' + tinyMCE.getLang('lang_browse') + '" /></a>';
 
return html;
}
 
function openBrower(img_id, target_form_element, type, option) {
var img = document.getElementById(img_id);
 
if (img.className != "mceButtonDisabled")
tinyMCEPopup.openBrowser(target_form_element, type, option);
}
 
function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
if (!form_obj || !form_obj.elements[field_name])
return;
 
var sel = form_obj.elements[field_name];
 
var found = false;
for (var i=0; i<sel.options.length; i++) {
var option = sel.options[i];
 
if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {
option.selected = true;
found = true;
} else
option.selected = false;
}
 
if (!found && add_custom && value != '') {
var option = new Option(value, value);
option.selected = true;
sel.options[sel.options.length] = option;
sel.selectedIndex = sel.options.length - 1;
}
 
return found;
}
 
function getSelectValue(form_obj, field_name) {
var elm = form_obj.elements[field_name];
 
if (elm == null || elm.options == null)
return "";
 
return elm.options[elm.selectedIndex].value;
}
 
function addSelectValue(form_obj, field_name, name, value) {
var s = form_obj.elements[field_name];
var o = new Option(name, value);
s.options[s.options.length] = o;
}
 
function addClassesToList(list_id, specific_option) {
// Setup class droplist
var styleSelectElm = document.getElementById(list_id);
var styles = tinyMCE.getParam('theme_advanced_styles', false);
styles = tinyMCE.getParam(specific_option, styles);
 
if (styles) {
var stylesAr = styles.split(';');
 
for (var i=0; i<stylesAr.length; i++) {
if (stylesAr != "") {
var key, value;
 
key = stylesAr[i].split('=')[0];
value = stylesAr[i].split('=')[1];
 
styleSelectElm.options[styleSelectElm.length] = new Option(key, value);
}
}
} else {
// Use auto impored classes
var csses = tinyMCE.getCSSClasses(tinyMCE.getWindowArg('editor_id'));
for (var i=0; i<csses.length; i++)
styleSelectElm.options[styleSelectElm.length] = new Option(csses[i], csses[i]);
}
}
 
function isVisible(element_id) {
var elm = document.getElementById(element_id);
 
return elm && elm.style.display != "none";
}
 
function convertRGBToHex(col) {
var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
 
var rgb = col.replace(re, "$1,$2,$3").split(',');
if (rgb.length == 3) {
r = parseInt(rgb[0]).toString(16);
g = parseInt(rgb[1]).toString(16);
b = parseInt(rgb[2]).toString(16);
 
r = r.length == 1 ? '0' + r : r;
g = g.length == 1 ? '0' + g : g;
b = b.length == 1 ? '0' + b : b;
 
return "#" + r + g + b;
}
 
return col;
}
 
function convertHexToRGB(col) {
if (col.indexOf('#') != -1) {
col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
 
r = parseInt(col.substring(0, 2), 16);
g = parseInt(col.substring(2, 4), 16);
b = parseInt(col.substring(4, 6), 16);
 
return "rgb(" + r + "," + g + "," + b + ")";
}
 
return col;
}
 
function trimSize(size) {
return size.replace(new RegExp('[^0-9%]', 'gi'), '');
}
 
function getCSSSize(size) {
size = trimSize(size);
 
if (size == "")
return "";
 
return size.indexOf('%') != -1 ? size : size + "px";
}
 
function getStyle(elm, attrib, style) {
var val = tinyMCE.getAttrib(elm, attrib);
 
if (val != '')
return '' + val;
 
if (typeof(style) == 'undefined')
style = attrib;
 
val = eval('elm.style.' + style);
 
return val == null ? '' : '' + val;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/utils/mctabs.js
New file
0,0 → 1,74
/**
* $Id: mctabs.js 162 2007-01-03 16:16:52Z spocke $
*
* Moxiecode DHTML Tabs script.
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
function MCTabs() {
this.settings = new Array();
};
 
MCTabs.prototype.init = function(settings) {
this.settings = settings;
};
 
MCTabs.prototype.getParam = function(name, default_value) {
var value = null;
 
value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
 
// Fix bool values
if (value == "true" || value == "false")
return (value == "true");
 
return value;
};
 
MCTabs.prototype.displayTab = function(tab_id, panel_id) {
var panelElm = document.getElementById(panel_id);
var panelContainerElm = panelElm ? panelElm.parentNode : null;
var tabElm = document.getElementById(tab_id);
var tabContainerElm = tabElm ? tabElm.parentNode : null;
var selectionClass = this.getParam('selection_class', 'current');
 
if (tabElm && tabContainerElm) {
var nodes = tabContainerElm.childNodes;
 
// Hide all other tabs
for (var i=0; i<nodes.length; i++) {
if (nodes[i].nodeName == "LI")
nodes[i].className = '';
}
 
// Show selected tab
tabElm.className = 'current';
}
 
if (panelElm && panelContainerElm) {
var nodes = panelContainerElm.childNodes;
 
// Hide all other panels
for (var i=0; i<nodes.length; i++) {
if (nodes[i].nodeName == "DIV")
nodes[i].className = 'panel';
}
 
// Show selected panel
panelElm.className = 'current';
}
};
 
MCTabs.prototype.getAnchor = function() {
var pos, url = document.location.href;
 
if ((pos = url.lastIndexOf('#')) != -1)
return url.substring(pos + 1);
 
return "";
};
 
// Global instance
var mcTabs = new MCTabs();
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/utils/validate.js
New file
0,0 → 1,219
/**
* $Id: validate.js 162 2007-01-03 16:16:52Z spocke $
*
* Various form validation methods.
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/**
// String validation:
 
if (!Validator.isEmail('myemail'))
alert('Invalid email.');
 
// Form validation:
 
var f = document.forms['myform'];
 
if (!Validator.isEmail(f.myemail))
alert('Invalid email.');
*/
 
var Validator = {
isEmail : function(s) {
return this.test(s, '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$');
},
 
isAbsUrl : function(s) {
return this.test(s, '^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9\\.]+\\/?.*$');
},
 
isSize : function(s) {
return this.test(s, '^[0-9]+(px|%)?$');
},
 
isId : function(s) {
return this.test(s, '^[A-Za-z_]([A-Za-z0-9_])*$');
},
 
isEmpty : function(s) {
var nl, i;
 
if (s.nodeName == 'SELECT' && s.selectedIndex < 1)
return true;
 
if (s.type == 'checkbox' && !s.checked)
return true;
 
if (s.type == 'radio') {
for (i=0, nl = s.form.elements; i<nl.length; i++) {
if (nl[i].type == "radio" && nl[i].name == s.name && nl[i].checked)
return false;
}
 
return true;
}
 
return new RegExp('^\\s*$').test(s.nodeType == 1 ? s.value : s);
},
 
isNumber : function(s, d) {
return !isNaN(s.nodeType == 1 ? s.value : s) && (!d || !this.test(s, '^-?[0-9]*\\.[0-9]*$'));
},
 
test : function(s, p) {
s = s.nodeType == 1 ? s.value : s;
 
return s == '' || new RegExp(p).test(s);
}
};
 
var AutoValidator = {
settings : {
id_cls : 'id',
int_cls : 'int',
url_cls : 'url',
number_cls : 'number',
email_cls : 'email',
size_cls : 'size',
required_cls : 'required',
invalid_cls : 'invalid',
min_cls : 'min',
max_cls : 'max'
},
 
init : function(s) {
var n;
 
for (n in s)
this.settings[n] = s[n];
},
 
validate : function(f) {
var i, nl, s = this.settings, c = 0;
 
nl = this.tags(f, 'label');
for (i=0; i<nl.length; i++)
this.removeClass(nl[i], s.invalid_cls);
 
c += this.validateElms(f, 'input');
c += this.validateElms(f, 'select');
c += this.validateElms(f, 'textarea');
 
return c == 3;
},
 
invalidate : function(n) {
this.mark(n.form, n);
},
 
reset : function(e) {
var t = new Array('label', 'input', 'select', 'textarea');
var i, j, nl, s = this.settings;
 
if (e == null)
return;
 
for (i=0; i<t.length; i++) {
nl = this.tags(e.form ? e.form : e, t[i]);
for (j=0; j<nl.length; j++)
this.removeClass(nl[j], s.invalid_cls);
}
},
 
validateElms : function(f, e) {
var nl, i, n, s = this.settings, st = true, va = Validator, v;
 
nl = this.tags(f, e);
for (i=0; i<nl.length; i++) {
n = nl[i];
 
this.removeClass(n, s.invalid_cls);
 
if (this.hasClass(n, s.required_cls) && va.isEmpty(n))
st = this.mark(f, n);
 
if (this.hasClass(n, s.number_cls) && !va.isNumber(n))
st = this.mark(f, n);
 
if (this.hasClass(n, s.int_cls) && !va.isNumber(n, true))
st = this.mark(f, n);
 
if (this.hasClass(n, s.url_cls) && !va.isAbsUrl(n))
st = this.mark(f, n);
 
if (this.hasClass(n, s.email_cls) && !va.isEmail(n))
st = this.mark(f, n);
 
if (this.hasClass(n, s.size_cls) && !va.isSize(n))
st = this.mark(f, n);
 
if (this.hasClass(n, s.id_cls) && !va.isId(n))
st = this.mark(f, n);
 
if (this.hasClass(n, s.min_cls, true)) {
v = this.getNum(n, s.min_cls);
 
if (isNaN(v) || parseInt(n.value) < parseInt(v))
st = this.mark(f, n);
}
 
if (this.hasClass(n, s.max_cls, true)) {
v = this.getNum(n, s.max_cls);
 
if (isNaN(v) || parseInt(n.value) > parseInt(v))
st = this.mark(f, n);
}
}
 
return st;
},
 
hasClass : function(n, c, d) {
return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className);
},
 
getNum : function(n, c) {
c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0];
c = c.replace(/[^0-9]/g, '');
 
return c;
},
 
addClass : function(n, c, b) {
var o = this.removeClass(n, c);
n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c;
},
 
removeClass : function(n, c) {
c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' ');
return n.className = c != ' ' ? c : '';
},
 
tags : function(f, s) {
return f.getElementsByTagName(s);
},
 
mark : function(f, n) {
var s = this.settings;
 
this.addClass(n, s.invalid_cls);
this.markLabels(f, n, s.invalid_cls);
 
return false;
},
 
markLabels : function(f, n, ic) {
var nl, i;
 
nl = this.tags(f, "label");
for (i=0; i<nl.length; i++) {
if (nl[i].getAttribute("for") == n.id || nl[i].htmlFor == n.id)
this.addClass(nl[i], ic);
}
 
return null;
}
};
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advhr/langs/en.js
New file
0,0 → 1,8
// UK lang variables
 
tinyMCE.addToLang('',{
insert_advhr_desc : 'Horizontale rule',
insert_advhr_width : 'Width',
insert_advhr_size : 'Height',
insert_advhr_noshade : 'No shadow'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advhr/langs/fr.js
New file
0,0 → 1,9
// FR lang variables
// Modified by Motte, last updated 2006-03-23
 
tinyMCE.addToLang('',{
insert_advhr_desc : 'Ins&eacute;rer une r&egrave;gle horizontale styl&eacute;e',
insert_advhr_width : 'Largeur',
insert_advhr_size : 'Hauteur',
insert_advhr_noshade : 'Sans ombre'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advhr/images/advhr.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advhr/images/advhr.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advhr/editor_plugin_src.js
New file
0,0 → 1,90
/**
* $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
tinyMCE.importPluginLanguagePack('advhr');
 
var TinyMCE_AdvancedHRPlugin = {
getInfo : function() {
return {
longname : 'Advanced HR',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
}
},
 
getControlHTML : function(cn) {
switch (cn) {
case "advhr":
return tinyMCE.getButtonHTML(cn, 'lang_insert_advhr_desc', '{$pluginurl}/images/advhr.gif', 'mceAdvancedHr');
}
 
return "";
},
 
/**
* Executes the mceAdvanceHr command.
*/
execCommand : function(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
case "mceAdvancedHr":
var template = new Array();
 
template['file'] = '../../plugins/advhr/rule.htm'; // Relative to theme
template['width'] = 250;
template['height'] = 160;
 
template['width'] += tinyMCE.getLang('lang_advhr_delta_width', 0);
template['height'] += tinyMCE.getLang('lang_advhr_delta_height', 0);
 
var size = "", width = "", noshade = "";
if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "hr") {
tinyMCE.hrElement = tinyMCE.selectedElement;
 
if (tinyMCE.hrElement) {
size = tinyMCE.hrElement.getAttribute('size') ? tinyMCE.hrElement.getAttribute('size') : "";
width = tinyMCE.hrElement.getAttribute('width') ? tinyMCE.hrElement.getAttribute('width') : "";
noshade = tinyMCE.hrElement.getAttribute('noshade') ? tinyMCE.hrElement.getAttribute('noshade') : "";
}
 
tinyMCE.openWindow(template, {editor_id : editor_id, size : size, width : width, noshade : noshade, mceDo : 'update'});
} else {
if (tinyMCE.isMSIE) {
tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false,'<hr />');
} else {
tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes", size : size, width : width, noshade : noshade, mceDo : 'insert'});
}
}
 
return true;
}
 
// Pass to next handler in chain
return false;
},
 
handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
if (node == null)
return;
 
do {
if (node.nodeName == "HR") {
tinyMCE.switchClass(editor_id + '_advhr', 'mceButtonSelected');
return true;
}
} while ((node = node.parentNode));
 
tinyMCE.switchClass(editor_id + '_advhr', 'mceButtonNormal');
 
return true;
}
};
 
tinyMCE.addPlugin("advhr", TinyMCE_AdvancedHRPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advhr/css/advhr.css
New file
0,0 → 1,23
input.radio {
border: 1px none #000000;
background-color: transparent;
vertical-align: middle;
}
 
.panel_wrapper div.current {
height: 80px;
}
 
#width {
width: 50px;
vertical-align: middle;
}
 
#width2 {
width: 50px;
vertical-align: middle;
}
 
#size {
width: 100px;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advhr/readme.txt
New file
0,0 → 1,0
Check the TinyMCE documentation for details on this plugin.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advhr/rule.htm
New file
0,0 → 1,61
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_insert_advhr_desc}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/rule.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<link href="css/advhr.css" rel="stylesheet" type="text/css" />
<base target="_self" />
</head>
<body onload="tinyMCEPopup.executeOnLoad('init();');">
<form onsubmit="insertHR();return false;" action="#">
<div class="tabs">
<ul>
<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_insert_advhr_desc}</a></span></li>
</ul>
</div>
 
<div class="panel_wrapper">
<div id="general_panel" class="panel current">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td><label for="width">{$lang_insert_advhr_width}</label></td>
<td nowrap="nowrap">
<input id="width" name="width" type="text" value="" />
<select name="width2" id="width2">
<option value="">px</option>
<option value="%">%</option>
</select>
</td>
</tr>
<tr>
<td><label for="size">{$lang_insert_advhr_size}</label></td>
<td><select id="size" name="size">
<option value="">Normal</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select></td>
</tr>
<tr>
<td><label for="noshade">{$lang_insert_advhr_noshade}</label></td>
<td><input type="checkbox" name="noshade" id="noshade" class="radio" /></td>
</tr>
</table>
</div>
</div>
 
<div class="mceActionPanel">
<div style="float: left">
<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertHR();" />
</div>
 
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
</div>
</div>
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advhr/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('advhr');var TinyMCE_AdvancedHRPlugin={getInfo:function(){return{longname:'Advanced HR',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"advhr":return tinyMCE.getButtonHTML(cn,'lang_insert_advhr_desc','{$pluginurl}/images/advhr.gif','mceAdvancedHr')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceAdvancedHr":var template=new Array();template['file']='../../plugins/advhr/rule.htm';template['width']=250;template['height']=160;template['width']+=tinyMCE.getLang('lang_advhr_delta_width',0);template['height']+=tinyMCE.getLang('lang_advhr_delta_height',0);var size="",width="",noshade="";if(tinyMCE.selectedElement!=null&&tinyMCE.selectedElement.nodeName.toLowerCase()=="hr"){tinyMCE.hrElement=tinyMCE.selectedElement;if(tinyMCE.hrElement){size=tinyMCE.hrElement.getAttribute('size')?tinyMCE.hrElement.getAttribute('size'):"";width=tinyMCE.hrElement.getAttribute('width')?tinyMCE.hrElement.getAttribute('width'):"";noshade=tinyMCE.hrElement.getAttribute('noshade')?tinyMCE.hrElement.getAttribute('noshade'):""}tinyMCE.openWindow(template,{editor_id:editor_id,size:size,width:width,noshade:noshade,mceDo:'update'})}else{if(tinyMCE.isMSIE){tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,'<hr />')}else{tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes",size:size,width:width,noshade:noshade,mceDo:'insert'})}}return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;do{if(node.nodeName=="HR"){tinyMCE.switchClass(editor_id+'_advhr','mceButtonSelected');return true}}while((node=node.parentNode));tinyMCE.switchClass(editor_id+'_advhr','mceButtonNormal');return true}};tinyMCE.addPlugin("advhr",TinyMCE_AdvancedHRPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advhr/jscripts/rule.js
New file
0,0 → 1,43
function init() {
tinyMCEPopup.resizeToInnerSize();
 
var formObj = document.forms[0];
formObj.width.value = tinyMCE.getWindowArg('width');
formObj.size.value = tinyMCE.getWindowArg('size');
formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('mceDo'),'Insert',true);
if (tinyMCE.getWindowArg('noshade')) {
formObj.noshade.checked = true;
}
if (tinyMCE.getWindowArg('width').lastIndexOf('%')!=-1) {
formObj.width2.value = "%";
formObj.width.value = formObj.width.value.substring(0,formObj.width.value.length-1);
}
}
 
function insertHR() {
var formObj = document.forms[0];
var width = formObj.width.value;
var size = formObj.size.value;
var html = '<hr';
if (size!='' && size!=0) {
html += ' size="' + size + '"';
}
if (width!='' && width!=0) {
html += ' width="' + width;
if (formObj.width2.value=='%') {
html += '%';
}
html += '"';
}
if (formObj.noshade.checked==true) {
html += ' noshade="noshade"';
}
html += ' />';
 
tinyMCEPopup.execCommand("mceInsertContent", true, html);
tinyMCEPopup.close();
}
 
function cancelAction() {
tinyMCEPopup.close();
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/_template/langs/fr.js
New file
0,0 → 1,9
// FR lang variables
// Modified by Motte, last updated 2006-03-23
 
/* N'oubliez pas d'identifer les parametres de langue ainsi: <votre plugin>_<un nom> */
 
tinyMCE.addToLang('',{
template_title : 'Texte qui appara&icirc;tra sous forme de titre dans la fen&ecirc;tre pop-up de votre plugin',
template_desc : 'Texte qui appara&icirc;tra sous forme d\'info-bulle au survol du bouton de votre plugin'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/layer/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('layer');var TinyMCE_LayerPlugin={getInfo:function(){return{longname:'Layer',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(tinyMCE.isMSIE&&!tinyMCE.isOpera)inst.getDoc().execCommand('2D-Position')},handleEvent:function(e){var inst=tinyMCE.selectedInstance;var w=inst.getWin(),le=inst._lastStyleElm,e;if(tinyMCE.isGecko){e=this._getParentLayer(inst.getFocusElement());if(e){if(!inst._lastStyleElm){e.style.overflow='auto';inst._lastStyleElm=e}}else if(le){le=inst._lastStyleElm;le.style.width=le.scrollWidth+'px';le.style.height=le.scrollHeight+'px';le.style.overflow='';inst._lastStyleElm=null}}return true},handleVisualAid:function(el,deep,state,inst){var nl=inst.getDoc().getElementsByTagName("div"),i;for(i=0;i<nl.length;i++){if(new RegExp('absolute|relative|static','gi').test(nl[i].style.position)){if(state)tinyMCE.addCSSClass(nl[i],'mceVisualAid');else tinyMCE.removeCSSClass(nl[i],'mceVisualAid')}}},getControlHTML:function(cn){switch(cn){case"moveforward":return tinyMCE.getButtonHTML(cn,'lang_layer_forward_desc','{$pluginurl}/images/moveforward.gif','mceMoveForward',true);case"movebackward":return tinyMCE.getButtonHTML(cn,'lang_layer_backward_desc','{$pluginurl}/images/movebackward.gif','mceMoveBackward',true);case"absolute":return tinyMCE.getButtonHTML(cn,'lang_layer_absolute_desc','{$pluginurl}/images/absolute.gif','mceMakeAbsolute',true);case"insertlayer":return tinyMCE.getButtonHTML(cn,'lang_layer_insertlayer_desc','{$pluginurl}/images/insertlayer.gif','mceInsertLayer',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceInsertLayer":this._insertLayer();return true;case"mceMoveForward":this._move(1);return true;case"mceMoveBackward":this._move(-1);return true;case"mceMakeAbsolute":this._toggleAbsolute();return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var inst=tinyMCE.getInstanceById(editor_id);var le=this._getParentLayer(inst.getFocusElement());var p=tinyMCE.getParentElement(inst.getFocusElement(),'div,p,img');tinyMCE.switchClass(editor_id+'_absolute','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_moveforward','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_movebackward','mceButtonDisabled');if(p)tinyMCE.switchClass(editor_id+'_absolute','mceButtonNormal');if(le&&le.style.position.toLowerCase()=="absolute"){tinyMCE.switchClass(editor_id+'_absolute','mceButtonSelected');tinyMCE.switchClass(editor_id+'_moveforward','mceButtonNormal');tinyMCE.switchClass(editor_id+'_movebackward','mceButtonNormal')}},_move:function(d){var inst=tinyMCE.selectedInstance,i,z=new Array();var le=this._getParentLayer(inst.getFocusElement()),ci=-1,fi=-1;var nl=tinyMCE.selectNodes(inst.getBody(),function(n){return n.nodeType==1&&new RegExp('absolute|relative|static','gi').test(n.style.position)});for(i=0;i<nl.length;i++){z[i]=nl[i].style.zIndex?parseInt(nl[i].style.zIndex):0;if(ci<0&&nl[i]==le)ci=i}if(d<0){for(i=0;i<z.length;i++){if(z[i]<z[ci]){fi=i;break}}if(fi>-1){nl[ci].style.zIndex=z[fi];nl[fi].style.zIndex=z[ci]}else{if(z[ci]>0)nl[ci].style.zIndex=z[ci]-1}}else{for(i=0;i<z.length;i++){if(z[i]>z[ci]){fi=i;break}}if(fi>-1){nl[ci].style.zIndex=z[fi];nl[fi].style.zIndex=z[ci]}else nl[ci].style.zIndex=z[ci]+1}inst.repaint()},_getParentLayer:function(n){return tinyMCE.getParentNode(n,function(n){return n.nodeType==1&&new RegExp('absolute|relative|static','gi').test(n.style.position)})},_insertLayer:function(){var inst=tinyMCE.selectedInstance;var e=tinyMCE.getParentElement(inst.getFocusElement());var p=tinyMCE.getAbsPosition(e);var d=inst.getDoc();var ne=d.createElement('div');var h=inst.selection.getSelectedHTML();ne.style.position='absolute';ne.style.left=p.absLeft+'px';ne.style.top=(p.absTop>20?p.absTop:20)+'px';ne.style.width='100px';ne.style.height='100px';ne.className='mceVisualAid';if(!h)h=tinyMCE.getLang('lang_layer_content');ne.innerHTML=h;d.body.appendChild(ne)},_toggleAbsolute:function(){var inst=tinyMCE.selectedInstance;var le=this._getParentLayer(inst.getFocusElement());if(le==null)le=tinyMCE.getParentElement(inst.getFocusElement(),'div,p,img');if(le){if(le.style.position.toLowerCase()=="absolute"){le.style.position="";le.style.left="";le.style.top=""}else{le.style.position="absolute";if(le.style.left=="")le.style.left=20+'px';if(le.style.top=="")le.style.top=20+'px';if(le.style.width=="")le.style.width=le.width?(le.width+'px'):'100px';if(le.style.height=="")le.style.height=le.height?(le.height+'px'):'100px';tinyMCE.handleVisualAid(inst.getBody(),true,inst.visualAid,inst)}inst.repaint();tinyMCE.triggerNodeChange()}}};tinyMCE.addPlugin("layer",TinyMCE_LayerPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/layer/langs/fr.js
New file
0,0 → 1,10
// FR lang variables
// Modified by shadow walker, last updated 2007-03-16
 
tinyMCE.addToLang('layer',{
insertlayer_desc : 'Ins&eacute;rer un nouveau calque',
forward_desc : 'Avancer',
backward_desc : 'Reculer',
absolute_desc : 'Passer en positionnement absolu',
content : 'Nouveau calque...'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/layer/langs/en.js
New file
0,0 → 1,9
// UK lang variables
 
tinyMCE.addToLang('layer',{
insertlayer_desc : 'Insert new layer',
forward_desc : 'Move forward',
backward_desc : 'Move backward',
absolute_desc : 'Toggle absolute positioning',
content : 'New layer...'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/layer/images/forward.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/layer/images/forward.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/layer/images/movebackward.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/layer/images/movebackward.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/layer/images/moveforward.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/layer/images/moveforward.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/layer/images/absolute.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/layer/images/absolute.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/layer/images/backward.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/layer/images/backward.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/layer/images/insert_layer.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/layer/images/insert_layer.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/layer/images/insertlayer.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/layer/images/insertlayer.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/layer/editor_plugin_src.js
New file
0,0 → 1,248
/**
* $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
tinyMCE.importPluginLanguagePack('layer');
 
var TinyMCE_LayerPlugin = {
getInfo : function() {
return {
longname : 'Layer',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
initInstance : function(inst) {
if (tinyMCE.isMSIE && !tinyMCE.isOpera)
inst.getDoc().execCommand('2D-Position');
},
 
handleEvent : function(e) {
var inst = tinyMCE.selectedInstance;
var w = inst.getWin(), le = inst._lastStyleElm, e;
 
if (tinyMCE.isGecko) {
e = this._getParentLayer(inst.getFocusElement());
 
if (e) {
if (!inst._lastStyleElm) {
e.style.overflow = 'auto';
inst._lastStyleElm = e;
}
} else if (le) {
le = inst._lastStyleElm;
le.style.width = le.scrollWidth + 'px';
le.style.height = le.scrollHeight + 'px';
le.style.overflow = '';
inst._lastStyleElm = null;
}
}
 
return true;
},
 
handleVisualAid : function(el, deep, state, inst) {
var nl = inst.getDoc().getElementsByTagName("div"), i;
 
for (i=0; i<nl.length; i++) {
if (new RegExp('absolute|relative|static', 'gi').test(nl[i].style.position)) {
if (state)
tinyMCE.addCSSClass(nl[i], 'mceVisualAid');
else
tinyMCE.removeCSSClass(nl[i], 'mceVisualAid');
}
}
},
 
getControlHTML : function(cn) {
switch (cn) {
case "moveforward":
return tinyMCE.getButtonHTML(cn, 'lang_layer_forward_desc', '{$pluginurl}/images/moveforward.gif', 'mceMoveForward', true);
 
case "movebackward":
return tinyMCE.getButtonHTML(cn, 'lang_layer_backward_desc', '{$pluginurl}/images/movebackward.gif', 'mceMoveBackward', true);
 
case "absolute":
return tinyMCE.getButtonHTML(cn, 'lang_layer_absolute_desc', '{$pluginurl}/images/absolute.gif', 'mceMakeAbsolute', true);
 
case "insertlayer":
return tinyMCE.getButtonHTML(cn, 'lang_layer_insertlayer_desc', '{$pluginurl}/images/insertlayer.gif', 'mceInsertLayer', true);
}
 
return "";
},
 
execCommand : function(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
case "mceInsertLayer":
this._insertLayer();
return true;
 
case "mceMoveForward":
this._move(1);
return true;
 
case "mceMoveBackward":
this._move(-1);
return true;
 
case "mceMakeAbsolute":
this._toggleAbsolute();
return true;
}
 
// Pass to next handler in chain
return false;
},
 
handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
var inst = tinyMCE.getInstanceById(editor_id);
var le = this._getParentLayer(inst.getFocusElement());
var p = tinyMCE.getParentElement(inst.getFocusElement(), 'div,p,img');
 
tinyMCE.switchClass(editor_id + '_absolute', 'mceButtonDisabled');
tinyMCE.switchClass(editor_id + '_moveforward', 'mceButtonDisabled');
tinyMCE.switchClass(editor_id + '_movebackward', 'mceButtonDisabled');
 
if (p)
tinyMCE.switchClass(editor_id + '_absolute', 'mceButtonNormal');
 
if (le && le.style.position.toLowerCase() == "absolute") {
tinyMCE.switchClass(editor_id + '_absolute', 'mceButtonSelected');
tinyMCE.switchClass(editor_id + '_moveforward', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_movebackward', 'mceButtonNormal');
}
},
 
// Private plugin specific methods
 
_move : function(d) {
var inst = tinyMCE.selectedInstance, i, z = new Array();
var le = this._getParentLayer(inst.getFocusElement()), ci = -1, fi = -1;
var nl = tinyMCE.selectNodes(inst.getBody(), function(n) {
return n.nodeType == 1 && new RegExp('absolute|relative|static', 'gi').test(n.style.position);
});
 
// Find z-indexes
for (i=0; i<nl.length; i++) {
z[i] = nl[i].style.zIndex ? parseInt(nl[i].style.zIndex) : 0;
 
if (ci < 0 && nl[i] == le)
ci = i;
}
 
if (d < 0) {
// Move back
 
// Try find a lower one
for (i=0; i<z.length; i++) {
if (z[i] < z[ci]) {
fi = i;
break;
}
}
 
if (fi > -1) {
nl[ci].style.zIndex = z[fi];
nl[fi].style.zIndex = z[ci];
} else {
if (z[ci] > 0)
nl[ci].style.zIndex = z[ci] - 1;
}
} else {
// Move forward
 
// Try find a higher one
for (i=0; i<z.length; i++) {
if (z[i] > z[ci]) {
fi = i;
break;
}
}
 
if (fi > -1) {
nl[ci].style.zIndex = z[fi];
nl[fi].style.zIndex = z[ci];
} else
nl[ci].style.zIndex = z[ci] + 1;
}
 
inst.repaint();
},
 
_getParentLayer : function(n) {
return tinyMCE.getParentNode(n, function(n) {
return n.nodeType == 1 && new RegExp('absolute|relative|static', 'gi').test(n.style.position);
});
},
 
_insertLayer : function() {
var inst = tinyMCE.selectedInstance;
var e = tinyMCE.getParentElement(inst.getFocusElement());
var p = tinyMCE.getAbsPosition(e);
var d = inst.getDoc();
var ne = d.createElement('div');
var h = inst.selection.getSelectedHTML();
 
// Move div
ne.style.position = 'absolute';
ne.style.left = p.absLeft + 'px';
ne.style.top = (p.absTop > 20 ? p.absTop : 20) + 'px';
ne.style.width = '100px';
ne.style.height = '100px';
ne.className = 'mceVisualAid';
 
if (!h)
h = tinyMCE.getLang('lang_layer_content');
 
ne.innerHTML = h;
 
// Add it
d.body.appendChild(ne);
},
 
_toggleAbsolute : function() {
var inst = tinyMCE.selectedInstance;
var le = this._getParentLayer(inst.getFocusElement());
 
if (le == null)
le = tinyMCE.getParentElement(inst.getFocusElement(), 'div,p,img');
 
if (le) {
if (le.style.position.toLowerCase() == "absolute") {
le.style.position = "";
le.style.left = "";
le.style.top = "";
} else {
le.style.position = "absolute";
 
if (le.style.left == "")
le.style.left = 20 + 'px';
 
if (le.style.top == "")
le.style.top = 20 + 'px';
 
if (le.style.width == "")
le.style.width = le.width ? (le.width + 'px') : '100px';
 
if (le.style.height == "")
le.style.height = le.height ? (le.height + 'px') : '100px';
 
tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
}
 
inst.repaint();
tinyMCE.triggerNodeChange();
}
}
};
 
tinyMCE.addPlugin("layer", TinyMCE_LayerPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/layer/readme.txt
New file
0,0 → 1,0
Check the TinyMCE documentation for details on this plugin.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advimage/langs/en.js
New file
0,0 → 1,27
// UK lang variables
 
tinyMCE.addToLang('advimage',{
tab_general : 'General',
tab_appearance : 'Appearance',
tab_advanced : 'Advanced',
general : 'General',
title : 'Title',
preview : 'Preview',
constrain_proportions : 'Constrain proportions',
langdir : 'Language direction',
langcode : 'Language code',
long_desc : 'Long description link',
style : 'Style',
classes : 'Classes',
ltr : 'Left to right',
rtl : 'Right to left',
id : 'Id',
image_map : 'Image map',
swap_image : 'Swap image',
alt_image : 'Alternative image',
mouseover : 'for mouse over',
mouseout : 'for mouse out',
misc : 'Miscellaneous',
example_img : 'Appearance&nbsp;preview&nbsp;image',
missing_alt : 'Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advimage/langs/fr.js
New file
0,0 → 1,28
// FR lang variables
// Modified by Motte, last updated 2006-03-23
 
tinyMCE.addToLang('advimage',{
tab_general : 'G&eacute;n&eacute;rale',
tab_appearance : 'Apparence',
tab_advanced : 'Avanc&eacute;',
general : 'G&eacute;n&eacute;rale',
title : 'Titre',
preview : 'Pr&eacute;visualisation',
constrain_proportions : 'Conserver les proportions',
langdir : 'Sens d\'&eacute;criture',
langcode : 'Code de langue du libell&eacute;',
long_desc : 'Description du lien',
style : 'Style',
classes : 'Classes',
ltr : 'De gauche &agrave; droite',
rtl : 'De droite &agrave; gauche',
id : 'Id',
image_map : 'Image map',
swap_image : 'Image d\'&eacute;change',
alt_image : 'Image alternative',
mouseover : 'Quand le pointeur est au dessus',
mouseout : 'Quand le pointeur est en dehors',
misc : 'Divers',
example_img : 'Apparence&nbsp;pr&eacute;visualisation&nbsp;image',
missing_alt : 'Etes vous sur de vouloir continuer sans inclure une description de l\'image. Cette description est utile pour les utilisateurs ne pouvant pas afficher les images ou les ayant d&eacute;sactiv&eacute;es.'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advimage/images/sample.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advimage/images/sample.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advimage/editor_plugin_src.js
New file
0,0 → 1,148
/**
* $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
tinyMCE.importPluginLanguagePack('advimage');
 
var TinyMCE_AdvancedImagePlugin = {
getInfo : function() {
return {
longname : 'Advanced image',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
getControlHTML : function(cn) {
switch (cn) {
case "image":
return tinyMCE.getButtonHTML(cn, 'lang_image_desc', '{$themeurl}/images/image.gif', 'mceAdvImage');
}
 
return "";
},
 
execCommand : function(editor_id, element, command, user_interface, value) {
switch (command) {
case "mceAdvImage":
var template = new Array();
 
template['file'] = '../../plugins/advimage/image.htm';
template['width'] = 480;
template['height'] = 380;
 
// Language specific width and height addons
template['width'] += tinyMCE.getLang('lang_advimage_delta_width', 0);
template['height'] += tinyMCE.getLang('lang_advimage_delta_height', 0);
 
var inst = tinyMCE.getInstanceById(editor_id);
var elm = inst.getFocusElement();
 
if (elm != null && tinyMCE.getAttrib(elm, 'class').indexOf('mceItem') != -1)
return true;
 
tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});
 
return true;
}
 
return false;
},
 
cleanup : function(type, content) {
switch (type) {
case "insert_to_editor_dom":
var imgs = content.getElementsByTagName("img"), src, i;
for (i=0; i<imgs.length; i++) {
var onmouseover = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i], 'onmouseover'));
var onmouseout = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i], 'onmouseout'));
 
if ((src = this._getImageSrc(onmouseover)) != "") {
if (tinyMCE.getParam('convert_urls'))
src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src);
 
imgs[i].setAttribute('onmouseover', "this.src='" + src + "';");
}
 
if ((src = this._getImageSrc(onmouseout)) != "") {
if (tinyMCE.getParam('convert_urls'))
src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src);
 
imgs[i].setAttribute('onmouseout', "this.src='" + src + "';");
}
}
break;
 
case "get_from_editor_dom":
var imgs = content.getElementsByTagName("img");
for (var i=0; i<imgs.length; i++) {
var onmouseover = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i], 'onmouseover'));
var onmouseout = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i], 'onmouseout'));
 
if ((src = this._getImageSrc(onmouseover)) != "") {
if (tinyMCE.getParam('convert_urls'))
src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");
 
imgs[i].setAttribute('onmouseover', "this.src='" + src + "';");
}
 
if ((src = this._getImageSrc(onmouseout)) != "") {
if (tinyMCE.getParam('convert_urls'))
src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");
 
imgs[i].setAttribute('onmouseout', "this.src='" + src + "';");
}
}
break;
}
 
return content;
},
 
handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
if (node == null)
return;
 
do {
if (node.nodeName == "IMG" && tinyMCE.getAttrib(node, 'class').indexOf('mceItem') == -1) {
tinyMCE.switchClass(editor_id + '_advimage', 'mceButtonSelected');
return true;
}
} while ((node = node.parentNode));
 
tinyMCE.switchClass(editor_id + '_advimage', 'mceButtonNormal');
 
return true;
},
 
/**
* Returns the image src from a scripted mouse over image str.
*
* @param {string} s String to get real src from.
* @return Image src from a scripted mouse over image str.
* @type string
*/
_getImageSrc : function(s) {
var sr, p = -1;
 
if (!s)
return "";
 
if ((p = s.indexOf('this.src=')) != -1) {
sr = s.substring(p + 10);
sr = sr.substring(0, sr.indexOf('\''));
 
return sr;
}
 
return "";
}
};
 
tinyMCE.addPlugin("advimage", TinyMCE_AdvancedImagePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advimage/css/advimage.css
New file
0,0 → 1,66
/* CSS file for advimage plugin popup */
 
.mceImageList {
width: 280px;
}
 
.mceActionPanel {
margin-top: 7px;
}
 
.alignPreview {
border: 1px solid black;
width: 140px;
height: 140px;
overflow: hidden;
padding: 5px;
}
 
.checkbox {
border: 0;
}
 
.panel_wrapper div.current {
height: 305px;
}
 
#prev {
margin: 0;
border: 1px
solid black;
width: 99%;
height: 150px;
overflow: auto;
}
 
#align, #classlist {
width: 150px;
}
 
#width, #height {
vertical-align: middle;
width: 50px;
text-align: center;
}
 
#vspace, #hspace, #border {
vertical-align: middle;
width: 30px;
text-align: center;
}
 
#classlist {
width: 180px;
}
 
input {
width: 280px;
}
 
#constrain, #onmousemovecheck {
width: auto;
}
 
#id, #dir, #lang, #usemap, #longdesc {
width: 200px;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advimage/image.htm
New file
0,0 → 1,241
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_insert_image_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/functions.js"></script>
<link href="css/advimage.css" rel="stylesheet" type="text/css" />
<base target="_self" />
</head>
<body id="advimage" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<form onsubmit="insertAction();return false;" action="#">
<div class="tabs">
<ul>
<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_advimage_tab_general}</a></span></li>
<li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{$lang_advimage_tab_appearance}</a></span></li>
<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_advimage_tab_advanced}</a></span></li>
</ul>
</div>
 
<div class="panel_wrapper">
<div id="general_panel" class="panel current">
<fieldset>
<legend>{$lang_advimage_general}</legend>
 
<table class="properties">
<tr>
<td class="column1"><label id="srclabel" for="src">{$lang_insert_image_src}</label></td>
<td colspan="2"><table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input name="src" type="text" id="src" value="" onchange="showPreviewImage(this.value);" /></td>
<td id="srcbrowsercontainer">&nbsp;</td>
</tr>
</table></td>
</tr>
<tr id="imagelistsrcrow">
<td class="column1"><label for="imagelistsrc">{$lang_image_list}</label></td>
<td colspan="2" id="imagelistsrccontainer">&nbsp;</td>
</tr>
<tr>
<td class="column1"><label id="altlabel" for="alt">{$lang_insert_image_alt}</label></td>
<td colspan="2"><input id="alt" name="alt" type="text" value="" /></td>
</tr>
<tr>
<td class="column1"><label id="titlelabel" for="title">{$lang_advimage_title}</label></td>
<td colspan="2"><input id="title" name="title" type="text" value="" /></td>
</tr>
</table>
</fieldset>
 
<fieldset>
<legend>{$lang_advimage_preview}</legend>
<div id="prev"></div>
</fieldset>
</div>
 
<div id="appearance_panel" class="panel">
<fieldset>
<legend>{$lang_advimage_tab_appearance}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td class="column1"><label id="alignlabel" for="align">{$lang_insert_image_align}</label></td>
<td><select id="align" name="align" onchange="changeAppearance();">
<option value="">{$lang_insert_image_align_default}</option>
<option value="baseline">{$lang_insert_image_align_baseline}</option>
<option value="top">{$lang_insert_image_align_top}</option>
<option value="middle">{$lang_insert_image_align_middle}</option>
<option value="bottom">{$lang_insert_image_align_bottom}</option>
<option value="texttop">{$lang_insert_image_align_texttop}</option>
<option value="absmiddle">{$lang_insert_image_align_absmiddle}</option>
<option value="absbottom">{$lang_insert_image_align_absbottom}</option>
<option value="left">{$lang_insert_image_align_left}</option>
<option value="right">{$lang_insert_image_align_right}</option>
</select>
</td>
<td rowspan="6" valign="top">
<div class="alignPreview">
<img id="alignSampleImg" src="images/sample.gif" alt="{$lang_advimage_example_img}" />
Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam
nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum
edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam
erat volutpat.
</div>
</td>
</tr>
 
<tr>
<td class="column1"><label id="widthlabel" for="width">{$lang_insert_image_dimensions}</label></td>
<td nowrap="nowrap">
<input name="width" type="text" id="width" value="" size="5" maxlength="5" class="size" onchange="changeHeight();" /> x
<input name="height" type="text" id="height" value="" size="5" maxlength="5" class="size" onchange="changeWidth();" /> px
</td>
</tr>
 
<tr>
<td>&nbsp;</td>
<td><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>
<td><label id="constrainlabel" for="constrain">{$lang_advimage_constrain_proportions}</label></td>
</tr>
</table></td>
</tr>
 
<tr>
<td class="column1"><label id="vspacelabel" for="vspace">{$lang_insert_image_vspace}</label></td>
<td><input name="vspace" type="text" id="vspace" value="" size="3" maxlength="3" class="number" onchange="changeAppearance();updateStyle();" />
</td>
</tr>
 
<tr>
<td class="column1"><label id="hspacelabel" for="hspace">{$lang_insert_image_hspace}</label></td>
<td><input name="hspace" type="text" id="hspace" value="" size="3" maxlength="3" class="number" onchange="changeAppearance();updateStyle();" /></td>
</tr>
 
<tr>
<td class="column1"><label id="borderlabel" for="border">{$lang_insert_image_border}</label></td>
<td><input id="border" name="border" type="text" value="" size="3" maxlength="3" class="number" onchange="changeAppearance();updateStyle();" /></td>
</tr>
 
<tr>
<td><label id="classlabel" for="classlist">{$lang_class_name}</label></td>
<td colspan="2">
<select id="classlist" name="classlist">
<option value="" selected>{$lang_not_set}</option>
</select>
</td>
</tr>
 
<tr>
<td class="column1"><label id="stylelabel" for="style">{$lang_advimage_style}</label></td>
<td colspan="2"><input id="style" name="style" type="text" value="" onchange="styleUpdated();" /></td>
</tr>
 
<!-- <tr>
<td class="column1"><label id="classeslabel" for="classes">{$lang_advimage_classes}</label></td>
<td colspan="2"><input id="classes" name="classes" type="text" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td>
</tr> -->
</table>
</fieldset>
</div>
 
<div id="advanced_panel" class="panel">
<fieldset>
<legend>{$lang_advimage_swap_image}</legend>
 
<input type="checkbox" id="onmousemovecheck" name="onmousemovecheck" class="checkbox" onclick="changeMouseMove();" />
<label id="onmousemovechecklabel" for="onmousemovecheck">{$lang_advimage_alt_image}</label>
 
<table border="0" cellpadding="4" cellspacing="0" width="100%">
<tr>
<td class="column1"><label id="onmouseoversrclabel" for="onmouseoversrc">{$lang_advimage_mouseover}</label></td>
<td><table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input id="onmouseoversrc" name="onmouseoversrc" type="text" value="" /></td>
<td id="onmouseoversrccontainer">&nbsp;</td>
</tr>
</table></td>
</tr>
<tr id="imagelistoverrow">
<td class="column1"><label for="imagelistover">{$lang_image_list}</label></td>
<td id="imagelistovercontainer">&nbsp;</td>
</tr>
<tr>
<td class="column1"><label id="onmouseoutsrclabel" for="onmouseoutsrc">{$lang_advimage_mouseout}</label></td>
<td class="column2"><table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input id="onmouseoutsrc" name="onmouseoutsrc" type="text" value="" /></td>
<td id="onmouseoutsrccontainer">&nbsp;</td>
</tr>
</table></td>
</tr>
<tr id="imagelistoutrow">
<td class="column1"><label for="imagelistout">{$lang_image_list}</label></td>
<td id="imagelistoutcontainer">&nbsp;</td>
</tr>
</table>
</fieldset>
 
<fieldset>
<legend>{$lang_advimage_misc}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td class="column1"><label id="idlabel" for="id">{$lang_advimage_id}</label></td>
<td><input id="id" name="id" type="text" value="" /></td>
</tr>
 
<tr>
<td class="column1"><label id="dirlabel" for="dir">{$lang_advimage_langdir}</label></td>
<td>
<select id="dir" name="dir" onchange="changeAppearance();">
<option value="">{$lang_not_set}</option>
<option value="ltr">{$lang_advimage_ltr}</option>
<option value="rtl">{$lang_advimage_rtl}</option>
</select>
</td>
</tr>
 
<tr>
<td class="column1"><label id="langlabel" for="lang">{$lang_advimage_langcode}</label></td>
<td>
<input id="lang" name="lang" type="text" value="" />
</td>
</tr>
 
<tr>
<td class="column1"><label id="usemaplabel" for="usemap">{$lang_advimage_image_map}</label></td>
<td>
<input id="usemap" name="usemap" type="text" value="" />
</td>
</tr>
 
<tr>
<td class="column1"><label id="longdesclabel" for="longdesc">{$lang_advimage_long_desc}</label></td>
<td><table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input id="longdesc" name="longdesc" type="text" value="" /></td>
<td id="longdesccontainer">&nbsp;</td>
</tr>
</table></td>
</tr>
</table>
</fieldset>
</div>
</div>
 
<div class="mceActionPanel">
<div style="float: left">
<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertAction();" />
</div>
 
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="cancelAction();" />
</div>
</div>
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advimage/readme.txt
New file
0,0 → 1,0
Check the TinyMCE documentation for details on this plugin.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advimage/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('advimage');var TinyMCE_AdvancedImagePlugin={getInfo:function(){return{longname:'Advanced image',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"image":return tinyMCE.getButtonHTML(cn,'lang_image_desc','{$themeurl}/images/image.gif','mceAdvImage')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceAdvImage":var template=new Array();template['file']='../../plugins/advimage/image.htm';template['width']=480;template['height']=380;template['width']+=tinyMCE.getLang('lang_advimage_delta_width',0);template['height']+=tinyMCE.getLang('lang_advimage_delta_height',0);var inst=tinyMCE.getInstanceById(editor_id);var elm=inst.getFocusElement();if(elm!=null&&tinyMCE.getAttrib(elm,'class').indexOf('mceItem')!=-1)return true;tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true}return false},cleanup:function(type,content){switch(type){case"insert_to_editor_dom":var imgs=content.getElementsByTagName("img"),src,i;for(i=0;i<imgs.length;i++){var onmouseover=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseover'));var onmouseout=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseout'));if((src=this._getImageSrc(onmouseover))!=""){if(tinyMCE.getParam('convert_urls'))src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],src);imgs[i].setAttribute('onmouseover',"this.src='"+src+"';")}if((src=this._getImageSrc(onmouseout))!=""){if(tinyMCE.getParam('convert_urls'))src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],src);imgs[i].setAttribute('onmouseout',"this.src='"+src+"';")}}break;case"get_from_editor_dom":var imgs=content.getElementsByTagName("img");for(var i=0;i<imgs.length;i++){var onmouseover=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseover'));var onmouseout=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseout'));if((src=this._getImageSrc(onmouseover))!=""){if(tinyMCE.getParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callback']+"(src, null, true);");imgs[i].setAttribute('onmouseover',"this.src='"+src+"';")}if((src=this._getImageSrc(onmouseout))!=""){if(tinyMCE.getParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callback']+"(src, null, true);");imgs[i].setAttribute('onmouseout',"this.src='"+src+"';")}}break}return content},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;do{if(node.nodeName=="IMG"&&tinyMCE.getAttrib(node,'class').indexOf('mceItem')==-1){tinyMCE.switchClass(editor_id+'_advimage','mceButtonSelected');return true}}while((node=node.parentNode));tinyMCE.switchClass(editor_id+'_advimage','mceButtonNormal');return true},_getImageSrc:function(s){var sr,p=-1;if(!s)return"";if((p=s.indexOf('this.src='))!=-1){sr=s.substring(p+10);sr=sr.substring(0,sr.indexOf('\''));return sr}return""}};tinyMCE.addPlugin("advimage",TinyMCE_AdvancedImagePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advimage/jscripts/functions.js
New file
0,0 → 1,538
/* Functions for the advimage plugin popup */
 
var preloadImg = null;
var orgImageWidth, orgImageHeight;
 
function preinit() {
// Initialize
tinyMCE.setWindowArg('mce_windowresize', false);
 
// Import external list url javascript
var url = tinyMCE.getParam("external_image_list_url");
if (url != null) {
// Fix relative
if (url.charAt(0) != '/' && url.indexOf('://') == -1)
url = tinyMCE.documentBasePath + "/" + url;
 
document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
}
}
 
function convertURL(url, node, on_save) {
return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);");
}
 
function getImageSrc(str) {
var pos = -1;
 
if (!str)
return "";
 
if ((pos = str.indexOf('this.src=')) != -1) {
var src = str.substring(pos + 10);
 
src = src.substring(0, src.indexOf('\''));
 
if (tinyMCE.getParam('convert_urls'))
src = convertURL(src, null, true);
 
return src;
}
 
return "";
}
 
function init() {
tinyMCEPopup.resizeToInnerSize();
 
var formObj = document.forms[0];
var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
var elm = inst.getFocusElement();
var action = "insert";
var html = "";
 
// Image list src
html = getImageListHTML('imagelistsrc','src','onSelectMainImage');
if (html == "")
document.getElementById("imagelistsrcrow").style.display = 'none';
else
document.getElementById("imagelistsrccontainer").innerHTML = html;
 
// Image list oversrc
html = getImageListHTML('imagelistover','onmouseoversrc');
if (html == "")
document.getElementById("imagelistoverrow").style.display = 'none';
else
document.getElementById("imagelistovercontainer").innerHTML = html;
 
// Image list outsrc
html = getImageListHTML('imagelistout','onmouseoutsrc');
if (html == "")
document.getElementById("imagelistoutrow").style.display = 'none';
else
document.getElementById("imagelistoutcontainer").innerHTML = html;
 
// Src browser
html = getBrowserHTML('srcbrowser','src','image','advimage');
document.getElementById("srcbrowsercontainer").innerHTML = html;
 
// Over browser
html = getBrowserHTML('oversrcbrowser','onmouseoversrc','image','advimage');
document.getElementById("onmouseoversrccontainer").innerHTML = html;
 
// Out browser
html = getBrowserHTML('outsrcbrowser','onmouseoutsrc','image','advimage');
document.getElementById("onmouseoutsrccontainer").innerHTML = html;
 
// Longdesc browser
html = getBrowserHTML('longdescbrowser','longdesc','file','advimage');
document.getElementById("longdesccontainer").innerHTML = html;
 
// Resize some elements
if (isVisible('srcbrowser'))
document.getElementById('src').style.width = '260px';
 
if (isVisible('oversrcbrowser'))
document.getElementById('onmouseoversrc').style.width = '260px';
 
if (isVisible('outsrcbrowser'))
document.getElementById('onmouseoutsrc').style.width = '260px';
 
if (isVisible('longdescbrowser'))
document.getElementById('longdesc').style.width = '180px';
 
// Check action
if (elm != null && elm.nodeName == "IMG")
action = "update";
 
formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true);
 
if (action == "update") {
var src = tinyMCE.getAttrib(elm, 'src');
var onmouseoversrc = getImageSrc(tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover')));
var onmouseoutsrc = getImageSrc(tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout')));
 
src = convertURL(src, elm, true);
 
// Use mce_src if found
var mceRealSrc = tinyMCE.getAttrib(elm, 'mce_src');
if (mceRealSrc != "") {
src = mceRealSrc;
 
if (tinyMCE.getParam('convert_urls'))
src = convertURL(src, elm, true);
}
 
if (onmouseoversrc != "" && tinyMCE.getParam('convert_urls'))
onmouseoversrc = convertURL(onmouseoversrc, elm, true);
 
if (onmouseoutsrc != "" && tinyMCE.getParam('convert_urls'))
onmouseoutsrc = convertURL(onmouseoutsrc, elm, true);
 
// Setup form data
var style = tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style"));
 
// Store away old size
orgImageWidth = trimSize(getStyle(elm, 'width'))
orgImageHeight = trimSize(getStyle(elm, 'height'));
 
formObj.src.value = src;
formObj.alt.value = tinyMCE.getAttrib(elm, 'alt');
formObj.title.value = tinyMCE.getAttrib(elm, 'title');
formObj.border.value = trimSize(getStyle(elm, 'border', 'borderWidth'));
formObj.vspace.value = tinyMCE.getAttrib(elm, 'vspace');
formObj.hspace.value = tinyMCE.getAttrib(elm, 'hspace');
formObj.width.value = orgImageWidth;
formObj.height.value = orgImageHeight;
formObj.onmouseoversrc.value = onmouseoversrc;
formObj.onmouseoutsrc.value = onmouseoutsrc;
formObj.id.value = tinyMCE.getAttrib(elm, 'id');
formObj.dir.value = tinyMCE.getAttrib(elm, 'dir');
formObj.lang.value = tinyMCE.getAttrib(elm, 'lang');
formObj.longdesc.value = tinyMCE.getAttrib(elm, 'longdesc');
formObj.usemap.value = tinyMCE.getAttrib(elm, 'usemap');
formObj.style.value = tinyMCE.serializeStyle(style);
 
// Select by the values
if (tinyMCE.isMSIE)
selectByValue(formObj, 'align', getStyle(elm, 'align', 'styleFloat'));
else
selectByValue(formObj, 'align', getStyle(elm, 'align', 'cssFloat'));
 
addClassesToList('classlist', 'advimage_styles');
 
selectByValue(formObj, 'classlist', tinyMCE.getAttrib(elm, 'class'));
selectByValue(formObj, 'imagelistsrc', src);
selectByValue(formObj, 'imagelistover', onmouseoversrc);
selectByValue(formObj, 'imagelistout', onmouseoutsrc);
 
updateStyle();
showPreviewImage(src, true);
changeAppearance();
 
window.focus();
} else
addClassesToList('classlist', 'advimage_styles');
 
// If option enabled default contrain proportions to checked
if (tinyMCE.getParam("advimage_constrain_proportions", true))
formObj.constrain.checked = true;
 
// Check swap image if valid data
if (formObj.onmouseoversrc.value != "" || formObj.onmouseoutsrc.value != "")
setSwapImageDisabled(false);
else
setSwapImageDisabled(true);
}
 
function setSwapImageDisabled(state) {
var formObj = document.forms[0];
 
formObj.onmousemovecheck.checked = !state;
 
setBrowserDisabled('overbrowser', state);
setBrowserDisabled('outbrowser', state);
 
if (formObj.imagelistover)
formObj.imagelistover.disabled = state;
 
if (formObj.imagelistout)
formObj.imagelistout.disabled = state;
 
formObj.onmouseoversrc.disabled = state;
formObj.onmouseoutsrc.disabled = state;
}
 
function setAttrib(elm, attrib, value) {
var formObj = document.forms[0];
var valueElm = formObj.elements[attrib];
 
if (typeof(value) == "undefined" || value == null) {
value = "";
 
if (valueElm)
value = valueElm.value;
}
 
if (value != "") {
elm.setAttribute(attrib, value);
 
if (attrib == "style")
attrib = "style.cssText";
 
if (attrib == "longdesc")
attrib = "longDesc";
 
if (attrib == "width") {
attrib = "style.width";
value = value + "px";
value = value.replace(/%px/g, 'px');
}
 
if (attrib == "height") {
attrib = "style.height";
value = value + "px";
value = value.replace(/%px/g, 'px');
}
 
if (attrib == "class")
attrib = "className";
 
eval('elm.' + attrib + "=value;");
} else {
if (attrib == 'class')
elm.className = '';
 
elm.removeAttribute(attrib);
}
}
 
function makeAttrib(attrib, value) {
var formObj = document.forms[0];
var valueElm = formObj.elements[attrib];
 
if (typeof(value) == "undefined" || value == null) {
value = "";
 
if (valueElm)
value = valueElm.value;
}
 
if (value == "")
return "";
 
// XML encode it
value = value.replace(/&/g, '&amp;');
value = value.replace(/\"/g, '&quot;');
value = value.replace(/</g, '&lt;');
value = value.replace(/>/g, '&gt;');
 
return ' ' + attrib + '="' + value + '"';
}
 
function insertAction() {
var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
var elm = inst.getFocusElement();
var formObj = document.forms[0];
var src = formObj.src.value;
var onmouseoversrc = formObj.onmouseoversrc.value;
var onmouseoutsrc = formObj.onmouseoutsrc.value;
 
if (!AutoValidator.validate(formObj)) {
alert(tinyMCE.getLang('lang_invalid_data'));
return false;
}
 
if (tinyMCE.getParam("accessibility_warnings")) {
if (formObj.alt.value == "" && !confirm(tinyMCE.getLang('lang_advimage_missing_alt', '', true)))
return;
}
 
if (onmouseoversrc && onmouseoversrc != "")
onmouseoversrc = "this.src='" + convertURL(onmouseoversrc, tinyMCE.imgElement) + "';";
 
if (onmouseoutsrc && onmouseoutsrc != "")
onmouseoutsrc = "this.src='" + convertURL(onmouseoutsrc, tinyMCE.imgElement) + "';";
 
if (elm != null && elm.nodeName == "IMG") {
setAttrib(elm, 'src', convertURL(src, tinyMCE.imgElement));
setAttrib(elm, 'mce_src', src);
setAttrib(elm, 'alt');
setAttrib(elm, 'title');
setAttrib(elm, 'border');
setAttrib(elm, 'vspace');
setAttrib(elm, 'hspace');
setAttrib(elm, 'width');
setAttrib(elm, 'height');
setAttrib(elm, 'onmouseover', onmouseoversrc);
setAttrib(elm, 'onmouseout', onmouseoutsrc);
setAttrib(elm, 'id');
setAttrib(elm, 'dir');
setAttrib(elm, 'lang');
setAttrib(elm, 'longdesc');
setAttrib(elm, 'usemap');
setAttrib(elm, 'style');
setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));
setAttrib(elm, 'align', getSelectValue(formObj, 'align'));
 
//tinyMCEPopup.execCommand("mceRepaint");
 
// Repaint if dimensions changed
if (formObj.width.value != orgImageWidth || formObj.height.value != orgImageHeight)
inst.repaint();
 
// Refresh in old MSIE
if (tinyMCE.isMSIE5)
elm.outerHTML = elm.outerHTML;
} else {
var html = "<img";
 
html += makeAttrib('src', convertURL(src, tinyMCE.imgElement));
html += makeAttrib('mce_src', src);
html += makeAttrib('alt');
html += makeAttrib('title');
html += makeAttrib('border');
html += makeAttrib('vspace');
html += makeAttrib('hspace');
html += makeAttrib('width');
html += makeAttrib('height');
html += makeAttrib('onmouseover', onmouseoversrc);
html += makeAttrib('onmouseout', onmouseoutsrc);
html += makeAttrib('id');
html += makeAttrib('dir');
html += makeAttrib('lang');
html += makeAttrib('longdesc');
html += makeAttrib('usemap');
html += makeAttrib('style');
html += makeAttrib('class', getSelectValue(formObj, 'classlist'));
html += makeAttrib('align', getSelectValue(formObj, 'align'));
html += " />";
 
tinyMCEPopup.execCommand("mceInsertContent", false, html);
}
 
tinyMCE._setEventsEnabled(inst.getBody(), false);
tinyMCEPopup.close();
}
 
function cancelAction() {
tinyMCEPopup.close();
}
 
function changeAppearance() {
var formObj = document.forms[0];
var img = document.getElementById('alignSampleImg');
 
if (img) {
img.align = formObj.align.value;
img.border = formObj.border.value;
img.hspace = formObj.hspace.value;
img.vspace = formObj.vspace.value;
}
}
 
function changeMouseMove() {
var formObj = document.forms[0];
 
setSwapImageDisabled(!formObj.onmousemovecheck.checked);
}
 
function updateStyle() {
var formObj = document.forms[0];
var st = tinyMCE.parseStyle(formObj.style.value);
 
if (tinyMCE.getParam('inline_styles', false)) {
st['width'] = formObj.width.value == '' ? '' : formObj.width.value + "px";
st['height'] = formObj.height.value == '' ? '' : formObj.height.value + "px";
st['border-width'] = formObj.border.value == '' ? '' : formObj.border.value + "px";
st['margin-top'] = formObj.vspace.value == '' ? '' : formObj.vspace.value + "px";
st['margin-bottom'] = formObj.vspace.value == '' ? '' : formObj.vspace.value + "px";
st['margin-left'] = formObj.hspace.value == '' ? '' : formObj.hspace.value + "px";
st['margin-right'] = formObj.hspace.value == '' ? '' : formObj.hspace.value + "px";
} else {
st['width'] = st['height'] = st['border-width'] = null;
 
if (st['margin-top'] == st['margin-bottom'])
st['margin-top'] = st['margin-bottom'] = null;
 
if (st['margin-left'] == st['margin-right'])
st['margin-left'] = st['margin-right'] = null;
}
 
formObj.style.value = tinyMCE.serializeStyle(st);
}
 
function styleUpdated() {
var formObj = document.forms[0];
var st = tinyMCE.parseStyle(formObj.style.value);
 
if (st['width'])
formObj.width.value = st['width'].replace('px', '');
 
if (st['height'])
formObj.height.value = st['height'].replace('px', '');
 
if (st['margin-top'] && st['margin-top'] == st['margin-bottom'])
formObj.vspace.value = st['margin-top'].replace('px', '');
 
if (st['margin-left'] && st['margin-left'] == st['margin-right'])
formObj.hspace.value = st['margin-left'].replace('px', '');
 
if (st['border-width'])
formObj.border.value = st['border-width'].replace('px', '');
}
 
function changeHeight() {
var formObj = document.forms[0];
 
if (!formObj.constrain.checked || !preloadImg) {
updateStyle();
return;
}
 
if (formObj.width.value == "" || formObj.height.value == "")
return;
 
var temp = (parseInt(formObj.width.value) / parseInt(preloadImg.width)) * preloadImg.height;
formObj.height.value = temp.toFixed(0);
updateStyle();
}
 
function changeWidth() {
var formObj = document.forms[0];
 
if (!formObj.constrain.checked || !preloadImg) {
updateStyle();
return;
}
 
if (formObj.width.value == "" || formObj.height.value == "")
return;
 
var temp = (parseInt(formObj.height.value) / parseInt(preloadImg.height)) * preloadImg.width;
formObj.width.value = temp.toFixed(0);
updateStyle();
}
 
function onSelectMainImage(target_form_element, name, value) {
var formObj = document.forms[0];
 
formObj.alt.value = name;
formObj.title.value = name;
 
resetImageData();
showPreviewImage(formObj.elements[target_form_element].value, false);
}
 
function showPreviewImage(src, start) {
var formObj = document.forms[0];
 
selectByValue(document.forms[0], 'imagelistsrc', src);
 
var elm = document.getElementById('prev');
var src = src == "" ? src : tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src);
 
if (!start && tinyMCE.getParam("advimage_update_dimensions_onchange", true))
resetImageData();
 
if (src == "")
elm.innerHTML = "";
else
elm.innerHTML = '<img id="previewImg" src="' + src + '" border="0" onload="updateImageData(' + start + ');" onerror="resetImageData();" />'
}
 
function updateImageData(start) {
var formObj = document.forms[0];
 
preloadImg = document.getElementById('previewImg');
 
if (!start && formObj.width.value == "")
formObj.width.value = preloadImg.width;
 
if (!start && formObj.height.value == "")
formObj.height.value = preloadImg.height;
 
updateStyle();
}
 
function resetImageData() {
var formObj = document.forms[0];
formObj.width.value = formObj.height.value = "";
}
 
function getSelectValue(form_obj, field_name) {
var elm = form_obj.elements[field_name];
 
if (elm == null || elm.options == null)
return "";
 
return elm.options[elm.selectedIndex].value;
}
 
function getImageListHTML(elm_id, target_form_element, onchange_func) {
if (typeof(tinyMCEImageList) == "undefined" || tinyMCEImageList.length == 0)
return "";
 
var html = "";
 
html += '<select id="' + elm_id + '" name="' + elm_id + '"';
html += ' class="mceImageList" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';
html += 'this.options[this.selectedIndex].value;';
 
if (typeof(onchange_func) != "undefined")
html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';
 
html += '"><option value="">---</option>';
 
for (var i=0; i<tinyMCEImageList.length; i++)
html += '<option value="' + tinyMCEImageList[i][1] + '">' + tinyMCEImageList[i][0] + '</option>';
 
html += '</select>';
 
return html;
 
// tinyMCE.debug('-- image list start --', html, '-- image list end --');
}
 
// While loading
preinit();
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/preview/images/preview.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/preview/images/preview.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/preview/editor_plugin_src.js
New file
0,0 → 1,205
/**
* $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
tinyMCE.importPluginLanguagePack('preview');
 
var TinyMCE_PreviewPlugin = {
getInfo : function() {
return {
longname : 'Preview',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
/**
* Returns the HTML contents of the preview control.
*/
getControlHTML : function(cn) {
switch (cn) {
case "preview":
return tinyMCE.getButtonHTML(cn, 'lang_preview_desc', '{$pluginurl}/images/preview.gif', 'mcePreview');
}
 
return "";
},
 
/**
* Executes the mcePreview command.
*/
execCommand : function(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
case "mcePreview":
var previewPage = tinyMCE.getParam("plugin_preview_pageurl", null);
var previewWidth = tinyMCE.getParam("plugin_preview_width", "550");
var previewHeight = tinyMCE.getParam("plugin_preview_height", "600");
 
// Use a custom preview page
if (previewPage) {
var template = new Array();
 
template['file'] = previewPage;
template['width'] = previewWidth;
template['height'] = previewHeight;
 
tinyMCE.openWindow(template, {editor_id : editor_id, resizable : "yes", scrollbars : "yes", inline : "yes", content : tinyMCE.getContent(), content_css : tinyMCE.getParam("content_css")});
} else {
var win = window.open("", "mcePreview", "menubar=no,toolbar=no,scrollbars=yes,resizable=yes,left=20,top=20,width=" + previewWidth + ",height=" + previewHeight);
var html = "", i;
var c = tinyMCE.getContent();
var pos = c.indexOf('<body'), pos2, css = tinyMCE.getParam("content_css").split(',');
 
if (pos != -1) {
pos = c.indexOf('>', pos);
pos2 = c.lastIndexOf('</body>');
c = c.substring(pos + 1, pos2);
}
 
html += tinyMCE.getParam('doctype');
html += '<html xmlns="http://www.w3.org/1999/xhtml">';
html += '<head>';
html += '<title>' + tinyMCE.getLang('lang_preview_desc') + '</title>';
html += '<base href="' + tinyMCE.settings['base_href'] + '" />';
html += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
 
for (i=0; i<css.length; i++)
html += '<link href="' + css[i] + '" rel="stylesheet" type="text/css" />';
 
html += '<script type="text/javascript">';
html += 'window.opener.TinyMCE_PreviewPlugin._setDoc(document);';
html += 'window.opener.TinyMCE_PreviewPlugin._setWin(window);';
html += 'writeFlash = window.opener.TinyMCE_PreviewPlugin._writeFlash;';
html += 'writeShockWave = window.opener.TinyMCE_PreviewPlugin._writeShockWave;';
html += 'writeQuickTime = window.opener.TinyMCE_PreviewPlugin._writeQuickTime;';
html += 'writeRealMedia = window.opener.TinyMCE_PreviewPlugin._writeRealMedia;';
html += 'writeWindowsMedia = window.opener.TinyMCE_PreviewPlugin._writeWindowsMedia;';
html += 'writeEmbed = window.opener.TinyMCE_PreviewPlugin._writeEmbed;';
html += '</script>';
html += '</head>';
html += '<body dir="' + tinyMCE.getParam("directionality") + '" onload="window.opener.TinyMCE_PreviewPlugin._onLoad();">';
html += c;
html += '</body>';
html += '</html>';
 
win.document.write(html);
win.document.close();
}
 
return true;
}
 
return false;
},
 
_setDoc : function(d) {
TinyMCE_PreviewPlugin._doc = d;
d._embeds = new Array();
},
 
_setWin : function(d) {
TinyMCE_PreviewPlugin._win = d;
},
 
_onLoad : function() {
var nl, i, el = new Array(), d = TinyMCE_PreviewPlugin._doc, sv, ne;
 
nl = d.getElementsByTagName("script");
for (i=0; i<nl.length; i++) {
sv = tinyMCE.isMSIE ? nl[i].innerHTML : nl[i].firstChild.nodeValue;
 
if (new RegExp('write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\\(.*', 'g').test(sv))
el[el.length] = nl[i];
}
 
for (i=0; i<el.length; i++) {
ne = d.createElement("div");
ne.innerHTML = d._embeds[i];
el[i].parentNode.insertBefore(ne.firstChild, el[i]);
}
},
 
_writeFlash : function(p) {
p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
TinyMCE_PreviewPlugin._writeEmbed(
'D27CDB6E-AE6D-11cf-96B8-444553540000',
'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
'application/x-shockwave-flash',
p
);
},
 
_writeShockWave : function(p) {
p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
TinyMCE_PreviewPlugin._writeEmbed(
'166B1BCA-3F9C-11CF-8075-444553540000',
'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
'application/x-director',
p
);
},
 
_writeQuickTime : function(p) {
p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
TinyMCE_PreviewPlugin._writeEmbed(
'02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
'video/quicktime',
p
);
},
 
_writeRealMedia : function(p) {
p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
TinyMCE_PreviewPlugin._writeEmbed(
'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
'audio/x-pn-realaudio-plugin',
p
);
},
 
_writeWindowsMedia : function(p) {
p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
p.url = p.src;
TinyMCE_PreviewPlugin._writeEmbed(
'6BF52A52-394A-11D3-B153-00C04F79FAA6',
'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
'application/x-mplayer2',
p
);
},
 
_writeEmbed : function(cls, cb, mt, p) {
var h = '', n, d = TinyMCE_PreviewPlugin._doc, ne, c;
 
h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
h += '>';
 
for (n in p)
h += '<param name="' + n + '" value="' + p[n] + '">';
 
h += '<embed type="' + mt + '"';
 
for (n in p)
h += n + '="' + p[n] + '" ';
 
h += '></embed></object>';
 
d._embeds[d._embeds.length] = h;
}
};
 
tinyMCE.addPlugin("preview", TinyMCE_PreviewPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/preview/readme.txt
New file
0,0 → 1,0
Check the TinyMCE documentation for details on this plugin.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/preview/example.html
New file
0,0 → 1,14
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="javascript" src="../../tiny_mce_popup.js"></script>
<script type="text/javascript" src="jscripts/embed.js"></script>
<title>Example of a custom preview page</title>
<link href="{$content_css}" rel="stylesheet" type="text/css" />
</head>
<body>
 
Editor contents: <br />
{$content}
 
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/preview/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('preview');var TinyMCE_PreviewPlugin={getInfo:function(){return{longname:'Preview',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"preview":return tinyMCE.getButtonHTML(cn,'lang_preview_desc','{$pluginurl}/images/preview.gif','mcePreview')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mcePreview":var previewPage=tinyMCE.getParam("plugin_preview_pageurl",null);var previewWidth=tinyMCE.getParam("plugin_preview_width","550");var previewHeight=tinyMCE.getParam("plugin_preview_height","600");if(previewPage){var template=new Array();template['file']=previewPage;template['width']=previewWidth;template['height']=previewHeight;tinyMCE.openWindow(template,{editor_id:editor_id,resizable:"yes",scrollbars:"yes",inline:"yes",content:tinyMCE.getContent(),content_css:tinyMCE.getParam("content_css")})}else{var win=window.open("","mcePreview","menubar=no,toolbar=no,scrollbars=yes,resizable=yes,left=20,top=20,width="+previewWidth+",height="+previewHeight);var html="",i;var c=tinyMCE.getContent();var pos=c.indexOf('<body'),pos2,css=tinyMCE.getParam("content_css").split(',');if(pos!=-1){pos=c.indexOf('>',pos);pos2=c.lastIndexOf('</body>');c=c.substring(pos+1,pos2)}html+=tinyMCE.getParam('doctype');html+='<html xmlns="http://www.w3.org/1999/xhtml">';html+='<head>';html+='<title>'+tinyMCE.getLang('lang_preview_desc')+'</title>';html+='<base href="'+tinyMCE.settings['base_href']+'" />';html+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';for(i=0;i<css.length;i++)html+='<link href="'+css[i]+'" rel="stylesheet" type="text/css" />';html+='<script type="text/javascript">';html+='window.opener.TinyMCE_PreviewPlugin._setDoc(document);';html+='window.opener.TinyMCE_PreviewPlugin._setWin(window);';html+='writeFlash = window.opener.TinyMCE_PreviewPlugin._writeFlash;';html+='writeShockWave = window.opener.TinyMCE_PreviewPlugin._writeShockWave;';html+='writeQuickTime = window.opener.TinyMCE_PreviewPlugin._writeQuickTime;';html+='writeRealMedia = window.opener.TinyMCE_PreviewPlugin._writeRealMedia;';html+='writeWindowsMedia = window.opener.TinyMCE_PreviewPlugin._writeWindowsMedia;';html+='writeEmbed = window.opener.TinyMCE_PreviewPlugin._writeEmbed;';html+='</script>';html+='</head>';html+='<body dir="'+tinyMCE.getParam("directionality")+'" onload="window.opener.TinyMCE_PreviewPlugin._onLoad();">';html+=c;html+='</body>';html+='</html>';win.document.write(html);win.document.close()}return true}return false},_setDoc:function(d){TinyMCE_PreviewPlugin._doc=d;d._embeds=new Array()},_setWin:function(d){TinyMCE_PreviewPlugin._win=d},_onLoad:function(){var nl,i,el=new Array(),d=TinyMCE_PreviewPlugin._doc,sv,ne;nl=d.getElementsByTagName("script");for(i=0;i<nl.length;i++){sv=tinyMCE.isMSIE?nl[i].innerHTML:nl[i].firstChild.nodeValue;if(new RegExp('write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\\(.*','g').test(sv))el[el.length]=nl[i]}for(i=0;i<el.length;i++){ne=d.createElement("div");ne.innerHTML=d._embeds[i];el[i].parentNode.insertBefore(ne.firstChild,el[i])}},_writeFlash:function(p){p.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],p.src);TinyMCE_PreviewPlugin._writeEmbed('D27CDB6E-AE6D-11cf-96B8-444553540000','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0','application/x-shockwave-flash',p)},_writeShockWave:function(p){p.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],p.src);TinyMCE_PreviewPlugin._writeEmbed('166B1BCA-3F9C-11CF-8075-444553540000','http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0','application/x-director',p)},_writeQuickTime:function(p){p.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],p.src);TinyMCE_PreviewPlugin._writeEmbed('02BF25D5-8C17-4B23-BC80-D3488ABDDC6B','http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0','video/quicktime',p)},_writeRealMedia:function(p){p.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],p.src);TinyMCE_PreviewPlugin._writeEmbed('CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0','audio/x-pn-realaudio-plugin',p)},_writeWindowsMedia:function(p){p.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],p.src);p.url=p.src;TinyMCE_PreviewPlugin._writeEmbed('6BF52A52-394A-11D3-B153-00C04F79FAA6','http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701','application/x-mplayer2',p)},_writeEmbed:function(cls,cb,mt,p){var h='',n,d=TinyMCE_PreviewPlugin._doc,ne,c;h+='<object classid="clsid:'+cls+'" codebase="'+cb+'"';h+=typeof(p.id)!="undefined"?'id="'+p.id+'"':'';h+=typeof(p.name)!="undefined"?'name="'+p.name+'"':'';h+=typeof(p.width)!="undefined"?'width="'+p.width+'"':'';h+=typeof(p.height)!="undefined"?'height="'+p.height+'"':'';h+=typeof(p.align)!="undefined"?'align="'+p.align+'"':'';h+='>';for(n in p)h+='<param name="'+n+'" value="'+p[n]+'">';h+='<embed type="'+mt+'"';for(n in p)h+=n+'="'+p[n]+'" ';h+='></embed></object>';d._embeds[d._embeds.length]=h}};tinyMCE.addPlugin("preview",TinyMCE_PreviewPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/preview/jscripts/embed.js
New file
0,0 → 1,73
/**
* This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.
*/
 
function writeFlash(p) {
writeEmbed(
'D27CDB6E-AE6D-11cf-96B8-444553540000',
'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
'application/x-shockwave-flash',
p
);
}
 
function writeShockWave(p) {
writeEmbed(
'166B1BCA-3F9C-11CF-8075-444553540000',
'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
'application/x-director',
p
);
}
 
function writeQuickTime(p) {
writeEmbed(
'02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
'video/quicktime',
p
);
}
 
function writeRealMedia(p) {
writeEmbed(
'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
'audio/x-pn-realaudio-plugin',
p
);
}
 
function writeWindowsMedia(p) {
p.url = p.src;
writeEmbed(
'6BF52A52-394A-11D3-B153-00C04F79FAA6',
'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
'application/x-mplayer2',
p
);
}
 
function writeEmbed(cls, cb, mt, p) {
var h = '', n;
 
h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
h += '>';
 
for (n in p)
h += '<param name="' + n + '" value="' + p[n] + '">';
 
h += '<embed type="' + mt + '"';
 
for (n in p)
h += n + '="' + p[n] + '" ';
 
h += '></embed></object>';
 
document.write(h);
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/preview/langs/en.js
New file
0,0 → 1,5
// UK lang variables
 
tinyMCE.addToLang('',{
preview_desc : 'Preview'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/preview/langs/fr.js
New file
0,0 → 1,6
// FR lang variables
// Modified by Motte, last updated 2006-03-23
 
tinyMCE.addToLang('',{
preview_desc : 'Pr&eacute;visualisation'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/directionality/langs/en.js
New file
0,0 → 1,6
// UK lang variables
 
tinyMCE.addToLang('',{
directionality_ltr_desc : 'Direction left to right',
directionality_rtl_desc : 'Direction right to left'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/directionality/langs/fr.js
New file
0,0 → 1,7
// FR lang variables
// Modified by Motte, last updated 2006-03-23
 
tinyMCE.addToLang('',{
directionality_ltr_desc : 'Vers la droite',
directionality_rtl_desc : 'Vers la gauche'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/directionality/images/ltr.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/directionality/images/ltr.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/directionality/images/rtl.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/directionality/images/rtl.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/directionality/editor_plugin_src.js
New file
0,0 → 1,90
/**
* $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
tinyMCE.importPluginLanguagePack('directionality');
 
var TinyMCE_DirectionalityPlugin = {
getInfo : function() {
return {
longname : 'Directionality',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
getControlHTML : function(cn) {
switch (cn) {
case "ltr":
return tinyMCE.getButtonHTML(cn, 'lang_directionality_ltr_desc', '{$pluginurl}/images/ltr.gif', 'mceDirectionLTR');
 
case "rtl":
return tinyMCE.getButtonHTML(cn, 'lang_directionality_rtl_desc', '{$pluginurl}/images/rtl.gif', 'mceDirectionRTL');
}
 
return "";
},
 
execCommand : function(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
case "mceDirectionLTR":
var inst = tinyMCE.getInstanceById(editor_id);
var elm = tinyMCE.getParentElement(inst.getFocusElement(), "p,div,td,h1,h2,h3,h4,h5,h6,pre,address");
 
if (elm)
elm.setAttribute("dir", "ltr");
 
tinyMCE.triggerNodeChange(false);
return true;
 
case "mceDirectionRTL":
var inst = tinyMCE.getInstanceById(editor_id);
var elm = tinyMCE.getParentElement(inst.getFocusElement(), "p,div,td,h1,h2,h3,h4,h5,h6,pre,address");
 
if (elm)
elm.setAttribute("dir", "rtl");
 
tinyMCE.triggerNodeChange(false);
return true;
}
 
// Pass to next handler in chain
return false;
},
 
handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
function getAttrib(elm, name) {
return elm.getAttribute(name) ? elm.getAttribute(name) : "";
}
 
if (node == null)
return;
 
var elm = tinyMCE.getParentElement(node, "p,div,td,h1,h2,h3,h4,h5,h6,pre,address");
if (!elm) {
tinyMCE.switchClass(editor_id + '_ltr', 'mceButtonDisabled');
tinyMCE.switchClass(editor_id + '_rtl', 'mceButtonDisabled');
return true;
}
 
tinyMCE.switchClass(editor_id + '_ltr', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_rtl', 'mceButtonNormal');
 
var dir = getAttrib(elm, "dir");
if (dir == "ltr" || dir == "")
tinyMCE.switchClass(editor_id + '_ltr', 'mceButtonSelected');
else
tinyMCE.switchClass(editor_id + '_rtl', 'mceButtonSelected');
 
return true;
}
};
 
tinyMCE.addPlugin("directionality", TinyMCE_DirectionalityPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/directionality/readme.txt
New file
0,0 → 1,0
Check the TinyMCE documentation for details on this plugin.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/directionality/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('directionality');var TinyMCE_DirectionalityPlugin={getInfo:function(){return{longname:'Directionality',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"ltr":return tinyMCE.getButtonHTML(cn,'lang_directionality_ltr_desc','{$pluginurl}/images/ltr.gif','mceDirectionLTR');case"rtl":return tinyMCE.getButtonHTML(cn,'lang_directionality_rtl_desc','{$pluginurl}/images/rtl.gif','mceDirectionRTL')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceDirectionLTR":var inst=tinyMCE.getInstanceById(editor_id);var elm=tinyMCE.getParentElement(inst.getFocusElement(),"p,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(elm)elm.setAttribute("dir","ltr");tinyMCE.triggerNodeChange(false);return true;case"mceDirectionRTL":var inst=tinyMCE.getInstanceById(editor_id);var elm=tinyMCE.getParentElement(inst.getFocusElement(),"p,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(elm)elm.setAttribute("dir","rtl");tinyMCE.triggerNodeChange(false);return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){function getAttrib(elm,name){return elm.getAttribute(name)?elm.getAttribute(name):""}if(node==null)return;var elm=tinyMCE.getParentElement(node,"p,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(!elm){tinyMCE.switchClass(editor_id+'_ltr','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_rtl','mceButtonDisabled');return true}tinyMCE.switchClass(editor_id+'_ltr','mceButtonNormal');tinyMCE.switchClass(editor_id+'_rtl','mceButtonNormal');var dir=getAttrib(elm,"dir");if(dir=="ltr"||dir=="")tinyMCE.switchClass(editor_id+'_ltr','mceButtonSelected');else tinyMCE.switchClass(editor_id+'_rtl','mceButtonSelected');return true}};tinyMCE.addPlugin("directionality",TinyMCE_DirectionalityPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/visualchars/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('visualchars');var TinyMCE_VisualCharsPlugin={getInfo:function(){return{longname:'Visual characters',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){inst.visualChars={state:false}},getControlHTML:function(cn){switch(cn){case"visualchars":return tinyMCE.getButtonHTML(cn,'lang_visualchars_desc','{$pluginurl}/images/visualchars.gif','mceVisualChars',false)}return""},execCommand:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id);switch(command){case"mceVisualChars":this._toggleVisualChars(editor_id,inst);return true}return false},cleanup:function(type,content,inst){if(type=="insert_to_editor_dom"||type=="get_from_editor_dom"){inst.visualChars.state=true;this._toggleVisualChars(inst.editorId,inst)}return content},_toggleVisualChars:function(editor_id,inst){var nl,i,h,d=inst.getDoc(),b=inst.getBody(),nv,s=inst.selection,bo;inst.visualChars.state=!inst.visualChars.state;bo=s.getBookmark(true);tinyMCE.switchClass(editor_id+'_visualchars',inst.visualChars.state?'mceButtonSelected':'mceButtonNormal');if(inst.visualChars.state){nl=tinyMCE.selectNodes(b,function(n){return n.nodeType==3&&n.nodeValue&&n.nodeValue.indexOf('\u00a0')!=-1});for(i=0;i<nl.length;i++){nv=nl[i].nodeValue;nv=nv.replace(/(\u00a0+)/g,'<span class="mceItemHiddenVisualChar">$1</span>');nv=nv.replace(/\u00a0/g,'\u00b7');tinyMCE.setOuterHTML(nl[i],nv,d)}}else{nl=tinyMCE.selectNodes(b,function(n){return n.nodeType==1&&n.nodeName=='SPAN'&&n.className=='mceItemHiddenVisualChar'});for(i=0;i<nl.length;i++)tinyMCE.setOuterHTML(nl[i],nl[i].innerHTML.replace(/(&middot;|\u00b7)/g,'&nbsp;'),d)}}};tinyMCE.addPlugin("visualchars",TinyMCE_VisualCharsPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/visualchars/langs/en.js
New file
0,0 → 1,5
// EN lang variables
 
tinyMCE.addToLang('visualchars',{
desc : 'Visual control characters on/off.'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/visualchars/images/visualchars.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/visualchars/images/visualchars.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/visualchars/editor_plugin_src.js
New file
0,0 → 1,89
/**
* $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
tinyMCE.importPluginLanguagePack('visualchars');
 
var TinyMCE_VisualCharsPlugin = {
getInfo : function() {
return {
longname : 'Visual characters',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
initInstance : function(inst) {
inst.visualChars = {
state : false
};
},
 
getControlHTML : function(cn) {
switch (cn) {
case "visualchars":
return tinyMCE.getButtonHTML(cn, 'lang_visualchars_desc', '{$pluginurl}/images/visualchars.gif', 'mceVisualChars', false);
}
 
return "";
},
 
execCommand : function(editor_id, element, command, user_interface, value) {
var inst = tinyMCE.getInstanceById(editor_id);
 
switch (command) {
case "mceVisualChars":
this._toggleVisualChars(editor_id, inst);
return true;
}
 
return false;
},
 
cleanup : function(type, content, inst) {
if (type == "insert_to_editor_dom" || type == "get_from_editor_dom") {
inst.visualChars.state = true;
this._toggleVisualChars(inst.editorId, inst);
}
 
return content;
},
 
// Private plugin internal methods
 
_toggleVisualChars : function(editor_id, inst) {
var nl, i, h, d = inst.getDoc(), b = inst.getBody(), nv, s = inst.selection, bo;
 
inst.visualChars.state = !inst.visualChars.state;
 
bo = s.getBookmark(true);
 
tinyMCE.switchClass(editor_id + '_visualchars', inst.visualChars.state ? 'mceButtonSelected' : 'mceButtonNormal');
 
if (inst.visualChars.state) {
nl = tinyMCE.selectNodes(b, function(n) {return n.nodeType == 3 && n.nodeValue && n.nodeValue.indexOf('\u00a0') != -1;});
 
for (i=0; i<nl.length; i++) {
nv = nl[i].nodeValue;
nv = nv.replace(/(\u00a0+)/g, '<span class="mceItemHiddenVisualChar">$1</span>');
nv = nv.replace(/\u00a0/g, '\u00b7');
tinyMCE.setOuterHTML(nl[i], nv, d);
}
} else {
nl = tinyMCE.selectNodes(b, function(n) {return n.nodeType == 1 && n.nodeName == 'SPAN' && n.className == 'mceItemHiddenVisualChar';});
 
for (i=0; i<nl.length; i++)
tinyMCE.setOuterHTML(nl[i], nl[i].innerHTML.replace(/(&middot;|\u00b7)/g, '&nbsp;'), d);
}
 
//s.moveToBookmark(bo);
}
};
 
tinyMCE.addPlugin("visualchars", TinyMCE_VisualCharsPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/zoom/editor_plugin.js
New file
0,0 → 1,0
var TinyMCE_ZoomPlugin={getInfo:function(){return{longname:'Zoom',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/zoom',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(control_name){if(!tinyMCE.isMSIE||tinyMCE.isMSIE5_0||tinyMCE.isOpera)return"";switch(control_name){case"zoom":return'<select id="{$editor_id}_zoomSelect" name="{$editor_id}_zoomSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceZoom\',false,this.options[this.selectedIndex].value);" class="mceSelectList">'+'<option value="100%">+ 100%</option>'+'<option value="150%">+ 150%</option>'+'<option value="200%">+ 200%</option>'+'<option value="250%">+ 250%</option>'+'</select>'}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceZoom":tinyMCE.getInstanceById(editor_id).contentDocument.body.style.zoom=value;tinyMCE.getInstanceById(editor_id).contentDocument.body.style.mozZoom=value;return true}return false}};tinyMCE.addPlugin("zoom",TinyMCE_ZoomPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/zoom/editor_plugin_src.js
New file
0,0 → 1,56
/**
* $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
var TinyMCE_ZoomPlugin = {
getInfo : function() {
return {
longname : 'Zoom',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/zoom',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
/**
* Returns the HTML contents of the zoom control.
*/
getControlHTML : function(control_name) {
if (!tinyMCE.isMSIE || tinyMCE.isMSIE5_0 || tinyMCE.isOpera)
return "";
 
switch (control_name) {
case "zoom":
return '<select id="{$editor_id}_zoomSelect" name="{$editor_id}_zoomSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceZoom\',false,this.options[this.selectedIndex].value);" class="mceSelectList">' +
'<option value="100%">+ 100%</option>' +
'<option value="150%">+ 150%</option>' +
'<option value="200%">+ 200%</option>' +
'<option value="250%">+ 250%</option>' +
'</select>';
}
 
return "";
},
 
/**
* Executes the mceZoom command.
*/
execCommand : function(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
case "mceZoom":
tinyMCE.getInstanceById(editor_id).contentDocument.body.style.zoom = value;
tinyMCE.getInstanceById(editor_id).contentDocument.body.style.mozZoom = value;
return true;
}
 
// Pass to next handler in chain
return false;
}
};
 
tinyMCE.addPlugin("zoom", TinyMCE_ZoomPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/zoom/readme.txt
New file
0,0 → 1,0
Check the TinyMCE documentation for details on this plugin.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/devkit/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('devkit');var TinyMCE_DevKitPlugin={_logFilter:'\\[(importCSS|execCommand|execInstanceCommand|debug)\\]',_logPadding:'',_startTime:null,_benchMark:false,_winLoaded:false,_isDebugEvents:false,getInfo:function(){return{longname:'Development Kit',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/devkit',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){this._setup()},_setup:function(){if(this._loaded)return;this._loaded=true;document.___TinyMCE=tinyMCE;this._logFilter=tinyMCE.getParam('devkit_log_filter',this._logFilter);this._benchMark=tinyMCE.getParam('devkit_bench_mark',false);var ifr=document.createElement('iframe');ifr.setAttribute("id","devkit");ifr.setAttribute("frameBorder","0");ifr.setAttribute("src",tinyMCE.baseURL+'/plugins/devkit/devkit.htm');document.body.appendChild(ifr);tinyMCE.importCSS(document,tinyMCE.baseURL+'/plugins/devkit/css/devkit_ui.css')},_start:function(){this._logPadding+='\u00a0';return new Date().getTime()},_end:function(st){if(this._logPadding.length>0)this._logPadding=this._logPadding.substring(0,this._logPadding.length-1);if(this._benchMark)this._log("benchmark","Execution time: "+(new Date().getTime()-st))},_log:function(t){var m,a,i,e=document.getElementById('devkit'),now=new Date().getTime();if(!this._startTime)this._startTime=now;m=(this._logPadding.length>1?this._logPadding:'')+'['+(now-this._startTime)+'] ['+t+'] ';a=this._log.arguments;for(i=1;i<a.length;i++){if(typeof(a[i])=='undefined')continue;if(i>1)m+=', ';m+=a[i]}if(!new RegExp(this._logFilter,'gi').test(m)){if(this._logPadding.length>0)this._logPadding=this._logPadding.substring(0,this._logPadding.length-1);return}if(!this._winLoaded)tinyMCE.log[tinyMCE.log.length]=m;else e.contentWindow.debug(m)},_debugEvents:function(s){var i,ld,inst,n,ev=['CheckboxStateChange','DOMAttrModified','DOMMenuItemActive','DOMMenuItemInactive','DOMMouseScroll','DOMNodeInserted','DOMNodeRemoved','RadioStateChange','blur','broadcast','change','click','close','command','commandupdate','contextmenu','dblclick','dragdrop','dragenter','dragexit','draggesture','dragover','focus','input','keydown','keypress','keyup','load','mousedown','mouseout','mouseover','mouseup','overflow','overflowchanged','popuphidden','popuphiding','popupshowing','popupshown','select','syncfrompreference','synctopreference','underflow','unload','abort','activate','afterprint','afterupdate','beforeactivate','beforecopy','beforecut','beforedeactivate','beforeeditfocus','beforepaste','beforeprint','beforeunload','beforeupdate','bounce','cellchange','controlselect','copy','cut','dataavailable','datasetchanged','datasetcomplete','deactivate','dragend','dragleave','dragstart','drop','error','errorupdate','filterchange','finish','focusin','focusout','help','layoutcomplete','losecapture','mouseenter','mouseleave','mousewheel','move','moveend','movestart','paste','propertychange','readystatechange','reset','resize','resizeend','resizestart','rowenter','rowexit','rowsdelete','rowsinserted','scroll','selectionchange','selectstart','start','stop','submit'];if(TinyMCE_DevKitPlugin._isDebugEvents==s)return;TinyMCE_DevKitPlugin._isDebugEvents=s;for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst)||inst.getDoc()==ld)continue;ld=inst.getDoc();for(i=0;i<ev.length;i++){if(s)tinyMCE.addEvent(ld,ev[i],TinyMCE_DevKitPlugin._debugEvent);else tinyMCE.removeEvent(ld,ev[i],TinyMCE_DevKitPlugin._debugEvent)}}},_debugEvent:function(e){var t;e=e?e:tinyMCE.selectedInstance.getWin().event;t=e.srcElement?e.srcElement:e.target;tinyMCE.debug(e.type,t?t.nodeName:'')},_serialize:function(o){var i,v,s=TinyMCE_DevKitPlugin._serialize;if(o==null)return'null';switch(typeof o){case'string':v='\bb\tt\nn\ff\rr\""\'\'\\\\';return'"'+o.replace(new RegExp('([\u0080-\uFFFF\\x00-\\x1f\\"])','g'),function(a,b){i=v.indexOf(b);if(i+1)return'\\'+v.charAt(i+1);a=b.charCodeAt().toString(16);return'\\u'+'0000'.substring(a.length)+a})+'"';case'object':if(o instanceof Array){for(i=0,v='[';i<o.length;i++)v+=(i>0?',':'')+s(o[i]);return v+']'}v='{';for(i in o)v+=typeof o[i]!='function'?(v.length>1?',"':'"')+i+'":'+s(o[i]):'';return v+'}'}return''+o}};tinyMCE.__debug=tinyMCE.debug;tinyMCE.debug=function(){var a,i,m='',now=new Date().getTime(),start=TinyMCE_DevKitPlugin._startTime;if(!start)TinyMCE_DevKitPlugin._startTime=start=now;a=this.debug.arguments;for(i=0;i<a.length;i++){if(typeof(a[i])=='undefined')continue;if(i>0)m+=', ';m+=a[i]}TinyMCE_DevKitPlugin._log('debug',m)};tinyMCE.dump=function(o){tinyMCE.debug(TinyMCE_DevKitPlugin._serialize(o))};tinyMCE.sleep=function(t){var s=new Date().getTime(),b;while(new Date().getTime()-s<t)b=1};tinyMCE.__execCommand=tinyMCE.execCommand;tinyMCE.execCommand=function(command,user_interface,value){var r,st,dk=TinyMCE_DevKitPlugin;st=dk._start();dk._log('execCommand',command,user_interface,value);r=tinyMCE.__execCommand(command,user_interface,value);dk._end(st);return r};tinyMCE.__execInstanceCommand=tinyMCE.execInstanceCommand;tinyMCE.execInstanceCommand=function(editor_id,command,user_interface,value,focus){var r,st,dk=TinyMCE_DevKitPlugin;st=dk._start();dk._log('execInstanceCommand',editor_id,command,user_interface,value);r=tinyMCE.__execInstanceCommand(editor_id,command,user_interface,value);dk._end(st);return r};TinyMCE_Engine.prototype.__handleEvent=TinyMCE_Engine.prototype.handleEvent;TinyMCE_Engine.prototype.handleEvent=function(e){var r,st,dk=TinyMCE_DevKitPlugin;st=dk._start();dk._log('handleEvent',e.type);r=tinyMCE.__handleEvent(e);dk._end(st);return r};tinyMCE.__importCSS=tinyMCE.importCSS;tinyMCE.importCSS=function(doc,css){var r,st,dk=TinyMCE_DevKitPlugin;st=dk._start();dk._log('importCSS',doc,css);r=tinyMCE.__importCSS(doc,css);dk._end(st);return r};tinyMCE.__triggerNodeChange=tinyMCE.triggerNodeChange;tinyMCE.triggerNodeChange=function(focus,setup_content){var r,st,dk=TinyMCE_DevKitPlugin;st=dk._start();dk._log('triggerNodeChange',focus,setup_content);r=tinyMCE.__triggerNodeChange(focus,setup_content);dk._end(st);return r};tinyMCE.__dispatchCallback=tinyMCE.dispatchCallback;tinyMCE.dispatchCallback=function(i,p,n){var r,st,dk=TinyMCE_DevKitPlugin;st=dk._start();dk._log('dispatchCallback',i,p,n);r=tinyMCE.__dispatchCallback(i,p,n);dk._end(st);return r};tinyMCE.__executeCallback=tinyMCE.executeCallback;tinyMCE.executeCallback=function(i,p,n){var r,st,dk=TinyMCE_DevKitPlugin;st=dk._start();dk._log('executeCallback',i,p,n);r=tinyMCE.__executeCallback(i,p,n);dk._end(st);return r};tinyMCE.__execCommandCallback=tinyMCE.execCommandCallback;tinyMCE.execCommandCallback=function(i,p,n){var r,st,dk=TinyMCE_DevKitPlugin;st=dk._start();dk._log('execCommandCallback',i,p,n);r=tinyMCE.__execCommandCallback(i,p,n);dk._end(st);return r};tinyMCE.addPlugin("devkit",TinyMCE_DevKitPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/devkit/jscripts/devkit.js
New file
0,0 → 1,331
var devkit = parent.tinyMCE.plugins['devkit'], logEnabled = true, flip = false, book = null;
 
function init() {
var log, i, f = document.forms[0];
 
devkit._winLoaded = true;
 
log = tinyMCE.log;
 
for (i=0; i<log.length; i++)
debug(log[i]);
 
f.logfilter.value = devkit._logFilter;
}
 
function changeFilter(f) {
devkit._logFilter = f;
}
 
function toggleLog(s) {
logEnabled = s;
}
 
function toggleFlip() {
document.getElementById('flipbtn').src = flip ? 'images/flip_down.gif' : 'images/flip_up.gif';
 
if (flip)
parent.document.getElementById('devkit').className = 'devkitup';
else
parent.document.getElementById('devkit').className = 'devkitdown';
 
flip = !flip;
}
 
function debug(s) {
var d, l, n;
 
if (!logEnabled || !new RegExp(devkit._logFilter, 'gi').test(s))
return;
 
d = document;
l = d.getElementById('log');
n = d.createElement('span');
 
n.innerHTML = tinyMCE.xmlEncode(s);
 
l.appendChild(n);
l.scrollTop = l.scrollHeight;
}
 
function renderInfo() {
var se = document.getElementById('info'), n, sn, inst, h = '', sel, rng, instCount = 0, rc;
 
h += '<h2>Browser info:</h2>';
 
h += '<table border="0" cellpadding="0" cellspacing="0" class="data">';
h += addRenderInfo('navigator.userAgent', navigator.userAgent);
h += addRenderInfo('navigator.appName', navigator.appName);
h += addRenderInfo('navigator.platform', navigator.platform);
h += addRenderInfo('navigator.language', navigator.language, 'bspec');
h += addRenderInfo('navigator.browserLanguage', navigator.browserLanguage, 'bspec');
h += addRenderInfo('navigator.systemLanguage', navigator.systemLanguage, 'bspec');
h += addRenderInfo('navigator.userLanguage', navigator.userLanguage, 'bspec');
h += addRenderInfo('opera.buildNumber("inconspicuous")', typeof(opera) != 'undefined' && opera.buildNumber ? opera.buildNumber('inconspicuous') : null, 'bspec');
h += addRenderInfo('window.innerWidth', parent.window.innerWidth, 'bspec');
h += addRenderInfo('window.innerHeight', parent.window.innerHeight, 'bspec');
h += addRenderInfo('document.body.offsetWidth', parent.document.body.offsetWidth);
h += addRenderInfo('document.body.offsetHeight', parent.document.body.offsetHeight);
h += addRenderInfo('screen.width', screen.width);
h += addRenderInfo('screen.height', screen.height);
h += addRenderInfo('screen.availWidth', screen.availWidth);
h += addRenderInfo('screen.availHeight', screen.availHeight);
h += addRenderInfo('screen.colorDepth', screen.colorDepth);
h += addRenderInfo('screen.pixelDepth', screen.pixelDepth, 'bspec');
h += addRenderInfo('document.contentType', document.contentType, 'bspec');
h += '</table>';
 
h += '<h2>TinyMCE_Engine info:</h2>';
 
h += '<table border="0" cellpadding="0" cellspacing="0" class="data">';
h += addRenderInfo('baseURL', tinyMCE.baseURL);
h += addRenderInfo('selectedInstance.editorId', tinyMCE.selectedInstance ? tinyMCE.selectedInstance.editorId : null);
h += addRenderInfo('selectedElement.nodeName', tinyMCE.selectedElement ? tinyMCE.selectedElement.nodeName : null, 'dep');
h += addRenderInfo('loadedFiles',tinyMCE.loadedFiles.join(','));
h += addRenderInfo('isMSIE', tinyMCE.isMSIE);
h += addRenderInfo('isMSIE5', tinyMCE.isMSIE5);
h += addRenderInfo('isMSIE5_0', tinyMCE.isMSIE5_0);
h += addRenderInfo('isMSIE7', tinyMCE.isMSIE7);
h += addRenderInfo('isGecko', tinyMCE.isGecko);
h += addRenderInfo('isSafari', tinyMCE.isSafari);
h += addRenderInfo('isOpera', tinyMCE.isOpera);
h += addRenderInfo('isMac', tinyMCE.isMac);
h += addRenderInfo('isNS7', tinyMCE.isNS7);
h += addRenderInfo('isNS71', tinyMCE.isNS71);
h += addRenderInfo('idCounter', tinyMCE.idCounter);
h += addRenderInfo('currentConfig', tinyMCE.currentConfig);
h += addRenderInfo('majorVersion', tinyMCE.majorVersion);
h += addRenderInfo('minorVersion', tinyMCE.minorVersion);
h += addRenderInfo('releaseDate', tinyMCE.releaseDate);
h += addRenderInfo('documentBasePath', tinyMCE.documentBasePath);
h += addRenderInfo('documentURL', tinyMCE.documentURL);
h += '</table>';
 
for (n in tinyMCE.instances) {
inst = tinyMCE.instances[n];
 
if (!tinyMCE.isInstance(inst))
continue;
 
sel = inst.selection.getSel();
rng = inst.selection.getRng();
 
h += '<h2>TinyMCE_Control(' + (instCount++) + ') id: ' + inst.editorId + '</h2>';
h += '<table border="0" cellpadding="0" cellspacing="0" class="data">';
 
h += addRenderInfo('editorId', inst.editorId);
h += addRenderInfo('visualAid', inst.visualAid);
h += addRenderInfo('foreColor', inst.foreColor);
h += addRenderInfo('backColor', inst.backColor);
h += addRenderInfo('formTargetElementId', inst.formTargetElementId);
h += addRenderInfo('formElement', inst.formElement ? inst.formElement.nodeName : null);
h += addRenderInfo('oldTargetElement', inst.oldTargetElement ? inst.oldTargetElement.nodeName : null);
h += addRenderInfo('linkElement', inst.linkElement ? inst.linkElement.nodeName : null, 'dep');
h += addRenderInfo('imgElement', inst.imgElement ? inst.imgElement.nodeName : null, 'dep');
h += addRenderInfo('selectedNode', inst.selectedNode ? inst.selectedNode.nodeName : null, 'dep');
h += addRenderInfo('targetElement', inst.targetElement ? inst.targetElement.nodeName : null);
h += addRenderInfo('getBody().nodeName', inst.getBody() ? inst.getBody().nodeName : null);
h += addRenderInfo('getBody().getAttribute("id")', inst.getBody() ? inst.getBody().getAttribute("id") : null);
h += addRenderInfo('getDoc().location', inst.getDoc() ? inst.getDoc().location : null);
h += addRenderInfo('startContent', inst.startContent);
h += addRenderInfo('isHidden()', inst.isHidden());
h += addRenderInfo('isDirty()', inst.isDirty());
h += addRenderInfo('undoRedo.undoLevels.length', inst.undoRedo.undoLevels.length);
h += addRenderInfo('undoRedo.undoIndex', inst.undoRedo.undoIndex);
h += addRenderInfo('selection.getSelectedHTML()', inst.selection.getSelectedHTML());
h += addRenderInfo('selection.isCollapsed()', inst.selection.isCollapsed() || 'false');
h += addRenderInfo('selection.getSelectedText()', inst.selection.getSelectedText());
h += addRenderInfo('selection.getFocusElement().nodeName', inst.selection.getFocusElement().nodeName);
h += addRenderInfo('selection.getFocusElement().outerHTML', tinyMCE.getOuterHTML(inst.selection.getFocusElement()));
 
if ((tinyMCE.isGecko || tinyMCE.isOpera) && sel && rng) {
h += addRenderInfo('selection.getSel().anchorNode.nodeName', sel.anchorNode ? sel.anchorNode.nodeName : null, 'bspec');
h += addRenderInfo('selection.getSel().anchorOffset', sel.anchorOffset, 'bspec');
h += addRenderInfo('selection.getSel().focusNode.nodeName', sel.focusNode ? sel.focusNode.nodeName : null, 'bspec');
h += addRenderInfo('selection.getSel().focusOffset', sel.focusOffset, 'bspec');
h += addRenderInfo('selection.getRng().startContainer.nodeName', rng.startContainer ? rng.startContainer.nodeName : null, 'bspec');
h += addRenderInfo('selection.getRng().startOffset', rng.startOffset, 'bspec');
h += addRenderInfo('selection.getRng().endContainer.nodeName', rng.endContainer ? rng.endContainer.nodeName : null, 'bspec');
h += addRenderInfo('selection.getRng().endOffset', rng.endOffset, 'bspec');
}
 
if (typeof(rng.item) != 'undefined' || typeof(rng.htmlText) != 'undefined') {
if (!rng.item) {
h += addRenderInfo('selection.getSel().type', sel.type, 'bspec');
h += addRenderInfo('selection.getRng().htmlText', rng.htmlText, 'bspec');
h += addRenderInfo('selection.getRng().text', rng.text, 'bspec');
} else
h += addRenderInfo('selection.getRng().item(0).nodeName', rng.item(0).nodeName, 'bspec');
}
 
h += '</table>';
}
 
h += '<p>Fields marked in <strong class="bspec">gray</strong> is not cross browser and should be used with care.</p>';
h += '<p>Fields marked <strong class="dep">red</strong> are marked deprecated and will be removed in the future.</p><br />';
 
se.innerHTML = h;
}
 
function addRenderInfo(n, v, c) {
return '<tr><td' + (c ? ' class="' + c + '"' : '')+ '>' + n + '</td><td><input type="text" value="' + tinyMCE.xmlEncode(v != null ? ('' + v).replace(/[\r\n]/g, '') : 'null') + '" /></td></tr>';
}
 
function renderSettings() {
var se = document.getElementById('settings'), n, sn, inst, h = '', v;
 
for (n in tinyMCE.instances) {
inst = tinyMCE.instances[n];
 
if (!tinyMCE.isInstance(inst))
continue;
 
h += '<h2>Instance id: ' + inst.editorId + '</h2>';
h += '<table border="0" cellpadding="0" cellspacing="0" class="data">';
 
for (sn in inst.settings) {
v = inst.settings[sn];
 
h += '<tr><td class="col1">' + tinyMCE.xmlEncode(sn) + '</td><td><input type="text" value="' + tinyMCE.xmlEncode(v) + '" /></td></tr>';
}
 
h += '</table>';
}
 
se.innerHTML = h;
}
 
function renderContent() {
var se = document.getElementById('content'), n, inst, h = '';
 
for (n in tinyMCE.instances) {
inst = tinyMCE.instances[n];
 
if (!tinyMCE.isInstance(inst))
continue;
 
h += '<h2>Instance id: ' + inst.editorId + '</h2>';
 
h += '<h3>Start content - inst.startContent:</h3>';
h += '<div>' + tinyMCE.xmlEncode(inst.startContent) + '</div>';
 
h += '<h3>Raw content - inst.getBody().innerHTML or inst.getHTML(true):</h3>';
h += '<div>' + tinyMCE.xmlEncode(inst.getHTML(true)) + '</div>';
 
h += '<h3>Cleaned content - inst.getHTML():</h3>';
h += '<div>' + tinyMCE.xmlEncode(inst.getHTML()) + '</div>';
 
if (inst.serializedHTML) {
h += '<h3>Serialized HTML content - inst.serializedHTML:</h3>';
h += '<div>' + tinyMCE.xmlEncode(inst.serializedHTML) + '</div>';
}
}
 
se.innerHTML = h;
}
 
function renderCommandStates() {
var se = document.getElementById('command_states'), n, inst, h = '', v, ex;
var cmds = new Array('2D-Position','AbsolutePosition','BackColor','BlockDirLTR','BlockDirRTL','Bold','BrowseMode','Copy','CreateBookmark','CreateLink','Cut','Delete','DirLTR','DirRTL','EditMode','enableInlineTableEditing','enableObjectResizing','FontName','FontSize','ForeColor','FormatBlock','Indent','InsertButton','InsertFieldset','InsertHorizontalRule','InsertIFrame','InsertImage','InsertInputButton','InsertInputCheckbox','InsertInputFileUpload','InsertInputHidden','InsertInputImage','InsertInputPassword','InsertInputRadio','InsertInputReset','InsertInputSubmit','InsertInputText','InsertMarquee','InsertOrderedList','InsertParagraph','InsertSelectDropdown','InsertSelectListbox','InsertTextArea','InsertUnorderedList','Italic','JustifyCenter','JustifyFull','JustifyLeft','JustifyNone','JustifyRight','LiveResize','MultipleSelection','Open','Outdent','OverWrite','Paste','PlayImage','Redo','Refresh','RemoveFormat','SaveAs','SelectAll','SizeToControl','SizeToControlHeight','SizeToControlWidth','Stop','StopImage','StrikeThrough','styleWithCSS','Subscript','Superscript','UnBookmark','Underline','Undo','Unlink','Unselect'), i;
 
for (n in tinyMCE.instances) {
inst = tinyMCE.instances[n];
 
if (!tinyMCE.isInstance(inst))
continue;
 
h += '<h2>Instance id: ' + inst.editorId + '</h2>';
h += '<table border="0" cellpadding="0" cellspacing="0" class="data">';
 
for (i=0; i<cmds.length; i++) {
v = null;
 
try {
v = tinyMCE.isGecko || inst.getDoc().queryCommandSupported(cmds[i]);
v = v ? inst.queryCommandState(cmds[i]) : 'Not supported';
} catch (ex) {
v = 'Not supported';
}
 
h += '<tr><td><input type="text" value="' + tinyMCE.xmlEncode(cmds[i]) + '" /></td><td><input type="text" value="' + tinyMCE.xmlEncode(v) + '" /></td></tr>';
}
 
h += '</table>';
}
 
se.innerHTML = h;
}
 
function renderUndoRedo() {
var se = document.getElementById('undo_redo'), inst, n, h = '', i, le, id, d, ur;
var f = document.forms[0];
 
if (tinyMCE.undoLevels) {
le = tinyMCE.undoLevels;
 
h += '<h2>Global undo/redo</h2>';
h += '<table border="0" cellpadding="0" cellspacing="0" width="50%" class="data">';
h += '<tr><td>undoLevels.length</td><td>' + le.length + '</td></tr>';
h += '<tr><td>undoIndex</td><td>' + tinyMCE.undoIndex + '</td></tr>';
h += '</table>';
 
for (i=0; i<le.length; i++)
h += '<h3>Level: ' + i + ', Instance: ' + (le[i] ? le[i].editorId : 'null') + '</h3>';
}
 
for (n in tinyMCE.instances) {
inst = tinyMCE.instances[n];
 
if (!tinyMCE.isInstance(inst))
continue;
 
ur = inst.undoRedo;
le = ur.undoLevels;
 
h += '<hr /><h2>Instance id: ' + inst.editorId + '</h2>';
h += '<table border="0" cellpadding="0" cellspacing="0" width="50%" class="data">';
h += '<tr><td>undoLevels.length</td><td>' + le.length + '</td></tr>';
h += '<tr><td>undoIndex</td><td>' + ur.undoIndex + '</td></tr>';
h += '<tr><td>typingUndoIndex</td><td>' + ur.typingUndoIndex + '</td></tr>';
h += '<tr><td>undoRedo</td><td>' + ur.undoRedo + '</td></tr>';
h += '</table>';
 
for (i=0; i<le.length; i++) {
h += '<h3>Level: ' + i + (!le[i].bookmark ? "" : " [bookmark]") + '</h3>';
h += '<div class="undodata">' + tinyMCE.xmlEncode(le[i].content) + '</div>';
 
if (i > 0 && f.undo_diff.checked) {
d = diff_main(i > 0 ? le[i-1].content.replace(/[\r\n]+/g, '') : null, le[i].content.replace(/[\r\n]+/g, ''), false);
diff_cleanup_semantic(d);
h += '<h3>Diff ' + (i-1) + ',' + i + '</h3><div class="undodata">' + diff_prettyhtml(d) + '</div>';
}
}
}
 
se.innerHTML = h;
}
 
function clearLog() {
document.getElementById('log').innerHTML = '';
devkit._startTime = null;
}
 
function cancelAction() {
parent.document.getElementById('devkit').style.display = 'none';
}
 
function toggleDebugEvents(s) {
devkit._debugEvents(s);
}
 
function storeSelection() {
book = tinyMCE.selectedInstance.selection.getBookmark();
 
return false;
}
 
function restoreSelection() {
tinyMCE.selectedInstance.selection.moveToBookmark(book);
 
return false;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/devkit/jscripts/diff.js
New file
0,0 → 1,1192
// Diff_Match_Patch v1.3
// Computes the difference between two texts to create a patch.
// Applies the patch onto another text, allowing for errors.
// Copyright (C) 2006 Neil Fraser
// http://neil.fraser.name/software/diff_match_patch/
 
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation.
 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License (www.gnu.org) for more details.
 
 
// Constants.
// Redefine these in your program to override the defaults.
 
// Number of seconds to map a diff before giving up. (0 for infinity)
var DIFF_TIMEOUT = 1.0;
// Cost of an empty edit operation in terms of edit characters.
var DIFF_EDIT_COST = 4;
// Tweak the relative importance (0.0 = accuracy, 1.0 = proximity)
var MATCH_BALANCE = 0.5;
// At what point is no match declared (0.0 = perfection, 1.0 = very loose)
var MATCH_THRESHOLD = 0.5;
// The min and max cutoffs used when computing text lengths.
var MATCH_MINLENGTH = 100;
var MATCH_MAXLENGTH = 1000;
// Chunk size for context length.
var PATCH_MARGIN = 4;
 
 
//////////////////////////////////////////////////////////////////////
// Diff //
//////////////////////////////////////////////////////////////////////
 
// The data structure representing a diff is an array of tuples:
// [[-1, "Hello"], [1, "Goodbye"], [0, " world."]]
// which means: delete "Hello", add "Goodbye" and keep " world."
 
 
function diff_main(text1, text2, checklines) {
// Find the differences between two texts. Return an array of changes.
// If checklines is present and false, then don't run a line-level diff first to identify the changed areas.
// Check for equality (speedup)
if (text1 == text2)
return [[0, text1]];
 
if (typeof checklines == 'undefined')
checklines = true;
 
var a;
// Trim off common prefix (speedup)
a = diff_prefix(text1, text2);
text1 = a[0];
text2 = a[1];
var commonprefix = a[2];
 
// Trim off common suffix (speedup)
a = diff_suffix(text1, text2);
text1 = a[0];
text2 = a[1];
var commonsuffix = a[2];
 
var diff, i;
var longtext = text1.length > text2.length ? text1 : text2;
var shorttext = text1.length > text2.length ? text2 : text1;
 
if (!text1) { // Just add some text (speedup)
diff = [[1, text2]];
} else if (!text2) { // Just delete some text (speedup)
diff = [[-1, text1]];
} else if ((i = longtext.indexOf(shorttext)) != -1) {
// Shorter text is inside the longer text (speedup)
diff = [[1, longtext.substring(0, i)], [0, shorttext], [1, longtext.substring(i+shorttext.length)]];
// Swap insertions for deletions if diff is reversed.
if (text1.length > text2.length)
diff[0][0] = diff[2][0] = -1;
} else {
longtext = shorttext = null; // Garbage collect
// Check to see if the problem can be split in two.
var hm = diff_halfmatch(text1, text2);
if (hm) {
// A half-match was found, sort out the return data.
var text1_a = hm[0];
var text1_b = hm[1];
var text2_a = hm[2];
var text2_b = hm[3];
var mid_common = hm[4];
// Send both pairs off for separate processing.
var diff_a = diff_main(text1_a, text2_a, checklines);
var diff_b = diff_main(text1_b, text2_b, checklines);
// Merge the results.
diff = diff_a.concat([[0, mid_common]], diff_b);
} else {
// Perform a real diff.
if (checklines && text1.length + text2.length < 250)
checklines = false; // Too trivial for the overhead.
if (checklines) {
// Scan the text on a line-by-line basis first.
a = diff_lines2chars(text1, text2);
text1 = a[0];
text2 = a[1];
var linearray = a[2];
}
diff = diff_map(text1, text2);
if (!diff) // No acceptable result.
diff = [[-1, text1], [1, text2]];
if (checklines) {
diff_chars2lines(diff, linearray); // Convert the diff back to original text.
diff_cleanup_semantic(diff); // Eliminate freak matches (e.g. blank lines)
 
// Rediff any replacement blocks, this time on character-by-character basis.
diff.push([0, '']); // Add a dummy entry at the end.
var pointer = 0;
var count_delete = 0;
var count_insert = 0;
var text_delete = '';
var text_insert = '';
while(pointer < diff.length) {
if (diff[pointer][0] == 1) {
count_insert++;
text_insert += diff[pointer][1];
} else if (diff[pointer][0] == -1) {
count_delete++;
text_delete += diff[pointer][1];
} else { // Upon reaching an equality, check for prior redundancies.
if (count_delete >= 1 && count_insert >= 1) {
// Delete the offending records and add the merged ones.
a = diff_main(text_delete, text_insert, false);
diff.splice(pointer - count_delete - count_insert, count_delete + count_insert);
pointer = pointer - count_delete - count_insert;
for (i=a.length-1; i>=0; i--)
diff.splice(pointer, 0, a[i]);
pointer = pointer + a.length;
}
count_insert = 0;
count_delete = 0;
text_delete = '';
text_insert = '';
}
pointer++;
}
diff.pop(); // Remove the dummy entry at the end.
 
}
}
}
 
if (commonprefix)
diff.unshift([0, commonprefix]);
if (commonsuffix)
diff.push([0, commonsuffix]);
diff_cleanup_merge(diff);
return diff;
}
 
 
function diff_lines2chars(text1, text2) {
// Split text into an array of strings.
// Reduce the texts to a string of hashes where each character represents one line.
var linearray = new Array(); // linearray[4] == "Hello\n"
var linehash = new Object(); // linehash["Hello\n"] == 4
 
// "\x00" is a valid JavaScript character, but the Venkman debugger doesn't like it (bug 335098)
// So we'll insert a junk entry to avoid generating a null character.
linearray.push('');
 
function diff_lines2chars_munge(text) {
// My first ever closure!
var i, line;
var chars = '';
while (text) {
i = text.indexOf('\n');
if (i == -1)
i = text.length;
line = text.substring(0, i+1);
text = text.substring(i+1);
if (linehash.hasOwnProperty ? linehash.hasOwnProperty(line) : (linehash[line] !== undefined)) {
chars += String.fromCharCode(linehash[line]);
} else {
linearray.push(line);
linehash[line] = linearray.length - 1;
chars += String.fromCharCode(linearray.length - 1);
}
}
return chars;
}
 
var chars1 = diff_lines2chars_munge(text1);
var chars2 = diff_lines2chars_munge(text2);
return [chars1, chars2, linearray];
}
 
 
function diff_chars2lines(diff, linearray) {
// Rehydrate the text in a diff from a string of line hashes to real lines of text.
var chars, text;
for (var x=0; x<diff.length; x++) {
chars = diff[x][1];
text = '';
for (var y=0; y<chars.length; y++)
text += linearray[chars.charCodeAt(y)];
diff[x][1] = text;
}
}
 
 
function diff_map(text1, text2) {
// Explore the intersection points between the two texts.
var now = new Date();
var ms_end = now.getTime() + DIFF_TIMEOUT * 1000; // Don't run for too long.
var max = (text1.length + text2.length) / 2;
var v_map1 = new Array();
var v_map2 = new Array();
var v1 = new Object();
var v2 = new Object();
v1[1] = 0;
v2[1] = 0;
var x, y;
var footstep; // Used to track overlapping paths.
var footsteps = new Object();
var done = false;
var hasOwnProperty = !!(footsteps.hasOwnProperty);
// If the total number of characters is odd, then the front path will collide with the reverse path.
var front = (text1.length + text2.length) % 2;
for (var d=0; d<max; d++) {
now = new Date();
if (DIFF_TIMEOUT > 0 && now.getTime() > ms_end) // Timeout reached
return null;
 
// Walk the front path one step.
v_map1[d] = new Object();
for (var k=-d; k<=d; k+=2) {
if (k == -d || k != d && v1[k-1] < v1[k+1])
x = v1[k+1];
else
x = v1[k-1]+1;
y = x - k;
footstep = x+","+y;
if (front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined)))
done = true;
if (!front)
footsteps[footstep] = d;
while (!done && x < text1.length && y < text2.length && text1.charAt(x) == text2.charAt(y)) {
x++; y++;
footstep = x+","+y;
if (front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined)))
done = true;
if (!front)
footsteps[footstep] = d;
}
v1[k] = x;
v_map1[d][x+","+y] = true;
if (done) {
// Front path ran over reverse path.
v_map2 = v_map2.slice(0, footsteps[footstep]+1);
var a = diff_path1(v_map1, text1.substring(0, x), text2.substring(0, y));
return a.concat(diff_path2(v_map2, text1.substring(x), text2.substring(y)));
}
}
 
// Walk the reverse path one step.
v_map2[d] = new Object();
for (var k=-d; k<=d; k+=2) {
if (k == -d || k != d && v2[k-1] < v2[k+1])
x = v2[k+1];
else
x = v2[k-1]+1;
y = x - k;
footstep = (text1.length-x)+","+(text2.length-y);
if (!front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined)))
done = true;
if (front)
footsteps[footstep] = d;
while (!done && x < text1.length && y < text2.length && text1.charAt(text1.length-x-1) == text2.charAt(text2.length-y-1)) {
x++; y++;
footstep = (text1.length-x)+","+(text2.length-y);
if (!front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined)))
done = true;
if (front)
footsteps[footstep] = d;
}
v2[k] = x;
v_map2[d][x+","+y] = true;
if (done) {
// Reverse path ran over front path.
v_map1 = v_map1.slice(0, footsteps[footstep]+1);
var a = diff_path1(v_map1, text1.substring(0, text1.length-x), text2.substring(0, text2.length-y));
return a.concat(diff_path2(v_map2, text1.substring(text1.length-x), text2.substring(text2.length-y)));
}
}
}
// Number of diffs equals number of characters, no commonality at all.
return null;
}
 
 
function diff_path1(v_map, text1, text2) {
// Work from the middle back to the start to determine the path.
var path = [];
var x = text1.length;
var y = text2.length;
var last_op = null;
for (var d=v_map.length-2; d>=0; d--) {
while(1) {
if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty((x-1)+","+y) : (v_map[d][(x-1)+","+y] !== undefined)) {
x--;
if (last_op === -1)
path[0][1] = text1.charAt(x) + path[0][1];
else
path.unshift([-1, text1.charAt(x)]);
last_op = -1;
break;
} else if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty(x+","+(y-1)) : (v_map[d][x+","+(y-1)] !== undefined)) {
y--;
if (last_op === 1)
path[0][1] = text2.charAt(y) + path[0][1];
else
path.unshift([1, text2.charAt(y)]);
last_op = 1;
break;
} else {
x--;
y--;
//if (text1.charAt(x) != text2.charAt(y))
// return alert("No diagonal. Can't happen. (diff_path1)");
if (last_op === 0)
path[0][1] = text1.charAt(x) + path[0][1];
else
path.unshift([0, text1.charAt(x)]);
last_op = 0;
}
}
}
return path;
}
 
 
function diff_path2(v_map, text1, text2) {
// Work from the middle back to the end to determine the path.
var path = [];
var x = text1.length;
var y = text2.length;
var last_op = null;
for (var d=v_map.length-2; d>=0; d--) {
while(1) {
if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty((x-1)+","+y) : (v_map[d][(x-1)+","+y] !== undefined)) {
x--;
if (last_op === -1)
path[path.length-1][1] += text1.charAt(text1.length-x-1);
else
path.push([-1, text1.charAt(text1.length-x-1)]);
last_op = -1;
break;
} else if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty(x+","+(y-1)) : (v_map[d][x+","+(y-1)] !== undefined)) {
y--;
if (last_op === 1)
path[path.length-1][1] += text2.charAt(text2.length-y-1);
else
path.push([1, text2.charAt(text2.length-y-1)]);
last_op = 1;
break;
} else {
x--;
y--;
//if (text1.charAt(text1.length-x-1) != text2.charAt(text2.length-y-1))
// return alert("No diagonal. Can't happen. (diff_path2)");
if (last_op === 0)
path[path.length-1][1] += text1.charAt(text1.length-x-1);
else
path.push([0, text1.charAt(text1.length-x-1)]);
last_op = 0;
}
}
}
return path;
}
 
 
function diff_prefix(text1, text2) {
// Trim off common prefix
var pointermin = 0;
var pointermax = Math.min(text1.length, text2.length);
var pointermid = pointermax;
while(pointermin < pointermid) {
if (text1.substring(0, pointermid) == text2.substring(0, pointermid))
pointermin = pointermid;
else
pointermax = pointermid;
pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);
}
var commonprefix = text1.substring(0, pointermid);
text1 = text1.substring(pointermid);
text2 = text2.substring(pointermid);
return [text1, text2, commonprefix];
}
 
 
function diff_suffix(text1, text2) {
// Trim off common suffix
var pointermin = 0;
var pointermax = Math.min(text1.length, text2.length);
var pointermid = pointermax;
while(pointermin < pointermid) {
if (text1.substring(text1.length-pointermid) == text2.substring(text2.length-pointermid))
pointermin = pointermid;
else
pointermax = pointermid;
pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);
}
var commonsuffix = text1.substring(text1.length-pointermid);
text1 = text1.substring(0, text1.length-pointermid);
text2 = text2.substring(0, text2.length-pointermid);
return [text1, text2, commonsuffix];
}
 
 
function diff_halfmatch(text1, text2) {
// Do the two texts share a substring which is at least half the length of the longer text?
var longtext = text1.length > text2.length ? text1 : text2;
var shorttext = text1.length > text2.length ? text2 : text1;
if (longtext.length < 10 || shorttext.length < 1)
return null; // Pointless.
 
function diff_halfmatch_i(longtext, shorttext, i) {
// Start with a 1/4 length substring at position i as a seed.
var seed = longtext.substring(i, i+Math.floor(longtext.length/4));
var j = -1;
var best_common = '';
var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;
while ((j = shorttext.indexOf(seed, j+1)) != -1) {
var my_prefix = diff_prefix(longtext.substring(i), shorttext.substring(j));
var my_suffix = diff_suffix(longtext.substring(0, i), shorttext.substring(0, j));
if (best_common.length < (my_suffix[2] + my_prefix[2]).length) {
best_common = my_suffix[2] + my_prefix[2];
best_longtext_a = my_suffix[0];
best_longtext_b = my_prefix[0];
best_shorttext_a = my_suffix[1];
best_shorttext_b = my_prefix[1];
}
}
if (best_common.length >= longtext.length/2)
return [best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b, best_common];
else
return null;
}
 
// First check if the second quarter is the seed for a half-match.
var hm1 = diff_halfmatch_i(longtext, shorttext, Math.ceil(longtext.length/4));
// Check again based on the third quarter.
var hm2 = diff_halfmatch_i(longtext, shorttext, Math.ceil(longtext.length/2));
var hm;
if (!hm1 && !hm2)
return null;
else if (!hm2)
hm = hm1;
else if (!hm1)
hm = hm2;
else // Both matched. Select the longest.
hm = hm1[4].length > hm2[4].length ? hm1 : hm2;
 
// A half-match was found, sort out the return data.
if (text1.length > text2.length) {
var text1_a = hm[0];
var text1_b = hm[1];
var text2_a = hm[2];
var text2_b = hm[3];
} else {
var text2_a = hm[0];
var text2_b = hm[1];
var text1_a = hm[2];
var text1_b = hm[3];
}
var mid_common = hm[4];
return [text1_a, text1_b, text2_a, text2_b, mid_common];
}
 
 
function diff_cleanup_semantic(diff) {
// Reduce the number of edits by eliminating semantically trivial equalities.
var changes = false;
var equalities = []; // Stack of indices where equalities are found.
var lastequality = null; // Always equal to equalities[equalities.length-1][1]
var pointer = 0; // Index of current position.
var length_changes1 = 0; // Number of characters that changed prior to the equality.
var length_changes2 = 0; // Number of characters that changed after the equality.
while (pointer < diff.length) {
if (diff[pointer][0] == 0) { // equality found
equalities.push(pointer);
length_changes1 = length_changes2;
length_changes2 = 0;
lastequality = diff[pointer][1];
} else { // an insertion or deletion
length_changes2 += diff[pointer][1].length;
if (lastequality != null && (lastequality.length <= length_changes1) && (lastequality.length <= length_changes2)) {
//alert("Splitting: '"+lastequality+"'");
diff.splice(equalities[equalities.length-1], 0, [-1, lastequality]); // Duplicate record
diff[equalities[equalities.length-1]+1][0] = 1; // Change second copy to insert.
equalities.pop(); // Throw away the equality we just deleted;
equalities.pop(); // Throw away the previous equality;
pointer = equalities.length ? equalities[equalities.length-1] : -1;
length_changes1 = 0; // Reset the counters.
length_changes2 = 0;
lastequality = null;
changes = true;
}
}
pointer++;
}
 
if (changes)
diff_cleanup_merge(diff);
}
 
 
function diff_cleanup_efficiency(diff) {
// Reduce the number of edits by eliminating operationally trivial equalities.
var changes = false;
var equalities = []; // Stack of indices where equalities are found.
var lastequality = ''; // Always equal to equalities[equalities.length-1][1]
var pointer = 0; // Index of current position.
var pre_ins = false; // Is there an insertion operation before the last equality.
var pre_del = false; // Is there an deletion operation before the last equality.
var post_ins = false; // Is there an insertion operation after the last equality.
var post_del = false; // Is there an deletion operation after the last equality.
while (pointer < diff.length) {
if (diff[pointer][0] == 0) { // equality found
if (diff[pointer][1].length < DIFF_EDIT_COST && (post_ins || post_del)) {
// Candidate found.
equalities.push(pointer);
pre_ins = post_ins;
pre_del = post_del;
lastequality = diff[pointer][1];
} else {
// Not a candidate, and can never become one.
equalities = [];
lastequality = '';
}
post_ins = post_del = false;
} else { // an insertion or deletion
if (diff[pointer][0] == -1)
post_del = true;
else
post_ins = true;
// Five types to be split:
// <ins>A</ins><del>B</del>XY<ins>C</ins><del>D</del>
// <ins>A</ins>X<ins>C</ins><del>D</del>
// <ins>A</ins><del>B</del>X<ins>C</ins>
// <ins>A</del>X<ins>C</ins><del>D</del>
// <ins>A</ins><del>B</del>X<del>C</del>
if (lastequality && ((pre_ins && pre_del && post_ins && post_del) || ((lastequality.length < DIFF_EDIT_COST/2) && (pre_ins + pre_del + post_ins + post_del) == 3))) {
//alert("Splitting: '"+lastequality+"'");
diff.splice(equalities[equalities.length-1], 0, [-1, lastequality]); // Duplicate record
diff[equalities[equalities.length-1]+1][0] = 1; // Change second copy to insert.
equalities.pop(); // Throw away the equality we just deleted;
lastequality = '';
if (pre_ins && pre_del) {
// No changes made which could affect previous entry, keep going.
post_ins = post_del = true;
equalities = [];
} else {
equalities.pop(); // Throw away the previous equality;
pointer = equalities.length ? equalities[equalities.length-1] : -1;
post_ins = post_del = false;
}
changes = true;
}
}
pointer++;
}
 
if (changes)
diff_cleanup_merge(diff);
}
 
 
function diff_cleanup_merge(diff) {
// Reorder and merge like edit sections. Merge equalities.
// Any edit section can move as long as it doesn't cross an equality.
diff.push([0, '']); // Add a dummy entry at the end.
var pointer = 0;
var count_delete = 0;
var count_insert = 0;
var text_delete = '';
var text_insert = '';
var record_insert, record_delete;
var my_xfix;
while(pointer < diff.length) {
if (diff[pointer][0] == 1) {
count_insert++;
text_insert += diff[pointer][1];
pointer++;
} else if (diff[pointer][0] == -1) {
count_delete++;
text_delete += diff[pointer][1];
pointer++;
} else { // Upon reaching an equality, check for prior redundancies.
if (count_delete > 1 || count_insert > 1) {
if (count_delete > 1 && count_insert > 1) {
// Factor out any common prefixies.
my_xfix = diff_prefix(text_insert, text_delete);
if (my_xfix[2] != '') {
if ((pointer - count_delete - count_insert) > 0 && diff[pointer - count_delete - count_insert - 1][0] == 0) {
text_insert = my_xfix[0];
text_delete = my_xfix[1];
diff[pointer - count_delete - count_insert - 1][1] += my_xfix[2];
}
}
// Factor out any common suffixies.
my_xfix = diff_suffix(text_insert, text_delete);
if (my_xfix[2] != '') {
text_insert = my_xfix[0];
text_delete = my_xfix[1];
diff[pointer][1] = my_xfix[2] + diff[pointer][1];
}
}
// Delete the offending records and add the merged ones.
if (count_delete == 0)
diff.splice(pointer - count_delete - count_insert, count_delete + count_insert, [1, text_insert]);
else if (count_insert == 0)
diff.splice(pointer - count_delete - count_insert, count_delete + count_insert, [-1, text_delete]);
else
diff.splice(pointer - count_delete - count_insert, count_delete + count_insert, [-1, text_delete], [1, text_insert]);
pointer = pointer - count_delete - count_insert + (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;
} else if (pointer != 0 && diff[pointer-1][0] == 0) {
// Merge this equality with the previous one.
diff[pointer-1][1] += diff[pointer][1];
diff.splice(pointer, 1);
} else {
pointer++;
}
count_insert = 0;
count_delete = 0;
text_delete = '';
text_insert = '';
}
}
if (diff[diff.length-1][1] == '')
diff.pop(); // Remove the dummy entry at the end.
}
 
 
function diff_addindex(diff) {
// Add an index to each tuple, represents where the tuple is located in text2.
// e.g. [[-1, 'h', 0], [1, 'c', 0], [0, 'at', 1]]
var i = 0;
for (var x=0; x<diff.length; x++) {
diff[x].push(i);
if (diff[x][0] != -1)
i += diff[x][1].length;
}
}
 
 
function diff_xindex(diff, loc) {
// loc is a location in text1, compute and return the equivalent location in text2.
// e.g. "The cat" vs "The big cat", 1->1, 5->8
var chars1 = 0;
var chars2 = 0;
var last_chars1 = 0;
var last_chars2 = 0;
for (var x=0; x<diff.length; x++) {
if (diff[x][0] != 1) // Equality or deletion.
chars1 += diff[x][1].length;
if (diff[x][0] != -1) // Equality or insertion.
chars2 += diff[x][1].length;
if (chars1 > loc) // Overshot the location.
break;
last_chars1 = chars1;
last_chars2 = chars2;
}
if (diff.length != x && diff[x][0] == -1) // The location was deleted.
return last_chars2;
// Add the remaining character length.
return last_chars2 + (loc - last_chars1);
}
 
 
function diff_prettyhtml(diff) {
// Convert a diff array into a pretty HTML report.
diff_addindex(diff);
var html = '';
for (var x=0; x<diff.length; x++) {
var m = diff[x][0]; // Mode (-1=delete, 0=copy, 1=add)
var t = diff[x][1]; // Text of change.
var i = diff[x][2]; // Index of change.
t = t.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
t = t.replace(/\n/g, "&para;<BR>");
if (m == -1)
html += "<DEL STYLE='background:#FFE6E6;' TITLE='i="+i+"'>"+t+"</DEL>";
else if (m == 1)
html += "<INS STYLE='background:#E6FFE6;' TITLE='i="+i+"'>"+t+"</INS>";
else
html += "<SPAN TITLE='i="+i+"'>"+t+"</SPAN>";
}
return html;
}
 
 
//////////////////////////////////////////////////////////////////////
// Match //
//////////////////////////////////////////////////////////////////////
 
 
function match_getmaxbits() {
// Compute the number of bits in an int.
// The normal answer for JavaScript is 32.
var maxbits = 0;
var oldi = 1;
var newi = 2;
while (oldi != newi) {
maxbits++;
oldi = newi;
newi = newi << 1;
}
return maxbits;
}
var MATCH_MAXBITS = match_getmaxbits();
 
 
function match_main(text, pattern, loc) {
// Locate the best instance of 'pattern' in 'text' near 'loc'.
loc = Math.max(0, Math.min(loc, text.length-pattern.length));
if (text == pattern) {
// Shortcut (potentially not guaranteed by the algorithm)
return 0;
} else if (text.length == 0) {
// Nothing to match.
return null;
} else if (text.substring(loc, loc + pattern.length) == pattern) {
// Perfect match at the perfect spot! (Includes case of null pattern)
return loc;
} else {
// Do a fuzzy compare.
var match = match_bitap(text, pattern, loc);
return match;
}
}
 
 
function match_bitap(text, pattern, loc) {
// Locate the best instance of 'pattern' in 'text' near 'loc' using the Bitap algorithm.
if (pattern.length > MATCH_MAXBITS)
return alert("Pattern too long for this browser.");
 
// Initialise the alphabet.
var s = match_alphabet(pattern);
 
var score_text_length = text.length;
// Coerce the text length between reasonable maximums and minimums.
score_text_length = Math.max(score_text_length, MATCH_MINLENGTH);
score_text_length = Math.min(score_text_length, MATCH_MAXLENGTH);
 
function match_bitap_score (e, x) {
// Compute and return the score for a match with e errors and x location.
var d = Math.abs(loc-x);
return (e / pattern.length / MATCH_BALANCE) + (d / score_text_length / (1.0 - MATCH_BALANCE));
}
 
// Highest score beyond which we give up.
var score_threshold = MATCH_THRESHOLD;
// Is there a nearby exact match? (speedup)
var best_loc = text.indexOf(pattern, loc);
if (best_loc != -1)
score_threshold = Math.min(match_bitap_score(0, best_loc), score_threshold);
// What about in the other direction? (speedup)
best_loc = text.lastIndexOf(pattern, loc+pattern.length);
if (best_loc != -1)
score_threshold = Math.min(match_bitap_score(0, best_loc), score_threshold);
 
// Initialise the bit arrays.
var r = Array();
var d = -1;
var matchmask = Math.pow(2, pattern.length-1);
best_loc = null;
 
var bin_min, bin_mid;
var bin_max = Math.max(loc+loc, text.length);
var last_rd;
for (var d=0; d<pattern.length; d++) {
// Scan for the best match; each iteration allows for one more error.
var rd = Array(text.length);
 
// Run a binary search to determine how far from 'loc' we can stray at this error level.
bin_min = loc;
bin_mid = bin_max;
while(bin_min < bin_mid) {
if (match_bitap_score(d, bin_mid) < score_threshold)
bin_min = bin_mid;
else
bin_max = bin_mid;
bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min);
}
bin_max = bin_mid; // Use the result from this iteration as the maximum for the next.
var start = Math.max(0, loc - (bin_mid - loc) - 1);
var finish = Math.min(text.length-1, pattern.length + bin_mid);
 
if (text.charAt(finish) == pattern.charAt(pattern.length-1))
rd[finish] = Math.pow(2, d+1)-1;
else
rd[finish] = Math.pow(2, d)-1;
for (var j=finish-1; j>=start; j--) {
// The alphabet (s) is a sparse hash, so the following lines generate warnings.
if (d == 0) // First pass: exact match.
rd[j] = ((rd[j+1] << 1) | 1) & s[text.charAt(j)];
else // Subsequent passes: fuzzy match.
rd[j] = ((rd[j+1] << 1) | 1) & s[text.charAt(j)] | ((last_rd[j+1] << 1) | 1) | ((last_rd[j] << 1) | 1) | last_rd[j+1];
if (rd[j] & matchmask) {
var score = match_bitap_score(d, j);
// This match will almost certainly be better than any existing match. But check anyway.
if (score <= score_threshold) {
// Told you so.
score_threshold = score;
best_loc = j;
if (j > loc) {
// When passing loc, don't exceed our current distance from loc.
start = Math.max(0, loc - (j - loc));
} else {
// Already passed loc, downhill from here on in.
break;
}
}
}
}
if (match_bitap_score(d+1, loc) > score_threshold) // No hope for a (better) match at greater error levels.
break;
last_rd = rd;
}
return best_loc;
}
 
 
function match_alphabet(pattern) {
// Initialise the alphabet for the Bitap algorithm.
var s = Object();
for (var i=0; i<pattern.length; i++)
s[pattern.charAt(i)] = 0;
for (var i=0; i<pattern.length; i++)
s[pattern.charAt(i)] |= Math.pow(2, pattern.length-i-1);
return s;
}
 
 
//////////////////////////////////////////////////////////////////////
// Patch //
//////////////////////////////////////////////////////////////////////
 
 
function patch_obj() {
// Constructor for a patch object.
this.diffs = [];
this.start1 = null;
this.start2 = null;
this.length1 = 0;
this.length2 = 0;
 
this.toString = function() {
// Emmulate GNU diff's format.
// Header: @@ -382,8 +481,9 @@
// Indicies are printed as 1-based, not 0-based.
var coords1, coords2;
if (this.length1 == 0)
coords1 = this.start1+",0";
else if (this.length1 == 1)
coords1 = this.start1+1;
else
coords1 = (this.start1+1)+","+this.length1;
if (this.length2 == 0)
coords2 = this.start2+",0";
else if (this.length2 == 1)
coords2 = this.start2+1;
else
coords2 = (this.start2+1)+","+this.length2;
var txt = "@@ -"+coords1+" +"+coords2+" @@\n";
// Escape the body of the patch with %xx notation.
for (var x=0; x<this.diffs.length; x++)
txt += ("- +".charAt(this.diffs[x][0]+1)) + encodeURI(this.diffs[x][1]) + "\n";
return txt.replace(/%20/g, ' ');
}
 
this.text1 = function() {
// Compute and return the source text (all equalities and deletions).
var txt = '';
for (var x=0; x<this.diffs.length; x++)
if (this.diffs[x][0] == 0 || this.diffs[x][0] == -1)
txt += this.diffs[x][1];
return txt;
}
 
this.text2 = function() {
// Compute and return the destination text (all equalities and insertions).
var txt = '';
for (var x=0; x<this.diffs.length; x++)
if (this.diffs[x][0] == 0 || this.diffs[x][0] == 1)
txt += this.diffs[x][1];
return txt;
}
}
 
 
function patch_addcontext(patch, text) {
var pattern = text.substring(patch.start2, patch.start2+patch.length1);
var padding = 0;
// Increase the context until we're unique (but don't let the pattern expand beyond MATCH_MAXBITS).
while (text.indexOf(pattern) != text.lastIndexOf(pattern) && pattern.length < MATCH_MAXBITS-PATCH_MARGIN-PATCH_MARGIN) {
padding += PATCH_MARGIN;
pattern = text.substring(patch.start2 - padding, patch.start2+patch.length1 + padding);
}
// Add one chunk for good luck.
padding += PATCH_MARGIN;
// Add the prefix.
var prefix = text.substring(patch.start2 - padding, patch.start2);
if (prefix != '')
patch.diffs.unshift([0, prefix]);
// Add the suffix
var suffix = text.substring(patch.start2+patch.length1, patch.start2+patch.length1 + padding);
if (suffix != '')
patch.diffs.push([0, suffix]);
 
// Roll back the start points.
patch.start1 -= prefix.length;
patch.start2 -= prefix.length;
// Extend the lengths.
patch.length1 += prefix.length + suffix.length;
patch.length2 += prefix.length + suffix.length;
}
 
 
function patch_make(text1, text2, diff) {
// Compute a list of patches to turn text1 into text2.
// Use diff if provided, otherwise compute it ourselves.
if (typeof diff == 'undefined') {
diff = diff_main(text1, text2, true);
if (diff.length > 2) {
diff_cleanup_semantic(diff);
diff_cleanup_efficiency(diff);
}
}
if (diff.length == 0)
return []; // Get rid of the null case.
var patches = [];
var patch = new patch_obj();
var char_count1 = 0; // Number of characters into the text1 string.
var char_count2 = 0; // Number of characters into the text2 string.
var last_type = null;
var prepatch_text = text1; // Recreate the patches to determine context info.
var postpatch_text = text1;
for (var x=0; x<diff.length; x++) {
var diff_type = diff[x][0];
var diff_text = diff[x][1];
 
if (patch.diffs.length == 0 && diff_type != 0) {
// A new patch starts here.
patch.start1 = char_count1;
patch.start2 = char_count2;
}
 
if (diff_type == 1) {
// Insertion
patch.diffs.push(diff[x]);
patch.length2 += diff_text.length;
postpatch_text = postpatch_text.substring(0, char_count2) + diff_text + postpatch_text.substring(char_count2);
} else if (diff_type == -1) {
// Deletion.
patch.length1 += diff_text.length;
patch.diffs.push(diff[x]);
postpatch_text = postpatch_text.substring(0, char_count2) + postpatch_text.substring(char_count2 + diff_text.length);
} else if (diff_type == 0 && diff_text.length <= 2*PATCH_MARGIN && patch.diffs.length != 0 && diff.length != x+1) {
// Small equality inside a patch.
patch.diffs.push(diff[x]);
patch.length1 += diff_text.length;
patch.length2 += diff_text.length;
}
 
last_type = diff_type;
if (diff_type == 0 && diff_text.length >= 2*PATCH_MARGIN) {
// Time for a new patch.
if (patch.diffs.length != 0) {
patch_addcontext(patch, prepatch_text);
patches.push(patch);
var patch = new patch_obj();
last_type = null;
prepatch_text = postpatch_text;
}
}
 
// Update the current character count.
if (diff_type != 1)
char_count1 += diff_text.length;
if (diff_type != -1)
char_count2 += diff_text.length;
}
// Pick up the leftover patch if not empty.
if (patch.diffs.length != 0) {
patch_addcontext(patch, prepatch_text);
patches.push(patch);
}
 
return patches;
}
 
 
function patch_apply(patches, text) {
// Merge a set of patches onto the text.
// Return a patched text, as well as a list of true/false values indicating which patches were applied.
patch_splitmax(patches);
var results = [];
var delta = 0;
var expected_loc, start_loc;
var text1, text2;
var diff, mod, index1, index2;
for (var x=0; x<patches.length; x++) {
expected_loc = patches[x].start2 + delta;
text1 = patches[x].text1();
start_loc = match_main(text, text1, expected_loc);
if (start_loc == null) {
// No match found. :(
results.push(false);
} else {
// Found a match. :)
results.push(true);
delta = start_loc - expected_loc;
text2 = text.substring(start_loc, start_loc + text1.length);
if (text1 == text2) {
// Perfect match, just shove the replacement text in.
text = text.substring(0, start_loc) + patches[x].text2() + text.substring(start_loc + text1.length);
} else {
// Imperfect match. Run a diff to get a framework of equivalent indicies.
diff = diff_main(text1, text2, false);
index1 = 0;
for (var y=0; y<patches[x].diffs.length; y++) {
mod = patches[x].diffs[y];
if (mod[0] != 0)
index2 = diff_xindex(diff, index1);
if (mod[0] == 1) // Insertion
text = text.substring(0, start_loc + index2) + mod[1] + text.substring(start_loc + index2);
else if (mod[0] == -1) // Deletion
text = text.substring(0, start_loc + index2) + text.substring(start_loc + diff_xindex(diff, index1 + mod[1].length));
if (mod[0] != -1)
index1 += mod[1].length;
}
}
}
}
return [text, results];
}
 
 
function patch_splitmax(patches) {
// Look through the patches and break up any which are longer than the maximum limit of the match algorithm.
var bigpatch, patch, patch_size, start1, start2, diff_type, diff_text, precontext, postcontext, empty;
for (var x=0; x<patches.length; x++) {
if (patches[x].length1 > MATCH_MAXBITS) {
bigpatch = patches[x];
// Remove the big old patch.
patches.splice(x, 1);
patch_size = MATCH_MAXBITS;
start1 = bigpatch.start1;
start2 = bigpatch.start2;
precontext = '';
while (bigpatch.diffs.length != 0) {
// Create one of several smaller patches.
patch = new patch_obj();
empty = true;
patch.start1 = start1 - precontext.length;
patch.start2 = start2 - precontext.length;
if (precontext != '') {
patch.length1 = patch.length2 = precontext.length;
patch.diffs.push([0, precontext]);
}
while (bigpatch.diffs.length != 0 && patch.length1 < patch_size - PATCH_MARGIN) {
diff_type = bigpatch.diffs[0][0];
diff_text = bigpatch.diffs[0][1];
if (diff_type == 1) {
// Insertions are harmless.
patch.length2 += diff_text.length;
start2 += diff_text.length;
patch.diffs.push(bigpatch.diffs.shift());
empty = false;
} else {
// Deletion or equality. Only take as much as we can stomach.
diff_text = diff_text.substring(0, patch_size - patch.length1 - PATCH_MARGIN);
patch.length1 += diff_text.length;
start1 += diff_text.length;
if (diff_type == 0) {
patch.length2 += diff_text.length;
start2 += diff_text.length;
} else {
empty = false;
}
patch.diffs.push([diff_type, diff_text]);
if (diff_text == bigpatch.diffs[0][1])
bigpatch.diffs.shift();
else
bigpatch.diffs[0][1] = bigpatch.diffs[0][1].substring(diff_text.length);
}
}
// Compute the head context for the next patch.
precontext = patch.text2();
precontext = precontext.substring(precontext.length - PATCH_MARGIN);
// Append the end context for this patch.
postcontext = bigpatch.text1().substring(0, PATCH_MARGIN);
if (postcontext != '') {
patch.length1 += postcontext.length;
patch.length2 += postcontext.length;
if (patch.diffs.length > 0 && patch.diffs[patch.diffs.length-1][0] == 0)
patch.diffs[patch.diffs.length-1][1] += postcontext;
else
patch.diffs.push([0, postcontext]);
}
if (!empty)
patches.splice(x++, 0, patch);
}
}
}
}
 
 
function patch_totext(patches) {
// Take a list of patches and return a textual representation.
var text = '';
for (var x=0; x<patches.length; x++)
text += patches[x];
return text;
}
 
 
function patch_fromtext(text) {
// Take a textual representation of patches and return a list of patch objects.
var patches = [];
text = text.split('\n');
var patch, m, chars1, chars2, sign, line;
while (text.length != 0) {
m = text[0].match(/^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/);
if (!m)
return alert("Invalid patch string:\n"+text[0]);
patch = new patch_obj();
patches.push(patch);
patch.start1 = parseInt(m[1]);
if (m[2] == '') {
patch.start1--;
patch.length1 = 1;
} else if (m[2] == '0') {
patch.length1 = 0;
} else {
patch.start1--;
patch.length1 = parseInt(m[2]);
}
 
patch.start2 = parseInt(m[3]);
if (m[4] == '') {
patch.start2--;
patch.length2 = 1;
} else if (m[4] == '0') {
patch.length2 = 0;
} else {
patch.start2--;
patch.length2 = parseInt(m[4]);
}
text.shift();
 
while (text.length != 0) {
sign = text[0].charAt(0);
line = decodeURIComponent(text[0].substring(1));
if (sign == '-') {
// Deletion.
patch.diffs.push([-1, line]);
} else if (sign == '+') {
// Insertion.
patch.diffs.push([1, line]);
} else if (sign == ' ') {
// Minor equality.
patch.diffs.push([0, line]);
} else if (sign == '@') {
// Start of next patch.
break;
} else if (sign == '') {
// Blank line? Whatever.
} else {
// WTF?
return alert("Invalid patch mode: '"+sign+"'\n"+line);
}
text.shift();
}
}
return patches;
}
 
// EOF
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/devkit/langs/en.js
New file
0,0 → 1,23
// UK lang variables
 
tinyMCE.addToLang('devkit',{
title : 'TinyMCE Development Kit',
info_tab : 'Info',
settings_tab : 'Settings',
log_tab : 'Log',
content_tab : 'Content',
command_states_tab : 'Commands',
undo_redo_tab : 'Undo/Redo',
misc_tab : 'Misc',
filter : 'Filter:',
clear_log : 'Clear log',
refresh : 'Refresh',
info_help : 'Press Refresh to view info.',
settings_help : 'Press Refresh to display the settings array for each TinyMCE_Control instance.',
content_help : 'Press Refresh to display the raw and cleaned HTML content for each TinyMCE_Control instance.',
command_states_help : 'Press Refresh to display the current command states from inst.queryCommandState. This list will also mark unsupported commands.',
undo_redo_help : 'Press Refresh to display the global and instance undo/redo levels.',
misc_help : 'Here are various tools for debugging and development purposes.',
debug_events : 'Debug events',
undo_diff : 'Diff undo levels'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/devkit/images/flip_up.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/devkit/images/flip_up.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/devkit/images/flip_down.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/devkit/images/flip_down.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/devkit/editor_plugin_src.js
New file
0,0 → 1,325
/**
* $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
tinyMCE.importPluginLanguagePack('devkit');
 
var TinyMCE_DevKitPlugin = {
_logFilter : '\\[(importCSS|execCommand|execInstanceCommand|debug)\\]',
_logPadding : '',
_startTime : null,
_benchMark : false,
_winLoaded : false,
_isDebugEvents : false,
 
getInfo : function() {
return {
longname : 'Development Kit',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/devkit',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
initInstance : function(inst) {
this._setup();
},
 
_setup : function() {
if (this._loaded)
return;
 
this._loaded = true;
 
// Register a document reference for more easy access in the FF DOM inspector
document.___TinyMCE = tinyMCE;
 
// Setup devkit by settings
this._logFilter = tinyMCE.getParam('devkit_log_filter', this._logFilter);
this._benchMark = tinyMCE.getParam('devkit_bench_mark', false);
 
var ifr = document.createElement('iframe');
 
ifr.setAttribute("id", "devkit");
ifr.setAttribute("frameBorder", "0");
ifr.setAttribute("src", tinyMCE.baseURL + '/plugins/devkit/devkit.htm');
 
document.body.appendChild(ifr);
 
// Workaround for strange IE reload bug
//if (tinyMCE.isRealIE)
// document.getElementById('devkit').outerHTML = document.getElementById('devkit').outerHTML;
 
tinyMCE.importCSS(document, tinyMCE.baseURL + '/plugins/devkit/css/devkit_ui.css');
},
 
_start : function() {
this._logPadding += '\u00a0';
 
return new Date().getTime();
},
 
_end : function(st) {
if (this._logPadding.length > 0)
this._logPadding = this._logPadding.substring(0, this._logPadding.length - 1);
 
if (this._benchMark)
this._log("benchmark", "Execution time: " + (new Date().getTime() - st));
},
 
_log : function(t) {
var m, a, i, e = document.getElementById('devkit'), now = new Date().getTime();
 
if (!this._startTime)
this._startTime = now;
 
m = (this._logPadding.length > 1 ? this._logPadding : '') + '[' + (now - this._startTime) + '] [' + t + '] ';
 
a = this._log.arguments;
for (i=1; i<a.length; i++) {
if (typeof(a[i]) == 'undefined')
continue;
 
if (i > 1)
m += ', ';
 
m += a[i];
}
 
if (!new RegExp(this._logFilter, 'gi').test(m)) {
if (this._logPadding.length > 0)
this._logPadding = this._logPadding.substring(0, this._logPadding.length - 1);
 
return;
}
 
if (!this._winLoaded)
tinyMCE.log[tinyMCE.log.length] = m;
else
e.contentWindow.debug(m);
},
 
_debugEvents : function(s) {
var i, ld, inst, n, ev = ['CheckboxStateChange','DOMAttrModified','DOMMenuItemActive',
'DOMMenuItemInactive','DOMMouseScroll','DOMNodeInserted','DOMNodeRemoved',
'RadioStateChange','blur','broadcast','change','click','close','command',
'commandupdate','contextmenu','dblclick','dragdrop','dragenter','dragexit',
'draggesture','dragover','focus','input','keydown','keypress','keyup','load',
'mousedown','mouseout','mouseover','mouseup','overflow','overflowchanged','popuphidden',
'popuphiding','popupshowing','popupshown','select','syncfrompreference','synctopreference',
'underflow','unload','abort','activate','afterprint','afterupdate','beforeactivate',
'beforecopy','beforecut','beforedeactivate','beforeeditfocus','beforepaste','beforeprint',
'beforeunload','beforeupdate','bounce','cellchange','controlselect','copy','cut',
'dataavailable','datasetchanged','datasetcomplete','deactivate','dragend','dragleave',
'dragstart','drop','error','errorupdate','filterchange','finish','focusin','focusout',
'help','layoutcomplete','losecapture','mouseenter','mouseleave','mousewheel',
'move','moveend','movestart','paste','propertychange','readystatechange','reset','resize',
'resizeend','resizestart','rowenter','rowexit','rowsdelete','rowsinserted','scroll',
'selectionchange','selectstart','start','stop','submit'];
// mousemove
 
if (TinyMCE_DevKitPlugin._isDebugEvents == s)
return;
 
TinyMCE_DevKitPlugin._isDebugEvents = s;
 
for (n in tinyMCE.instances) {
inst = tinyMCE.instances[n];
 
if (!tinyMCE.isInstance(inst) || inst.getDoc() == ld)
continue;
 
ld = inst.getDoc();
 
for (i=0; i<ev.length; i++) {
if (s)
tinyMCE.addEvent(ld, ev[i], TinyMCE_DevKitPlugin._debugEvent);
else
tinyMCE.removeEvent(ld, ev[i], TinyMCE_DevKitPlugin._debugEvent);
}
}
},
 
_debugEvent : function(e) {
var t;
 
e = e ? e : tinyMCE.selectedInstance.getWin().event;
t = e.srcElement ? e.srcElement : e.target;
 
tinyMCE.debug(e.type, t ? t.nodeName : '');
},
 
_serialize : function(o) {
var i, v, s = TinyMCE_DevKitPlugin._serialize;
 
if (o == null)
return 'null';
 
switch (typeof o) {
case 'string':
v = '\bb\tt\nn\ff\rr\""\'\'\\\\';
 
return '"' + o.replace(new RegExp('([\u0080-\uFFFF\\x00-\\x1f\\"])', 'g'), function(a, b) {
i = v.indexOf(b);
 
if (i+1)
return '\\' + v.charAt(i + 1);
 
a = b.charCodeAt().toString(16);
 
return '\\u' + '0000'.substring(a.length) + a;
}) + '"';
 
case 'object':
if (o instanceof Array) {
for (i=0, v = '['; i<o.length; i++)
v += (i > 0 ? ',' : '') + s(o[i]);
 
return v + ']';
}
 
v = '{';
 
for (i in o)
v += typeof o[i] != 'function' ? (v.length > 1 ? ',"' : '"') + i + '":' + s(o[i]) : '';
 
return v + '}';
}
 
return '' + o;
}
};
 
// Patch and piggy back functions
tinyMCE.__debug = tinyMCE.debug;
tinyMCE.debug = function() {
var a, i, m = '', now = new Date().getTime(), start = TinyMCE_DevKitPlugin._startTime;
 
if (!start)
TinyMCE_DevKitPlugin._startTime = start = now;
 
a = this.debug.arguments;
for (i=0; i<a.length; i++) {
if (typeof(a[i]) == 'undefined')
continue;
 
if (i > 0)
m += ', ';
 
m += a[i];
}
 
TinyMCE_DevKitPlugin._log('debug', m);
};
 
tinyMCE.dump = function(o) {
tinyMCE.debug(TinyMCE_DevKitPlugin._serialize(o));
};
 
tinyMCE.sleep = function(t) {
var s = new Date().getTime(), b;
 
while (new Date().getTime() - s < t) b=1;
};
 
tinyMCE.__execCommand = tinyMCE.execCommand;
tinyMCE.execCommand = function(command, user_interface, value) {
var r, st, dk = TinyMCE_DevKitPlugin;
 
st = dk._start();
dk._log('execCommand', command, user_interface, value);
r = tinyMCE.__execCommand(command, user_interface, value);
dk._end(st);
 
return r;
};
 
tinyMCE.__execInstanceCommand = tinyMCE.execInstanceCommand;
tinyMCE.execInstanceCommand = function(editor_id, command, user_interface, value, focus) {
var r, st, dk = TinyMCE_DevKitPlugin;
 
st = dk._start();
dk._log('execInstanceCommand', editor_id, command, user_interface, value);
r = tinyMCE.__execInstanceCommand(editor_id, command, user_interface, value);
dk._end(st);
 
return r;
};
 
TinyMCE_Engine.prototype.__handleEvent = TinyMCE_Engine.prototype.handleEvent;
TinyMCE_Engine.prototype.handleEvent = function(e) {
var r, st, dk = TinyMCE_DevKitPlugin;
 
st = dk._start();
dk._log('handleEvent', e.type);
r = tinyMCE.__handleEvent(e);
dk._end(st);
 
return r;
};
 
tinyMCE.__importCSS = tinyMCE.importCSS;
tinyMCE.importCSS = function(doc, css) {
var r, st, dk = TinyMCE_DevKitPlugin;
 
st = dk._start();
dk._log('importCSS', doc, css);
r = tinyMCE.__importCSS(doc, css);
dk._end(st);
 
return r;
};
 
tinyMCE.__triggerNodeChange = tinyMCE.triggerNodeChange;
tinyMCE.triggerNodeChange = function(focus, setup_content) {
var r, st, dk = TinyMCE_DevKitPlugin;
 
st = dk._start();
dk._log('triggerNodeChange', focus, setup_content);
r = tinyMCE.__triggerNodeChange(focus, setup_content);
dk._end(st);
 
return r;
};
 
tinyMCE.__dispatchCallback = tinyMCE.dispatchCallback;
tinyMCE.dispatchCallback = function(i, p, n) {
var r, st, dk = TinyMCE_DevKitPlugin;
 
st = dk._start();
dk._log('dispatchCallback', i, p, n);
r = tinyMCE.__dispatchCallback(i, p, n);
dk._end(st);
 
return r;
};
 
tinyMCE.__executeCallback = tinyMCE.executeCallback;
tinyMCE.executeCallback = function(i, p, n) {
var r, st, dk = TinyMCE_DevKitPlugin;
 
st = dk._start();
dk._log('executeCallback', i, p, n);
r = tinyMCE.__executeCallback(i, p, n);
dk._end(st);
 
return r;
};
 
tinyMCE.__execCommandCallback = tinyMCE.execCommandCallback;
tinyMCE.execCommandCallback = function(i, p, n) {
var r, st, dk = TinyMCE_DevKitPlugin;
 
st = dk._start();
dk._log('execCommandCallback', i, p, n);
r = tinyMCE.__execCommandCallback(i, p, n);
dk._end(st);
 
return r;
};
 
tinyMCE.addPlugin("devkit", TinyMCE_DevKitPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/devkit/css/devkit_ui.css
New file
0,0 → 1,15
#devkit {
position: absolute;
top: -385px; right: 0;
width: 640px; height: 390px;
border: 1px solid black;
z-index: 10000;
}
 
.devkitup {
top: -385px !important;
}
 
.devkitdown {
top: 0 !important;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/devkit/css/devkit.css
New file
0,0 → 1,117
body {
overflow: hidden;
}
 
h1 {
font-size: 14px;
margin: 0 0 10px 0;
}
 
h2 {
font-size: 12px;
margin: 3px 0 3px 0;
}
 
h3 {
font-size: 11px;
margin: 3px 0 3px 0;
}
 
#log {
font-family: Verdana;
border: 1px solid gray;
width: 100%; height: 240px;
overflow: scroll;
white-space: nowrap;
}
 
#log span {
display: block;
}
 
#log span.msg {
float: left;
}
 
#log span.time {
float: left;
}
 
#log br {
clear: both;
}
 
#logfilter {
width: 350px;
}
 
#logenabled {
border: 0;
}
 
#settings_panel span, #info_panel span, #content_panel span, #command_states_panel span, #undo_redo_panel span {
display: block;
margin: 5px 0 5px 0;
}
 
div.data {
width: 100%; height: 240px;
overflow: scroll;
border: 1px solid gray;
}
 
#misc_panel div.data {
height: 270px;
}
 
.data input {
width: 265px;
border: 0;
}
 
.data h2 {
margin-left: 5px;
}
 
.data h3 {
margin-left: 7px;
}
 
.data div {
margin-left: 7px;
}
 
.data table {
margin: 0 0 15px 15px;
}
 
.data p {
margin: 0; padding: 0;
margin-top: 5px;
margin-left: 5px;
}
 
table, td {
border: 1px solid gray;
border-collapse: collapse;
}
 
#flip {
position: absolute;
left: 295; top: 384px;
}
 
.bspec {
color: gray;
}
 
.dep {
color: #880000;
}
 
.col1 {
width: 265px;
}
 
div.undodata {
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/devkit/devkit.htm
New file
0,0 → 1,140
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_devkit_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/devkit.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/diff.js"></script>
<link href="css/devkit.css" rel="stylesheet" type="text/css" />
<base target="_self" />
</head>
<body id="devkit" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<form action="#">
<h1>{$lang_devkit_title}</h1>
 
<div class="tabs">
<ul>
<li id="log_tab" class="current"><span><a href="javascript:mcTabs.displayTab('log_tab','log_panel');" onmousedown="return false;">{$lang_devkit_log_tab}</a></span></li>
<li id="info_tab"><span><a href="javascript:mcTabs.displayTab('info_tab','info_panel');" onmousedown="return false;">{$lang_devkit_info_tab}</a></span></li>
<li id="settings_tab"><span><a href="javascript:mcTabs.displayTab('settings_tab','settings_panel');" onmousedown="return false;">{$lang_devkit_settings_tab}</a></span></li>
<li id="content_tab"><span><a href="javascript:mcTabs.displayTab('content_tab','content_panel');" onmousedown="return false;">{$lang_devkit_content_tab}</a></span></li>
<!-- <li id="command_states_tab"><span><a href="javascript:mcTabs.displayTab('command_states_tab','command_states_panel');" onmousedown="return false;">{$lang_devkit_command_states_tab}</a></span></li> -->
<li id="undo_redo_tab"><span><a href="javascript:mcTabs.displayTab('undo_redo_tab','undo_redo_panel');" onmousedown="return false;">{$lang_devkit_undo_redo_tab}</a></span></li>
<li id="misc_tab"><span><a href="javascript:mcTabs.displayTab('misc_tab','misc_panel');" onmousedown="return false;">{$lang_devkit_misc_tab}</a></span></li>
</ul>
</div>
 
<div class="panel_wrapper">
<div id="log_panel" class="panel current">
<fieldset>
<legend>{$lang_devkit_log_tab}</legend>
 
<div style="float: left">
<label>{$lang_devkit_filter} </label><input type="text" id="logfilter" name="logfilter" value="" onchange="changeFilter(this.value);" />
</div>
 
<div style="float: left">
<input type="checkbox" id="logenabled" name="logenabled" value="true" checked="checked" onclick="toggleLog(this.checked);" />
</div>
 
<div style="float: right">
<a href="javascript:clearLog();">[{$lang_devkit_clear_log}]</a>
</div>
 
<br style="clear: both" />
 
<div id="log">
</div>
 
<input type="checkbox" id="debug_events" name="debug_events" class="checkbox" onclick="toggleDebugEvents(this.checked);" /><label for="debug_events" onclick="toggleDebugEvents(this.form.debug_events.checked);">{$lang_devkit_debug_events}</label>
</fieldset>
</div>
 
<div id="info_panel" class="panel">
<fieldset>
<legend>{$lang_devkit_info_tab}</legend>
 
<span><a href="javascript:renderInfo();">[{$lang_devkit_refresh}]</a></span>
 
<div id="info" class="data">
<p>{$lang_devkit_info_help}</p>
</div>
</fieldset>
</div>
 
<div id="settings_panel" class="panel">
<fieldset>
<legend>{$lang_devkit_settings_tab}</legend>
 
<span><a href="javascript:renderSettings();">[{$lang_devkit_refresh}]</a></span>
 
<div id="settings" class="data">
<p>{$lang_devkit_settings_help}</p>
</div>
</fieldset>
</div>
 
<div id="content_panel" class="panel">
<fieldset>
<legend>{$lang_devkit_content_tab}</legend>
 
<span><a href="javascript:renderContent();">[{$lang_devkit_refresh}]</a></span>
 
<div id="content" class="data">
<p>{$lang_devkit_content_help}</p>
</div>
</fieldset>
</div>
 
<div id="command_states_panel" class="panel">
<fieldset>
<legend>{$lang_devkit_command_states_tab}</legend>
 
<span><a href="javascript:renderCommandStates();">[{$lang_devkit_refresh}]</a></span>
 
<div id="command_states" class="data">
<p>{$lang_devkit_command_states_help}</p>
</div>
</fieldset>
</div>
 
<div id="undo_redo_panel" class="panel">
<fieldset>
<legend>{$lang_devkit_undo_redo_tab}</legend>
 
<span><a href="javascript:renderUndoRedo();">[{$lang_devkit_refresh}]</a></span>
 
<div id="undo_redo" class="data">
<p>{$lang_devkit_undo_redo_help}</p>
</div>
 
<input type="checkbox" id="undo_diff" name="undo_diff" class="checkbox" /><label for="undo_diff">{$lang_devkit_undo_diff}</label>
</fieldset>
</div>
 
<div id="misc_panel" class="panel">
<fieldset>
<legend>{$lang_devkit_misc_tab}</legend>
 
<div class="data">
<p>{$lang_devkit_misc_help}</p>
<hr />
<p>Selection: <a href="#" onmousedown="return storeSelection();">[Store selection]</a> <a href="#" onmousedown="return restoreSelection();">[Restore selection]</a></p>
<hr />
<div><strong>Insert custom HTML content</strong></div>
<div><textarea id="htmlcont" name="htmlcont" style="width: 90%" rows="5"></textarea></div>
<div><a href="#" onclick="return tinyMCE.execCommand('mceInsertContent',false,document.getElementById('htmlcont').value);">[Insert content]</a></div>
<hr />
<div><strong>Eval JS:</strong></div>
<div><textarea id="jscont" name="jscont" style="width: 90%" rows="5">tinyMCE.execCommand('Bold',false,null);</textarea></div>
<div><a href="#" onclick="return parent.window.eval(document.getElementById('jscont').value);">[Evaluate]</a></div>
</div>
</fieldset>
</div>
</div>
</form>
 
<div id="flip"><a href="javascript:toggleFlip();" onmousedown="return false;"><img id="flipbtn" src="images/flip_down.gif" border="0" /></a></div>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/cleanup/readme.txt
New file
0,0 → 1,0
Dummy plugin since cleanup is now moved into core.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/cleanup/editor_plugin.js
--- maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/cleanup/editor_plugin_src.js (revision 0)
+++ maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/cleanup/editor_plugin_src.js (revision 420)
@@ -0,0 +1,10 @@
+/**
+ * $Id: editor_plugin_src.js 162 2007-01-03 16:16:52Z spocke $
+ *
+ * Experimental plugin for new Cleanup routine, this logic will be moved into the core ones it's stable enougth.
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
+ */
+
+/* Dummy file since cleanup is now moved to core */
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/autosave/langs/en.js
New file
0,0 → 1,5
// EN lang variables
 
tinyMCE.addToLang('',{
autosave_unload_msg : 'The changes you made will be lost if you navigate away from this page.'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/autosave/langs/fr.js
New file
0,0 → 1,6
// FR lang variables
// Modified by Motte, last updated 2006-03-23
 
tinyMCE.addToLang('',{
autosave_unload_msg : 'Vos modifications seront perdues si vous quittez cette page.'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/autosave/editor_plugin_src.js
New file
0,0 → 1,46
/**
* $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
tinyMCE.importPluginLanguagePack('autosave');
 
var TinyMCE_AutoSavePlugin = {
getInfo : function() {
return {
longname : 'Auto save',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
// Private plugin internal methods
 
_beforeUnloadHandler : function() {
var n, inst, anyDirty = false, msg = tinyMCE.getLang("lang_autosave_unload_msg");
 
if (tinyMCE.getParam("fullscreen_is_enabled"))
return;
 
for (n in tinyMCE.instances) {
inst = tinyMCE.instances[n];
 
if (!tinyMCE.isInstance(inst))
continue;
 
if (inst.isDirty())
return msg;
}
 
return;
}
};
 
window.onbeforeunload = TinyMCE_AutoSavePlugin._beforeUnloadHandler;
 
tinyMCE.addPlugin("autosave", TinyMCE_AutoSavePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/autosave/readme.txt
New file
0,0 → 1,0
Check the TinyMCE documentation for details on this plugin.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/autosave/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('autosave');var TinyMCE_AutoSavePlugin={getInfo:function(){return{longname:'Auto save',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},_beforeUnloadHandler:function(){var n,inst,anyDirty=false,msg=tinyMCE.getLang("lang_autosave_unload_msg");if(tinyMCE.getParam("fullscreen_is_enabled"))return;for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;if(inst.isDirty())return msg}return}};window.onbeforeunload=TinyMCE_AutoSavePlugin._beforeUnloadHandler;tinyMCE.addPlugin("autosave",TinyMCE_AutoSavePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/css/row.css
New file
0,0 → 1,25
/* CSS file for row dialog in the table plugin */
 
.panel_wrapper div.current {
height: 200px;
}
 
.advfield {
width: 200px;
}
 
#action {
margin-bottom: 3px;
}
 
#rowtype,#align,#valign,#class,#height {
width: 150px;
}
 
#height {
width: 50px;
}
 
.col2 {
padding-left: 20px;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/css/table.css
New file
0,0 → 1,13
/* CSS file for table dialog in the table plugin */
 
.panel_wrapper div.current {
height: 220px;
}
 
.advfield {
width: 200px;
}
 
#class {
width: 150px;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/css/cell.css
New file
0,0 → 1,17
/* CSS file for cell dialog in the table plugin */
 
.panel_wrapper div.current {
height: 200px;
}
 
.advfield {
width: 200px;
}
 
#action {
margin-bottom: 3px;
}
 
#class {
width: 150px;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/merge_cells.htm
New file
0,0 → 1,38
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_table_merge_cells_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/merge_cells.js"></script>
<base target="_self" />
</head>
<body onload="tinyMCEPopup.executeOnLoad('init();');" style="margin: 8px" style="display: none">
<form onsubmit="insertTable();return false;" action="#">
<fieldset>
<legend>{$lang_table_merge_cells_title}</legend>
<table border="0" cellpadding="0" cellspacing="3" width="100%">
<tr>
<td>{$lang_table_cols}:</td>
<td align="right"><input type="text" name="numcols" value="" class="number min1" style="width: 30px" /></td>
<td>
</tr>
<tr>
<td>{$lang_table_rows}:</td>
<td align="right"><input type="text" name="numrows" value="" class="number min1" style="width: 30px" /></td>
</tr>
</table>
</fieldset>
 
<div class="mceActionPanel">
<div style="float: left">
<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="mergeCells();" />
</div>
 
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
</div>
</div>
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/readme.txt
New file
0,0 → 1,0
Check the TinyMCE documentation for details on this plugin.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/row.htm
New file
0,0 → 1,159
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_table_row_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/row.js"></script>
<link href="css/row.css" rel="stylesheet" type="text/css" />
<base target="_self" />
</head>
<body id="tablerow" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<form onsubmit="updateAction();return false;">
<div class="tabs">
<ul>
<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_table_general_tab}</a></span></li>
<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_table_advanced_tab}</a></span></li>
</ul>
</div>
 
<div class="panel_wrapper">
<div id="general_panel" class="panel current">
<fieldset>
<legend>{$lang_table_general_props}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td><label for="rowtype">{$lang_table_rowtype}</label></td>
<td class="col2">
<select id="rowtype" name="rowtype">
<option value="thead">{$lang_table_thead}</option>
<option value="tbody">{$lang_table_tbody}</option>
<option value="tfoot">{$lang_table_tfoot}</option>
</select>
</td>
</tr>
 
<tr>
<td><label for="align">{$lang_table_align}</label></td>
<td class="col2">
<select id="align" name="align">
<option value="">{$lang_not_set}</option>
<option value="center">{$lang_table_align_middle}</option>
<option value="left">{$lang_table_align_left}</option>
<option value="right">{$lang_table_align_right}</option>
</select>
</td>
</tr>
 
<tr>
<td><label for="valign">{$lang_table_valign}</label></td>
<td class="col2">
<select id="valign" name="valign">
<option value="">{$lang_not_set}</option>
<option value="top">{$lang_table_align_top}</option>
<option value="middle">{$lang_table_align_middle}</option>
<option value="bottom">{$lang_table_align_bottom}</option>
</select>
</td>
</tr>
 
<tr id="styleSelectRow">
<td><label for="class">{$lang_class_name}</label></td>
<td class="col2">
<select id="class" name="class">
<option value="" selected="selected">{$lang_not_set}</option>
</select>
</td>
</tr>
 
<tr>
<td><label for="height">{$lang_table_height}</label></td>
<td class="col2"><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
</tr>
</table>
</fieldset>
</div>
 
<div id="advanced_panel" class="panel">
<fieldset>
<legend>{$lang_table_advanced_props}</legend>
 
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td class="column1"><label for="id">{$lang_table_id}</label></td>
<td><input id="id" name="id" type="text" value="" style="width: 200px" /></td>
</tr>
 
<tr>
<td><label for="style">{$lang_table_style}</label></td>
<td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>
</tr>
 
<tr>
<td class="column1"><label for="dir">{$lang_table_langdir}</label></td>
<td>
<select id="dir" name="dir" style="width: 200px">
<option value="">{$lang_not_set}</option>
<option value="ltr">{$lang_table_ltr}</option>
<option value="rtl">{$lang_table_rtl}</option>
</select>
</td>
</tr>
 
<tr>
<td class="column1"><label for="lang">{$lang_table_langcode}</label></td>
<td>
<input id="lang" name="lang" type="text" value="" style="width: 200px" />
</td>
</tr>
 
<tr>
<td class="column1"><label for="backgroundimage">{$lang_table_bgimage}</label></td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>
<td id="backgroundimagebrowsercontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td class="column1"><label for="bgcolor">{$lang_table_bgcolor}</label></td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
<td id="bgcolor_pickcontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>
</fieldset>
</div>
</div>
 
<div class="mceActionPanel">
<div>
<select id="action" name="action">
<option value="row">{$lang_table_row_row}</option>
<option value="odd">{$lang_table_row_odd}</option>
<option value="even">{$lang_table_row_even}</option>
<option value="all">{$lang_table_row_all}</option>
</select>
</div>
 
<div style="float: left">
<div><input type="button" id="insert" name="insert" value="{$lang_update}" onclick="updateAction();" /></div>
</div>
 
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
</div>
</div>
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/table.htm
New file
0,0 → 1,160
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_table_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/table.js"></script>
<link href="css/table.css" rel="stylesheet" type="text/css" />
<base target="_self" />
</head>
<body id="table" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<form onsubmit="insertTable();return false;" action="#">
<div class="tabs">
<ul>
<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_table_general_tab}</a></span></li>
<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_table_advanced_tab}</a></span></li>
</ul>
</div>
 
<div class="panel_wrapper">
<div id="general_panel" class="panel current">
<fieldset>
<legend>{$lang_table_general_props}</legend>
 
<table border="0" cellpadding="4" cellspacing="0" width="100%">
<tr>
<td><label id="colslabel" for="cols">{$lang_table_cols}</label></td>
<td><input id="cols" name="cols" type="text" value="" size="3" maxlength="3" class="required number min1" /></td>
<td><label id="rowslabel" for="rows">{$lang_table_rows}</label></td>
<td><input id="rows" name="rows" type="text" value="" size="3" maxlength="3" class="required number min1" /></td>
</tr>
<tr>
<td><label id="cellpaddinglabel" for="cellpadding">{$lang_table_cellpadding}</label></td>
<td><input id="cellpadding" name="cellpadding" type="text" value="" size="3" maxlength="3" class="number" /></td>
<td><label id="cellspacinglabel" for="cellspacing">{$lang_table_cellspacing}</label></td>
<td><input id="cellspacing" name="cellspacing" type="text" value="" size="3" maxlength="3" class="number" /></td>
</tr>
<tr>
<td><label id="alignlabel" for="align">{$lang_table_align}</label></td>
<td><select id="align" name="align">
<option value="">{$lang_not_set}</option>
<option value="center">{$lang_table_align_middle}</option>
<option value="left">{$lang_table_align_left}</option>
<option value="right">{$lang_table_align_right}</option>
</select></td>
<td><label id="borderlabel" for="border">{$lang_table_border}</label></td>
<td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="changedBorder();" class="number" /></td>
</tr>
<tr id="width_row">
<td><label id="widthlabel" for="width">{$lang_table_width}</label></td>
<td><input name="width" type="text" id="width" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>
<td><label id="heightlabel" for="height">{$lang_table_height}</label></td>
<td><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>
</tr>
<tr id="styleSelectRow">
<td><label id="classlabel" for="class">{$lang_class_name}</label></td>
<td colspan="3">
<select id="class" name="class">
<option value="" selected>{$lang_not_set}</option>
</select></td>
</tr>
<tr>
<td class="column1"><label for="caption">{$lang_table_caption}</label></td>
<td><input id="caption" name="caption" type="checkbox" class="checkbox" value="true" /></td>
</tr>
</table>
</fieldset>
</div>
 
<div id="advanced_panel" class="panel">
<fieldset>
<legend>{$lang_table_advanced_props}</legend>
 
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td class="column1"><label for="id">{$lang_table_id}</label></td>
<td><input id="id" name="id" type="text" value="" class="advfield" /></td>
</tr>
 
<tr>
<td class="column1"><label for="summary">{$lang_table_summary}</label></td>
<td><input id="summary" name="summary" type="text" value="" class="advfield" /></td>
</tr>
 
<tr>
<td><label for="style">{$lang_table_style}</label></td>
<td><input type="text" id="style" name="style" value="" class="advfield" onchange="changedStyle();" /></td>
</tr>
 
<tr>
<td class="column1"><label for="dir">{$lang_table_langdir}</label></td>
<td>
<select id="dir" name="dir" class="advfield">
<option value="">{$lang_not_set}</option>
<option value="ltr">{$lang_table_ltr}</option>
<option value="rtl">{$lang_table_rtl}</option>
</select>
</td>
</tr>
 
<tr>
<td class="column1"><label id="langlabel" for="lang">{$lang_table_langcode}</label></td>
<td>
<input id="lang" name="lang" type="text" value="" class="advfield" />
</td>
</tr>
 
<tr>
<td class="column1"><label for="backgroundimage">{$lang_table_bgimage}</label></td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="backgroundimage" name="backgroundimage" type="text" value="" class="advfield" onchange="changedBackgroundImage();" /></td>
<td id="backgroundimagebrowsercontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td class="column1"><label for="bordercolor">{$lang_table_bordercolor}</label></td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>
<td id="bordercolor_pickcontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td class="column1"><label for="bgcolor">{$lang_table_bgcolor}</label></td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
<td id="bgcolor_pickcontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>
</fieldset>
</div>
</div>
 
<div class="mceActionPanel">
<div style="float: left">
<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertTable();" />
</div>
 
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
</div>
</div>
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('table');var TinyMCE_TablePlugin={getInfo:function(){return{longname:'Tables',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/table',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(tinyMCE.isGecko){var doc=inst.getDoc();tinyMCE.addEvent(doc,"mouseup",TinyMCE_TablePlugin._mouseDownHandler)}inst.tableRowClipboard=null},getControlHTML:function(control_name){var controls=new Array(['table','table.gif','lang_table_desc','mceInsertTable',true],['delete_table','table_delete.gif','lang_table_del','mceTableDelete'],['delete_col','table_delete_col.gif','lang_table_delete_col_desc','mceTableDeleteCol'],['delete_row','table_delete_row.gif','lang_table_delete_row_desc','mceTableDeleteRow'],['col_after','table_insert_col_after.gif','lang_table_col_after_desc','mceTableInsertColAfter'],['col_before','table_insert_col_before.gif','lang_table_col_before_desc','mceTableInsertColBefore'],['row_after','table_insert_row_after.gif','lang_table_row_after_desc','mceTableInsertRowAfter'],['row_before','table_insert_row_before.gif','lang_table_row_before_desc','mceTableInsertRowBefore'],['row_props','table_row_props.gif','lang_table_row_desc','mceTableRowProps',true],['cell_props','table_cell_props.gif','lang_table_cell_desc','mceTableCellProps',true],['split_cells','table_split_cells.gif','lang_table_split_cells_desc','mceTableSplitCells',true],['merge_cells','table_merge_cells.gif','lang_table_merge_cells_desc','mceTableMergeCells',true]);for(var i=0;i<controls.length;i++){var but=controls[i];var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+but[3]+'\', '+(but.length>4?but[4]:false)+(but.length>5?', \''+but[5]+'\'':'')+');return false;';if(but[0]==control_name)return tinyMCE.getButtonHTML(control_name,but[2],'{$pluginurl}/images/'+but[1],but[3],(but.length>4?but[4]:false))}if(control_name=="tablecontrols"){var html="";html+=tinyMCE.getControlHTML("table");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("row_props");html+=tinyMCE.getControlHTML("cell_props");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("row_before");html+=tinyMCE.getControlHTML("row_after");html+=tinyMCE.getControlHTML("delete_row");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("col_before");html+=tinyMCE.getControlHTML("col_after");html+=tinyMCE.getControlHTML("delete_col");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("split_cells");html+=tinyMCE.getControlHTML("merge_cells");return html}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceInsertTable":case"mceTableRowProps":case"mceTableCellProps":case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":case"mceTableDelete":var inst=tinyMCE.getInstanceById(editor_id);inst.execCommand('mceBeginUndoLevel');TinyMCE_TablePlugin._doExecCommand(editor_id,element,command,user_interface,value);inst.execCommand('mceEndUndoLevel');return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var colspan="1",rowspan="1",tdElm;var inst=tinyMCE.getInstanceById(editor_id);tinyMCE.switchClass(editor_id+'_table','mceButtonNormal');tinyMCE.switchClass(editor_id+'_delete_table','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_row_props','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_cell_props','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_row_before','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_row_after','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_delete_row','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_col_before','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_col_after','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_delete_col','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_split_cells','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_merge_cells','mceButtonDisabled');if(tdElm=tinyMCE.getParentElement(node,"td,th")){tinyMCE.switchClass(editor_id+'_cell_props','mceButtonSelected');tinyMCE.switchClass(editor_id+'_delete_table','mceButtonNormal');tinyMCE.switchClass(editor_id+'_row_before','mceButtonNormal');tinyMCE.switchClass(editor_id+'_row_after','mceButtonNormal');tinyMCE.switchClass(editor_id+'_delete_row','mceButtonNormal');tinyMCE.switchClass(editor_id+'_col_before','mceButtonNormal');tinyMCE.switchClass(editor_id+'_col_after','mceButtonNormal');tinyMCE.switchClass(editor_id+'_delete_col','mceButtonNormal');colspan=tinyMCE.getAttrib(tdElm,"colspan");rowspan=tinyMCE.getAttrib(tdElm,"rowspan");colspan=colspan==""?"1":colspan;rowspan=rowspan==""?"1":rowspan;if(colspan!="1"||rowspan!="1")tinyMCE.switchClass(editor_id+'_split_cells','mceButtonNormal')}if(tinyMCE.getParentElement(node,"tr"))tinyMCE.switchClass(editor_id+'_row_props','mceButtonSelected');if(tinyMCE.getParentElement(node,"table")){tinyMCE.switchClass(editor_id+'_table','mceButtonSelected');tinyMCE.switchClass(editor_id+'_merge_cells','mceButtonNormal')}},_mouseDownHandler:function(e){var elm=tinyMCE.isMSIE?event.srcElement:e.target;var focusElm=tinyMCE.selectedInstance.getFocusElement();if(elm.nodeName=="BODY"&&(focusElm.nodeName=="TD"||focusElm.nodeName=="TH"||(focusElm.parentNode&&focusElm.parentNode.nodeName=="TD")||(focusElm.parentNode&&focusElm.parentNode.nodeName=="TH"))){window.setTimeout(function(){var tableElm=tinyMCE.getParentElement(focusElm,"table");tinyMCE.handleVisualAid(tableElm,true,tinyMCE.settings['visual'],tinyMCE.selectedInstance)},10)}},_doExecCommand:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id);var focusElm=inst.getFocusElement();var trElm=tinyMCE.getParentElement(focusElm,"tr");var tdElm=tinyMCE.getParentElement(focusElm,"td,th");var tableElm=tinyMCE.getParentElement(focusElm,"table");var doc=inst.contentWindow.document;var tableBorder=tableElm?tableElm.getAttribute("border"):"";if(trElm&&tdElm==null)tdElm=trElm.cells[0];function inArray(ar,v){for(var i=0;i<ar.length;i++){if(ar[i].length>0&&inArray(ar[i],v))return true;if(ar[i]==v)return true}return false}function makeTD(){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;"}function getColRowSpan(td){var colspan=tinyMCE.getAttrib(td,"colspan");var rowspan=tinyMCE.getAttrib(td,"rowspan");colspan=colspan==""?1:parseInt(colspan);rowspan=rowspan==""?1:parseInt(rowspan);return{colspan:colspan,rowspan:rowspan}}function getCellPos(grid,td){var x,y;for(y=0;y<grid.length;y++){for(x=0;x<grid[y].length;x++){if(grid[y][x]==td)return{cellindex:x,rowindex:y}}}return null}function getCell(grid,row,col){if(grid[row]&&grid[row][col])return grid[row][col];return null}function getTableGrid(table){var grid=new Array(),rows=table.rows,x,y,td,sd,xstart,x2,y2;for(y=0;y<rows.length;y++){for(x=0;x<rows[y].cells.length;x++){td=rows[y].cells[x];sd=getColRowSpan(td);for(xstart=x;grid[y]&&grid[y][xstart];xstart++);for(y2=y;y2<y+sd['rowspan'];y2++){if(!grid[y2])grid[y2]=new Array();for(x2=xstart;x2<xstart+sd['colspan'];x2++)grid[y2][x2]=td}}}return grid}function trimRow(table,tr,td,new_tr){var grid=getTableGrid(table),cpos=getCellPos(grid,td);var cells,lastElm;if(new_tr.cells.length!=tr.childNodes.length){cells=tr.childNodes;lastElm=null;for(var x=0;td=getCell(grid,cpos.rowindex,x);x++){var remove=true;var sd=getColRowSpan(td);if(inArray(cells,td)){new_tr.childNodes[x]._delete=true}else if((lastElm==null||td!=lastElm)&&sd.colspan>1){for(var i=x;i<x+td.colSpan;i++)new_tr.childNodes[i]._delete=true}if((lastElm==null||td!=lastElm)&&sd.rowspan>1)td.rowSpan=sd.rowspan+1;lastElm=td}deleteMarked(tableElm)}}function prevElm(node,name){while((node=node.previousSibling)!=null){if(node.nodeName==name)return node}return null}function nextElm(node,names){var namesAr=names.split(',');while((node=node.nextSibling)!=null){for(var i=0;i<namesAr.length;i++){if(node.nodeName.toLowerCase()==namesAr[i].toLowerCase())return node}}return null}function deleteMarked(tbl){if(tbl.rows==0)return;var tr=tbl.rows[0];do{var next=nextElm(tr,"TR");if(tr._delete){tr.parentNode.removeChild(tr);continue}var td=tr.cells[0];if(td.cells>1){do{var nexttd=nextElm(td,"TD,TH");if(td._delete)td.parentNode.removeChild(td)}while((td=nexttd)!=null)}}while((tr=next)!=null)}function addRows(td_elm,tr_elm,rowspan){td_elm.rowSpan=1;var trNext=nextElm(tr_elm,"TR");for(var i=1;i<rowspan&&trNext;i++){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";if(tinyMCE.isMSIE)trNext.insertBefore(newTD,trNext.cells(td_elm.cellIndex));else trNext.insertBefore(newTD,trNext.cells[td_elm.cellIndex]);trNext=nextElm(trNext,"TR")}}function copyRow(doc,table,tr){var grid=getTableGrid(table);var newTR=tr.cloneNode(false);var cpos=getCellPos(grid,tr.cells[0]);var lastCell=null;var tableBorder=tinyMCE.getAttrib(table,"border");var tdElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){var newTD=null;if(lastCell!=tdElm){for(var i=0;i<tr.cells.length;i++){if(tdElm==tr.cells[i]){newTD=tdElm.cloneNode(true);break}}}if(newTD==null){newTD=doc.createElement("td");newTD.innerHTML="&nbsp;"}newTD.colSpan=1;newTD.rowSpan=1;newTR.appendChild(newTD);lastCell=tdElm}return newTR}switch(command){case"mceTableRowProps":if(trElm==null)return true;if(user_interface){var template=new Array();template['file']='../../plugins/table/row.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.getLang('lang_table_rowprops_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_rowprops_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes"})}return true;case"mceTableCellProps":if(tdElm==null)return true;if(user_interface){var template=new Array();template['file']='../../plugins/table/cell.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.getLang('lang_table_cellprops_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_cellprops_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes"})}return true;case"mceInsertTable":if(user_interface){var template=new Array();template['file']='../../plugins/table/table.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.getLang('lang_table_table_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_table_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes",action:value})}return true;case"mceTableDelete":var table=tinyMCE.getParentElement(inst.getFocusElement(),"table");if(table){table.parentNode.removeChild(table);inst.repaint()}return true;case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":if(!tableElm)return true;if(trElm&&tableElm!=trElm.parentNode)tableElm=trElm.parentNode;if(tableElm&&trElm){switch(command){case"mceTableCutRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);inst.execCommand("mceTableDeleteRow");break;case"mceTableCopyRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);break;case"mceTablePasteRowBefore":if(!trElm||!tdElm)return true;var newTR=inst.tableRowClipboard.cloneNode(true);var prevTR=prevElm(trElm,"TR");if(prevTR!=null)trimRow(tableElm,prevTR,prevTR.cells[0],newTR);trElm.parentNode.insertBefore(newTR,trElm);break;case"mceTablePasteRowAfter":if(!trElm||!tdElm)return true;var nextTR=nextElm(trElm,"TR");var newTR=inst.tableRowClipboard.cloneNode(true);trimRow(tableElm,trElm,tdElm,newTR);if(nextTR==null)trElm.parentNode.appendChild(newTR);else nextTR.parentNode.insertBefore(newTR,nextTR);break;case"mceTableInsertRowBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD)}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm}}trElm.parentNode.insertBefore(newTR,trElm);grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex+1,cpos.cellindex),tinyMCE.isGecko,true);break;case"mceTableInsertRowAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD)}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm}}if(newTR.hasChildNodes()){var nextTR=nextElm(trElm,"TR");if(nextTR)nextTR.parentNode.insertBefore(newTR,nextTR);else tableElm.appendChild(newTR)}grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,cpos.cellindex),tinyMCE.isGecko,true);break;case"mceTableDeleteRow":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);if(grid.length==1){tableElm=tinyMCE.getParentElement(tableElm,"table");tableElm.parentNode.removeChild(tableElm);return true}var cells=trElm.cells;var nextTR=nextElm(trElm,"TR");for(var x=0;x<cells.length;x++){if(cells[x].rowSpan>1){var newTD=cells[x].cloneNode(true);var sd=getColRowSpan(cells[x]);newTD.rowSpan=sd.rowspan-1;var nextTD=nextTR.cells[x];if(nextTD==null)nextTR.appendChild(newTD);else nextTR.insertBefore(newTD,nextTD)}}var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd.rowspan>1){tdElm.rowSpan=sd.rowspan-1}else{trElm=tdElm.parentNode;if(trElm.parentNode)trElm._delete=true}lastTDElm=tdElm}}deleteMarked(tableElm);cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,0),tinyMCE.isGecko,true);break;case"mceTableInsertColBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);newTD.innerHTML="&nbsp;";newTD.rowSpan=tdElm.rowSpan;tdElm.parentNode.insertBefore(newTD,tdElm)}else tdElm.colSpan++;lastTDElm=tdElm}}grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,cpos.cellindex+1),tinyMCE.isGecko,true);break;case"mceTableInsertColAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);newTD.innerHTML="&nbsp;";newTD.rowSpan=tdElm.rowSpan;var nextTD=nextElm(tdElm,"TD,TH");if(nextTD==null)tdElm.parentNode.appendChild(newTD);else nextTD.parentNode.insertBefore(newTD,nextTD)}else tdElm.colSpan++;lastTDElm=tdElm}}grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,cpos.cellindex),tinyMCE.isGecko,true);break;case"mceTableDeleteCol":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;if(grid.length>1&&grid[0].length<=1){tableElm=tinyMCE.getParentElement(tableElm,"table");tableElm.parentNode.removeChild(tableElm);return true}for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']>1)tdElm.colSpan=sd['colspan']-1;else{if(tdElm.parentNode)tdElm.parentNode.removeChild(tdElm)}lastTDElm=tdElm}}cpos.cellindex--;if(cpos.cellindex<0)cpos.cellindex=0;grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,0),tinyMCE.isGecko,true);break;case"mceTableSplitCells":if(!trElm||!tdElm)return true;var spandata=getColRowSpan(tdElm);var colspan=spandata["colspan"];var rowspan=spandata["rowspan"];if(colspan>1||rowspan>1){tdElm.colSpan=1;for(var i=1;i<colspan;i++){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";trElm.insertBefore(newTD,nextElm(tdElm,"TD,TH"));if(rowspan>1)addRows(newTD,trElm,rowspan)}addRows(tdElm,trElm,rowspan)}tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");break;case"mceTableMergeCells":var rows=new Array();var sel=inst.getSel();var grid=getTableGrid(tableElm);if(tinyMCE.isMSIE||sel.rangeCount==1){if(user_interface){var template=new Array();var sp=getColRowSpan(tdElm);template['file']='../../plugins/table/merge_cells.htm';template['width']=250;template['height']=105+(tinyMCE.isNS7?25:0);template['width']+=tinyMCE.getLang('lang_table_merge_cells_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_merge_cells_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes",action:"update",numcols:sp.colspan,numrows:sp.rowspan});return true}else{var numRows=parseInt(value['numrows']);var numCols=parseInt(value['numcols']);var cpos=getCellPos(grid,tdElm);if((""+numRows)=="NaN")numRows=1;if((""+numCols)=="NaN")numCols=1;var tRows=tableElm.rows;for(var y=cpos.rowindex;y<grid.length;y++){var rowCells=new Array();for(var x=cpos.cellindex;x<grid[y].length;x++){var td=getCell(grid,y,x);if(td&&!inArray(rows,td)&&!inArray(rowCells,td)){var cp=getCellPos(grid,td);if(cp.cellindex<cpos.cellindex+numCols&&cp.rowindex<cpos.rowindex+numRows)rowCells[rowCells.length]=td}}if(rowCells.length>0)rows[rows.length]=rowCells}}}else{var cells=new Array();var sel=inst.getSel();var lastTR=null;var curRow=null;var x1=-1,y1=-1,x2,y2;if(sel.rangeCount<2)return true;for(var i=0;i<sel.rangeCount;i++){var rng=sel.getRangeAt(i);var tdElm=rng.startContainer.childNodes[rng.startOffset];if(!tdElm)break;if(tdElm.nodeName=="TD")cells[cells.length]=tdElm}var tRows=tableElm.rows;for(var y=0;y<tRows.length;y++){var rowCells=new Array();for(var x=0;x<tRows[y].cells.length;x++){var td=tRows[y].cells[x];for(var i=0;i<cells.length;i++){if(td==cells[i]){rowCells[rowCells.length]=td}}}if(rowCells.length>0)rows[rows.length]=rowCells}var curRow=new Array();var lastTR=null;for(var y=0;y<grid.length;y++){for(var x=0;x<grid[y].length;x++){grid[y][x]._selected=false;for(var i=0;i<cells.length;i++){if(grid[y][x]==cells[i]){if(x1==-1){x1=x;y1=y}x2=x;y2=y;grid[y][x]._selected=true}}}}for(var y=y1;y<=y2;y++){for(var x=x1;x<=x2;x++){if(!grid[y][x]._selected){alert("Invalid selection for merge.");return true}}}}var rowSpan=1,colSpan=1;var lastRowSpan=-1;for(var y=0;y<rows.length;y++){var rowColSpan=0;for(var x=0;x<rows[y].length;x++){var sd=getColRowSpan(rows[y][x]);rowColSpan+=sd['colspan'];if(lastRowSpan!=-1&&sd['rowspan']!=lastRowSpan){alert("Invalid selection for merge.");return true}lastRowSpan=sd['rowspan']}if(rowColSpan>colSpan)colSpan=rowColSpan;lastRowSpan=-1}var lastColSpan=-1;for(var x=0;x<rows[0].length;x++){var colRowSpan=0;for(var y=0;y<rows.length;y++){var sd=getColRowSpan(rows[y][x]);colRowSpan+=sd['rowspan'];if(lastColSpan!=-1&&sd['colspan']!=lastColSpan){alert("Invalid selection for merge.");return true}lastColSpan=sd['colspan']}if(colRowSpan>rowSpan)rowSpan=colRowSpan;lastColSpan=-1}tdElm=rows[0][0];tdElm.rowSpan=rowSpan;tdElm.colSpan=colSpan;for(var y=0;y<rows.length;y++){for(var x=0;x<rows[y].length;x++){var html=rows[y][x].innerHTML;var chk=tinyMCE.regexpReplace(html,"[ \t\r\n]","");if(chk!="<br/>"&&chk!="<br>"&&chk!="&nbsp;"&&(x+y>0))tdElm.innerHTML+=html;if(rows[y][x]!=tdElm&&!rows[y][x]._deleted){var cpos=getCellPos(grid,rows[y][x]);var tr=rows[y][x].parentNode;tr.removeChild(rows[y][x]);rows[y][x]._deleted=true;if(!tr.hasChildNodes()){tr.parentNode.removeChild(tr);var lastCell=null;for(var x=0;cellElm=getCell(grid,cpos.rowindex,x);x++){if(cellElm!=lastCell&&cellElm.rowSpan>1)cellElm.rowSpan--;lastCell=cellElm}if(tdElm.rowSpan>1)tdElm.rowSpan--}}}}break}tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");tinyMCE.handleVisualAid(tableElm,true,tinyMCE.settings['visual'],tinyMCE.selectedInstance);tinyMCE.triggerNodeChange();inst.repaint()}return true}return false}};tinyMCE.addPlugin("table",TinyMCE_TablePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/jscripts/row.js
New file
0,0 → 1,200
function init() {
tinyMCEPopup.resizeToInnerSize();
 
document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
 
var inst = tinyMCE.selectedInstance;
var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr");
var formObj = document.forms[0];
var st = tinyMCE.parseStyle(tinyMCE.getAttrib(trElm, "style"));
 
// Get table row data
var rowtype = trElm.parentNode.nodeName.toLowerCase();
var align = tinyMCE.getAttrib(trElm, 'align');
var valign = tinyMCE.getAttrib(trElm, 'valign');
var height = trimSize(getStyle(trElm, 'height', 'height'));
var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(trElm, 'class'), false);
var bgcolor = convertRGBToHex(getStyle(trElm, 'bgcolor', 'backgroundColor'));
var backgroundimage = getStyle(trElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;
var id = tinyMCE.getAttrib(trElm, 'id');
var lang = tinyMCE.getAttrib(trElm, 'lang');
var dir = tinyMCE.getAttrib(trElm, 'dir');
 
// Setup form
addClassesToList('class', 'table_row_styles');
formObj.bgcolor.value = bgcolor;
formObj.backgroundimage.value = backgroundimage;
formObj.height.value = height;
formObj.id.value = id;
formObj.lang.value = lang;
formObj.style.value = tinyMCE.serializeStyle(st);
selectByValue(formObj, 'align', align);
selectByValue(formObj, 'valign', valign);
selectByValue(formObj, 'class', className);
selectByValue(formObj, 'rowtype', rowtype);
selectByValue(formObj, 'dir', dir);
 
// Resize some elements
if (isVisible('backgroundimagebrowser'))
document.getElementById('backgroundimage').style.width = '180px';
 
updateColor('bgcolor_pick', 'bgcolor');
}
 
function updateAction() {
tinyMCEPopup.restoreSelection();
 
var inst = tinyMCE.selectedInstance;
var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr");
var tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
var formObj = document.forms[0];
var action = getSelectValue(formObj, 'action');
 
inst.execCommand('mceBeginUndoLevel');
 
switch (action) {
case "row":
updateRow(trElm);
break;
 
case "all":
var rows = tableElm.getElementsByTagName("tr");
 
for (var i=0; i<rows.length; i++)
updateRow(rows[i], true);
 
break;
 
case "odd":
case "even":
var rows = tableElm.getElementsByTagName("tr");
 
for (var i=0; i<rows.length; i++) {
if ((i % 2 == 0 && action == "odd") || (i % 2 != 0 && action == "even"))
updateRow(rows[i], true, true);
}
 
break;
}
 
tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
tinyMCE.triggerNodeChange();
inst.execCommand('mceEndUndoLevel');
tinyMCEPopup.close();
}
 
function updateRow(tr_elm, skip_id, skip_parent) {
var inst = tinyMCE.selectedInstance;
var formObj = document.forms[0];
var curRowType = tr_elm.parentNode.nodeName.toLowerCase();
var rowtype = getSelectValue(formObj, 'rowtype');
var doc = inst.getDoc();
 
// Update row element
if (!skip_id)
tr_elm.setAttribute('id', formObj.id.value);
 
tr_elm.setAttribute('align', getSelectValue(formObj, 'align'));
tr_elm.setAttribute('vAlign', getSelectValue(formObj, 'valign'));
tr_elm.setAttribute('lang', formObj.lang.value);
tr_elm.setAttribute('dir', getSelectValue(formObj, 'dir'));
tr_elm.setAttribute('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(formObj.style.value)));
tinyMCE.setAttrib(tr_elm, 'class', getSelectValue(formObj, 'class'));
 
// Clear deprecated attributes
tr_elm.setAttribute('background', '');
tr_elm.setAttribute('bgColor', '');
tr_elm.setAttribute('height', '');
 
// Set styles
tr_elm.style.height = getCSSSize(formObj.height.value);
tr_elm.style.backgroundColor = formObj.bgcolor.value;
 
if (formObj.backgroundimage.value != "")
tr_elm.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
else
tr_elm.style.backgroundImage = '';
 
// Setup new rowtype
if (curRowType != rowtype && !skip_parent) {
// first, clone the node we are working on
var newRow = tr_elm.cloneNode(1);
 
// next, find the parent of its new destination (creating it if necessary)
var theTable = tinyMCE.getParentElement(tr_elm, "table");
var dest = rowtype;
var newParent = null;
for (var i = 0; i < theTable.childNodes.length; i++) {
if (theTable.childNodes[i].nodeName.toLowerCase() == dest)
newParent = theTable.childNodes[i];
}
 
if (newParent == null) {
newParent = doc.createElement(dest);
 
if (dest == "thead")
theTable.insertBefore(newParent, theTable.firstChild);
else
theTable.appendChild(newParent);
}
 
// append the row to the new parent
newParent.appendChild(newRow);
 
// remove the original
tr_elm.parentNode.removeChild(tr_elm);
 
// set tr_elm to the new node
tr_elm = newRow;
}
}
 
function changedBackgroundImage() {
var formObj = document.forms[0];
var st = tinyMCE.parseStyle(formObj.style.value);
 
st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
 
formObj.style.value = tinyMCE.serializeStyle(st);
}
 
function changedStyle() {
var formObj = document.forms[0];
var st = tinyMCE.parseStyle(formObj.style.value);
 
if (st['background-image'])
formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
else
formObj.backgroundimage.value = '';
 
if (st['height'])
formObj.height.value = trimSize(st['height']);
 
if (st['background-color']) {
formObj.bgcolor.value = st['background-color'];
updateColor('bgcolor_pick','bgcolor');
}
}
 
function changedSize() {
var formObj = document.forms[0];
var st = tinyMCE.parseStyle(formObj.style.value);
 
var height = formObj.height.value;
if (height != "")
st['height'] = getCSSSize(height);
else
st['height'] = "";
 
formObj.style.value = tinyMCE.serializeStyle(st);
}
 
function changedColor() {
var formObj = document.forms[0];
var st = tinyMCE.parseStyle(formObj.style.value);
 
st['background-color'] = formObj.bgcolor.value;
 
formObj.style.value = tinyMCE.serializeStyle(st);
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/jscripts/table.js
New file
0,0 → 1,364
var action, orgTableWidth, orgTableHeight;
 
function insertTable() {
var formObj = document.forms[0];
var inst = tinyMCE.selectedInstance;
var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width, height, className, caption;
var html = '', capEl;
var elm = tinyMCE.tableElm;
var cellLimit, rowLimit, colLimit;
 
if (!AutoValidator.validate(formObj)) {
alert(tinyMCE.getLang('lang_invalid_data'));
return false;
}
 
tinyMCEPopup.restoreSelection();
 
// Get form data
cols = formObj.elements['cols'].value;
rows = formObj.elements['rows'].value;
border = formObj.elements['border'].value != "" ? formObj.elements['border'].value : 0;
cellpadding = formObj.elements['cellpadding'].value != "" ? formObj.elements['cellpadding'].value : "";
cellspacing = formObj.elements['cellspacing'].value != "" ? formObj.elements['cellspacing'].value : "";
align = formObj.elements['align'].options[formObj.elements['align'].selectedIndex].value;
width = formObj.elements['width'].value;
height = formObj.elements['height'].value;
bordercolor = formObj.elements['bordercolor'].value;
bgcolor = formObj.elements['bgcolor'].value;
className = formObj.elements['class'].options[formObj.elements['class'].selectedIndex].value;
id = formObj.elements['id'].value;
summary = formObj.elements['summary'].value;
style = formObj.elements['style'].value;
dir = formObj.elements['dir'].value;
lang = formObj.elements['lang'].value;
background = formObj.elements['backgroundimage'].value;
caption = formObj.elements['caption'].checked;
 
cellLimit = tinyMCE.getParam('table_cell_limit', false);
rowLimit = tinyMCE.getParam('table_row_limit', false);
colLimit = tinyMCE.getParam('table_col_limit', false);
 
// Validate table size
if (colLimit && cols > colLimit) {
alert(tinyMCE.getLang('lang_table_col_limit', '', true, {cols : colLimit}));
return false;
} else if (rowLimit && rows > rowLimit) {
alert(tinyMCE.getLang('lang_table_row_limit', '', true, {rows : rowLimit}));
return false;
} else if (cellLimit && cols * rows > cellLimit) {
alert(tinyMCE.getLang('lang_table_cell_limit', '', true, {cells : cellLimit}));
return false;
}
 
// Update table
if (action == "update") {
inst.execCommand('mceBeginUndoLevel');
 
tinyMCE.setAttrib(elm, 'cellPadding', cellpadding, true);
tinyMCE.setAttrib(elm, 'cellSpacing', cellspacing, true);
tinyMCE.setAttrib(elm, 'border', border, true);
tinyMCE.setAttrib(elm, 'align', align);
tinyMCE.setAttrib(elm, 'class', className);
tinyMCE.setAttrib(elm, 'style', style);
tinyMCE.setAttrib(elm, 'id', id);
tinyMCE.setAttrib(elm, 'summary', summary);
tinyMCE.setAttrib(elm, 'dir', dir);
tinyMCE.setAttrib(elm, 'lang', lang);
 
capEl = elm.getElementsByTagName('caption')[0];
 
if (capEl && !caption)
capEl.parentNode.removeChild(capEl);
 
if (!capEl && caption) {
capEl = elm.ownerDocument.createElement('caption');
capEl.innerHTML = '&nbsp;';
elm.insertBefore(capEl, elm.firstChild);
}
 
// Not inline styles
if (!tinyMCE.getParam("inline_styles"))
tinyMCE.setAttrib(elm, 'width', width, true);
 
// Remove these since they are not valid XHTML
tinyMCE.setAttrib(elm, 'borderColor', '');
tinyMCE.setAttrib(elm, 'bgColor', '');
tinyMCE.setAttrib(elm, 'background', '');
tinyMCE.setAttrib(elm, 'height', '');
 
if (background != '')
elm.style.backgroundImage = "url('" + background + "')";
else
elm.style.backgroundImage = '';
 
if (tinyMCE.getParam("inline_styles"))
elm.style.borderWidth = border + "px";
 
if (tinyMCE.getParam("inline_styles")) {
if (width != '')
elm.style.width = getCSSSize(width);
}
 
if (bordercolor != "") {
elm.style.borderColor = bordercolor;
elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle;
elm.style.borderWidth = border == "" ? "1px" : border;
} else
elm.style.borderColor = '';
 
elm.style.backgroundColor = bgcolor;
elm.style.height = getCSSSize(height);
 
tinyMCE.handleVisualAid(tinyMCE.tableElm, false, inst.visualAid, inst);
 
// Fix for stange MSIE align bug
tinyMCE.tableElm.outerHTML = tinyMCE.tableElm.outerHTML;
 
tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
tinyMCE.triggerNodeChange();
inst.execCommand('mceEndUndoLevel');
 
// Repaint if dimensions changed
if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight)
inst.repaint();
 
tinyMCEPopup.close();
return true;
}
 
// Create new table
html += '<table';
 
html += makeAttrib('id', id);
html += makeAttrib('border', border);
html += makeAttrib('cellpadding', cellpadding);
html += makeAttrib('cellspacing', cellspacing);
html += makeAttrib('width', width);
//html += makeAttrib('height', height);
//html += makeAttrib('bordercolor', bordercolor);
//html += makeAttrib('bgcolor', bgcolor);
html += makeAttrib('align', align);
html += makeAttrib('class', tinyMCE.getVisualAidClass(className, border == 0));
html += makeAttrib('style', style);
html += makeAttrib('summary', summary);
html += makeAttrib('dir', dir);
html += makeAttrib('lang', lang);
html += '>';
 
if (caption)
html += '<caption>&nbsp;</caption>';
 
for (var y=0; y<rows; y++) {
html += "<tr>";
 
for (var x=0; x<cols; x++)
html += '<td>&nbsp;</td>';
 
html += "</tr>";
}
 
html += "</table>";
 
inst.execCommand('mceBeginUndoLevel');
inst.execCommand('mceInsertContent', false, html);
tinyMCE.handleVisualAid(inst.getBody(), true, tinyMCE.settings['visual']);
inst.execCommand('mceEndUndoLevel');
 
tinyMCEPopup.close();
}
 
function makeAttrib(attrib, value) {
var formObj = document.forms[0];
var valueElm = formObj.elements[attrib];
 
if (typeof(value) == "undefined" || value == null) {
value = "";
 
if (valueElm)
value = valueElm.value;
}
 
if (value == "")
return "";
 
// XML encode it
value = value.replace(/&/g, '&amp;');
value = value.replace(/\"/g, '&quot;');
value = value.replace(/</g, '&lt;');
value = value.replace(/>/g, '&gt;');
 
return ' ' + attrib + '="' + value + '"';
}
 
function init() {
tinyMCEPopup.resizeToInnerSize();
 
document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
 
var cols = 2, rows = 2, border = tinyMCE.getParam('table_default_border', '0'), cellpadding = tinyMCE.getParam('table_default_cellpadding', ''), cellspacing = tinyMCE.getParam('table_default_cellspacing', '');
var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = "";
var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "";
var inst = tinyMCE.selectedInstance;
var formObj = document.forms[0];
var elm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
 
tinyMCE.tableElm = elm;
action = tinyMCE.getWindowArg('action');
if (action == null)
action = tinyMCE.tableElm ? "update" : "insert";
 
if (tinyMCE.tableElm && action != "insert") {
var rowsAr = tinyMCE.tableElm.rows;
var cols = 0;
for (var i=0; i<rowsAr.length; i++)
if (rowsAr[i].cells.length > cols)
cols = rowsAr[i].cells.length;
 
cols = cols;
rows = rowsAr.length;
 
st = tinyMCE.parseStyle(tinyMCE.getAttrib(tinyMCE.tableElm, "style"));
border = trimSize(getStyle(elm, 'border', 'borderWidth'));
cellpadding = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellpadding', "");
cellspacing = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellspacing', "");
width = trimSize(getStyle(elm, 'width', 'width'));
height = trimSize(getStyle(elm, 'height', 'height'));
bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor'));
bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor'));
align = tinyMCE.getAttrib(tinyMCE.tableElm, 'align', align);
className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tinyMCE.tableElm, 'class'), false);
id = tinyMCE.getAttrib(tinyMCE.tableElm, 'id');
summary = tinyMCE.getAttrib(tinyMCE.tableElm, 'summary');
style = tinyMCE.serializeStyle(st);
dir = tinyMCE.getAttrib(tinyMCE.tableElm, 'dir');
lang = tinyMCE.getAttrib(tinyMCE.tableElm, 'lang');
background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
formObj.caption.checked = tinyMCE.tableElm.getElementsByTagName('caption').length > 0;
 
orgTableWidth = width;
orgTableHeight = height;
 
action = "update";
}
 
addClassesToList('class', "table_styles");
 
// Update form
selectByValue(formObj, 'align', align);
selectByValue(formObj, 'class', className);
formObj.cols.value = cols;
formObj.rows.value = rows;
formObj.border.value = border;
formObj.cellpadding.value = cellpadding;
formObj.cellspacing.value = cellspacing;
formObj.width.value = width;
formObj.height.value = height;
formObj.bordercolor.value = bordercolor;
formObj.bgcolor.value = bgcolor;
formObj.id.value = id;
formObj.summary.value = summary;
formObj.style.value = style;
formObj.dir.value = dir;
formObj.lang.value = lang;
formObj.backgroundimage.value = background;
formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true);
 
updateColor('bordercolor_pick', 'bordercolor');
updateColor('bgcolor_pick', 'bgcolor');
 
// Resize some elements
if (isVisible('backgroundimagebrowser'))
document.getElementById('backgroundimage').style.width = '180px';
 
// Disable some fields in update mode
if (action == "update") {
formObj.cols.disabled = true;
formObj.rows.disabled = true;
}
}
 
function changedSize() {
var formObj = document.forms[0];
var st = tinyMCE.parseStyle(formObj.style.value);
 
var width = formObj.width.value;
if (width != "")
st['width'] = tinyMCE.getParam("inline_styles") ? getCSSSize(width) : "";
else
st['width'] = "";
 
var height = formObj.height.value;
if (height != "")
st['height'] = getCSSSize(height);
else
st['height'] = "";
 
formObj.style.value = tinyMCE.serializeStyle(st);
}
 
function changedBackgroundImage() {
var formObj = document.forms[0];
var st = tinyMCE.parseStyle(formObj.style.value);
 
st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
 
formObj.style.value = tinyMCE.serializeStyle(st);
}
 
function changedBorder() {
var formObj = document.forms[0];
var st = tinyMCE.parseStyle(formObj.style.value);
 
// Update border width if the element has a color
if (formObj.border.value != "" && formObj.bordercolor.value != "")
st['border-width'] = formObj.border.value + "px";
 
formObj.style.value = tinyMCE.serializeStyle(st);
}
 
function changedColor() {
var formObj = document.forms[0];
var st = tinyMCE.parseStyle(formObj.style.value);
 
st['background-color'] = formObj.bgcolor.value;
 
if (formObj.bordercolor.value != "") {
st['border-color'] = formObj.bordercolor.value;
 
// Add border-width if it's missing
if (!st['border-width'])
st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px";
}
 
formObj.style.value = tinyMCE.serializeStyle(st);
}
 
function changedStyle() {
var formObj = document.forms[0];
var st = tinyMCE.parseStyle(formObj.style.value);
 
if (st['background-image'])
formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
else
formObj.backgroundimage.value = '';
 
if (st['width'])
formObj.width.value = trimSize(st['width']);
 
if (st['height'])
formObj.height.value = trimSize(st['height']);
 
if (st['background-color']) {
formObj.bgcolor.value = st['background-color'];
updateColor('bgcolor_pick','bgcolor');
}
 
if (st['border-color']) {
formObj.bordercolor.value = st['border-color'];
updateColor('bordercolor_pick','bordercolor');
}
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/jscripts/cell.js
New file
0,0 → 1,249
function init() {
tinyMCEPopup.resizeToInnerSize();
 
document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor')
 
var inst = tinyMCE.selectedInstance;
var tdElm = tinyMCE.getParentElement(inst.getFocusElement(), "td,th");
var formObj = document.forms[0];
var st = tinyMCE.parseStyle(tinyMCE.getAttrib(tdElm, "style"));
 
// Get table cell data
var celltype = tdElm.nodeName.toLowerCase();
var align = tinyMCE.getAttrib(tdElm, 'align');
var valign = tinyMCE.getAttrib(tdElm, 'valign');
var width = trimSize(getStyle(tdElm, 'width', 'width'));
var height = trimSize(getStyle(tdElm, 'height', 'height'));
var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor'));
var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor'));
var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tdElm, 'class'), false);
var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;
var id = tinyMCE.getAttrib(tdElm, 'id');
var lang = tinyMCE.getAttrib(tdElm, 'lang');
var dir = tinyMCE.getAttrib(tdElm, 'dir');
var scope = tinyMCE.getAttrib(tdElm, 'scope');
 
// Setup form
addClassesToList('class', 'table_cell_styles');
formObj.bordercolor.value = bordercolor;
formObj.bgcolor.value = bgcolor;
formObj.backgroundimage.value = backgroundimage;
formObj.width.value = width;
formObj.height.value = height;
formObj.id.value = id;
formObj.lang.value = lang;
formObj.style.value = tinyMCE.serializeStyle(st);
selectByValue(formObj, 'align', align);
selectByValue(formObj, 'valign', valign);
selectByValue(formObj, 'class', className);
selectByValue(formObj, 'celltype', celltype);
selectByValue(formObj, 'dir', dir);
selectByValue(formObj, 'scope', scope);
 
// Resize some elements
if (isVisible('backgroundimagebrowser'))
document.getElementById('backgroundimage').style.width = '180px';
 
updateColor('bordercolor_pick', 'bordercolor');
updateColor('bgcolor_pick', 'bgcolor');
}
 
function updateAction() {
tinyMCEPopup.restoreSelection();
 
var inst = tinyMCE.selectedInstance;
var tdElm = tinyMCE.getParentElement(inst.getFocusElement(), "td,th");
var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr");
var tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
var formObj = document.forms[0];
 
inst.execCommand('mceBeginUndoLevel');
 
switch (getSelectValue(formObj, 'action')) {
case "cell":
var celltype = getSelectValue(formObj, 'celltype');
var scope = getSelectValue(formObj, 'scope');
 
if (tinyMCE.getParam("accessibility_warnings")) {
if (celltype == "th" && scope == "")
var answer = confirm(tinyMCE.getLang('lang_table_missing_scope', '', true));
else
var answer = true;
 
if (!answer)
return;
}
 
updateCell(tdElm);
break;
 
case "row":
var cell = trElm.firstChild;
 
if (cell.nodeName != "TD" && cell.nodeName != "TH")
cell = nextCell(cell);
 
do {
cell = updateCell(cell, true);
} while ((cell = nextCell(cell)) != null);
 
break;
 
case "all":
var rows = tableElm.getElementsByTagName("tr");
 
for (var i=0; i<rows.length; i++) {
var cell = rows[i].firstChild;
 
if (cell.nodeName != "TD" && cell.nodeName != "TH")
cell = nextCell(cell);
 
do {
cell = updateCell(cell, true);
} while ((cell = nextCell(cell)) != null);
}
 
break;
}
 
tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
tinyMCE.triggerNodeChange();
inst.execCommand('mceEndUndoLevel');
tinyMCEPopup.close();
}
 
function nextCell(elm) {
while ((elm = elm.nextSibling) != null) {
if (elm.nodeName == "TD" || elm.nodeName == "TH")
return elm;
}
 
return null;
}
 
function updateCell(td, skip_id) {
var inst = tinyMCE.selectedInstance;
var formObj = document.forms[0];
var curCellType = td.nodeName.toLowerCase();
var celltype = getSelectValue(formObj, 'celltype');
var doc = inst.getDoc();
 
if (!skip_id)
td.setAttribute('id', formObj.id.value);
 
td.setAttribute('align', formObj.align.value);
td.setAttribute('vAlign', formObj.valign.value);
td.setAttribute('lang', formObj.lang.value);
td.setAttribute('dir', getSelectValue(formObj, 'dir'));
td.setAttribute('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(formObj.style.value)));
td.setAttribute('scope', formObj.scope.value);
tinyMCE.setAttrib(td, 'class', getSelectValue(formObj, 'class'));
 
// Clear deprecated attributes
tinyMCE.setAttrib(td, 'width', '');
tinyMCE.setAttrib(td, 'height', '');
tinyMCE.setAttrib(td, 'bgColor', '');
tinyMCE.setAttrib(td, 'borderColor', '');
tinyMCE.setAttrib(td, 'background', '');
 
// Set styles
td.style.width = getCSSSize(formObj.width.value);
td.style.height = getCSSSize(formObj.height.value);
if (formObj.bordercolor.value != "") {
td.style.borderColor = formObj.bordercolor.value;
td.style.borderStyle = td.style.borderStyle == "" ? "solid" : td.style.borderStyle;
td.style.borderWidth = td.style.borderWidth == "" ? "1px" : td.style.borderWidth;
} else
td.style.borderColor = '';
 
td.style.backgroundColor = formObj.bgcolor.value;
 
if (formObj.backgroundimage.value != "")
td.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
else
td.style.backgroundImage = '';
 
if (curCellType != celltype) {
// changing to a different node type
var newCell = doc.createElement(celltype);
 
for (var c=0; c<td.childNodes.length; c++)
newCell.appendChild(td.childNodes[c].cloneNode(1));
 
for (var a=0; a<td.attributes.length; a++) {
var attr = td.attributes[a];
newCell.setAttribute(attr.name, attr.value);
}
 
td.parentNode.replaceChild(newCell, td);
td = newCell;
}
 
return td;
}
 
function changedBackgroundImage() {
var formObj = document.forms[0];
var st = tinyMCE.parseStyle(formObj.style.value);
 
st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
 
formObj.style.value = tinyMCE.serializeStyle(st);
}
 
function changedSize() {
var formObj = document.forms[0];
var st = tinyMCE.parseStyle(formObj.style.value);
 
var width = formObj.width.value;
if (width != "")
st['width'] = getCSSSize(width);
else
st['width'] = "";
 
var height = formObj.height.value;
if (height != "")
st['height'] = getCSSSize(height);
else
st['height'] = "";
 
formObj.style.value = tinyMCE.serializeStyle(st);
}
 
function changedColor() {
var formObj = document.forms[0];
var st = tinyMCE.parseStyle(formObj.style.value);
 
st['background-color'] = formObj.bgcolor.value;
st['border-color'] = formObj.bordercolor.value;
 
formObj.style.value = tinyMCE.serializeStyle(st);
}
 
function changedStyle() {
var formObj = document.forms[0];
var st = tinyMCE.parseStyle(formObj.style.value);
 
if (st['background-image'])
formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
else
formObj.backgroundimage.value = '';
 
if (st['width'])
formObj.width.value = trimSize(st['width']);
 
if (st['height'])
formObj.height.value = trimSize(st['height']);
 
if (st['background-color']) {
formObj.bgcolor.value = st['background-color'];
updateColor('bgcolor_pick','bgcolor');
}
 
if (st['border-color']) {
formObj.bordercolor.value = st['border-color'];
updateColor('bordercolor_pick','bordercolor');
}
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/jscripts/merge_cells.js
New file
0,0 → 1,24
function init() {
tinyMCEPopup.resizeToInnerSize();
 
var formObj = document.forms[0];
 
formObj.numcols.value = tinyMCE.getWindowArg('numcols', 1);
formObj.numrows.value = tinyMCE.getWindowArg('numrows', 1);
}
 
function mergeCells() {
var args = new Array();
var formObj = document.forms[0];
 
if (!AutoValidator.validate(formObj)) {
alert(tinyMCE.getLang('lang_invalid_data'));
return false;
}
 
args["numcols"] = formObj.numcols.value;
args["numrows"] = formObj.numrows.value;
 
tinyMCEPopup.execCommand("mceTableMergeCells", false, args);
tinyMCEPopup.close();
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/langs/en.js
New file
0,0 → 1,79
// UK lang variables
 
tinyMCE.addToLang('table',{
general_tab : 'General',
advanced_tab : 'Advanced',
general_props : 'General properties',
advanced_props : 'Advanced properties',
desc : 'Inserts a new table',
row_before_desc : 'Insert row before',
row_after_desc : 'Insert row after',
delete_row_desc : 'Delete row',
col_before_desc : 'Insert column before',
col_after_desc : 'Insert column after',
delete_col_desc : 'Remove column',
rowtype : 'Row in table part',
title : 'Insert/Modify table',
width : 'Width',
height : 'Height',
cols : 'Columns',
rows : 'Rows',
cellspacing : 'Cellspacing',
cellpadding : 'Cellpadding',
border : 'Border',
align : 'Alignment',
align_default : 'Default',
align_left : 'Left',
align_right : 'Right',
align_middle : 'Center',
row_title : 'Table row properties',
cell_title : 'Table cell properties',
cell_type : 'Cell type',
row_desc : 'Table row properties',
cell_desc : 'Table cell properties',
valign : 'Vertical alignment',
align_top : 'Top',
align_bottom : 'Bottom',
props_desc : 'Table properties',
bordercolor : 'Border color',
bgcolor : 'Background color',
merge_cells_title : 'Merge table cells',
split_cells_desc : 'Split merged table cells',
merge_cells_desc : 'Merge table cells',
cut_row_desc : 'Cut table row',
copy_row_desc : 'Copy table row',
paste_row_before_desc : 'Paste table row before',
paste_row_after_desc : 'Paste table row after',
id : 'Id',
style: 'Style',
langdir : 'Language direction',
langcode : 'Language code',
mime : 'Target MIME type',
ltr : 'Left to right',
rtl : 'Right to left',
bgimage : 'Background image',
summary : 'Summary',
td : "Data",
th : "Header",
cell_cell : 'Update current cell',
cell_row : 'Update all cells in row',
cell_all : 'Update all cells in table',
row_row : 'Update current row',
row_odd : 'Update odd rows in table',
row_even : 'Update even rows in table',
row_all : 'Update all rows in table',
thead : 'Table Head',
tbody : 'Table Body',
tfoot : 'Table Foot',
del : 'Delete table',
scope : 'Scope',
row : 'Row',
col : 'Col',
rowgroup : 'Row Group',
colgroup : 'Col Group',
col_limit : 'You\'ve exceeded the maximum number of columns of {$cols}.',
row_limit : 'You\'ve exceeded the maximum number of rows of {$rows}.',
cell_limit : 'You\'ve exceeded the maximum number of cells of {$cells}.',
missing_scope: 'Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.',
caption : 'Table caption'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/langs/fr.js
New file
0,0 → 1,81
// FR lang variables
// Modified by shadow walker, last updated 2007-03-16, based on the work of Motte
 
tinyMCE.addToLang('table',{
general_tab : 'G&eacute;n&eacute;ral',
advanced_tab : 'Avanc&eacute;',
general_props : 'Propri&eacute;t&eacute;s g&eacute;n&eacute;rales',
advanced_props : 'Propri&eacute;t&eacute;s avanc&eacute;es',
desc : 'Ins&eacute;rer/Modifier un tableau',
row_before_desc : 'Ins&eacute;rer une rang&eacute;e avant',
row_after_desc : 'Ins&eacute;rer une rang&eacute;e apr&egrave;s',
delete_row_desc : 'Effacer la rang&eacute;e',
col_before_desc : 'Ins&eacute;rer une colonne avant',
col_after_desc : 'Ins&eacute;rer une colonne apr&egrave;s',
delete_col_desc : 'Effacer la colonne',
rowtype : 'Type de rang&eacute;e',
title : 'Gestionnaire de tableau',
width : 'Largeur',
height : 'Hauteur',
cols : 'Colonnes',
rows : 'Rang&eacute;es',
cellspacing : 'Entre les cellules',
cellpadding : 'Marges int&eacute;rieures',
border : 'Bordures',
align : 'Alignement horizontal',
align_default : 'Par d&eacute;fault',
align_left : 'A gauche',
align_right : 'A droite',
align_middle : 'Centr&eacute;',
row_title : 'Propri&eacute;t&eacute;s des rang&eacute;es',
cell_title : 'Propri&eacute;t&eacute;s des cellules',
cell_type : 'Type',
row_desc : 'Propri&eacute;t&eacute;s des rang&eacute;es',
cell_desc : 'Propri&eacute;t&eacute;s des cellules',
valign : 'Alignement vertical',
align_top : 'Haut',
align_bottom : 'Bas',
props_desc : 'Propri&eacute;t&eacute;s du tableau',
bordercolor : 'Couleur des bordures',
bgcolor : 'Couleur d\'arri&egrave;re-plan',
merge_cells_title : 'Fusionner les cellules',
split_cells_desc : 'Scinder les cellules',
merge_cells_desc : 'Fusionner les cellules',
cut_row_desc : 'Eliminer la rang&eacute;e',
copy_row_desc : 'Copier la rang&eacute;e',
paste_row_before_desc : 'Coller la rang&eacute;e avant',
paste_row_after_desc : 'Coller la rang&eacute;e apr&egrave;s',
id : 'Id',
style: 'Style en ligne',
langdir : 'Sens d\'&eacute;criture',
langcode : 'Code de langue',
mime : 'Type MIME de la cible',
ltr : 'Vers la droite',
rtl : 'Vers la gauche',
bgimage : 'Image d\'arri&egrave;re-plan',
summary : 'Descriptif',
td : "Donn&eacute;e",
th : "En-t&ecirc;te",
cell_cell : 'Appliquer &agrave; la cellule',
cell_row : 'Appliquer &agrave; toute la rang&eacute;e',
cell_all : 'Appliquer &agrave; tout le tableau',
row_row : 'Appliquer &agrave; la rang&eacute;e',
row_odd : 'Appliquer aux rang&eacute;es pair',
row_even : 'Appliquer aux rang&eacute;es impair',
row_all : 'Appliquer &agrave; toutes les rang&eacute;es',
thead : 'En-t&ecirc;te',
tbody : 'Corps',
tfoot : 'Pied',
del : 'Effacer le tableau',
scope : 'Attribut scope',
row : 'Rang&eacute;e',
col : 'Colonne',
rowgroup : 'Groupe de rang&eacute;es',
colgroup : 'Groupe de colonnes',
col_limit : 'Limite de colonnes atteintes {$cols}.',
row_limit : 'Limite de rang&eacute;es atteintes {$rows}.',
cell_limit : 'Limite de cellules atteintes {$cells}.',
missing_scope: 'Les attributs scope rendraient votre tableau de donn&eacute;es plus\naccessible &agrave; certains groupes d\'utilisateurs.\n\nEtes-vous s&ucirc;r de ne pas vouloir sp&eacute;cifier\nd\'attribut scope aux cellules d\'en-t&ecirc;te ?\n\n',
caption : 'Libell&eacute; du tableau',
cellprops_delta_width : 50
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_merge_cells.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_merge_cells.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_cell_props.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_cell_props.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_delete.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_delete.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_insert_col_after.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_insert_col_after.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_insert_col_before.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_insert_col_before.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/buttons.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/buttons.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_delete_row.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_delete_row.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_row_props.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_row_props.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_insert_row_after.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_insert_row_after.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_insert_row_before.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_insert_row_before.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_split_cells.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_split_cells.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_delete_col.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table_delete_col.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/images/table.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/cell.htm
New file
0,0 → 1,182
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_table_cell_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/cell.js"></script>
<link href="css/cell.css" rel="stylesheet" type="text/css" />
<base target="_self" />
</head>
<body id="tablecell" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<form onsubmit="updateAction();return false;" action="#">
<div class="tabs">
<ul>
<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_table_general_tab}</a></span></li>
<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_table_advanced_tab}</a></span></li>
</ul>
</div>
 
<div class="panel_wrapper">
<div id="general_panel" class="panel current">
<fieldset>
<legend>{$lang_table_general_props}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td><label for="align">{$lang_table_align}</label></td>
<td>
<select id="align" name="align">
<option value="">{$lang_not_set}</option>
<option value="center">{$lang_table_align_middle}</option>
<option value="left">{$lang_table_align_left}</option>
<option value="right">{$lang_table_align_right}</option>
</select>
</td>
<td><label for="celltype">{$lang_table_cell_type}</label></td>
<td>
<select id="celltype" name="celltype">
<option value="td">{$lang_table_td}</option>
<option value="th">{$lang_table_th}</option>
</select>
</td>
</tr>
 
<tr>
<td><label for="valign">{$lang_table_valign}</label></td>
<td>
<select id="valign" name="valign">
<option value="">{$lang_not_set}</option>
<option value="top">{$lang_table_align_top}</option>
<option value="middle">{$lang_table_align_middle}</option>
<option value="bottom">{$lang_table_align_bottom}</option>
</select>
</td>
 
<td><label for="scope">{$lang_table_scope}</label></td>
<td>
<select id="scope" name="scope">
<option value="">{$lang_not_set}</option>
<option value="col">{$lang_table_col}</option>
<option value="row">{$lang_table_row}</option>
<option value="rowgroup">{$lang_table_rowgroup}</option>
<option value="colgroup">{$lang_table_colgroup}</option>
</select>
</td>
 
</tr>
 
<tr>
<td><label for="width">{$lang_table_width}</label></td>
<td><input id="width" name="width" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
 
<td><label for="height">{$lang_table_height}</label></td>
<td><input id="height" name="height" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
</tr>
 
<tr id="styleSelectRow">
<td><label for="class">{$lang_class_name}</label></td>
<td colspan="3">
<select id="class" name="class">
<option value="" selected="selected">{$lang_not_set}</option>
</select>
</td>
</tr>
</table>
</fieldset>
</div>
 
<div id="advanced_panel" class="panel">
<fieldset>
<legend>{$lang_table_advanced_props}</legend>
 
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td class="column1"><label for="id">{$lang_table_id}</label></td>
<td><input id="id" name="id" type="text" value="" style="width: 200px" /></td>
</tr>
 
<tr>
<td><label for="style">{$lang_table_style}</label></td>
<td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>
</tr>
 
<tr>
<td class="column1"><label for="dir">{$lang_table_langdir}</label></td>
<td>
<select id="dir" name="dir" style="width: 200px">
<option value="">{$lang_not_set}</option>
<option value="ltr">{$lang_table_ltr}</option>
<option value="rtl">{$lang_table_rtl}</option>
</select>
</td>
</tr>
 
<tr>
<td class="column1"><label for="lang">{$lang_table_langcode}</label></td>
<td>
<input id="lang" name="lang" type="text" value="" style="width: 200px" />
</td>
</tr>
 
<tr>
<td class="column1"><label for="backgroundimage">{$lang_table_bgimage}</label></td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>
<td id="backgroundimagebrowsercontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td class="column1"><label for="bordercolor">{$lang_table_bordercolor}</label></td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>
<td id="bordercolor_pickcontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td class="column1"><label for="bgcolor">{$lang_table_bgcolor}</label></td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
<td id="bgcolor_pickcontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>
</fieldset>
</div>
</div>
 
<div class="mceActionPanel">
<div>
<select id="action" name="action">
<option value="cell">{$lang_table_cell_cell}</option>
<option value="row">{$lang_table_cell_row}</option>
<option value="all">{$lang_table_cell_all}</option>
</select>
</div>
 
<div style="float: left">
<div><input type="button" id="insert" name="insert" value="{$lang_update}" onclick="updateAction();" /></div>
</div>
 
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
</div>
</div>
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/table/editor_plugin_src.js
New file
0,0 → 1,1073
/**
* $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
tinyMCE.importPluginLanguagePack('table');
 
var TinyMCE_TablePlugin = {
getInfo : function() {
return {
longname : 'Tables',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/table',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
initInstance : function(inst) {
if (tinyMCE.isGecko) {
var doc = inst.getDoc();
tinyMCE.addEvent(doc, "mouseup", TinyMCE_TablePlugin._mouseDownHandler);
}
 
inst.tableRowClipboard = null;
},
 
/**
* Returns the HTML contents of the table control.
*/
getControlHTML : function(control_name) {
var controls = new Array(
['table', 'table.gif', 'lang_table_desc', 'mceInsertTable', true],
['delete_table', 'table_delete.gif', 'lang_table_del', 'mceTableDelete'],
['delete_col', 'table_delete_col.gif', 'lang_table_delete_col_desc', 'mceTableDeleteCol'],
['delete_row', 'table_delete_row.gif', 'lang_table_delete_row_desc', 'mceTableDeleteRow'],
['col_after', 'table_insert_col_after.gif', 'lang_table_col_after_desc', 'mceTableInsertColAfter'],
['col_before', 'table_insert_col_before.gif', 'lang_table_col_before_desc', 'mceTableInsertColBefore'],
['row_after', 'table_insert_row_after.gif', 'lang_table_row_after_desc', 'mceTableInsertRowAfter'],
['row_before', 'table_insert_row_before.gif', 'lang_table_row_before_desc', 'mceTableInsertRowBefore'],
['row_props', 'table_row_props.gif', 'lang_table_row_desc', 'mceTableRowProps', true],
['cell_props', 'table_cell_props.gif', 'lang_table_cell_desc', 'mceTableCellProps', true],
['split_cells', 'table_split_cells.gif', 'lang_table_split_cells_desc', 'mceTableSplitCells', true],
['merge_cells', 'table_merge_cells.gif', 'lang_table_merge_cells_desc', 'mceTableMergeCells', true]);
 
// Render table control
for (var i=0; i<controls.length; i++) {
var but = controls[i];
var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + but[3] + '\', ' + (but.length > 4 ? but[4] : false) + (but.length > 5 ? ', \'' + but[5] + '\'' : '') + ');return false;';
 
if (but[0] == control_name)
return tinyMCE.getButtonHTML(control_name, but[2], '{$pluginurl}/images/'+ but[1], but[3], (but.length > 4 ? but[4] : false));
}
 
// Special tablecontrols
if (control_name == "tablecontrols") {
var html = "";
 
html += tinyMCE.getControlHTML("table");
html += tinyMCE.getControlHTML("separator");
html += tinyMCE.getControlHTML("row_props");
html += tinyMCE.getControlHTML("cell_props");
html += tinyMCE.getControlHTML("separator");
html += tinyMCE.getControlHTML("row_before");
html += tinyMCE.getControlHTML("row_after");
html += tinyMCE.getControlHTML("delete_row");
html += tinyMCE.getControlHTML("separator");
html += tinyMCE.getControlHTML("col_before");
html += tinyMCE.getControlHTML("col_after");
html += tinyMCE.getControlHTML("delete_col");
html += tinyMCE.getControlHTML("separator");
html += tinyMCE.getControlHTML("split_cells");
html += tinyMCE.getControlHTML("merge_cells");
 
return html;
}
 
return "";
},
 
/**
* Executes the table commands.
*/
execCommand : function(editor_id, element, command, user_interface, value) {
// Is table command
switch (command) {
case "mceInsertTable":
case "mceTableRowProps":
case "mceTableCellProps":
case "mceTableSplitCells":
case "mceTableMergeCells":
case "mceTableInsertRowBefore":
case "mceTableInsertRowAfter":
case "mceTableDeleteRow":
case "mceTableInsertColBefore":
case "mceTableInsertColAfter":
case "mceTableDeleteCol":
case "mceTableCutRow":
case "mceTableCopyRow":
case "mceTablePasteRowBefore":
case "mceTablePasteRowAfter":
case "mceTableDelete":
var inst = tinyMCE.getInstanceById(editor_id);
 
inst.execCommand('mceBeginUndoLevel');
TinyMCE_TablePlugin._doExecCommand(editor_id, element, command, user_interface, value);
inst.execCommand('mceEndUndoLevel');
 
return true;
}
 
// Pass to next handler in chain
return false;
},
 
handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
var colspan = "1", rowspan = "1", tdElm;
 
var inst = tinyMCE.getInstanceById(editor_id);
 
// Reset table controls
tinyMCE.switchClass(editor_id + '_table', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_delete_table', 'mceButtonDisabled');
tinyMCE.switchClass(editor_id + '_row_props', 'mceButtonDisabled');
tinyMCE.switchClass(editor_id + '_cell_props', 'mceButtonDisabled');
tinyMCE.switchClass(editor_id + '_row_before', 'mceButtonDisabled');
tinyMCE.switchClass(editor_id + '_row_after', 'mceButtonDisabled');
tinyMCE.switchClass(editor_id + '_delete_row', 'mceButtonDisabled');
tinyMCE.switchClass(editor_id + '_col_before', 'mceButtonDisabled');
tinyMCE.switchClass(editor_id + '_col_after', 'mceButtonDisabled');
tinyMCE.switchClass(editor_id + '_delete_col', 'mceButtonDisabled');
tinyMCE.switchClass(editor_id + '_split_cells', 'mceButtonDisabled');
tinyMCE.switchClass(editor_id + '_merge_cells', 'mceButtonDisabled');
 
// Within a td element
if (tdElm = tinyMCE.getParentElement(node, "td,th")) {
tinyMCE.switchClass(editor_id + '_cell_props', 'mceButtonSelected');
tinyMCE.switchClass(editor_id + '_delete_table', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_row_before', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_row_after', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_delete_row', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_col_before', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_col_after', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_delete_col', 'mceButtonNormal');
 
colspan = tinyMCE.getAttrib(tdElm, "colspan");
rowspan = tinyMCE.getAttrib(tdElm, "rowspan");
 
colspan = colspan == "" ? "1" : colspan;
rowspan = rowspan == "" ? "1" : rowspan;
 
if (colspan != "1" || rowspan != "1")
tinyMCE.switchClass(editor_id + '_split_cells', 'mceButtonNormal');
}
 
// Within a tr element
if (tinyMCE.getParentElement(node, "tr"))
tinyMCE.switchClass(editor_id + '_row_props', 'mceButtonSelected');
 
// Within table
if (tinyMCE.getParentElement(node, "table")) {
tinyMCE.switchClass(editor_id + '_table', 'mceButtonSelected');
tinyMCE.switchClass(editor_id + '_merge_cells', 'mceButtonNormal');
}
},
 
// Private plugin internal methods
 
_mouseDownHandler : function(e) {
var elm = tinyMCE.isMSIE ? event.srcElement : e.target;
var focusElm = tinyMCE.selectedInstance.getFocusElement();
 
// If press on special Mozilla create TD/TR thingie
if (elm.nodeName == "BODY" && (focusElm.nodeName == "TD" || focusElm.nodeName == "TH" || (focusElm.parentNode && focusElm.parentNode.nodeName == "TD") ||(focusElm.parentNode && focusElm.parentNode.nodeName == "TH") )) {
window.setTimeout(function() {
var tableElm = tinyMCE.getParentElement(focusElm, "table");
tinyMCE.handleVisualAid(tableElm, true, tinyMCE.settings['visual'], tinyMCE.selectedInstance);
}, 10);
}
},
 
/**
* Executes the table commands.
*/
_doExecCommand : function(editor_id, element, command, user_interface, value) {
var inst = tinyMCE.getInstanceById(editor_id);
var focusElm = inst.getFocusElement();
var trElm = tinyMCE.getParentElement(focusElm, "tr");
var tdElm = tinyMCE.getParentElement(focusElm, "td,th");
var tableElm = tinyMCE.getParentElement(focusElm, "table");
var doc = inst.contentWindow.document;
var tableBorder = tableElm ? tableElm.getAttribute("border") : "";
 
// Get first TD if no TD found
if (trElm && tdElm == null)
tdElm = trElm.cells[0];
 
// ------- Inner functions ---------
function inArray(ar, v) {
for (var i=0; i<ar.length; i++) {
// Is array
if (ar[i].length > 0 && inArray(ar[i], v))
return true;
 
// Found value
if (ar[i] == v)
return true;
}
 
return false;
}
 
function makeTD() {
var newTD = doc.createElement("td");
newTD.innerHTML = "&nbsp;";
}
 
function getColRowSpan(td) {
var colspan = tinyMCE.getAttrib(td, "colspan");
var rowspan = tinyMCE.getAttrib(td, "rowspan");
 
colspan = colspan == "" ? 1 : parseInt(colspan);
rowspan = rowspan == "" ? 1 : parseInt(rowspan);
 
return {colspan : colspan, rowspan : rowspan};
}
 
function getCellPos(grid, td) {
var x, y;
 
for (y=0; y<grid.length; y++) {
for (x=0; x<grid[y].length; x++) {
if (grid[y][x] == td)
return {cellindex : x, rowindex : y};
}
}
 
return null;
}
 
function getCell(grid, row, col) {
if (grid[row] && grid[row][col])
return grid[row][col];
 
return null;
}
 
function getTableGrid(table) {
var grid = new Array(), rows = table.rows, x, y, td, sd, xstart, x2, y2;
 
for (y=0; y<rows.length; y++) {
for (x=0; x<rows[y].cells.length; x++) {
td = rows[y].cells[x];
sd = getColRowSpan(td);
 
// All ready filled
for (xstart = x; grid[y] && grid[y][xstart]; xstart++) ;
 
// Fill box
for (y2=y; y2<y+sd['rowspan']; y2++) {
if (!grid[y2])
grid[y2] = new Array();
 
for (x2=xstart; x2<xstart+sd['colspan']; x2++)
grid[y2][x2] = td;
}
}
}
 
return grid;
}
 
function trimRow(table, tr, td, new_tr) {
var grid = getTableGrid(table), cpos = getCellPos(grid, td);
var cells, lastElm;
 
// Time to crop away some
if (new_tr.cells.length != tr.childNodes.length) {
cells = tr.childNodes;
lastElm = null;
 
for (var x=0; td = getCell(grid, cpos.rowindex, x); x++) {
var remove = true;
var sd = getColRowSpan(td);
 
// Remove due to rowspan
if (inArray(cells, td)) {
new_tr.childNodes[x]._delete = true;
} else if ((lastElm == null || td != lastElm) && sd.colspan > 1) { // Remove due to colspan
for (var i=x; i<x+td.colSpan; i++)
new_tr.childNodes[i]._delete = true;
}
 
if ((lastElm == null || td != lastElm) && sd.rowspan > 1)
td.rowSpan = sd.rowspan + 1;
 
lastElm = td;
}
 
deleteMarked(tableElm);
}
}
 
function prevElm(node, name) {
while ((node = node.previousSibling) != null) {
if (node.nodeName == name)
return node;
}
 
return null;
}
 
function nextElm(node, names) {
var namesAr = names.split(',');
 
while ((node = node.nextSibling) != null) {
for (var i=0; i<namesAr.length; i++) {
if (node.nodeName.toLowerCase() == namesAr[i].toLowerCase() )
return node;
}
}
 
return null;
}
 
function deleteMarked(tbl) {
if (tbl.rows == 0)
return;
 
var tr = tbl.rows[0];
do {
var next = nextElm(tr, "TR");
 
// Delete row
if (tr._delete) {
tr.parentNode.removeChild(tr);
continue;
}
 
// Delete cells
var td = tr.cells[0];
if (td.cells > 1) {
do {
var nexttd = nextElm(td, "TD,TH");
 
if (td._delete)
td.parentNode.removeChild(td);
} while ((td = nexttd) != null);
}
} while ((tr = next) != null);
}
 
function addRows(td_elm, tr_elm, rowspan) {
// Add rows
td_elm.rowSpan = 1;
var trNext = nextElm(tr_elm, "TR");
for (var i=1; i<rowspan && trNext; i++) {
var newTD = doc.createElement("td");
newTD.innerHTML = "&nbsp;";
 
if (tinyMCE.isMSIE)
trNext.insertBefore(newTD, trNext.cells(td_elm.cellIndex));
else
trNext.insertBefore(newTD, trNext.cells[td_elm.cellIndex]);
 
trNext = nextElm(trNext, "TR");
}
}
 
function copyRow(doc, table, tr) {
var grid = getTableGrid(table);
var newTR = tr.cloneNode(false);
var cpos = getCellPos(grid, tr.cells[0]);
var lastCell = null;
var tableBorder = tinyMCE.getAttrib(table, "border");
var tdElm = null;
 
for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
var newTD = null;
 
if (lastCell != tdElm) {
for (var i=0; i<tr.cells.length; i++) {
if (tdElm == tr.cells[i]) {
newTD = tdElm.cloneNode(true);
break;
}
}
}
 
if (newTD == null) {
newTD = doc.createElement("td");
newTD.innerHTML = "&nbsp;";
}
 
// Reset col/row span
newTD.colSpan = 1;
newTD.rowSpan = 1;
 
newTR.appendChild(newTD);
 
lastCell = tdElm;
}
 
return newTR;
}
 
// ---- Commands -----
 
// Handle commands
switch (command) {
case "mceTableRowProps":
if (trElm == null)
return true;
 
if (user_interface) {
// Setup template
var template = new Array();
 
template['file'] = '../../plugins/table/row.htm';
template['width'] = 380;
template['height'] = 295;
 
// Language specific width and height addons
template['width'] += tinyMCE.getLang('lang_table_rowprops_delta_width', 0);
template['height'] += tinyMCE.getLang('lang_table_rowprops_delta_height', 0);
 
// Open window
tinyMCE.openWindow(template, {editor_id : inst.editorId, inline : "yes"});
}
 
return true;
 
case "mceTableCellProps":
if (tdElm == null)
return true;
 
if (user_interface) {
// Setup template
var template = new Array();
 
template['file'] = '../../plugins/table/cell.htm';
template['width'] = 380;
template['height'] = 295;
 
// Language specific width and height addons
template['width'] += tinyMCE.getLang('lang_table_cellprops_delta_width', 0);
template['height'] += tinyMCE.getLang('lang_table_cellprops_delta_height', 0);
 
// Open window
tinyMCE.openWindow(template, {editor_id : inst.editorId, inline : "yes"});
}
 
return true;
 
case "mceInsertTable":
if (user_interface) {
// Setup template
var template = new Array();
 
template['file'] = '../../plugins/table/table.htm';
template['width'] = 380;
template['height'] = 295;
 
// Language specific width and height addons
template['width'] += tinyMCE.getLang('lang_table_table_delta_width', 0);
template['height'] += tinyMCE.getLang('lang_table_table_delta_height', 0);
 
// Open window
tinyMCE.openWindow(template, {editor_id : inst.editorId, inline : "yes", action : value});
}
 
return true;
 
case "mceTableDelete":
var table = tinyMCE.getParentElement(inst.getFocusElement(), "table");
if (table) {
table.parentNode.removeChild(table);
inst.repaint();
}
return true;
 
case "mceTableSplitCells":
case "mceTableMergeCells":
case "mceTableInsertRowBefore":
case "mceTableInsertRowAfter":
case "mceTableDeleteRow":
case "mceTableInsertColBefore":
case "mceTableInsertColAfter":
case "mceTableDeleteCol":
case "mceTableCutRow":
case "mceTableCopyRow":
case "mceTablePasteRowBefore":
case "mceTablePasteRowAfter":
// No table just return (invalid command)
if (!tableElm)
return true;
 
// Table has a tbody use that reference
// Changed logic by ApTest 2005.07.12 (www.aptest.com)
// Now lookk at the focused element and take its parentNode. That will be a tbody or a table.
if (trElm && tableElm != trElm.parentNode)
tableElm = trElm.parentNode;
 
if (tableElm && trElm) {
switch (command) {
case "mceTableCutRow":
if (!trElm || !tdElm)
return true;
 
inst.tableRowClipboard = copyRow(doc, tableElm, trElm);
inst.execCommand("mceTableDeleteRow");
break;
 
case "mceTableCopyRow":
if (!trElm || !tdElm)
return true;
 
inst.tableRowClipboard = copyRow(doc, tableElm, trElm);
break;
 
case "mceTablePasteRowBefore":
if (!trElm || !tdElm)
return true;
 
var newTR = inst.tableRowClipboard.cloneNode(true);
 
var prevTR = prevElm(trElm, "TR");
if (prevTR != null)
trimRow(tableElm, prevTR, prevTR.cells[0], newTR);
 
trElm.parentNode.insertBefore(newTR, trElm);
break;
 
case "mceTablePasteRowAfter":
if (!trElm || !tdElm)
return true;
var nextTR = nextElm(trElm, "TR");
var newTR = inst.tableRowClipboard.cloneNode(true);
 
trimRow(tableElm, trElm, tdElm, newTR);
 
if (nextTR == null)
trElm.parentNode.appendChild(newTR);
else
nextTR.parentNode.insertBefore(newTR, nextTR);
 
break;
 
case "mceTableInsertRowBefore":
if (!trElm || !tdElm)
return true;
 
var grid = getTableGrid(tableElm);
var cpos = getCellPos(grid, tdElm);
var newTR = doc.createElement("tr");
var lastTDElm = null;
 
cpos.rowindex--;
if (cpos.rowindex < 0)
cpos.rowindex = 0;
 
// Create cells
for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
if (tdElm != lastTDElm) {
var sd = getColRowSpan(tdElm);
 
if (sd['rowspan'] == 1) {
var newTD = doc.createElement("td");
 
newTD.innerHTML = "&nbsp;";
newTD.colSpan = tdElm.colSpan;
 
newTR.appendChild(newTD);
} else
tdElm.rowSpan = sd['rowspan'] + 1;
 
lastTDElm = tdElm;
}
}
 
trElm.parentNode.insertBefore(newTR, trElm);
 
grid = getTableGrid(tableElm);
inst.selection.selectNode(getCell(grid, cpos.rowindex + 1, cpos.cellindex), tinyMCE.isGecko, true); // Only collape on gecko
break;
 
case "mceTableInsertRowAfter":
if (!trElm || !tdElm)
return true;
 
var grid = getTableGrid(tableElm);
var cpos = getCellPos(grid, tdElm);
var newTR = doc.createElement("tr");
var lastTDElm = null;
 
// Create cells
for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
if (tdElm != lastTDElm) {
var sd = getColRowSpan(tdElm);
 
if (sd['rowspan'] == 1) {
var newTD = doc.createElement("td");
 
newTD.innerHTML = "&nbsp;";
newTD.colSpan = tdElm.colSpan;
 
newTR.appendChild(newTD);
} else
tdElm.rowSpan = sd['rowspan'] + 1;
 
lastTDElm = tdElm;
}
}
 
if (newTR.hasChildNodes()) {
var nextTR = nextElm(trElm, "TR");
if (nextTR)
nextTR.parentNode.insertBefore(newTR, nextTR);
else
tableElm.appendChild(newTR);
}
 
grid = getTableGrid(tableElm);
inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex), tinyMCE.isGecko, true); // Only collape on gecko
break;
 
case "mceTableDeleteRow":
if (!trElm || !tdElm)
return true;
 
var grid = getTableGrid(tableElm);
var cpos = getCellPos(grid, tdElm);
 
// Only one row, remove whole table
if (grid.length == 1) {
tableElm = tinyMCE.getParentElement(tableElm, "table"); // Look for table instead of tbody
tableElm.parentNode.removeChild(tableElm);
return true;
}
 
// Move down row spanned cells
var cells = trElm.cells;
var nextTR = nextElm(trElm, "TR");
for (var x=0; x<cells.length; x++) {
if (cells[x].rowSpan > 1) {
var newTD = cells[x].cloneNode(true);
var sd = getColRowSpan(cells[x]);
 
newTD.rowSpan = sd.rowspan - 1;
 
var nextTD = nextTR.cells[x];
 
if (nextTD == null)
nextTR.appendChild(newTD);
else
nextTR.insertBefore(newTD, nextTD);
}
}
 
// Delete cells
var lastTDElm = null;
for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
if (tdElm != lastTDElm) {
var sd = getColRowSpan(tdElm);
 
if (sd.rowspan > 1) {
tdElm.rowSpan = sd.rowspan - 1;
} else {
trElm = tdElm.parentNode;
 
if (trElm.parentNode)
trElm._delete = true;
}
 
lastTDElm = tdElm;
}
}
 
deleteMarked(tableElm);
 
cpos.rowindex--;
if (cpos.rowindex < 0)
cpos.rowindex = 0;
 
// Recalculate grid and select
grid = getTableGrid(tableElm);
inst.selection.selectNode(getCell(grid, cpos.rowindex, 0), tinyMCE.isGecko, true); // Only collape on gecko
break;
 
case "mceTableInsertColBefore":
if (!trElm || !tdElm)
return true;
 
var grid = getTableGrid(tableElm);
var cpos = getCellPos(grid, tdElm);
var lastTDElm = null;
 
for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {
if (tdElm != lastTDElm) {
var sd = getColRowSpan(tdElm);
 
if (sd['colspan'] == 1) {
var newTD = doc.createElement(tdElm.nodeName);
 
newTD.innerHTML = "&nbsp;";
newTD.rowSpan = tdElm.rowSpan;
 
tdElm.parentNode.insertBefore(newTD, tdElm);
} else
tdElm.colSpan++;
 
lastTDElm = tdElm;
}
}
 
grid = getTableGrid(tableElm);
inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex + 1), tinyMCE.isGecko, true); // Only collape on gecko
break;
 
case "mceTableInsertColAfter":
if (!trElm || !tdElm)
return true;
 
var grid = getTableGrid(tableElm);
var cpos = getCellPos(grid, tdElm);
var lastTDElm = null;
 
for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {
if (tdElm != lastTDElm) {
var sd = getColRowSpan(tdElm);
 
if (sd['colspan'] == 1) {
var newTD = doc.createElement(tdElm.nodeName);
 
newTD.innerHTML = "&nbsp;";
newTD.rowSpan = tdElm.rowSpan;
 
var nextTD = nextElm(tdElm, "TD,TH");
if (nextTD == null)
tdElm.parentNode.appendChild(newTD);
else
nextTD.parentNode.insertBefore(newTD, nextTD);
} else
tdElm.colSpan++;
 
lastTDElm = tdElm;
}
}
 
grid = getTableGrid(tableElm);
inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex), tinyMCE.isGecko, true); // Only collape on gecko
break;
 
case "mceTableDeleteCol":
if (!trElm || !tdElm)
return true;
 
var grid = getTableGrid(tableElm);
var cpos = getCellPos(grid, tdElm);
var lastTDElm = null;
 
// Only one col, remove whole table
if (grid.length > 1 && grid[0].length <= 1) {
tableElm = tinyMCE.getParentElement(tableElm, "table"); // Look for table instead of tbody
tableElm.parentNode.removeChild(tableElm);
return true;
}
 
// Delete cells
for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {
if (tdElm != lastTDElm) {
var sd = getColRowSpan(tdElm);
 
if (sd['colspan'] > 1)
tdElm.colSpan = sd['colspan'] - 1;
else {
if (tdElm.parentNode)
tdElm.parentNode.removeChild(tdElm);
}
 
lastTDElm = tdElm;
}
}
 
cpos.cellindex--;
if (cpos.cellindex < 0)
cpos.cellindex = 0;
 
// Recalculate grid and select
grid = getTableGrid(tableElm);
inst.selection.selectNode(getCell(grid, cpos.rowindex, 0), tinyMCE.isGecko, true); // Only collape on gecko
break;
 
case "mceTableSplitCells":
if (!trElm || !tdElm)
return true;
 
var spandata = getColRowSpan(tdElm);
 
var colspan = spandata["colspan"];
var rowspan = spandata["rowspan"];
 
// Needs splitting
if (colspan > 1 || rowspan > 1) {
// Generate cols
tdElm.colSpan = 1;
for (var i=1; i<colspan; i++) {
var newTD = doc.createElement("td");
 
newTD.innerHTML = "&nbsp;";
 
trElm.insertBefore(newTD, nextElm(tdElm, "TD,TH"));
 
if (rowspan > 1)
addRows(newTD, trElm, rowspan);
}
 
addRows(tdElm, trElm, rowspan);
}
 
// Apply visual aids
tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
break;
 
case "mceTableMergeCells":
var rows = new Array();
var sel = inst.getSel();
var grid = getTableGrid(tableElm);
 
if (tinyMCE.isMSIE || sel.rangeCount == 1) {
if (user_interface) {
// Setup template
var template = new Array();
var sp = getColRowSpan(tdElm);
 
template['file'] = '../../plugins/table/merge_cells.htm';
template['width'] = 250;
template['height'] = 105 + (tinyMCE.isNS7 ? 25 : 0);
 
// Language specific width and height addons
template['width'] += tinyMCE.getLang('lang_table_merge_cells_delta_width', 0);
template['height'] += tinyMCE.getLang('lang_table_merge_cells_delta_height', 0);
 
// Open window
tinyMCE.openWindow(template, {editor_id : inst.editorId, inline : "yes", action : "update", numcols : sp.colspan, numrows : sp.rowspan});
 
return true;
} else {
var numRows = parseInt(value['numrows']);
var numCols = parseInt(value['numcols']);
var cpos = getCellPos(grid, tdElm);
 
if (("" + numRows) == "NaN")
numRows = 1;
 
if (("" + numCols) == "NaN")
numCols = 1;
 
// Get rows and cells
var tRows = tableElm.rows;
for (var y=cpos.rowindex; y<grid.length; y++) {
var rowCells = new Array();
 
for (var x=cpos.cellindex; x<grid[y].length; x++) {
var td = getCell(grid, y, x);
 
if (td && !inArray(rows, td) && !inArray(rowCells, td)) {
var cp = getCellPos(grid, td);
 
// Within range
if (cp.cellindex < cpos.cellindex+numCols && cp.rowindex < cpos.rowindex+numRows)
rowCells[rowCells.length] = td;
}
}
 
if (rowCells.length > 0)
rows[rows.length] = rowCells;
}
 
//return true;
}
} else {
var cells = new Array();
var sel = inst.getSel();
var lastTR = null;
var curRow = null;
var x1 = -1, y1 = -1, x2, y2;
 
// Only one cell selected, whats the point?
if (sel.rangeCount < 2)
return true;
 
// Get all selected cells
for (var i=0; i<sel.rangeCount; i++) {
var rng = sel.getRangeAt(i);
var tdElm = rng.startContainer.childNodes[rng.startOffset];
 
if (!tdElm)
break;
 
if (tdElm.nodeName == "TD")
cells[cells.length] = tdElm;
}
 
// Get rows and cells
var tRows = tableElm.rows;
for (var y=0; y<tRows.length; y++) {
var rowCells = new Array();
 
for (var x=0; x<tRows[y].cells.length; x++) {
var td = tRows[y].cells[x];
 
for (var i=0; i<cells.length; i++) {
if (td == cells[i]) {
rowCells[rowCells.length] = td;
}
}
}
 
if (rowCells.length > 0)
rows[rows.length] = rowCells;
}
 
// Find selected cells in grid and box
var curRow = new Array();
var lastTR = null;
for (var y=0; y<grid.length; y++) {
for (var x=0; x<grid[y].length; x++) {
grid[y][x]._selected = false;
 
for (var i=0; i<cells.length; i++) {
if (grid[y][x] == cells[i]) {
// Get start pos
if (x1 == -1) {
x1 = x;
y1 = y;
}
 
// Get end pos
x2 = x;
y2 = y;
 
grid[y][x]._selected = true;
}
}
}
}
 
// Is there gaps, if so deny
for (var y=y1; y<=y2; y++) {
for (var x=x1; x<=x2; x++) {
if (!grid[y][x]._selected) {
alert("Invalid selection for merge.");
return true;
}
}
}
}
 
// Validate selection and get total rowspan and colspan
var rowSpan = 1, colSpan = 1;
 
// Validate horizontal and get total colspan
var lastRowSpan = -1;
for (var y=0; y<rows.length; y++) {
var rowColSpan = 0;
 
for (var x=0; x<rows[y].length; x++) {
var sd = getColRowSpan(rows[y][x]);
 
rowColSpan += sd['colspan'];
 
if (lastRowSpan != -1 && sd['rowspan'] != lastRowSpan) {
alert("Invalid selection for merge.");
return true;
}
 
lastRowSpan = sd['rowspan'];
}
 
if (rowColSpan > colSpan)
colSpan = rowColSpan;
 
lastRowSpan = -1;
}
 
// Validate vertical and get total rowspan
var lastColSpan = -1;
for (var x=0; x<rows[0].length; x++) {
var colRowSpan = 0;
 
for (var y=0; y<rows.length; y++) {
var sd = getColRowSpan(rows[y][x]);
 
colRowSpan += sd['rowspan'];
 
if (lastColSpan != -1 && sd['colspan'] != lastColSpan) {
alert("Invalid selection for merge.");
return true;
}
 
lastColSpan = sd['colspan'];
}
 
if (colRowSpan > rowSpan)
rowSpan = colRowSpan;
 
lastColSpan = -1;
}
 
// Setup td
tdElm = rows[0][0];
tdElm.rowSpan = rowSpan;
tdElm.colSpan = colSpan;
 
// Merge cells
for (var y=0; y<rows.length; y++) {
for (var x=0; x<rows[y].length; x++) {
var html = rows[y][x].innerHTML;
var chk = tinyMCE.regexpReplace(html, "[ \t\r\n]", "");
 
if (chk != "<br/>" && chk != "<br>" && chk != "&nbsp;" && (x+y > 0))
tdElm.innerHTML += html;
 
// Not current cell
if (rows[y][x] != tdElm && !rows[y][x]._deleted) {
var cpos = getCellPos(grid, rows[y][x]);
var tr = rows[y][x].parentNode;
 
tr.removeChild(rows[y][x]);
rows[y][x]._deleted = true;
 
// Empty TR, remove it
if (!tr.hasChildNodes()) {
tr.parentNode.removeChild(tr);
 
var lastCell = null;
for (var x=0; cellElm = getCell(grid, cpos.rowindex, x); x++) {
if (cellElm != lastCell && cellElm.rowSpan > 1)
cellElm.rowSpan--;
 
lastCell = cellElm;
}
 
if (tdElm.rowSpan > 1)
tdElm.rowSpan--;
}
}
}
}
 
break;
}
 
tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
tinyMCE.handleVisualAid(tableElm, true, tinyMCE.settings['visual'], tinyMCE.selectedInstance);
tinyMCE.triggerNodeChange();
inst.repaint();
}
 
return true;
}
 
// Pass to next handler in chain
return false;
}
};
 
tinyMCE.addPlugin("table", TinyMCE_TablePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advlink/css/advlink.css
New file
0,0 → 1,35
/* CSS file for advimage plugin popup */
 
.mceLinkList, .mceAnchorList, #targetlist {
width: 280px;
}
 
.mceActionPanel {
margin-top: 7px;
}
 
.panel_wrapper div.current {
height: 320px;
}
 
#classlist, #title, #href {
width: 280px;
}
 
#popupurl, #popupname {
width: 200px;
}
 
#popupwidth, #popupheight, #popupleft, #popuptop {
width: 30px;
vertical-align: middle;
text-align: center;
}
 
#id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey {
width: 200px;
}
 
#events_panel input {
width: 200px;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advlink/readme.txt
New file
0,0 → 1,0
Check the TinyMCE documentation for details on this plugin.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advlink/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('advlink');var TinyMCE_AdvancedLinkPlugin={getInfo:function(){return{longname:'Advanced link',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){inst.addShortcut('ctrl','k','lang_advlink_desc','mceAdvLink')},getControlHTML:function(cn){switch(cn){case"link":return tinyMCE.getButtonHTML(cn,'lang_link_desc','{$themeurl}/images/link.gif','mceAdvLink')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceAdvLink":var inst=tinyMCE.getInstanceById(editor_id),anySelection=false;var focusElm=inst.getFocusElement(),selectedText=inst.selection.getSelectedText();if(tinyMCE.selectedElement)anySelection=(tinyMCE.selectedElement.nodeName.toLowerCase()=="img")||(selectedText&&selectedText.length>0);if(anySelection||(focusElm!=null&&focusElm.nodeName=="A")){tinyMCE.openWindow({file:'../../plugins/advlink/link.htm',width:480+tinyMCE.getLang('lang_advlink_delta_width',0),height:400+tinyMCE.getLang('lang_advlink_delta_height',0)},{editor_id:editor_id,inline:"yes"})}return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;do{if(node.nodeName=="A"&&tinyMCE.getAttrib(node,'href')!=""){tinyMCE.switchClass(editor_id+'_advlink','mceButtonSelected');return true}}while((node=node.parentNode));if(any_selection){tinyMCE.switchClass(editor_id+'_advlink','mceButtonNormal');return true}tinyMCE.switchClass(editor_id+'_advlink','mceButtonDisabled');return true}};tinyMCE.addPlugin("advlink",TinyMCE_AdvancedLinkPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advlink/jscripts/functions.js
New file
0,0 → 1,587
/* Functions for the advlink plugin popup */
 
var templates = {
"window.open" : "window.open('${url}','${target}','${options}')"
};
 
function preinit() {
// Initialize
tinyMCE.setWindowArg('mce_windowresize', false);
 
// Import external list url javascript
var url = tinyMCE.getParam("external_link_list_url");
if (url != null) {
// Fix relative
if (url.charAt(0) != '/' && url.indexOf('://') == -1)
url = tinyMCE.documentBasePath + "/" + url;
 
document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
}
}
 
function changeClass() {
var formObj = document.forms[0];
formObj.classes.value = getSelectValue(formObj, 'classlist');
}
 
function init() {
tinyMCEPopup.resizeToInnerSize();
 
var formObj = document.forms[0];
var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
var elm = inst.getFocusElement();
var action = "insert";
var html;
 
document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink');
document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink');
document.getElementById('linklisthrefcontainer').innerHTML = getLinkListHTML('linklisthref','href');
document.getElementById('anchorlistcontainer').innerHTML = getAnchorListHTML('anchorlist','href');
document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target');
 
// Link list
html = getLinkListHTML('linklisthref','href');
if (html == "")
document.getElementById("linklisthrefrow").style.display = 'none';
else
document.getElementById("linklisthrefcontainer").innerHTML = html;
 
// Resize some elements
if (isVisible('hrefbrowser'))
document.getElementById('href').style.width = '260px';
 
if (isVisible('popupurlbrowser'))
document.getElementById('popupurl').style.width = '180px';
 
elm = tinyMCE.getParentElement(elm, "a");
if (elm != null && elm.nodeName == "A")
action = "update";
 
formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true);
 
setPopupControlsDisabled(true);
 
if (action == "update") {
var href = tinyMCE.getAttrib(elm, 'href');
 
href = convertURL(href, elm, true);
 
// Use mce_href if found
var mceRealHref = tinyMCE.getAttrib(elm, 'mce_href');
if (mceRealHref != "") {
href = mceRealHref;
 
if (tinyMCE.getParam('convert_urls'))
href = convertURL(href, elm, true);
}
 
var onclick = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onclick'));
 
// Setup form data
setFormValue('href', href);
setFormValue('title', tinyMCE.getAttrib(elm, 'title'));
setFormValue('id', tinyMCE.getAttrib(elm, 'id'));
setFormValue('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style"))));
setFormValue('rel', tinyMCE.getAttrib(elm, 'rel'));
setFormValue('rev', tinyMCE.getAttrib(elm, 'rev'));
setFormValue('charset', tinyMCE.getAttrib(elm, 'charset'));
setFormValue('hreflang', tinyMCE.getAttrib(elm, 'hreflang'));
setFormValue('dir', tinyMCE.getAttrib(elm, 'dir'));
setFormValue('lang', tinyMCE.getAttrib(elm, 'lang'));
setFormValue('tabindex', tinyMCE.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));
setFormValue('accesskey', tinyMCE.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));
setFormValue('type', tinyMCE.getAttrib(elm, 'type'));
setFormValue('onfocus', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onfocus')));
setFormValue('onblur', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onblur')));
setFormValue('onclick', onclick);
setFormValue('ondblclick', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'ondblclick')));
setFormValue('onmousedown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousedown')));
setFormValue('onmouseup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseup')));
setFormValue('onmouseover', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover')));
setFormValue('onmousemove', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousemove')));
setFormValue('onmouseout', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout')));
setFormValue('onkeypress', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeypress')));
setFormValue('onkeydown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeydown')));
setFormValue('onkeyup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeyup')));
setFormValue('target', tinyMCE.getAttrib(elm, 'target'));
setFormValue('classes', tinyMCE.getAttrib(elm, 'class'));
 
// Parse onclick data
if (onclick != null && onclick.indexOf('window.open') != -1)
parseWindowOpen(onclick);
else
parseFunction(onclick);
 
// Select by the values
selectByValue(formObj, 'dir', tinyMCE.getAttrib(elm, 'dir'));
selectByValue(formObj, 'rel', tinyMCE.getAttrib(elm, 'rel'));
selectByValue(formObj, 'rev', tinyMCE.getAttrib(elm, 'rev'));
selectByValue(formObj, 'linklisthref', href);
 
if (href.charAt(0) == '#')
selectByValue(formObj, 'anchorlist', href);
 
addClassesToList('classlist', 'advlink_styles');
 
selectByValue(formObj, 'classlist', tinyMCE.getAttrib(elm, 'class'), true);
selectByValue(formObj, 'targetlist', tinyMCE.getAttrib(elm, 'target'), true);
} else
addClassesToList('classlist', 'advlink_styles');
 
window.focus();
}
 
function checkPrefix(n) {
if (!Validator.isEmpty(n) && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCE.getLang('lang_is_email')))
n.value = 'mailto:' + n.value;
 
if (/^\s*www./i.test(n.value) && confirm(tinyMCE.getLang('lang_is_external')))
n.value = 'http://' + n.value;
}
 
function setFormValue(name, value) {
document.forms[0].elements[name].value = value;
}
 
function convertURL(url, node, on_save) {
return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);");
}
 
function parseWindowOpen(onclick) {
var formObj = document.forms[0];
 
// Preprocess center code
if (onclick.indexOf('return false;') != -1) {
formObj.popupreturn.checked = true;
onclick = onclick.replace('return false;', '');
} else
formObj.popupreturn.checked = false;
 
var onClickData = parseLink(onclick);
 
if (onClickData != null) {
formObj.ispopup.checked = true;
setPopupControlsDisabled(false);
 
var onClickWindowOptions = parseOptions(onClickData['options']);
var url = onClickData['url'];
 
if (tinyMCE.getParam('convert_urls'))
url = convertURL(url, null, true);
 
formObj.popupname.value = onClickData['target'];
formObj.popupurl.value = url;
formObj.popupwidth.value = getOption(onClickWindowOptions, 'width');
formObj.popupheight.value = getOption(onClickWindowOptions, 'height');
 
formObj.popupleft.value = getOption(onClickWindowOptions, 'left');
formObj.popuptop.value = getOption(onClickWindowOptions, 'top');
 
if (formObj.popupleft.value.indexOf('screen') != -1)
formObj.popupleft.value = "c";
 
if (formObj.popuptop.value.indexOf('screen') != -1)
formObj.popuptop.value = "c";
 
formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes";
formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes";
formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes";
formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes";
formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes";
formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes";
formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes";
 
buildOnClick();
}
}
 
function parseFunction(onclick) {
var formObj = document.forms[0];
var onClickData = parseLink(onclick);
 
// TODO: Add stuff here
}
 
function getOption(opts, name) {
return typeof(opts[name]) == "undefined" ? "" : opts[name];
}
 
function setPopupControlsDisabled(state) {
var formObj = document.forms[0];
 
formObj.popupname.disabled = state;
formObj.popupurl.disabled = state;
formObj.popupwidth.disabled = state;
formObj.popupheight.disabled = state;
formObj.popupleft.disabled = state;
formObj.popuptop.disabled = state;
formObj.popuplocation.disabled = state;
formObj.popupscrollbars.disabled = state;
formObj.popupmenubar.disabled = state;
formObj.popupresizable.disabled = state;
formObj.popuptoolbar.disabled = state;
formObj.popupstatus.disabled = state;
formObj.popupreturn.disabled = state;
formObj.popupdependent.disabled = state;
 
setBrowserDisabled('popupurlbrowser', state);
}
 
function parseLink(link) {
link = link.replace(new RegExp('&#39;', 'g'), "'");
 
var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1");
 
// Is function name a template function
var template = templates[fnName];
if (template) {
// Build regexp
var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi"));
var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\(";
var replaceStr = "";
for (var i=0; i<variableNames.length; i++) {
// Is string value
if (variableNames[i].indexOf("'${") != -1)
regExp += "'(.*)'";
else // Number value
regExp += "([0-9]*)";
 
replaceStr += "$" + (i+1);
 
// Cleanup variable name
variableNames[i] = variableNames[i].replace(new RegExp("[^A-Za-z0-9]", "gi"), "");
 
if (i != variableNames.length-1) {
regExp += "\\s*,\\s*";
replaceStr += "<delim>";
} else
regExp += ".*";
}
 
regExp += "\\);?";
 
// Build variable array
var variables = new Array();
variables["_function"] = fnName;
var variableValues = link.replace(new RegExp(regExp, "gi"), replaceStr).split('<delim>');
for (var i=0; i<variableNames.length; i++)
variables[variableNames[i]] = variableValues[i];
 
return variables;
}
 
return null;
}
 
function parseOptions(opts) {
if (opts == null || opts == "")
return new Array();
 
// Cleanup the options
opts = opts.toLowerCase();
opts = opts.replace(/;/g, ",");
opts = opts.replace(/[^0-9a-z=,]/g, "");
 
var optionChunks = opts.split(',');
var options = new Array();
 
for (var i=0; i<optionChunks.length; i++) {
var parts = optionChunks[i].split('=');
 
if (parts.length == 2)
options[parts[0]] = parts[1];
}
 
return options;
}
 
function buildOnClick() {
var formObj = document.forms[0];
 
if (!formObj.ispopup.checked) {
formObj.onclick.value = "";
return;
}
 
var onclick = "window.open('";
var url = formObj.popupurl.value;
 
if (tinyMCE.getParam('convert_urls'))
url = convertURL(url, null, true);
 
onclick += url + "','";
onclick += formObj.popupname.value + "','";
 
if (formObj.popuplocation.checked)
onclick += "location=yes,";
 
if (formObj.popupscrollbars.checked)
onclick += "scrollbars=yes,";
 
if (formObj.popupmenubar.checked)
onclick += "menubar=yes,";
 
if (formObj.popupresizable.checked)
onclick += "resizable=yes,";
 
if (formObj.popuptoolbar.checked)
onclick += "toolbar=yes,";
 
if (formObj.popupstatus.checked)
onclick += "status=yes,";
 
if (formObj.popupdependent.checked)
onclick += "dependent=yes,";
 
if (formObj.popupwidth.value != "")
onclick += "width=" + formObj.popupwidth.value + ",";
 
if (formObj.popupheight.value != "")
onclick += "height=" + formObj.popupheight.value + ",";
 
if (formObj.popupleft.value != "") {
if (formObj.popupleft.value != "c")
onclick += "left=" + formObj.popupleft.value + ",";
else
onclick += "left='+(screen.availWidth/2-" + (formObj.popupwidth.value/2) + ")+',";
}
 
if (formObj.popuptop.value != "") {
if (formObj.popuptop.value != "c")
onclick += "top=" + formObj.popuptop.value + ",";
else
onclick += "top='+(screen.availHeight/2-" + (formObj.popupheight.value/2) + ")+',";
}
 
if (onclick.charAt(onclick.length-1) == ',')
onclick = onclick.substring(0, onclick.length-1);
 
onclick += "');";
 
if (formObj.popupreturn.checked)
onclick += "return false;";
 
// tinyMCE.debug(onclick);
 
formObj.onclick.value = onclick;
 
if (formObj.href.value == "")
formObj.href.value = url;
}
 
function setAttrib(elm, attrib, value) {
var formObj = document.forms[0];
var valueElm = formObj.elements[attrib.toLowerCase()];
 
if (typeof(value) == "undefined" || value == null) {
value = "";
 
if (valueElm)
value = valueElm.value;
}
 
if (value != "") {
elm.setAttribute(attrib.toLowerCase(), value);
 
if (attrib == "style")
attrib = "style.cssText";
 
if (attrib.substring(0, 2) == 'on')
value = 'return true;' + value;
 
if (attrib == "class")
attrib = "className";
 
eval('elm.' + attrib + "=value;");
} else
elm.removeAttribute(attrib);
}
 
function getAnchorListHTML(id, target) {
var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
var nodes = inst.getBody().getElementsByTagName("a"), name, i;
var html = "";
 
html += '<select id="' + id + '" name="' + id + '" class="mceAnchorList" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target + '.value=';
html += 'this.options[this.selectedIndex].value;">';
html += '<option value="">---</option>';
 
for (i=0; i<nodes.length; i++) {
if ((name = tinyMCE.getAttrib(nodes[i], "name")) != "")
html += '<option value="#' + name + '">' + name + '</option>';
}
 
html += '</select>';
 
return html;
}
 
function insertAction() {
var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
var elm = inst.getFocusElement();
 
checkPrefix(document.forms[0].href);
 
elm = tinyMCE.getParentElement(elm, "a");
 
tinyMCEPopup.execCommand("mceBeginUndoLevel");
 
// Create new anchor elements
if (elm == null) {
if (tinyMCE.isSafari)
tinyMCEPopup.execCommand("mceInsertContent", false, '<a href="#mce_temp_url#">' + inst.selection.getSelectedHTML() + '</a>');
else
tinyMCEPopup.execCommand("createlink", false, "#mce_temp_url#");
 
var elementArray = tinyMCE.getElementsByAttributeValue(inst.getBody(), "a", "href", "#mce_temp_url#");
for (var i=0; i<elementArray.length; i++) {
var elm = elementArray[i];
 
// Move cursor to end
try {
tinyMCE.selectedInstance.selection.collapse(false);
} catch (ex) {
// Ignore
}
 
// Move cursor behind the new anchor
// Don't remember why this was needed so it's now removed
/*
if (tinyMCE.isGecko) {
var sp = inst.getDoc().createTextNode(" ");
 
if (elm.nextSibling)
elm.parentNode.insertBefore(sp, elm.nextSibling);
else
elm.parentNode.appendChild(sp);
 
// Set range after link
var rng = inst.getDoc().createRange();
rng.setStartAfter(elm);
rng.setEndAfter(elm);
 
// Update selection
var sel = inst.getSel();
sel.removeAllRanges();
sel.addRange(rng);
}
*/
 
setAllAttribs(elm);
}
} else
setAllAttribs(elm);
 
tinyMCE._setEventsEnabled(inst.getBody(), false);
tinyMCEPopup.execCommand("mceEndUndoLevel");
tinyMCEPopup.close();
}
 
function setAllAttribs(elm) {
var formObj = document.forms[0];
var href = formObj.href.value;
var target = getSelectValue(formObj, 'targetlist');
 
// Make anchors absolute
if (href.charAt(0) != '#' && tinyMCE.getParam('convert_urls'))
href = convertURL(href, elm);
 
setAttrib(elm, 'href', href);
setAttrib(elm, 'mce_href', href);
setAttrib(elm, 'title');
setAttrib(elm, 'target', target == '_self' ? '' : target);
setAttrib(elm, 'id');
setAttrib(elm, 'style');
setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));
setAttrib(elm, 'rel');
setAttrib(elm, 'rev');
setAttrib(elm, 'charset');
setAttrib(elm, 'hreflang');
setAttrib(elm, 'dir');
setAttrib(elm, 'lang');
setAttrib(elm, 'tabindex');
setAttrib(elm, 'accesskey');
setAttrib(elm, 'type');
setAttrib(elm, 'onfocus');
setAttrib(elm, 'onblur');
setAttrib(elm, 'onclick');
setAttrib(elm, 'ondblclick');
setAttrib(elm, 'onmousedown');
setAttrib(elm, 'onmouseup');
setAttrib(elm, 'onmouseover');
setAttrib(elm, 'onmousemove');
setAttrib(elm, 'onmouseout');
setAttrib(elm, 'onkeypress');
setAttrib(elm, 'onkeydown');
setAttrib(elm, 'onkeyup');
 
// Refresh in old MSIE
if (tinyMCE.isMSIE5)
elm.outerHTML = elm.outerHTML;
}
 
function getSelectValue(form_obj, field_name) {
var elm = form_obj.elements[field_name];
 
if (elm == null || elm.options == null)
return "";
 
return elm.options[elm.selectedIndex].value;
}
 
function getLinkListHTML(elm_id, target_form_element, onchange_func) {
if (typeof(tinyMCELinkList) == "undefined" || tinyMCELinkList.length == 0)
return "";
 
var html = "";
 
html += '<select id="' + elm_id + '" name="' + elm_id + '"';
html += ' class="mceLinkList" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';
html += 'this.options[this.selectedIndex].value;';
 
if (typeof(onchange_func) != "undefined")
html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';
 
html += '"><option value="">---</option>';
 
for (var i=0; i<tinyMCELinkList.length; i++)
html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';
 
html += '</select>';
 
return html;
 
// tinyMCE.debug('-- image list start --', html, '-- image list end --');
}
 
function getTargetListHTML(elm_id, target_form_element) {
var targets = tinyMCE.getParam('theme_advanced_link_targets', '').split(';');
var html = '';
 
html += '<select id="' + elm_id + '" name="' + elm_id + '" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';
html += 'this.options[this.selectedIndex].value;">';
 
html += '<option value="_self">' + tinyMCE.getLang('lang_advlink_target_same') + '</option>';
html += '<option value="_blank">' + tinyMCE.getLang('lang_advlink_target_blank') + ' (_blank)</option>';
html += '<option value="_parent">' + tinyMCE.getLang('lang_advlink_target_parent') + ' (_parent)</option>';
html += '<option value="_top">' + tinyMCE.getLang('lang_advlink_target_top') + ' (_top)</option>';
 
for (var i=0; i<targets.length; i++) {
var key, value;
 
if (targets[i] == "")
continue;
 
key = targets[i].split('=')[0];
value = targets[i].split('=')[1];
 
html += '<option value="' + key + '">' + value + ' (' + key + ')</option>';
}
 
html += '</select>';
 
return html;
}
 
// While loading
preinit();
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advlink/langs/en.js
New file
0,0 → 1,46
// UK lang variables
 
tinyMCE.addToLang('advlink',{
general_tab : 'General',
popup_tab : 'Popup',
events_tab : 'Events',
advanced_tab : 'Advanced',
general_props : 'General properties',
popup_props : 'Popup properties',
event_props : 'Events',
advanced_props : 'Advanced properties',
popup_opts : 'Options',
anchor_names : 'Anchors',
target_same : 'Open in this window / frame',
target_parent : 'Open in parent window / frame',
target_top : 'Open in top frame (replaces all frames)',
target_blank : 'Open in new window',
popup : 'Javascript popup',
popup_url : 'Popup URL',
popup_name : 'Window name',
popup_return : 'Insert \'return false\'',
popup_scrollbars : 'Show scrollbars',
popup_statusbar : 'Show status bar',
popup_toolbar : 'Show toolbars',
popup_menubar : 'Show menu bar',
popup_location : 'Show location bar',
popup_resizable : 'Make window resizable',
popup_dependent : 'Dependent (Mozilla/Firefox only)',
popup_size : 'Size',
popup_position : 'Position (X/Y)',
id : 'Id',
style: 'Style',
classes : 'Classes',
target_name : 'Target name',
langdir : 'Language direction',
target_langcode : 'Target language',
langcode : 'Language code',
encoding : 'Target character encoding',
mime : 'Target MIME type',
rel : 'Relationship page to target',
rev : 'Relationship target to page',
tabindex : 'Tabindex',
accesskey : 'Accesskey',
ltr : 'Left to right',
rtl : 'Right to left'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advlink/langs/fr.js
New file
0,0 → 1,48
// FR lang variables
// Modified by Motte, last updated 2006-03-23
 
tinyMCE.addToLang('advlink',{
popup_missingtarget : 'Veuillez ins&eacute;rer un nom pour la cible ou choisissez une autre option.',
general_tab : 'G&eacute;n&eacute;ral',
popup_tab : 'Popup',
events_tab : 'Ev&ecirc;nements',
advanced_tab : 'Avanc&eacute;',
general_props : 'Propri&eacute;t&eacute;s g&eacute;n&eacute;rales',
popup_props : 'Propri&eacute;t&eacute;s Popup',
event_props : 'Ev&ecirc;nements',
advanced_props : 'Propri&eacute;t&eacute;s Avanc&eacute;es',
popup_opts : 'Options',
anchor_names : 'Ancres',
target_same : 'Ouvre dans la m&ecirc;me fen&ecirc;tre / Cadre',
target_parent : 'Ouvre dans la fen&ecirc;tre / cadre parente',
target_top : 'Ouvre dans le Top frame (remplace toutes les cadres)',
target_blank : 'Ouvre dans une nouvelle fen&ecirc;tre',
popup : 'JS-Popup',
popup_url : 'URL de la Popup',
popup_name : 'Nom de la fen&ecirc;tre',
popup_return : 'Insert \'return false\'',
popup_scrollbars : 'Montrer la barre de d&eacute;filement ',
popup_statusbar : 'Montrer la barre d\'&eacute;tat',
popup_toolbar : 'Montrer la barre d\'outils',
popup_menubar : 'Montrer la barre du menu',
popup_location : 'Montre la barre d\'adresse',
popup_resizable : 'Fabriquer une fen&ecirc;tre redimensionnable',
popup_dependent : 'Dependent (Mozilla/Firefox only)',
popup_size : 'Taille',
popup_position : 'Position (X/Y)',
id : 'Id',
style: 'Style',
classes : 'Classes',
target_name : 'Nom de la cible',
langdir : 'Sens d\'&eacute;criture',
target_langcode : 'Langage cible',
langcode : 'Code langue',
encoding : 'Codage caract&egrave;res de la cible',
mime : 'Type MIME de la cible',
rel : 'Page relative &agrave; la cible',
rev : 'Cible relative &agrave; la page',
tabindex : 'Tabindex',
accesskey : 'Touche d\'acc&egrave;s',
ltr : 'De gauche &agrave; droite',
rtl : 'De droite &agrave; gauche'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advlink/link.htm
New file
0,0 → 1,338
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_insert_link_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/functions.js"></script>
<link href="css/advlink.css" rel="stylesheet" type="text/css" />
<base target="_self" />
</head>
<body id="advlink" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<form onsubmit="insertAction();return false;" action="#">
<div class="tabs">
<ul>
<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_advlink_general_tab}</a></span></li>
<li id="popup_tab"><span><a href="javascript:mcTabs.displayTab('popup_tab','popup_panel');" onmousedown="return false;">{$lang_advlink_popup_tab}</a></span></li>
<li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_advlink_events_tab}</a></span></li>
<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_advlink_advanced_tab}</a></span></li>
</ul>
</div>
 
<div class="panel_wrapper">
<div id="general_panel" class="panel current">
<fieldset>
<legend>{$lang_advlink_general_props}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td nowrap="nowrap"><label id="hreflabel" for="href">{$lang_insert_link_url}</label></td>
<td><table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input id="href" name="href" type="text" value="" onchange="selectByValue(this.form,'linklisthref',this.value);" /></td>
<td id="hrefbrowsercontainer">&nbsp;</td>
</tr>
</table></td>
</tr>
<tr id="linklisthrefrow">
<td class="column1"><label for="linklisthref">{$lang_link_list}</label></td>
<td colspan="2" id="linklisthrefcontainer">&nbsp;</td>
</tr>
<tr>
<td class="column1"><label for="anchorlist">{$lang_advlink_anchor_names}</label></td>
<td colspan="2" id="anchorlistcontainer">&nbsp;</td>
</tr>
<tr>
<td><label id="targetlistlabel" for="targetlist">{$lang_insert_link_target}</label></td>
<td id="targetlistcontainer">&nbsp;</td>
</tr>
<tr>
<td nowrap="nowrap"><label id="titlelabel" for="title">{$lang_theme_insert_link_titlefield}</label></td>
<td><input id="title" name="title" type="text" value="" /></td>
</tr>
<tr>
<td><label id="classlabel" for="classlist">{$lang_class_name}</label></td>
<td>
<select id="classlist" name="classlist" onchange="changeClass();">
<option value="" selected>{$lang_not_set}</option>
</select>
</td>
</tr>
</table>
</fieldset>
</div>
 
<div id="popup_panel" class="panel">
<fieldset>
<legend>{$lang_advlink_popup_props}</legend>
 
<input type="checkbox" id="ispopup" name="ispopup" class="radio" onclick="setPopupControlsDisabled(!this.checked);buildOnClick();" />
<label id="ispopuplabel" for="ispopup">{$lang_advlink_popup}</label>
 
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td nowrap="nowrap"><label for="popupurl">{$lang_advlink_popup_url}</label>&nbsp;</td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" name="popupurl" id="popupurl" value="" onchange="buildOnClick();" /></td>
<td id="popupurlbrowsercontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr>
<td nowrap="nowrap"><label for="popupname">{$lang_advlink_popup_name}</label>&nbsp;</td>
<td><input type="text" name="popupname" id="popupname" value="" onchange="buildOnClick();" /></td>
</tr>
<tr>
<td nowrap="nowrap"><label>{$lang_advlink_popup_size}</label>&nbsp;</td>
<td nowrap="nowrap">
<input type="text" id="popupwidth" name="popupwidth" value="" onchange="buildOnClick();" /> x
<input type="text" id="popupheight" name="popupheight" value="" onchange="buildOnClick();" /> px
</td>
</tr>
<tr>
<td nowrap="nowrap" id="labelleft"><label>{$lang_advlink_popup_position}</label>&nbsp;</td>
<td nowrap="nowrap">
<input type="text" id="popupleft" name="popupleft" value="" onchange="buildOnClick();" /> /
<input type="text" id="popuptop" name="popuptop" value="" onchange="buildOnClick();" /> (c /c = center)
</td>
</tr>
</table>
 
<fieldset>
<legend>{$lang_advlink_popup_opts}</legend>
 
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td><input type="checkbox" id="popuplocation" name="popuplocation" class="checkbox" onchange="buildOnClick();" /></td>
<td nowrap="nowrap"><label id="popuplocationlabel" for="popuplocation">{$lang_advlink_popup_location}</label></td>
<td><input type="checkbox" id="popupscrollbars" name="popupscrollbars" class="checkbox" onchange="buildOnClick();" /></td>
<td nowrap="nowrap"><label id="popupscrollbarslabel" for="popupscrollbars">{$lang_advlink_popup_scrollbars}</label></td>
</tr>
<tr>
<td><input type="checkbox" id="popupmenubar" name="popupmenubar" class="checkbox" onchange="buildOnClick();" /></td>
<td nowrap="nowrap"><label id="popupmenubarlabel" for="popupmenubar">{$lang_advlink_popup_menubar}</label></td>
<td><input type="checkbox" id="popupresizable" name="popupresizable" class="checkbox" onchange="buildOnClick();" /></td>
<td nowrap="nowrap"><label id="popupresizablelabel" for="popupresizable">{$lang_advlink_popup_resizable}</label></td>
</tr>
<tr>
<td><input type="checkbox" id="popuptoolbar" name="popuptoolbar" class="checkbox" onchange="buildOnClick();" /></td>
<td nowrap="nowrap"><label id="popuptoolbarlabel" for="popuptoolbar">{$lang_advlink_popup_toolbar}</label></td>
<td><input type="checkbox" id="popupdependent" name="popupdependent" class="checkbox" onchange="buildOnClick();" /></td>
<td nowrap="nowrap"><label id="popupdependentlabel" for="popupdependent">{$lang_advlink_popup_dependent}</label></td>
</tr>
<tr>
<td><input type="checkbox" id="popupstatus" name="popupstatus" class="checkbox" onchange="buildOnClick();" /></td>
<td nowrap="nowrap"><label id="popupstatuslabel" for="popupstatus">{$lang_advlink_popup_statusbar}</label></td>
<td><input type="checkbox" id="popupreturn" name="popupreturn" class="checkbox" onchange="buildOnClick();" checked="checked" /></td>
<td nowrap="nowrap"><label id="popupreturnlabel" for="popupreturn">{$lang_advlink_popup_return}</label></td>
</tr>
</table>
</fieldset>
</fieldset>
</div>
 
<div id="advanced_panel" class="panel">
<fieldset>
<legend>{$lang_advlink_advanced_props}</legend>
 
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td class="column1"><label id="idlabel" for="id">{$lang_advlink_id}</label></td>
<td><input id="id" name="id" type="text" value="" /></td>
</tr>
 
<tr>
<td><label id="stylelabel" for="style">{$lang_advlink_style}</label></td>
<td><input type="text" id="style" name="style" value="" /></td>
</tr>
 
<tr>
<td><label id="classeslabel" for="classes">{$lang_advlink_classes}</label></td>
<td><input type="text" id="classes" name="classes" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td>
</tr>
 
<tr>
<td><label id="targetlabel" for="target">{$lang_advlink_target_name}</label></td>
<td><input type="text" id="target" name="target" value="" onchange="selectByValue(this.form,'targetlist',this.value,true);" /></td>
</tr>
 
<tr>
<td class="column1"><label id="dirlabel" for="dir">{$lang_advlink_langdir}</label></td>
<td>
<select id="dir" name="dir">
<option value="">{$lang_not_set}</option>
<option value="ltr">{$lang_advlink_ltr}</option>
<option value="rtl">{$lang_advlink_rtl}</option>
</select>
</td>
</tr>
 
<tr>
<td><label id="hreflanglabel" for="hreflang">{$lang_advlink_target_langcode}</label></td>
<td><input type="text" id="hreflang" name="hreflang" value="" /></td>
</tr>
 
<tr>
<td class="column1"><label id="langlabel" for="lang">{$lang_advlink_langcode}</label></td>
<td>
<input id="lang" name="lang" type="text" value="" />
</td>
</tr>
 
<tr>
<td><label id="charsetlabel" for="charset">{$lang_advlink_encoding}</label></td>
<td><input type="text" id="charset" name="charset" value="" /></td>
</tr>
 
<tr>
<td><label id="typelabel" for="type">{$lang_advlink_mime}</label></td>
<td><input type="text" id="type" name="type" value="" /></td>
</tr>
 
<tr>
<td><label id="rellabel" for="rel">{$lang_advlink_rel}</label></td>
<td><select id="rel" name="rel">
<option value="">{$lang_not_set}</option>
<option value="lightbox">Lightbox</option>
<option value="alternate">Alternate</option>
<option value="designates">Designates</option>
<option value="stylesheet">Stylesheet</option>
<option value="start">Start</option>
<option value="next">Next</option>
<option value="prev">Prev</option>
<option value="contents">Contents</option>
<option value="index">Index</option>
<option value="glossary">Glossary</option>
<option value="copyright">Copyright</option>
<option value="chapter">Chapter</option>
<option value="subsection">Subsection</option>
<option value="appendix">Appendix</option>
<option value="help">Help</option>
<option value="bookmark">Bookmark</option>
<option value="nofollow">No Follow</option>
<option value="tag">Tag</option>
</select>
</td>
</tr>
 
<tr>
<td><label id="revlabel" for="rev">{$lang_advlink_rev}</label></td>
<td><select id="rev" name="rev">
<option value="">{$lang_not_set}</option>
<option value="alternate">Alternate</option>
<option value="designates">Designates</option>
<option value="stylesheet">Stylesheet</option>
<option value="start">Start</option>
<option value="next">Next</option>
<option value="prev">Prev</option>
<option value="contents">Contents</option>
<option value="index">Index</option>
<option value="glossary">Glossary</option>
<option value="copyright">Copyright</option>
<option value="chapter">Chapter</option>
<option value="subsection">Subsection</option>
<option value="appendix">Appendix</option>
<option value="help">Help</option>
<option value="bookmark">Bookmark</option>
</select>
</td>
</tr>
 
<tr>
<td><label id="tabindexlabel" for="tabindex">{$lang_advlink_tabindex}</label></td>
<td><input type="text" id="tabindex" name="tabindex" value="" /></td>
</tr>
 
<tr>
<td><label id="accesskeylabel" for="accesskey">{$lang_advlink_accesskey}</label></td>
<td><input type="text" id="accesskey" name="accesskey" value="" /></td>
</tr>
</table>
</fieldset>
</div>
 
<div id="events_panel" class="panel">
<fieldset>
<legend>{$lang_advlink_event_props}</legend>
 
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td class="column1"><label for="onfocus">onfocus</label></td>
<td><input id="onfocus" name="onfocus" type="text" value="" /></td>
</tr>
 
<tr>
<td class="column1"><label for="onblur">onblur</label></td>
<td><input id="onblur" name="onblur" type="text" value="" /></td>
</tr>
 
<tr>
<td class="column1"><label for="onclick">onclick</label></td>
<td><input id="onclick" name="onclick" type="text" value="" /></td>
</tr>
 
<tr>
<td class="column1"><label for="ondblclick">ondblclick</label></td>
<td><input id="ondblclick" name="ondblclick" type="text" value="" /></td>
</tr>
 
<tr>
<td class="column1"><label for="onmousedown">onmousedown</label></td>
<td><input id="onmousedown" name="onmousedown" type="text" value="" /></td>
</tr>
 
<tr>
<td class="column1"><label for="onmouseup">onmouseup</label></td>
<td><input id="onmouseup" name="onmouseup" type="text" value="" /></td>
</tr>
 
<tr>
<td class="column1"><label for="onmouseover">onmouseover</label></td>
<td><input id="onmouseover" name="onmouseover" type="text" value="" /></td>
</tr>
 
<tr>
<td class="column1"><label for="onmousemove">onmousemove</label></td>
<td><input id="onmousemove" name="onmousemove" type="text" value="" /></td>
</tr>
 
<tr>
<td class="column1"><label for="onmouseout">onmouseout</label></td>
<td><input id="onmouseout" name="onmouseout" type="text" value="" /></td>
</tr>
 
<tr>
<td class="column1"><label for="onkeypress">onkeypress</label></td>
<td><input id="onkeypress" name="onkeypress" type="text" value="" /></td>
</tr>
 
<tr>
<td class="column1"><label for="onkeydown">onkeydown</label></td>
<td><input id="onkeydown" name="onkeydown" type="text" value="" /></td>
</tr>
 
<tr>
<td class="column1"><label for="onkeyup">onkeyup</label></td>
<td><input id="onkeyup" name="onkeyup" type="text" value="" /></td>
</tr>
</table>
</fieldset>
</div>
</div>
 
<div class="mceActionPanel">
<div style="float: left">
<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertAction();" />
</div>
 
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
</div>
</div>
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/advlink/editor_plugin_src.js
New file
0,0 → 1,83
/**
* $Id: editor_plugin_src.js 268 2007-04-28 15:52:59Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
tinyMCE.importPluginLanguagePack('advlink');
 
var TinyMCE_AdvancedLinkPlugin = {
getInfo : function() {
return {
longname : 'Advanced link',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
initInstance : function(inst) {
inst.addShortcut('ctrl', 'k', 'lang_advlink_desc', 'mceAdvLink');
},
 
getControlHTML : function(cn) {
switch (cn) {
case "link":
return tinyMCE.getButtonHTML(cn, 'lang_link_desc', '{$themeurl}/images/link.gif', 'mceAdvLink');
}
 
return "";
},
 
execCommand : function(editor_id, element, command, user_interface, value) {
switch (command) {
case "mceAdvLink":
var inst = tinyMCE.getInstanceById(editor_id), anySelection = false;
var focusElm = inst.getFocusElement(), selectedText = inst.selection.getSelectedText();
 
if (tinyMCE.selectedElement)
anySelection = (tinyMCE.selectedElement.nodeName.toLowerCase() == "img") || (selectedText && selectedText.length > 0);
 
if (anySelection || (focusElm != null && focusElm.nodeName == "A")) {
tinyMCE.openWindow({
file : '../../plugins/advlink/link.htm',
width : 480 + tinyMCE.getLang('lang_advlink_delta_width', 0),
height : 400 + tinyMCE.getLang('lang_advlink_delta_height', 0)
}, {
editor_id : editor_id,
inline : "yes"
});
}
 
return true;
}
 
return false;
},
 
handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
if (node == null)
return;
 
do {
if (node.nodeName == "A" && tinyMCE.getAttrib(node, 'href') != "") {
tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonSelected');
return true;
}
} while ((node = node.parentNode));
 
if (any_selection) {
tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonNormal');
return true;
}
 
tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonDisabled');
 
return true;
}
};
 
tinyMCE.addPlugin("advlink", TinyMCE_AdvancedLinkPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/print/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('print');var TinyMCE_PrintPlugin={getInfo:function(){return{longname:'Print',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"print":return tinyMCE.getButtonHTML(cn,'lang_print_desc','{$pluginurl}/images/print.gif','mcePrint')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mcePrint":tinyMCE.getInstanceById(editor_id).contentWindow.print();return true}return false}};tinyMCE.addPlugin("print",TinyMCE_PrintPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/print/langs/fr.js
New file
0,0 → 1,6
// FR lang variables
// Modified by Motte, last updated 2006-03-23
 
tinyMCE.addToLang('',{
print_desc : 'Imprimer'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/print/langs/en.js
New file
0,0 → 1,5
// UK lang variables
 
tinyMCE.addToLang('',{
print_desc : 'Print'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/print/images/print.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/print/images/print.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/print/editor_plugin_src.js
New file
0,0 → 1,47
/**
* $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('print');
 
var TinyMCE_PrintPlugin = {
getInfo : function() {
return {
longname : 'Print',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
getControlHTML : function(cn) {
switch (cn) {
case "print":
return tinyMCE.getButtonHTML(cn, 'lang_print_desc', '{$pluginurl}/images/print.gif', 'mcePrint');
}
 
return "";
},
 
/**
* Executes the search/replace commands.
*/
execCommand : function(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
case "mcePrint":
tinyMCE.getInstanceById(editor_id).contentWindow.print();
return true;
}
 
// Pass to next handler in chain
return false;
}
};
 
tinyMCE.addPlugin("print", TinyMCE_PrintPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/print/readme.txt
New file
0,0 → 1,0
Check the TinyMCE documentation for details on this plugin.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/flash/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('flash');var TinyMCE_FlashPlugin={getInfo:function(){return{longname:'Flash',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/flash',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(!tinyMCE.settings['flash_skip_plugin_css'])tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/flash/css/content.css")},getControlHTML:function(cn){switch(cn){case"flash":return tinyMCE.getButtonHTML(cn,'lang_flash_desc','{$pluginurl}/images/flash.gif','mceFlash')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceFlash":var name="",swffile="",swfwidth="",swfheight="",action="insert";var template=new Array();var inst=tinyMCE.getInstanceById(editor_id);var focusElm=inst.getFocusElement();template['file']='../../plugins/flash/flash.htm';template['width']=430;template['height']=175;template['width']+=tinyMCE.getLang('lang_flash_delta_width',0);template['height']+=tinyMCE.getLang('lang_flash_delta_height',0);if(focusElm!=null&&focusElm.nodeName.toLowerCase()=="img"){name=tinyMCE.getAttrib(focusElm,'class');if(name.indexOf('mceItemFlash')==-1)return true;swffile=tinyMCE.getAttrib(focusElm,'alt');if(tinyMCE.getParam('convert_urls'))swffile=eval(tinyMCE.settings['urlconverter_callback']+"(swffile, null, true);");swfwidth=tinyMCE.getAttrib(focusElm,'width');swfheight=tinyMCE.getAttrib(focusElm,'height');action="update"}tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes",swffile:swffile,swfwidth:swfwidth,swfheight:swfheight,action:action});return true}return false},cleanup:function(type,content){switch(type){case"insert_to_editor_dom":if(tinyMCE.getParam('convert_urls')){var imgs=content.getElementsByTagName("img");for(var i=0;i<imgs.length;i++){if(tinyMCE.getAttrib(imgs[i],"class")=="mceItemFlash"){var src=tinyMCE.getAttrib(imgs[i],"alt");if(tinyMCE.getParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callback']+"(src, null, true);");imgs[i].setAttribute('alt',src);imgs[i].setAttribute('title',src)}}}break;case"get_from_editor_dom":var imgs=content.getElementsByTagName("img");for(var i=0;i<imgs.length;i++){if(tinyMCE.getAttrib(imgs[i],"class")=="mceItemFlash"){var src=tinyMCE.getAttrib(imgs[i],"alt");if(tinyMCE.getParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callback']+"(src, null, true);");imgs[i].setAttribute('alt',src);imgs[i].setAttribute('title',src)}}break;case"insert_to_editor":var startPos=0;var embedList=new Array();content=content.replace(new RegExp('<[ ]*embed','gi'),'<embed');content=content.replace(new RegExp('<[ ]*/embed[ ]*>','gi'),'</embed>');content=content.replace(new RegExp('<[ ]*object','gi'),'<object');content=content.replace(new RegExp('<[ ]*/object[ ]*>','gi'),'</object>');while((startPos=content.indexOf('<embed',startPos+1))!=-1){var endPos=content.indexOf('>',startPos);var attribs=TinyMCE_FlashPlugin._parseAttributes(content.substring(startPos+6,endPos));embedList[embedList.length]=attribs}var index=0;while((startPos=content.indexOf('<object',startPos))!=-1){if(index>=embedList.length)break;var attribs=embedList[index];endPos=content.indexOf('</object>',startPos);endPos+=9;var contentAfter=content.substring(endPos);content=content.substring(0,startPos);content+='<img width="'+attribs["width"]+'" height="'+attribs["height"]+'"';content+=' src="'+(tinyMCE.getParam("theme_href")+'/images/spacer.gif')+'" title="'+attribs["src"]+'"';content+=' alt="'+attribs["src"]+'" class="mceItemFlash" />'+content.substring(endPos);content+=contentAfter;index++;startPos++}var index=0;while((startPos=content.indexOf('<embed',startPos))!=-1){if(index>=embedList.length)break;var attribs=embedList[index];endPos=content.indexOf('>',startPos);endPos+=9;var contentAfter=content.substring(endPos);content=content.substring(0,startPos);content+='<img width="'+attribs["width"]+'" height="'+attribs["height"]+'"';content+=' src="'+(tinyMCE.getParam("theme_href")+'/images/spacer.gif')+'" title="'+attribs["src"]+'"';content+=' alt="'+attribs["src"]+'" class="mceItemFlash" />'+content.substring(endPos);content+=contentAfter;index++;startPos++}break;case"get_from_editor":var startPos=-1;while((startPos=content.indexOf('<img',startPos+1))!=-1){var endPos=content.indexOf('/>',startPos);var attribs=TinyMCE_FlashPlugin._parseAttributes(content.substring(startPos+4,endPos));if(attribs['class']!="mceItemFlash")continue;endPos+=2;var embedHTML='';var wmode=tinyMCE.getParam("flash_wmode","");var quality=tinyMCE.getParam("flash_quality","high");var menu=tinyMCE.getParam("flash_menu","false");embedHTML+='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"';embedHTML+=' codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"';embedHTML+=' width="'+attribs["width"]+'" height="'+attribs["height"]+'">';embedHTML+='<param name="movie" value="'+attribs["title"]+'" />';embedHTML+='<param name="quality" value="'+quality+'" />';embedHTML+='<param name="menu" value="'+menu+'" />';embedHTML+='<param name="wmode" value="'+wmode+'" />';embedHTML+='<embed src="'+attribs["title"]+'" wmode="'+wmode+'" quality="'+quality+'" menu="'+menu+'" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="'+attribs["width"]+'" height="'+attribs["height"]+'"></embed></object>';chunkBefore=content.substring(0,startPos);chunkAfter=content.substring(endPos);content=chunkBefore+embedHTML+chunkAfter}break}return content},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;do{if(node.nodeName=="IMG"&&tinyMCE.getAttrib(node,'class').indexOf('mceItemFlash')==0){tinyMCE.switchClass(editor_id+'_flash','mceButtonSelected');return true}}while((node=node.parentNode));tinyMCE.switchClass(editor_id+'_flash','mceButtonNormal');return true},_parseAttributes:function(attribute_string){var attributeName="";var attributeValue="";var withInName;var withInValue;var attributes=new Array();var whiteSpaceRegExp=new RegExp('^[ \n\r\t]+','g');if(attribute_string==null||attribute_string.length<2)return null;withInName=withInValue=false;for(var i=0;i<attribute_string.length;i++){var chr=attribute_string.charAt(i);if((chr=='"'||chr=="'")&&!withInValue)withInValue=true;else if((chr=='"'||chr=="'")&&withInValue){withInValue=false;var pos=attributeName.lastIndexOf(' ');if(pos!=-1)attributeName=attributeName.substring(pos+1);attributes[attributeName.toLowerCase()]=attributeValue.substring(1);attributeName="";attributeValue=""}else if(!whiteSpaceRegExp.test(chr)&&!withInName&&!withInValue)withInName=true;if(chr=='='&&withInName)withInName=false;if(withInName)attributeName+=chr;if(withInValue)attributeValue+=chr}return attributes}};tinyMCE.addPlugin("flash",TinyMCE_FlashPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/flash/jscripts/flash.js
New file
0,0 → 1,107
var url = tinyMCE.getParam("flash_external_list_url");
if (url != null) {
// Fix relative
if (url.charAt(0) != '/' && url.indexOf('://') == -1)
url = tinyMCE.documentBasePath + "/" + url;
 
document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
}
 
function init() {
tinyMCEPopup.resizeToInnerSize();
 
document.getElementById("filebrowsercontainer").innerHTML = getBrowserHTML('filebrowser','file','flash','flash');
 
// Image list outsrc
var html = getFlashListHTML('filebrowser','file','flash','flash');
if (html == "")
document.getElementById("linklistrow").style.display = 'none';
else
document.getElementById("linklistcontainer").innerHTML = html;
 
var formObj = document.forms[0];
var swffile = tinyMCE.getWindowArg('swffile');
var swfwidth = '' + tinyMCE.getWindowArg('swfwidth');
var swfheight = '' + tinyMCE.getWindowArg('swfheight');
 
if (swfwidth.indexOf('%')!=-1) {
formObj.width2.value = "%";
formObj.width.value = swfwidth.substring(0,swfwidth.length-1);
} else {
formObj.width2.value = "px";
formObj.width.value = swfwidth;
}
 
if (swfheight.indexOf('%')!=-1) {
formObj.height2.value = "%";
formObj.height.value = swfheight.substring(0,swfheight.length-1);
} else {
formObj.height2.value = "px";
formObj.height.value = swfheight;
}
 
formObj.file.value = swffile;
formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true);
 
selectByValue(formObj, 'linklist', swffile);
 
// Handle file browser
if (isVisible('filebrowser'))
document.getElementById('file').style.width = '230px';
 
// Auto select flash in list
if (typeof(tinyMCEFlashList) != "undefined" && tinyMCEFlashList.length > 0) {
for (var i=0; i<formObj.linklist.length; i++) {
if (formObj.linklist.options[i].value == tinyMCE.getWindowArg('swffile'))
formObj.linklist.options[i].selected = true;
}
}
}
 
function getFlashListHTML() {
if (typeof(tinyMCEFlashList) != "undefined" && tinyMCEFlashList.length > 0) {
var html = "";
 
html += '<select id="linklist" name="linklist" style="width: 250px" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.file.value=this.options[this.selectedIndex].value;">';
html += '<option value="">---</option>';
 
for (var i=0; i<tinyMCEFlashList.length; i++)
html += '<option value="' + tinyMCEFlashList[i][1] + '">' + tinyMCEFlashList[i][0] + '</option>';
 
html += '</select>';
 
return html;
}
 
return "";
}
 
function insertFlash() {
var formObj = document.forms[0];
var html = '';
var file = formObj.file.value;
var width = formObj.width.value;
var height = formObj.height.value;
if (formObj.width2.value=='%') {
width = width + '%';
}
if (formObj.height2.value=='%') {
height = height + '%';
}
 
if (width == "")
width = 100;
 
if (height == "")
height = 100;
 
html += ''
+ '<img src="' + (tinyMCE.getParam("theme_href") + "/images/spacer.gif") + '" mce_src="' + (tinyMCE.getParam("theme_href") + "/images/spacer.gif") + '" '
+ 'width="' + width + '" height="' + height + '" '
+ 'border="0" alt="' + file + '" title="' + file + '" class="mceItemFlash" />';
 
tinyMCEPopup.execCommand("mceInsertContent", true, html);
tinyMCE.selectedInstance.repaint();
 
tinyMCEPopup.close();
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/flash/flash.htm
New file
0,0 → 1,70
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_flash_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/flash.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
<link href="css/flash.css" rel="stylesheet" type="text/css" />
<base target="_self" />
</head>
<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<form onsubmit="insertFlash();return false;" action="#">
<div class="tabs">
<ul>
<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_flash_general}</a></span></li>
</ul>
</div>
 
<div class="panel_wrapper">
<div id="general_panel" class="panel current">
<fieldset>
<legend>{$lang_flash_general}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td nowrap="nowrap"><label for="file">{$lang_flash_file}</label></td>
<td nowrap="nowrap">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input id="file" name="file" type="text" value="" onfocus="this.select();" /></td>
<td id="filebrowsercontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr id="linklistrow">
<td><label for="linklist">{$lang_flash_list}</label></td>
<td id="linklistcontainer">&nbsp;</td>
</tr>
<tr>
<td nowrap="nowrap"><label>{$lang_flash_size}</label></td>
<td nowrap="nowrap">
<input type="text" id="width" name="width" value="" onfocus="this.select();" />
<select name="width2" id="width2" style="width: 50px">
<option value="">px</option>
<option value="%">%</option>
</select>&nbsp;x&nbsp;<input id="height" name="height" type="text" value="" onfocus="this.select();" />
<select name="height2" id="height2" style="width: 50px">
<option value="">px</option>
<option value="%">%</option>
</select>
</td>
</tr>
</table>
</fieldset>
</div>
</div>
 
<div class="mceActionPanel">
<div style="float: left">
<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertFlash();" />
</div>
 
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
</div>
</div>
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/flash/langs/en.js
New file
0,0 → 1,11
// UK lang variables
 
tinyMCE.addToLang('flash',{
title : 'Insert / edit Flash Movie',
desc : 'Insert / edit Flash Movie',
file : 'Flash-File (.swf)',
size : 'Size',
list : 'Flash files',
props : 'Flash properties',
general : 'General'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/flash/langs/fr.js
New file
0,0 → 1,12
// FR lang variables
// Modified by keyko-web.net, last updated 2007-03-08, based on the work of Motte
 
tinyMCE.addToLang('flash',{
title : 'Gestionnaire d\'animation Flash',
desc : 'Ins&eacute;rer une animation Flash',
file : 'Fichier Flash (.swf)',
size : 'Taille',
list : 'Liste des fichiers Flash',
props : 'Propri&eacute;t&eacute;s Flash',
general : 'G&eacute;n&eacute;ral'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/flash/images/flash.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/flash/images/flash.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/flash/editor_plugin_src.js
New file
0,0 → 1,285
/**
* $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
tinyMCE.importPluginLanguagePack('flash');
 
var TinyMCE_FlashPlugin = {
getInfo : function() {
return {
longname : 'Flash',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/flash',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
initInstance : function(inst) {
if (!tinyMCE.settings['flash_skip_plugin_css'])
tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/flash/css/content.css");
},
 
getControlHTML : function(cn) {
switch (cn) {
case "flash":
return tinyMCE.getButtonHTML(cn, 'lang_flash_desc', '{$pluginurl}/images/flash.gif', 'mceFlash');
}
 
return "";
},
 
execCommand : function(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
case "mceFlash":
var name = "", swffile = "", swfwidth = "", swfheight = "", action = "insert";
var template = new Array();
var inst = tinyMCE.getInstanceById(editor_id);
var focusElm = inst.getFocusElement();
 
template['file'] = '../../plugins/flash/flash.htm'; // Relative to theme
template['width'] = 430;
template['height'] = 175;
 
template['width'] += tinyMCE.getLang('lang_flash_delta_width', 0);
template['height'] += tinyMCE.getLang('lang_flash_delta_height', 0);
 
// Is selection a image
if (focusElm != null && focusElm.nodeName.toLowerCase() == "img") {
name = tinyMCE.getAttrib(focusElm, 'class');
 
if (name.indexOf('mceItemFlash') == -1) // Not a Flash
return true;
 
// Get rest of Flash items
swffile = tinyMCE.getAttrib(focusElm, 'alt');
 
if (tinyMCE.getParam('convert_urls'))
swffile = eval(tinyMCE.settings['urlconverter_callback'] + "(swffile, null, true);");
 
swfwidth = tinyMCE.getAttrib(focusElm, 'width');
swfheight = tinyMCE.getAttrib(focusElm, 'height');
action = "update";
}
 
tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes", swffile : swffile, swfwidth : swfwidth, swfheight : swfheight, action : action});
return true;
}
 
// Pass to next handler in chain
return false;
},
 
cleanup : function(type, content) {
switch (type) {
case "insert_to_editor_dom":
// Force relative/absolute
if (tinyMCE.getParam('convert_urls')) {
var imgs = content.getElementsByTagName("img");
for (var i=0; i<imgs.length; i++) {
if (tinyMCE.getAttrib(imgs[i], "class") == "mceItemFlash") {
var src = tinyMCE.getAttrib(imgs[i], "alt");
 
if (tinyMCE.getParam('convert_urls'))
src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");
 
imgs[i].setAttribute('alt', src);
imgs[i].setAttribute('title', src);
}
}
}
break;
 
case "get_from_editor_dom":
var imgs = content.getElementsByTagName("img");
for (var i=0; i<imgs.length; i++) {
if (tinyMCE.getAttrib(imgs[i], "class") == "mceItemFlash") {
var src = tinyMCE.getAttrib(imgs[i], "alt");
 
if (tinyMCE.getParam('convert_urls'))
src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");
 
imgs[i].setAttribute('alt', src);
imgs[i].setAttribute('title', src);
}
}
break;
 
case "insert_to_editor":
var startPos = 0;
var embedList = new Array();
 
// Fix the embed and object elements
content = content.replace(new RegExp('<[ ]*embed','gi'),'<embed');
content = content.replace(new RegExp('<[ ]*/embed[ ]*>','gi'),'</embed>');
content = content.replace(new RegExp('<[ ]*object','gi'),'<object');
content = content.replace(new RegExp('<[ ]*/object[ ]*>','gi'),'</object>');
 
// Parse all embed tags
while ((startPos = content.indexOf('<embed', startPos+1)) != -1) {
var endPos = content.indexOf('>', startPos);
var attribs = TinyMCE_FlashPlugin._parseAttributes(content.substring(startPos + 6, endPos));
embedList[embedList.length] = attribs;
}
 
// Parse all object tags and replace them with images from the embed data
var index = 0;
while ((startPos = content.indexOf('<object', startPos)) != -1) {
if (index >= embedList.length)
break;
 
var attribs = embedList[index];
 
// Find end of object
endPos = content.indexOf('</object>', startPos);
endPos += 9;
 
// Insert image
var contentAfter = content.substring(endPos);
content = content.substring(0, startPos);
content += '<img width="' + attribs["width"] + '" height="' + attribs["height"] + '"';
content += ' src="' + (tinyMCE.getParam("theme_href") + '/images/spacer.gif') + '" title="' + attribs["src"] + '"';
content += ' alt="' + attribs["src"] + '" class="mceItemFlash" />' + content.substring(endPos);
content += contentAfter;
index++;
 
startPos++;
}
 
// Parse all embed tags and replace them with images from the embed data
var index = 0;
while ((startPos = content.indexOf('<embed', startPos)) != -1) {
if (index >= embedList.length)
break;
 
var attribs = embedList[index];
 
// Find end of embed
endPos = content.indexOf('>', startPos);
endPos += 9;
 
// Insert image
var contentAfter = content.substring(endPos);
content = content.substring(0, startPos);
content += '<img width="' + attribs["width"] + '" height="' + attribs["height"] + '"';
content += ' src="' + (tinyMCE.getParam("theme_href") + '/images/spacer.gif') + '" title="' + attribs["src"] + '"';
content += ' alt="' + attribs["src"] + '" class="mceItemFlash" />' + content.substring(endPos);
content += contentAfter;
index++;
 
startPos++;
}
 
break;
 
case "get_from_editor":
// Parse all img tags and replace them with object+embed
var startPos = -1;
 
while ((startPos = content.indexOf('<img', startPos+1)) != -1) {
var endPos = content.indexOf('/>', startPos);
var attribs = TinyMCE_FlashPlugin._parseAttributes(content.substring(startPos + 4, endPos));
 
// Is not flash, skip it
if (attribs['class'] != "mceItemFlash")
continue;
 
endPos += 2;
 
var embedHTML = '';
var wmode = tinyMCE.getParam("flash_wmode", "");
var quality = tinyMCE.getParam("flash_quality", "high");
var menu = tinyMCE.getParam("flash_menu", "false");
 
// Insert object + embed
embedHTML += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"';
embedHTML += ' codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"';
embedHTML += ' width="' + attribs["width"] + '" height="' + attribs["height"] + '">';
embedHTML += '<param name="movie" value="' + attribs["title"] + '" />';
embedHTML += '<param name="quality" value="' + quality + '" />';
embedHTML += '<param name="menu" value="' + menu + '" />';
embedHTML += '<param name="wmode" value="' + wmode + '" />';
embedHTML += '<embed src="' + attribs["title"] + '" wmode="' + wmode + '" quality="' + quality + '" menu="' + menu + '" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="' + attribs["width"] + '" height="' + attribs["height"] + '"></embed></object>';
 
// Insert embed/object chunk
chunkBefore = content.substring(0, startPos);
chunkAfter = content.substring(endPos);
content = chunkBefore + embedHTML + chunkAfter;
}
break;
}
 
// Pass through to next handler in chain
return content;
},
 
handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
if (node == null)
return;
 
do {
if (node.nodeName == "IMG" && tinyMCE.getAttrib(node, 'class').indexOf('mceItemFlash') == 0) {
tinyMCE.switchClass(editor_id + '_flash', 'mceButtonSelected');
return true;
}
} while ((node = node.parentNode));
 
tinyMCE.switchClass(editor_id + '_flash', 'mceButtonNormal');
 
return true;
},
 
// Private plugin internal functions
 
_parseAttributes : function(attribute_string) {
var attributeName = "";
var attributeValue = "";
var withInName;
var withInValue;
var attributes = new Array();
var whiteSpaceRegExp = new RegExp('^[ \n\r\t]+', 'g');
 
if (attribute_string == null || attribute_string.length < 2)
return null;
 
withInName = withInValue = false;
 
for (var i=0; i<attribute_string.length; i++) {
var chr = attribute_string.charAt(i);
 
if ((chr == '"' || chr == "'") && !withInValue)
withInValue = true;
else if ((chr == '"' || chr == "'") && withInValue) {
withInValue = false;
 
var pos = attributeName.lastIndexOf(' ');
if (pos != -1)
attributeName = attributeName.substring(pos+1);
 
attributes[attributeName.toLowerCase()] = attributeValue.substring(1);
 
attributeName = "";
attributeValue = "";
} else if (!whiteSpaceRegExp.test(chr) && !withInName && !withInValue)
withInName = true;
 
if (chr == '=' && withInName)
withInName = false;
 
if (withInName)
attributeName += chr;
 
if (withInValue)
attributeValue += chr;
}
 
return attributes;
}
};
 
tinyMCE.addPlugin("flash", TinyMCE_FlashPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/flash/css/content.css
New file
0,0 → 1,7
.mceItemFlash {
border: 1px dotted #cc0000;
background-image: url('../images/flash.gif');
background-position: center;
background-repeat: no-repeat;
background-color: #ffffcc;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/flash/css/flash.css
New file
0,0 → 1,11
.panel_wrapper div.current {
height: 100px;
}
 
#width, #height {
width: 50px;
}
 
#file {
width: 250px;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/flash/readme.txt
New file
0,0 → 1,0
Check the TinyMCE documentation for details on this plugin.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/nonbreaking/langs/en.js
New file
0,0 → 1,5
// UK lang variables
 
tinyMCE.addToLang('nonbreaking',{
desc : 'Insert non-breaking space character'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/nonbreaking/images/nonbreaking.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/nonbreaking/images/nonbreaking.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js
New file
0,0 → 1,62
/**
* $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
tinyMCE.importPluginLanguagePack('nonbreaking');
 
var TinyMCE_NonBreakingPlugin = {
getInfo : function() {
return {
longname : 'Nonbreaking space',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
getControlHTML : function(cn) {
switch (cn) {
case "nonbreaking":
return tinyMCE.getButtonHTML(cn, 'lang_nonbreaking_desc', '{$pluginurl}/images/nonbreaking.gif', 'mceNonBreaking', false);
}
 
return "";
},
 
 
execCommand : function(editor_id, element, command, user_interface, value) {
var inst = tinyMCE.getInstanceById(editor_id), h;
 
switch (command) {
case "mceNonBreaking":
h = (inst.visualChars && inst.visualChars.state) ? '<span class="mceItemHiddenVisualChar">&middot;</span>' : '&nbsp;';
tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, h);
return true;
}
 
return false;
},
 
handleEvent : function(e) {
var inst, h;
 
if (!tinyMCE.isOpera && e.type == 'keydown' && e.keyCode == 9 && tinyMCE.getParam('nonbreaking_force_tab', false)) {
inst = tinyMCE.selectedInstance;
 
h = (inst.visualChars && inst.visualChars.state) ? '<span class="mceItemHiddenVisualChar">&middot;&middot;&middot;</span>' : '&nbsp;&nbsp;&nbsp;';
tinyMCE.execInstanceCommand(inst.editorId, 'mceInsertContent', false, h);
 
tinyMCE.cancelEvent(e);
return false;
}
 
return true;
}
};
 
tinyMCE.addPlugin("nonbreaking", TinyMCE_NonBreakingPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/nonbreaking/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('nonbreaking');var TinyMCE_NonBreakingPlugin={getInfo:function(){return{longname:'Nonbreaking space',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"nonbreaking":return tinyMCE.getButtonHTML(cn,'lang_nonbreaking_desc','{$pluginurl}/images/nonbreaking.gif','mceNonBreaking',false)}return""},execCommand:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id),h;switch(command){case"mceNonBreaking":h=(inst.visualChars&&inst.visualChars.state)?'<span class="mceItemHiddenVisualChar">&middot;</span>':'&nbsp;';tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,h);return true}return false},handleEvent:function(e){var inst,h;if(!tinyMCE.isOpera&&e.type=='keydown'&&e.keyCode==9&&tinyMCE.getParam('nonbreaking_force_tab',false)){inst=tinyMCE.selectedInstance;h=(inst.visualChars&&inst.visualChars.state)?'<span class="mceItemHiddenVisualChar">&middot;&middot;&middot;</span>':'&nbsp;&nbsp;&nbsp;';tinyMCE.execInstanceCommand(inst.editorId,'mceInsertContent',false,h);tinyMCE.cancelEvent(e);return false}return true}};tinyMCE.addPlugin("nonbreaking",TinyMCE_NonBreakingPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullpage/css/fullpage.css
New file
0,0 → 1,176
/* Hide the advanced tab */
#advanced_tab {
display: none;
}
 
#metatitle, #metakeywords, #metadescription, #metaauthor, #metacopyright {
width: 280px;
}
 
#doctype, #docencoding {
width: 200px;
}
 
#langcode {
width: 30px;
}
 
#bgimage {
width: 220px;
}
 
#fontface {
width: 240px;
}
 
#leftmargin, #rightmargin, #topmargin, #bottommargin {
width: 50px;
}
 
.panel_wrapper div.current {
height: 400px;
}
 
#stylesheet, #style {
width: 240px;
}
 
/* Head list classes */
 
.headlistwrapper {
width: 100%;
}
 
.addbutton, .removebutton, .moveupbutton, .movedownbutton {
border-top: 1px solid;
border-left: 1px solid;
border-bottom: 1px solid;
border-right: 1px solid;
border-color: #F0F0EE;
cursor: default;
display: block;
width: 20px;
height: 20px;
}
 
.addbutton:hover, .removebutton:hover, .moveupbutton:hover, .movedownbutton:hover {
border: 1px solid #0A246A;
background-color: #B6BDD2;
}
 
.addbutton {
background-image: url('../images/add.gif');
float: left;
margin-right: 3px;
}
 
.removebutton {
background-image: url('../images/remove.gif');
float: left;
}
 
.moveupbutton {
background-image: url('../images/move_up.gif');
float: left;
margin-right: 3px;
}
 
.movedownbutton {
background-image: url('../images/move_down.gif');
float: left;
}
 
.selected {
border: 1px solid #0A246A;
background-color: #B6BDD2;
}
 
.toolbar {
width: 100%;
}
 
#headlist {
width: 100%;
margin-top: 3px;
font-size: 11px;
}
 
#info, #title_element, #meta_element, #script_element, #style_element, #base_element, #link_element, #comment_element, #unknown_element {
display: none;
}
 
#addmenu {
position: absolute;
border: 1px solid gray;
display: none;
z-index: 100;
background-color: white;
}
 
#addmenu a {
display: block;
width: 100%;
line-height: 20px;
text-decoration: none;
background-color: white;
}
 
#addmenu a:hover {
background-color: #B6BDD2;
color: black;
}
 
#addmenu span {
padding-left: 10px;
padding-right: 10px;
}
 
#updateElementPanel {
display: none;
}
 
#script_element .panel_wrapper div.current {
height: 108px;
}
 
#style_element .panel_wrapper div.current {
height: 108px;
}
 
#link_element .panel_wrapper div.current {
height: 140px;
}
 
#element_script_value {
width: 100%;
height: 100px;
}
 
#element_comment_value {
width: 100%;
height: 120px;
}
 
#element_style_value {
width: 100%;
height: 100px;
}
 
#element_title, #element_script_src, #element_meta_name, #element_meta_content, #element_base_href, #element_link_href, #element_link_title {
width: 250px;
}
 
.updateElementButton {
margin-top: 3px;
}
 
/* MSIE specific styles */
 
* html .addbutton, * html .removebutton, * html .moveupbutton, * html .movedownbutton {
width: 22px;
height: 22px;
}
 
textarea {
height: 55px;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullpage/blank.htm
New file
0,0 → 1,9
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>blank_page</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body onload="parent.setupIframe(document);">
 
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullpage/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('fullpage');var TinyMCE_FullPagePlugin={getInfo:function(){return{longname:'Fullpage',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"fullpage":return tinyMCE.getButtonHTML(cn,'lang_fullpage_desc','{$pluginurl}/images/fullpage.gif','mceFullPageProperties')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceFullPageProperties":var template=new Array();template['file']='../../plugins/fullpage/fullpage.htm';template['width']=430;template['height']=485+(tinyMCE.isOpera?5:0);template['width']+=tinyMCE.getLang('lang_fullpage_delta_width',0);template['height']+=tinyMCE.getLang('lang_fullpage_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;case"mceFullPageUpdate":TinyMCE_FullPagePlugin._addToHead(tinyMCE.getInstanceById(editor_id));return true}return false},cleanup:function(type,content,inst){switch(type){case"insert_to_editor":var tmp=content.toLowerCase();var pos=tmp.indexOf('<body'),pos2;if(pos!=-1){pos=tmp.indexOf('>',pos);pos2=tmp.lastIndexOf('</body>');inst.fullpageTopContent=content.substring(0,pos+1);content=content.substring(pos+1,pos2);}else{if(!inst.fullpageTopContent){var docType=tinyMCE.getParam("fullpage_default_doctype",'<!DOCTYPE html PUBLIC "-/'+'/W3C//DTD XHTML 1.0 Transitional/'+'/EN" "http:/'+'/www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');var enc=tinyMCE.getParam("fullpage_default_encoding",'utf-8');var title=tinyMCE.getParam("fullpage_default_title",'Untitled document');var lang=tinyMCE.getParam("fullpage_default_langcode",'en');var pi=tinyMCE.getParam("fullpage_default_xml_pi",true);var ff=tinyMCE.getParam("fullpage_default_font_family","");var fz=tinyMCE.getParam("fullpage_default_font_size","");var ds=tinyMCE.getParam("fullpage_default_style","");var dtc=tinyMCE.getParam("fullpage_default_text_color","");title=title.replace(/&/g,'&amp;');title=title.replace(/\"/g,'&quot;');title=title.replace(/</g,'&lt;');title=title.replace(/>/g,'&gt;');tmp='';if(pi)tmp+='<?xml version="1.0" encoding="'+enc+'"?>\n';tmp+=docType+'\n';tmp+='<html xmlns="http:/'+'/www.w3.org/1999/xhtml" lang="'+lang+'" xml:lang="'+lang+'">\n';tmp+='<head>\n';tmp+='\t<title>'+title+'</title>\n';tmp+='\t<meta http-equiv="Content-Type" content="text/html; charset='+enc+'" />\n';tmp+='</head>\n';tmp+='<body';if(ff!=''||fz!=''){tmp+=' style="';if(ds!='')tmp+=ds+";";if(ff!='')tmp+='font-family: '+ff+";";if(fz!='')tmp+='font-size: '+fz+";";tmp+='"'}if(dtc!='')tmp+=' text="'+dtc+'"';tmp+='>\n';inst.fullpageTopContent=tmp}}this._addToHead(inst);break;case"get_from_editor":if(inst.fullpageTopContent&&!tinyMCE.getParam("fullpage_hide_in_source_view",false)){content=content.replace(/(\s)?mce\_[a-z_]+\=[^\s>]+(\s|\>)/i,'');content=inst.fullpageTopContent+content+"\n</body>\n</html>"}break;case"submit_content":if(inst.fullpageTopContent&&tinyMCE.getParam("fullpage_hide_in_source_view",false))content=inst.fullpageTopContent+content+"\n</body>\n</html>";break}return content},_addToHead:function(inst){var doc=inst.getDoc();var head=doc.getElementsByTagName("head")[0];var body=doc.body;var h=inst.fullpageTopContent;var e=doc.createElement("body");var nl,i,le,tmp;h=h.replace(/(\r|\n)/gi,'');h=h.replace(/<\?[^\>]*\>/gi,'');h=h.replace(/<\/?(!DOCTYPE|head|html)[^\>]*\>/gi,'');h=h.replace(/<script(.*?)<\/script>/gi,'');h=h.replace(/<title(.*?)<\/title>/gi,'');h=h.replace(/<(meta|base)[^>]*>/gi,'');h=h.replace(/<link([^>]*)\/>/gi,'<pre mce_type="link" $1></pre>');h=h.replace(/<body/gi,'<div mce_type="body"');h+='</div>';e.innerHTML=h;body.vLink=body.aLink=body.link=body.text='';body.style.cssText='';nl=head.getElementsByTagName('link');for(i=0;i<nl.length;i++){if(tinyMCE.getAttrib(nl[i],'mce_head')=="true")nl[i].parentNode.removeChild(nl[i])}nl=e.getElementsByTagName('pre');for(i=0;i<nl.length;i++){tmp=tinyMCE.getAttrib(nl[i],'media');if(tinyMCE.getAttrib(nl[i],'mce_type')=="link"&&(tmp==""||tmp=="screen"||tmp=="all")&&tinyMCE.getAttrib(nl[i],'rel')=="stylesheet"){le=doc.createElement("link");le.rel="stylesheet";le.href=tinyMCE.getAttrib(nl[i],'href');le.setAttribute("mce_head","true");head.appendChild(le)}}nl=e.getElementsByTagName('div');if(nl.length>0){body.style.cssText=tinyMCE.getAttrib(nl[0],'style');if((tmp=tinyMCE.getAttrib(nl[0],'leftmargin'))!=''&&body.style.marginLeft=='')body.style.marginLeft=tmp+"px";if((tmp=tinyMCE.getAttrib(nl[0],'rightmargin'))!=''&&body.style.marginRight=='')body.style.marginRight=tmp+"px";if((tmp=tinyMCE.getAttrib(nl[0],'topmargin'))!=''&&body.style.marginTop=='')body.style.marginTop=tmp+"px";if((tmp=tinyMCE.getAttrib(nl[0],'bottommargin'))!=''&&body.style.marginBottom=='')body.style.marginBottom=tmp+"px";body.dir=tinyMCE.getAttrib(nl[0],'dir');body.vLink=tinyMCE.getAttrib(nl[0],'vlink');body.aLink=tinyMCE.getAttrib(nl[0],'alink');body.link=tinyMCE.getAttrib(nl[0],'link');body.text=tinyMCE.getAttrib(nl[0],'text');if((tmp=tinyMCE.getAttrib(nl[0],'background'))!='')body.style.backgroundImage="url('"+tmp+"')";if((tmp=tinyMCE.getAttrib(nl[0],'bgcolor'))!='')body.style.backgroundColor=tmp}}};tinyMCE.addPlugin("fullpage",TinyMCE_FullPagePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullpage/jscripts/fullpage.js
New file
0,0 → 1,580
//
 
var defaultDocTypes =
'XHTML 1.0 Transitional=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">,' +
'XHTML 1.0 Frameset=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">,' +
'XHTML 1.0 Strict=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">,' +
'XHTML 1.1=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">,' +
'HTML 4.01 Transitional=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">,' +
'HTML 4.01 Strict=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">,' +
'HTML 4.01 Frameset=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">';
 
var defaultEncodings =
'Western european (iso-8859-1)=iso-8859-1,' +
'Central European (iso-8859-2)=iso-8859-2,' +
'Unicode (UTF-8)=utf-8,' +
'Chinese traditional (Big5)=big5,' +
'Cyrillic (iso-8859-5)=iso-8859-5,' +
'Japanese (iso-2022-jp)=iso-2022-jp,' +
'Greek (iso-8859-7)=iso-8859-7,' +
'Korean (iso-2022-kr)=iso-2022-kr,' +
'ASCII (us-ascii)=us-ascii';
 
var defaultMediaTypes =
'all=all,' +
'screen=screen,' +
'print=print,' +
'tty=tty,' +
'tv=tv,' +
'projection=projection,' +
'handheld=handheld,' +
'braille=braille,' +
'aural=aural';
 
var defaultFontNames = 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings';
var defaultFontSizes = '10px,11px,12px,13px,14px,15px,16px';
 
var addMenuLayer = new MCLayer("addmenu");
var lastElementType = null;
var topDoc;
 
function init() {
var f = document.forms['fullpage'];
var i, p, doctypes, encodings, mediaTypes, fonts;
var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
 
// Setup doctype select box
doctypes = tinyMCE.getParam("fullpage_doctypes", defaultDocTypes).split(',');
for (i=0; i<doctypes.length; i++) {
p = doctypes[i].split('=');
 
if (p.length > 1)
addSelectValue(f, 'doctypes', p[0], p[1]);
}
 
// Setup fonts select box
fonts = tinyMCE.getParam("fullpage_fonts", defaultFontNames).split(';');
for (i=0; i<fonts.length; i++) {
p = fonts[i].split('=');
 
if (p.length > 1)
addSelectValue(f, 'fontface', p[0], p[1]);
}
 
// Setup fontsize select box
fonts = tinyMCE.getParam("fullpage_fontsizes", defaultFontSizes).split(',');
for (i=0; i<fonts.length; i++)
addSelectValue(f, 'fontsize', fonts[i], fonts[i]);
 
// Setup mediatype select boxs
mediaTypes = tinyMCE.getParam("fullpage_media_types", defaultMediaTypes).split(',');
for (i=0; i<mediaTypes.length; i++) {
p = mediaTypes[i].split('=');
 
if (p.length > 1) {
addSelectValue(f, 'element_style_media', p[0], p[1]);
addSelectValue(f, 'element_link_media', p[0], p[1]);
}
}
 
// Setup encodings select box
encodings = tinyMCE.getParam("fullpage_encodings", defaultEncodings).split(',');
for (i=0; i<encodings.length; i++) {
p = encodings[i].split('=');
 
if (p.length > 1) {
addSelectValue(f, 'docencoding', p[0], p[1]);
addSelectValue(f, 'element_script_charset', p[0], p[1]);
addSelectValue(f, 'element_link_charset', p[0], p[1]);
}
}
 
document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
document.getElementById('link_color_pickcontainer').innerHTML = getColorPickerHTML('link_color_pick','link_color');
//document.getElementById('hover_color_pickcontainer').innerHTML = getColorPickerHTML('hover_color_pick','hover_color');
document.getElementById('visited_color_pickcontainer').innerHTML = getColorPickerHTML('visited_color_pick','visited_color');
document.getElementById('active_color_pickcontainer').innerHTML = getColorPickerHTML('active_color_pick','active_color');
document.getElementById('textcolor_pickcontainer').innerHTML = getColorPickerHTML('textcolor_pick','textcolor');
document.getElementById('stylesheet_browsercontainer').innerHTML = getBrowserHTML('stylesheetbrowser','stylesheet','file','fullpage');
document.getElementById('link_href_pickcontainer').innerHTML = getBrowserHTML('link_href_browser','element_link_href','file','fullpage');
document.getElementById('script_src_pickcontainer').innerHTML = getBrowserHTML('script_src_browser','element_script_src','file','fullpage');
document.getElementById('bgimage_pickcontainer').innerHTML = getBrowserHTML('bgimage_browser','bgimage','image','fullpage');
 
// Resize some elements
if (isVisible('stylesheetbrowser'))
document.getElementById('stylesheet').style.width = '220px';
 
if (isVisible('link_href_browser'))
document.getElementById('element_link_href').style.width = '230px';
 
if (isVisible('bgimage_browser'))
document.getElementById('bgimage').style.width = '210px';
 
// Create iframe
var iframe = document.createElement('iframe');
 
iframe.id = 'tempFrame';
iframe.style.display = 'none';
iframe.src = tinyMCE.baseURL + "/plugins/fullpage/blank.htm";
 
document.body.appendChild(iframe);
 
tinyMCEPopup.resizeToInnerSize();
}
 
function setupIframe(doc) {
var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
var hc = inst.fullpageTopContent;
var f = document.forms[0];
var xmlVer, xmlEnc, docType;
var nodes, i, x, name, value, tmp, l;
 
// Keep it from not loading/executing stuff
hc = hc.replace(/<script>/gi, '<script type="text/javascript">');
hc = hc.replace(/\ssrc=/gi, " mce_src=");
hc = hc.replace(/\shref=/gi, " mce_href=");
hc = hc.replace(/\stype=/gi, " mce_type=");
hc = hc.replace(/<script/gi, '<script type="text/unknown" ');
 
// Add end to make it DOM parseable
hc += '</body></html>';
 
topDoc = doc;
doc.open();
doc.write(hc);
doc.close();
 
// ------- Setup options for genral tab
 
// Parse xml and doctype
xmlVer = getReItem(/<\?\s*?xml.*?version\s*?=\s*?"(.*?)".*?\?>/gi, hc, 1);
xmlEnc = getReItem(/<\?\s*?xml.*?encoding\s*?=\s*?"(.*?)".*?\?>/gi, hc, 1);
docType = getReItem(/<\!DOCTYPE.*?>/gi, hc, 0);
f.langcode.value = getReItem(/lang="(.*?)"/gi, hc, 1);
 
// Get title
f.metatitle.value = tinyMCE.entityDecode(getReItem(/<title>(.*?)<\/title>/gi, hc, 1));
 
// Check for meta encoding
nodes = doc.getElementsByTagName("meta");
for (i=0; i<nodes.length; i++) {
name = tinyMCE.getAttrib(nodes[i], 'name');
value = tinyMCE.getAttrib(nodes[i], 'content');
httpEquiv = tinyMCE.getAttrib(nodes[i], 'httpEquiv');
 
switch (name.toLowerCase()) {
case "keywords":
f.metakeywords.value = value;
break;
 
case "description":
f.metadescription.value = value;
break;
 
case "author":
f.metaauthor.value = value;
break;
 
case "copyright":
f.metacopyright.value = value;
break;
 
case "robots":
selectByValue(f, 'metarobots', value, true, true);
break;
}
 
switch (httpEquiv.toLowerCase()) {
case "content-type":
tmp = getReItem(/charset\s*=\s*(.*)\s*/gi, value, 1);
 
// Override XML encoding
if (tmp != "")
xmlEnc = tmp;
 
break;
}
}
 
selectByValue(f, 'doctypes', docType, true, true);
selectByValue(f, 'docencoding', xmlEnc, true, true);
selectByValue(f, 'langdir', tinyMCE.getAttrib(doc.body, 'dir'), true, true);
 
if (xmlVer != '')
f.xml_pi.checked = true;
 
// ------- Setup options for appearance tab
 
// Get primary stylesheet
nodes = doc.getElementsByTagName("link");
for (i=0; i<nodes.length; i++) {
l = nodes[i];
tmp = tinyMCE.getAttrib(l, 'media');
 
if (tinyMCE.getAttrib(l, 'mce_type') == "text/css" && (tmp == "" || tmp == "screen" || tmp == "all") && tinyMCE.getAttrib(l, 'rel') == "stylesheet") {
f.stylesheet.value = tinyMCE.getAttrib(l, 'mce_href');
break;
}
}
 
// Get from style elements
nodes = doc.getElementsByTagName("style");
for (i=0; i<nodes.length; i++) {
tmp = parseStyleElement(nodes[i]);
 
for (x=0; x<tmp.length; x++) {
// if (tmp[x].rule.indexOf('a:hover') != -1 && tmp[x].data['color'])
// f.hover_color.value = tmp[x].data['color'];
 
if (tmp[x].rule.indexOf('a:visited') != -1 && tmp[x].data['color'])
f.visited_color.value = tmp[x].data['color'];
 
if (tmp[x].rule.indexOf('a:link') != -1 && tmp[x].data['color'])
f.link_color.value = tmp[x].data['color'];
 
if (tmp[x].rule.indexOf('a:active') != -1 && tmp[x].data['color'])
f.active_color.value = tmp[x].data['color'];
}
}
 
// Get from body attribs
 
/* f.leftmargin.value = tinyMCE.getAttrib(doc.body, "leftmargin");
f.rightmargin.value = tinyMCE.getAttrib(doc.body, "rightmargin");
f.topmargin.value = tinyMCE.getAttrib(doc.body, "topmargin");
f.bottommargin.value = tinyMCE.getAttrib(doc.body, "bottommargin");*/
f.textcolor.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "text"));
f.active_color.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "alink"));
f.link_color.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "link"));
f.visited_color.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "vlink"));
f.bgcolor.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "bgcolor"));
f.bgimage.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "background"));
 
// Get from style info
var style = tinyMCE.parseStyle(tinyMCE.getAttrib(doc.body, 'style'));
 
if (style['font-family'])
selectByValue(f, 'fontface', style['font-family'], true, true);
else
selectByValue(f, 'fontface', tinyMCE.getParam("fullpage_default_fontface", ""), true, true);
 
if (style['font-size'])
selectByValue(f, 'fontsize', style['font-size'], true, true);
else
selectByValue(f, 'fontsize', tinyMCE.getParam("fullpage_default_fontsize", ""), true, true);
 
if (style['color'])
f.textcolor.value = convertRGBToHex(style['color']);
 
if (style['background-image'])
f.bgimage.value = style['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
 
if (style['background-color'])
f.bgcolor.value = convertRGBToHex(style['background-color']);
 
if (style['margin']) {
tmp = style['margin'].replace(/[^0-9 ]/g, '');
tmp = tmp.split(/ +/);
f.topmargin.value = tmp.length > 0 ? tmp[0] : '';
f.rightmargin.value = tmp.length > 1 ? tmp[1] : tmp[0];
f.bottommargin.value = tmp.length > 2 ? tmp[2] : tmp[0];
f.leftmargin.value = tmp.length > 3 ? tmp[3] : tmp[0];
}
 
if (style['margin-left'])
f.leftmargin.value = style['margin-left'].replace(/[^0-9]/g, '');
 
if (style['margin-right'])
f.rightmargin.value = style['margin-right'].replace(/[^0-9]/g, '');
 
if (style['margin-top'])
f.topmargin.value = style['margin-top'].replace(/[^0-9]/g, '');
 
if (style['margin-bottom'])
f.bottommargin.value = style['margin-bottom'].replace(/[^0-9]/g, '');
 
f.style.value = tinyMCE.serializeStyle(style);
 
updateColor('textcolor_pick', 'textcolor');
updateColor('bgcolor_pick', 'bgcolor');
updateColor('visited_color_pick', 'visited_color');
updateColor('active_color_pick', 'active_color');
updateColor('link_color_pick', 'link_color');
//updateColor('hover_color_pick', 'hover_color');
}
 
function updateAction() {
var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
var f = document.forms[0];
var nl, i, h, v, s, head, html, l, tmp, addlink = true;
 
head = topDoc.getElementsByTagName('head')[0];
 
// Fix scripts without a type
nl = topDoc.getElementsByTagName('script');
for (i=0; i<nl.length; i++) {
if (tinyMCE.getAttrib(nl[i], 'mce_type') == '')
nl[i].setAttribute('mce_type', 'text/javascript');
}
 
// Get primary stylesheet
nl = topDoc.getElementsByTagName("link");
for (i=0; i<nl.length; i++) {
l = nl[i];
 
tmp = tinyMCE.getAttrib(l, 'media');
 
if (tinyMCE.getAttrib(l, 'mce_type') == "text/css" && (tmp == "" || tmp == "screen" || tmp == "all") && tinyMCE.getAttrib(l, 'rel') == "stylesheet") {
addlink = false;
 
if (f.stylesheet.value == '')
l.parentNode.removeChild(l);
else
l.setAttribute('mce_href', f.stylesheet.value);
 
break;
}
}
 
// Add new link
if (f.stylesheet.value != '') {
l = topDoc.createElement('link');
 
l.setAttribute('mce_type', 'text/css');
l.setAttribute('mce_href', f.stylesheet.value);
l.setAttribute('rel', 'stylesheet');
 
head.appendChild(l);
}
 
setMeta(head, 'keywords', f.metakeywords.value);
setMeta(head, 'description', f.metadescription.value);
setMeta(head, 'author', f.metaauthor.value);
setMeta(head, 'copyright', f.metacopyright.value);
setMeta(head, 'robots', getSelectValue(f, 'metarobots'));
setMeta(head, 'Content-Type', getSelectValue(f, 'docencoding'));
 
topDoc.body.dir = getSelectValue(f, 'langdir');
topDoc.body.style.cssText = f.style.value;
 
topDoc.body.setAttribute('vLink', f.visited_color.value);
topDoc.body.setAttribute('link', f.link_color.value);
topDoc.body.setAttribute('text', f.textcolor.value);
topDoc.body.setAttribute('aLink', f.active_color.value);
 
topDoc.body.style.fontFamily = getSelectValue(f, 'fontface');
topDoc.body.style.fontSize = getSelectValue(f, 'fontsize');
topDoc.body.style.backgroundColor = f.bgcolor.value;
 
if (f.leftmargin.value != '')
topDoc.body.style.marginLeft = f.leftmargin.value + 'px';
 
if (f.rightmargin.value != '')
topDoc.body.style.marginRight = f.rightmargin.value + 'px';
 
if (f.bottommargin.value != '')
topDoc.body.style.marginBottom = f.bottommargin.value + 'px';
 
if (f.topmargin.value != '')
topDoc.body.style.marginTop = f.topmargin.value + 'px';
 
html = topDoc.getElementsByTagName('html')[0];
html.setAttribute('lang', f.langcode.value);
html.setAttribute('xml:lang', f.langcode.value);
 
if (f.bgimage.value != '')
topDoc.body.style.backgroundImage = "url('" + f.bgimage.value + "')";
else
topDoc.body.style.backgroundImage = '';
 
inst.cleanup.addRuleStr('-title,meta[http-equiv|name|content],base[href|target],link[href|rel|type|title|media],style[type],script[type|language|src],html[lang|xml:lang|xmlns],body[style|dir|vlink|link|text|alink],head');
 
h = inst.cleanup.serializeNodeAsHTML(topDoc.documentElement);
 
h = h.substring(0, h.lastIndexOf('</body>'));
 
if (h.indexOf('<title>') == -1)
h = h.replace(/<head.*?>/, '$&\n' + '<title>' + inst.cleanup.xmlEncode(f.metatitle.value) + '</title>');
else
h = h.replace(/<title>(.*?)<\/title>/, '<title>' + inst.cleanup.xmlEncode(f.metatitle.value) + '</title>');
 
if ((v = getSelectValue(f, 'doctypes')) != '')
h = v + '\n' + h;
 
if (f.xml_pi.checked) {
s = '<?xml version="1.0"';
 
if ((v = getSelectValue(f, 'docencoding')) != '')
s += ' encoding="' + v + '"';
 
s += '?>\n';
h = s + h;
}
 
inst.fullpageTopContent = h;
 
tinyMCEPopup.execCommand('mceFullPageUpdate', false, '');
tinyMCEPopup.close();
}
 
function setMeta(he, k, v) {
var nl, i, m;
 
nl = he.getElementsByTagName('meta');
for (i=0; i<nl.length; i++) {
if (k == 'Content-Type' && tinyMCE.getAttrib(nl[i], 'http-equiv') == k) {
if (v == '')
nl[i].parentNode.removeChild(nl[i]);
else
nl[i].setAttribute('content', "text/html; charset=" + v);
 
return;
}
 
if (tinyMCE.getAttrib(nl[i], 'name') == k) {
if (v == '')
nl[i].parentNode.removeChild(nl[i]);
else
nl[i].setAttribute('content', v);
return;
}
}
 
if (v == '')
return;
 
m = topDoc.createElement('meta');
 
if (k == 'Content-Type')
m.httpEquiv = k;
else
m.setAttribute('name', k);
 
m.setAttribute('content', v);
he.appendChild(m);
}
 
function parseStyleElement(e) {
var v = e.innerHTML;
var p, i, r;
 
v = v.replace(/<!--/gi, '');
v = v.replace(/-->/gi, '');
v = v.replace(/[\n\r]/gi, '');
v = v.replace(/\s+/gi, ' ');
 
r = new Array();
p = v.split(/{|}/);
 
for (i=0; i<p.length; i+=2) {
if (p[i] != "")
r[r.length] = {rule : tinyMCE.trim(p[i]), data : tinyMCE.parseStyle(p[i+1])};
}
 
return r;
}
 
function serializeStyleElement(d) {
var i, s, st;
 
s = '<!--\n';
 
for (i=0; i<d.length; i++) {
s += d[i].rule + ' {\n';
 
st = tinyMCE.serializeStyle(d[i].data);
 
if (st != '')
st += ';';
 
s += st.replace(/;/g, ';\n');
s += '}\n';
 
if (i != d.length - 1)
s += '\n';
}
 
s += '\n-->';
 
return s;
}
 
function getReItem(r, s, i) {
var c = r.exec(s);
 
if (c && c.length > i)
return c[i];
 
return '';
}
 
function changedStyleField(field) {
//alert(field.id);
}
 
function showAddMenu() {
var re = document.getElementById('addbutton');
 
addMenuLayer.moveRelativeTo(re, 'tr');
if (addMenuLayer.isMSIE)
addMenuLayer.moveBy(2, 0);
 
addMenuLayer.show();
addMenuLayer.setAutoHide(true, hideAddMenu);
addMenuLayer.addCSSClass(re, 'selected');
}
 
function hideAddMenu(l, e, mx, my) {
var re = document.getElementById('addbutton');
addMenuLayer.removeCSSClass(re, 'selected');
}
 
function addHeadElm(type) {
var le = document.getElementById('headlist');
var re = document.getElementById('addbutton');
var te = document.getElementById(type + '_element');
 
if (lastElementType)
lastElementType.style.display = 'none';
 
te.style.display = 'block';
 
lastElementType = te;
 
addMenuLayer.hide();
addMenuLayer.removeCSSClass(re, 'selected');
 
document.getElementById(type + '_updateelement').value = tinyMCE.getLang('lang_insert', 'Insert', true);
 
le.size = 10;
}
 
function updateHeadElm(item) {
var type = item.substring(0, item.indexOf('_'));
var le = document.getElementById('headlist');
var re = document.getElementById('addbutton');
var te = document.getElementById(type + '_element');
 
if (lastElementType)
lastElementType.style.display = 'none';
 
te.style.display = 'block';
 
lastElementType = te;
 
addMenuLayer.hide();
addMenuLayer.removeCSSClass(re, 'selected');
 
document.getElementById(type + '_updateelement').value = tinyMCE.getLang('lang_update', 'Update', true);
 
le.size = 10;
}
 
function cancelElementUpdate() {
var le = document.getElementById('headlist');
 
if (lastElementType)
lastElementType.style.display = 'none';
 
le.size = 26;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullpage/langs/en.js
New file
0,0 → 1,92
// UK lang variables
 
tinyMCE.addToLang('fullpage',{
title : 'Document properties',
desc : 'Document properties',
meta_tab : 'General',
appearance_tab : 'Appearance',
advanced_tab : 'Advanced',
meta_props : 'Meta information',
langprops : 'Language and encoding',
meta_title : 'Title',
meta_keywords : 'Keywords',
meta_description : 'Description',
meta_robots : 'Robots',
doctypes : 'Doctype',
langcode : 'Language code',
langdir : 'Language direction',
ltr : 'Left to right',
rtl : 'Right to left',
xml_pi : 'XML declaration',
encoding : 'Character encoding',
appearance_bgprops : 'Background properties',
appearance_marginprops : 'Body margins',
appearance_linkprops : 'Link colors',
appearance_textprops : 'Text properties',
bgcolor : 'Background color',
bgimage : 'Background image',
left_margin : 'Left margin',
right_margin : 'Right margin',
top_margin : 'Top margin',
bottom_margin : 'Bottom margin',
text_color : 'Text color',
font_size : 'Font size',
font_face : 'Font face',
link_color : 'Link color',
hover_color : 'Hover color',
visited_color : 'Visited color',
active_color : 'Active color',
textcolor : 'Color',
fontsize : 'Font size',
fontface : 'Font family',
meta_index_follow : 'Index and follow the links',
meta_index_nofollow : 'Index and don\'t follow the links',
meta_noindex_follow : 'Do not index but follow the links',
meta_noindex_nofollow : 'Do not index and don\'t follow the links',
appearance_style : 'Stylesheet and style properties',
stylesheet : 'Stylesheet',
style : 'Style',
author : 'Author',
copyright : 'Copyright',
add : 'Add new element',
remove : 'Remove selected element',
moveup : 'Move selected element up',
movedown : 'Move selected element down',
head_elements : 'Head elements',
info : 'Information',
info_text : '',
add_title : 'Title element',
add_meta : 'Meta element',
add_script : 'Script element',
add_style : 'Style element',
add_link : 'Link element',
add_base : 'Base element',
add_comment : 'Comment node',
title_element : 'Title element',
script_element : 'Script element',
style_element : 'Style element',
base_element : 'Base element',
link_element : 'Link element',
meta_element : 'Meta element',
comment_element : 'Comment',
src : 'Src',
language : 'Language',
href : 'Href',
target : 'Target',
rel : 'Rel',
type : 'Type',
charset : 'Charset',
defer : 'Defer',
media : 'Media',
properties : 'Properties',
name : 'Name',
value : 'Value',
content : 'Content',
rel : 'Rel',
rev : 'Rev',
hreflang : 'Href lang',
general_props : 'General',
advanced_props : 'Advanced',
delta_width : 0,
delta_height : 0
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullpage/langs/fr.js
New file
0,0 → 1,93
// FR lang variables
// Modified by Motte, last updated 2006-03-23
 
tinyMCE.addToLang('fullpage',{
title : 'Propri&eacute;t&eacute;s de la page',
desc : 'Propri&eacute;t&eacute;s de la page',
meta_tab : 'G&eacute;n&eacute;ral',
appearance_tab : 'Apparence',
advanced_tab : 'Avanc&eacute;',
meta_props : 'Balises Meta',
langprops : 'Langue et encodage',
meta_title : 'Titre',
meta_keywords : 'Mots cl&eacute;s',
meta_description : 'Description',
meta_robots : 'Robots',
doctypes : 'Doctype',
langcode : 'Code langue',
langdir : 'Sens de l\'&eacute;criture',
ltr : 'Gauche &agrave; droite',
rtl : 'Droite &agrave; gauche',
xml_pi : 'En-t&ecirc;te XML',
encoding : 'Encodage',
appearance_bgprops : 'Arri&egrave;re-plan',
appearance_marginprops : 'Marges du document',
appearance_linkprops : 'Couleur des liens',
appearance_textprops : 'Propri&eacute;t&eacute;s du texte',
bgcolor : 'Couleur de fond',
bgimage : 'Image de fond',
left_margin : 'Gauche',
right_margin : 'Droite',
top_margin : 'Haut',
bottom_margin : 'Bas',
text_color : 'Couleur du texte',
font_size : 'Taille',
font_face : 'Police',
link_color : 'Couleur des liens',
hover_color : 'Liens survol&eacute;s',
visited_color : 'Liens visit&eacute;s',
active_color : 'Liens actifs',
textcolor : 'Couleur',
fontsize : 'Taille',
fontface : 'Police',
meta_index_follow : 'Page actuelle et pages li&eacute;es',
meta_index_nofollow : 'Page actuelle uniquement',
meta_noindex_follow : 'Uniquement les pages li&eacute;es',
meta_noindex_nofollow : 'Aucune indexation',
appearance_style : 'Feuille de style et propri&eacute;t&eacute;s',
stylesheet : 'Feuille de style',
style : 'Style',
author : 'Auteur',
copyright : 'Copyright',
add : 'Ajouter un &eacute;l&eacute;ment',
remove : 'Retirer l\'&eacute;l&eacute;ment s&eacute;lectionn&eacute;',
moveup : 'Vers le haut',
movedown : 'Vers le bas',
head_elements : 'En-t&ecirc;tes',
info : 'Information',
info_text : '',
add_title : 'Balise Titre',
add_meta : 'Balise Meta',
add_script : 'Balise Script',
add_style : 'Balise Style',
add_link : 'Balise Lien',
add_base : 'Balise Base',
add_comment : 'Ajouter un commentaire',
title_element : 'Balise Titre',
script_element : 'Balise Script',
style_element : 'Balise Style',
base_element : 'Balise Base',
link_element : 'Balise Lien',
meta_element : 'Balise Meta',
comment_element : 'Commentaire',
src : 'Src',
language : 'Langage',
href : 'Href',
target : 'Target',
rel : 'Rel',
type : 'Type',
charset : 'Charset',
defer : 'Defer',
media : 'Media',
properties : 'Propri&eacute;t&eacute;s',
name : 'Nom',
value : 'Valeur',
content : 'Contenu',
rel : 'Rel',
rev : 'Rev',
hreflang : 'Href lang',
general_props : 'G&eacute;n&eacute;ral',
advanced_props : 'Avanc&eacute;',
delta_width : 0,
delta_height : 0
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullpage/images/add.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullpage/images/add.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullpage/images/move_up.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullpage/images/move_up.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullpage/images/move_down.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullpage/images/move_down.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullpage/images/remove.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullpage/images/remove.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullpage/images/fullpage.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullpage/images/fullpage.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullpage/editor_plugin_src.js
New file
0,0 → 1,235
/**
* $Id: editor_plugin_src.js 232 2007-03-05 17:00:27Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
tinyMCE.importPluginLanguagePack('fullpage');
 
var TinyMCE_FullPagePlugin = {
getInfo : function() {
return {
longname : 'Fullpage',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
getControlHTML : function(cn) {
switch (cn) {
case "fullpage":
return tinyMCE.getButtonHTML(cn, 'lang_fullpage_desc', '{$pluginurl}/images/fullpage.gif', 'mceFullPageProperties');
}
 
return "";
},
 
execCommand : function(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
case "mceFullPageProperties":
var template = new Array();
 
template['file'] = '../../plugins/fullpage/fullpage.htm';
template['width'] = 430;
template['height'] = 485 + (tinyMCE.isOpera ? 5 : 0);
 
template['width'] += tinyMCE.getLang('lang_fullpage_delta_width', 0);
template['height'] += tinyMCE.getLang('lang_fullpage_delta_height', 0);
 
tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});
return true;
 
case "mceFullPageUpdate":
TinyMCE_FullPagePlugin._addToHead(tinyMCE.getInstanceById(editor_id));
return true;
}
 
// Pass to next handler in chain
return false;
},
 
cleanup : function(type, content, inst) {
switch (type) {
case "insert_to_editor":
var tmp = content.toLowerCase();
var pos = tmp.indexOf('<body'), pos2;
 
// Split page in header and body chunks
if (pos != -1) {
pos = tmp.indexOf('>', pos);
pos2 = tmp.lastIndexOf('</body>');
inst.fullpageTopContent = content.substring(0, pos + 1);
content = content.substring(pos + 1, pos2);
// tinyMCE.debug(inst.fullpageTopContent, content);
} else {
if (!inst.fullpageTopContent) {
var docType = tinyMCE.getParam("fullpage_default_doctype", '<!DOCTYPE html PUBLIC "-/'+'/W3C//DTD XHTML 1.0 Transitional/'+'/EN" "http:/'+'/www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
var enc = tinyMCE.getParam("fullpage_default_encoding", 'utf-8');
var title = tinyMCE.getParam("fullpage_default_title", 'Untitled document');
var lang = tinyMCE.getParam("fullpage_default_langcode", 'en');
var pi = tinyMCE.getParam("fullpage_default_xml_pi", true);
var ff = tinyMCE.getParam("fullpage_default_font_family", "");
var fz = tinyMCE.getParam("fullpage_default_font_size", "");
var ds = tinyMCE.getParam("fullpage_default_style", "");
var dtc = tinyMCE.getParam("fullpage_default_text_color", "");
 
// Xml encode it
title = title.replace(/&/g, '&amp;');
title = title.replace(/\"/g, '&quot;');
title = title.replace(/</g, '&lt;');
title = title.replace(/>/g, '&gt;');
 
tmp = '';
 
// Make default chunk
if (pi)
tmp += '<?xml version="1.0" encoding="' + enc + '"?>\n';
 
tmp += docType + '\n';
tmp += '<html xmlns="http:/'+'/www.w3.org/1999/xhtml" lang="' + lang + '" xml:lang="' + lang + '">\n';
tmp += '<head>\n';
tmp += '\t<title>' + title + '</title>\n';
tmp += '\t<meta http-equiv="Content-Type" content="text/html; charset=' + enc + '" />\n';
tmp += '</head>\n';
tmp += '<body';
 
if (ff != '' || fz != '') {
tmp += ' style="';
 
if (ds != '')
tmp += ds + ";";
 
if (ff != '')
tmp += 'font-family: ' + ff + ";";
 
if (fz != '')
tmp += 'font-size: ' + fz + ";";
 
tmp += '"';
}
 
if (dtc != '')
tmp += ' text="' + dtc + '"';
 
tmp += '>\n';
 
inst.fullpageTopContent = tmp;
}
}
 
this._addToHead(inst);
 
break;
 
case "get_from_editor":
if (inst.fullpageTopContent && !tinyMCE.getParam("fullpage_hide_in_source_view", false)) {
content = content.replace(/(\s)?mce\_[a-z_]+\=[^\s>]+(\s|\>)/i, ''); // Remove internal stuff
content = inst.fullpageTopContent + content + "\n</body>\n</html>";
}
 
break;
 
case "submit_content":
if (inst.fullpageTopContent && tinyMCE.getParam("fullpage_hide_in_source_view", false))
content = inst.fullpageTopContent + content + "\n</body>\n</html>";
 
break;
}
 
// Pass through to next handler in chain
return content;
},
 
// Private plugin internal methods
 
_addToHead : function(inst) {
var doc = inst.getDoc();
var head = doc.getElementsByTagName("head")[0];
var body = doc.body;
var h = inst.fullpageTopContent;
var e = doc.createElement("body");
var nl, i, le, tmp;
 
// Remove stuff we don't want
h = h.replace(/(\r|\n)/gi, '');
h = h.replace(/<\?[^\>]*\>/gi, '');
h = h.replace(/<\/?(!DOCTYPE|head|html)[^\>]*\>/gi, '');
h = h.replace(/<script(.*?)<\/script>/gi, '');
h = h.replace(/<title(.*?)<\/title>/gi, '');
h = h.replace(/<(meta|base)[^>]*>/gi, '');
 
// Make link and style elements into pre
h = h.replace(/<link([^>]*)\/>/gi, '<pre mce_type="link" $1></pre>');
//h = h.replace(/<style([^>]*)>(.*?)<\/style>/gi, '<pre mce_type="style" $1>$2</pre>');
 
// Make body a div
h = h.replace(/<body/gi, '<div mce_type="body"');
h += '</div>';
 
// Now crapy MSIE can parse it
e.innerHTML = h;
 
// Reset all body attributes
body.vLink = body.aLink = body.link = body.text = '';
body.style.cssText = '';
 
// Delete all old links
nl = head.getElementsByTagName('link');
for (i=0; i<nl.length; i++) {
if (tinyMCE.getAttrib(nl[i], 'mce_head') == "true")
nl[i].parentNode.removeChild(nl[i]);
}
 
// Add link elements
nl = e.getElementsByTagName('pre');
for (i=0; i<nl.length; i++) {
tmp = tinyMCE.getAttrib(nl[i], 'media');
if (tinyMCE.getAttrib(nl[i], 'mce_type') == "link" && (tmp == "" || tmp == "screen" || tmp == "all") && tinyMCE.getAttrib(nl[i], 'rel') == "stylesheet") {
le = doc.createElement("link");
 
le.rel = "stylesheet";
le.href = tinyMCE.getAttrib(nl[i], 'href');
le.setAttribute("mce_head", "true");
 
head.appendChild(le);
}
}
 
// Add body attributes
nl = e.getElementsByTagName('div');
if (nl.length > 0) {
body.style.cssText = tinyMCE.getAttrib(nl[0], 'style');
 
if ((tmp = tinyMCE.getAttrib(nl[0], 'leftmargin')) != '' && body.style.marginLeft == '')
body.style.marginLeft = tmp + "px";
 
if ((tmp = tinyMCE.getAttrib(nl[0], 'rightmargin')) != '' && body.style.marginRight == '')
body.style.marginRight = tmp + "px";
 
if ((tmp = tinyMCE.getAttrib(nl[0], 'topmargin')) != '' && body.style.marginTop == '')
body.style.marginTop = tmp + "px";
 
if ((tmp = tinyMCE.getAttrib(nl[0], 'bottommargin')) != '' && body.style.marginBottom == '')
body.style.marginBottom = tmp + "px";
 
body.dir = tinyMCE.getAttrib(nl[0], 'dir');
body.vLink = tinyMCE.getAttrib(nl[0], 'vlink');
body.aLink = tinyMCE.getAttrib(nl[0], 'alink');
body.link = tinyMCE.getAttrib(nl[0], 'link');
body.text = tinyMCE.getAttrib(nl[0], 'text');
 
if ((tmp = tinyMCE.getAttrib(nl[0], 'background')) != '')
body.style.backgroundImage = "url('" + tmp + "')";
 
if ((tmp = tinyMCE.getAttrib(nl[0], 'bgcolor')) != '')
body.style.backgroundColor = tmp;
}
}
};
 
tinyMCE.addPlugin("fullpage", TinyMCE_FullPagePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullpage/fullpage.htm
New file
0,0 → 1,577
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_fullpage_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mclayer.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/fullpage.js"></script>
<link href="css/fullpage.css" rel="stylesheet" type="text/css" />
<base target="_self" />
</head>
<body id="advlink" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<form onsubmit="updateAction();return false;" name="fullpage" action="#">
<div class="tabs">
<ul>
<li id="meta_tab" class="current"><span><a href="javascript:mcTabs.displayTab('meta_tab','meta_panel');" onmousedown="return false;">{$lang_fullpage_meta_tab}</a></span></li>
<li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{$lang_fullpage_appearance_tab}</a></span></li>
<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_fullpage_advanced_tab}</a></span></li>
</ul>
</div>
 
<div class="panel_wrapper">
<div id="meta_panel" class="panel current">
<fieldset>
<legend>{$lang_fullpage_meta_props}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td nowrap="nowrap"><label for="metatitle">{$lang_fullpage_meta_title}</label>&nbsp;</td>
<td><input type="text" id="metatitle" name="metatitle" value="" /></td>
</tr>
<tr>
<td nowrap="nowrap"><label for="metakeywords">{$lang_fullpage_meta_keywords}</label>&nbsp;</td>
<td><textarea id="metakeywords" name="metakeywords" rows="4"></textarea></td>
</tr>
<tr>
<td nowrap="nowrap"><label for="metadescription">{$lang_fullpage_meta_description}</label>&nbsp;</td>
<td><textarea id="metadescription" name="metadescription" rows="4"></textarea></td>
</tr>
<tr>
<td nowrap="nowrap"><label for="metaauthor">{$lang_fullpage_author}</label>&nbsp;</td>
<td><input type="text" id="metaauthor" name="metaauthor" value="" /></td>
</tr>
<tr>
<td nowrap="nowrap"><label for="metacopyright">{$lang_fullpage_copyright}</label>&nbsp;</td>
<td><input type="text" id="metacopyright" name="metacopyright" value="" /></td>
</tr>
<tr>
<td nowrap="nowrap"><label for="metarobots">{$lang_fullpage_meta_robots}</label>&nbsp;</td>
<td>
<select id="metarobots" name="metarobots">
<option value="">{$lang_not_set}</option>
<option value="index,follow">{$lang_fullpage_meta_index_follow}</option>
<option value="index,nofollow">{$lang_fullpage_meta_index_nofollow}</option>
<option value="noindex,follow">{$lang_fullpage_meta_noindex_follow}</option>
<option value="noindex,nofollow">{$lang_fullpage_meta_noindex_nofollow}</option>
</select>
</td>
</tr>
</table>
</fieldset>
 
<fieldset>
<legend>{$lang_fullpage_langprops}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td class="column1"><label for="docencoding">{$lang_fullpage_encoding}</label></td>
<td>
<select id="docencoding" name="docencoding">
<option value="">{$lang_not_set}</option>
</select>
</td>
</tr>
<tr>
<td nowrap="nowrap"><label for="doctypes">{$lang_fullpage_doctypes}</label>&nbsp;</td>
<td>
<select id="doctypes" name="doctypes">
<option value="">{$lang_not_set}</option>
</select>
</td>
</tr>
<tr>
<td nowrap="nowrap"><label for="langcode">{$lang_fullpage_langcode}</label>&nbsp;</td>
<td><input type="text" id="langcode" name="langcode" value="" /></td>
</tr>
<tr>
<td class="column1"><label for="langdir">{$lang_fullpage_langdir}</label></td>
<td>
<select id="langdir" name="langdir">
<option value="">{$lang_not_set}</option>
<option value="ltr">{$lang_fullpage_ltr}</option>
<option value="rtl">{$lang_fullpage_rtl}</option>
</select>
</td>
</tr>
<tr>
<td nowrap="nowrap"><label for="xml_pi">{$lang_fullpage_xml_pi}</label>&nbsp;</td>
<td><input type="checkbox" id="xml_pi" name="xml_pi" class="checkbox" /></td>
</tr>
</table>
</fieldset>
</div>
 
<div id="appearance_panel" class="panel">
<fieldset>
<legend>{$lang_fullpage_appearance_textprops}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td class="column1"><label for="fontface">{$lang_fullpage_fontface}</label></td>
<td>
<select id="fontface" name="fontface" onchange="changedStyleField(this);">
<option value="">{$lang_not_set}</option>
</select>
</td>
</tr>
 
<tr>
<td class="column1"><label for="fontsize">{$lang_fullpage_fontsize}</label></td>
<td>
<select id="fontsize" name="fontsize" onchange="changedStyleField(this);">
<option value="">{$lang_not_set}</option>
</select>
</td>
</tr>
 
<tr>
<td class="column1"><label for="textcolor">{$lang_fullpage_textcolor}</label></td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="textcolor" name="textcolor" type="text" value="" size="9" onchange="updateColor('textcolor_pick','textcolor');changedStyleField(this);" /></td>
<td id="textcolor_pickcontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>
</fieldset>
 
<fieldset>
<legend>{$lang_fullpage_appearance_bgprops}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td class="column1"><label for="bgimage">{$lang_fullpage_bgimage}</label></td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="bgimage" name="bgimage" type="text" value="" onchange="changedStyleField(this);" /></td>
<td id="bgimage_pickcontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="column1"><label for="bgcolor">{$lang_fullpage_bgcolor}</label></td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedStyleField(this);" /></td>
<td id="bgcolor_pickcontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>
</fieldset>
 
<fieldset>
<legend>{$lang_fullpage_appearance_marginprops}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td class="column1"><label for="leftmargin">{$lang_fullpage_left_margin}</label></td>
<td><input id="leftmargin" name="leftmargin" type="text" value="" onchange="changedStyleField(this);" /></td>
<td class="column1"><label for="rightmargin">{$lang_fullpage_right_margin}</label></td>
<td><input id="rightmargin" name="rightmargin" type="text" value="" onchange="changedStyleField(this);" /></td>
</tr>
<tr>
<td class="column1"><label for="topmargin">{$lang_fullpage_top_margin}</label></td>
<td><input id="topmargin" name="topmargin" type="text" value="" onchange="changedStyleField(this);" /></td>
<td class="column1"><label for="bottommargin">{$lang_fullpage_bottom_margin}</label></td>
<td><input id="bottommargin" name="bottommargin" type="text" value="" onchange="changedStyleField(this);" /></td>
</tr>
</table>
</fieldset>
 
<fieldset>
<legend>{$lang_fullpage_appearance_linkprops}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td class="column1"><label for="link_color">{$lang_fullpage_link_color}</label></td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="link_color" name="link_color" type="text" value="" size="9" onchange="updateColor('link_color_pick','link_color');changedStyleField(this);" /></td>
<td id="link_color_pickcontainer">&nbsp;</td>
</tr>
</table>
</td>
 
<td class="column1"><label for="visited_color">{$lang_fullpage_visited_color}</label></td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="visited_color" name="visited_color" type="text" value="" size="9" onchange="updateColor('visited_color_pick','visited_color');changedStyleField(this);" /></td>
<td id="visited_color_pickcontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td class="column1"><label for="active_color">{$lang_fullpage_active_color}</label></td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="active_color" name="active_color" type="text" value="" size="9" onchange="updateColor('active_color_pick','active_color');changedStyleField(this);" /></td>
<td id="active_color_pickcontainer">&nbsp;</td>
</tr>
</table>
</td>
 
<td>&nbsp;</td>
<td>&nbsp;</td>
 
<!-- <td class="column1"><label for="hover_color">{$lang_fullpage_hover_color}</label></td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="hover_color" name="hover_color" type="text" value="" size="9" onchange="changedStyleField(this);" /></td>
<td id="hover_color_pickcontainer">&nbsp;</td>
</tr>
</table>
</td> -->
</tr>
</table>
</fieldset>
 
<fieldset>
<legend>{$lang_fullpage_appearance_style}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td class="column1"><label for="stylesheet">{$lang_fullpage_stylesheet}</label></td>
<td><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="stylesheet" name="stylesheet" type="text" value="" /></td>
<td id="stylesheet_browsercontainer">&nbsp;</td>
</tr>
</table></td>
</tr>
<tr>
<td class="column1"><label for="style">{$lang_fullpage_style}</label></td>
<td><input id="style" name="style" type="text" value="" onchange="changedStyleField(this);" /></td>
</tr>
</table>
</fieldset>
</div>
 
<div id="advanced_panel" class="panel">
<div id="addmenu">
<table border="0" cellpadding="0" cellspacing="0">
<tr><td><a href="javascript:addHeadElm('title');" onmousedown="return false;"><span>{$lang_fullpage_add_title}</span></a></td></tr>
<tr><td><a href="javascript:addHeadElm('meta');" onmousedown="return false;"><span>{$lang_fullpage_add_meta}</span></a></td></tr>
<tr><td><a href="javascript:addHeadElm('script');" onmousedown="return false;"><span>{$lang_fullpage_add_script}</span></a></td></tr>
<tr><td><a href="javascript:addHeadElm('style');" onmousedown="return false;"><span>{$lang_fullpage_add_style}</span></a></td></tr>
<tr><td><a href="javascript:addHeadElm('link');" onmousedown="return false;"><span>{$lang_fullpage_add_link}</span></a></td></tr>
<tr><td><a href="javascript:addHeadElm('base');" onmousedown="return false;"><span>{$lang_fullpage_add_base}</span></a></td></tr>
<tr><td><a href="javascript:addHeadElm('comment');" onmousedown="return false;"><span>{$lang_fullpage_add_comment}</span></a></td></tr>
</table>
</div>
 
<fieldset>
<legend>{$lang_fullpage_head_elements}</legend>
 
<div class="headlistwrapper">
<div class="toolbar">
<div style="float: left">
<a id="addbutton" href="javascript:showAddMenu();" onmousedown="return false;" class="addbutton" title="{$lang_fullpage_add}"></a>
<a href="#" onmousedown="return false;" class="removebutton" title="{$lang_fullpage_remove}"></a>
</div>
<div style="float: right">
<a href="#" onmousedown="return false;" class="moveupbutton" title="{$lang_fullpage_moveup}"></a>
<a href="#" onmousedown="return false;" class="movedownbutton" title="{$lang_fullpage_movedown}"></a>
</div>
<br style="clear: both" />
</div>
<select id="headlist" size="26" onchange="updateHeadElm(this.options[this.selectedIndex].value);">
<option value="title_0">&lt;title&gt;Some title bla bla bla&lt;/title&gt;</option>
<option value="meta_1">&lt;meta name="keywords"&gt;Some bla bla bla&lt;/meta&gt;</option>
<option value="meta_2">&lt;meta name="description"&gt;Some bla bla bla bla bla bla bla bla bla&lt;/meta&gt;</option>
<option value="script_3">&lt;script language=&quot;javascript&quot;&gt;...&lt;/script&gt;</option>
<option value="style_4">&lt;style&gt;...&lt;/style&gt;</option>
<option value="base_5">&lt;base href="." /&gt;</option>
<option value="comment_6">&lt;!-- ... --&gt;</option>
<option value="link_7">&lt;link href="." /&gt;</option>
</select>
</div>
</fieldset>
 
<fieldset id="meta_element">
<legend>{$lang_fullpage_meta_element}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td class="column1"><label for="element_meta_type">{$lang_fullpage_type}</label></td>
<td><select id="element_meta_type">
<option value="name">name</option>
<option value="http-equiv">http-equiv</option>
</select></td>
</tr>
<tr>
<td class="column1"><label for="element_meta_name">{$lang_fullpage_name}</label></td>
<td><input id="element_meta_name" name="element_meta_name" type="text" value="" /></td>
</tr>
<tr>
<td class="column1"><label for="element_meta_content">{$lang_fullpage_content}</label></td>
<td><input id="element_meta_content" name="element_meta_content" type="text" value="" /></td>
</tr>
</table>
 
<input type="button" id="meta_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />
</fieldset>
 
<fieldset id="title_element">
<legend>{$lang_fullpage_title_element}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td class="column1"><label for="element_title">{$lang_fullpage_meta_title}</label></td>
<td><input id="element_title" name="element_title" type="text" value="" /></td>
</tr>
</table>
 
<input type="button" id="title_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />
</fieldset>
 
<fieldset id="script_element">
<legend>{$lang_fullpage_script_element}</legend>
 
<div class="tabs">
<ul>
<li id="script_props_tab" class="current"><span><a href="javascript:mcTabs.displayTab('script_props_tab','script_props_panel');" onmousedown="return false;">{$lang_fullpage_properties}</a></span></li>
<li id="script_value_tab"><span><a href="javascript:mcTabs.displayTab('script_value_tab','script_value_panel');" onmousedown="return false;">{$lang_fullpage_value}</a></span></li>
</ul>
</div>
 
<br style="clear: both" />
 
<div class="panel_wrapper">
<div id="script_props_panel" class="panel current">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td class="column1"><label for="element_script_type">{$lang_fullpage_type}</label></td>
<td><select id="element_script_type">
<option value="text/javascript">text/javascript</option>
<option value="text/jscript">text/jscript</option>
<option value="text/vbscript">text/vbscript</option>
<option value="text/vbs">text/vbs</option>
<option value="text/ecmascript">text/ecmascript</option>
<option value="text/xml">text/xml</option>
</select></td>
</tr>
<tr>
<td class="column1"><label for="element_script_src">{$lang_fullpage_src}</label></td>
<td><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="element_script_src" name="element_script_src" type="text" value="" /></td>
<td id="script_src_pickcontainer">&nbsp;</td>
</tr>
</table></td>
</tr>
<tr>
<td class="column1"><label for="element_script_charset">{$lang_fullpage_charset}</label></td>
<td><select id="element_script_charset"><option value="">{$lang_not_set}</option></select></td>
</tr>
<tr>
<td class="column1"><label for="element_script_defer">{$lang_fullpage_defer}</label></td>
<td><input type="checkbox" id="element_script_defer" name="element_script_defer" class="checkbox" /></td>
</tr>
</table>
</div>
 
<div id="script_value_panel" class="panel">
<textarea id="element_script_value"></textarea>
</div>
</div>
 
<input type="button" id="script_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />
</fieldset>
 
<fieldset id="style_element">
<legend>{$lang_fullpage_style_element}</legend>
 
<div class="tabs">
<ul>
<li id="style_props_tab" class="current"><span><a href="javascript:mcTabs.displayTab('style_props_tab','style_props_panel');" onmousedown="return false;">{$lang_fullpage_properties}</a></span></li>
<li id="style_value_tab"><span><a href="javascript:mcTabs.displayTab('style_value_tab','style_value_panel');" onmousedown="return false;">{$lang_fullpage_value}</a></span></li>
</ul>
</div>
 
<br style="clear: both" />
 
<div class="panel_wrapper">
<div id="style_props_panel" class="panel current">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td class="column1"><label for="element_style_type">{$lang_fullpage_type}</label></td>
<td><select id="element_style_type">
<option value="text/css">text/css</option>
</select></td>
</tr>
<tr>
<td class="column1"><label for="element_style_media">{$lang_fullpage_media}</label></td>
<td><select id="element_style_media"></select></td>
</tr>
</table>
</div>
 
<div id="style_value_panel" class="panel">
<textarea id="element_style_value"></textarea>
</div>
</div>
 
<input type="button" id="style_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />
</fieldset>
 
<fieldset id="base_element">
<legend>{$lang_fullpage_base_element}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td class="column1"><label for="element_base_href">{$lang_fullpage_href}</label></td>
<td><input id="element_base_href" name="element_base_href" type="text" value="" /></td>
</tr>
<tr>
<td class="column1"><label for="element_base_target">{$lang_fullpage_target}</label></td>
<td><input id="element_base_target" name="element_base_target" type="text" value="" /></td>
</tr>
</table>
 
<input type="button" id="base_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />
</fieldset>
 
<fieldset id="link_element">
<legend>{$lang_fullpage_link_element}</legend>
 
<div class="tabs">
<ul>
<li id="link_general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('link_general_tab','link_general_panel');" onmousedown="return false;">{$lang_fullpage_general_props}</a></span></li>
<li id="link_advanced_tab"><span><a href="javascript:mcTabs.displayTab('link_advanced_tab','link_advanced_panel');" onmousedown="return false;">{$lang_fullpage_advanced_props}</a></span></li>
</ul>
</div>
 
<br style="clear: both" />
 
<div class="panel_wrapper">
<div id="link_general_panel" class="panel current">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td class="column1"><label for="element_link_href">{$lang_fullpage_href}</label></td>
<td><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="element_link_href" name="element_link_href" type="text" value="" /></td>
<td id="link_href_pickcontainer">&nbsp;</td>
</tr>
</table></td>
</tr>
<tr>
<td class="column1"><label for="element_link_title">{$lang_fullpage_meta_title}</label></td>
<td><input id="element_link_title" name="element_link_title" type="text" value="" /></td>
</tr>
<tr>
<td class="column1"><label for="element_link_type">{$lang_fullpage_type}</label></td>
<td><select id="element_link_type" name="element_link_type">
<option value="text/css">text/css</option>
<option value="text/javascript">text/javascript</option>
</select></td>
</tr>
<tr>
<td class="column1"><label for="element_link_media">{$lang_fullpage_media}</label></td>
<td><select id="element_link_media" name="element_link_media"></select></td>
</tr>
<tr>
<td><label for="element_style_rel">{$lang_fullpage_rel}</label></td>
<td><select id="element_style_rel" name="element_style_rel">
<option value="">{$lang_not_set}</option>
<option value="stylesheet">Stylesheet</option>
<option value="alternate">Alternate</option>
<option value="designates">Designates</option>
<option value="start">Start</option>
<option value="next">Next</option>
<option value="prev">Prev</option>
<option value="contents">Contents</option>
<option value="index">Index</option>
<option value="glossary">Glossary</option>
<option value="copyright">Copyright</option>
<option value="chapter">Chapter</option>
<option value="subsection">Subsection</option>
<option value="appendix">Appendix</option>
<option value="help">Help</option>
<option value="bookmark">Bookmark</option>
</select>
</td>
</tr>
</table>
</div>
 
<div id="link_advanced_panel" class="panel">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td class="column1"><label for="element_link_charset">{$lang_fullpage_charset}</label></td>
<td><select id="element_link_charset"><option value="">{$lang_not_set}</option></select></td>
</tr>
<tr>
<td class="column1"><label for="element_link_hreflang">{$lang_fullpage_hreflang}</label></td>
<td><input id="element_link_hreflang" name="element_link_hreflang" type="text" value="" /></td>
</tr>
<tr>
<td class="column1"><label for="element_link_target">{$lang_fullpage_target}</label></td>
<td><input id="element_link_target" name="element_link_target" type="text" value="" /></td>
</tr>
<tr>
<td><label for="element_style_rev">{$lang_fullpage_rev}</label></td>
<td><select id="element_style_rev" name="element_style_rev">
<option value="">{$lang_not_set}</option>
<option value="alternate">Alternate</option>
<option value="designates">Designates</option>
<option value="stylesheet">Stylesheet</option>
<option value="start">Start</option>
<option value="next">Next</option>
<option value="prev">Prev</option>
<option value="contents">Contents</option>
<option value="index">Index</option>
<option value="glossary">Glossary</option>
<option value="copyright">Copyright</option>
<option value="chapter">Chapter</option>
<option value="subsection">Subsection</option>
<option value="appendix">Appendix</option>
<option value="help">Help</option>
<option value="bookmark">Bookmark</option>
</select>
</td>
</tr>
</table>
</div>
</div>
 
<input type="button" id="link_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />
</fieldset>
 
<fieldset id="comment_element">
<legend>{$lang_fullpage_comment_element}</legend>
 
<textarea id="element_comment_value"></textarea>
 
<input type="button" id="comment_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />
</fieldset>
</div>
</div>
 
<div class="mceActionPanel">
<div style="float: left">
<input type="button" id="insert" name="update" value="{$lang_update}" onclick="updateAction();" />
</div>
 
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
</div>
</div>
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/style/langs/en.js
New file
0,0 → 1,66
// UK lang variables
 
tinyMCE.addToLang('style',{
title : 'Edit CSS Style',
styleinfo_desc : 'Edit CSS Style',
apply : 'Apply',
text_tab : 'Text',
background_tab : 'Background',
block_tab : 'Block',
box_tab : 'Box',
border_tab : 'Border',
list_tab : 'List',
positioning_tab : 'Positioning',
text_props : 'Text',
text_font : 'Font',
text_size : 'Size',
text_weight : 'Weight',
text_style : 'Style',
text_variant : 'Variant',
text_lineheight : 'Line height',
text_case : 'Case',
text_color : 'Color',
text_decoration : 'Decoration',
text_overline : 'overline',
text_underline : 'underline',
text_striketrough : 'strikethrough',
text_blink : 'blink',
text_none : 'none',
background_color : 'Background color',
background_image : 'Background image',
background_repeat : 'Repeat',
background_attachment : 'Attachment',
background_hpos : 'Horizontal position',
background_vpos : 'Vertical position',
block_wordspacing : 'Word spacing',
block_letterspacing : 'Letter spacing',
block_vertical_alignment : 'Vertical alignment',
block_text_align : 'Text align',
block_text_indent : 'Text indent',
block_whitespace : 'Whitespace',
block_display : 'Display',
box_width : 'Width',
box_height : 'Height',
box_float : 'Float',
box_clear : 'Clear',
padding : 'Padding',
same : 'Same for all',
top : 'Top',
right : 'Right',
bottom : 'Bottom',
left : 'Left',
margin : 'Margin',
style : 'Style',
width : 'Width',
height : 'Height',
color : 'Color',
list_type : 'Type',
bullet_image : 'Bullet image',
position : 'Position',
positioning_type : 'Type',
visibility : 'Visibility',
zindex : 'Z-index',
overflow : 'Overflow',
placement : 'Placement',
clip : 'Clip'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/style/langs/fr.js
New file
0,0 → 1,67
// FR lang variables
// Modified by keyko-web.net, last updated 2007-03-08
 
tinyMCE.addToLang('style',{
title : 'Edtiteur de style CSS',
styleinfo_desc : 'Edtiteur de style CSS',
apply : 'Appliquer',
text_tab : 'Texte',
background_tab : 'Arri&egrave;re-plan',
block_tab : 'Bloc',
box_tab : 'Boite',
border_tab : 'Bord',
list_tab : 'Liste',
positioning_tab : 'Positionnement',
text_props : 'Texte',
text_font : 'Police',
text_size : 'Taille',
text_weight : 'Poids',
text_style : 'Style',
text_variant : 'Variant',
text_lineheight : 'Hauteur de ligne',
text_case : 'Casse',
text_color : 'Couleur',
text_decoration : 'D&eacute;coration',
text_overline : 'surlign&eacute;',
text_underline : 'soulign&eacute;',
text_striketrough : 'barr&eacute;',
text_blink : 'clignotant',
text_none : 'aucun',
background_color : 'Couleur d\'arri&egrave;re-plan',
background_image : 'Image d\'arri&egrave;re-plan',
background_repeat : 'R&eacute;p&eacute;ter',
background_attachment : 'Attacher',
background_hpos : 'Position horizontale',
background_vpos : 'Position verticale',
block_wordspacing : 'Espace entre les mots',
block_letterspacing : 'Espace entre les lettres',
block_vertical_alignment : 'Aligenement vertical',
block_text_align : 'Aligement du texte',
block_text_indent : 'Indentation du texte',
block_whitespace : 'Espace',
block_display : 'Afficher',
box_width : 'Largeur',
box_height : 'Hauteur',
box_float : 'Float',
box_clear : 'Effacer',
padding : 'Padding',
same : 'Identique pour tous',
top : 'Haut',
right : 'Droite',
bottom : 'Bas',
left : 'Gauche',
margin : 'Marge',
style : 'Style',
width : 'Largeur',
height : 'Hauteur',
color : 'Couleur',
list_type : 'Type',
bullet_image : 'Bullet image',
position : 'Position',
positioning_type : 'Type',
visibility : 'Visibilit&eacute;',
zindex : 'Z-index',
overflow : 'Overflow',
placement : 'Placement',
clip : 'Clip'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/style/images/apply_button_bg.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/style/images/apply_button_bg.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/style/images/style_info.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/style/images/style_info.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/style/images/styleprops.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/style/images/styleprops.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/style/editor_plugin_src.js
New file
0,0 → 1,83
/**
* $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
tinyMCE.importPluginLanguagePack('style');
 
var TinyMCE_StylePlugin = {
getInfo : function() {
return {
longname : 'Style',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
getControlHTML : function(cn) {
switch (cn) {
case "styleprops":
return tinyMCE.getButtonHTML(cn, 'lang_style_styleinfo_desc', '{$pluginurl}/images/styleprops.gif', 'mceStyleProps', true);
}
 
return "";
},
 
execCommand : function(editor_id, element, command, user_interface, value) {
var e, inst;
 
// Handle commands
switch (command) {
case "mceStyleProps":
TinyMCE_StylePlugin._styleProps();
return true;
 
case "mceSetElementStyle":
inst = tinyMCE.getInstanceById(editor_id);
e = inst.selection.getFocusElement();
 
if (e) {
e.style.cssText = value;
inst.repaint();
}
 
return true;
}
 
// Pass to next handler in chain
return false;
},
 
handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
if (node.nodeName == 'BODY')
tinyMCE.switchClass(editor_id + '_styleprops', 'mceButtonDisabled');
else
tinyMCE.switchClass(editor_id + '_styleprops', 'mceButtonNormal');
},
 
// Private plugin specific methods
 
_styleProps : function() {
var e = tinyMCE.selectedInstance.selection.getFocusElement();
 
if (!e || e.nodeName == 'BODY')
return;
 
tinyMCE.openWindow({
file : '../../plugins/style/props.htm',
width : 480 + tinyMCE.getLang('lang_style_props_delta_width', 0),
height : 320 + tinyMCE.getLang('lang_style_props_delta_height', 0)
}, {
editor_id : tinyMCE.selectedInstance.editorId,
inline : "yes",
style_text : e.style.cssText
});
}
};
 
tinyMCE.addPlugin("style", TinyMCE_StylePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/style/css/props.css
New file
0,0 → 1,62
#text_font {
width: 250px;
}
 
#text_size {
width: 70px;
}
 
.mceAddSelectValue {
background-color: #DDDDDD;
}
 
select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left {
width: 70px;
}
 
#box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex {
width: 70px;
}
 
#positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left {
width: 70px;
}
 
#positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left {
width: 70px;
}
 
.panel_wrapper div.current {
padding-top: 10px;
height: 230px;
}
 
.delim {
border-left: 1px solid gray;
}
 
.tdelim {
border-bottom: 1px solid gray;
}
 
#block_display {
width: 145px;
}
 
#list_type {
width: 115px;
}
 
.disabled {
background-color: #EEEEEE;
}
 
#apply {
font-weight: bold;
width: 78px;
height: 21px;
border: 0;
background-image: url('../images/apply_button_bg.gif');
cursor: pointer;
}
 
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/style/props.htm
New file
0,0 → 1,729
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_style_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/props.js"></script>
<link href="css/props.css" rel="stylesheet" type="text/css" />
<base target="_self" />
</head>
 
<body id="styleprops" onLoad="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<form onSubmit="updateAction();return false;" action="#">
<div class="tabs">
<ul>
<li id="text_tab" class="current"><span><a href="javascript:mcTabs.displayTab('text_tab','text_panel');" onMouseDown="return false;">{$lang_style_text_tab}</a></span></li>
<li id="background_tab"><span><a href="javascript:mcTabs.displayTab('background_tab','background_panel');" onMouseDown="return false;">{$lang_style_background_tab}</a></span></li>
<li id="block_tab"><span><a href="javascript:mcTabs.displayTab('block_tab','block_panel');" onMouseDown="return false;">{$lang_style_block_tab}</a></span></li>
<li id="box_tab"><span><a href="javascript:mcTabs.displayTab('box_tab','box_panel');" onMouseDown="return false;">{$lang_style_box_tab}</a></span></li>
<li id="border_tab"><span><a href="javascript:mcTabs.displayTab('border_tab','border_panel');" onMouseDown="return false;">{$lang_style_border_tab}</a></span></li>
<li id="list_tab"><span><a href="javascript:mcTabs.displayTab('list_tab','list_panel');" onMouseDown="return false;">{$lang_style_list_tab}</a></span></li>
<li id="positioning_tab"><span><a href="javascript:mcTabs.displayTab('positioning_tab','positioning_panel');" onMouseDown="return false;">{$lang_style_positioning_tab}</a></span></li>
</ul>
</div>
 
<div class="panel_wrapper">
<div id="text_panel" class="panel current">
<table border="0" width="100%">
<tr>
<td><label for="text_font">{$lang_style_text_font}</label></td>
<td colspan="3">
<select id="text_font" name="text_font" class="mceEditableSelect" onChange="alert(this.options[this.selectedIndex].value);"></select>
</td>
</tr>
<tr>
<td><label for="text_size">{$lang_style_text_size}</label></td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><select id="text_size" name="text_size" class="mceEditableSelect"></select></td>
<td>&nbsp;</td>
<td><select id="text_size_measurement" name="text_size_measurement"></select></td>
</tr>
</table>
</td>
<td><label for="text_weight">{$lang_style_text_weight}</label></td>
<td>
<select id="text_weight" name="text_weight"></select>
</td>
</tr>
<tr>
<td><label for="text_style">{$lang_style_text_style}</label></td>
<td>
<select id="text_style" name="text_style" class="mceEditableSelect"></select>
</td>
<td><label for="text_variant">{$lang_style_text_variant}</label></td>
<td>
<select id="text_variant" name="text_variant"></select>
</td>
</tr>
<tr>
<td><label for="text_lineheight">{$lang_style_text_lineheight}</label></td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<select id="text_lineheight" name="text_lineheight" class="mceEditableSelect"></select>
</td>
<td>&nbsp;</td>
<td><select id="text_lineheight_measurement" name="text_lineheight_measurement"></select></td>
</tr>
</table>
</td>
<td><label for="text_case">{$lang_style_text_case}</label></td>
<td>
<select id="text_case" name="text_case"></select>
</td>
</tr>
<tr>
<td><label for="text_color">{$lang_style_text_color}</label></td>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="text_color" name="text_color" type="text" value="" size="9" onChange="updateColor('text_color_pick','text_color');" /></td>
<td id="text_color_pickcontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr>
<td valign="top" style="vertical-align: top; padding-top: 3px;">{$lang_style_text_decoration}</td>
<td colspan="2">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input id="text_underline" name="text_underline" class="checkbox" type="checkbox" /></td>
<td><label for="text_underline">{$lang_style_text_underline}</label></td>
</tr>
<tr>
<td><input id="text_overline" name="text_overline" class="checkbox" type="checkbox" /></td>
<td><label for="text_overline">{$lang_style_text_overline}</label></td>
</tr>
<tr>
<td><input id="text_linethrough" name="text_linethrough" class="checkbox" type="checkbox" /></td>
<td><label for="text_linethrough">{$lang_style_text_striketrough}</label></td>
</tr>
<tr>
<td><input id="text_blink" name="text_blink" class="checkbox" type="checkbox" /></td>
<td><label for="text_blink">{$lang_style_text_blink}</label></td>
</tr>
<tr>
<td><input id="text_none" name="text_none" class="checkbox" type="checkbox" /></td>
<td><label for="text_none">{$lang_style_text_none}</label></td>
</tr>
</table>
</td>
</tr>
</table>
</div>
 
<div id="background_panel" class="panel">
<table border="0">
<tr>
<td><label for="background_color">{$lang_style_background_color}</label></td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="background_color" name="background_color" type="text" value="" size="9" onChange="updateColor('background_color_pick','background_color');" /></td>
<td id="background_color_pickcontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td><label for="background_image">{$lang_style_background_image}</label></td>
<td><table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input id="background_image" name="background_image" type="text" /></td>
<td id="background_image_browser">&nbsp;</td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td><label for="background_repeat">{$lang_style_background_repeat}</label></td>
<td><select id="background_repeat" name="background_repeat" class="mceEditableSelect"></select></td>
</tr>
 
<tr>
<td><label for="background_attachment">{$lang_style_background_attachment}</label></td>
<td><select id="background_attachment" name="background_attachment" class="mceEditableSelect"></select></td>
</tr>
 
<tr>
<td><label for="background_hpos">{$lang_style_background_hpos}</label></td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><select id="background_hpos" name="background_hpos" class="mceEditableSelect"></select></td>
<td>&nbsp;</td>
<td><select id="background_hpos_measurement" name="background_hpos_measurement"></select></td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td><label for="background_vpos">{$lang_style_background_vpos}</label></td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><select id="background_vpos" name="background_vpos" class="mceEditableSelect"></select></td>
<td>&nbsp;</td>
<td><select id="background_vpos_measurement" name="background_vpos_measurement"></select></td>
</tr>
</table>
</td>
</tr>
</table>
</div>
 
<div id="block_panel" class="panel">
<table border="0">
<tr>
<td><label for="block_wordspacing">{$lang_style_block_wordspacing}</label></td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><select id="block_wordspacing" name="block_wordspacing" class="mceEditableSelect"></select></td>
<td>&nbsp;</td>
<td><select id="block_wordspacing_measurement" name="block_wordspacing_measurement"></select></td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td><label for="block_letterspacing">{$lang_style_block_letterspacing}</label></td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><select id="block_letterspacing" name="block_letterspacing" class="mceEditableSelect"></select></td>
<td>&nbsp;</td>
<td><select id="block_letterspacing_measurement" name="block_letterspacing_measurement"></select></td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td><label for="block_vertical_alignment">{$lang_style_block_vertical_alignment}</label></td>
<td><select id="block_vertical_alignment" name="block_vertical_alignment" class="mceEditableSelect"></select></td>
</tr>
 
<tr>
<td><label for="block_text_align">{$lang_style_block_text_align}</label></td>
<td><select id="block_text_align" name="block_text_align" class="mceEditableSelect"></select></td>
</tr>
 
<tr>
<td><label for="block_text_indent">{$lang_style_block_text_indent}</label></td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="block_text_indent" name="block_text_indent" /></td>
<td>&nbsp;</td>
<td><select id="block_text_indent_measurement" name="block_text_indent_measurement"></select></td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td><label for="block_whitespace">{$lang_style_block_whitespace}</label></td>
<td><select id="block_whitespace" name="block_whitespace" class="mceEditableSelect"></select></td>
</tr>
 
<tr>
<td><label for="block_display">{$lang_style_block_display}</label></td>
<td><select id="block_display" name="block_display" class="mceEditableSelect"></select></td>
</tr>
</table>
</div>
 
<div id="box_panel" class="panel">
<table border="0">
<tr>
<td><label for="box_width">{$lang_style_box_width}</label></td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="box_width" name="box_width" class="mceEditableSelect" onChange="synch('box_width','positioning_width');" /></td>
<td>&nbsp;</td>
<td><select id="box_width_measurement" name="box_width_measurement"></select></td>
</tr>
</table>
</td>
<td>&nbsp;&nbsp;&nbsp;<label for="box_float">{$lang_style_box_float}</label></td>
<td><select id="box_float" name="box_float" class="mceEditableSelect"></select></td>
</tr>
 
<tr>
<td><label for="box_height">{$lang_style_box_height}</label></td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="box_height" name="box_height" class="mceEditableSelect" onChange="synch('box_height','positioning_height');" /></td>
<td>&nbsp;</td>
<td><select id="box_height_measurement" name="box_height_measurement"></select></td>
</tr>
</table>
</td>
<td>&nbsp;&nbsp;&nbsp;<label for="box_clear">{$lang_style_box_clear}</label></td>
<td><select id="box_clear" name="box_clear" class="mceEditableSelect"></select></td>
</tr>
</table>
<div style="float: left; width: 49%">
<fieldset>
<legend>{$lang_style_padding}</legend>
 
<table border="0">
<tr>
<td>&nbsp;</td>
<td><input type="checkbox" id="box_padding_same" name="box_padding_same" class="checkbox" checked="checked" onClick="toggleSame(this,'box_padding');" /> <label for="box_padding_same">{$lang_style_same}</label></td>
</tr>
<tr>
<td><label for="box_padding_top">{$lang_style_top}</label></td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="box_padding_top" name="box_padding_top" class="mceEditableSelect" /></td>
<td>&nbsp;</td>
<td><select id="box_padding_top_measurement" name="box_padding_top_measurement"></select></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><label for="box_padding_right">{$lang_style_right}</label></td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="box_padding_right" name="box_padding_right" class="mceEditableSelect" disabled="disabled" /></td>
<td>&nbsp;</td>
<td><select id="box_padding_right_measurement" name="box_padding_right_measurement" disabled="disabled"></select></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><label for="box_padding_bottom">{$lang_style_bottom}</label></td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="box_padding_bottom" name="box_padding_bottom" class="mceEditableSelect" disabled="disabled" /></td>
<td>&nbsp;</td>
<td><select id="box_padding_bottom_measurement" name="box_padding_bottom_measurement" disabled="disabled"></select></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><label for="box_padding_left">{$lang_style_left}</label></td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="box_padding_left" name="box_padding_left" class="mceEditableSelect" disabled="disabled" /></td>
<td>&nbsp;</td>
<td><select id="box_padding_left_measurement" name="box_padding_left_measurement" disabled="disabled"></select></td>
</tr>
</table>
</td>
</tr>
</table>
</fieldset>
</div>
 
<div style="float: right; width: 49%">
<fieldset>
<legend>{$lang_style_margin}</legend>
 
<table border="0">
<tr>
<td>&nbsp;</td>
<td><input type="checkbox" id="box_margin_same" name="box_margin_same" class="checkbox" checked="checked" onClick="toggleSame(this,'box_margin');" /> <label for="box_margin_same">{$lang_style_same}</label></td>
</tr>
<tr>
<td><label for="box_margin_top">{$lang_style_top}</label></td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="box_margin_top" name="box_margin_top" class="mceEditableSelect" /></td>
<td>&nbsp;</td>
<td><select id="box_margin_top_measurement" name="box_margin_top_measurement"></select></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><label for="box_margin_right">{$lang_style_right}</label></td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="box_margin_right" name="box_margin_right" class="mceEditableSelect" disabled="disabled" /></td>
<td>&nbsp;</td>
<td><select id="box_margin_right_measurement" name="box_margin_right_measurement" disabled="disabled"></select></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><label for="box_margin_bottom">{$lang_style_bottom}</label></td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="box_margin_bottom" name="box_margin_bottom" class="mceEditableSelect" disabled="disabled" /></td>
<td>&nbsp;</td>
<td><select id="box_margin_bottom_measurement" name="box_margin_bottom_measurement" disabled="disabled"></select></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><label for="box_margin_left">{$lang_style_left}</label></td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="box_margin_left" name="box_margin_left" class="mceEditableSelect" disabled="disabled" /></td>
<td>&nbsp;</td>
<td><select id="box_margin_left_measurement" name="box_margin_left_measurement" disabled="disabled"></select></td>
</tr>
</table>
</td>
</tr>
</table>
</fieldset>
</div>
<br style="clear: both" />
</div>
 
<div id="border_panel" class="panel">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="tdelim">&nbsp;</td>
<td class="tdelim delim">&nbsp;</td>
<td class="tdelim">{$lang_style_style}</td>
<td class="tdelim delim">&nbsp;</td>
<td class="tdelim">{$lang_style_width}</td>
<td class="tdelim delim">&nbsp;</td>
<td class="tdelim">{$lang_style_color}</td>
</tr>
 
<tr>
<td>&nbsp;</td>
<td class="delim">&nbsp;</td>
<td><input type="checkbox" id="border_style_same" name="border_style_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_style');" /> <label for="border_style_same">{$lang_style_same}</label></td>
<td class="delim">&nbsp;</td>
<td><input type="checkbox" id="border_width_same" name="border_width_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_width');" /> <label for="border_width_same">{$lang_style_same}</label></td>
<td class="delim">&nbsp;</td>
<td><input type="checkbox" id="border_color_same" name="border_color_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_color');" /> <label for="border_color_same">{$lang_style_same}</label></td>
</tr>
 
<tr>
<td>{$lang_style_top}</td>
<td class="delim">&nbsp;</td>
<td><select id="border_style_top" name="border_style_top" class="mceEditableSelect"></select></td>
<td class="delim">&nbsp;</td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><select id="border_width_top" name="border_width_top" class="mceEditableSelect"></select></td>
<td>&nbsp;</td>
<td><select id="border_width_top_measurement" name="border_width_top_measurement"></select></td>
</tr>
</table>
</td>
<td class="delim">&nbsp;</td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="border_color_top" name="border_color_top" type="text" value="" size="9" onChange="updateColor('border_color_top_pick','border_color_top');" /></td>
<td id="border_color_top_pickcontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td>{$lang_style_right}</td>
<td class="delim">&nbsp;</td>
<td><select id="border_style_right" name="border_style_right" class="mceEditableSelect" disabled="disabled"></select></td>
<td class="delim">&nbsp;</td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><select id="border_width_right" name="border_width_right" class="mceEditableSelect" disabled="disabled"></select></td>
<td>&nbsp;</td>
<td><select id="border_width_right_measurement" name="border_width_right_measurement" disabled="disabled"></select></td>
</tr>
</table>
</td>
<td class="delim">&nbsp;</td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="border_color_right" name="border_color_right" type="text" value="" size="9" onChange="updateColor('border_color_right_pick','border_color_right');" disabled="disabled" /></td>
<td id="border_color_right_pickcontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td>{$lang_style_bottom}</td>
<td class="delim">&nbsp;</td>
<td><select id="border_style_bottom" name="border_style_bottom" class="mceEditableSelect" disabled="disabled"></select></td>
<td class="delim">&nbsp;</td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><select id="border_width_bottom" name="border_width_bottom" class="mceEditableSelect" disabled="disabled"></select></td>
<td>&nbsp;</td>
<td><select id="border_width_bottom_measurement" name="border_width_bottom_measurement" disabled="disabled"></select></td>
</tr>
</table>
</td>
<td class="delim">&nbsp;</td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="border_color_bottom" name="border_color_bottom" type="text" value="" size="9" onChange="updateColor('border_color_bottom_pick','border_color_bottom');" disabled="disabled" /></td>
<td id="border_color_bottom_pickcontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td>{$lang_style_left}</td>
<td class="delim">&nbsp;</td>
<td><select id="border_style_left" name="border_style_left" class="mceEditableSelect" disabled="disabled"></select></td>
<td class="delim">&nbsp;</td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><select id="border_width_left" name="border_width_left" class="mceEditableSelect" disabled="disabled"></select></td>
<td>&nbsp;</td>
<td><select id="border_width_left_measurement" name="border_width_left_measurement" disabled="disabled"></select></td>
</tr>
</table>
</td>
<td class="delim">&nbsp;</td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="border_color_left" name="border_color_left" type="text" value="" size="9" onChange="updateColor('border_color_left_pick','border_color_left');" disabled="disabled" /></td>
<td id="border_color_left_pickcontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
 
<div id="list_panel" class="panel">
<table border="0">
<tr>
<td><label for="list_type">{$lang_style_list_type}</label></td>
<td><select id="list_type" name="list_type" class="mceEditableSelect"></select></td>
</tr>
 
<tr>
<td><label for="list_bullet_image">{$lang_style_bullet_image}</label></td>
<td><input id="list_bullet_image" name="list_bullet_image" type="text" /></td>
</tr>
 
<tr>
<td><label for="list_position">{$lang_style_position}</label></td>
<td><select id="list_position" name="list_position" class="mceEditableSelect"></select></td>
</tr>
</table>
</div>
 
<div id="positioning_panel" class="panel">
<table border="0">
<tr>
<td><label for="positioning_type">{$lang_style_positioning_type}</label></td>
<td><select id="positioning_type" name="positioning_type" class="mceEditableSelect"></select></td>
<td>&nbsp;&nbsp;&nbsp;<label for="positioning_visibility">{$lang_style_visibility}</label></td>
<td><select id="positioning_visibility" name="positioning_visibility" class="mceEditableSelect"></select></td>
</tr>
 
<tr>
<td><label for="positioning_width">{$lang_style_width}</label></td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="positioning_width" name="positioning_width" onChange="synch('positioning_width','box_width');" /></td>
<td>&nbsp;</td>
<td><select id="positioning_width_measurement" name="positioning_width_measurement"></select></td>
</tr>
</table>
</td>
<td>&nbsp;&nbsp;&nbsp;<label for="positioning_zindex">{$lang_style_zindex}</label></td>
<td><input type="text" id="positioning_zindex" name="positioning_zindex" /></td>
</tr>
 
<tr>
<td><label for="positioning_height">{$lang_style_height}</label></td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="positioning_height" name="positioning_height" onChange="synch('positioning_height','box_height');" /></td>
<td>&nbsp;</td>
<td><select id="positioning_height_measurement" name="positioning_height_measurement"></select></td>
</tr>
</table>
</td>
<td>&nbsp;&nbsp;&nbsp;<label for="positioning_overflow">{$lang_style_overflow}</label></td>
<td><select id="positioning_overflow" name="positioning_overflow" class="mceEditableSelect"></select></td>
</tr>
</table>
 
<div style="float: left; width: 49%">
<fieldset>
<legend>{$lang_style_placement}</legend>
 
<table border="0">
<tr>
<td>&nbsp;</td>
<td><input type="checkbox" id="positioning_placement_same" name="positioning_placement_same" class="checkbox" checked="checked" onClick="toggleSame(this,'positioning_placement');" /> <label for="positioning_placement_same">{$lang_style_same}</label></td>
</tr>
<tr>
<td>{$lang_style_top}</td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="positioning_placement_top" name="positioning_placement_top" /></td>
<td>&nbsp;</td>
<td><select id="positioning_placement_top_measurement" name="positioning_placement_top_measurement"></select></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>{$lang_style_right}</td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="positioning_placement_right" name="positioning_placement_right" disabled="disabled" /></td>
<td>&nbsp;</td>
<td><select id="positioning_placement_right_measurement" name="positioning_placement_right_measurement" disabled="disabled"></select></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>{$lang_style_bottom}</td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="positioning_placement_bottom" name="positioning_placement_bottom" disabled="disabled" /></td>
<td>&nbsp;</td>
<td><select id="positioning_placement_bottom_measurement" name="positioning_placement_bottom_measurement" disabled="disabled"></select></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>{$lang_style_left}</td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="positioning_placement_left" name="positioning_placement_left" disabled="disabled" /></td>
<td>&nbsp;</td>
<td><select id="positioning_placement_left_measurement" name="positioning_placement_left_measurement" disabled="disabled"></select></td>
</tr>
</table>
</td>
</tr>
</table>
</fieldset>
</div>
 
<div style="float: right; width: 49%">
<fieldset>
<legend>{$lang_style_clip}</legend>
 
<table border="0">
<tr>
<td>&nbsp;</td>
<td><input type="checkbox" id="positioning_clip_same" name="positioning_clip_same" class="checkbox" checked="checked" onClick="toggleSame(this,'positioning_clip');" /> <label for="positioning_clip_same">{$lang_style_same}</label></td>
</tr>
<tr>
<td>{$lang_style_top}</td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="positioning_clip_top" name="positioning_clip_top" /></td>
<td>&nbsp;</td>
<td><select id="positioning_clip_top_measurement" name="positioning_clip_top_measurement"></select></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>{$lang_style_right}</td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="positioning_clip_right" name="positioning_clip_right" disabled="disabled" /></td>
<td>&nbsp;</td>
<td><select id="positioning_clip_right_measurement" name="positioning_clip_right_measurement" disabled="disabled"></select></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>{$lang_style_bottom}</td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="positioning_clip_bottom" name="positioning_clip_bottom" disabled="disabled" /></td>
<td>&nbsp;</td>
<td><select id="positioning_clip_bottom_measurement" name="positioning_clip_bottom_measurement" disabled="disabled"></select></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>{$lang_style_left}</td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="positioning_clip_left" name="positioning_clip_left" disabled="disabled" /></td>
<td>&nbsp;</td>
<td><select id="positioning_clip_left_measurement" name="positioning_clip_left_measurement" disabled="disabled"></select></td>
</tr>
</table>
</td>
</tr>
</table>
</fieldset>
</div>
<br style="clear: both" />
</div>
</div>
 
<div class="mceActionPanel">
<div style="float: left">
<div style="float: left"><input type="button" id="insert" name="insert" value="{$lang_update}" onClick="updateAction();" /></div>
 
<div style="float: left">&nbsp;<input type="button" id="apply" name="apply" value="{$lang_style_apply}" onClick="applyAction();" class="updateButton" /></div>
<br style="clear: both" />
</div>
 
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onClick="tinyMCEPopup.close();" />
</div>
</div>
</form>
 
<div style="display: none">
<div id="container"></div>
</div>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/style/readme.txt
New file
0,0 → 1,0
Check the TinyMCE documentation for details on this plugin.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/style/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('style');var TinyMCE_StylePlugin={getInfo:function(){return{longname:'Style',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"styleprops":return tinyMCE.getButtonHTML(cn,'lang_style_styleinfo_desc','{$pluginurl}/images/styleprops.gif','mceStyleProps',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){var e,inst;switch(command){case"mceStyleProps":TinyMCE_StylePlugin._styleProps();return true;case"mceSetElementStyle":inst=tinyMCE.getInstanceById(editor_id);e=inst.selection.getFocusElement();if(e){e.style.cssText=value;inst.repaint()}return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node.nodeName=='BODY')tinyMCE.switchClass(editor_id+'_styleprops','mceButtonDisabled');else tinyMCE.switchClass(editor_id+'_styleprops','mceButtonNormal')},_styleProps:function(){var e=tinyMCE.selectedInstance.selection.getFocusElement();if(!e||e.nodeName=='BODY')return;tinyMCE.openWindow({file:'../../plugins/style/props.htm',width:480+tinyMCE.getLang('lang_style_props_delta_width',0),height:320+tinyMCE.getLang('lang_style_props_delta_height',0)},{editor_id:tinyMCE.selectedInstance.editorId,inline:"yes",style_text:e.style.cssText})}};tinyMCE.addPlugin("style",TinyMCE_StylePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/style/jscripts/props.js
New file
0,0 → 1,633
var defaultFonts = "" +
"Arial, Helvetica, sans-serif=Arial, Helvetica, sans-serif;" +
"Times New Roman, Times, serif=Times New Roman, Times, serif;" +
"Courier New, Courier, mono=Courier New, Courier, mono;" +
"Times New Roman, Times, serif=Times New Roman, Times, serif;" +
"Georgia, Times New Roman, Times, serif=Georgia, Times New Roman, Times, serif;" +
"Verdana, Arial, Helvetica, sans-serif=Verdana, Arial, Helvetica, sans-serif;" +
"Geneva, Arial, Helvetica, sans-serif=Geneva, Arial, Helvetica, sans-serif";
 
var defaultSizes = "9;10;12;14;16;18;24;xx-small;x-small;small;medium;large;x-large;xx-large;smaller;larger";
var defaultMeasurement = "+pixels=px;points=pt;in;cm;mm;picas;ems;exs;%";
var defaultSpacingMeasurement = "pixels=px;points=pt;in;cm;mm;picas;+ems;exs;%";
var defaultIndentMeasurement = "pixels=px;+points=pt;in;cm;mm;picas;ems;exs;%";
var defaultWeight = "normal;bold;bolder;lighter;100;200;300;400;500;600;700;800;900";
var defaultTextStyle = "normal;italic;oblique";
var defaultVariant = "normal;small-caps";
var defaultLineHeight = "normal";
var defaultAttachment = "fixed;scroll";
var defaultRepeat = "no-repeat;repeat;repeat-x;repeat-y";
var defaultPosH = "left;center;right";
var defaultPosV = "top;center;bottom";
var defaultVAlign = "baseline;sub;super;top;text-top;middle;bottom;text-bottom";
var defaultDisplay = "inline;block;list-item;run-in;compact;marker;table;inline-table;table-row-group;table-header-group;table-footer-group;table-row;table-column-group;table-column;table-cell;table-caption;none";
var defaultBorderStyle = "none;solid;dashed;dotted;double;groove;ridge;inset;outset";
var defaultBorderWidth = "thin;medium;thick";
var defaultListType = "disc;circle;square;decimal;lower-roman;upper-roman;lower-alpha;upper-alpha;none";
 
function init() {
var ce = document.getElementById('container'), h;
 
ce.style.cssText = tinyMCEPopup.getWindowArg('style_text');
 
h = getBrowserHTML('background_image_browser','background_image','image','advimage');
document.getElementById("background_image_browser").innerHTML = h;
 
tinyMCEPopup.resizeToInnerSize();
 
document.getElementById('text_color_pickcontainer').innerHTML = getColorPickerHTML('text_color_pick','text_color');
document.getElementById('background_color_pickcontainer').innerHTML = getColorPickerHTML('background_color_pick','background_color');
document.getElementById('border_color_top_pickcontainer').innerHTML = getColorPickerHTML('border_color_top_pick','border_color_top');
document.getElementById('border_color_right_pickcontainer').innerHTML = getColorPickerHTML('border_color_right_pick','border_color_right');
document.getElementById('border_color_bottom_pickcontainer').innerHTML = getColorPickerHTML('border_color_bottom_pick','border_color_bottom');
document.getElementById('border_color_left_pickcontainer').innerHTML = getColorPickerHTML('border_color_left_pick','border_color_left');
 
fillSelect(0, 'text_font', 'style_font', defaultFonts, ';', true);
fillSelect(0, 'text_size', 'style_font_size', defaultSizes, ';', true);
fillSelect(0, 'text_size_measurement', 'style_font_size_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'text_case', 'style_text_case', "capitalize;uppercase;lowercase", ';', true);
fillSelect(0, 'text_weight', 'style_font_weight', defaultWeight, ';', true);
fillSelect(0, 'text_style', 'style_font_style', defaultTextStyle, ';', true);
fillSelect(0, 'text_variant', 'style_font_variant', defaultVariant, ';', true);
fillSelect(0, 'text_lineheight', 'style_font_line_height', defaultLineHeight, ';', true);
fillSelect(0, 'text_lineheight_measurement', 'style_font_line_height_measurement', defaultMeasurement, ';', true);
 
fillSelect(0, 'background_attachment', 'style_background_attachment', defaultAttachment, ';', true);
fillSelect(0, 'background_repeat', 'style_background_repeat', defaultRepeat, ';', true);
 
fillSelect(0, 'background_hpos_measurement', 'style_background_hpos_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'background_vpos_measurement', 'style_background_vpos_measurement', defaultMeasurement, ';', true);
 
fillSelect(0, 'background_hpos', 'style_background_hpos', defaultPosH, ';', true);
fillSelect(0, 'background_vpos', 'style_background_vpos', defaultPosV, ';', true);
 
fillSelect(0, 'block_wordspacing', 'style_wordspacing', 'normal', ';', true);
fillSelect(0, 'block_wordspacing_measurement', 'style_wordspacing_measurement', defaultSpacingMeasurement, ';', true);
fillSelect(0, 'block_letterspacing', 'style_letterspacing', 'normal', ';', true);
fillSelect(0, 'block_letterspacing_measurement', 'style_letterspacing_measurement', defaultSpacingMeasurement, ';', true);
fillSelect(0, 'block_vertical_alignment', 'style_vertical_alignment', defaultVAlign, ';', true);
fillSelect(0, 'block_text_align', 'style_text_align', "left;right;center;justify", ';', true);
fillSelect(0, 'block_whitespace', 'style_whitespace', "normal;pre;nowrap", ';', true);
fillSelect(0, 'block_display', 'style_display', defaultDisplay, ';', true);
fillSelect(0, 'block_text_indent_measurement', 'style_text_indent_measurement', defaultIndentMeasurement, ';', true);
 
fillSelect(0, 'box_width_measurement', 'style_box_width_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'box_height_measurement', 'style_box_height_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'box_float', 'style_float', 'left;right;none', ';', true);
fillSelect(0, 'box_clear', 'style_clear', 'left;right;both;none', ';', true);
fillSelect(0, 'box_padding_left_measurement', 'style_padding_left_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'box_padding_top_measurement', 'style_padding_top_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'box_padding_bottom_measurement', 'style_padding_bottom_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'box_padding_right_measurement', 'style_padding_right_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'box_margin_left_measurement', 'style_margin_left_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'box_margin_top_measurement', 'style_margin_top_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'box_margin_bottom_measurement', 'style_margin_bottom_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'box_margin_right_measurement', 'style_margin_right_measurement', defaultMeasurement, ';', true);
 
fillSelect(0, 'border_style_top', 'style_border_style_top', defaultBorderStyle, ';', true);
fillSelect(0, 'border_style_right', 'style_border_style_right', defaultBorderStyle, ';', true);
fillSelect(0, 'border_style_bottom', 'style_border_style_bottom', defaultBorderStyle, ';', true);
fillSelect(0, 'border_style_left', 'style_border_style_left', defaultBorderStyle, ';', true);
 
fillSelect(0, 'border_width_top', 'style_border_width_top', defaultBorderWidth, ';', true);
fillSelect(0, 'border_width_right', 'style_border_width_right', defaultBorderWidth, ';', true);
fillSelect(0, 'border_width_bottom', 'style_border_width_bottom', defaultBorderWidth, ';', true);
fillSelect(0, 'border_width_left', 'style_border_width_left', defaultBorderWidth, ';', true);
 
fillSelect(0, 'border_width_top_measurement', 'style_border_width_top_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'border_width_right_measurement', 'style_border_width_right_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'border_width_bottom_measurement', 'style_border_width_bottom_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'border_width_left_measurement', 'style_border_width_left_measurement', defaultMeasurement, ';', true);
 
fillSelect(0, 'list_type', 'style_list_type', defaultListType, ';', true);
fillSelect(0, 'list_position', 'style_list_position', "inside;outside", ';', true);
 
fillSelect(0, 'positioning_type', 'style_positioning_type', "absolute;relative;static", ';', true);
fillSelect(0, 'positioning_visibility', 'style_positioning_visibility', "inherit;visible;hidden", ';', true);
 
fillSelect(0, 'positioning_width_measurement', 'style_positioning_width_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'positioning_height_measurement', 'style_positioning_height_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'positioning_overflow', 'style_positioning_overflow', "visible;hidden;scroll;auto", ';', true);
 
fillSelect(0, 'positioning_placement_top_measurement', 'style_positioning_placement_top_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'positioning_placement_right_measurement', 'style_positioning_placement_right_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'positioning_placement_bottom_measurement', 'style_positioning_placement_bottom_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'positioning_placement_left_measurement', 'style_positioning_placement_left_measurement', defaultMeasurement, ';', true);
 
fillSelect(0, 'positioning_clip_top_measurement', 'style_positioning_clip_top_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'positioning_clip_right_measurement', 'style_positioning_clip_right_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'positioning_clip_bottom_measurement', 'style_positioning_clip_bottom_measurement', defaultMeasurement, ';', true);
fillSelect(0, 'positioning_clip_left_measurement', 'style_positioning_clip_left_measurement', defaultMeasurement, ';', true);
 
TinyMCE_EditableSelects.init();
setupFormData();
showDisabledControls();
}
 
function setupFormData() {
var ce = document.getElementById('container'), f = document.forms[0], s, b, i;
 
// Setup text fields
 
selectByValue(f, 'text_font', ce.style.fontFamily, true, true);
selectByValue(f, 'text_size', getNum(ce.style.fontSize), true, true);
selectByValue(f, 'text_size_measurement', getMeasurement(ce.style.fontSize));
selectByValue(f, 'text_weight', ce.style.fontWeight, true, true);
selectByValue(f, 'text_style', ce.style.fontStyle, true, true);
selectByValue(f, 'text_lineheight', getNum(ce.style.lineHeight), true, true);
selectByValue(f, 'text_lineheight_measurement', getMeasurement(ce.style.lineHeight));
selectByValue(f, 'text_case', ce.style.textTransform, true, true);
selectByValue(f, 'text_variant', ce.style.fontVariant, true, true);
f.text_color.value = ce.style.color;
updateColor('text_color_pick', 'text_color');
f.text_underline.checked = inStr(ce.style.textDecoration, 'underline');
f.text_overline.checked = inStr(ce.style.textDecoration, 'overline');
f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through');
f.text_blink.checked = inStr(ce.style.textDecoration, 'blink');
 
// Setup background fields
 
f.background_color.value = ce.style.backgroundColor;
updateColor('background_color_pick', 'background_color');
f.background_image.value = ce.style.backgroundImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
selectByValue(f, 'background_repeat', ce.style.backgroundRepeat, true, true);
selectByValue(f, 'background_attachment', ce.style.backgroundAttachment, true, true);
selectByValue(f, 'background_hpos', getNum(getVal(ce.style.backgroundPosition, 0)), true, true);
selectByValue(f, 'background_hpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 0)));
selectByValue(f, 'background_vpos', getNum(getVal(ce.style.backgroundPosition, 1)), true, true);
selectByValue(f, 'background_vpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 1)));
 
// Setup block fields
 
selectByValue(f, 'block_wordspacing', getNum(ce.style.wordSpacing), true, true);
selectByValue(f, 'block_wordspacing_measurement', getMeasurement(ce.style.wordSpacing));
selectByValue(f, 'block_letterspacing', getNum(ce.style.letterSpacing), true, true);
selectByValue(f, 'block_letterspacing_measurement', getMeasurement(ce.style.letterSpacing));
selectByValue(f, 'block_vertical_alignment', ce.style.verticalAlign, true, true);
selectByValue(f, 'block_text_align', ce.style.textAlign, true, true);
f.block_text_indent.value = getNum(ce.style.textIndent);
selectByValue(f, 'block_text_indent_measurement', getMeasurement(ce.style.textIndent));
selectByValue(f, 'block_whitespace', ce.style.whiteSpace, true, true);
selectByValue(f, 'block_display', ce.style.display, true, true);
 
// Setup box fields
 
f.box_width.value = getNum(ce.style.width);
selectByValue(f, 'box_width_measurement', getMeasurement(ce.style.width));
 
f.box_height.value = getNum(ce.style.height);
selectByValue(f, 'box_height_measurement', getMeasurement(ce.style.height));
 
if (tinyMCE.isGecko)
selectByValue(f, 'box_float', ce.style.cssFloat, true, true);
else
selectByValue(f, 'box_float', ce.style.styleFloat, true, true);
 
selectByValue(f, 'box_clear', ce.style.clear, true, true);
 
setupBox(f, ce, 'box_padding', 'padding', '');
setupBox(f, ce, 'box_margin', 'margin', '');
 
// Setup border fields
 
setupBox(f, ce, 'border_style', 'border', 'Style');
setupBox(f, ce, 'border_width', 'border', 'Width');
setupBox(f, ce, 'border_color', 'border', 'Color');
 
updateColor('border_color_top_pick', 'border_color_top');
updateColor('border_color_right_pick', 'border_color_right');
updateColor('border_color_bottom_pick', 'border_color_bottom');
updateColor('border_color_left_pick', 'border_color_left');
 
// Setup list fields
 
selectByValue(f, 'list_type', ce.style.listStyleType, true, true);
selectByValue(f, 'list_position', ce.style.listStylePosition, true, true);
f.list_bullet_image.value = ce.style.listStyleImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
 
// Setup box fields
 
selectByValue(f, 'positioning_type', ce.style.position, true, true);
selectByValue(f, 'positioning_visibility', ce.style.visibility, true, true);
selectByValue(f, 'positioning_overflow', ce.style.overflow, true, true);
f.positioning_zindex.value = ce.style.zIndex ? ce.style.zIndex : "";
 
f.positioning_width.value = getNum(ce.style.width);
selectByValue(f, 'positioning_width_measurement', getMeasurement(ce.style.width));
 
f.positioning_height.value = getNum(ce.style.height);
selectByValue(f, 'positioning_height_measurement', getMeasurement(ce.style.height));
 
setupBox(f, ce, 'positioning_placement', '', '', new Array('top', 'right', 'bottom', 'left'));
 
s = ce.style.clip.replace(new RegExp("rect\\('?([^']*)'?\\)", 'gi'), "$1");
s = s.replace(/,/g, ' ');
 
if (!hasEqualValues(new Array(getVal(s, 0), getVal(s, 1), getVal(s, 2), getVal(s, 3)))) {
f.positioning_clip_top.value = getNum(getVal(s, 0));
selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0)));
f.positioning_clip_right.value = getNum(getVal(s, 1));
selectByValue(f, 'positioning_clip_right_measurement', getMeasurement(getVal(s, 1)));
f.positioning_clip_bottom.value = getNum(getVal(s, 2));
selectByValue(f, 'positioning_clip_bottom_measurement', getMeasurement(getVal(s, 2)));
f.positioning_clip_left.value = getNum(getVal(s, 3));
selectByValue(f, 'positioning_clip_left_measurement', getMeasurement(getVal(s, 3)));
} else {
f.positioning_clip_top.value = getNum(getVal(s, 0));
selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0)));
f.positioning_clip_right.value = f.positioning_clip_bottom.value = f.positioning_clip_left.value;
}
 
// setupBox(f, ce, '', 'border', 'Color');
}
 
function getMeasurement(s) {
return s.replace(/^([0-9]+)(.*)$/, "$2");
}
 
function getNum(s) {
if (new RegExp('^[0-9]+[a-z%]+$', 'gi').test(s))
return s.replace(/[^0-9]/g, '');
 
return s;
}
 
function inStr(s, n) {
return new RegExp(n, 'gi').test(s);
}
 
function getVal(s, i) {
var a = tinyMCE.explode(' ', s);
 
if (a.length > 1)
return a[i];
 
return "";
}
 
function setValue(f, n, v) {
if (f.elements[n].type == "text")
f.elements[n].value = v;
else
selectByValue(f, n, v, true, true);
}
 
function setupBox(f, ce, fp, pr, sf, b) {
if (typeof(b) == "undefined")
b = new Array('Top', 'Right', 'Bottom', 'Left');
 
if (isSame(ce, pr, sf, b)) {
f.elements[fp + "_same"].checked = true;
 
setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf]));
f.elements[fp + "_top"].disabled = false;
 
f.elements[fp + "_right"].value = "";
f.elements[fp + "_right"].disabled = true;
f.elements[fp + "_bottom"].value = "";
f.elements[fp + "_bottom"].disabled = true;
f.elements[fp + "_left"].value = "";
f.elements[fp + "_left"].disabled = true;
 
if (f.elements[fp + "_top_measurement"]) {
selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf]));
f.elements[fp + "_left_measurement"].disabled = true;
f.elements[fp + "_bottom_measurement"].disabled = true;
f.elements[fp + "_right_measurement"].disabled = true;
}
} else {
f.elements[fp + "_same"].checked = false;
 
setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf]));
f.elements[fp + "_top"].disabled = false;
 
setValue(f, fp + "_right", getNum(ce.style[pr + b[1] + sf]));
f.elements[fp + "_right"].disabled = false;
 
setValue(f, fp + "_bottom", getNum(ce.style[pr + b[2] + sf]));
f.elements[fp + "_bottom"].disabled = false;
 
setValue(f, fp + "_left", getNum(ce.style[pr + b[3] + sf]));
f.elements[fp + "_left"].disabled = false;
 
if (f.elements[fp + "_top_measurement"]) {
selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf]));
selectByValue(f, fp + '_right_measurement', getMeasurement(ce.style[pr + b[1] + sf]));
selectByValue(f, fp + '_bottom_measurement', getMeasurement(ce.style[pr + b[2] + sf]));
selectByValue(f, fp + '_left_measurement', getMeasurement(ce.style[pr + b[3] + sf]));
f.elements[fp + "_left_measurement"].disabled = false;
f.elements[fp + "_bottom_measurement"].disabled = false;
f.elements[fp + "_right_measurement"].disabled = false;
}
}
}
 
function isSame(e, pr, sf, b) {
var a = new Array(), i, x;
 
if (typeof(b) == "undefined")
b = new Array('Top', 'Right', 'Bottom', 'Left');
 
if (typeof(sf) == "undefined" || sf == null)
sf = "";
 
a[0] = e.style[pr + b[0] + sf];
a[1] = e.style[pr + b[1] + sf];
a[2] = e.style[pr + b[2] + sf];
a[3] = e.style[pr + b[3] + sf];
 
for (i=0; i<a.length; i++) {
if (a[i] == null)
return false;
 
for (x=0; x<a.length; x++) {
if (a[x] != a[i])
return false;
}
}
 
return true;
};
 
function hasEqualValues(a) {
var i, x;
 
for (i=0; i<a.length; i++) {
if (a[i] == null)
return false;
 
for (x=0; x<a.length; x++) {
if (a[x] != a[i])
return false;
}
}
 
return true;
}
 
function applyAction() {
var ce = document.getElementById('container');
 
generateCSS();
 
tinyMCEPopup.execCommand('mceSetElementStyle', false, tinyMCE.serializeStyle(tinyMCE.parseStyle(ce.style.cssText)));
}
 
function updateAction() {
applyAction();
tinyMCEPopup.close();
}
 
function generateCSS() {
var ce = document.getElementById('container'), f = document.forms[0], num = new RegExp('[0-9]+', 'g'), s, t;
 
ce.style.cssText = "";
 
// Build text styles
ce.style.fontFamily = f.text_font.value;
ce.style.fontSize = f.text_size.value + (isNum(f.text_size.value) ? f.text_size_measurement.value : "");
ce.style.fontStyle = f.text_style.value;
ce.style.lineHeight = f.text_lineheight.value + (isNum(f.text_lineheight.value) ? f.text_lineheight_measurement.value : "");
ce.style.textTransform = f.text_case.value;
ce.style.fontWeight = f.text_weight.value;
ce.style.fontVariant = f.text_variant.value;
ce.style.color = f.text_color.value;
 
s = "";
s += f.text_underline.checked ? " underline" : "";
s += f.text_overline.checked ? " overline" : "";
s += f.text_linethrough.checked ? " line-through" : "";
s += f.text_blink.checked ? " blink" : "";
s = s.length > 0 ? s.substring(1) : s;
 
if (f.text_none.checked)
s = "none";
 
ce.style.textDecoration = s;
 
// Build background styles
 
ce.style.backgroundColor = f.background_color.value;
ce.style.backgroundImage = f.background_image.value != "" ? "url(" + f.background_image.value + ")" : "";
ce.style.backgroundRepeat = f.background_repeat.value;
ce.style.backgroundAttachment = f.background_attachment.value;
 
if (f.background_hpos.value != "") {
s = "";
s += f.background_hpos.value + (isNum(f.background_hpos.value) ? f.background_hpos_measurement.value : "") + " ";
s += f.background_vpos.value + (isNum(f.background_vpos.value) ? f.background_vpos_measurement.value : "");
ce.style.backgroundPosition = s;
}
 
// Build block styles
 
ce.style.wordSpacing = f.block_wordspacing.value + (isNum(f.block_wordspacing.value) ? f.block_wordspacing_measurement.value : "");
ce.style.letterSpacing = f.block_letterspacing.value + (isNum(f.block_letterspacing.value) ? f.block_letterspacing_measurement.value : "");
ce.style.verticalAlign = f.block_vertical_alignment.value;
ce.style.textAlign = f.block_text_align.value;
ce.style.textIndent = f.block_text_indent.value + (isNum(f.block_text_indent.value) ? f.block_text_indent_measurement.value : "");
ce.style.whiteSpace = f.block_whitespace.value;
ce.style.display = f.block_display.value;
 
// Build box styles
 
ce.style.width = f.box_width.value + (isNum(f.box_width.value) ? f.box_width_measurement.value : "");
ce.style.height = f.box_height.value + (isNum(f.box_height.value) ? f.box_height_measurement.value : "");
ce.style.styleFloat = f.box_float.value;
 
if (tinyMCE.isGecko)
ce.style.cssFloat = f.box_float.value;
 
ce.style.clear = f.box_clear.value;
 
if (!f.box_padding_same.checked) {
ce.style.paddingTop = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : "");
ce.style.paddingRight = f.box_padding_right.value + (isNum(f.box_padding_right.value) ? f.box_padding_right_measurement.value : "");
ce.style.paddingBottom = f.box_padding_bottom.value + (isNum(f.box_padding_bottom.value) ? f.box_padding_bottom_measurement.value : "");
ce.style.paddingLeft = f.box_padding_left.value + (isNum(f.box_padding_left.value) ? f.box_padding_left_measurement.value : "");
} else
ce.style.padding = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : "");
 
if (!f.box_margin_same.checked) {
ce.style.marginTop = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : "");
ce.style.marginRight = f.box_margin_right.value + (isNum(f.box_margin_right.value) ? f.box_margin_right_measurement.value : "");
ce.style.marginBottom = f.box_margin_bottom.value + (isNum(f.box_margin_bottom.value) ? f.box_margin_bottom_measurement.value : "");
ce.style.marginLeft = f.box_margin_left.value + (isNum(f.box_margin_left.value) ? f.box_margin_left_measurement.value : "");
} else
ce.style.margin = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : "");
 
// Build border styles
 
if (!f.border_style_same.checked) {
ce.style.borderTopStyle = f.border_style_top.value;
ce.style.borderRightStyle = f.border_style_right.value;
ce.style.borderBottomStyle = f.border_style_bottom.value;
ce.style.borderLeftStyle = f.border_style_left.value;
} else
ce.style.borderStyle = f.border_style_top.value;
 
if (!f.border_width_same.checked) {
ce.style.borderTopWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : "");
ce.style.borderRightWidth = f.border_width_right.value + (isNum(f.border_width_right.value) ? f.border_width_right_measurement.value : "");
ce.style.borderBottomWidth = f.border_width_bottom.value + (isNum(f.border_width_bottom.value) ? f.border_width_bottom_measurement.value : "");
ce.style.borderLeftWidth = f.border_width_left.value + (isNum(f.border_width_left.value) ? f.border_width_left_measurement.value : "");
} else
ce.style.borderWidth = f.border_width_top.value;
 
if (!f.border_color_same.checked) {
ce.style.borderTopColor = f.border_color_top.value;
ce.style.borderRightColor = f.border_color_right.value;
ce.style.borderBottomColor = f.border_color_bottom.value;
ce.style.borderLeftColor = f.border_color_left.value;
} else
ce.style.borderColor = f.border_color_top.value;
 
// Build list styles
 
ce.style.listStyleType = f.list_type.value;
ce.style.listStylePosition = f.list_position.value;
ce.style.listStyleImage = f.list_bullet_image.value != "" ? "url(" + f.list_bullet_image.value + ")" : "";
 
// Build positioning styles
 
ce.style.position = f.positioning_type.value;
ce.style.visibility = f.positioning_visibility.value;
 
if (ce.style.width == "")
ce.style.width = f.positioning_width.value + (isNum(f.positioning_width.value) ? f.positioning_width_measurement.value : "");
 
if (ce.style.height == "")
ce.style.height = f.positioning_height.value + (isNum(f.positioning_height.value) ? f.positioning_height_measurement.value : "");
 
ce.style.zIndex = f.positioning_zindex.value;
ce.style.overflow = f.positioning_overflow.value;
 
if (!f.positioning_placement_same.checked) {
ce.style.top = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : "");
ce.style.right = f.positioning_placement_right.value + (isNum(f.positioning_placement_right.value) ? f.positioning_placement_right_measurement.value : "");
ce.style.bottom = f.positioning_placement_bottom.value + (isNum(f.positioning_placement_bottom.value) ? f.positioning_placement_bottom_measurement.value : "");
ce.style.left = f.positioning_placement_left.value + (isNum(f.positioning_placement_left.value) ? f.positioning_placement_left_measurement.value : "");
} else {
s = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : "");
ce.style.top = s;
ce.style.right = s;
ce.style.bottom = s;
ce.style.left = s;
}
 
if (!f.positioning_clip_same.checked) {
s = "rect(";
s += (isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto") + " ";
s += (isNum(f.positioning_clip_right.value) ? f.positioning_clip_right.value + f.positioning_clip_right_measurement.value : "auto") + " ";
s += (isNum(f.positioning_clip_bottom.value) ? f.positioning_clip_bottom.value + f.positioning_clip_bottom_measurement.value : "auto") + " ";
s += (isNum(f.positioning_clip_left.value) ? f.positioning_clip_left.value + f.positioning_clip_left_measurement.value : "auto");
s += ")";
 
if (s != "rect(auto auto auto auto)")
ce.style.clip = s;
} else {
s = "rect(";
t = isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto";
s += t + " ";
s += t + " ";
s += t + " ";
s += t + ")";
 
if (s != "rect(auto auto auto auto)")
ce.style.clip = s;
}
 
ce.style.cssText = tinyMCE.serializeStyle(tinyMCE.parseStyle(ce.style.cssText));
}
 
function isNum(s) {
return new RegExp('[0-9]+', 'g').test(s);
}
 
function showDisabledControls() {
var f = document.forms, i, a;
 
for (i=0; i<f.length; i++) {
for (a=0; a<f[i].elements.length; a++) {
if (f[i].elements[a].disabled)
tinyMCE.addCSSClass(f[i].elements[a], "disabled");
else
tinyMCE.removeCSSClass(f[i].elements[a], "disabled");
}
}
}
 
function fillSelect(f, s, param, dval, sep, em) {
var i, ar, p, se;
 
f = document.forms[f];
sep = typeof(sep) == "undefined" ? ";" : sep;
 
if (em)
addSelectValue(f, s, "", "");
 
ar = tinyMCE.getParam(param, dval).split(sep);
for (i=0; i<ar.length; i++) {
se = false;
 
if (ar[i].charAt(0) == '+') {
ar[i] = ar[i].substring(1);
se = true;
}
 
p = ar[i].split('=');
 
if (p.length > 1) {
addSelectValue(f, s, p[0], p[1]);
 
if (se)
selectByValue(f, s, p[1]);
} else {
addSelectValue(f, s, p[0], p[0]);
 
if (se)
selectByValue(f, s, p[0]);
}
}
}
 
function toggleSame(ce, pre) {
var el = document.forms[0].elements, i;
 
if (ce.checked) {
el[pre + "_top"].disabled = false;
el[pre + "_right"].disabled = true;
el[pre + "_bottom"].disabled = true;
el[pre + "_left"].disabled = true;
 
if (el[pre + "_top_measurement"]) {
el[pre + "_top_measurement"].disabled = false;
el[pre + "_right_measurement"].disabled = true;
el[pre + "_bottom_measurement"].disabled = true;
el[pre + "_left_measurement"].disabled = true;
}
} else {
el[pre + "_top"].disabled = false;
el[pre + "_right"].disabled = false;
el[pre + "_bottom"].disabled = false;
el[pre + "_left"].disabled = false;
 
if (el[pre + "_top_measurement"]) {
el[pre + "_top_measurement"].disabled = false;
el[pre + "_right_measurement"].disabled = false;
el[pre + "_bottom_measurement"].disabled = false;
el[pre + "_left_measurement"].disabled = false;
}
}
 
showDisabledControls();
}
 
function synch(fr, to) {
var f = document.forms[0];
 
f.elements[to].value = f.elements[fr].value;
 
if (f.elements[fr + "_measurement"])
selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value);
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/searchreplace/readme.txt
New file
0,0 → 1,0
Check the TinyMCE documentation for details on this plugin.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/searchreplace/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('searchreplace');var TinyMCE_SearchReplacePlugin={getInfo:function(){return{longname:'Search/Replace',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){inst.addShortcut('ctrl','f','lang_searchreplace_search_desc','mceSearch',true);},getControlHTML:function(cn){switch(cn){case"search":return tinyMCE.getButtonHTML(cn,'lang_searchreplace_search_desc','{$pluginurl}/images/search.gif','mceSearch',true);case"replace":return tinyMCE.getButtonHTML(cn,'lang_searchreplace_replace_desc','{$pluginurl}/images/replace.gif','mceSearchReplace',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id),selectedText=inst.selection.getSelectedText(),rng;function defValue(key,default_value){value[key]=typeof(value[key])=="undefined"?default_value:value[key]}function replaceSel(search_str,str,back){if(!inst.selection.isCollapsed()){if(tinyMCE.isRealIE)inst.selection.getRng().duplicate().pasteHTML(str);else inst.execCommand('mceInsertContent',false,str)}}if(!value)value=[];defValue("editor_id",editor_id);defValue("searchstring",selectedText);defValue("replacestring",null);defValue("replacemode","none");defValue("casesensitive",false);defValue("backwards",false);defValue("wrap",false);defValue("wholeword",false);defValue("inline","yes");defValue("resizable","no");switch(command){case"mceSearch":if(user_interface){var template=new Array();template['file']='../../plugins/searchreplace/searchreplace.htm';template['width']=380;template['height']=155+(tinyMCE.isNS7?20:0)+(tinyMCE.isMSIE?15:0);template['width']+=tinyMCE.getLang('lang_searchreplace_delta_width',0);template['height']+=tinyMCE.getLang('lang_searchreplace_delta_height',0);inst.selection.collapse(true);tinyMCE.openWindow(template,value)}else{var win=tinyMCE.getInstanceById(editor_id).contentWindow;var doc=tinyMCE.getInstanceById(editor_id).contentWindow.document;var body=tinyMCE.getInstanceById(editor_id).contentWindow.document.body;var awin=value.win,found;if(body.innerHTML==""){awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));return true}if(value['replacemode']=="current"){replaceSel(value['string'],value['replacestring'],value['backwards']);value['replacemode']="none";}inst.selection.collapse(value['backwards']);if(tinyMCE.isMSIE){var rng=inst.selection.getRng();var flags=0;if(value['wholeword'])flags=flags|2;if(value['casesensitive'])flags=flags|4;if(!rng.findText){awin.alert('This operation is currently not supported by this browser.');return true}if(value['replacemode']=="all"){found=false;while(rng.findText(value['string'],value['backwards']?-1:1,flags)){found=true;rng.scrollIntoView();rng.select();replaceSel(value['string'],value['replacestring'],value['backwards'])}if(found)awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));else awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));return true}if(rng.findText(value['string'],value['backwards']?-1:1,flags)){rng.scrollIntoView();rng.select()}else awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'))}else{if(value['replacemode']=="all"){found=false;while(win.find(value['string'],value['casesensitive'],value['backwards'],value['wrap'],value['wholeword'],false,false)){found=true;replaceSel(value['string'],value['replacestring'],value['backwards'])}if(found)awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));else awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));return true}if(!win.find(value['string'],value['casesensitive'],value['backwards'],value['wrap'],value['wholeword'],false,false))awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'))}}return true;case"mceSearchReplace":value['replacestring']="";tinyMCE.execInstanceCommand(editor_id,'mceSearch',user_interface,value,false);return true}return false}};tinyMCE.addPlugin("searchreplace",TinyMCE_SearchReplacePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/searchreplace/jscripts/searchreplace.js
New file
0,0 → 1,86
function init() {
tinyMCEPopup.resizeToInnerSize();
 
// start with appropiate tab
var task = (tinyMCE.getWindowArg("replacestring") != null) ? "replace" : "search";
mcTabs.displayTab(task + '_tab', task +'_panel');
manageReplaceButtons();
var formObj = document.forms[0];
 
formObj[task + "_panel_searchstring"].value = tinyMCE.getWindowArg("searchstring");
formObj["replace_panel_replacestring"].value = (tinyMCE.getWindowArg("replacestring") != null) ? tinyMCE.getWindowArg("replacestring") : "";
formObj[task + "_panel_casesensitivebox"].checked = tinyMCE.getWindowArg("casesensitive");
formObj[task + "_panel_backwardsu"].checked = tinyMCE.getWindowArg("backwards");
formObj[task + "_panel_backwardsd"].checked = !tinyMCE.getWindowArg("backwards");
}
 
function searchNext(replacemode) {
// "search" or "replace" mode of operation?
var task = (document.getElementById("search_tab").className == "current") ? "search" : "replace";
 
var formObj = document.forms[0];
 
if (task == "replace") {
// Whats the point?
if (formObj[task + "_panel_searchstring"].value == "" || formObj[task + "_panel_searchstring"].value == formObj[task + "_panel_replacestring"].value)
return false;
}
 
// Do search
tinyMCEPopup.execCommand('mceSearch', false, {
string : formObj[task + "_panel_searchstring"].value,
replacestring : formObj["replace_panel_replacestring"].value,
replacemode : replacemode,
casesensitive : formObj[task + "_panel_casesensitivebox"].checked,
backwards : formObj[task + "_panel_backwardsu"].checked,
win : window
}, false);
 
window.focus();
 
return false;
}
 
function cancelAction() {
tinyMCEPopup.close();
}
 
function manageReplaceButtons() {
// "search" or "replace" mode of operation?
var task = (document.getElementById("search_tab").className == "current") ? "search" : "replace";
document.getElementById("replace_buttons").style.visibility = (task == "replace") ? "visible" : "hidden";
}
 
function copyValues(link) {
// check if tab is already active
var tab = link;
while (tab.tagName && tab.tagName.toLowerCase() != "li") tab = tab.parentNode;
if (tab.className) return false; // tab is already active -> no need to copy any values!
 
// copy values from one panel to the other (if they exist there)
var from_panel_name = tab.id.match(/^search/i) ? "replace_panel" : "search_panel";
var to_panel_name = (from_panel_name == "search_panel") ? "replace_panel" : "search_panel";
 
// find all elements with IDs to copy their values
var elms = document.getElementById(from_panel_name).getElementsByTagName("*");
for (var i = 0; i < elms.length; i++) {
if (elms[i].id && elms[i].id != "") {
var checked = "undefined";
if (elms[i].type.toLowerCase() == "checkbox" || elms[i].type.toLowerCase() == "radio")
checked = elms[i].checked;
 
// copy values if element exists in other panel
var to_elm_name = to_panel_name + elms[i].id.substring(from_panel_name.length, elms[i].id.length);
var to_elm = document.getElementById(to_elm_name);
if (to_elm) {
if (checked != "undefined")
to_elm.checked = checked;
else
to_elm.value = elms[i].value;
}
}
}
 
return false;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/searchreplace/langs/en.js
New file
0,0 → 1,21
// UK lang variables
 
tinyMCE.addToLang('',{
searchreplace_search_desc : 'Find',
searchreplace_searchnext_desc : 'Find again',
searchreplace_replace_desc : 'Find/Replace',
searchreplace_notfound : 'The search has been completed. The search string could not be found.',
searchreplace_search_title : 'Find',
searchreplace_replace_title : 'Find/Replace',
searchreplace_allreplaced : 'All occurrences of the search string were replaced.',
searchreplace_findwhat : 'Find what',
searchreplace_replacewith : 'Replace with',
searchreplace_direction : 'Direction',
searchreplace_up : 'Up',
searchreplace_down : 'Down',
searchreplace_case : 'Match case',
searchreplace_findnext : 'Find&nbsp;next',
searchreplace_replace : 'Replace',
searchreplace_replaceall : 'Replace&nbsp;all',
searchreplace_cancel : 'Cancel'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/searchreplace/langs/fr.js
New file
0,0 → 1,22
// FR lang variables
// Modified by keyko-web.net, last updated 2007-03-08, based on the work of Motte
 
tinyMCE.addToLang('',{
searchreplace_search_desc : 'Rechercher',
searchreplace_searchnext_desc : 'Rechercher suivant',
searchreplace_replace_desc : 'Rechercher/Remplacer',
searchreplace_notfound : 'Recherche compl&eacute;t&eacute;e. La fin du document a &eacute;t&eacute; atteinte.',
searchreplace_search_title : 'Rechercher',
searchreplace_replace_title : 'Rechercher/Remplacer',
searchreplace_allreplaced : 'Action termin&eacute;e avec succ&egrave;s. Les remplacements\nont &eacute;t&eacute; faits dans l\'ensemble du document.',
searchreplace_findwhat : 'Trouver le mot',
searchreplace_replacewith : 'Remplacer par',
searchreplace_direction : 'Direction',
searchreplace_up : 'Vers le haut',
searchreplace_down : 'Vers le bas',
searchreplace_case : 'Respecter la casse',
searchreplace_findnext : 'Suivant',
searchreplace_replace : 'Remplacer',
searchreplace_replaceall : 'Remplacer tout',
searchreplace_cancel : 'Annuler'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/searchreplace/images/search.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/searchreplace/images/search.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/searchreplace/images/replace_all_button_bg.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/searchreplace/images/replace_all_button_bg.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/searchreplace/images/replace.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/searchreplace/images/replace.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/searchreplace/images/replace_button_bg.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/searchreplace/images/replace_button_bg.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js
New file
0,0 → 1,173
/**
* $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
tinyMCE.importPluginLanguagePack('searchreplace');
 
var TinyMCE_SearchReplacePlugin = {
getInfo : function() {
return {
longname : 'Search/Replace',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
initInstance : function (inst) {
inst.addShortcut('ctrl', 'f', 'lang_searchreplace_search_desc', 'mceSearch', true);
// No CTRL+R for "replace" because browsers will reload page instead of executing plugin
},
 
getControlHTML : function (cn) {
switch (cn) {
case "search" :
return tinyMCE.getButtonHTML(cn, 'lang_searchreplace_search_desc', '{$pluginurl}/images/search.gif','mceSearch', true);
 
case "replace" :
return tinyMCE.getButtonHTML(cn, 'lang_searchreplace_replace_desc', '{$pluginurl}/images/replace.gif', 'mceSearchReplace', true);
}
 
return "";
},
 
execCommand : function (editor_id, element, command, user_interface, value) {
var inst = tinyMCE.getInstanceById(editor_id), selectedText = inst.selection.getSelectedText(), rng;
 
function defValue(key, default_value) {
value[key] = typeof(value[key]) == "undefined" ? default_value : value[key];
}
 
function replaceSel(search_str, str, back) {
if (!inst.selection.isCollapsed()) {
if (tinyMCE.isRealIE)
inst.selection.getRng().duplicate().pasteHTML(str); // Needs to be duplicated due to selection bug in IE
else
inst.execCommand('mceInsertContent', false, str);
}
}
 
if (!value)
value = [];
 
defValue("editor_id", editor_id);
defValue("searchstring", selectedText);
defValue("replacestring", null);
defValue("replacemode", "none");
defValue("casesensitive", false);
defValue("backwards", false);
defValue("wrap", false);
defValue("wholeword", false);
defValue("inline", "yes");
defValue("resizable", "no");
 
switch (command) {
case "mceSearch" :
if (user_interface) {
var template = new Array();
 
template['file'] = '../../plugins/searchreplace/searchreplace.htm';
template['width'] = 380;
template['height'] = 155 + (tinyMCE.isNS7 ? 20 : 0) + (tinyMCE.isMSIE ? 15 : 0);
template['width'] += tinyMCE.getLang('lang_searchreplace_delta_width', 0);
template['height'] += tinyMCE.getLang('lang_searchreplace_delta_height', 0);
 
inst.selection.collapse(true);
 
tinyMCE.openWindow(template, value);
} else {
var win = tinyMCE.getInstanceById(editor_id).contentWindow;
var doc = tinyMCE.getInstanceById(editor_id).contentWindow.document;
var body = tinyMCE.getInstanceById(editor_id).contentWindow.document.body;
var awin = value.win, found;
 
if (body.innerHTML == "") {
awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
return true;
}
 
if (value['replacemode'] == "current") {
replaceSel(value['string'], value['replacestring'], value['backwards']);
value['replacemode'] = "none";
//tinyMCE.execInstanceCommand(editor_id, 'mceSearch', user_interface, value);
//return true;
}
 
inst.selection.collapse(value['backwards']);
 
if (tinyMCE.isMSIE) {
var rng = inst.selection.getRng();
var flags = 0;
if (value['wholeword'])
flags = flags | 2;
 
if (value['casesensitive'])
flags = flags | 4;
 
if (!rng.findText) {
awin.alert('This operation is currently not supported by this browser.');
return true;
}
 
if (value['replacemode'] == "all") {
found = false;
 
while (rng.findText(value['string'], value['backwards'] ? -1 : 1, flags)) {
found = true;
rng.scrollIntoView();
rng.select();
replaceSel(value['string'], value['replacestring'], value['backwards']);
}
 
if (found)
awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));
else
awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
 
return true;
}
 
if (rng.findText(value['string'], value['backwards'] ? -1 : 1, flags)) {
rng.scrollIntoView();
rng.select();
} else
awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
} else {
if (value['replacemode'] == "all") {
found = false;
 
while (win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], false, false)) {
found = true;
replaceSel(value['string'], value['replacestring'], value['backwards']);
}
 
if (found)
awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));
else
awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
 
return true;
}
 
if (!win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], false, false))
awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
}
}
 
return true;
 
case "mceSearchReplace" :
value['replacestring'] = "";
tinyMCE.execInstanceCommand(editor_id, 'mceSearch', user_interface, value, false);
return true;
}
 
return false;
}
};
 
tinyMCE.addPlugin("searchreplace", TinyMCE_SearchReplacePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/searchreplace/css/searchreplace.css
New file
0,0 → 1,20
/* stylesheet for advsearchreplace plugin*/
 
.panel_wrapper { height: 85px; }
.panel_wrapper div.current { height: 85px; }
 
/* MS IE only styles */
* html .panel_wrapper { height: 100px; }
* html .panel_wrapper div.current { height: 100px; }
 
#replaceBtn, #replaceAllBtn {
padding-bottom: 2px;
font-weight: bold;
width: 90px;
height: 21px;
border: 0;
cursor: pointer;
}
 
#replaceBtn { background: url(../images/replace_button_bg.gif); }
#replaceAllBtn { background: url(../images/replace_all_button_bg.gif); }
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/searchreplace/searchreplace.htm
New file
0,0 → 1,107
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_searchreplace_replace_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/searchreplace.js"></script>
<link rel="stylesheet" type="text/css" href="css/searchreplace.css" />
<base target="_self" />
</head>
<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none; margin: 4px;">
<form onsubmit="return false;" action="#">
<div class="tabs">
<ul>
<li id="search_tab"><span><a href="javascript:mcTabs.displayTab('search_tab','search_panel');manageReplaceButtons();" onmousedown="return copyValues(this);">{$lang_searchreplace_search_desc}</a></span></li>
<li id="replace_tab"><span><a href="javascript:mcTabs.displayTab('replace_tab','replace_panel');manageReplaceButtons();" onmousedown="return copyValues(this);">{$lang_searchreplace_replace}</a></span></li>
</ul>
</div>
 
<div class="panel_wrapper">
 
<div id="search_panel" class="panel">
<table border="0" cellspacing="0" cellpadding="2">
<tr>
<td><label for="search_panel_searchstring">{$lang_searchreplace_findwhat}</label></td>
<td><input type="text" id="search_panel_searchstring" name="search_panel_searchstring" style="width: 200px" /></td>
</tr>
<tr>
<td colspan="2">
<table border="0" cellspacing="0" cellpadding="0" class="direction">
<tr>
<td><label>{$lang_searchreplace_direction}</label></td>
<td><input id="search_panel_backwardsu" name="search_panel_backwards" class="radio" type="radio" /></td>
<td><label for="search_panel_backwardsu">{$lang_searchreplace_up}</label></td>
<td><input id="search_panel_backwardsd" name="search_panel_backwards" class="radio" type="radio" /></td>
<td><label for="search_panel_backwardsd">{$lang_searchreplace_down}</label></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input id="search_panel_casesensitivebox" name="search_panel_casesensitivebox" class="checkbox" type="checkbox" /></td>
<td><label for="search_panel_casesensitivebox">{$lang_searchreplace_case}</label></td>
</tr>
</table>
</td>
</tr>
</table>
</div>
 
<div id="replace_panel" class="panel">
<table border="0" cellspacing="0" cellpadding="2">
<tr>
<td><label for="replace_panel_searchstring">{$lang_searchreplace_findwhat}</label></td>
<td><input type="text" id="replace_panel_searchstring" name="replace_panel_searchstring" style="width: 200px" /></td>
</tr>
<tr>
<td><label for="replace_panel_replacestring">{$lang_searchreplace_replacewith}</label></td>
<td><input type="text" id="replace_panel_replacestring" name="replace_panel_replacestring" style="width: 200px" /></td>
</tr>
<tr>
<td colspan="2">
<table border="0" cellspacing="0" cellpadding="0" class="direction">
<tr>
<td><label>{$lang_searchreplace_direction}</label></td>
<td><input id="replace_panel_backwardsu" name="replace_panel_backwards" class="radio" type="radio" /></td>
<td><label for="replace_panel_backwardsu">{$lang_searchreplace_up}</label></td>
<td><input id="replace_panel_backwardsd" name="replace_panel_backwards" class="radio" type="radio" /></td>
<td><label for="replace_panel_backwardsd">{$lang_searchreplace_down}</label></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input id="replace_panel_casesensitivebox" name="replace_panel_casesensitivebox" class="checkbox" type="checkbox" /></td>
<td><label for="replace_panel_casesensitivebox">{$lang_searchreplace_case}</label></td>
</tr>
</table>
</td>
</tr>
</table>
</div>
 
</div>
 
<div class="mceActionPanel">
<div style="float: left">
<input type="button" id="insert" name="insert" value="{$lang_searchreplace_findnext}" onclick="searchNext('none');" />
<span id="replace_buttons">
<input type="button" id="replaceBtn" name="replaceBtn" value="{$lang_searchreplace_replace}" onclick="searchNext('current');" />
<input type="button" id="replaceAllBtn" name="replaceAllBtn" value="{$lang_searchreplace_replaceall}" onclick="searchNext('all');;" />
</span>
</div>
 
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_searchreplace_cancel}" onclick="tinyMCEPopup.close();" />
</div>
</div>
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullscreen/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('fullscreen');var TinyMCE_FullScreenPlugin={getInfo:function(){return{longname:'Fullscreen',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(!tinyMCE.settings['fullscreen_skip_plugin_css'])tinyMCE.importCSS(inst.getContainerWin().document,tinyMCE.baseURL+"/plugins/fullscreen/css/page.css")},getControlHTML:function(cn){switch(cn){case"fullscreen":return tinyMCE.getButtonHTML(cn,'lang_fullscreen_desc','{$pluginurl}/images/fullscreen.gif','mceFullScreen')}return""},execCommand:function(editor_id,element,command,user_interface,value){var inst;switch(command){case"mceFullScreen":inst=tinyMCE.getInstanceById(editor_id);if(tinyMCE.getParam('fullscreen_new_window'))this._toggleFullscreenWin(inst);else this._toggleFullscreen(inst);return true}return false},_toggleFullscreenWin:function(inst){if(tinyMCE.getParam('fullscreen_is_enabled')){window.opener.tinyMCE.execInstanceCommand(tinyMCE.getParam('fullscreen_editor_id'),'mceSetContent',false,tinyMCE.getContent(inst.editorId));top.close()}else{tinyMCE.setWindowArg('editor_id',inst.editorId);var win=window.open(tinyMCE.baseURL+"/plugins/fullscreen/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{win.resizeTo(screen.availWidth,screen.availHeight)}catch(e){}}},_toggleFullscreen:function(inst){var ds=inst.getData('fullscreen'),editorContainer,tableElm,iframe,vp,cw,cd,re,w,h,si,blo,delta=0,cell,row,fcml,bcml;cw=inst.getContainerWin();cd=cw.document;editorContainer=cd.getElementById(inst.editorId+'_parent');tableElm=editorContainer.firstChild;iframe=inst.iframeElement;re=cd.getElementById(inst.editorId+'_resize');blo=document.getElementById('mce_fullscreen_blocker');fcm=new TinyMCE_Layer(inst.editorId+'_fcMenu');fcml=new TinyMCE_Layer(inst.editorId+'_fcMenu');bcml=new TinyMCE_Layer(inst.editorId+'_bcMenu');if(fcml.exists()&&fcml.isVisible()){tinyMCE.switchClass(inst.editorId+'_forecolor','mceMenuButton');fcml.hide()}if(bcml.exists()&&bcml.isVisible()){tinyMCE.switchClass(inst.editorId+'_backcolor','mceMenuButton');bcml.hide()}if(!ds.enabled){if(inst.toolbarElement){delta+=inst.toolbarElement.offsetHeight;cell=tableElm.tBodies[0].insertRow(0).insertCell(-1);cell.className='mceToolbarTop';cell.nowrap=true;ds.oldToolbarParent=inst.toolbarElement.parentNode;ds.toolbarHolder=document.createTextNode('...');cell.appendChild(ds.oldToolbarParent.replaceChild(ds.toolbarHolder,inst.toolbarElement))}ds.parents=[];vp=tinyMCE.getViewPort(cw);ds.scrollX=vp.left;ds.scrollY=vp.top;if(!tinyMCE.isOpera)tinyMCE.addCSSClass(cd.body,'mceFullscreen');tinyMCE.getParentNode(tableElm.parentNode,function(n){if(n.nodeName=='BODY')return true;if(n.nodeType==1)tinyMCE.addCSSClass(n,'mceFullscreenPos');return false});if(re)re.style.display='none';vp=tinyMCE.getViewPort(cw);ds.oldWidth=iframe.style.width?iframe.style.width:iframe.offsetWidth;ds.oldHeight=iframe.style.height?iframe.style.height:iframe.offsetHeight;ds.oldTWidth=tableElm.style.width?tableElm.style.width:tableElm.offsetWidth;ds.oldTHeight=tableElm.style.height?tableElm.style.height:tableElm.offsetHeight;if(ds.oldWidth&&ds.oldWidth.indexOf)ds.oldTWidth=ds.oldWidth.indexOf('%')!=-1?ds.oldWidth:ds.oldTWidth;if(!blo&&tinyMCE.isRealIE){blo=tinyMCE.createTag(document,'iframe',{id:'mce_fullscreen_blocker',src:'about:blank',frameBorder:0,width:vp.width,height:vp.height,style:'display: block; position: absolute; left: 0; top: 0; z-index: 999; margin: 0; padding: 0;'});document.body.appendChild(blo)}tableElm.style.position='absolute';tableElm.style.zIndex=1000;tableElm.style.left=tableElm.style.top='0';tableElm.style.width=vp.width+'px';tableElm.style.height=vp.height+'px';if(tinyMCE.isRealIE){iframe.style.width=vp.width+'px';iframe.style.height=vp.height+'px';w=iframe.parentNode.clientWidth-(tableElm.offsetWidth-vp.width);h=iframe.parentNode.clientHeight-(tableElm.offsetHeight-vp.height)}else{w=iframe.parentNode.clientWidth;h=iframe.parentNode.clientHeight}iframe.style.width=w+"px";iframe.style.height=(h+delta)+"px";tinyMCE.switchClass(inst.editorId+'_fullscreen','mceButtonSelected');ds.enabled=true;inst.useCSS=false}else{if(inst.toolbarElement){row=inst.toolbarElement.parentNode.parentNode;row.parentNode.removeChild(row);ds.oldToolbarParent.replaceChild(inst.toolbarElement,ds.toolbarHolder);ds.oldToolbarParent=null;ds.toolbarHolder=null}if(blo)blo.parentNode.removeChild(blo);si=0;tinyMCE.getParentNode(tableElm.parentNode,function(n){if(n.nodeName=='BODY')return true;if(n.nodeType==1)tinyMCE.removeCSSClass(n,'mceFullscreenPos')});if(re&&tinyMCE.getParam("theme_advanced_resizing",false))re.style.display='block';tableElm.style.position='static';tableElm.style.zIndex='';tableElm.style.width='';tableElm.style.height='';tableElm.style.width=ds.oldTWidth?ds.oldTWidth:'';tableElm.style.height=ds.oldTHeight?ds.oldTHeight:'';iframe.style.width=ds.oldWidth?ds.oldWidth:'';iframe.style.height=ds.oldHeight?ds.oldHeight:'';tinyMCE.switchClass(inst.editorId+'_fullscreen','mceButtonNormal');ds.enabled=false;tinyMCE.removeCSSClass(cd.body,'mceFullscreen');cw.scrollTo(ds.scrollX,ds.scrollY);inst.useCSS=false}},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(tinyMCE.getParam('fullscreen_is_enabled'))tinyMCE.switchClass(editor_id+'_fullscreen','mceButtonSelected');return true}};tinyMCE.addPlugin("fullscreen",TinyMCE_FullScreenPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullscreen/langs/fr.js
New file
0,0 → 1,7
// FR lang variables
// Modified by Motte, last updated 2006-03-23
 
tinyMCE.addToLang('',{
fullscreen_title : 'Affichage plein &eacute;cran',
fullscreen_desc : 'Affichage plein &eacute;cran/normal'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullscreen/langs/en.js
New file
0,0 → 1,5
// UK lang variables
 
tinyMCE.addToLang('',{
fullscreen_desc : 'Toggle fullscreen mode'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullscreen/images/fullscreen.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullscreen/images/fullscreen.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js
New file
0,0 → 1,230
/**
* $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
tinyMCE.importPluginLanguagePack('fullscreen');
 
var TinyMCE_FullScreenPlugin = {
getInfo : function() {
return {
longname : 'Fullscreen',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
initInstance : function(inst) {
if (!tinyMCE.settings['fullscreen_skip_plugin_css'])
tinyMCE.importCSS(inst.getContainerWin().document, tinyMCE.baseURL + "/plugins/fullscreen/css/page.css");
},
 
getControlHTML : function(cn) {
switch (cn) {
case "fullscreen":
return tinyMCE.getButtonHTML(cn, 'lang_fullscreen_desc', '{$pluginurl}/images/fullscreen.gif', 'mceFullScreen');
}
 
return "";
},
 
execCommand : function(editor_id, element, command, user_interface, value) {
var inst;
 
// Handle commands
switch (command) {
case "mceFullScreen":
inst = tinyMCE.getInstanceById(editor_id);
 
if (tinyMCE.getParam('fullscreen_new_window'))
this._toggleFullscreenWin(inst);
else
this._toggleFullscreen(inst);
 
return true;
}
 
// Pass to next handler in chain
return false;
},
 
_toggleFullscreenWin : function(inst) {
if (tinyMCE.getParam('fullscreen_is_enabled')) {
// In fullscreen mode
window.opener.tinyMCE.execInstanceCommand(tinyMCE.getParam('fullscreen_editor_id'), 'mceSetContent', false, tinyMCE.getContent(inst.editorId));
top.close();
} else {
tinyMCE.setWindowArg('editor_id', inst.editorId);
 
var win = window.open(tinyMCE.baseURL + "/plugins/fullscreen/fullscreen.htm", "mceFullScreenPopup", "fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight);
try { win.resizeTo(screen.availWidth, screen.availHeight); } catch (e) {}
}
},
 
_toggleFullscreen : function(inst) {
var ds = inst.getData('fullscreen'), editorContainer, tableElm, iframe, vp, cw, cd, re, w, h, si, blo, delta = 0, cell, row, fcml, bcml;
 
cw = inst.getContainerWin();
cd = cw.document;
editorContainer = cd.getElementById(inst.editorId + '_parent');
tableElm = editorContainer.firstChild;
iframe = inst.iframeElement;
re = cd.getElementById(inst.editorId + '_resize');
blo = document.getElementById('mce_fullscreen_blocker');
fcm = new TinyMCE_Layer(inst.editorId + '_fcMenu');
fcml = new TinyMCE_Layer(inst.editorId + '_fcMenu');
bcml = new TinyMCE_Layer(inst.editorId + '_bcMenu');
 
if (fcml.exists() && fcml.isVisible()) {
tinyMCE.switchClass(inst.editorId + '_forecolor', 'mceMenuButton');
fcml.hide();
}
 
if (bcml.exists() && bcml.isVisible()) {
tinyMCE.switchClass(inst.editorId + '_backcolor', 'mceMenuButton');
bcml.hide();
}
 
if (!ds.enabled) {
// Handle External Toolbar
if (inst.toolbarElement) {
delta += inst.toolbarElement.offsetHeight;
 
cell = tableElm.tBodies[0].insertRow(0).insertCell(-1);
cell.className = 'mceToolbarTop';
cell.nowrap = true;
 
ds.oldToolbarParent = inst.toolbarElement.parentNode;
ds.toolbarHolder = document.createTextNode('...');
 
cell.appendChild(ds.oldToolbarParent.replaceChild(ds.toolbarHolder, inst.toolbarElement));
}
 
ds.parents = [];
 
vp = tinyMCE.getViewPort(cw);
ds.scrollX = vp.left;
ds.scrollY = vp.top;
 
// Opera has a bug restoring scrollbars
if (!tinyMCE.isOpera)
tinyMCE.addCSSClass(cd.body, 'mceFullscreen');
 
tinyMCE.getParentNode(tableElm.parentNode, function (n) {
if (n.nodeName == 'BODY')
return true;
 
if (n.nodeType == 1)
tinyMCE.addCSSClass(n, 'mceFullscreenPos');
 
return false;
});
 
if (re)
re.style.display = 'none';
 
vp = tinyMCE.getViewPort(cw);
 
ds.oldWidth = iframe.style.width ? iframe.style.width : iframe.offsetWidth;
ds.oldHeight = iframe.style.height ? iframe.style.height : iframe.offsetHeight;
ds.oldTWidth = tableElm.style.width ? tableElm.style.width : tableElm.offsetWidth;
ds.oldTHeight = tableElm.style.height ? tableElm.style.height : tableElm.offsetHeight;
 
// Handle % width
if (ds.oldWidth && ds.oldWidth.indexOf)
ds.oldTWidth = ds.oldWidth.indexOf('%') != -1 ? ds.oldWidth : ds.oldTWidth;
 
if (!blo && tinyMCE.isRealIE) {
blo = tinyMCE.createTag(document, 'iframe', {id : 'mce_fullscreen_blocker', src : 'about:blank', frameBorder : 0, width : vp.width, height : vp.height, style : 'display: block; position: absolute; left: 0; top: 0; z-index: 999; margin: 0; padding: 0;'});
document.body.appendChild(blo);
}
 
tableElm.style.position = 'absolute';
tableElm.style.zIndex = 1000;
tableElm.style.left = tableElm.style.top = '0';
 
tableElm.style.width = vp.width + 'px';
tableElm.style.height = vp.height + 'px';
 
if (tinyMCE.isRealIE) {
iframe.style.width = vp.width + 'px';
iframe.style.height = vp.height + 'px';
 
// Calc new width/height based on overflow
w = iframe.parentNode.clientWidth - (tableElm.offsetWidth - vp.width);
h = iframe.parentNode.clientHeight - (tableElm.offsetHeight - vp.height);
} else {
w = iframe.parentNode.clientWidth;
h = iframe.parentNode.clientHeight;
}
 
iframe.style.width = w + "px";
iframe.style.height = (h+delta) + "px";
 
tinyMCE.switchClass(inst.editorId + '_fullscreen', 'mceButtonSelected');
ds.enabled = true;
 
inst.useCSS = false;
} else {
// Handle External Toolbar
if (inst.toolbarElement) {
row = inst.toolbarElement.parentNode.parentNode;
 
row.parentNode.removeChild(row);
 
ds.oldToolbarParent.replaceChild(inst.toolbarElement, ds.toolbarHolder);
 
ds.oldToolbarParent = null;
ds.toolbarHolder = null;
}
 
if (blo)
blo.parentNode.removeChild(blo);
 
si = 0;
tinyMCE.getParentNode(tableElm.parentNode, function (n) {
if (n.nodeName == 'BODY')
return true;
 
if (n.nodeType == 1)
tinyMCE.removeCSSClass(n, 'mceFullscreenPos');
});
 
if (re && tinyMCE.getParam("theme_advanced_resizing", false))
re.style.display = 'block';
 
tableElm.style.position = 'static';
tableElm.style.zIndex = '';
tableElm.style.width = '';
tableElm.style.height = '';
 
tableElm.style.width = ds.oldTWidth ? ds.oldTWidth : '';
tableElm.style.height = ds.oldTHeight ? ds.oldTHeight : '';
 
iframe.style.width = ds.oldWidth ? ds.oldWidth : '';
iframe.style.height = ds.oldHeight ? ds.oldHeight : '';
 
tinyMCE.switchClass(inst.editorId + '_fullscreen', 'mceButtonNormal');
ds.enabled = false;
 
tinyMCE.removeCSSClass(cd.body, 'mceFullscreen');
cw.scrollTo(ds.scrollX, ds.scrollY);
 
inst.useCSS = false;
}
},
 
handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
if (tinyMCE.getParam('fullscreen_is_enabled'))
tinyMCE.switchClass(editor_id + '_fullscreen', 'mceButtonSelected');
 
return true;
}
};
 
tinyMCE.addPlugin("fullscreen", TinyMCE_FullScreenPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullscreen/css/page.css
New file
0,0 → 1,21
/* This class restores all CSS properties to that absolute positioning of fullscreen mode is correct */
.mceFullscreenPos {
display: block !important;
position: static !important;
left: 0 !important;
top: 0 !important;
bottom: auto !important;
right: auto !important;
width: auto !important;
height: auto !important;
margin: 0 !important;
padding: 0 !important;
border: 0 !important;
overflow: visible;
z-index: 1 !important;
clear: both;
}
 
body.mceFullscreen {
overflow: hidden !important;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullscreen/fullscreen.htm
New file
0,0 → 1,91
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_fullscreen_title}</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script language="javascript" type="text/javascript" src="../../tiny_mce.js"></script>
<script language="javascript" type="text/javascript">
function patchCallback(settings, key) {
if (settings[key])
settings[key] = "window.opener." + settings[key];
}
 
var settings = new Array();
 
// Clone array
for (var name in window.opener.tinyMCE.settings)
settings[name] = window.opener.tinyMCE.settings[name];
 
// Override options for fullscreen
for (var name in window.opener.tinyMCE.settings.fullscreen_settings)
settings[name] = window.opener.tinyMCE.settings.fullscreen_settings[name];
 
// Patch callbacks, make them point to window.opener
patchCallback(settings, 'urlconverter_callback');
patchCallback(settings, 'insertlink_callback');
patchCallback(settings, 'insertimage_callback');
patchCallback(settings, 'setupcontent_callback');
patchCallback(settings, 'save_callback');
patchCallback(settings, 'onchange_callback');
patchCallback(settings, 'init_instance_callback');
patchCallback(settings, 'file_browser_callback');
patchCallback(settings, 'cleanup_callback');
patchCallback(settings, 'execcommand_callback');
patchCallback(settings, 'oninit');
 
// Set options
settings['mode'] = 'exact';
settings['elements'] = 'fullscreenarea';
settings['ask'] = false;
settings['setupcontent_callback'] = 'setupContent';
settings['fullscreen_is_enabled'] = true;
settings['fullscreen_editor_id'] = window.opener.tinyMCE.getWindowArg("editor_id");
settings['theme_advanced_resizing'] = false;
 
// Init
tinyMCE.init(settings);
tinyMCE.documentBasePath = window.opener.tinyMCE.documentBasePath;
 
function setupContent(editor_id, body, doc) {
var inst = tinyMCE.getInstanceById(editor_id);
var content = window.opener.tinyMCE.getContent(tinyMCE.getParam('fullscreen_editor_id'));
 
// Setup title
var divElm = document.createElement("div");
divElm.innerHTML = tinyMCELang['lang_fullscreen_title'];
document.title = divElm.innerHTML;
 
// Get content
inst.execCommand('mceSetContent', false, content);
}
 
function unloadHandler(e) {
moveContent();
}
 
function moveContent() {
var doc = tinyMCE.isMSIE ? window.frames['mce_editor_0'].window.document : document.getElementById('mce_editor_0').contentDocument;
window.opener.tinyMCE.setInnerHTML(window.opener.tinyMCE.selectedInstance.getBody(), doc.body.innerHTML);
}
 
// Add onunload
tinyMCE.addEvent(window, "beforeunload", unloadHandler);
 
function doParentSubmit() {
moveContent();
 
if (window.opener.tinyMCE.selectedInstance.formElement.form)
window.opener.tinyMCE.selectedInstance.formElement.form.submit();
 
window.close();
 
return false;
}
</script>
<base target="_self" />
</head>
<body style="margin: 0; overflow: hidden; height: 100%" scrolling="no" scroll="no">
<form onsubmit="doParentSubmit();" style="height: 100%">
<textarea id="fullscreenarea" style="width: 100%; height: 100%"></textarea>
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/fullscreen/readme.txt
New file
0,0 → 1,0
Check the TinyMCE documentation for details on this plugin.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/spellchecker/langs/fr.js
New file
0,0 → 1,16
// FR lang variables
// Modified by shadow walker, last updated 2007-03-16, based on the work of Motte
 
tinyMCE.addToLang('spellchecker',{
desc : 'Correcteur orthographique',
menu : 'Options du correcteur',
ignore_word : 'Ignorer le mot',
ignore_words : 'Tout ignorer',
langs : 'Langues',
wait : 'Veuillez patienter...',
swait : 'Contr&ocirc;le de l\'orthographe, veuillez patienter...',
sug : 'Suggestions',
no_sug : 'Pas de suggestions',
no_mpell : 'Aucune erreur d&eacute;tect&eacute;.',
mpell_found : 'Trouver {$words} erreur(s).'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/contextmenu/images/spacer.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/contextmenu/images/spacer.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js
New file
0,0 → 1,360
/**
* $Id: editor_plugin_src.js 264 2007-04-26 20:53:09Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
if (!tinyMCE.settings['contextmenu_skip_plugin_css']) {
tinyMCE.loadCSS(tinyMCE.baseURL + "/plugins/contextmenu/css/contextmenu.css");
}
 
var TinyMCE_ContextMenuPlugin = {
// Private fields
_contextMenu : null,
 
getInfo : function() {
return {
longname : 'Context menus',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
initInstance : function(inst) {
// Is not working on MSIE 5.0 or Opera no contextmenu event
if (tinyMCE.isMSIE5_0 && tinyMCE.isOpera)
return;
 
TinyMCE_ContextMenuPlugin._contextMenu = new TinyMCE_ContextMenu({
commandhandler : "TinyMCE_ContextMenuPlugin._commandHandler",
spacer_image : tinyMCE.baseURL + "/plugins/contextmenu/images/spacer.gif"
});
 
// Add hide event handles
tinyMCE.addEvent(inst.getDoc(), "click", TinyMCE_ContextMenuPlugin._hideContextMenu);
tinyMCE.addEvent(inst.getDoc(), "keypress", TinyMCE_ContextMenuPlugin._hideContextMenu);
tinyMCE.addEvent(inst.getDoc(), "keydown", TinyMCE_ContextMenuPlugin._hideContextMenu);
tinyMCE.addEvent(document, "click", TinyMCE_ContextMenuPlugin._hideContextMenu);
tinyMCE.addEvent(document, "keypress", TinyMCE_ContextMenuPlugin._hideContextMenu);
tinyMCE.addEvent(document, "keydown", TinyMCE_ContextMenuPlugin._hideContextMenu);
 
// Attach contextmenu event
if (tinyMCE.isGecko) {
tinyMCE.addEvent(inst.getDoc(), "contextmenu", function(e) {TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE ? inst.contentWindow.event : e, inst);});
} else
tinyMCE.addEvent(inst.getDoc(), "contextmenu", TinyMCE_ContextMenuPlugin._onContextMenu);
},
 
// Private plugin internal methods
 
_onContextMenu : function(e) {
var elm = tinyMCE.isMSIE ? e.srcElement : e.target;
var targetInst, body;
 
// Find instance
if ((body = tinyMCE.getParentElement(elm, "body")) != null) {
for (var n in tinyMCE.instances) {
var inst = tinyMCE.instances[n];
if (!tinyMCE.isInstance(inst))
continue;
 
if (body == inst.getBody()) {
targetInst = inst;
break;
}
}
 
return TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE ? targetInst.contentWindow.event : e, targetInst);
}
},
 
_showContextMenu : function(e, inst) {
if (e.ctrlKey)
return true;
 
function getAttrib(elm, name) {
return elm.getAttribute(name) ? elm.getAttribute(name) : "";
}
 
var x, y, elm, contextMenu;
var pos = tinyMCE.getAbsPosition(inst.iframeElement);
 
x = tinyMCE.isMSIE ? e.screenX : pos.absLeft + (e.pageX - inst.getBody().scrollLeft);
y = tinyMCE.isMSIE ? e.screenY : pos.absTop + (e.pageY - inst.getBody().scrollTop);
elm = tinyMCE.isMSIE ? e.srcElement : e.target;
 
contextMenu = this._contextMenu;
contextMenu.inst = inst;
 
// Mozilla needs some time
window.setTimeout(function () {
var theme = tinyMCE.getParam("theme");
 
contextMenu.clearAll();
var sel = inst.selection.getSelectedText().length != 0 || elm.nodeName == "IMG";
 
// Default items
contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/cut.gif", "$lang_cut_desc", "Cut", "", !sel);
contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/copy.gif", "$lang_copy_desc", "Copy", "", !sel);
contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_paste_desc", "Paste", "", false);
 
if (sel || (elm ? (elm.nodeName == 'A' && tinyMCE.getAttrib(elm, 'name') == '') || (elm.nodeName == 'IMG') : false)) {
contextMenu.addSeparator();
contextMenu.addItem(tinyMCE.baseURL + "/themes/advanced/images/link.gif", "$lang_link_desc", inst.hasPlugin("advlink") ? "mceAdvLink" : "mceLink");
contextMenu.addItem(tinyMCE.baseURL + "/themes/advanced/images/unlink.gif", "$lang_unlink_desc", "unlink", "", (elm ? (elm.nodeName != 'A') && (elm.nodeName != 'IMG') : true));
}
 
// Get element
elm = tinyMCE.getParentElement(elm, "img,table,td" + (inst.hasPlugin("advhr") ? ',hr' : ''));
if (elm) {
switch (elm.nodeName) {
case "IMG":
contextMenu.addSeparator();
 
// If flash
if (tinyMCE.hasPlugin('flash') && tinyMCE.getAttrib(elm, 'class').indexOf('mceItemFlash') != -1)
contextMenu.addItem(tinyMCE.baseURL + "/plugins/flash/images/flash.gif", "$lang_flash_props", "mceFlash");
else if (tinyMCE.hasPlugin('media') && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(elm, 'class')))
contextMenu.addItem(tinyMCE.baseURL + "/plugins/flash/images/flash.gif", "$lang_media_title", "mceMedia");
else
contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/image.gif", "$lang_image_props_desc", inst.hasPlugin("advimage") ? "mceAdvImage" : "mceImage");
break;
 
case "HR":
contextMenu.addSeparator();
contextMenu.addItem(tinyMCE.baseURL + "/plugins/advhr/images/advhr.gif", "$lang_insert_advhr_desc", "mceAdvancedHr");
break;
 
case "TABLE":
case "TD":
// Is table plugin loaded
if (inst.hasPlugin("table")) {
var colspan = (elm.nodeName == "TABLE") ? "" : getAttrib(elm, "colspan");
var rowspan = (elm.nodeName == "TABLE") ? "" : getAttrib(elm, "rowspan");
 
colspan = colspan == "" ? "1" : colspan;
rowspan = rowspan == "" ? "1" : rowspan;
 
contextMenu.addSeparator();
contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/cut.gif", "$lang_table_cut_row_desc", "mceTableCutRow");
contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/copy.gif", "$lang_table_copy_row_desc", "mceTableCopyRow");
contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_table_paste_row_before_desc", "mceTablePasteRowBefore", "", inst.tableRowClipboard == null);
contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_table_paste_row_after_desc", "mceTablePasteRowAfter", "", inst.tableRowClipboard == null);
 
/* contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyleft.gif", "$lang_justifyleft_desc", "JustifyLeft", "", false);
contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifycenter.gif", "$lang_justifycenter_desc", "JustifyCenter", "", false);
contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyright.gif", "$lang_justifyright_desc", "JustifyRight", "", false);
contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyfull.gif", "$lang_justifyfull_desc", "JustifyFull", "", false);*/
contextMenu.addSeparator();
contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_desc", "mceInsertTable", "insert");
contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_props_desc", "mceInsertTable");
contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_cell_props.gif", "$lang_table_cell_desc", "mceTableCellProps");
contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete.gif", "$lang_table_del", "mceTableDelete");
contextMenu.addSeparator();
contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_row_props.gif", "$lang_table_row_desc", "mceTableRowProps");
contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_row_before.gif", "$lang_table_row_before_desc", "mceTableInsertRowBefore");
contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_row_after.gif", "$lang_table_row_after_desc", "mceTableInsertRowAfter");
contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete_row.gif", "$lang_table_delete_row_desc", "mceTableDeleteRow");
contextMenu.addSeparator();
contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_col_before.gif", "$lang_table_col_before_desc", "mceTableInsertColBefore");
contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_col_after.gif", "$lang_table_col_after_desc", "mceTableInsertColAfter");
contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete_col.gif", "$lang_table_delete_col_desc", "mceTableDeleteCol");
contextMenu.addSeparator();
contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_split_cells.gif", "$lang_table_split_cells_desc", "mceTableSplitCells", "", (colspan == "1" && rowspan == "1"));
contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_merge_cells.gif", "$lang_table_merge_cells_desc", "mceTableMergeCells", "", false);
}
break;
}
} else {
// Add table specific
if (inst.hasPlugin("table")) {
contextMenu.addSeparator();
contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_desc", "mceInsertTable", "insert");
}
}
 
contextMenu.show(x, y);
}, 10);
 
// Cancel default handeling
tinyMCE.cancelEvent(e);
return false;
},
 
_hideContextMenu : function() {
if (TinyMCE_ContextMenuPlugin._contextMenu)
TinyMCE_ContextMenuPlugin._contextMenu.hide();
},
 
_commandHandler : function(command, value) {
var cm = TinyMCE_ContextMenuPlugin._contextMenu;
 
cm.hide();
 
// UI must be true on these
var ui = false;
if (command == "mceInsertTable" || command == "mceTableCellProps" || command == "mceTableRowProps" || command == "mceTableMergeCells")
ui = true;
 
if (command == "Paste")
value = null;
 
if (tinyMCE.getParam("dialog_type") == "modal" && tinyMCE.isMSIE) {
// Cell properties will generate access denied error is this isn't done?!
window.setTimeout(function() {
cm.inst.execCommand(command, ui, value);
}, 100);
} else
cm.inst.execCommand(command, ui, value);
}
};
 
tinyMCE.addPlugin("contextmenu", TinyMCE_ContextMenuPlugin);
 
// Context menu class
 
function TinyMCE_ContextMenu(settings) {
var doc, self = this;
 
// Default value function
function defParam(key, def_val) {
settings[key] = typeof(settings[key]) != "undefined" ? settings[key] : def_val;
}
 
this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
 
// Setup contextmenu div
this.contextMenuDiv = document.createElement("div");
this.contextMenuDiv.className = "contextMenu";
this.contextMenuDiv.setAttribute("class", "contextMenu");
this.contextMenuDiv.style.display = "none";
this.contextMenuDiv.style.position = 'absolute';
this.contextMenuDiv.style.zindex = 1000;
this.contextMenuDiv.style.left = '0';
this.contextMenuDiv.style.top = '0';
this.contextMenuDiv.unselectable = "on";
 
document.body.appendChild(this.contextMenuDiv);
 
// Setup default values
defParam("commandhandler", "");
defParam("spacer_image", "images/spacer.gif");
 
this.items = new Array();
this.settings = settings;
this.html = "";
 
// IE Popup
if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera) {
this.pop = window.createPopup();
doc = this.pop.document;
doc.open();
doc.write('<html><head><link href="' + tinyMCE.baseURL + '/plugins/contextmenu/css/contextmenu.css" rel="stylesheet" type="text/css" /></head><body unselectable="yes" class="contextMenuIEPopup"></body></html>');
doc.close();
}
};
 
TinyMCE_ContextMenu.prototype = {
clearAll : function() {
this.html = "";
this.contextMenuDiv.innerHTML = "";
},
 
addSeparator : function() {
this.html += '<tr class="contextMenuItem"><td class="contextMenuIcon"><img src="' + this.settings['spacer_image'] + '" width="20" height="1" class="contextMenuImage" /></td><td><img class="contextMenuSeparator" width="1" height="1" src="' + this.settings['spacer_image'] + '" /></td></tr>';
},
 
addItem : function(icon, title, command, value, disabled) {
if (title.charAt(0) == '$')
title = tinyMCE.getLang(title.substring(1));
 
var onMouseDown = '';
var html = '';
 
if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0)
onMouseDown = 'contextMenu.execCommand(\'' + command + '\', \'' + value + '\');return false;';
else
onMouseDown = this.settings['commandhandler'] + '(\'' + command + '\', \'' + value + '\');return false;';
 
if (icon == "")
icon = this.settings['spacer_image'];
 
if (!disabled)
html += '<tr class="contextMenuItem">';
else
html += '<tr class="contextMenuItemDisabled">';
 
html += '<td class="contextMenuIcon"><img src="' + icon + '" width="20" height="20" class="contextMenuImage" /></td>';
html += '<td><div class="contextMenuText">';
html += '<a href="javascript:void(0);" onclick="' + onMouseDown + '" onmousedown="return false;">&#160;';
 
// Add text
html += title;
 
html += '&#160;</a>';
html += '</div></td>';
html += '</tr>';
 
// Add to main
this.html += html;
},
 
show : function(x, y) {
var vp, width, height, yo;
 
if (this.html == "")
return;
 
var html = '';
 
html += '<a href="#"></a><table border="0" cellpadding="0" cellspacing="0">';
html += this.html;
html += '</table>';
 
this.contextMenuDiv.innerHTML = html;
 
// Get dimensions
this.contextMenuDiv.style.display = "block";
width = this.contextMenuDiv.offsetWidth;
height = this.contextMenuDiv.offsetHeight;
this.contextMenuDiv.style.display = "none";
 
if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera) {
// Setup popup and show
this.pop.document.body.innerHTML = '<div class="contextMenu">' + html + "</div>";
this.pop.document.tinyMCE = tinyMCE;
this.pop.document.contextMenu = this;
this.pop.show(x, y, width, height);
} else {
vp = this.getViewPort();
yo = tinyMCE.isMSIE5_0 ? document.body.scrollTop : self.pageYOffset;
this.contextMenuDiv.style.left = (x > vp.left + vp.width - width ? vp.left + vp.width - width : x) + 'px';
this.contextMenuDiv.style.top = (y > vp.top + vp.height - height ? vp.top + vp.height - height : y) + 'px';
this.contextMenuDiv.style.display = "block";
}
},
 
getViewPort : function() {
return {
left : self.pageXOffset || self.document.documentElement.scrollLeft || self.document.body.scrollLeft,
top: self.pageYOffset || self.document.documentElement.scrollTop || self.document.body.scrollTop,
width : document.documentElement.offsetWidth || document.body.offsetWidth,
height : self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight
};
},
 
hide : function() {
if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera)
this.pop.hide();
else
this.contextMenuDiv.style.display = "none";
},
 
execCommand : function(command, value) {
eval(this.settings['commandhandler'] + "(command, value);");
}
};
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/contextmenu/css/contextmenu.css
New file
0,0 → 1,74
.contextMenuIEPopup {
padding: 0;
margin: 0;
border: 0;
overflow: hidden;
}
 
.contextMenu {
position: absolute;
cursor: default;
z-index: 1000;
border: 1px solid #D4D0C8;
background-color: #FFFFFF;
}
 
.contextMenuItem, .contextMenuItemOver {
}
 
.contextMenuSeparator {
width: 100%;
background-color: #D4D0C8;
border: 0;
}
 
.contextMenuImage, .contextMenuItemDisabled {
border: 0;
}
 
.contextMenuIcon {
background-color: #F0F0EE;
}
 
.contextMenuItemOver .contextMenuIcon {
background-color: #B6BDD2;
}
 
.contextMenuIcon {
background-color: #F0F0EE;
}
 
.contextMenuItemDisabled img {
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);
-moz-opacity:0.3;
opacity: 0.3;
}
 
.contextMenuText {
font-family: Tahoma, Verdana, Arial, Helvetica;
font-size: 11px;
line-height: 20px;
}
 
.contextMenuItemDisabled {
color: #AAAAAA;
}
 
.contextMenuText a {
display: block;
line-height: 20px;
width: 100%;
text-decoration: none;
color: black;
font-weight: normal;
margin: 0;
padding: 0;
}
 
.contextMenuText a:hover {
background-color: #B6BDD2;
text-decoration: none !important;
font-weight: normal;
margin: 0;
padding: 0;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/contextmenu/readme.txt
New file
0,0 → 1,0
Check the TinyMCE documentation for details on this plugin.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/contextmenu/editor_plugin.js
New file
0,0 → 1,0
if(!tinyMCE.settings['contextmenu_skip_plugin_css']){tinyMCE.loadCSS(tinyMCE.baseURL+"/plugins/contextmenu/css/contextmenu.css")}var TinyMCE_ContextMenuPlugin={_contextMenu:null,getInfo:function(){return{longname:'Context menus',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(tinyMCE.isMSIE5_0&&tinyMCE.isOpera)return;TinyMCE_ContextMenuPlugin._contextMenu=new TinyMCE_ContextMenu({commandhandler:"TinyMCE_ContextMenuPlugin._commandHandler",spacer_image:tinyMCE.baseURL+"/plugins/contextmenu/images/spacer.gif"});tinyMCE.addEvent(inst.getDoc(),"click",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(inst.getDoc(),"keypress",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(inst.getDoc(),"keydown",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(document,"click",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(document,"keypress",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(document,"keydown",TinyMCE_ContextMenuPlugin._hideContextMenu);if(tinyMCE.isGecko){tinyMCE.addEvent(inst.getDoc(),"contextmenu",function(e){TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE?inst.contentWindow.event:e,inst)})}else tinyMCE.addEvent(inst.getDoc(),"contextmenu",TinyMCE_ContextMenuPlugin._onContextMenu)},_onContextMenu:function(e){var elm=tinyMCE.isMSIE?e.srcElement:e.target;var targetInst,body;if((body=tinyMCE.getParentElement(elm,"body"))!=null){for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;if(body==inst.getBody()){targetInst=inst;break}}return TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE?targetInst.contentWindow.event:e,targetInst)}},_showContextMenu:function(e,inst){if(e.ctrlKey)return true;function getAttrib(elm,name){return elm.getAttribute(name)?elm.getAttribute(name):""}var x,y,elm,contextMenu;var pos=tinyMCE.getAbsPosition(inst.iframeElement);x=tinyMCE.isMSIE?e.screenX:pos.absLeft+(e.pageX-inst.getBody().scrollLeft);y=tinyMCE.isMSIE?e.screenY:pos.absTop+(e.pageY-inst.getBody().scrollTop);elm=tinyMCE.isMSIE?e.srcElement:e.target;contextMenu=this._contextMenu;contextMenu.inst=inst;window.setTimeout(function(){var theme=tinyMCE.getParam("theme");contextMenu.clearAll();var sel=inst.selection.getSelectedText().length!=0||elm.nodeName=="IMG";contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/cut.gif","$lang_cut_desc","Cut","",!sel);contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/copy.gif","$lang_copy_desc","Copy","",!sel);contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/paste.gif","$lang_paste_desc","Paste","",false);if(sel||(elm?(elm.nodeName=='A'&&tinyMCE.getAttrib(elm,'name')=='')||(elm.nodeName=='IMG'):false)){contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/themes/advanced/images/link.gif","$lang_link_desc",inst.hasPlugin("advlink")?"mceAdvLink":"mceLink");contextMenu.addItem(tinyMCE.baseURL+"/themes/advanced/images/unlink.gif","$lang_unlink_desc","unlink","",(elm?(elm.nodeName!='A')&&(elm.nodeName!='IMG'):true))}elm=tinyMCE.getParentElement(elm,"img,table,td"+(inst.hasPlugin("advhr")?',hr':''));if(elm){switch(elm.nodeName){case"IMG":contextMenu.addSeparator();if(tinyMCE.hasPlugin('flash')&&tinyMCE.getAttrib(elm,'class').indexOf('mceItemFlash')!=-1)contextMenu.addItem(tinyMCE.baseURL+"/plugins/flash/images/flash.gif","$lang_flash_props","mceFlash");else if(tinyMCE.hasPlugin('media')&&/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(elm,'class')))contextMenu.addItem(tinyMCE.baseURL+"/plugins/flash/images/flash.gif","$lang_media_title","mceMedia");else contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/image.gif","$lang_image_props_desc",inst.hasPlugin("advimage")?"mceAdvImage":"mceImage");break;case"HR":contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/advhr/images/advhr.gif","$lang_insert_advhr_desc","mceAdvancedHr");break;case"TABLE":case"TD":if(inst.hasPlugin("table")){var colspan=(elm.nodeName=="TABLE")?"":getAttrib(elm,"colspan");var rowspan=(elm.nodeName=="TABLE")?"":getAttrib(elm,"rowspan");colspan=colspan==""?"1":colspan;rowspan=rowspan==""?"1":rowspan;contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/cut.gif","$lang_table_cut_row_desc","mceTableCutRow");contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/copy.gif","$lang_table_copy_row_desc","mceTableCopyRow");contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/paste.gif","$lang_table_paste_row_before_desc","mceTablePasteRowBefore","",inst.tableRowClipboard==null);contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/paste.gif","$lang_table_paste_row_after_desc","mceTablePasteRowAfter","",inst.tableRowClipboard==null);contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table.gif","$lang_table_desc","mceInsertTable","insert");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table.gif","$lang_table_props_desc","mceInsertTable");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_cell_props.gif","$lang_table_cell_desc","mceTableCellProps");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_delete.gif","$lang_table_del","mceTableDelete");contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_row_props.gif","$lang_table_row_desc","mceTableRowProps");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_row_before.gif","$lang_table_row_before_desc","mceTableInsertRowBefore");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_row_after.gif","$lang_table_row_after_desc","mceTableInsertRowAfter");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_delete_row.gif","$lang_table_delete_row_desc","mceTableDeleteRow");contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_col_before.gif","$lang_table_col_before_desc","mceTableInsertColBefore");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_col_after.gif","$lang_table_col_after_desc","mceTableInsertColAfter");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_delete_col.gif","$lang_table_delete_col_desc","mceTableDeleteCol");contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_split_cells.gif","$lang_table_split_cells_desc","mceTableSplitCells","",(colspan=="1"&&rowspan=="1"));contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_merge_cells.gif","$lang_table_merge_cells_desc","mceTableMergeCells","",false)}break}}else{if(inst.hasPlugin("table")){contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table.gif","$lang_table_desc","mceInsertTable","insert")}}contextMenu.show(x,y)},10);tinyMCE.cancelEvent(e);return false},_hideContextMenu:function(){if(TinyMCE_ContextMenuPlugin._contextMenu)TinyMCE_ContextMenuPlugin._contextMenu.hide()},_commandHandler:function(command,value){var cm=TinyMCE_ContextMenuPlugin._contextMenu;cm.hide();var ui=false;if(command=="mceInsertTable"||command=="mceTableCellProps"||command=="mceTableRowProps"||command=="mceTableMergeCells")ui=true;if(command=="Paste")value=null;if(tinyMCE.getParam("dialog_type")=="modal"&&tinyMCE.isMSIE){window.setTimeout(function(){cm.inst.execCommand(command,ui,value)},100)}else cm.inst.execCommand(command,ui,value)}};tinyMCE.addPlugin("contextmenu",TinyMCE_ContextMenuPlugin);function TinyMCE_ContextMenu(settings){var doc,self=this;function defParam(key,def_val){settings[key]=typeof(settings[key])!="undefined"?settings[key]:def_val}this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.contextMenuDiv=document.createElement("div");this.contextMenuDiv.className="contextMenu";this.contextMenuDiv.setAttribute("class","contextMenu");this.contextMenuDiv.style.display="none";this.contextMenuDiv.style.position='absolute';this.contextMenuDiv.style.zindex=1000;this.contextMenuDiv.style.left='0';this.contextMenuDiv.style.top='0';this.contextMenuDiv.unselectable="on";document.body.appendChild(this.contextMenuDiv);defParam("commandhandler","");defParam("spacer_image","images/spacer.gif");this.items=new Array();this.settings=settings;this.html="";if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0&&!tinyMCE.isOpera){this.pop=window.createPopup();doc=this.pop.document;doc.open();doc.write('<html><head><link href="'+tinyMCE.baseURL+'/plugins/contextmenu/css/contextmenu.css" rel="stylesheet" type="text/css" /></head><body unselectable="yes" class="contextMenuIEPopup"></body></html>');doc.close()}};TinyMCE_ContextMenu.prototype={clearAll:function(){this.html="";this.contextMenuDiv.innerHTML=""},addSeparator:function(){this.html+='<tr class="contextMenuItem"><td class="contextMenuIcon"><img src="'+this.settings['spacer_image']+'" width="20" height="1" class="contextMenuImage" /></td><td><img class="contextMenuSeparator" width="1" height="1" src="'+this.settings['spacer_image']+'" /></td></tr>'},addItem:function(icon,title,command,value,disabled){if(title.charAt(0)=='$')title=tinyMCE.getLang(title.substring(1));var onMouseDown='';var html='';if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0)onMouseDown='contextMenu.execCommand(\''+command+'\', \''+value+'\');return false;';else onMouseDown=this.settings['commandhandler']+'(\''+command+'\', \''+value+'\');return false;';if(icon=="")icon=this.settings['spacer_image'];if(!disabled)html+='<tr class="contextMenuItem">';else html+='<tr class="contextMenuItemDisabled">';html+='<td class="contextMenuIcon"><img src="'+icon+'" width="20" height="20" class="contextMenuImage" /></td>';html+='<td><div class="contextMenuText">';html+='<a href="javascript:void(0);" onclick="'+onMouseDown+'" onmousedown="return false;">&#160;';html+=title;html+='&#160;</a>';html+='</div></td>';html+='</tr>';this.html+=html},show:function(x,y){var vp,width,height,yo;if(this.html=="")return;var html='';html+='<a href="#"></a><table border="0" cellpadding="0" cellspacing="0">';html+=this.html;html+='</table>';this.contextMenuDiv.innerHTML=html;this.contextMenuDiv.style.display="block";width=this.contextMenuDiv.offsetWidth;height=this.contextMenuDiv.offsetHeight;this.contextMenuDiv.style.display="none";if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0&&!tinyMCE.isOpera){this.pop.document.body.innerHTML='<div class="contextMenu">'+html+"</div>";this.pop.document.tinyMCE=tinyMCE;this.pop.document.contextMenu=this;this.pop.show(x,y,width,height)}else{vp=this.getViewPort();yo=tinyMCE.isMSIE5_0?document.body.scrollTop:self.pageYOffset;this.contextMenuDiv.style.left=(x>vp.left+vp.width-width?vp.left+vp.width-width:x)+'px';this.contextMenuDiv.style.top=(y>vp.top+vp.height-height?vp.top+vp.height-height:y)+'px';this.contextMenuDiv.style.display="block"}},getViewPort:function(){return{left:self.pageXOffset||self.document.documentElement.scrollLeft||self.document.body.scrollLeft,top:self.pageYOffset||self.document.documentElement.scrollTop||self.document.body.scrollTop,width:document.documentElement.offsetWidth||document.body.offsetWidth,height:self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight}},hide:function(){if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0&&!tinyMCE.isOpera)this.pop.hide();else this.contextMenuDiv.style.display="none"},execCommand:function(command,value){eval(this.settings['commandhandler']+"(command, value);")}};
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/readme.txt
New file
0,0 → 1,0
This is the location you place TinyMCE plugins.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/template/langs/en.js
New file
0,0 → 1,16
// UK lang variables
 
tinyMCE.addToLang('template',{
title : 'Templates',
label : 'Template',
desc_label : 'Description',
desc : 'Insert predefined template content',
select : 'Select a template',
preview : 'Preview',
warning : 'Warning: Updating a template with a different one may cause data loss.',
def_date_format : '%Y-%m-%d %H:%M:%S',
months_long : new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"),
months_short : new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"),
day_long : new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"),
day_short : new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/template/images/template.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/template/images/template.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/template/editor_plugin_src.js
New file
0,0 → 1,551
/**
* $Id: editor_plugin_src.js 162 2007-01-03 16:16:52Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
tinyMCE.importPluginLanguagePack('template');
 
var TinyMCE_TemplatePlugin = {
getInfo : function() {
return {
longname : 'Template plugin',
author : 'Moxiecode Systems AB',
authorurl : 'http://www.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
initInstance : function(inst) {
var cdate, mdate, content, x = 0, key, value, rvals, ds = inst.getData('template');
 
// ensure the required elements and sttributes are added
//inst.cleanup.addRuleStr('*[' + TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR + '],div[title,tsrc]');
 
//setup template content functions
// creation date and modified date classes
cdate = tinyMCE.getParam("template_cdate_classes", '').split(/\s+/);
mdate = tinyMCE.getParam("template_mdate_classes", '').split(/\s+/);
 
// classes that specify where selected content should go
content = tinyMCE.getParam("template_selected_content_classes", '').split(/\s+/);
 
for (x = 0; x < cdate.length; x++)
TinyMCE_TemplatePlugin.functions[cdate[x]] = TinyMCE_TemplatePlugin.functions['cdate'];
 
for (x = 0; x < mdate.length; x++)
TinyMCE_TemplatePlugin.functions[mdate[x]] = TinyMCE_TemplatePlugin.functions['mdate'];
 
for (x = 0; x < content.length; x++)
TinyMCE_TemplatePlugin.functions[content[x]] = TinyMCE_TemplatePlugin.functions['selectedContent'];
 
// special template functions for replacing template content
rvals = tinyMCE.getParam("template_replace_values", false);
for (key in rvals) {
value = rvals[key];
 
if (typeof value == "function")
TinyMCE_TemplatePlugin.functions[key] = value;
else
TinyMCE_TemplatePlugin.functions[key] = TinyMCE_TemplatePlugin.functions['generateReplacer'](value);
}
 
// Setup replace_items
rvals = tinyMCE.getParam("template_replace_values", false);
ds.replace_items = {};
 
for (key in rvals)
ds.replace_items[key] = rvals[key];
 
inst.addShortcut('ctrl', 't', 'lang_template_desc', 'mceTemplate');
 
// Setup data storage
ds.currentAction = "insert";
ds.currentTmplNode = null;
},
 
getControlHTML : function(cn) {
switch (cn) {
case "template":
return tinyMCE.getButtonHTML(cn, 'lang_template_desc', '{$pluginurl}/images/template.gif', 'mceTemplate', true);
}
 
return "";
},
 
execCommand : function(editor_id, element, command, user_interface, value) {
var nodeArray, current, newTmpl, x, inst = tinyMCE.getInstanceById(editor_id), ds = inst.getData('template'), telm;
 
switch (command) {
case "mceTemplate":
if (user_interface) {
// called from toolbar button - show the popup
tinyMCE.openWindow({
file : '../../plugins/template/template.htm', // Relative to theme
width : tinyMCE.getParam('template_popup_width', 750),
height : tinyMCE.getParam('template_popup_height', 600)
}, {editor_id : editor_id, resizable : "yes", scrollbars : "no", pluginObj : TinyMCE_TemplatePlugin});
} else {
// internal command do the template stuff
 
// get the returned HTML string from the pop-up and appened it to a DIV element
telm = TinyMCE_TemplatePlugin._convertToNode(value.body);
 
// Find template body
nodeArray = tinyMCE.selectElements(telm, 'div', function(n) {
return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL);
});
 
telm = nodeArray.length > 0 ? nodeArray[0] : null;
nodeArray = [];
 
if (ds.currentAction == "insert") {
//insert new template after applying all the template content functions
 
// Is it a template or snippet
if (telm) {
tinyMCE.execCommand('mceBeginUndoLevel');
ds.currentAction = "insert-new";
TinyMCE_TemplatePlugin._insertTemplate(editor_id, telm, value.title, value.tsrc, true);
ds.currentAction == "insert";
tinyMCE.execCommand('mceEndUndoLevel');
tinyMCE.execInstanceCommand(editor_id, 'mceCleanup', false);
} else
tinyMCE.execCommand('mceInsertContent', false, this._replaceValues(value.body));
} else {
// First collect the selected template in the editor
nodeArray = TinyMCE_TemplatePlugin._collectTemplateElements(ds.currentTmplNode);
current = [];
newTmpl = [];
tinyMCE.getNodeTree(telm, newTmpl);
 
for (x=0; x<nodeArray.length; x++)
tinyMCE.getNodeTree(nodeArray[x], current);
 
/**
* inner function used in the loop below.
* compares the supplied HTML element to the new template to:
* - find a match with the new template and copy the element's content over
* - find no match and indicate content will be lost
*/
var _test = function(elm) {
var replaced = true;
 
if (elm.className) {
var names = elm.className.split(/\s+/), c, n;
 
for (c = 0; c<names.length; c++) {
if (names[c].match(/^mce/i))
continue; // ignore all internal class names
 
for (n=0; n<newTmpl.length; n++){
replaced = false;
 
if (newTmpl[n].className && newTmpl[n].className.match(new RegExp(names[c], "gi"))) {
newTmpl[n].innerHTML = elm.innerHTML;
//if(tinyMCE.getAttrib(elm,TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR,"") != "") {
// tinyMCE.setAttrib(newTmpl[n], TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR, tinyMCE.getAttrib(elm,TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR));
//}
replaced = true;
break;
}
 
}
}
}
return replaced;
};
 
// comparison loop - first mis-match alerts user for confirmation.
var cont = true;
var asked = false;
 
for (x = 0; x < current.length; x++) {
if(!_test(current[x])) {
cont = (asked || confirm("The new template has less elements than the currently selected content.\nIf you proceed you will loose content.\nAre you sure you want to proceed?", "Proceed?"));
asked = true;
 
if (!cont)
break;
}
};
 
// apply replacement if allowed to
if (cont) {
tinyMCE.execCommand('mceBeginUndoLevel');
TinyMCE_TemplatePlugin._replaceTemplateContent(current[0], editor_id, telm, value.title, value.tsrc);
tinyMCE.execCommand('mceEndUndoLevel');
tinyMCE.execInstanceCommand(editor_id, 'mceCleanup', false);
}
}
 
tinyMCE.triggerNodeChange(true);
}
 
return true;
}
 
return false;
},
 
handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
var inst = tinyMCE.getInstanceById(editor_id), ds = inst.getData('template');
 
if (tinyMCE.hasCSSClass(node, TinyMCE_TemplatePlugin.TMPL_ELEMENT) || tinyMCE.hasCSSClass(node.parentNode, TinyMCE_TemplatePlugin.TMPL_ELEMENT)) {
tinyMCE.switchClass(editor_id + '_template', 'mceButtonSelected');
ds.currentAction = "update";
ds.currentTmplNode = node;
 
return true;
}
 
ds.currentAction = "insert";
ds.currentTmplNode = null;
tinyMCE.switchClass(editor_id + '_template', 'mceButtonNormal');
 
return false;
},
 
cleanup : function(type, content, inst) {
var nodes = [];
 
switch (type) {
case "get_from_editor":
// replace the opening wrapper div tag with a HTML comment
content = content.replace(
new RegExp('<div class="' + TinyMCE_TemplatePlugin.TMPL + '">', 'gi'),
'<!-- ' + TinyMCE_TemplatePlugin.TMPL_BEGINS + ' -->'
);
 
// delete any empty template wrappers
content = content.replace(
new RegExp('<div class="' + TinyMCE_TemplatePlugin.TMPL + '">(\s|&nbsp;|&#160;)?(<!-- ' + TinyMCE_TemplatePlugin.TMPL_ENDS + ' -->|\s)?</div>', 'gi'),
''
);
 
// replace the closing wrapper tag
content = content.replace(
new RegExp('<!-- ' + TinyMCE_TemplatePlugin.TMPL_ENDS + ' --></div>', 'gi'),
'<!-- ' + TinyMCE_TemplatePlugin.TMPL_ENDS + ' -->'
);
 
break;
 
case "insert_to_editor":
// replace HTML comment with DIV wrapper
content = content.replace(
new RegExp('<!-- ' + TinyMCE_TemplatePlugin.TMPL_BEGINS + ' -->', 'gi'),
'<div class="' + TinyMCE_TemplatePlugin.TMPL + '">'
);
 
content = content.replace(
new RegExp('<!-- ' + TinyMCE_TemplatePlugin.TMPL_ENDS + ' -->', 'gi'),
'<!-- ' + TinyMCE_TemplatePlugin.TMPL_ENDS + ' --></div>'
);
 
break;
 
case "get_from_editor_dom":
// apply template content replacement functions
nodes = tinyMCE.selectNodes(content, function(n) {
return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL_ELEMENT);
}
);
 
TinyMCE_TemplatePlugin._applyFunctions(nodes, type);
 
break;
 
case "insert_to_editor_dom":
// apply template content replacement functions
nodes = tinyMCE.selectNodes(content, function(n) {
return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL_ELEMENT);
}
);
 
TinyMCE_TemplatePlugin._applyFunctions(nodes, type);
 
break;
}
 
return content;
},
 
// Private plugin internal methods
 
/**
* Creates a HTML DIV element and sets the innerHTML to equal the temlate innerHTML so that the template can be manipulated as DOM nodes.
*
* @param {string} Template innerHTML
* @return a HTML Element
* @type HTMLElement
*/
_convertToNode : function(html) {
var elm = document.createElement('div');
 
elm.innerHTML = html;
 
return elm;
},
 
/**
* pass an array of template html elements and they will have the template class name added and any template functions applied
*
* @param {array} template HTML elements
* @return array of template HTML elements
* @type array
*/
_prepareTemplateContent : function(elms) {
var x, n, nodes = [];
 
if (!elms)
return {};
 
if (!elms.length)
elms = [elms];
 
for (x = 0; x<elms.length; x++)
tinyMCE.getNodeTree(elms[x], nodes, 1);
 
for (n = 0; n<nodes.length; n++) {
tinyMCE.addCSSClass(nodes[n], TinyMCE_TemplatePlugin.TMPL_ELEMENT);
TinyMCE_TemplatePlugin._applyFunctions(nodes[n], TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT);
}
 
return elms;
},
 
_replaceValues : function(s) {
var t = this, ds = tinyMCE.selectedInstance.getData('template');
 
return s.replace(/\{\$([^\}]+)\}/g, function(a, b) {
var it = ds.replace_items[b];
 
if (it) {
// Only supports text for now
if (typeof(it) != 'function')
return it;
}
 
return b;
});
},
 
/**
* Applies any special functions to the template elements
*
* @param {array} template HTML elements
* @return array of template HTML elements
* @type array
*/
_applyFunctions : function(elms, editor_event) {
var x, elm, names, c, f;
 
if (!elms)
return {};
 
if (!elms.length)
elms = [elms];
 
for(x = 0; x < elms.length; x++) {
elm = elms[x];
 
if (elm.className){
names = elm.className.split(/\s+/);
 
for (c = 0; c < names.length; c++){
if (names[c] == TinyMCE_TemplatePlugin.TMPL_ELEMENT)
continue;
 
f = (TinyMCE_TemplatePlugin.functions[names[c]] ? TinyMCE_TemplatePlugin.functions[names[c]] : TinyMCE_TemplatePlugin.functions['blank']);
f(elm, editor_event);
}
}
}
 
return elms;
},
 
/**
* Given one node reference this function will collect all the nodes of the template to which it belongs.
* It does this by finding the parent template wrapper DIV and returning all child nodes.
*
* @param {HTMLElement} a HTMLElement which is part of a template
* @return array of template HTML elements
* @type array
*/
_collectTemplateElements : function(node) {
var nodeArray = [], p;
 
p = tinyMCE.getParentElement(node, 'DIV', function(n) {
return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL);
});
 
if (p)
tinyMCE.getNodeTree(p, nodeArray);
 
return nodeArray;
},
 
/**
* Simply calls TinyMCE_TemplatePlugin._deleteTemplateContent and then TinyMCE_TemplatePlugin._insertTemplate
*
* @param {HTMLElement} currently selected template node in editor
* @param {string} id of editor instance
* @param {HTMLElement} template contents as a HTMLElement (the parent DIV wrapper)
* @param {string} title of template (unused as yet)
* @param {string} source URI of the template file (unused as yet)
* @return array of template HTML elements
* @type array
*/
_replaceTemplateContent : function(currentNode, editor_id, newTemplate, title, tsrc) {
TinyMCE_TemplatePlugin._deleteTemplateContent(currentNode);
TinyMCE_TemplatePlugin._insertTemplate(editor_id, newTemplate, title, tsrc, false);
},
 
/**
* Deletes a template from the editor content
* Finds the parent DIV wrapper and deletes it and all children
* @param {HTMLElement} currently selected template node in editor
*/
_deleteTemplateContent : function(node) {
var p = tinyMCE.getParentElement(node, 'DIV', function(n) {
return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL);
});
 
if (p)
p.parentNode.removeChild(p, true);
},
 
/**
* Inserts a template into the specified editor
*
* @param {string} id of editor instance
* @param {HTMLElement} template contents as a HTMLElement (the parent DIV wrapper)
* @param {string} title of template (unused as yet)
* @param {string} source URI of the template file (unused as yet)
*/
_insertTemplate : function(editor_id, elm, title, tsrc, incComments) {
var html;
 
TinyMCE_TemplatePlugin._prepareTemplateContent(elm);
 
html = '<div class="' + TinyMCE_TemplatePlugin.TMPL + '">';
html += elm.innerHTML;
html += '<!-- ' + TinyMCE_TemplatePlugin.TMPL_ENDS + ' --></div>';
 
tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, html);
},
 
/**
* template functions - functions for modifying template content
*/
functions : {
blank : function(elm, editor_event) {},
 
cdate : function(elm, editor_event) {
var d, dsrc;
 
if (editor_event != TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT)
return;
 
d = new Date();
// find out if the creation date was previously stored
dsrc = elm.innerHTML.match(new RegExp("<!-- " + TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR + ":(.*) -->", "gi"));
 
if (dsrc)
d = new Date(RegExp.$1);
 
elm.innerHTML = TinyMCE_TemplatePlugin._getDateTime(d, tinyMCE.getParam("template_cdate_format", tinyMCE.getLang("lang_template_def_date_format")));
//now we have to store the date value in a format easily read again, in case a future template change changes the date format...
elm.innerHTML += "<!-- " + TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR + ":" + d.toUTCString() + " -->";
},
 
mdate : function(elm, editor_event) {
var d = new Date();
elm.innerHTML = TinyMCE_TemplatePlugin._getDateTime(d, tinyMCE.getParam("template_mdate_format", tinyMCE.getLang("lang_template_def_date_format")));
},
 
/**
* This will insert the currently selected editor content into the template element.
* It only does this if the template inserted is a new one and if the element does not have the special class.
* The special class name prevents this from happening more than once.
*/
selectedContent : function(elm, editor_event) {
var ds = tinyMCE.selectedInstance.getData('template');
if (editor_event != TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT)
return;
 
if (ds.currentAction == "insert-new" && !tinyMCE.hasCSSClass(elm, TinyMCE_TemplatePlugin.TMPL_SEL_HTML_DONE)) {
elm.innerHTML = tinyMCE.selectedInstance.selection.getSelectedHTML();
tinyMCE.addCSSClass(elm, TinyMCE_TemplatePlugin.TMPL_SEL_HTML_DONE);
}
},
 
/**
* When the plugin is initialised this generates the functions that insert configured strings into template elements.
*/
generateReplacer : function(s) {
return function(elm, editor_event) {elm.innerHTML = "" + s;};
}
},
 
/**
* formats a date according to the format string - straight from the 'insert date/time' plugin
*
* @param {Date} date object
* @param {string} format string
* @return formatted date
* @type string
*/
_getDateTime : function(d,fmt) {
if (!fmt)
return "";
 
function addZeros(value, len) {
var i;
 
value = "" + value;
 
if (value.length < len) {
for (i=0; i<(len-value.length); i++)
value = "0" + value;
}
 
return value;
}
 
fmt = fmt.replace("%D", "%m/%d/%y");
fmt = fmt.replace("%r", "%I:%M:%S %p");
fmt = fmt.replace("%Y", "" + d.getFullYear());
fmt = fmt.replace("%y", "" + d.getYear());
fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
fmt = fmt.replace("%B", "" + tinyMCE.getLang("lang_template_months_long")[d.getMonth()]);
fmt = fmt.replace("%b", "" + tinyMCE.getLang("lang_template_months_short")[d.getMonth()]);
fmt = fmt.replace("%A", "" + tinyMCE.getLang("lang_template_day_long")[d.getDay()]);
fmt = fmt.replace("%a", "" + tinyMCE.getLang("lang_template_day_short")[d.getDay()]);
fmt = fmt.replace("%%", "%");
 
return fmt;
},
 
TMPL_ELEMENT : 'mceTmplElm',
TMPL : 'mceTmpl',
TMPL_BEGINS : 'mceTmplBegins',
TMPL_SEL_HTML_DONE : 'mceSelHTMLDone',
TMPL_ENDS : 'mceTmplEnds',
TMPL_DATE_SRC_ATTR : 'mcetmpldtesrc',
TMPL_TEMPLATE_EVENT : 'prepare_template'
};
 
tinyMCE.addPlugin("template", TinyMCE_TemplatePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/template/css/template.css
New file
0,0 → 1,23
#frmbody {
padding: 10px;
background-color: #FFF;
border: 1px solid #CCC;
}
 
.frmRow {
margin-bottom: 10px;
}
 
#templatesrc {
border: none;
width: 320px;
height: 240px;
}
 
.title {
padding-bottom: 5px;
}
 
.mceActionPanel {
padding-top: 5px;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/template/blank.htm
New file
0,0 → 1,23
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>blank_page</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript">
var tinyMCE = parent.tinyMCE, css = tinyMCE.getParam("content_css").split(','), i, u;
 
// Load content CSS files
for (i=0; i<css.length; i++) {
u = css[i];
 
// Fix relative
if (u.charAt(0) != '/' && u.indexOf('://') == -1)
u = tinyMCE.documentBasePath + "/" + u;
 
document.write('<link href="' + u + '" rel="stylesheet" type="text/css" />');
}
</script>
</head>
<body id="mceTemplatePreview" class="mceContentBody">
 
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/template/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('template');var TinyMCE_TemplatePlugin={getInfo:function(){return{longname:'Template plugin',author:'Moxiecode Systems AB',authorurl:'http://www.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){var cdate,mdate,content,x=0,key,value,rvals,ds=inst.getData('template');cdate=tinyMCE.getParam("template_cdate_classes",'').split(/\s+/);mdate=tinyMCE.getParam("template_mdate_classes",'').split(/\s+/);content=tinyMCE.getParam("template_selected_content_classes",'').split(/\s+/);for(x=0;x<cdate.length;x++)TinyMCE_TemplatePlugin.functions[cdate[x]]=TinyMCE_TemplatePlugin.functions['cdate'];for(x=0;x<mdate.length;x++)TinyMCE_TemplatePlugin.functions[mdate[x]]=TinyMCE_TemplatePlugin.functions['mdate'];for(x=0;x<content.length;x++)TinyMCE_TemplatePlugin.functions[content[x]]=TinyMCE_TemplatePlugin.functions['selectedContent'];rvals=tinyMCE.getParam("template_replace_values",false);for(key in rvals){value=rvals[key];if(typeof value=="function")TinyMCE_TemplatePlugin.functions[key]=value;else TinyMCE_TemplatePlugin.functions[key]=TinyMCE_TemplatePlugin.functions['generateReplacer'](value)}rvals=tinyMCE.getParam("template_replace_values",false);ds.replace_items={};for(key in rvals)ds.replace_items[key]=rvals[key];inst.addShortcut('ctrl','t','lang_template_desc','mceTemplate');ds.currentAction="insert";ds.currentTmplNode=null},getControlHTML:function(cn){switch(cn){case"template":return tinyMCE.getButtonHTML(cn,'lang_template_desc','{$pluginurl}/images/template.gif','mceTemplate',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){var nodeArray,current,newTmpl,x,inst=tinyMCE.getInstanceById(editor_id),ds=inst.getData('template'),telm;switch(command){case"mceTemplate":if(user_interface){tinyMCE.openWindow({file:'../../plugins/template/template.htm',width:tinyMCE.getParam('template_popup_width',750),height:tinyMCE.getParam('template_popup_height',600)},{editor_id:editor_id,resizable:"yes",scrollbars:"no",pluginObj:TinyMCE_TemplatePlugin})}else{telm=TinyMCE_TemplatePlugin._convertToNode(value.body);nodeArray=tinyMCE.selectElements(telm,'div',function(n){return tinyMCE.hasCSSClass(n,TinyMCE_TemplatePlugin.TMPL)});telm=nodeArray.length>0?nodeArray[0]:null;nodeArray=[];if(ds.currentAction=="insert"){if(telm){tinyMCE.execCommand('mceBeginUndoLevel');ds.currentAction="insert-new";TinyMCE_TemplatePlugin._insertTemplate(editor_id,telm,value.title,value.tsrc,true);ds.currentAction=="insert";tinyMCE.execCommand('mceEndUndoLevel');tinyMCE.execInstanceCommand(editor_id,'mceCleanup',false)}else tinyMCE.execCommand('mceInsertContent',false,this._replaceValues(value.body))}else{nodeArray=TinyMCE_TemplatePlugin._collectTemplateElements(ds.currentTmplNode);current=[];newTmpl=[];tinyMCE.getNodeTree(telm,newTmpl);for(x=0;x<nodeArray.length;x++)tinyMCE.getNodeTree(nodeArray[x],current);var _test=function(elm){var replaced=true;if(elm.className){var names=elm.className.split(/\s+/),c,n;for(c=0;c<names.length;c++){if(names[c].match(/^mce/i))continue;for(n=0;n<newTmpl.length;n++){replaced=false;if(newTmpl[n].className&&newTmpl[n].className.match(new RegExp(names[c],"gi"))){newTmpl[n].innerHTML=elm.innerHTML;replaced=true;break}}}}return replaced};var cont=true;var asked=false;for(x=0;x<current.length;x++){if(!_test(current[x])){cont=(asked||confirm("The new template has less elements than the currently selected content.\nIf you proceed you will loose content.\nAre you sure you want to proceed?","Proceed?"));asked=true;if(!cont)break}};if(cont){tinyMCE.execCommand('mceBeginUndoLevel');TinyMCE_TemplatePlugin._replaceTemplateContent(current[0],editor_id,telm,value.title,value.tsrc);tinyMCE.execCommand('mceEndUndoLevel');tinyMCE.execInstanceCommand(editor_id,'mceCleanup',false)}}tinyMCE.triggerNodeChange(true)}return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var inst=tinyMCE.getInstanceById(editor_id),ds=inst.getData('template');if(tinyMCE.hasCSSClass(node,TinyMCE_TemplatePlugin.TMPL_ELEMENT)||tinyMCE.hasCSSClass(node.parentNode,TinyMCE_TemplatePlugin.TMPL_ELEMENT)){tinyMCE.switchClass(editor_id+'_template','mceButtonSelected');ds.currentAction="update";ds.currentTmplNode=node;return true}ds.currentAction="insert";ds.currentTmplNode=null;tinyMCE.switchClass(editor_id+'_template','mceButtonNormal');return false},cleanup:function(type,content,inst){var nodes=[];switch(type){case"get_from_editor":content=content.replace(new RegExp('<div class="'+TinyMCE_TemplatePlugin.TMPL+'">','gi'),'<!-- '+TinyMCE_TemplatePlugin.TMPL_BEGINS+' -->');content=content.replace(new RegExp('<div class="'+TinyMCE_TemplatePlugin.TMPL+'">(\s|&nbsp;|&#160;)?(<!-- '+TinyMCE_TemplatePlugin.TMPL_ENDS+' -->|\s)?</div>','gi'),'');content=content.replace(new RegExp('<!-- '+TinyMCE_TemplatePlugin.TMPL_ENDS+' --></div>','gi'),'<!-- '+TinyMCE_TemplatePlugin.TMPL_ENDS+' -->');break;case"insert_to_editor":content=content.replace(new RegExp('<!-- '+TinyMCE_TemplatePlugin.TMPL_BEGINS+' -->','gi'),'<div class="'+TinyMCE_TemplatePlugin.TMPL+'">');content=content.replace(new RegExp('<!-- '+TinyMCE_TemplatePlugin.TMPL_ENDS+' -->','gi'),'<!-- '+TinyMCE_TemplatePlugin.TMPL_ENDS+' --></div>');break;case"get_from_editor_dom":nodes=tinyMCE.selectNodes(content,function(n){return tinyMCE.hasCSSClass(n,TinyMCE_TemplatePlugin.TMPL_ELEMENT)});TinyMCE_TemplatePlugin._applyFunctions(nodes,type);break;case"insert_to_editor_dom":nodes=tinyMCE.selectNodes(content,function(n){return tinyMCE.hasCSSClass(n,TinyMCE_TemplatePlugin.TMPL_ELEMENT)});TinyMCE_TemplatePlugin._applyFunctions(nodes,type);break}return content},_convertToNode:function(html){var elm=document.createElement('div');elm.innerHTML=html;return elm},_prepareTemplateContent:function(elms){var x,n,nodes=[];if(!elms)return{};if(!elms.length)elms=[elms];for(x=0;x<elms.length;x++)tinyMCE.getNodeTree(elms[x],nodes,1);for(n=0;n<nodes.length;n++){tinyMCE.addCSSClass(nodes[n],TinyMCE_TemplatePlugin.TMPL_ELEMENT);TinyMCE_TemplatePlugin._applyFunctions(nodes[n],TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT)}return elms},_replaceValues:function(s){var t=this,ds=tinyMCE.selectedInstance.getData('template');return s.replace(/\{\$([^\}]+)\}/g,function(a,b){var it=ds.replace_items[b];if(it){if(typeof(it)!='function')return it}return b})},_applyFunctions:function(elms,editor_event){var x,elm,names,c,f;if(!elms)return{};if(!elms.length)elms=[elms];for(x=0;x<elms.length;x++){elm=elms[x];if(elm.className){names=elm.className.split(/\s+/);for(c=0;c<names.length;c++){if(names[c]==TinyMCE_TemplatePlugin.TMPL_ELEMENT)continue;f=(TinyMCE_TemplatePlugin.functions[names[c]]?TinyMCE_TemplatePlugin.functions[names[c]]:TinyMCE_TemplatePlugin.functions['blank']);f(elm,editor_event)}}}return elms},_collectTemplateElements:function(node){var nodeArray=[],p;p=tinyMCE.getParentElement(node,'DIV',function(n){return tinyMCE.hasCSSClass(n,TinyMCE_TemplatePlugin.TMPL)});if(p)tinyMCE.getNodeTree(p,nodeArray);return nodeArray},_replaceTemplateContent:function(currentNode,editor_id,newTemplate,title,tsrc){TinyMCE_TemplatePlugin._deleteTemplateContent(currentNode);TinyMCE_TemplatePlugin._insertTemplate(editor_id,newTemplate,title,tsrc,false)},_deleteTemplateContent:function(node){var p=tinyMCE.getParentElement(node,'DIV',function(n){return tinyMCE.hasCSSClass(n,TinyMCE_TemplatePlugin.TMPL)});if(p)p.parentNode.removeChild(p,true)},_insertTemplate:function(editor_id,elm,title,tsrc,incComments){var html;TinyMCE_TemplatePlugin._prepareTemplateContent(elm);html='<div class="'+TinyMCE_TemplatePlugin.TMPL+'">';html+=elm.innerHTML;html+='<!-- '+TinyMCE_TemplatePlugin.TMPL_ENDS+' --></div>';tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,html)},functions:{blank:function(elm,editor_event){},cdate:function(elm,editor_event){var d,dsrc;if(editor_event!=TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT)return;d=new Date();dsrc=elm.innerHTML.match(new RegExp("<!-- "+TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR+":(.*) -->","gi"));if(dsrc)d=new Date(RegExp.$1);elm.innerHTML=TinyMCE_TemplatePlugin._getDateTime(d,tinyMCE.getParam("template_cdate_format",tinyMCE.getLang("lang_template_def_date_format")));elm.innerHTML+="<!-- "+TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR+":"+d.toUTCString()+" -->"},mdate:function(elm,editor_event){var d=new Date();elm.innerHTML=TinyMCE_TemplatePlugin._getDateTime(d,tinyMCE.getParam("template_mdate_format",tinyMCE.getLang("lang_template_def_date_format")))},selectedContent:function(elm,editor_event){var ds=tinyMCE.selectedInstance.getData('template');if(editor_event!=TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT)return;if(ds.currentAction=="insert-new"&&!tinyMCE.hasCSSClass(elm,TinyMCE_TemplatePlugin.TMPL_SEL_HTML_DONE)){elm.innerHTML=tinyMCE.selectedInstance.selection.getSelectedHTML();tinyMCE.addCSSClass(elm,TinyMCE_TemplatePlugin.TMPL_SEL_HTML_DONE)}},generateReplacer:function(s){return function(elm,editor_event){elm.innerHTML=""+s}}},_getDateTime:function(d,fmt){if(!fmt)return"";function addZeros(value,len){var i;value=""+value;if(value.length<len){for(i=0;i<(len-value.length);i++)value="0"+value}return value}fmt=fmt.replace("%D","%m/%d/%y");fmt=fmt.replace("%r","%I:%M:%S %p");fmt=fmt.replace("%Y",""+d.getFullYear());fmt=fmt.replace("%y",""+d.getYear());fmt=fmt.replace("%m",addZeros(d.getMonth()+1,2));fmt=fmt.replace("%d",addZeros(d.getDate(),2));fmt=fmt.replace("%H",""+addZeros(d.getHours(),2));fmt=fmt.replace("%M",""+addZeros(d.getMinutes(),2));fmt=fmt.replace("%S",""+addZeros(d.getSeconds(),2));fmt=fmt.replace("%I",""+((d.getHours()+11)%12+1));fmt=fmt.replace("%p",""+(d.getHours()<12?"AM":"PM"));fmt=fmt.replace("%B",""+tinyMCE.getLang("lang_template_months_long")[d.getMonth()]);fmt=fmt.replace("%b",""+tinyMCE.getLang("lang_template_months_short")[d.getMonth()]);fmt=fmt.replace("%A",""+tinyMCE.getLang("lang_template_day_long")[d.getDay()]);fmt=fmt.replace("%a",""+tinyMCE.getLang("lang_template_day_short")[d.getDay()]);fmt=fmt.replace("%%","%");return fmt},TMPL_ELEMENT:'mceTmplElm',TMPL:'mceTmpl',TMPL_BEGINS:'mceTmplBegins',TMPL_SEL_HTML_DONE:'mceSelHTMLDone',TMPL_ENDS:'mceTmplEnds',TMPL_DATE_SRC_ATTR:'mcetmpldtesrc',TMPL_TEMPLATE_EVENT:'prepare_template'};tinyMCE.addPlugin("template",TinyMCE_TemplatePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/template/jscripts/template.js
New file
0,0 → 1,143
// Import external list url javascript
var url = tinyMCE.getParam("template_external_list_url");
if (url != null) {
// Fix relative
if (url.charAt(0) != '/' && url.indexOf('://') == -1)
url = tinyMCE.documentBasePath + "/" + url;
 
document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
}
 
var TPU = { //Template Popup Utils
currentTemplateHTML : null,
templates : [],
inst : tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')),
plugin : tinyMCE.getWindowArg('pluginObj'),
data : tinyMCE.selectedInstance.getData('template'),
 
init : function() {
document.forms[0].insert.value = tinyMCE.getLang('lang_' + this.data.currentAction, 'Insert', true);
TPU.loadTemplatePaths();
 
if (this.data.currentAction == "update")
document.getElementById('warning').innerHTML = tinyMCE.getLang('lang_template_warning');
 
this.resizeInputs();
},
 
loadTemplatePaths : function() {
var tsrc, sel, x, u;
 
tsrc = tinyMCE.getParam("template_templates", false);
sel = document.getElementById('tpath');
 
// Setup external template list
if (!tsrc && typeof(tinyMCETemplateList) != 'undefined') {
for (x=0, tsrc = []; x<tinyMCETemplateList.length; x++)
tsrc.push({title : tinyMCETemplateList[x][0], src : tinyMCETemplateList[x][1], description : tinyMCETemplateList[x][2]});
}
 
for (x=0; x<tsrc.length; x++) {
u = tsrc[x].src;
 
// Force absolute
if (u.indexOf('://') == -1 && u.indexOf('/') != 0)
u = tinyMCE.documentBasePath + "/" + u;
 
tsrc[x].src = u;
}
 
TPU.templates = tsrc;
 
for (x = 0; x < tsrc.length; x++)
sel.options[sel.options.length] = new Option(tsrc[x].title, tsrc[x].src);
},
 
selectTemplate : function(o) {
var x, d = window.frames['templatesrc'].document;
 
this.currentTemplateHTML = this.plugin._replaceValues(this.getFileContents(o.value));
 
// Force complete document
/* if (!/<body/gi.test(this.currentTemplateHTML)) {
this.currentTemplateHTML = '<html xmlns="http://www.w3.org/1999/xhtml">' +
'<head>' +
'<title>blank_page</title>' +
'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />' +
'</head>' +
'<body>' +
this.currentTemplateHTML +
'</body>' +
'</html>';
}*/
 
// Write HTML to preview iframe
d.body.innerHTML = this.currentTemplateHTML;
 
// Display description
for (x = 0; x < TPU.templates.length; x++) {
if (TPU.templates[x].src == o.value) {
document.getElementById('tmpldesc').innerHTML = TPU.templates[x].description;
break;
}
}
},
 
insertTemplate : function() {
var sel, opt;
 
sel = document.getElementById('tpath');
opt = sel.options[sel.selectedIndex];
 
// Is it a template or snippet
if (TPU.currentTemplateHTML.indexOf('mceTmpl'))
tinyMCEPopup.execCommand('mceTemplate', false, {title : opt.text, tsrc : opt.value, body : TPU.currentTemplateHTML});
else
tinyMCEPopup.execCommand('mceInsertContent', false, TPU.currentTemplateHTML);
 
tinyMCEPopup.close();
},
 
getFileContents : function(u) {
var x, d, t = 'text/plain';
 
function g(s) {
x = 0;
 
try {
x = new ActiveXObject(s);
} catch (s) {
}
 
return x;
};
 
x = window.ActiveXObject ? g('Msxml2.XMLHTTP') || g('Microsoft.XMLHTTP') : new XMLHttpRequest();
 
// Synchronous AJAX load file
x.overrideMimeType && x.overrideMimeType(t);
x.open("GET", u, false);
x.send(null);
 
return x.responseText;
},
 
resizeInputs : function() {
var wHeight, wWidth, elm;
 
if (!self.innerWidth) {
wHeight = document.body.clientHeight - 160;
wWidth = document.body.clientWidth - 40;
} else {
wHeight = self.innerHeight - 160;
wWidth = self.innerWidth - 40;
}
 
elm = document.getElementById('templatesrc');
 
if (elm) {
elm.style.height = Math.abs(wHeight) + 'px';
elm.style.width = Math.abs(wWidth - 5) + 'px';
}
}
};
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/template/template.htm
New file
0,0 → 1,37
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_template_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/template.js"></script>
<link href="css/template.css" rel="stylesheet" type="text/css" />
<base target="_self" />
</head>
<body onload="tinyMCEPopup.executeOnLoad('TPU.init();');" onresize="TPU.resizeInputs();">
<form onsubmit="insert();return false;">
<div id="frmbody">
<div class="title">{$lang_template_desc}</div>
<div class="frmRow"><label for="tpath" title="{$lang_template_select}">{$lang_template_label}:</label>
<select id="tpath" name="tpath" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="TPU.selectTemplate(this.options[this.selectedIndex]);">
<option value="">{$lang_template_select}...</option>
</select>
<span id="warning"></span></div>
<div class="frmRow"><label for="tdesc">{$lang_template_desc_label}:</label>
<span id="tmpldesc"></span></div>
<fieldset>
<legend>{$lang_template_preview}</legend>
<iframe id="templatesrc" name="templatesrc" src="blank.htm" width="690" height="400" frameborder="0"></iframe>
</fieldset>
</div>
<div class="mceActionPanel">
<div style="float: left">
<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="TPU.insertTemplate();" />
</div>
 
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
</div>
</div>
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/paste/jscripts/pasteword.js
New file
0,0 → 1,52
function saveContent() {
var html = document.getElementById("frmData").contentWindow.document.body.innerHTML;
 
if (html == ''){
tinyMCEPopup.close();
return false;
}
 
tinyMCEPopup.execCommand('mcePasteWord', false, html);
tinyMCEPopup.close();
}
 
function onLoadInit() {
tinyMCEPopup.resizeToInnerSize();
 
// Fix for endless reloading in FF
window.setTimeout('createIFrame();', 10);
}
 
function createIFrame() {
document.getElementById('iframecontainer').innerHTML = '<iframe id="frmData" name="frmData" class="sourceIframe" src="blank.htm" height="280" width="400" frameborder="0" style="background-color:#FFFFFF; width:100%;" dir="ltr" wrap="soft"></iframe>';
}
 
var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
 
function initIframe(doc) {
var dir = tinyMCE.selectedInstance.settings['directionality'];
 
doc.body.dir = dir;
 
// Remove Gecko spellchecking
if (tinyMCE.isGecko)
doc.body.spellcheck = tinyMCE.getParam("gecko_spellcheck");
 
resizeInputs();
}
 
function resizeInputs() {
if (!tinyMCE.isMSIE) {
wHeight = self.innerHeight - 80;
wWidth = self.innerWidth - 18;
} else {
wHeight = document.body.clientHeight - 80;
wWidth = document.body.clientWidth - 18;
}
 
var elm = document.getElementById('frmData');
if (elm) {
elm.style.height = Math.abs(wHeight) + 'px';
elm.style.width = Math.abs(wWidth) + 'px';
}
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/paste/jscripts/pastetext.js
New file
0,0 → 1,38
function saveContent() {
if (document.forms[0].htmlSource.value == '') {
tinyMCEPopup.close();
return false;
}
 
tinyMCEPopup.execCommand('mcePasteText', false, {
html : document.forms[0].htmlSource.value,
linebreaks : document.forms[0].linebreaks.checked
});
 
tinyMCEPopup.close();
}
 
function onLoadInit() {
tinyMCEPopup.resizeToInnerSize();
 
// Remove Gecko spellchecking
if (tinyMCE.isGecko)
document.body.spellcheck = tinyMCE.getParam("gecko_spellcheck");
 
resizeInputs();
}
 
var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
 
function resizeInputs() {
if (!tinyMCE.isMSIE) {
wHeight = self.innerHeight-80;
wWidth = self.innerWidth-17;
} else {
wHeight = document.body.clientHeight-80;
wWidth = document.body.clientWidth-17;
}
 
document.forms[0].htmlSource.style.height = Math.abs(wHeight) + 'px';
document.forms[0].htmlSource.style.width = Math.abs(wWidth) + 'px';
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/paste/langs/fr.js
New file
0,0 → 1,11
// FR lang variables
// Modified by Motte, last updated 2006-03-23
 
tinyMCE.addToLang('',{
paste_text_desc : 'Coller comme du texte',
paste_text_title : 'Faites CTRL+V pour coller le texte dans la fen&ecirc;tre.',
paste_text_linebreaks : 'Conserver les retours &agrave; la ligne',
paste_word_desc : 'Coller depuis Word',
paste_word_title : 'Faites CTRL+V pour coller le texte dans la fen&ecirc;tre.',
selectall_desc : 'S&eacute;lectionner tout'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/paste/langs/en.js
New file
0,0 → 1,10
// UK lang variables
 
tinyMCE.addToLang('',{
paste_text_desc : 'Paste as Plain Text',
paste_text_title : 'Use CTRL+V on your keyboard to paste the text into the window.',
paste_text_linebreaks : 'Keep linebreaks',
paste_word_desc : 'Paste from Word',
paste_word_title : 'Use CTRL+V on your keyboard to paste the text into the window.',
selectall_desc : 'Select All'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/paste/images/pastetext.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/paste/images/pastetext.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/paste/images/pasteword.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/paste/images/pasteword.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/paste/images/selectall.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/paste/images/selectall.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/paste/editor_plugin_src.js
New file
0,0 → 1,395
/**
* $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
tinyMCE.importPluginLanguagePack('paste');
 
var TinyMCE_PastePlugin = {
getInfo : function() {
return {
longname : 'Paste text/word',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
initInstance : function(inst) {
if (tinyMCE.isMSIE && tinyMCE.getParam("paste_auto_cleanup_on_paste", false))
tinyMCE.addEvent(inst.getBody(), "paste", TinyMCE_PastePlugin._handlePasteEvent);
},
 
handleEvent : function(e) {
// Force paste dialog if non IE browser
if (!tinyMCE.isRealIE && tinyMCE.getParam("paste_auto_cleanup_on_paste", false) && e.ctrlKey && e.keyCode == 86 && e.type == "keydown") {
window.setTimeout('tinyMCE.selectedInstance.execCommand("mcePasteText",true)', 1);
return tinyMCE.cancelEvent(e);
}
 
return true;
},
 
getControlHTML : function(cn) {
switch (cn) {
case "pastetext":
return tinyMCE.getButtonHTML(cn, 'lang_paste_text_desc', '{$pluginurl}/images/pastetext.gif', 'mcePasteText', true);
 
case "pasteword":
return tinyMCE.getButtonHTML(cn, 'lang_paste_word_desc', '{$pluginurl}/images/pasteword.gif', 'mcePasteWord', true);
 
case "selectall":
return tinyMCE.getButtonHTML(cn, 'lang_selectall_desc', '{$pluginurl}/images/selectall.gif', 'mceSelectAll', true);
}
 
return '';
},
 
execCommand : function(editor_id, element, command, user_interface, value) {
switch (command) {
case "mcePasteText":
if (user_interface) {
if ((tinyMCE.isMSIE && !tinyMCE.isOpera) && !tinyMCE.getParam('paste_use_dialog', false))
TinyMCE_PastePlugin._insertText(clipboardData.getData("Text"), true);
else {
var template = new Array();
template['file'] = '../../plugins/paste/pastetext.htm'; // Relative to theme
template['width'] = 450;
template['height'] = 400;
var plain_text = "";
tinyMCE.openWindow(template, {editor_id : editor_id, plain_text: plain_text, resizable : "yes", scrollbars : "no", inline : "yes", mceDo : 'insert'});
}
} else
TinyMCE_PastePlugin._insertText(value['html'], value['linebreaks']);
 
return true;
 
case "mcePasteWord":
if (user_interface) {
if ((tinyMCE.isMSIE && !tinyMCE.isOpera) && !tinyMCE.getParam('paste_use_dialog', false)) {
TinyMCE_PastePlugin._insertWordContent(TinyMCE_PastePlugin._clipboardHTML());
} else {
var template = new Array();
template['file'] = '../../plugins/paste/pasteword.htm'; // Relative to theme
template['width'] = 450;
template['height'] = 400;
var plain_text = "";
tinyMCE.openWindow(template, {editor_id : editor_id, plain_text: plain_text, resizable : "yes", scrollbars : "no", inline : "yes", mceDo : 'insert'});
}
} else
TinyMCE_PastePlugin._insertWordContent(value);
 
return true;
 
case "mceSelectAll":
tinyMCE.execInstanceCommand(editor_id, 'selectall');
return true;
 
}
 
// Pass to next handler in chain
return false;
},
 
// Private plugin internal methods
 
_handlePasteEvent : function(e) {
switch (e.type) {
case "paste":
var html = TinyMCE_PastePlugin._clipboardHTML();
var r, inst = tinyMCE.selectedInstance;
 
// Removes italic, strong etc, the if was needed due to bug #1437114
if (inst && (r = inst.getRng()) && r.text.length > 0)
tinyMCE.execCommand('delete');
 
if (html && html.length > 0)
tinyMCE.execCommand('mcePasteWord', false, html);
 
tinyMCE.cancelEvent(e);
return false;
}
 
return true;
},
 
_insertText : function(content, bLinebreaks) {
if (content && content.length > 0) {
if (bLinebreaks) {
// Special paragraph treatment
if (tinyMCE.getParam("paste_create_paragraphs", true)) {
var rl = tinyMCE.getParam("paste_replace_list", '\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');
for (var i=0; i<rl.length; i+=2)
content = content.replace(new RegExp(rl[i], 'gi'), rl[i+1]);
 
content = tinyMCE.regexpReplace(content, "\r\n\r\n", "</p><p>", "gi");
content = tinyMCE.regexpReplace(content, "\r\r", "</p><p>", "gi");
content = tinyMCE.regexpReplace(content, "\n\n", "</p><p>", "gi");
 
// Has paragraphs
if ((pos = content.indexOf('</p><p>')) != -1) {
tinyMCE.execCommand("Delete");
 
var node = tinyMCE.selectedInstance.getFocusElement();
 
// Get list of elements to break
var breakElms = new Array();
 
do {
if (node.nodeType == 1) {
// Don't break tables and break at body
if (node.nodeName == "TD" || node.nodeName == "BODY")
break;
breakElms[breakElms.length] = node;
}
} while(node = node.parentNode);
 
var before = "", after = "</p>";
before += content.substring(0, pos);
 
for (var i=0; i<breakElms.length; i++) {
before += "</" + breakElms[i].nodeName + ">";
after += "<" + breakElms[(breakElms.length-1)-i].nodeName + ">";
}
 
before += "<p>";
content = before + content.substring(pos+7) + after;
}
}
 
if (tinyMCE.getParam("paste_create_linebreaks", true)) {
content = tinyMCE.regexpReplace(content, "\r\n", "<br />", "gi");
content = tinyMCE.regexpReplace(content, "\r", "<br />", "gi");
content = tinyMCE.regexpReplace(content, "\n", "<br />", "gi");
}
}
tinyMCE.execCommand("mceInsertRawHTML", false, content);
}
},
 
_insertWordContent : function(content) {
if (content && content.length > 0) {
// Cleanup Word content
var bull = String.fromCharCode(8226);
var middot = String.fromCharCode(183);
var cb;
 
if ((cb = tinyMCE.getParam("paste_insert_word_content_callback", "")) != "")
content = eval(cb + "('before', content)");
 
var rl = tinyMCE.getParam("paste_replace_list", '\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');
for (var i=0; i<rl.length; i+=2)
content = content.replace(new RegExp(rl[i], 'gi'), rl[i+1]);
 
if (tinyMCE.getParam("paste_convert_headers_to_strong", false)) {
content = content.replace(new RegExp('<p class=MsoHeading.*?>(.*?)<\/p>', 'gi'), '<p><b>$1</b></p>');
}
 
content = content.replace(new RegExp('tab-stops: list [0-9]+.0pt">', 'gi'), '">' + "--list--");
content = content.replace(new RegExp(bull + "(.*?)<BR>", "gi"), "<p>" + middot + "$1</p>");
content = content.replace(new RegExp('<SPAN style="mso-list: Ignore">', 'gi'), "<span>" + bull); // Covert to bull list
content = content.replace(/<o:p><\/o:p>/gi, "");
content = content.replace(new RegExp('<br style="page-break-before: always;.*>', 'gi'), '-- page break --'); // Replace pagebreaks
content = content.replace(new RegExp('<(!--)([^>]*)(--)>', 'g'), ""); // Word comments
 
if (tinyMCE.getParam("paste_remove_spans", true))
content = content.replace(/<\/?span[^>]*>/gi, "");
 
if (tinyMCE.getParam("paste_remove_styles", true))
content = content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)', 'gi'), "<$1$3");
 
content = content.replace(/<\/?font[^>]*>/gi, "");
 
// Strips class attributes.
switch (tinyMCE.getParam("paste_strip_class_attributes", "all")) {
case "all":
content = content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3");
break;
 
case "mso":
content = content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)', 'gi'), "<$1$3");
break;
}
 
content = content.replace(new RegExp('href="?' + TinyMCE_PastePlugin._reEscape("" + document.location) + '', 'gi'), 'href="' + tinyMCE.settings['document_base_url']);
content = content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3");
content = content.replace(/<\\?\?xml[^>]*>/gi, "");
content = content.replace(/<\/?\w+:[^>]*>/gi, "");
content = content.replace(/-- page break --\s*<p>&nbsp;<\/p>/gi, ""); // Remove pagebreaks
content = content.replace(/-- page break --/gi, ""); // Remove pagebreaks
 
// content = content.replace(/\/?&nbsp;*/gi, ""); &nbsp;
// content = content.replace(/<p>&nbsp;<\/p>/gi, '');
 
if (!tinyMCE.settings['force_p_newlines']) {
content = content.replace('', '' ,'gi');
content = content.replace('</p>', '<br /><br />' ,'gi');
}
 
if (!tinyMCE.isMSIE && !tinyMCE.settings['force_p_newlines']) {
content = content.replace(/<\/?p[^>]*>/gi, "");
}
 
content = content.replace(/<\/?div[^>]*>/gi, "");
 
// Convert all middlot lists to UL lists
if (tinyMCE.getParam("paste_convert_middot_lists", true)) {
var div = document.createElement("div");
div.innerHTML = content;
 
// Convert all middot paragraphs to li elements
var className = tinyMCE.getParam("paste_unindented_list_class", "unIndentedList");
 
while (TinyMCE_PastePlugin._convertMiddots(div, "--list--")) ; // bull
while (TinyMCE_PastePlugin._convertMiddots(div, middot, className)) ; // Middot
while (TinyMCE_PastePlugin._convertMiddots(div, bull)) ; // bull
 
content = div.innerHTML;
}
 
// Replace all headers with strong and fix some other issues
if (tinyMCE.getParam("paste_convert_headers_to_strong", false)) {
content = content.replace(/<h[1-6]>&nbsp;<\/h[1-6]>/gi, '<p>&nbsp;&nbsp;</p>');
content = content.replace(/<h[1-6]>/gi, '<p><b>');
content = content.replace(/<\/h[1-6]>/gi, '</b></p>');
content = content.replace(/<b>&nbsp;<\/b>/gi, '<b>&nbsp;&nbsp;</b>');
content = content.replace(/^(&nbsp;)*/gi, '');
}
 
content = content.replace(/--list--/gi, ""); // Remove --list--
 
if ((cb = tinyMCE.getParam("paste_insert_word_content_callback", "")) != "")
content = eval(cb + "('after', content)");
 
// Insert cleaned content
tinyMCE.execCommand("mceInsertContent", false, content);
 
if (tinyMCE.getParam('paste_force_cleanup_wordpaste', true))
window.setTimeout('tinyMCE.execCommand("mceCleanup");', 1); // Do normal cleanup detached from this thread
}
},
 
_reEscape : function(s) {
var l = "?.\\*[](){}+^$:";
var o = "";
 
for (var i=0; i<s.length; i++) {
var c = s.charAt(i);
 
if (l.indexOf(c) != -1)
o += '\\' + c;
else
o += c;
}
 
return o;
},
 
_convertMiddots : function(div, search, class_name) {
var mdot = String.fromCharCode(183);
var bull = String.fromCharCode(8226);
 
var nodes = div.getElementsByTagName("p");
var prevul;
for (var i=0; i<nodes.length; i++) {
var p = nodes[i];
 
// Is middot
if (p.innerHTML.indexOf(search) == 0) {
var ul = document.createElement("ul");
 
if (class_name)
ul.className = class_name;
 
// Add the first one
var li = document.createElement("li");
li.innerHTML = p.innerHTML.replace(new RegExp('' + mdot + '|' + bull + '|--list--|&nbsp;', "gi"), '');
ul.appendChild(li);
 
// Add the rest
var np = p.nextSibling;
while (np) {
// If the node is whitespace, then
// ignore it and continue on.
if (np.nodeType == 3 && new RegExp('^\\s$', 'm').test(np.nodeValue)) {
np = np.nextSibling;
continue;
}
 
if (search == mdot) {
if (np.nodeType == 1 && new RegExp('^o(\\s+|&nbsp;)').test(np.innerHTML)) {
// Second level of nesting
if (!prevul) {
prevul = ul;
ul = document.createElement("ul");
prevul.appendChild(ul);
}
np.innerHTML = np.innerHTML.replace(/^o/, '');
} else {
// Pop the stack if we're going back up to the first level
if (prevul) {
ul = prevul;
prevul = null;
}
// Not element or middot paragraph
if (np.nodeType != 1 || np.innerHTML.indexOf(search) != 0)
break;
}
} else {
// Not element or middot paragraph
if (np.nodeType != 1 || np.innerHTML.indexOf(search) != 0)
break;
}
 
var cp = np.nextSibling;
var li = document.createElement("li");
li.innerHTML = np.innerHTML.replace(new RegExp('' + mdot + '|' + bull + '|--list--|&nbsp;', "gi"), '');
np.parentNode.removeChild(np);
ul.appendChild(li);
np = cp;
}
 
p.parentNode.replaceChild(ul, p);
 
return true;
}
}
 
return false;
},
 
_clipboardHTML : function() {
var div = document.getElementById('_TinyMCE_clipboardHTML');
 
if (!div) {
var div = document.createElement('DIV');
div.id = '_TinyMCE_clipboardHTML';
 
with (div.style) {
visibility = 'hidden';
overflow = 'hidden';
position = 'absolute';
width = 1;
height = 1;
}
 
document.body.appendChild(div);
}
 
div.innerHTML = '';
var rng = document.body.createTextRange();
rng.moveToElementText(div);
rng.execCommand('Paste');
var html = div.innerHTML;
div.innerHTML = '';
return html;
}
};
 
tinyMCE.addPlugin("paste", TinyMCE_PastePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/paste/css/blank.css
New file
0,0 → 1,13
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
scrollbar-3dlight-color: #F0F0EE;
scrollbar-arrow-color: #676662;
scrollbar-base-color: #F0F0EE;
scrollbar-darkshadow-color: #DDDDDD;
scrollbar-face-color: #E0E0DD;
scrollbar-highlight-color: #F0F0EE;
scrollbar-shadow-color: #F0F0EE;
scrollbar-track-color: #F5F5F5;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/paste/css/pasteword.css
New file
0,0 → 1,3
.sourceIframe {
border: 1px solid #808080;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/paste/pastetext.htm
New file
0,0 → 1,34
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_paste_text_desc}</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/pastetext.js"></script>
<base target="_self" />
</head>
<body onload="tinyMCEPopup.executeOnLoad('onLoadInit();');" onresize="resizeInputs();" style="display: none">
<form name="source" onsubmit="saveContent();">
<div style="float: left" class="title">{$lang_paste_text_desc}</div>
 
<div style="float: right">
<input type="checkbox" name="linebreaks" id="linebreaks" class="wordWrapCode" checked="checked" /><label for="linebreaks">{$lang_paste_text_linebreaks}</label>
</div>
 
<br style="clear: both" />
 
<div>{$lang_paste_text_title}</div>
 
<textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,mono; font-size: 12px;" dir="ltr" wrap="soft"></textarea>
 
<div class="mceActionPanel">
<div style="float: left">
<input type="button" name="insert" value="{$lang_insert}" onclick="saveContent();" id="insert" />
</div>
 
<div style="float: right">
<input type="button" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
</div>
</div>
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/paste/readme.txt
New file
0,0 → 1,0
Check the TinyMCE documentation for details on this plugin.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/paste/blank.htm
New file
0,0 → 1,19
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>blank_page</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script language="javascript">
function init() {
document.body.contentEditable = true;
document.designMode = 'on';
parent.initIframe(document);
window.focus();
}
</script>
<link href="css/blank.css" rel="stylesheet" type="text/css" />
<base target="_self" />
</head>
<body onload="init();">
 
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/paste/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('paste');var TinyMCE_PastePlugin={getInfo:function(){return{longname:'Paste text/word',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(tinyMCE.isMSIE&&tinyMCE.getParam("paste_auto_cleanup_on_paste",false))tinyMCE.addEvent(inst.getBody(),"paste",TinyMCE_PastePlugin._handlePasteEvent)},handleEvent:function(e){if(!tinyMCE.isRealIE&&tinyMCE.getParam("paste_auto_cleanup_on_paste",false)&&e.ctrlKey&&e.keyCode==86&&e.type=="keydown"){window.setTimeout('tinyMCE.selectedInstance.execCommand("mcePasteText",true)',1);return tinyMCE.cancelEvent(e)}return true},getControlHTML:function(cn){switch(cn){case"pastetext":return tinyMCE.getButtonHTML(cn,'lang_paste_text_desc','{$pluginurl}/images/pastetext.gif','mcePasteText',true);case"pasteword":return tinyMCE.getButtonHTML(cn,'lang_paste_word_desc','{$pluginurl}/images/pasteword.gif','mcePasteWord',true);case"selectall":return tinyMCE.getButtonHTML(cn,'lang_selectall_desc','{$pluginurl}/images/selectall.gif','mceSelectAll',true)}return''},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mcePasteText":if(user_interface){if((tinyMCE.isMSIE&&!tinyMCE.isOpera)&&!tinyMCE.getParam('paste_use_dialog',false))TinyMCE_PastePlugin._insertText(clipboardData.getData("Text"),true);else{var template=new Array();template['file']='../../plugins/paste/pastetext.htm';template['width']=450;template['height']=400;var plain_text="";tinyMCE.openWindow(template,{editor_id:editor_id,plain_text:plain_text,resizable:"yes",scrollbars:"no",inline:"yes",mceDo:'insert'})}}else TinyMCE_PastePlugin._insertText(value['html'],value['linebreaks']);return true;case"mcePasteWord":if(user_interface){if((tinyMCE.isMSIE&&!tinyMCE.isOpera)&&!tinyMCE.getParam('paste_use_dialog',false)){TinyMCE_PastePlugin._insertWordContent(TinyMCE_PastePlugin._clipboardHTML())}else{var template=new Array();template['file']='../../plugins/paste/pasteword.htm';template['width']=450;template['height']=400;var plain_text="";tinyMCE.openWindow(template,{editor_id:editor_id,plain_text:plain_text,resizable:"yes",scrollbars:"no",inline:"yes",mceDo:'insert'})}}else TinyMCE_PastePlugin._insertWordContent(value);return true;case"mceSelectAll":tinyMCE.execInstanceCommand(editor_id,'selectall');return true}return false},_handlePasteEvent:function(e){switch(e.type){case"paste":var html=TinyMCE_PastePlugin._clipboardHTML();var r,inst=tinyMCE.selectedInstance;if(inst&&(r=inst.getRng())&&r.text.length>0)tinyMCE.execCommand('delete');if(html&&html.length>0)tinyMCE.execCommand('mcePasteWord',false,html);tinyMCE.cancelEvent(e);return false}return true},_insertText:function(content,bLinebreaks){if(content&&content.length>0){if(bLinebreaks){if(tinyMCE.getParam("paste_create_paragraphs",true)){var rl=tinyMCE.getParam("paste_replace_list",'\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i<rl.length;i+=2)content=content.replace(new RegExp(rl[i],'gi'),rl[i+1]);content=tinyMCE.regexpReplace(content,"\r\n\r\n","</p><p>","gi");content=tinyMCE.regexpReplace(content,"\r\r","</p><p>","gi");content=tinyMCE.regexpReplace(content,"\n\n","</p><p>","gi");if((pos=content.indexOf('</p><p>'))!=-1){tinyMCE.execCommand("Delete");var node=tinyMCE.selectedInstance.getFocusElement();var breakElms=new Array();do{if(node.nodeType==1){if(node.nodeName=="TD"||node.nodeName=="BODY")break;breakElms[breakElms.length]=node}}while(node=node.parentNode);var before="",after="</p>";before+=content.substring(0,pos);for(var i=0;i<breakElms.length;i++){before+="</"+breakElms[i].nodeName+">";after+="<"+breakElms[(breakElms.length-1)-i].nodeName+">"}before+="<p>";content=before+content.substring(pos+7)+after}}if(tinyMCE.getParam("paste_create_linebreaks",true)){content=tinyMCE.regexpReplace(content,"\r\n","<br />","gi");content=tinyMCE.regexpReplace(content,"\r","<br />","gi");content=tinyMCE.regexpReplace(content,"\n","<br />","gi")}}tinyMCE.execCommand("mceInsertRawHTML",false,content)}},_insertWordContent:function(content){if(content&&content.length>0){var bull=String.fromCharCode(8226);var middot=String.fromCharCode(183);var cb;if((cb=tinyMCE.getParam("paste_insert_word_content_callback",""))!="")content=eval(cb+"('before', content)");var rl=tinyMCE.getParam("paste_replace_list",'\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i<rl.length;i+=2)content=content.replace(new RegExp(rl[i],'gi'),rl[i+1]);if(tinyMCE.getParam("paste_convert_headers_to_strong",false)){content=content.replace(new RegExp('<p class=MsoHeading.*?>(.*?)<\/p>','gi'),'<p><b>$1</b></p>')}content=content.replace(new RegExp('tab-stops: list [0-9]+.0pt">','gi'),'">'+"--list--");content=content.replace(new RegExp(bull+"(.*?)<BR>","gi"),"<p>"+middot+"$1</p>");content=content.replace(new RegExp('<SPAN style="mso-list: Ignore">','gi'),"<span>"+bull);content=content.replace(/<o:p><\/o:p>/gi,"");content=content.replace(new RegExp('<br style="page-break-before: always;.*>','gi'),'-- page break --');content=content.replace(new RegExp('<(!--)([^>]*)(--)>','g'),"");if(tinyMCE.getParam("paste_remove_spans",true))content=content.replace(/<\/?span[^>]*>/gi,"");if(tinyMCE.getParam("paste_remove_styles",true))content=content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)','gi'),"<$1$3");content=content.replace(/<\/?font[^>]*>/gi,"");switch(tinyMCE.getParam("paste_strip_class_attributes","all")){case"all":content=content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi,"<$1$3");break;case"mso":content=content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)','gi'),"<$1$3");break}content=content.replace(new RegExp('href="?'+TinyMCE_PastePlugin._reEscape(""+document.location)+'','gi'),'href="'+tinyMCE.settings['document_base_url']);content=content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi,"<$1$3");content=content.replace(/<\\?\?xml[^>]*>/gi,"");content=content.replace(/<\/?\w+:[^>]*>/gi,"");content=content.replace(/-- page break --\s*<p>&nbsp;<\/p>/gi,"");content=content.replace(/-- page break --/gi,"");if(!tinyMCE.settings['force_p_newlines']){content=content.replace('','','gi');content=content.replace('</p>','<br /><br />','gi')}if(!tinyMCE.isMSIE&&!tinyMCE.settings['force_p_newlines']){content=content.replace(/<\/?p[^>]*>/gi,"")}content=content.replace(/<\/?div[^>]*>/gi,"");if(tinyMCE.getParam("paste_convert_middot_lists",true)){var div=document.createElement("div");div.innerHTML=content;var className=tinyMCE.getParam("paste_unindented_list_class","unIndentedList");while(TinyMCE_PastePlugin._convertMiddots(div,"--list--"));while(TinyMCE_PastePlugin._convertMiddots(div,middot,className));while(TinyMCE_PastePlugin._convertMiddots(div,bull));content=div.innerHTML}if(tinyMCE.getParam("paste_convert_headers_to_strong",false)){content=content.replace(/<h[1-6]>&nbsp;<\/h[1-6]>/gi,'<p>&nbsp;&nbsp;</p>');content=content.replace(/<h[1-6]>/gi,'<p><b>');content=content.replace(/<\/h[1-6]>/gi,'</b></p>');content=content.replace(/<b>&nbsp;<\/b>/gi,'<b>&nbsp;&nbsp;</b>');content=content.replace(/^(&nbsp;)*/gi,'')}content=content.replace(/--list--/gi,"");if((cb=tinyMCE.getParam("paste_insert_word_content_callback",""))!="")content=eval(cb+"('after', content)");tinyMCE.execCommand("mceInsertContent",false,content);if(tinyMCE.getParam('paste_force_cleanup_wordpaste',true))window.setTimeout('tinyMCE.execCommand("mceCleanup");',1);}},_reEscape:function(s){var l="?.\\*[](){}+^$:";var o="";for(var i=0;i<s.length;i++){var c=s.charAt(i);if(l.indexOf(c)!=-1)o+='\\'+c;else o+=c}return o},_convertMiddots:function(div,search,class_name){var mdot=String.fromCharCode(183);var bull=String.fromCharCode(8226);var nodes=div.getElementsByTagName("p");var prevul;for(var i=0;i<nodes.length;i++){var p=nodes[i];if(p.innerHTML.indexOf(search)==0){var ul=document.createElement("ul");if(class_name)ul.className=class_name;var li=document.createElement("li");li.innerHTML=p.innerHTML.replace(new RegExp(''+mdot+'|'+bull+'|--list--|&nbsp;',"gi"),'');ul.appendChild(li);var np=p.nextSibling;while(np){if(np.nodeType==3&&new RegExp('^\\s$','m').test(np.nodeValue)){np=np.nextSibling;continue}if(search==mdot){if(np.nodeType==1&&new RegExp('^o(\\s+|&nbsp;)').test(np.innerHTML)){if(!prevul){prevul=ul;ul=document.createElement("ul");prevul.appendChild(ul)}np.innerHTML=np.innerHTML.replace(/^o/,'')}else{if(prevul){ul=prevul;prevul=null}if(np.nodeType!=1||np.innerHTML.indexOf(search)!=0)break}}else{if(np.nodeType!=1||np.innerHTML.indexOf(search)!=0)break}var cp=np.nextSibling;var li=document.createElement("li");li.innerHTML=np.innerHTML.replace(new RegExp(''+mdot+'|'+bull+'|--list--|&nbsp;',"gi"),'');np.parentNode.removeChild(np);ul.appendChild(li);np=cp}p.parentNode.replaceChild(ul,p);return true}}return false},_clipboardHTML:function(){var div=document.getElementById('_TinyMCE_clipboardHTML');if(!div){var div=document.createElement('DIV');div.id='_TinyMCE_clipboardHTML';with(div.style){visibility='hidden';overflow='hidden';position='absolute';width=1;height=1}document.body.appendChild(div)}div.innerHTML='';var rng=document.body.createTextRange();rng.moveToElementText(div);rng.execCommand('Paste');var html=div.innerHTML;div.innerHTML='';return html}};tinyMCE.addPlugin("paste",TinyMCE_PastePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/paste/pasteword.htm
New file
0,0 → 1,29
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>{$lang_paste_word_desc}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/pasteword.js"></script>
<link href="css/pasteword.css" rel="stylesheet" type="text/css" />
<base target="_self" />
</head>
<body onload="tinyMCEPopup.executeOnLoad('onLoadInit();');" onresize="resizeInputs();" style="display: none">
<form name="source" onsubmit="saveContent();" action="#">
<div class="title">{$lang_paste_word_desc}</div>
 
<div>{$lang_paste_word_title}</div>
 
<div id="iframecontainer"></div>
 
<div class="mceActionPanel">
<div style="float: left">
<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="saveContent();" />
</div>
 
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
</div>
</div>
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/bbcode/editor_plugin.js
New file
0,0 → 1,0
var TinyMCE_BBCodePlugin={getInfo:function(){return{longname:'BBCode Plugin',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},cleanup:function(type,content){var dialect=tinyMCE.getParam('bbcode_dialect','punbb').toLowerCase();switch(type){case"insert_to_editor":content=this['_'+dialect+'_bbcode2html'](content);break;case"get_from_editor":content=this['_'+dialect+'_html2bbcode'](content);break}return content},_punbb_html2bbcode:function(s){s=tinyMCE.trim(s);function rep(re,str){s=s.replace(re,str)};rep(/<a href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url]$1[/url]");rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");rep(/<font>(.*?)<\/font>/gi,"$1");rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");rep(/<\/(strong|b)>/gi,"[/b]");rep(/<(strong|b)>/gi,"[b]");rep(/<\/(em|i)>/gi,"[/i]");rep(/<(em|i)>/gi,"[i]");rep(/<\/u>/gi,"[/u]");rep(/<u>/gi,"[u]");rep(/<br \/>/gi,"\n");rep(/<br\/>/gi,"\n");rep(/<br>/gi,"\n");rep(/<p>/gi,"");rep(/<\/p>/gi,"\n");rep(/&nbsp;/gi," ");rep(/&quot;/gi,"\"");rep(/&lt;/gi,"<");rep(/&gt;/gi,">");rep(/&amp;/gi,"&");rep(/&undefined;/gi,"'");return s},_punbb_bbcode2html:function(s){s=tinyMCE.trim(s);function rep(re,str){s=s.replace(re,str)};rep(/\n/gi,"<br />");rep(/\[b\]/gi,"<strong>");rep(/\[\/b\]/gi,"</strong>");rep(/\[i\]/gi,"<em>");rep(/\[\/i\]/gi,"</em>");rep(/\[u\]/gi,"<u>");rep(/\[\/u\]/gi,"</u>");rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<font color=\"$1\">$2</font>");rep(/\[code\](.*?)\[\/code\]/gi,"<span class=\"codeStyle\">$1</span>&nbsp;");rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$1</span>&nbsp;");return s}};tinyMCE.addPlugin("bbcode",TinyMCE_BBCodePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/bbcode/editor_plugin_src.js
New file
0,0 → 1,102
var TinyMCE_BBCodePlugin = {
getInfo : function() {
return {
longname : 'BBCode Plugin',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
cleanup : function(type, content) {
var dialect = tinyMCE.getParam('bbcode_dialect', 'punbb').toLowerCase();
 
switch (type) {
case "insert_to_editor":
content = this['_' + dialect + '_bbcode2html'](content);
break;
 
case "get_from_editor":
content = this['_' + dialect + '_html2bbcode'](content);
break;
}
 
return content;
},
 
// Private methods
 
// HTML -> BBCode in PunBB dialect
_punbb_html2bbcode : function(s) {
s = tinyMCE.trim(s);
 
function rep(re, str) {
s = s.replace(re, str);
};
 
// example: <strong> to [b]
rep(/<a href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url]$1[/url]");
rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");
rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");
rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");
rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");
rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");
rep(/<font>(.*?)<\/font>/gi,"$1");
rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");
rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");
rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");
rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");
rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");
rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");
rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");
rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");
rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");
rep(/<\/(strong|b)>/gi,"[/b]");
rep(/<(strong|b)>/gi,"[b]");
rep(/<\/(em|i)>/gi,"[/i]");
rep(/<(em|i)>/gi,"[i]");
rep(/<\/u>/gi,"[/u]");
rep(/<u>/gi,"[u]");
rep(/<br \/>/gi,"\n");
rep(/<br\/>/gi,"\n");
rep(/<br>/gi,"\n");
rep(/<p>/gi,"");
rep(/<\/p>/gi,"\n");
rep(/&nbsp;/gi," ");
rep(/&quot;/gi,"\"");
rep(/&lt;/gi,"<");
rep(/&gt;/gi,">");
rep(/&amp;/gi,"&");
rep(/&undefined;/gi,"'"); // quickfix
 
return s;
},
 
// BBCode -> HTML from PunBB dialect
_punbb_bbcode2html : function(s) {
s = tinyMCE.trim(s);
 
function rep(re, str) {
s = s.replace(re, str);
};
 
// example: [b] to <strong>
rep(/\n/gi,"<br />");
rep(/\[b\]/gi,"<strong>");
rep(/\[\/b\]/gi,"</strong>");
rep(/\[i\]/gi,"<em>");
rep(/\[\/i\]/gi,"</em>");
rep(/\[u\]/gi,"<u>");
rep(/\[\/u\]/gi,"</u>");
rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");
rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");
rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<font color=\"$1\">$2</font>");
rep(/\[code\](.*?)\[\/code\]/gi,"<span class=\"codeStyle\">$1</span>&nbsp;");
rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$1</span>&nbsp;");
 
return s;
}
};
 
tinyMCE.addPlugin("bbcode", TinyMCE_BBCodePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/ins.htm
New file
0,0 → 1,169
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_xhtmlxtras_title_ins_element}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/element_common.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/ins.js"></script>
<link rel="stylesheet" type="text/css" href="css/popup.css" />
<base target="_self" />
</head>
<body id="xhtmlxtrasins" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<form onsubmit="insertIns();return false;" action="#">
<div class="tabs">
<ul>
<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_xhtmlxtras_general_tab}</a></span></li>
<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->
</ul>
</div>
 
<div class="panel_wrapper">
<div id="general_panel" class="panel current">
<fieldset>
<legend>{$lang_xhtmlxtras_fieldset_general_tab}</legend>
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td class="label"><label id="datetimelabel" for="datetime">{$lang_xhtmlxtras_attribute_label_datetime}</label>:</td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field" /></td>
<td><a href="javascript:insertDateTime('datetime');" class="mceButtonNormal"><img src="images/date_time.gif" class="picker" alt="{$lang_xhtmlxtras_insert_date}" title="{$lang_xhtmlxtras_insert_date}" /></a></td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="label"><label id="citelabel" for="cite">{$lang_xhtmlxtras_attribute_label_cite}</label>:</td>
<td><input id="cite" name="cite" type="text" value="" class="field" /></td>
</tr>
</table>
</fieldset>
<fieldset>
<legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td>
<td><input id="title" name="title" type="text" value="" class="field" /></td>
</tr>
<tr>
<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td>
<td><input id="id" name="id" type="text" value="" class="field" /></td>
</tr>
<tr>
<td class="label"><label id="classlabel" for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td>
<td>
<select id="class" name="class" class="field mceEditableSelect">
<option value="">{$lang_xhtmlxtras_not_set}</option>
</select>
</td>
</tr>
<tr>
<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td>
<td><input id="style" name="style" type="text" value="" class="field" /></td>
</tr>
<tr>
<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td>
<td>
<select id="dir" name="dir" class="field">
<option value="">{$lang_xhtmlxtras_not_set}</option>
<option value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option>
<option value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option>
</select>
</td>
</tr>
<tr>
<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td>
<td>
<input id="lang" name="lang" type="text" value="" class="field" />
</td>
</tr>
</table>
</fieldset>
</div>
<div id="events_panel" class="panel">
<fieldset>
<legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>
 
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td class="label"><label for="onfocus">onfocus</label>:</td>
<td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onblur">onblur</label>:</td>
<td><input id="onblur" name="onblur" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onclick">onclick</label>:</td>
<td><input id="onclick" name="onclick" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="ondblclick">ondblclick</label>:</td>
<td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmousedown">onmousedown</label>:</td>
<td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmouseup">onmouseup</label>:</td>
<td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmouseover">onmouseover</label>:</td>
<td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmousemove">onmousemove</label>:</td>
<td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmouseout">onmouseout</label>:</td>
<td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onkeypress">onkeypress</label>:</td>
<td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onkeydown">onkeydown</label>:</td>
<td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onkeyup">onkeyup</label>:</td>
<td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td>
</tr>
</table>
</fieldset>
</div>
</div>
<div class="mceActionPanel">
<div style="float: left">
<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertIns();" />
</div>
<div style="float: left">
<input type="button" id="remove" name="remove" value="{$lang_xhtmlxtras_remove}" onclick="removeIns();" style="display: none;" />
</div>
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
</div>
</div>
 
</form>
 
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js
New file
0,0 → 1,29
/**
* $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
*
* @author Moxiecode - based on work by Andrew Tetlaw
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
function preinit() {
// Initialize
tinyMCE.setWindowArg('mce_windowresize', false);
}
 
function init() {
tinyMCEPopup.resizeToInnerSize();
SXE.initElementDialog('abbr');
if (SXE.currentAction == "update") {
SXE.showRemoveButton();
}
}
 
function insertAbbr() {
SXE.insertElement(tinyMCE.isIE && !tinyMCE.isOpera ? 'html:ABBR' : 'abbr');
tinyMCEPopup.close();
}
 
function removeAbbr() {
SXE.removeElement('abbr');
tinyMCEPopup.close();
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/jscripts/attributes.js
New file
0,0 → 1,130
/**
* $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
*
* @author Moxiecode - based on work by Andrew Tetlaw
* @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
*/
 
function preinit() {
// Initialize
tinyMCE.setWindowArg('mce_windowresize', false);
}
 
function init() {
tinyMCEPopup.resizeToInnerSize();
var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
var elm = inst.getFocusElement();
 
var f = document.forms[0];
var onclick = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onclick'));
 
setFormValue('title', tinyMCE.getAttrib(elm, 'title'));
setFormValue('id', tinyMCE.getAttrib(elm, 'id'));
setFormValue('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style"))));
setFormValue('dir', tinyMCE.getAttrib(elm, 'dir'));
setFormValue('lang', tinyMCE.getAttrib(elm, 'lang'));
setFormValue('tabindex', tinyMCE.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));
setFormValue('accesskey', tinyMCE.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));
setFormValue('onfocus', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onfocus')));
setFormValue('onblur', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onblur')));
setFormValue('onclick', onclick);
setFormValue('ondblclick', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'ondblclick')));
setFormValue('onmousedown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousedown')));
setFormValue('onmouseup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseup')));
setFormValue('onmouseover', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover')));
setFormValue('onmousemove', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousemove')));
setFormValue('onmouseout', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout')));
setFormValue('onkeypress', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeypress')));
setFormValue('onkeydown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeydown')));
setFormValue('onkeyup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeyup')));
className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(elm, 'class'), false);
addClassesToList('classlist', 'advlink_styles');
selectByValue(f, 'classlist', className, true);
TinyMCE_EditableSelects.init();
}
 
function setFormValue(name, value) {
if(value && document.forms[0].elements[name]){
document.forms[0].elements[name].value = value;
}
}
 
function insertAction() {
var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
var elm = inst.getFocusElement();
 
tinyMCEPopup.execCommand("mceBeginUndoLevel");
tinyMCEPopup.restoreSelection();
setAllAttribs(elm);
tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
tinyMCE._setEventsEnabled(inst.getBody(), false);
tinyMCEPopup.execCommand("mceEndUndoLevel");
tinyMCEPopup.close();
}
 
function setAttrib(elm, attrib, value) {
var formObj = document.forms[0];
var valueElm = formObj.elements[attrib.toLowerCase()];
 
if (typeof(value) == "undefined" || value == null) {
value = "";
 
if (valueElm)
value = valueElm.value;
}
 
if (value != "") {
tinyMCE.setAttrib(elm, attrib.toLowerCase(), value);
 
if (attrib == "style")
attrib = "style.cssText";
 
if (attrib.substring(0, 2) == 'on')
value = 'return true;' + value;
 
if (attrib == "class")
attrib = "className";
 
eval('elm.' + attrib + "=value;");
} else
elm.removeAttribute(attrib);
}
 
function setAllAttribs(elm) {
var f = document.forms[0];
 
setAttrib(elm, 'title');
setAttrib(elm, 'id');
setAttrib(elm, 'style');
setAttrib(elm, 'class', getSelectValue(f, 'classlist'));
setAttrib(elm, 'dir');
setAttrib(elm, 'lang');
setAttrib(elm, 'tabindex');
setAttrib(elm, 'accesskey');
setAttrib(elm, 'onfocus');
setAttrib(elm, 'onblur');
setAttrib(elm, 'onclick');
setAttrib(elm, 'ondblclick');
setAttrib(elm, 'onmousedown');
setAttrib(elm, 'onmouseup');
setAttrib(elm, 'onmouseover');
setAttrib(elm, 'onmousemove');
setAttrib(elm, 'onmouseout');
setAttrib(elm, 'onkeypress');
setAttrib(elm, 'onkeydown');
setAttrib(elm, 'onkeyup');
 
// Refresh in old MSIE
if (tinyMCE.isMSIE5)
elm.outerHTML = elm.outerHTML;
}
 
function insertAttribute() {
tinyMCEPopup.close();
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js
New file
0,0 → 1,29
/**
* $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
*
* @author Moxiecode - based on work by Andrew Tetlaw
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
function preinit() {
// Initialize
tinyMCE.setWindowArg('mce_windowresize', false);
}
 
function init() {
tinyMCEPopup.resizeToInnerSize();
SXE.initElementDialog('acronym');
if (SXE.currentAction == "update") {
SXE.showRemoveButton();
}
}
 
function insertAcronym() {
SXE.insertElement('acronym');
tinyMCEPopup.close();
}
 
function removeAcronym() {
SXE.removeElement('acronym');
tinyMCEPopup.close();
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js
New file
0,0 → 1,53
/**
* $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
*
* @author Moxiecode - based on work by Andrew Tetlaw
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
function preinit() {
// Initialize
tinyMCE.setWindowArg('mce_windowresize', false);
}
 
function init() {
tinyMCEPopup.resizeToInnerSize();
SXE.initElementDialog('ins');
if (SXE.currentAction == "update") {
setFormValue('datetime', tinyMCE.getAttrib(SXE.updateElement, 'datetime'));
setFormValue('cite', tinyMCE.getAttrib(SXE.updateElement, 'cite'));
SXE.showRemoveButton();
}
}
 
function setElementAttribs(elm) {
setAllCommonAttribs(elm);
setAttrib(elm, 'datetime');
setAttrib(elm, 'cite');
}
 
function insertIns() {
var elm = tinyMCE.getParentElement(SXE.focusElement, 'ins');
tinyMCEPopup.execCommand('mceBeginUndoLevel');
if (elm == null) {
var s = SXE.inst.selection.getSelectedHTML();
if(s.length > 0) {
tinyMCEPopup.execCommand('mceInsertContent', false, '<ins id="#sxe_temp_ins#">' + s + '</ins>');
var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(), 'ins', 'id', '#sxe_temp_ins#');
for (var i=0; i<elementArray.length; i++) {
var elm = elementArray[i];
setElementAttribs(elm);
}
}
} else {
setElementAttribs(elm);
}
tinyMCE.triggerNodeChange();
tinyMCEPopup.execCommand('mceEndUndoLevel');
tinyMCEPopup.close();
}
 
function removeIns() {
SXE.removeElement('ins');
tinyMCEPopup.close();
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/jscripts/element_common.js
New file
0,0 → 1,241
/**
* $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
*
* @author Moxiecode - based on work by Andrew Tetlaw
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
function initCommonAttributes(elm) {
var formObj = document.forms[0];
 
// Setup form data for common element attributes
setFormValue('title', tinyMCE.getAttrib(elm, 'title'));
setFormValue('id', tinyMCE.getAttrib(elm, 'id'));
selectByValue(formObj, 'class', tinyMCE.getAttrib(elm, 'class'), true);
setFormValue('style', tinyMCE.getAttrib(elm, 'style'));
selectByValue(formObj, 'dir', tinyMCE.getAttrib(elm, 'dir'));
setFormValue('lang', tinyMCE.getAttrib(elm, 'lang'));
setFormValue('onfocus', tinyMCE.getAttrib(elm, 'onfocus'));
setFormValue('onblur', tinyMCE.getAttrib(elm, 'onblur'));
setFormValue('onclick', tinyMCE.getAttrib(elm, 'onclick'));
setFormValue('ondblclick', tinyMCE.getAttrib(elm, 'ondblclick'));
setFormValue('onmousedown', tinyMCE.getAttrib(elm, 'onmousedown'));
setFormValue('onmouseup', tinyMCE.getAttrib(elm, 'onmouseup'));
setFormValue('onmouseover', tinyMCE.getAttrib(elm, 'onmouseover'));
setFormValue('onmousemove', tinyMCE.getAttrib(elm, 'onmousemove'));
setFormValue('onmouseout', tinyMCE.getAttrib(elm, 'onmouseout'));
setFormValue('onkeypress', tinyMCE.getAttrib(elm, 'onkeypress'));
setFormValue('onkeydown', tinyMCE.getAttrib(elm, 'onkeydown'));
setFormValue('onkeyup', tinyMCE.getAttrib(elm, 'onkeyup'));
}
 
function setFormValue(name, value) {
if(document.forms[0].elements[name]) document.forms[0].elements[name].value = value;
}
 
function insertDateTime(id) {
document.getElementById(id).value = getDateTime(new Date(), "%Y-%m-%dT%H:%M:%S");
}
 
function getDateTime(d, fmt) {
fmt = fmt.replace("%D", "%m/%d/%y");
fmt = fmt.replace("%r", "%I:%M:%S %p");
fmt = fmt.replace("%Y", "" + d.getFullYear());
fmt = fmt.replace("%y", "" + d.getYear());
fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
fmt = fmt.replace("%%", "%");
 
return fmt;
}
 
function addZeros(value, len) {
var i;
 
value = "" + value;
 
if (value.length < len) {
for (i=0; i<(len-value.length); i++)
value = "0" + value;
}
 
return value;
}
 
function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
if (!form_obj || !form_obj.elements[field_name])
return;
 
var sel = form_obj.elements[field_name];
 
var found = false;
for (var i=0; i<sel.options.length; i++) {
var option = sel.options[i];
 
if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {
option.selected = true;
found = true;
} else
option.selected = false;
}
 
if (!found && add_custom && value != '') {
var option = new Option('Value: ' + value, value);
option.selected = true;
sel.options[sel.options.length] = option;
}
 
return found;
}
 
function setAttrib(elm, attrib, value) {
var formObj = document.forms[0];
var valueElm = formObj.elements[attrib.toLowerCase()];
 
if (typeof(value) == "undefined" || value == null) {
value = "";
 
if (valueElm)
value = valueElm.value;
}
 
if (value != "") {
if (attrib == "style")
attrib = "style.cssText";
 
if (attrib.substring(0, 2) == 'on')
value = 'return true;' + value;
 
if (attrib == "class") {
tinyMCE.addCSSClass(elm, value);
return;
}
 
elm.setAttribute(attrib.toLowerCase(), value);
} else
elm.removeAttribute(attrib);
}
 
function setAllCommonAttribs(elm) {
setAttrib(elm, 'title');
setAttrib(elm, 'id');
setAttrib(elm, 'class');
setAttrib(elm, 'style');
setAttrib(elm, 'dir');
setAttrib(elm, 'lang');
/*setAttrib(elm, 'onfocus');
setAttrib(elm, 'onblur');
setAttrib(elm, 'onclick');
setAttrib(elm, 'ondblclick');
setAttrib(elm, 'onmousedown');
setAttrib(elm, 'onmouseup');
setAttrib(elm, 'onmouseover');
setAttrib(elm, 'onmousemove');
setAttrib(elm, 'onmouseout');
setAttrib(elm, 'onkeypress');
setAttrib(elm, 'onkeydown');
setAttrib(elm, 'onkeyup');*/
}
 
SXE = {
currentAction : "insert",
inst : tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')),
updateElement : null
}
 
SXE.focusElement = SXE.inst.getFocusElement();
 
SXE.initElementDialog = function(element_name) {
addClassesToList('class', 'xhtmlxtras_styles');
TinyMCE_EditableSelects.init();
 
element_name = element_name.toLowerCase();
var elm = tinyMCE.getParentElement(SXE.focusElement, element_name);
if (elm != null && elm.nodeName == element_name.toUpperCase()) {
SXE.currentAction = "update";
}
 
if (SXE.currentAction == "update") {
initCommonAttributes(elm);
SXE.updateElement = elm;
}
 
document.forms[0].insert.value = tinyMCE.getLang('lang_' + SXE.currentAction, 'Insert', true);
}
 
SXE.insertElement = function(element_name) {
var elm = tinyMCE.getParentElement(SXE.focusElement, element_name), h, tagName;
 
tinyMCEPopup.execCommand('mceBeginUndoLevel');
if (elm == null) {
var s = SXE.inst.selection.getSelectedHTML();
if(s.length > 0) {
tagName = element_name;
 
if (tinyMCE.isIE && !tinyMCE.isOpera && element_name.indexOf('html:') == 0)
element_name = element_name.substring(5).toLowerCase();
 
h = '<' + tagName + ' id="#sxe_temp_' + element_name + '#">' + s + '</' + tagName + '>';
 
tinyMCEPopup.execCommand('mceInsertContent', false, h);
 
var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(), element_name, 'id', '#sxe_temp_' + element_name + '#');
for (var i=0; i<elementArray.length; i++) {
var elm = elementArray[i];
 
elm.id = '';
elm.setAttribute('id', '');
elm.removeAttribute('id');
 
setAllCommonAttribs(elm);
}
}
} else {
setAllCommonAttribs(elm);
}
tinyMCE.triggerNodeChange();
tinyMCEPopup.execCommand('mceEndUndoLevel');
}
 
SXE.removeElement = function(element_name){
element_name = element_name.toLowerCase();
elm = tinyMCE.getParentElement(SXE.focusElement, element_name);
if(elm && elm.nodeName == element_name.toUpperCase()){
tinyMCEPopup.execCommand('mceBeginUndoLevel');
tinyMCE.execCommand('mceRemoveNode', false, elm);
tinyMCE.triggerNodeChange();
tinyMCEPopup.execCommand('mceEndUndoLevel');
}
}
 
SXE.showRemoveButton = function() {
document.getElementById("remove").style.display = 'block';
}
 
SXE.containsClass = function(elm,cl) {
return (elm.className.indexOf(cl) > -1) ? true : false;
}
 
SXE.removeClass = function(elm,cl) {
if(elm.className == null || elm.className == "" || !SXE.containsClass(elm,cl)) {
return true;
}
var classNames = elm.className.split(" ");
var newClassNames = "";
for (var x = 0, cnl = classNames.length; x < cnl; x++) {
if (classNames[x] != cl) {
newClassNames += (classNames[x] + " ");
}
}
elm.className = newClassNames.substring(0,newClassNames.length-1); //removes extra space at the end
}
 
SXE.addClass = function(elm,cl) {
if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl;
return true;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js
New file
0,0 → 1,29
/**
* $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
*
* @author Moxiecode - based on work by Andrew Tetlaw
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
function preinit() {
// Initialize
tinyMCE.setWindowArg('mce_windowresize', false);
}
 
function init() {
tinyMCEPopup.resizeToInnerSize();
SXE.initElementDialog('cite');
if (SXE.currentAction == "update") {
SXE.showRemoveButton();
}
}
 
function insertCite() {
SXE.insertElement('cite');
tinyMCEPopup.close();
}
 
function removeCite() {
SXE.removeElement('cite');
tinyMCEPopup.close();
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/jscripts/del.js
New file
0,0 → 1,54
/**
* $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
*
* @author Moxiecode - based on work by Andrew Tetlaw
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
function preinit() {
// Initialize
tinyMCE.setWindowArg('mce_windowresize', false);
}
 
function init() {
tinyMCEPopup.resizeToInnerSize();
SXE.initElementDialog('del');
if (SXE.currentAction == "update") {
setFormValue('datetime', tinyMCE.getAttrib(SXE.updateElement, 'datetime'));
setFormValue('cite', tinyMCE.getAttrib(SXE.updateElement, 'cite'));
SXE.showRemoveButton();
}
}
 
function setElementAttribs(elm) {
setAllCommonAttribs(elm);
setAttrib(elm, 'datetime');
setAttrib(elm, 'cite');
}
 
function insertDel() {
var elm = tinyMCE.getParentElement(SXE.focusElement, 'del');
 
tinyMCEPopup.execCommand('mceBeginUndoLevel');
if (elm == null) {
var s = SXE.inst.selection.getSelectedHTML();
if(s.length > 0) {
tinyMCEPopup.execCommand('mceInsertContent', false, '<del id="#sxe_temp_del#">' + s + '</del>');
var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(), 'del', 'id', '#sxe_temp_del#');
for (var i=0; i<elementArray.length; i++) {
var elm = elementArray[i];
setElementAttribs(elm);
}
}
} else {
setElementAttribs(elm);
}
tinyMCE.triggerNodeChange();
tinyMCEPopup.execCommand('mceEndUndoLevel');
tinyMCEPopup.close();
}
 
function removeDel() {
SXE.removeElement('del');
tinyMCEPopup.close();
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/langs/en.js
New file
0,0 → 1,42
// UK lang variables
 
tinyMCE.addToLang('xhtmlxtras',{
cite_desc : 'Citation',
abbr_desc : 'Abbreviation',
acronym_desc : 'Acronym',
del_desc : 'Deletion',
ins_desc : 'Insertion',
attribute_label_title : 'Title',
attribute_label_id : 'ID',
attribute_label_class : 'Class',
attribute_label_style : 'Style',
attribute_label_cite : 'Cite',
attribute_label_datetime : 'Date/Time',
attribute_label_langdir : 'Text Direction',
attribute_option_ltr : 'Left to right',
attribute_option_rtl : 'Right to left',
attribute_label_langcode : 'Language',
attribute_label_tabindex : 'TabIndex',
attribute_label_accesskey : 'AccessKey',
attribute_label_cite : 'Cite',
attribute_events_tab : 'Events',
attribute_attrib_tab : 'Attributes',
general_tab : 'General',
attrib_tab : 'Attributes',
events_tab : 'Events',
fieldset_general_tab : 'General Settings',
fieldset_attrib_tab : 'Element Attributes',
fieldset_events_tab : 'Element Events',
title_ins_element : 'Insertion Element',
title_del_element : 'Deletion Element',
title_acronym_element : 'Acronym Element',
title_abbr_element : 'Abbreviation Element',
title_cite_element : 'Citation Element',
remove : 'Remove',
not_set : '--not set--',
insert_date : 'Insert current date/time',
option_ltr : 'Left to right',
option_rtl : 'Right to left',
attribs_desc : 'Insert/Edit Attributes',
attribs_title : 'Insert/Edit Attributes'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/langs/fr.js
New file
0,0 → 1,43
// FR lang variables
// Modified by shadow walker, last updated 2007-03-16
 
tinyMCE.addToLang('xhtmlxtras',{
cite_desc : 'Citation',
abbr_desc : 'Abr&eacute;viation',
acronym_desc : 'Acronyme',
del_desc : 'Effacer',
ins_desc : 'Insertion',
attribute_label_title : 'Titre',
attribute_label_id : 'ID',
attribute_label_class : 'Classe',
attribute_label_style : 'Style',
attribute_label_cite : 'Cite',
attribute_label_datetime : 'Date/Heure',
attribute_label_langdir : 'Text Direction',
attribute_option_ltr : 'De gauche &agrave; droite',
attribute_option_rtl : 'De droite &agrave; gauche',
attribute_label_langcode : 'Langues',
attribute_label_tabindex : 'TabIndex',
attribute_label_accesskey : 'AccessKey',
attribute_label_cite : 'Cite',
attribute_events_tab : 'Evenement',
attribute_attrib_tab : 'Attribus',
general_tab : 'G&eacute;n&eacute;rale',
attrib_tab : 'Attribus',
events_tab : 'Evenement',
fieldset_general_tab : 'General Settings',
fieldset_attrib_tab : 'Attributs de l\'&eacute;l&eacute;ment',
fieldset_events_tab : 'Element Events',
title_ins_element : 'Insertion de l\'&eacute;l&eacute;ment',
title_del_element : 'Effacement de l\'&eacute;l&eacute;ment',
title_acronym_element : 'Acronyme de l\'&eacute;l&eacute;ment',
title_abbr_element : 'Abr&eacute;viation de l\'&eacute;l&eacute;ment',
title_cite_element : 'Citation Element',
remove : 'Enlever',
not_set : '--Non d&eacute;finit--',
insert_date : 'Ins&eacute;rer la date/heure actuelle',
option_ltr : 'De gauche &agrave; droite',
option_rtl : 'De droite &agrave; gauche',
attribs_desc : 'Ins&eacute;rer/Editer un attribut',
attribs_title : 'Ins&eacute;rer/Editer un attribut'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/images/acronym.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/images/acronym.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/images/attribs.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/images/attribs.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/images/ins.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/images/ins.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/images/date_time.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/images/date_time.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/images/remove_button_bg.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/images/remove_button_bg.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/images/cite.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/images/cite.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/images/del.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/images/del.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/images/abbr.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/images/abbr.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js
New file
0,0 → 1,199
/**
* $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
*
* @author Moxiecode - based on work by Andrew Tetlaw
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
tinyMCE.importPluginLanguagePack('xhtmlxtras');
 
var TinyMCE_XHTMLXtrasPlugin = {
getInfo : function() {
return {
longname : 'XHTML Xtras Plugin',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
initInstance : function(inst) {
tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/xhtmlxtras/css/xhtmlxtras.css");
},
 
getControlHTML : function(cn) {
switch (cn) {
case "cite":
return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_cite_desc', '{$pluginurl}/images/cite.gif', 'mceCite', true);
 
case "acronym":
return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_acronym_desc', '{$pluginurl}/images/acronym.gif', 'mceAcronym', true);
 
case "abbr":
return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_abbr_desc', '{$pluginurl}/images/abbr.gif', 'mceAbbr', true);
 
case "del":
return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_del_desc', '{$pluginurl}/images/del.gif', 'mceDel', true);
 
case "ins":
return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_ins_desc', '{$pluginurl}/images/ins.gif', 'mceIns', true);
 
case "attribs":
return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_attribs_desc', '{$pluginurl}/images/attribs.gif', 'mceAttributes', true);
}
 
return "";
},
 
execCommand : function(editor_id, element, command, user_interface, value) {
var template, inst, elm;
 
switch (command) {
case "mceCite":
if (!this._anySel(editor_id))
return true;
 
template = new Array();
template['file'] = '../../plugins/xhtmlxtras/cite.htm';
template['width'] = 350;
template['height'] = 250;
tinyMCE.openWindow(template, {editor_id : editor_id});
return true;
 
case "mceAcronym":
if (!this._anySel(editor_id))
return true;
 
template = new Array();
template['file'] = '../../plugins/xhtmlxtras/acronym.htm';
template['width'] = 350;
template['height'] = 250;
tinyMCE.openWindow(template, {editor_id : editor_id});
return true;
 
case "mceAbbr":
if (!this._anySel(editor_id))
return true;
 
template = new Array();
template['file'] = '../../plugins/xhtmlxtras/abbr.htm';
template['width'] = 350;
template['height'] = 250;
tinyMCE.openWindow(template, {editor_id : editor_id});
return true;
 
case "mceIns":
if (!this._anySel(editor_id))
return true;
 
template = new Array();
template['file'] = '../../plugins/xhtmlxtras/ins.htm';
template['width'] = 350;
template['height'] = 310;
tinyMCE.openWindow(template, {editor_id : editor_id});
return true;
 
case "mceDel":
if (!this._anySel(editor_id))
return true;
 
template = new Array();
template['file'] = '../../plugins/xhtmlxtras/del.htm';
template['width'] = 350;
template['height'] = 310;
tinyMCE.openWindow(template, {editor_id : editor_id});
return true;
 
case "mceAttributes":
inst = tinyMCE.getInstanceById(editor_id);
elm = inst.getFocusElement();
 
if (elm && elm.nodeName !== 'BODY' && elm.className.indexOf('mceItem') == -1) {
tinyMCE.openWindow({
file : '../../plugins/xhtmlxtras/attributes.htm',
width : 380,
height : 370
}, {editor_id : editor_id});
}
 
return true;
}
 
return false;
},
 
cleanup : function(type, content, inst) {
if (type == 'insert_to_editor' && tinyMCE.isIE && !tinyMCE.isOpera) {
content = content.replace(/<abbr([^>]+)>/gi, '<html:ABBR $1>');
content = content.replace(/<\/abbr>/gi, '</html:ABBR>');
}
 
return content;
},
 
handleNodeChange : function(editor_id, node, undo_index,undo_levels, visual_aid, any_selection) {
var elm = tinyMCE.getParentElement(node);
 
if (node == null)
return;
 
tinyMCE.switchClass(editor_id + '_attribs', 'mceButtonDisabled');
 
if (!any_selection) {
// Disable the buttons
tinyMCE.switchClass(editor_id + '_cite', 'mceButtonDisabled');
tinyMCE.switchClass(editor_id + '_acronym', 'mceButtonDisabled');
tinyMCE.switchClass(editor_id + '_abbr', 'mceButtonDisabled');
tinyMCE.switchClass(editor_id + '_del', 'mceButtonDisabled');
tinyMCE.switchClass(editor_id + '_ins', 'mceButtonDisabled');
} else {
// A selection means the buttons should be active.
tinyMCE.switchClass(editor_id + '_cite', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_acronym', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_abbr', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_del', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_ins', 'mceButtonNormal');
}
 
if (elm && elm.nodeName != 'BODY' && elm.className.indexOf('mceItem') == -1)
tinyMCE.switchClass(editor_id + '_attribs', 'mceButtonNormal');
 
switch (node.nodeName) {
case "CITE":
tinyMCE.switchClass(editor_id + '_cite', 'mceButtonSelected');
return true;
 
case "ACRONYM":
tinyMCE.switchClass(editor_id + '_acronym', 'mceButtonSelected');
return true;
 
case "abbr": // IE
case "HTML:ABBR": // FF
case "ABBR":
tinyMCE.switchClass(editor_id + '_abbr', 'mceButtonSelected');
return true;
 
case "DEL":
tinyMCE.switchClass(editor_id + '_del', 'mceButtonSelected');
return true;
 
case "INS":
tinyMCE.switchClass(editor_id + '_ins', 'mceButtonSelected');
return true;
}
 
return true;
},
 
_anySel : function(editor_id) {
var inst = tinyMCE.getInstanceById(editor_id), t = inst.selection.getSelectedText(), pe;
 
pe = tinyMCE.getParentElement(inst.getFocusElement(), 'CITE,ACRONYM,ABBR,HTML:ABBR,DEL,INS');
 
return pe || inst.getFocusElement().nodeName == "IMG" || (t && t.length > 0);
}
};
 
tinyMCE.addPlugin("xhtmlxtras", TinyMCE_XHTMLXtrasPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/css/popup.css
New file
0,0 → 1,46
a.mceButtonNormal img, a.mceButtonSelected img {border: 1px solid #F0F0EE !important;}
a.mceButtonNormal img:hover, a.mceButtonSelected img:hover {border: 1px solid #0A246A !important; cursor: default; background-color: #B6BDD2;}
 
img {
border: 0;
}
 
input.field, select.field {
width: 200px;
}
 
input.picker {
width: 179px;
margin-left: 5px;
}
 
input.disabled {
border-color: #F2F2F2;
}
 
img.picker {
vertical-align: text-bottom;
cursor: pointer;
}
 
h1 {
padding: 0 0 5px 0;
}
 
#remove {
font-weight: bold;
width: 90px;
height: 21px;
border: 0px;
background-image: url('../images/remove_button_bg.gif');
cursor: pointer;
margin-left: 3px;
}
 
.panel_wrapper div.current {
height: 160px;
}
 
#xhtmlxtrasdel .panel_wrapper div.current, #xhtmlxtrasins .panel_wrapper div.current {
height: 220px;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css
New file
0,0 → 1,11
.panel_wrapper div.current {
height: 290px;
}
 
#id, #style, #title, #dir, #hreflang, #lang, #classlist, #tabindex, #accesskey {
width: 200px;
}
 
#events_panel input {
width: 200px;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css
New file
0,0 → 1,24
ins {
border-bottom: 1px solid green;
text-decoration: none;
color: green;
}
 
del {
color: Red;
text-decoration: line-through;
}
 
cite {
border-bottom: 1px dashed blue;
}
 
acronym {
border-bottom: 1px dotted #CCC;
cursor: help;
}
 
abbr, html\:abbr {
border-bottom: 1px dashed #CCC;
cursor: help;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/cite.htm
New file
0,0 → 1,148
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_xhtmlxtras_title_cite_element}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/element_common.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/cite.js"></script>
<link rel="stylesheet" type="text/css" href="css/popup.css" />
<base target="_self" />
</head>
<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<form onsubmit="insertCite();return false;" action="#">
<div class="tabs">
<ul>
<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_xhtmlxtras_general_tab}</a></span></li>
<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->
</ul>
</div>
 
<div class="panel_wrapper">
<div id="general_panel" class="panel current">
<fieldset>
<legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td>
<td><input id="title" name="title" type="text" value="" class="field" /></td>
</tr>
<tr>
<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td>
<td><input id="id" name="id" type="text" value="" class="field" /></td>
</tr>
<tr>
<td class="label"><label id="classlabel" for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td>
<td>
<select id="class" name="class" class="field mceEditableSelect">
<option value="">{$lang_xhtmlxtras_not_set}</option>
</select>
</td>
</tr>
<tr>
<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td>
<td><input id="style" name="style" type="text" value="" class="field" /></td>
</tr>
<tr>
<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td>
<td>
<select id="dir" name="dir" class="field">
<option value="">{$lang_xhtmlxtras_not_set}</option>
<option value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option>
<option value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option>
</select>
</td>
</tr>
<tr>
<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td>
<td>
<input id="lang" name="lang" type="text" value="" class="field" />
</td>
</tr>
</table>
</fieldset>
</div>
<div id="events_panel" class="panel">
<fieldset>
<legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>
 
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td class="label"><label for="onfocus">onfocus</label>:</td>
<td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onblur">onblur</label>:</td>
<td><input id="onblur" name="onblur" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onclick">onclick</label>:</td>
<td><input id="onclick" name="onclick" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="ondblclick">ondblclick</label>:</td>
<td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmousedown">onmousedown</label>:</td>
<td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmouseup">onmouseup</label>:</td>
<td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmouseover">onmouseover</label>:</td>
<td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmousemove">onmousemove</label>:</td>
<td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmouseout">onmouseout</label>:</td>
<td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onkeypress">onkeypress</label>:</td>
<td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onkeydown">onkeydown</label>:</td>
<td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onkeyup">onkeyup</label>:</td>
<td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td>
</tr>
</table>
</fieldset>
</div>
</div>
<div class="mceActionPanel">
<div style="float: left">
<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertCite();" />
</div>
<div style="float: left">
<input type="button" id="remove" name="remove" value="{$lang_xhtmlxtras_remove}" onclick="removeCite();" style="display: none;" />
</div>
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
</div>
</div>
 
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/del.htm
New file
0,0 → 1,169
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_xhtmlxtras_title_del_element}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/element_common.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/del.js"></script>
<link rel="stylesheet" type="text/css" href="css/popup.css" />
<base target="_self" />
</head>
<body id="xhtmlxtrasins" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<form onsubmit="insertDel();return false;" action="#">
<div class="tabs">
<ul>
<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_xhtmlxtras_general_tab}</a></span></li>
<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->
</ul>
</div>
 
<div class="panel_wrapper">
<div id="general_panel" class="panel current">
<fieldset>
<legend>{$lang_xhtmlxtras_fieldset_general_tab}</legend>
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td class="label"><label id="datetimelabel" for="datetime">{$lang_xhtmlxtras_attribute_label_datetime}</label>:</td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field" /></td>
<td><a href="javascript:insertDateTime('datetime');" class="mceButtonNormal"><img src="images/date_time.gif" class="picker" alt="{$lang_xhtmlxtras_insert_date}" title="{$lang_xhtmlxtras_insert_date}" /></a></td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="label"><label id="citelabel" for="cite">{$lang_xhtmlxtras_attribute_label_cite}</label>:</td>
<td><input id="cite" name="cite" type="text" value="" class="field" /></td>
</tr>
</table>
</fieldset>
<fieldset>
<legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td>
<td><input id="title" name="title" type="text" value="" class="field" /></td>
</tr>
<tr>
<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td>
<td><input id="id" name="id" type="text" value="" class="field" /></td>
</tr>
<tr>
<td class="label"><label id="classlabel" for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td>
<td>
<select id="class" name="class" class="field mceEditableSelect">
<option value="">{$lang_xhtmlxtras_not_set}</option>
</select>
</td>
</tr>
<tr>
<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td>
<td><input id="style" name="style" type="text" value="" class="field" /></td>
</tr>
<tr>
<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td>
<td>
<select id="dir" name="dir" class="field">
<option value="">{$lang_xhtmlxtras_not_set}</option>
<option value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option>
<option value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option>
</select>
</td>
</tr>
<tr>
<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td>
<td>
<input id="lang" name="lang" type="text" value="" class="field" />
</td>
</tr>
</table>
</fieldset>
</div>
<div id="events_panel" class="panel">
<fieldset>
<legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>
 
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td class="label"><label for="onfocus">onfocus</label>:</td>
<td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onblur">onblur</label>:</td>
<td><input id="onblur" name="onblur" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onclick">onclick</label>:</td>
<td><input id="onclick" name="onclick" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="ondblclick">ondblclick</label>:</td>
<td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmousedown">onmousedown</label>:</td>
<td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmouseup">onmouseup</label>:</td>
<td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmouseover">onmouseover</label>:</td>
<td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmousemove">onmousemove</label>:</td>
<td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmouseout">onmouseout</label>:</td>
<td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onkeypress">onkeypress</label>:</td>
<td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onkeydown">onkeydown</label>:</td>
<td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onkeyup">onkeyup</label>:</td>
<td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td>
</tr>
</table>
</fieldset>
</div>
</div>
<div class="mceActionPanel">
<div style="float: left">
<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertDel();" />
</div>
<div style="float: left">
<input type="button" id="remove" name="remove" value="{$lang_xhtmlxtras_remove}" onclick="removeDel();" style="display: none;" />
</div>
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
</div>
</div>
 
</form>
 
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/abbr.htm
New file
0,0 → 1,148
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_xhtmlxtras_title_abbr_element}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/element_common.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/abbr.js"></script>
<link rel="stylesheet" type="text/css" href="css/popup.css" />
<base target="_self" />
</head>
<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<form onsubmit="insertAbbr();return false;" action="#">
<div class="tabs">
<ul>
<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_xhtmlxtras_general_tab}</a></span></li>
<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->
</ul>
</div>
 
<div class="panel_wrapper">
<div id="general_panel" class="panel current">
<fieldset>
<legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td>
<td><input id="title" name="title" type="text" value="" class="field" /></td>
</tr>
<tr>
<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td>
<td><input id="id" name="id" type="text" value="" class="field" /></td>
</tr>
<tr>
<td class="label"><label id="classlabel" for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td>
<td>
<select id="class" name="class" class="field mceEditableSelect">
<option value="">{$lang_xhtmlxtras_not_set}</option>
</select>
</td>
</tr>
<tr>
<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td>
<td><input id="style" name="style" type="text" value="" class="field" /></td>
</tr>
<tr>
<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td>
<td>
<select id="dir" name="dir" class="field">
<option value="">{$lang_xhtmlxtras_not_set}</option>
<option value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option>
<option value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option>
</select>
</td>
</tr>
<tr>
<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td>
<td>
<input id="lang" name="lang" type="text" value="" class="field" />
</td>
</tr>
</table>
</fieldset>
</div>
<div id="events_panel" class="panel">
<fieldset>
<legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>
 
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td class="label"><label for="onfocus">onfocus</label>:</td>
<td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onblur">onblur</label>:</td>
<td><input id="onblur" name="onblur" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onclick">onclick</label>:</td>
<td><input id="onclick" name="onclick" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="ondblclick">ondblclick</label>:</td>
<td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmousedown">onmousedown</label>:</td>
<td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmouseup">onmouseup</label>:</td>
<td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmouseover">onmouseover</label>:</td>
<td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmousemove">onmousemove</label>:</td>
<td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmouseout">onmouseout</label>:</td>
<td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onkeypress">onkeypress</label>:</td>
<td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onkeydown">onkeydown</label>:</td>
<td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onkeyup">onkeyup</label>:</td>
<td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td>
</tr>
</table>
</fieldset>
</div>
</div>
<div class="mceActionPanel">
<div style="float: left">
<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertAbbr();" />
</div>
<div style="float: left">
<input type="button" id="remove" name="remove" value="{$lang_xhtmlxtras_remove}" onclick="removeAbbr();" style="display: none;" />
</div>
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
</div>
</div>
 
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/attributes.htm
New file
0,0 → 1,153
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_xhtmlxtras_attribs_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/attributes.js"></script>
<link rel="stylesheet" type="text/css" href="css/attributes.css" />
<base target="_self" />
</head>
<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<form onsubmit="insertAction();return false;" action="#">
<div class="tabs">
<ul>
<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_xhtmlxtras_attribute_attrib_tab}</a></span></li>
<li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_attribute_events_tab}</a></span></li>
</ul>
</div>
 
<div class="panel_wrapper">
<div id="general_panel" class="panel current">
<fieldset>
<legend>{$lang_xhtmlxtras_attribute_attrib_tab}</legend>
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td>
<td><input id="title" name="title" type="text" value="" /></td>
</tr>
<tr>
<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td>
<td><input id="id" name="id" type="text" value="" /></td>
</tr>
<tr>
<td><label id="classlabel" for="classlist">{$lang_class_name}</label></td>
<td>
<select id="classlist" name="classlist" class="mceEditableSelect">
<option value="" selected>{$lang_not_set}</option>
</select>
</td>
</tr>
<tr>
<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td>
<td><input id="style" name="style" type="text" value="" /></td>
</tr>
<tr>
<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td>
<td>
<select id="dir" name="dir">
<option value="">{$lang_xhtmlxtras_not_set}</option>
<option value="ltr">{$lang_xhtmlxtras_option_ltr}</option>
<option value="rtl">{$lang_xhtmlxtras_option_rtl}</option>
</select>
</td>
</tr>
<tr>
<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td>
<td>
<input id="lang" name="lang" type="text" value="" />
</td>
</tr>
<tr>
<td><label id="tabindexlabel" for="tabindex">{$lang_xhtmlxtras_attribute_label_tabindex}</label></td>
<td><input type="text" id="tabindex" name="tabindex" value="" /></td>
</tr>
 
<tr>
<td><label id="accesskeylabel" for="accesskey">{$lang_xhtmlxtras_attribute_label_accesskey}</label></td>
<td><input type="text" id="accesskey" name="accesskey" value="" /></td>
</tr>
</table>
</fieldset>
</div>
<div id="events_panel" class="panel">
<fieldset>
<legend>{$lang_xhtmlxtras_attribute_events_tab}</legend>
 
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td class="label"><label for="onfocus">onfocus</label>:</td>
<td><input id="onfocus" name="onfocus" type="text" value="" /></td>
</tr>
 
<tr>
<td class="label"><label for="onblur">onblur</label>:</td>
<td><input id="onblur" name="onblur" type="text" value="" /></td>
</tr>
 
<tr>
<td class="label"><label for="onclick">onclick</label>:</td>
<td><input id="onclick" name="onclick" type="text" value="" /></td>
</tr>
 
<tr>
<td class="label"><label for="ondblclick">ondblclick</label>:</td>
<td><input id="ondblclick" name="ondblclick" type="text" value="" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmousedown">onmousedown</label>:</td>
<td><input id="onmousedown" name="onmousedown" type="text" value="" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmouseup">onmouseup</label>:</td>
<td><input id="onmouseup" name="onmouseup" type="text" value="" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmouseover">onmouseover</label>:</td>
<td><input id="onmouseover" name="onmouseover" type="text" value="" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmousemove">onmousemove</label>:</td>
<td><input id="onmousemove" name="onmousemove" type="text" value="" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmouseout">onmouseout</label>:</td>
<td><input id="onmouseout" name="onmouseout" type="text" value="" /></td>
</tr>
 
<tr>
<td class="label"><label for="onkeypress">onkeypress</label>:</td>
<td><input id="onkeypress" name="onkeypress" type="text" value="" /></td>
</tr>
 
<tr>
<td class="label"><label for="onkeydown">onkeydown</label>:</td>
<td><input id="onkeydown" name="onkeydown" type="text" value="" /></td>
</tr>
 
<tr>
<td class="label"><label for="onkeyup">onkeyup</label>:</td>
<td><input id="onkeyup" name="onkeyup" type="text" value="" /></td>
</tr>
</table>
</fieldset>
</div>
</div>
<div class="mceActionPanel">
<div style="float: left">
<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertAction();" />
</div>
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
</div>
</div>
 
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/acronym.htm
New file
0,0 → 1,148
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_xhtmlxtras_title_acronym_element}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/element_common.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/acronym.js"></script>
<link rel="stylesheet" type="text/css" href="css/popup.css" />
<base target="_self" />
</head>
<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<form onsubmit="insertAcronym();return false;" action="#">
<div class="tabs">
<ul>
<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_xhtmlxtras_general_tab}</a></span></li>
<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->
</ul>
</div>
 
<div class="panel_wrapper">
<div id="general_panel" class="panel current">
<fieldset>
<legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td>
<td><input id="title" name="title" type="text" value="" class="field" /></td>
</tr>
<tr>
<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td>
<td><input id="id" name="id" type="text" value="" class="field" /></td>
</tr>
<tr>
<td class="label"><label id="classlabel" for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td>
<td>
<select id="class" name="class" class="field mceEditableSelect">
<option value="">{$lang_xhtmlxtras_not_set}</option>
</select>
</td>
</tr>
<tr>
<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td>
<td><input id="style" name="style" type="text" value="" class="field" /></td>
</tr>
<tr>
<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td>
<td>
<select id="dir" name="dir" class="field">
<option value="">{$lang_xhtmlxtras_not_set}</option>
<option value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option>
<option value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option>
</select>
</td>
</tr>
<tr>
<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td>
<td>
<input id="lang" name="lang" type="text" value="" class="field" />
</td>
</tr>
</table>
</fieldset>
</div>
<div id="events_panel" class="panel">
<fieldset>
<legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>
 
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td class="label"><label for="onfocus">onfocus</label>:</td>
<td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onblur">onblur</label>:</td>
<td><input id="onblur" name="onblur" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onclick">onclick</label>:</td>
<td><input id="onclick" name="onclick" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="ondblclick">ondblclick</label>:</td>
<td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmousedown">onmousedown</label>:</td>
<td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmouseup">onmouseup</label>:</td>
<td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmouseover">onmouseover</label>:</td>
<td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmousemove">onmousemove</label>:</td>
<td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onmouseout">onmouseout</label>:</td>
<td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onkeypress">onkeypress</label>:</td>
<td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onkeydown">onkeydown</label>:</td>
<td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td>
</tr>
 
<tr>
<td class="label"><label for="onkeyup">onkeyup</label>:</td>
<td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td>
</tr>
</table>
</fieldset>
</div>
</div>
<div class="mceActionPanel">
<div style="float: left">
<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertAcronym();" />
</div>
<div style="float: left">
<input type="button" id="remove" name="remove" value="{$lang_xhtmlxtras_remove}" onclick="removeAcronym();" style="display: none;" />
</div>
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
</div>
</div>
 
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('xhtmlxtras');var TinyMCE_XHTMLXtrasPlugin={getInfo:function(){return{longname:'XHTML Xtras Plugin',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/xhtmlxtras/css/xhtmlxtras.css")},getControlHTML:function(cn){switch(cn){case"cite":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_cite_desc','{$pluginurl}/images/cite.gif','mceCite',true);case"acronym":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_acronym_desc','{$pluginurl}/images/acronym.gif','mceAcronym',true);case"abbr":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_abbr_desc','{$pluginurl}/images/abbr.gif','mceAbbr',true);case"del":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_del_desc','{$pluginurl}/images/del.gif','mceDel',true);case"ins":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_ins_desc','{$pluginurl}/images/ins.gif','mceIns',true);case"attribs":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_attribs_desc','{$pluginurl}/images/attribs.gif','mceAttributes',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){var template,inst,elm;switch(command){case"mceCite":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/cite.htm';template['width']=350;template['height']=250;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceAcronym":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/acronym.htm';template['width']=350;template['height']=250;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceAbbr":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/abbr.htm';template['width']=350;template['height']=250;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceIns":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/ins.htm';template['width']=350;template['height']=310;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceDel":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/del.htm';template['width']=350;template['height']=310;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceAttributes":inst=tinyMCE.getInstanceById(editor_id);elm=inst.getFocusElement();if(elm&&elm.nodeName!=='BODY'&&elm.className.indexOf('mceItem')==-1){tinyMCE.openWindow({file:'../../plugins/xhtmlxtras/attributes.htm',width:380,height:370},{editor_id:editor_id})}return true}return false},cleanup:function(type,content,inst){if(type=='insert_to_editor'&&tinyMCE.isIE&&!tinyMCE.isOpera){content=content.replace(/<abbr([^>]+)>/gi,'<html:ABBR $1>');content=content.replace(/<\/abbr>/gi,'</html:ABBR>')}return content},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var elm=tinyMCE.getParentElement(node);if(node==null)return;tinyMCE.switchClass(editor_id+'_attribs','mceButtonDisabled');if(!any_selection){tinyMCE.switchClass(editor_id+'_cite','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_acronym','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_abbr','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_del','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_ins','mceButtonDisabled')}else{tinyMCE.switchClass(editor_id+'_cite','mceButtonNormal');tinyMCE.switchClass(editor_id+'_acronym','mceButtonNormal');tinyMCE.switchClass(editor_id+'_abbr','mceButtonNormal');tinyMCE.switchClass(editor_id+'_del','mceButtonNormal');tinyMCE.switchClass(editor_id+'_ins','mceButtonNormal')}if(elm&&elm.nodeName!='BODY'&&elm.className.indexOf('mceItem')==-1)tinyMCE.switchClass(editor_id+'_attribs','mceButtonNormal');switch(node.nodeName){case"CITE":tinyMCE.switchClass(editor_id+'_cite','mceButtonSelected');return true;case"ACRONYM":tinyMCE.switchClass(editor_id+'_acronym','mceButtonSelected');return true;case"abbr":case"HTML:ABBR":case"ABBR":tinyMCE.switchClass(editor_id+'_abbr','mceButtonSelected');return true;case"DEL":tinyMCE.switchClass(editor_id+'_del','mceButtonSelected');return true;case"INS":tinyMCE.switchClass(editor_id+'_ins','mceButtonSelected');return true}return true},_anySel:function(editor_id){var inst=tinyMCE.getInstanceById(editor_id),t=inst.selection.getSelectedText(),pe;pe=tinyMCE.getParentElement(inst.getFocusElement(),'CITE,ACRONYM,ABBR,HTML:ABBR,DEL,INS');return pe||inst.getFocusElement().nodeName=="IMG"||(t&&t.length>0)}};tinyMCE.addPlugin("xhtmlxtras",TinyMCE_XHTMLXtrasPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/media/editor_plugin_src.js
New file
0,0 → 1,432
/**
* $Id: editor_plugin_src.js 296 2007-08-21 10:36:35Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
tinyMCE.importPluginLanguagePack('media');
 
var TinyMCE_MediaPlugin = {
getInfo : function() {
return {
longname : 'Media',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
initInstance : function(inst) {
// Warn if user has flash plugin and media plugin at the same time
if (inst.hasPlugin('flash') && !tinyMCE.flashWarn) {
alert('Flash plugin is deprecated and should not be used together with the media plugin.');
tinyMCE.flashWarn = true;
}
 
if (!tinyMCE.settings['media_skip_plugin_css'])
tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/media/css/content.css");
},
 
getControlHTML : function(cn) {
switch (cn) {
case "media":
return tinyMCE.getButtonHTML(cn, 'lang_media_desc', '{$pluginurl}/images/media.gif', 'mceMedia');
}
 
return "";
},
 
execCommand : function(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
case "mceMedia":
tinyMCE.openWindow({
file : '../../plugins/media/media.htm',
width : 430 + tinyMCE.getLang('lang_media_delta_width', 0),
height : 470 + tinyMCE.getLang('lang_media_delta_height', 0)
}, {
editor_id : editor_id,
inline : "yes"
});
 
return true;
}
 
// Pass to next handler in chain
return false;
},
 
cleanup : function(type, content, inst) {
var nl, img, i, ne, d, s, ci;
 
switch (type) {
case "insert_to_editor":
img = tinyMCE.getParam("theme_href") + '/images/spacer.gif';
content = content.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi, '<img class="mceItem$1" title="$2" src="' + img + '" />');
content = content.replace(/<object([^>]*)>/gi, '<div class="mceItemObject" $1>');
content = content.replace(/<embed([^>]*)>/gi, '<div class="mceItemObjectEmbed" $1>');
content = content.replace(/<\/(object|embed)([^>]*)>/gi, '</div>');
content = content.replace(/<param([^>]*)>/gi, '<div $1 class="mceItemParam"></div>');
content = content.replace(new RegExp('\\/ class="mceItemParam"><\\/div>', 'gi'), 'class="mceItemParam"></div>');
break;
 
case "insert_to_editor_dom":
d = inst.getDoc();
nl = content.getElementsByTagName("img");
for (i=0; i<nl.length; i++) {
if (/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(nl[i].className)) {
nl[i].width = nl[i].title.replace(/.*width:[^0-9]?([0-9]+)%?.*/g, '$1');
nl[i].height = nl[i].title.replace(/.*height:[^0-9]?([0-9]+)%?.*/g, '$1');
//nl[i].align = nl[i].title.replace(/.*align:([a-z]+).*/gi, '$1');
}
}
 
nl = tinyMCE.selectElements(content, 'DIV', function (n) {return tinyMCE.hasCSSClass(n, 'mceItemObject');});
for (i=0; i<nl.length; i++) {
ci = tinyMCE.getAttrib(nl[i], "classid").toLowerCase().replace(/\s+/g, '');
 
switch (ci) {
case 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000':
nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemFlash', d, nl[i]), nl[i]);
break;
 
case 'clsid:166b1bca-3f9c-11cf-8075-444553540000':
nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemShockWave', d, nl[i]), nl[i]);
break;
 
case 'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6':
case 'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95':
case 'clsid:05589fa1-c356-11ce-bf01-00aa0055595a':
nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemWindowsMedia', d, nl[i]), nl[i]);
break;
 
case 'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b':
nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemQuickTime', d, nl[i]), nl[i]);
break;
 
case 'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa':
nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemRealMedia', d, nl[i]), nl[i]);
break;
}
}
 
// Handle embed (if any)
nl = tinyMCE.selectNodes(content, function (n) {return n.className == 'mceItemObjectEmbed';});
for (i=0; i<nl.length; i++) {
switch (tinyMCE.getAttrib(nl[i], 'type')) {
case 'application/x-shockwave-flash':
TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemFlash');
break;
 
case 'application/x-director':
TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemShockWave');
break;
 
case 'application/x-mplayer2':
TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemWindowsMedia');
break;
 
case 'video/quicktime':
TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemQuickTime');
break;
 
case 'audio/x-pn-realaudio-plugin':
TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemRealMedia');
break;
}
}
break;
 
case "get_from_editor":
var startPos = -1, endPos, attribs, chunkBefore, chunkAfter, embedHTML, at, pl, cb, mt, ex;
 
while ((startPos = content.indexOf('<img', startPos+1)) != -1) {
endPos = content.indexOf('/>', startPos);
attribs = TinyMCE_MediaPlugin._parseAttributes(content.substring(startPos + 4, endPos));
 
// Is not flash, skip it
if (!/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(attribs['class']))
continue;
 
endPos += 2;
 
// Parse attributes
at = attribs['title'];
if (at) {
at = at.replace(/&(#39|apos);/g, "'");
at = at.replace(/&#quot;/g, '"');
 
try {
pl = eval('x={' + at + '};');
} catch (ex) {
pl = {};
}
}
 
// Use object/embed
if (!tinyMCE.getParam('media_use_script', false)) {
switch (attribs['class']) {
case 'mceItemFlash':
ci = 'd27cdb6e-ae6d-11cf-96b8-444553540000';
cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';
mt = 'application/x-shockwave-flash';
break;
 
case 'mceItemShockWave':
ci = '166B1BCA-3F9C-11CF-8075-444553540000';
cb = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';
mt = 'application/x-director';
break;
 
case 'mceItemWindowsMedia':
ci = tinyMCE.getParam('media_wmp6_compatible') ? '05589FA1-C356-11CE-BF01-00AA0055595A' : '6BF52A52-394A-11D3-B153-00C04F79FAA6';
cb = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
mt = 'application/x-mplayer2';
break;
 
case 'mceItemQuickTime':
ci = '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';
cb = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';
mt = 'video/quicktime';
break;
 
case 'mceItemRealMedia':
ci = 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA';
cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';
mt = 'audio/x-pn-realaudio-plugin';
break;
}
 
// Convert the URL
pl.src = tinyMCE.convertURL(pl.src, null, true);
 
embedHTML = TinyMCE_MediaPlugin._getEmbed(ci, cb, mt, pl, attribs);
} else {
// Use script version
switch (attribs['class']) {
case 'mceItemFlash':
s = 'writeFlash';
break;
 
case 'mceItemShockWave':
s = 'writeShockWave';
break;
 
case 'mceItemWindowsMedia':
s = 'writeWindowsMedia';
break;
 
case 'mceItemQuickTime':
s = 'writeQuickTime';
break;
 
case 'mceItemRealMedia':
s = 'writeRealMedia';
break;
}
 
if (attribs.width)
at = at.replace(/width:[^0-9]?[0-9]+%?[^0-9]?/g, "width:'" + attribs.width + "'");
 
if (attribs.height)
at = at.replace(/height:[^0-9]?[0-9]+%?[^0-9]?/g, "height:'" + attribs.height + "'");
 
// Force absolute URL
pl.src = tinyMCE.convertURL(pl.src, null, true);
at = at.replace(new RegExp("src:'[^']*'", "g"), "src:'" + pl.src + "'");
 
embedHTML = '<script type="text/javascript">' + s + '({' + at + '});</script>';
}
 
// Insert embed/object chunk
chunkBefore = content.substring(0, startPos);
chunkAfter = content.substring(endPos);
content = chunkBefore + embedHTML + chunkAfter;
}
break;
}
 
return content;
},
 
handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
if (node == null)
return;
 
do {
if (node.nodeName == "IMG" && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(node, 'class'))) {
tinyMCE.switchClass(editor_id + '_media', 'mceButtonSelected');
return true;
}
} while ((node = node.parentNode));
 
tinyMCE.switchClass(editor_id + '_media', 'mceButtonNormal');
 
return true;
},
 
_createImgFromEmbed : function(n, d, cl) {
var ne, at, i, ti = '', an;
 
ne = d.createElement('img');
ne.src = tinyMCE.getParam("theme_href") + '/images/spacer.gif';
ne.width = tinyMCE.getAttrib(n, 'width');
ne.height = tinyMCE.getAttrib(n, 'height');
ne.className = cl;
 
at = n.attributes;
for (i=0; i<at.length; i++) {
if (at[i].specified && at[i].nodeValue) {
an = at[i].nodeName.toLowerCase();
 
if (an == 'src')
continue;
 
if (an == 'mce_src')
an = 'src';
 
if (an.indexOf('mce_') == -1 && !new RegExp('^(class|type)$').test(an))
ti += an.toLowerCase() + ':\'' + at[i].nodeValue + "',";
}
}
 
ti = ti.length > 0 ? ti.substring(0, ti.length - 1) : ti;
ne.title = ti;
 
n.parentNode.replaceChild(ne, n);
},
 
_createImg : function(cl, d, n) {
var i, nl, ti = "", an, av, al = new Array();
 
ne = d.createElement('img');
ne.src = tinyMCE.getParam("theme_href") + '/images/spacer.gif';
ne.width = tinyMCE.getAttrib(n, 'width');
ne.height = tinyMCE.getAttrib(n, 'height');
ne.className = cl;
 
al.id = tinyMCE.getAttrib(n, 'id');
al.name = tinyMCE.getAttrib(n, 'name');
al.width = tinyMCE.getAttrib(n, 'width');
al.height = tinyMCE.getAttrib(n, 'height');
al.bgcolor = tinyMCE.getAttrib(n, 'bgcolor');
al.align = tinyMCE.getAttrib(n, 'align');
al.class_name = tinyMCE.getAttrib(n, 'mce_class');
 
nl = n.getElementsByTagName('div');
for (i=0; i<nl.length; i++) {
av = tinyMCE.getAttrib(nl[i], 'value');
av = av.replace(new RegExp('\\\\', 'g'), '\\\\');
av = av.replace(new RegExp('"', 'g'), '\\"');
av = av.replace(new RegExp("'", 'g'), "\\'");
an = tinyMCE.getAttrib(nl[i], 'name');
al[an] = av;
}
 
if (al.movie) {
al.src = al.movie;
al.movie = null;
}
 
for (an in al) {
if (al[an] != null && typeof(al[an]) != "function" && al[an] != '')
ti += an.toLowerCase() + ':\'' + al[an] + "',";
}
 
ti = ti.length > 0 ? ti.substring(0, ti.length - 1) : ti;
ne.title = ti;
 
return ne;
},
 
_getEmbed : function(cls, cb, mt, p, at) {
var h = '', n;
 
p.width = at.width ? at.width : p.width;
p.height = at.height ? at.height : p.height;
 
h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
h += typeof(p.id) != "undefined" ? ' id="' + p.id + '"' : '';
h += typeof(p.name) != "undefined" ? ' name="' + p.name + '"' : '';
h += typeof(p.width) != "undefined" ? ' width="' + p.width + '"' : '';
h += typeof(p.height) != "undefined" ? ' height="' + p.height + '"' : '';
h += typeof(p.align) != "undefined" ? ' align="' + p.align + '"' : '';
h += '>';
 
for (n in p) {
if (typeof(p[n]) != "undefined" && typeof(p[n]) != "function") {
h += '<param name="' + n + '" value="' + p[n] + '" />';
 
// Add extra url parameter if it's an absolute URL on WMP
if (n == 'src' && p[n].indexOf('://') != -1 && mt == 'application/x-mplayer2')
h += '<param name="url" value="' + p[n] + '" />';
}
}
 
h += '<embed type="' + mt + '"';
 
for (n in p) {
if (typeof(p[n]) == "function")
continue;
 
// Skip url parameter for embed tag on WMP
if (!(n == 'url' && mt == 'application/x-mplayer2'))
h += ' ' + n + '="' + p[n] + '"';
}
 
h += '></embed></object>';
 
return h;
},
 
_parseAttributes : function(attribute_string) {
var attributeName = "", endChr = '"';
var attributeValue = "";
var withInName;
var withInValue;
var attributes = new Array();
var whiteSpaceRegExp = new RegExp('^[ \n\r\t]+', 'g');
 
if (attribute_string == null || attribute_string.length < 2)
return null;
 
withInName = withInValue = false;
 
for (var i=0; i<attribute_string.length; i++) {
var chr = attribute_string.charAt(i);
 
if ((chr == '"' || chr == "'") && !withInValue) {
withInValue = true;
endChr = chr;
} else if (chr == endChr && withInValue) {
withInValue = false;
 
var pos = attributeName.lastIndexOf(' ');
if (pos != -1)
attributeName = attributeName.substring(pos+1);
 
attributes[attributeName.toLowerCase()] = attributeValue.substring(1);
 
attributeName = "";
attributeValue = "";
} else if (!whiteSpaceRegExp.test(chr) && !withInName && !withInValue)
withInName = true;
 
if (chr == '=' && withInName)
withInName = false;
 
if (withInName)
attributeName += chr;
 
if (withInValue)
attributeValue += chr;
}
 
return attributes;
}
};
 
tinyMCE.addPlugin("media", TinyMCE_MediaPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/media/media.htm
New file
0,0 → 1,723
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_media_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/media.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>
<link href="css/media.css" rel="stylesheet" type="text/css" />
<base target="_self" />
</head>
<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<form onsubmit="insertMedia();return false;" action="#">
<div class="tabs">
<ul>
<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');generatePreview();" onmousedown="return false;">{$lang_media_general}</a></span></li>
<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_media_advanced}</a></span></li>
</ul>
</div>
 
<div class="panel_wrapper">
<div id="general_panel" class="panel current">
<fieldset>
<legend>{$lang_media_general}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td><label for="media_type">{$lang_media_type}</label></td>
<td>
<select id="media_type" name="media_type" onchange="changedType(this.value);generatePreview();">
<option value="flash">Flash</option>
<option value="qt">Quicktime</option>
<option value="shockwave">Shockwave</option>
<option value="wmp">Windows Media</option>
<option value="rmp">Real Media</option>
</select>
</td>
</tr>
<tr>
<td><label for="src">{$lang_media_file}</label></td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input id="src" name="src" type="text" value="" onchange="switchType(this.value);generatePreview();" /></td>
<td id="filebrowsercontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr id="linklistrow">
<td><label for="linklist">{$lang_media_list}</label></td>
<td id="linklistcontainer">&nbsp;</td>
</tr>
<tr>
<td><label for="width">{$lang_media_size}</label></td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="text" id="width" name="width" value="" class="size" onchange="generatePreview('width');" /> x <input type="text" id="height" name="height" value="" class="size" onchange="generatePreview('height');" /></td>
<td>&nbsp;&nbsp;<input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>
<td><label id="constrainlabel" for="constrain">{$lang_media_constrain_proportions}</label></td>
</tr>
</table>
</tr>
</table>
</fieldset>
 
<fieldset>
<legend>{$lang_media_preview}</legend>
<div id="prev"></div>
</fieldset>
</div>
 
<div id="advanced_panel" class="panel">
<fieldset>
<legend>{$lang_media_advanced}</legend>
 
<table border="0" cellpadding="4" cellspacing="0" width="100%">
<tr>
<td><label for="id">{$lang_media_id}</label></td>
<td><input type="text" id="id" name="id" onchange="generatePreview();" /></td>
<td><label for="name">{$lang_media_name}</label></td>
<td><input type="text" id="name" name="name" onchange="generatePreview();" /></td>
</tr>
 
<tr>
<td><label for="align">{$lang_media_align}</label></td>
<td>
<select id="align" name="align" onchange="generatePreview();">
<option value="">{$lang_not_set}</option>
<option value="top">{$lang_media_align_top}</option>
<option value="right">{$lang_media_align_right}</option>
<option value="bottom">{$lang_media_align_bottom}</option>
<option value="left">{$lang_media_align_left}</option>
</select>
</td>
 
<td><label for="bgcolor">{$lang_media_bgcolor}</label></td>
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');generatePreview();" /></td>
<td id="bgcolor_pickcontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td><label for="vspace">{$lang_media_vspace}</label></td>
<td><input type="text" id="vspace" name="vspace" class="number" onchange="generatePreview();" /></td>
<td><label for="hspace">{$lang_media_hspace}</label></td>
<td><input type="text" id="hspace" name="hspace" class="number" onchange="generatePreview();" /></td>
</tr>
</table>
</fieldset>
 
<fieldset id="flash_options">
<legend>{$lang_media_flash_options}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td><label for="flash_quality">{$lang_media_quality}</label></td>
<td>
<select id="flash_quality" name="flash_quality" onchange="generatePreview();">
<option value="">{$lang_not_set}</option>
<option value="high">high</option>
<option value="low">low</option>
<option value="autolow">autolow</option>
<option value="autohigh">autohigh</option>
<option value="best">best</option>
</select>
</td>
 
<td><label for="flash_scale">{$lang_media_scale}</label></td>
<td>
<select id="flash_scale" name="flash_scale" onchange="generatePreview();">
<option value="">{$lang_not_set}</option>
<option value="showall">showall</option>
<option value="noborder">noborder</option>
<option value="exactfit">exactfit</option>
</select>
</td>
</tr>
 
<tr>
<td><label for="flash_wmode">{$lang_media_wmode}</label></td>
<td>
<select id="flash_wmode" name="flash_wmode" onchange="generatePreview();">
<option value="">{$lang_not_set}</option>
<option value="window">window</option>
<option value="opaque">opaque</option>
<option value="transparent">transparent</option>
</select>
</td>
 
<td><label for="flash_salign">{$lang_media_salign}</label></td>
<td>
<select id="flash_salign" name="flash_salign" onchange="generatePreview();">
<option value="">{$lang_not_set}</option>
<option value="l">{$lang_media_align_left}</option>
<option value="t">{$lang_media_align_top}</option>
<option value="r">{$lang_media_align_right}</option>
<option value="b">{$lang_media_align_bottom}</option>
<option value="tl">{$lang_media_align_top_left}</option>
<option value="tr">{$lang_media_align_top_right}</option>
<option value="bl">{$lang_media_align_bottom_left}</option>
<option value="br">{$lang_media_align_bottom_right}</option>
</select>
</td>
</tr>
 
<tr>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="flash_play" name="flash_play" checked="checked" onchange="generatePreview();" /></td>
<td><label for="flash_play">{$lang_media_play}</label></td>
</tr>
</table>
</td>
 
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="flash_loop" name="flash_loop" checked="checked" onchange="generatePreview();" /></td>
<td><label for="flash_loop">{$lang_media_loop}</label></td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="flash_menu" name="flash_menu" checked="checked" onchange="generatePreview();" /></td>
<td><label for="flash_menu">{$lang_media_menu}</label></td>
</tr>
</table>
</td>
 
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="flash_swliveconnect" name="flash_swliveconnect" onchange="generatePreview();" /></td>
<td><label for="flash_swliveconnect">{$lang_media_liveconnect}</label></td>
</tr>
</table>
</td>
</tr>
</table>
 
<table>
<tr>
<td><label for="flash_base">{$lang_media_base}</label></td>
<td><input type="text" id="flash_base" name="flash_base" onchange="generatePreview();" /></td>
</tr>
 
<tr>
<td><label for="flash_flashvars">{$lang_media_flashvars}</label></td>
<td><input type="text" id="flash_flashvars" name="flash_flashvars" onchange="generatePreview();" /></td>
</tr>
</table>
</fieldset>
 
<fieldset id="qt_options">
<legend>{$lang_media_qt_options}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="qt_loop" name="qt_loop" onchange="generatePreview();" /></td>
<td><label for="qt_loop">{$lang_media_loop}</label></td>
</tr>
</table>
</td>
 
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="qt_autoplay" name="qt_autoplay" checked="checked" onchange="generatePreview();" /></td>
<td><label for="qt_autoplay">{$lang_media_play}</label></td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="qt_cache" name="qt_cache" onchange="generatePreview();" /></td>
<td><label for="qt_cache">{$lang_media_cache}</label></td>
</tr>
</table>
</td>
 
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="qt_controller" name="qt_controller" checked="checked" onchange="generatePreview();" /></td>
<td><label for="qt_controller">{$lang_media_controller}</label></td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="qt_correction" name="qt_correction" onchange="generatePreview();" /></td>
<td><label for="qt_correction">{$lang_media_correction}</label></td>
</tr>
</table>
</td>
 
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="qt_enablejavascript" name="qt_enablejavascript" onchange="generatePreview();" /></td>
<td><label for="qt_enablejavascript">{$lang_media_enablejavascript}</label></td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="qt_kioskmode" name="qt_kioskmode" onchange="generatePreview();" /></td>
<td><label for="qt_kioskmode">{$lang_media_kioskmode}</label></td>
</tr>
</table>
</td>
 
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="qt_autohref" name="qt_autohref" onchange="generatePreview();" /></td>
<td><label for="qt_autohref">{$lang_media_autohref}</label></td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="qt_playeveryframe" name="qt_playeveryframe" onchange="generatePreview();" /></td>
<td><label for="qt_playeveryframe">{$lang_media_playeveryframe}</label></td>
</tr>
</table>
</td>
 
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="qt_targetcache" name="qt_targetcache" onchange="generatePreview();" /></td>
<td><label for="qt_targetcache">{$lang_media_targetcache}</label></td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td><label for="qt_scale">{$lang_media_scale}</label></td>
<td><select id="qt_scale" name="qt_scale" class="mceEditableSelect" onchange="generatePreview();">
<option value="">{$lang_not_set}</option>
<option value="tofit">tofit</option>
<option value="aspect">aspect</option>
</select>
</td>
 
<td colspan="2">&nbsp;</td>
</tr>
 
<tr>
<td><label for="qt_starttime">{$lang_media_starttime}</label></td>
<td><input type="text" id="qt_starttime" name="qt_starttime" onchange="generatePreview();" /></td>
 
<td><label for="qt_endtime">{$lang_media_endtime}</label></td>
<td><input type="text" id="qt_endtime" name="qt_endtime" onchange="generatePreview();" /></td>
</tr>
 
<tr>
<td><label for="qt_target">{$lang_media_target}</label></td>
<td><input type="text" id="qt_target" name="qt_target" onchange="generatePreview();" /></td>
 
<td><label for="qt_href">{$lang_media_href}</label></td>
<td><input type="text" id="qt_href" name="qt_href" onchange="generatePreview();" /></td>
</tr>
 
<tr>
<td><label for="qt_qtsrcchokespeed">{$lang_media_qtsrcchokespeed}</label></td>
<td><input type="text" id="qt_qtsrcchokespeed" name="qt_qtsrcchokespeed" onchange="generatePreview();" /></td>
 
<td><label for="qt_volume">{$lang_media_volume}</label></td>
<td><input type="text" id="qt_volume" name="qt_volume" onchange="generatePreview();" /></td>
</tr>
 
<tr>
<td><label for="qt_qtsrc">{$lang_media_qtsrc}</label></td>
<td colspan="4">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" id="qt_qtsrc" name="qt_qtsrc" onchange="generatePreview();" /></td>
<td id="qtsrcfilebrowsercontainer">&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>
</fieldset>
 
<fieldset id="wmp_options">
<legend>{$lang_media_wmp_options}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="wmp_autostart" name="wmp_autostart" checked="checked" onchange="generatePreview();" /></td>
<td><label for="wmp_autostart">{$lang_media_autostart}</label></td>
</tr>
</table>
</td>
 
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="wmp_enabled" name="wmp_enabled" onchange="generatePreview();" /></td>
<td><label for="wmp_enabled">{$lang_media_enabled}</label></td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="wmp_enablecontextmenu" name="wmp_enablecontextmenu" checked="checked" onchange="generatePreview();" /></td>
<td><label for="wmp_enablecontextmenu">{$lang_media_menu}</label></td>
</tr>
</table>
</td>
 
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="wmp_fullscreen" name="wmp_fullscreen" onchange="generatePreview();" /></td>
<td><label for="wmp_fullscreen">{$lang_media_fullscreen}</label></td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="wmp_invokeurls" name="wmp_invokeurls" checked="checked" onchange="generatePreview();" /></td>
<td><label for="wmp_invokeurls">{$lang_media_invokeurls}</label></td>
</tr>
</table>
</td>
 
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="wmp_mute" name="wmp_mute" onchange="generatePreview();" /></td>
<td><label for="wmp_mute">{$lang_media_mute}</label></td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="wmp_stretchtofit" name="wmp_stretchtofit" onchange="generatePreview();" /></td>
<td><label for="wmp_stretchtofit">{$lang_media_stretchtofit}</label></td>
</tr>
</table>
</td>
 
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="wmp_windowlessvideo" name="wmp_windowlessvideo" onchange="generatePreview();" /></td>
<td><label for="wmp_windowlessvideo">{$lang_media_windowlessvideo}</label></td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td><label for="wmp_balance">{$lang_media_balance}</label></td>
<td><input type="text" id="wmp_balance" name="wmp_balance" onchange="generatePreview();" /></td>
 
<td><label for="wmp_baseurl">{$lang_media_baseurl}</label></td>
<td><input type="text" id="wmp_baseurl" name="wmp_baseurl" onchange="generatePreview();" /></td>
</tr>
 
<tr>
<td><label for="wmp_captioningid">{$lang_media_captioningid}</label></td>
<td><input type="text" id="wmp_captioningid" name="wmp_captioningid" onchange="generatePreview();" /></td>
 
<td><label for="wmp_currentmarker">{$lang_media_currentmarker}</label></td>
<td><input type="text" id="wmp_currentmarker" name="wmp_currentmarker" onchange="generatePreview();" /></td>
</tr>
 
<tr>
<td><label for="wmp_currentposition">{$lang_media_currentposition}</label></td>
<td><input type="text" id="wmp_currentposition" name="wmp_currentposition" onchange="generatePreview();" /></td>
 
<td><label for="wmp_defaultframe">{$lang_media_defaultframe}</label></td>
<td><input type="text" id="wmp_defaultframe" name="wmp_defaultframe" onchange="generatePreview();" /></td>
</tr>
 
<tr>
<td><label for="wmp_playcount">{$lang_media_playcount}</label></td>
<td><input type="text" id="wmp_playcount" name="wmp_playcount" onchange="generatePreview();" /></td>
 
<td><label for="wmp_rate">{$lang_media_rate}</label></td>
<td><input type="text" id="wmp_rate" name="wmp_rate" onchange="generatePreview();" /></td>
</tr>
 
<tr>
<td><label for="wmp_uimode">{$lang_media_uimode}</label></td>
<td><input type="text" id="wmp_uimode" name="wmp_uimode" onchange="generatePreview();" /></td>
 
<td><label for="wmp_volume">{$lang_media_volume}</label></td>
<td><input type="text" id="wmp_volume" name="wmp_volume" onchange="generatePreview();" /></td>
</tr>
 
</table>
</fieldset>
 
<fieldset id="rmp_options">
<legend>{$lang_media_rmp_options}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="rmp_autostart" name="rmp_autostart" onchange="generatePreview();" /></td>
<td><label for="rmp_autostart">{$lang_media_autostart}</label></td>
</tr>
</table>
</td>
 
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="rmp_loop" name="rmp_loop" onchange="generatePreview();" /></td>
<td><label for="rmp_loop">{$lang_media_loop}</label></td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="rmp_autogotourl" name="rmp_autogotourl" checked="checked" onchange="generatePreview();" /></td>
<td><label for="rmp_autogotourl">{$lang_media_autogotourl}</label></td>
</tr>
</table>
</td>
 
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="rmp_center" name="rmp_center" onchange="generatePreview();" /></td>
<td><label for="rmp_center">{$lang_media_center}</label></td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="rmp_imagestatus" name="rmp_imagestatus" checked="checked" onchange="generatePreview();" /></td>
<td><label for="rmp_imagestatus">{$lang_media_imagestatus}</label></td>
</tr>
</table>
</td>
 
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="rmp_maintainaspect" name="rmp_maintainaspect" onchange="generatePreview();" /></td>
<td><label for="rmp_maintainaspect">{$lang_media_maintainaspect}</label></td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="rmp_nojava" name="rmp_nojava" onchange="generatePreview();" /></td>
<td><label for="rmp_nojava">{$lang_media_nojava}</label></td>
</tr>
</table>
</td>
 
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="rmp_prefetch" name="rmp_prefetch" onchange="generatePreview();" /></td>
<td><label for="rmp_prefetch">{$lang_media_prefetch}</label></td>
</tr>
</table>
</td>
</tr>
 
<tr>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="rmp_shuffle" name="rmp_shuffle" onchange="generatePreview();" /></td>
<td><label for="rmp_shuffle">{$lang_media_shuffle}</label></td>
</tr>
</table>
</td>
 
<td colspan="2">
&nbsp;
</td>
</tr>
 
<tr>
<td><label for="rmp_console">{$lang_media_console}</label></td>
<td><input type="text" id="rmp_console" name="rmp_console" onchange="generatePreview();" /></td>
 
<td><label for="rmp_controls">{$lang_media_controls}</label></td>
<td><input type="text" id="rmp_controls" name="rmp_controls" onchange="generatePreview();" /></td>
</tr>
 
<tr>
<td><label for="rmp_numloop">{$lang_media_numloop}</label></td>
<td><input type="text" id="rmp_numloop" name="rmp_numloop" onchange="generatePreview();" /></td>
 
<td><label for="rmp_scriptcallbacks">{$lang_media_scriptcallbacks}</label></td>
<td><input type="text" id="rmp_scriptcallbacks" name="rmp_scriptcallbacks" onchange="generatePreview();" /></td>
</tr>
</table>
</fieldset>
 
<fieldset id="shockwave_options">
<legend>{$lang_media_shockwave_options}</legend>
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td><label for="shockwave_swstretchstyle">{$lang_media_swstretchstyle}</label></td>
<td>
<select id="shockwave_swstretchstyle" name="shockwave_swstretchstyle" onchange="generatePreview();">
<option value="none">{$lang_not_set}</option>
<option value="meet">Meet</option>
<option value="fill">Fill</option>
<option value="stage">Stage</option>
</select>
</td>
 
<td><label for="shockwave_swvolume">{$lang_media_volume}</label></td>
<td><input type="text" id="shockwave_swvolume" name="shockwave_swvolume" onchange="generatePreview();" /></td>
</tr>
 
<tr>
<td><label for="shockwave_swstretchhalign">{$lang_media_swstretchhalign}</label></td>
<td>
<select id="shockwave_swstretchhalign" name="shockwave_swstretchhalign" onchange="generatePreview();">
<option value="none">{$lang_not_set}</option>
<option value="left">{$lang_media_align_left}</option>
<option value="center">{$lang_media_align_center}</option>
<option value="right">{$lang_media_align_right}</option>
</select>
</td>
 
<td><label for="shockwave_swstretchvalign">{$lang_media_swstretchvalign}</label></td>
<td>
<select id="shockwave_swstretchvalign" name="shockwave_swstretchvalign" onchange="generatePreview();">
<option value="none">{$lang_not_set}</option>
<option value="meet">Meet</option>
<option value="fill">Fill</option>
<option value="stage">Stage</option>
</select>
</td>
</tr>
 
<tr>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="shockwave_autostart" name="shockwave_autostart" onchange="generatePreview();" checked="checked" /></td>
<td><label for="shockwave_autostart">{$lang_media_autostart}</label></td>
</tr>
</table>
</td>
 
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="shockwave_sound" name="shockwave_sound" onchange="generatePreview();" checked="checked" /></td>
<td><label for="shockwave_sound">{$lang_media_sound}</label></td>
</tr>
</table>
</td>
</tr>
 
 
<tr>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="shockwave_swliveconnect" name="shockwave_swliveconnect" onchange="generatePreview();" /></td>
<td><label for="shockwave_swliveconnect">{$lang_media_liveconnect}</label></td>
</tr>
</table>
</td>
 
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" class="checkbox" id="shockwave_progress" name="shockwave_progress" onchange="generatePreview();" checked="checked" /></td>
<td><label for="shockwave_progress">{$lang_media_progress}</label></td>
</tr>
</table>
</td>
</tr>
</table>
</fieldset>
</div>
</div>
 
<div class="mceActionPanel">
<div style="float: left">
<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertMedia();" />
</div>
 
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
</div>
</div>
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/media/css/content.css
New file
0,0 → 1,26
.mceItemFlash, .mceItemShockWave, .mceItemQuickTime, .mceItemWindowsMedia, .mceItemRealMedia {
border: 1px dotted #cc0000;
background-position: center;
background-repeat: no-repeat;
background-color: #ffffcc;
}
 
.mceItemShockWave {
background-image: url('../images/shockwave.gif');
}
 
.mceItemFlash {
background-image: url('../images/flash.gif');
}
 
.mceItemQuickTime {
background-image: url('../images/quicktime.gif');
}
 
.mceItemWindowsMedia {
background-image: url('../images/windowsmedia.gif');
}
 
.mceItemRealMedia {
background-image: url('../images/realmedia.gif');
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/media/css/media.css
New file
0,0 → 1,68
#id, #name, #hspace, #vspace, #class_name, #align {
width: 100px;
}
 
#hspace, #vspace {
width: 50px;
}
 
#flash_quality, #flash_align, #flash_scale, #flash_salign, #flash_wmode {
width: 100px;
}
 
#flash_base, #flash_flashvars {
width: 240px;
}
 
#width, #height {
width: 40px;
}
 
#src, #media_type {
width: 250px;
}
 
#class {
width: 120px;
}
 
#prev {
margin: 0;
border: 1px solid black;
width: 99%;
height: 230px;
overflow: auto;
}
 
.panel_wrapper div.current {
height: 390px;
overflow: auto;
}
 
#flash_options, #shockwave_options, #qt_options, #wmp_options, #rmp_options {
display: none;
}
 
.mceAddSelectValue {
background-color: #DDDDDD;
}
 
#qt_starttime, #qt_endtime, #qt_fov, #qt_href, #qt_moveid, #qt_moviename, #qt_node, #qt_pan, #qt_qtsrc, #qt_qtsrcchokespeed, #qt_target, #qt_tilt, #qt_urlsubstituten, #qt_volume {
width: 70px;
}
 
#wmp_balance, #wmp_baseurl, #wmp_captioningid, #wmp_currentmarker, #wmp_currentposition, #wmp_defaultframe, #wmp_playcount, #wmp_rate, #wmp_uimode, #wmp_volume {
width: 70px;
}
 
#rmp_console, #rmp_numloop, #rmp_controls, #rmp_scriptcallbacks {
width: 70px;
}
 
#shockwave_swvolume, #shockwave_swframe, #shockwave_swurl, #shockwave_swstretchvalign, #shockwave_swstretchhalign, #shockwave_swstretchstyle {
width: 90px;
}
 
#qt_qtsrc {
width: 200px;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/media/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('media');var TinyMCE_MediaPlugin={getInfo:function(){return{longname:'Media',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(inst.hasPlugin('flash')&&!tinyMCE.flashWarn){alert('Flash plugin is deprecated and should not be used together with the media plugin.');tinyMCE.flashWarn=true}if(!tinyMCE.settings['media_skip_plugin_css'])tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/media/css/content.css")},getControlHTML:function(cn){switch(cn){case"media":return tinyMCE.getButtonHTML(cn,'lang_media_desc','{$pluginurl}/images/media.gif','mceMedia')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceMedia":tinyMCE.openWindow({file:'../../plugins/media/media.htm',width:430+tinyMCE.getLang('lang_media_delta_width',0),height:470+tinyMCE.getLang('lang_media_delta_height',0)},{editor_id:editor_id,inline:"yes"});return true}return false},cleanup:function(type,content,inst){var nl,img,i,ne,d,s,ci;switch(type){case"insert_to_editor":img=tinyMCE.getParam("theme_href")+'/images/spacer.gif';content=content.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi,'<img class="mceItem$1" title="$2" src="'+img+'" />');content=content.replace(/<object([^>]*)>/gi,'<div class="mceItemObject" $1>');content=content.replace(/<embed([^>]*)>/gi,'<div class="mceItemObjectEmbed" $1>');content=content.replace(/<\/(object|embed)([^>]*)>/gi,'</div>');content=content.replace(/<param([^>]*)>/gi,'<div $1 class="mceItemParam"></div>');content=content.replace(new RegExp('\\/ class="mceItemParam"><\\/div>','gi'),'class="mceItemParam"></div>');break;case"insert_to_editor_dom":d=inst.getDoc();nl=content.getElementsByTagName("img");for(i=0;i<nl.length;i++){if(/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(nl[i].className)){nl[i].width=nl[i].title.replace(/.*width:[^0-9]?([0-9]+)%?.*/g,'$1');nl[i].height=nl[i].title.replace(/.*height:[^0-9]?([0-9]+)%?.*/g,'$1');}}nl=tinyMCE.selectElements(content,'DIV',function(n){return tinyMCE.hasCSSClass(n,'mceItemObject')});for(i=0;i<nl.length;i++){ci=tinyMCE.getAttrib(nl[i],"classid").toLowerCase().replace(/\s+/g,'');switch(ci){case'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemFlash',d,nl[i]),nl[i]);break;case'clsid:166b1bca-3f9c-11cf-8075-444553540000':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemShockWave',d,nl[i]),nl[i]);break;case'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6':case'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95':case'clsid:05589fa1-c356-11ce-bf01-00aa0055595a':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemWindowsMedia',d,nl[i]),nl[i]);break;case'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemQuickTime',d,nl[i]),nl[i]);break;case'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemRealMedia',d,nl[i]),nl[i]);break}}nl=tinyMCE.selectNodes(content,function(n){return n.className=='mceItemObjectEmbed'});for(i=0;i<nl.length;i++){switch(tinyMCE.getAttrib(nl[i],'type')){case'application/x-shockwave-flash':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemFlash');break;case'application/x-director':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemShockWave');break;case'application/x-mplayer2':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemWindowsMedia');break;case'video/quicktime':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemQuickTime');break;case'audio/x-pn-realaudio-plugin':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemRealMedia');break}}break;case"get_from_editor":var startPos=-1,endPos,attribs,chunkBefore,chunkAfter,embedHTML,at,pl,cb,mt,ex;while((startPos=content.indexOf('<img',startPos+1))!=-1){endPos=content.indexOf('/>',startPos);attribs=TinyMCE_MediaPlugin._parseAttributes(content.substring(startPos+4,endPos));if(!/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(attribs['class']))continue;endPos+=2;at=attribs['title'];if(at){at=at.replace(/&(#39|apos);/g,"'");at=at.replace(/&#quot;/g,'"');try{pl=eval('x={'+at+'};')}catch(ex){pl={}}}if(!tinyMCE.getParam('media_use_script',false)){switch(attribs['class']){case'mceItemFlash':ci='d27cdb6e-ae6d-11cf-96b8-444553540000';cb='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';mt='application/x-shockwave-flash';break;case'mceItemShockWave':ci='166B1BCA-3F9C-11CF-8075-444553540000';cb='http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';mt='application/x-director';break;case'mceItemWindowsMedia':ci=tinyMCE.getParam('media_wmp6_compatible')?'05589FA1-C356-11CE-BF01-00AA0055595A':'6BF52A52-394A-11D3-B153-00C04F79FAA6';cb='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';mt='application/x-mplayer2';break;case'mceItemQuickTime':ci='02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';cb='http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';mt='video/quicktime';break;case'mceItemRealMedia':ci='CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA';cb='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';mt='audio/x-pn-realaudio-plugin';break}pl.src=tinyMCE.convertURL(pl.src,null,true);embedHTML=TinyMCE_MediaPlugin._getEmbed(ci,cb,mt,pl,attribs)}else{switch(attribs['class']){case'mceItemFlash':s='writeFlash';break;case'mceItemShockWave':s='writeShockWave';break;case'mceItemWindowsMedia':s='writeWindowsMedia';break;case'mceItemQuickTime':s='writeQuickTime';break;case'mceItemRealMedia':s='writeRealMedia';break}if(attribs.width)at=at.replace(/width:[^0-9]?[0-9]+%?[^0-9]?/g,"width:'"+attribs.width+"'");if(attribs.height)at=at.replace(/height:[^0-9]?[0-9]+%?[^0-9]?/g,"height:'"+attribs.height+"'");pl.src=tinyMCE.convertURL(pl.src,null,true);at=at.replace(new RegExp("src:'[^']*'","g"),"src:'"+pl.src+"'");embedHTML='<script type="text/javascript">'+s+'({'+at+'});</script>'}chunkBefore=content.substring(0,startPos);chunkAfter=content.substring(endPos);content=chunkBefore+embedHTML+chunkAfter}break}return content},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;do{if(node.nodeName=="IMG"&&/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(node,'class'))){tinyMCE.switchClass(editor_id+'_media','mceButtonSelected');return true}}while((node=node.parentNode));tinyMCE.switchClass(editor_id+'_media','mceButtonNormal');return true},_createImgFromEmbed:function(n,d,cl){var ne,at,i,ti='',an;ne=d.createElement('img');ne.src=tinyMCE.getParam("theme_href")+'/images/spacer.gif';ne.width=tinyMCE.getAttrib(n,'width');ne.height=tinyMCE.getAttrib(n,'height');ne.className=cl;at=n.attributes;for(i=0;i<at.length;i++){if(at[i].specified&&at[i].nodeValue){an=at[i].nodeName.toLowerCase();if(an=='src')continue;if(an=='mce_src')an='src';if(an.indexOf('mce_')==-1&&!new RegExp('^(class|type)$').test(an))ti+=an.toLowerCase()+':\''+at[i].nodeValue+"',"}}ti=ti.length>0?ti.substring(0,ti.length-1):ti;ne.title=ti;n.parentNode.replaceChild(ne,n)},_createImg:function(cl,d,n){var i,nl,ti="",an,av,al=new Array();ne=d.createElement('img');ne.src=tinyMCE.getParam("theme_href")+'/images/spacer.gif';ne.width=tinyMCE.getAttrib(n,'width');ne.height=tinyMCE.getAttrib(n,'height');ne.className=cl;al.id=tinyMCE.getAttrib(n,'id');al.name=tinyMCE.getAttrib(n,'name');al.width=tinyMCE.getAttrib(n,'width');al.height=tinyMCE.getAttrib(n,'height');al.bgcolor=tinyMCE.getAttrib(n,'bgcolor');al.align=tinyMCE.getAttrib(n,'align');al.class_name=tinyMCE.getAttrib(n,'mce_class');nl=n.getElementsByTagName('div');for(i=0;i<nl.length;i++){av=tinyMCE.getAttrib(nl[i],'value');av=av.replace(new RegExp('\\\\','g'),'\\\\');av=av.replace(new RegExp('"','g'),'\\"');av=av.replace(new RegExp("'",'g'),"\\'");an=tinyMCE.getAttrib(nl[i],'name');al[an]=av}if(al.movie){al.src=al.movie;al.movie=null}for(an in al){if(al[an]!=null&&typeof(al[an])!="function"&&al[an]!='')ti+=an.toLowerCase()+':\''+al[an]+"',"}ti=ti.length>0?ti.substring(0,ti.length-1):ti;ne.title=ti;return ne},_getEmbed:function(cls,cb,mt,p,at){var h='',n;p.width=at.width?at.width:p.width;p.height=at.height?at.height:p.height;h+='<object classid="clsid:'+cls+'" codebase="'+cb+'"';h+=typeof(p.id)!="undefined"?' id="'+p.id+'"':'';h+=typeof(p.name)!="undefined"?' name="'+p.name+'"':'';h+=typeof(p.width)!="undefined"?' width="'+p.width+'"':'';h+=typeof(p.height)!="undefined"?' height="'+p.height+'"':'';h+=typeof(p.align)!="undefined"?' align="'+p.align+'"':'';h+='>';for(n in p){if(typeof(p[n])!="undefined"&&typeof(p[n])!="function"){h+='<param name="'+n+'" value="'+p[n]+'" />';if(n=='src'&&p[n].indexOf('://')!=-1&&mt=='application/x-mplayer2')h+='<param name="url" value="'+p[n]+'" />'}}h+='<embed type="'+mt+'"';for(n in p){if(typeof(p[n])=="function")continue;if(!(n=='url'&&mt=='application/x-mplayer2'))h+=' '+n+'="'+p[n]+'"'}h+='></embed></object>';return h},_parseAttributes:function(attribute_string){var attributeName="",endChr='"';var attributeValue="";var withInName;var withInValue;var attributes=new Array();var whiteSpaceRegExp=new RegExp('^[ \n\r\t]+','g');if(attribute_string==null||attribute_string.length<2)return null;withInName=withInValue=false;for(var i=0;i<attribute_string.length;i++){var chr=attribute_string.charAt(i);if((chr=='"'||chr=="'")&&!withInValue){withInValue=true;endChr=chr}else if(chr==endChr&&withInValue){withInValue=false;var pos=attributeName.lastIndexOf(' ');if(pos!=-1)attributeName=attributeName.substring(pos+1);attributes[attributeName.toLowerCase()]=attributeValue.substring(1);attributeName="";attributeValue=""}else if(!whiteSpaceRegExp.test(chr)&&!withInName&&!withInValue)withInName=true;if(chr=='='&&withInName)withInName=false;if(withInName)attributeName+=chr;if(withInValue)attributeValue+=chr}return attributes}};tinyMCE.addPlugin("media",TinyMCE_MediaPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/media/jscripts/embed.js
New file
0,0 → 1,73
/**
* This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.
*/
 
function writeFlash(p) {
writeEmbed(
'D27CDB6E-AE6D-11cf-96B8-444553540000',
'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
'application/x-shockwave-flash',
p
);
}
 
function writeShockWave(p) {
writeEmbed(
'166B1BCA-3F9C-11CF-8075-444553540000',
'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
'application/x-director',
p
);
}
 
function writeQuickTime(p) {
writeEmbed(
'02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
'video/quicktime',
p
);
}
 
function writeRealMedia(p) {
writeEmbed(
'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
'audio/x-pn-realaudio-plugin',
p
);
}
 
function writeWindowsMedia(p) {
p.url = p.src;
writeEmbed(
'6BF52A52-394A-11D3-B153-00C04F79FAA6',
'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
'application/x-mplayer2',
p
);
}
 
function writeEmbed(cls, cb, mt, p) {
var h = '', n;
 
h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
h += '>';
 
for (n in p)
h += '<param name="' + n + '" value="' + p[n] + '">';
 
h += '<embed type="' + mt + '"';
 
for (n in p)
h += n + '="' + p[n] + '" ';
 
h += '></embed></object>';
 
document.write(h);
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/media/jscripts/media.js
New file
0,0 → 1,594
var oldWidth, oldHeight;
var url = tinyMCE.getParam("media_external_list_url");
if (url != null) {
// Fix relative
if (url.charAt(0) != '/' && url.indexOf('://') == -1)
url = tinyMCE.documentBasePath + "/" + url;
 
document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
}
 
function init() {
var pl = "", f, val;
var type = "flash", fe, i;
 
tinyMCEPopup.resizeToInnerSize();
f = document.forms[0]
 
fe = tinyMCE.selectedInstance.getFocusElement();
if (/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(fe, 'class'))) {
pl = "x={" + fe.title + "};";
 
switch (tinyMCE.getAttrib(fe, 'class')) {
case 'mceItemFlash':
type = 'flash';
break;
 
case 'mceItemShockWave':
type = 'shockwave';
break;
 
case 'mceItemWindowsMedia':
type = 'wmp';
break;
 
case 'mceItemQuickTime':
type = 'qt';
break;
 
case 'mceItemRealMedia':
type = 'rmp';
break;
}
 
document.forms[0].insert.value = tinyMCE.getLang('lang_update', 'Insert', true);
}
 
document.getElementById('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media');
document.getElementById('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','qt_qtsrc','media','media');
document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
 
var html = getMediaListHTML('filebrowser','src','media','media');
if (html == "")
document.getElementById("linklistrow").style.display = 'none';
else
document.getElementById("linklistcontainer").innerHTML = html;
 
// Resize some elements
if (isVisible('filebrowsercontainer'))
document.getElementById('src').style.width = '230px';
 
// Setup form
if (pl != "") {
pl = eval(pl);
 
switch (type) {
case "flash":
setBool(pl, 'flash', 'play');
setBool(pl, 'flash', 'loop');
setBool(pl, 'flash', 'menu');
setBool(pl, 'flash', 'swliveconnect');
setStr(pl, 'flash', 'quality');
setStr(pl, 'flash', 'scale');
setStr(pl, 'flash', 'salign');
setStr(pl, 'flash', 'wmode');
setStr(pl, 'flash', 'base');
setStr(pl, 'flash', 'flashvars');
break;
 
case "qt":
setBool(pl, 'qt', 'loop');
setBool(pl, 'qt', 'autoplay');
setBool(pl, 'qt', 'cache');
setBool(pl, 'qt', 'controller');
setBool(pl, 'qt', 'correction');
setBool(pl, 'qt', 'enablejavascript');
setBool(pl, 'qt', 'kioskmode');
setBool(pl, 'qt', 'autohref');
setBool(pl, 'qt', 'playeveryframe');
setBool(pl, 'qt', 'tarsetcache');
setStr(pl, 'qt', 'scale');
setStr(pl, 'qt', 'starttime');
setStr(pl, 'qt', 'endtime');
setStr(pl, 'qt', 'tarset');
setStr(pl, 'qt', 'qtsrcchokespeed');
setStr(pl, 'qt', 'volume');
setStr(pl, 'qt', 'qtsrc');
break;
 
case "shockwave":
setBool(pl, 'shockwave', 'sound');
setBool(pl, 'shockwave', 'progress');
setBool(pl, 'shockwave', 'autostart');
setBool(pl, 'shockwave', 'swliveconnect');
setStr(pl, 'shockwave', 'swvolume');
setStr(pl, 'shockwave', 'swstretchstyle');
setStr(pl, 'shockwave', 'swstretchhalign');
setStr(pl, 'shockwave', 'swstretchvalign');
break;
 
case "wmp":
setBool(pl, 'wmp', 'autostart');
setBool(pl, 'wmp', 'enabled');
setBool(pl, 'wmp', 'enablecontextmenu');
setBool(pl, 'wmp', 'fullscreen');
setBool(pl, 'wmp', 'invokeurls');
setBool(pl, 'wmp', 'mute');
setBool(pl, 'wmp', 'stretchtofit');
setBool(pl, 'wmp', 'windowlessvideo');
setStr(pl, 'wmp', 'balance');
setStr(pl, 'wmp', 'baseurl');
setStr(pl, 'wmp', 'captioningid');
setStr(pl, 'wmp', 'currentmarker');
setStr(pl, 'wmp', 'currentposition');
setStr(pl, 'wmp', 'defaultframe');
setStr(pl, 'wmp', 'playcount');
setStr(pl, 'wmp', 'rate');
setStr(pl, 'wmp', 'uimode');
setStr(pl, 'wmp', 'volume');
break;
 
case "rmp":
setBool(pl, 'rmp', 'autostart');
setBool(pl, 'rmp', 'loop');
setBool(pl, 'rmp', 'autogotourl');
setBool(pl, 'rmp', 'center');
setBool(pl, 'rmp', 'imagestatus');
setBool(pl, 'rmp', 'maintainaspect');
setBool(pl, 'rmp', 'nojava');
setBool(pl, 'rmp', 'prefetch');
setBool(pl, 'rmp', 'shuffle');
setStr(pl, 'rmp', 'console');
setStr(pl, 'rmp', 'controls');
setStr(pl, 'rmp', 'numloop');
setStr(pl, 'rmp', 'scriptcallbacks');
break;
}
 
setStr(pl, null, 'src');
setStr(pl, null, 'id');
setStr(pl, null, 'name');
setStr(pl, null, 'vspace');
setStr(pl, null, 'hspace');
setStr(pl, null, 'bgcolor');
setStr(pl, null, 'align');
setStr(pl, null, 'width');
setStr(pl, null, 'height');
 
if ((val = tinyMCE.getAttrib(fe, "width")) != "")
pl.width = f.width.value = val;
 
if ((val = tinyMCE.getAttrib(fe, "height")) != "")
pl.height = f.height.value = val;
 
oldWidth = pl.width ? parseInt(pl.width) : 0;
oldHeight = pl.height ? parseInt(pl.height) : 0;
} else
oldWidth = oldHeight = 0;
 
selectByValue(f, 'media_type', type);
changedType(type);
updateColor('bgcolor_pick', 'bgcolor');
 
TinyMCE_EditableSelects.init();
generatePreview();
}
 
function insertMedia() {
var fe, f = document.forms[0], h;
 
if (!AutoValidator.validate(f)) {
alert(tinyMCE.getLang('lang_invalid_data'));
return false;
}
 
f.width.value = f.width.value == "" ? 100 : f.width.value;
f.height.value = f.height.value == "" ? 100 : f.height.value;
 
fe = tinyMCE.selectedInstance.getFocusElement();
if (fe != null && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(fe, 'class'))) {
switch (f.media_type.options[f.media_type.selectedIndex].value) {
case "flash":
fe.className = "mceItemFlash";
break;
 
case "shockwave":
fe.className = "mceItemShockWave";
break;
 
case "qt":
fe.className = "mceItemQuickTime";
break;
 
case "wmp":
fe.className = "mceItemWindowsMedia";
break;
 
case "rmp":
fe.className = "mceItemRealMedia";
break;
}
 
if (fe.width != f.width.value || fe.height != f.height.height)
tinyMCE.selectedInstance.repaint();
 
fe.title = serializeParameters();
fe.width = f.width.value;
fe.height = f.height.value;
fe.style.width = f.width.value + (f.width.value.indexOf('%') == -1 ? 'px' : '');
fe.style.height = f.height.value + (f.height.value.indexOf('%') == -1 ? 'px' : '');
fe.align = f.align.options[f.align.selectedIndex].value;
} else {
h = '<img src="' + tinyMCE.getParam("theme_href") + '/images/spacer.gif"' ;
 
switch (f.media_type.options[f.media_type.selectedIndex].value) {
case "flash":
h += ' class="mceItemFlash"';
break;
 
case "shockwave":
h += ' class="mceItemShockWave"';
break;
 
case "qt":
h += ' class="mceItemQuickTime"';
break;
 
case "wmp":
h += ' class="mceItemWindowsMedia"';
break;
 
case "rmp":
h += ' class="mceItemRealMedia"';
break;
}
 
h += ' title="' + serializeParameters() + '"';
h += ' width="' + f.width.value + '"';
h += ' height="' + f.height.value + '"';
h += ' align="' + f.align.options[f.align.selectedIndex].value + '"';
 
h += ' />';
 
tinyMCE.selectedInstance.execCommand('mceInsertContent', false, h);
}
 
tinyMCEPopup.close();
}
 
function getMediaListHTML() {
if (typeof(tinyMCEMediaList) != "undefined" && tinyMCEMediaList.length > 0) {
var html = "";
 
html += '<select id="linklist" name="linklist" style="width: 250px" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.src.value=this.options[this.selectedIndex].value;">';
html += '<option value="">---</option>';
 
for (var i=0; i<tinyMCEMediaList.length; i++)
html += '<option value="' + tinyMCEMediaList[i][1] + '">' + tinyMCEMediaList[i][0] + '</option>';
 
html += '</select>';
 
return html;
}
 
return "";
}
 
function getType(v) {
var fo, i, c, el, x, f = document.forms[0];
 
fo = tinyMCE.getParam("media_types", "flash=swf;shockwave=dcr;qt=mov,qt,mpg,mp3,mp4,mpeg;shockwave=dcr;wmp=avi,wmv,wm,asf,asx,wmx,wvx;rmp=rm,ra,ram").split(';');
 
// YouTube
if (v.indexOf('http://www.youtube.com/watch?v=') == 0 || v.indexOf('http://youtube.com/watch?v=') == 0) {
f.width.value = '425';
f.height.value = '350';
 
v = v.replace('http://youtube.com/watch?v=', '');
v = v.replace('http://www.youtube.com/watch?v=', '');
 
f.src.value = 'http://www.youtube.com/v/' + v;
return 'flash';
}
 
// Google video
if (v.indexOf('http://video.google.com/videoplay?docid=') == 0) {
f.width.value = '425';
f.height.value = '326';
f.src.value = 'http://video.google.com/googleplayer.swf?docId=' + v.substring('http://video.google.com/videoplay?docid='.length) + '&hl=en';
return 'flash';
}
 
for (i=0; i<fo.length; i++) {
c = fo[i].split('=');
 
el = c[1].split(',');
for (x=0; x<el.length; x++)
if (v.indexOf('.' + el[x]) != -1)
return c[0];
}
 
return null;
}
 
function switchType(v) {
var t = getType(v), d = document, f = d.forms[0];
 
if (!t)
return;
 
selectByValue(d.forms[0], 'media_type', t);
changedType(t);
 
// Update qtsrc also
if (t == 'qt' && f.src.value.toLowerCase().indexOf('rtsp://') != -1) {
alert(tinyMCE.getLang("lang_media_qt_stream_warn"));
 
if (f.qt_qtsrc.value == '')
f.qt_qtsrc.value = f.src.value;
}
}
 
function changedType(t) {
var d = document;
 
d.getElementById('flash_options').style.display = 'none';
d.getElementById('qt_options').style.display = 'none';
d.getElementById('shockwave_options').style.display = 'none';
d.getElementById('wmp_options').style.display = 'none';
d.getElementById('rmp_options').style.display = 'none';
d.getElementById(t + '_options').style.display = 'block';
}
 
function serializeParameters() {
var d = document, f = d.forms[0], s = '';
 
switch (f.media_type.options[f.media_type.selectedIndex].value) {
case "flash":
s += getBool('flash', 'play', true);
s += getBool('flash', 'loop', true);
s += getBool('flash', 'menu', true);
s += getBool('flash', 'swliveconnect', false);
s += getStr('flash', 'quality');
s += getStr('flash', 'scale');
s += getStr('flash', 'salign');
s += getStr('flash', 'wmode');
s += getStr('flash', 'base');
s += getStr('flash', 'flashvars');
break;
 
case "qt":
s += getBool('qt', 'loop', false);
s += getBool('qt', 'autoplay', true);
s += getBool('qt', 'cache', false);
s += getBool('qt', 'controller', true);
s += getBool('qt', 'correction', false, 'none', 'full');
s += getBool('qt', 'enablejavascript', false);
s += getBool('qt', 'kioskmode', false);
s += getBool('qt', 'autohref', false);
s += getBool('qt', 'playeveryframe', false);
s += getBool('qt', 'targetcache', false);
s += getStr('qt', 'scale');
s += getStr('qt', 'starttime');
s += getStr('qt', 'endtime');
s += getStr('qt', 'target');
s += getStr('qt', 'qtsrcchokespeed');
s += getStr('qt', 'volume');
s += getStr('qt', 'qtsrc');
break;
 
case "shockwave":
s += getBool('shockwave', 'sound');
s += getBool('shockwave', 'progress');
s += getBool('shockwave', 'autostart');
s += getBool('shockwave', 'swliveconnect');
s += getStr('shockwave', 'swvolume');
s += getStr('shockwave', 'swstretchstyle');
s += getStr('shockwave', 'swstretchhalign');
s += getStr('shockwave', 'swstretchvalign');
break;
 
case "wmp":
s += getBool('wmp', 'autostart', true);
s += getBool('wmp', 'enabled', false);
s += getBool('wmp', 'enablecontextmenu', true);
s += getBool('wmp', 'fullscreen', false);
s += getBool('wmp', 'invokeurls', true);
s += getBool('wmp', 'mute', false);
s += getBool('wmp', 'stretchtofit', false);
s += getBool('wmp', 'windowlessvideo', false);
s += getStr('wmp', 'balance');
s += getStr('wmp', 'baseurl');
s += getStr('wmp', 'captioningid');
s += getStr('wmp', 'currentmarker');
s += getStr('wmp', 'currentposition');
s += getStr('wmp', 'defaultframe');
s += getStr('wmp', 'playcount');
s += getStr('wmp', 'rate');
s += getStr('wmp', 'uimode');
s += getStr('wmp', 'volume');
break;
 
case "rmp":
s += getBool('rmp', 'autostart', false);
s += getBool('rmp', 'loop', false);
s += getBool('rmp', 'autogotourl', true);
s += getBool('rmp', 'center', false);
s += getBool('rmp', 'imagestatus', true);
s += getBool('rmp', 'maintainaspect', false);
s += getBool('rmp', 'nojava', false);
s += getBool('rmp', 'prefetch', false);
s += getBool('rmp', 'shuffle', false);
s += getStr('rmp', 'console');
s += getStr('rmp', 'controls');
s += getStr('rmp', 'numloop');
s += getStr('rmp', 'scriptcallbacks');
break;
}
 
s += getStr(null, 'id');
s += getStr(null, 'name');
s += getStr(null, 'src');
s += getStr(null, 'align');
s += getStr(null, 'bgcolor');
s += getInt(null, 'vspace');
s += getInt(null, 'hspace');
s += getStr(null, 'width');
s += getStr(null, 'height');
 
s = s.length > 0 ? s.substring(0, s.length - 1) : s;
 
return s;
}
 
function setBool(pl, p, n) {
if (typeof(pl[n]) == "undefined")
return;
 
document.forms[0].elements[p + "_" + n].checked = pl[n];
}
 
function setStr(pl, p, n) {
var f = document.forms[0], e = f.elements[(p != null ? p + "_" : '') + n];
 
if (typeof(pl[n]) == "undefined")
return;
 
if (e.type == "text")
e.value = pl[n];
else
selectByValue(f, (p != null ? p + "_" : '') + n, pl[n]);
}
 
function getBool(p, n, d, tv, fv) {
var v = document.forms[0].elements[p + "_" + n].checked;
 
tv = typeof(tv) == 'undefined' ? 'true' : "'" + jsEncode(tv) + "'";
fv = typeof(fv) == 'undefined' ? 'false' : "'" + jsEncode(fv) + "'";
 
return (v == d) ? '' : n + (v ? ':' + tv + ',' : ':' + fv + ',');
}
 
function getStr(p, n, d) {
var e = document.forms[0].elements[(p != null ? p + "_" : "") + n];
var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value;
 
return ((n == d || v == '') ? '' : n + ":'" + jsEncode(v) + "',");
}
 
function getInt(p, n, d) {
var e = document.forms[0].elements[(p != null ? p + "_" : "") + n];
var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value;
 
return ((n == d || v == '') ? '' : n + ":" + v.replace(/[^0-9]+/g, '') + ",");
}
 
function jsEncode(s) {
s = s.replace(new RegExp('\\\\', 'g'), '\\\\');
s = s.replace(new RegExp('"', 'g'), '\\"');
s = s.replace(new RegExp("'", 'g'), "\\'");
 
return s;
}
 
function generatePreview(c) {
var f = document.forms[0], p = document.getElementById('prev'), h = '', cls, pl, n, type, codebase, wp, hp, nw, nh;
 
p.innerHTML = '<!-- x --->';
 
nw = parseInt(f.width.value);
nh = parseInt(f.height.value);
 
if (f.width.value != "" && f.height.value != "") {
if (f.constrain.checked) {
if (c == 'width' && oldWidth != 0) {
wp = nw / oldWidth;
nh = Math.round(wp * nh);
f.height.value = nh;
} else if (c == 'height' && oldHeight != 0) {
hp = nh / oldHeight;
nw = Math.round(hp * nw);
f.width.value = nw;
}
}
}
 
if (f.width.value != "")
oldWidth = nw;
 
if (f.height.value != "")
oldHeight = nh;
 
// After constrain
pl = serializeParameters();
 
switch (f.media_type.options[f.media_type.selectedIndex].value) {
case "flash":
cls = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';
codebase = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';
type = 'application/x-shockwave-flash';
break;
 
case "shockwave":
cls = 'clsid:166B1BCA-3F9C-11CF-8075-444553540000';
codebase = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';
type = 'application/x-director';
break;
 
case "qt":
cls = 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';
codebase = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';
type = 'video/quicktime';
break;
 
case "wmp":
cls = tinyMCE.getParam('media_wmp6_compatible') ? 'clsid:05589FA1-C356-11CE-BF01-00AA0055595A' : 'clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6';
codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
type = 'application/x-mplayer2';
break;
 
case "rmp":
cls = 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA';
codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
type = 'audio/x-pn-realaudio-plugin';
break;
}
 
if (pl == '') {
p.innerHTML = '';
return;
}
 
pl = eval('x={' + pl + '};');
 
if (!pl.src) {
p.innerHTML = '';
return;
}
 
pl.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], pl.src);
pl.width = !pl.width ? 100 : pl.width;
pl.height = !pl.height ? 100 : pl.height;
pl.id = !pl.id ? 'obj' : pl.id;
pl.name = !pl.name ? 'eobj' : pl.name;
pl.align = !pl.align ? '' : pl.align;
 
h += '<object classid="clsid:' + cls + '" codebase="' + codebase + '" width="' + pl.width + '" height="' + pl.height + '" id="' + pl.id + '" name="' + pl.name + '" align="' + pl.align + '">';
 
for (n in pl) {
h += '<param name="' + n + '" value="' + pl[n] + '">';
 
// Add extra url parameter if it's an absolute URL
if (n == 'src' && pl[n].indexOf('://') != -1)
h += '<param name="url" value="' + pl[n] + '" />';
}
 
h += '<embed type="' + type + '" ';
 
for (n in pl)
h += n + '="' + pl[n] + '" ';
 
h += '></embed></object>';
 
p.innerHTML = "<!-- x --->" + h;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/media/langs/en.js
New file
0,0 → 1,94
// UK lang variables
 
tinyMCE.addToLang('media',{
title : 'Insert / edit embedded media',
desc : 'Insert / edit embedded media',
general : 'General',
advanced : 'Advanced',
file : 'File/URL',
list : 'List',
size : 'Dimensions',
preview : 'Preview',
constrain_proportions : 'Constrain proportions',
type : 'Type',
id : 'Id',
name : 'Name',
class_name : 'Class',
vspace : 'V-Space',
hspace : 'H-Space',
play : 'Auto play',
loop : 'Loop',
menu : 'Show menu',
quality : 'Quality',
scale : 'Scale',
align : 'Align',
salign : 'SAlign',
wmode : 'WMode',
bgcolor : 'Background',
base : 'Base',
flashvars : 'Flashvars',
liveconnect : 'SWLiveConnect',
autohref : 'AutoHREF',
cache : 'Cache',
hidden : 'Hidden',
controller : 'Controller',
kioskmode : 'Kiosk mode',
playeveryframe : 'Play every frame',
targetcache : 'Target cache',
correction : 'No correction',
enablejavascript : 'Enable JavaScript',
starttime : 'Start time',
endtime : 'End time',
href : 'Href',
qtsrcchokespeed : 'Choke speed',
target : 'Target',
volume : 'Volume',
autostart : 'Auto start',
enabled : 'Enabled',
fullscreen : 'Fullscreen',
invokeurls : 'Invoke URLs',
mute : 'Mute',
stretchtofit : 'Stretch to fit',
windowlessvideo : 'Windowless video',
balance : 'Balance',
baseurl : 'Base URL',
captioningid : 'Captioning id',
currentmarker : 'Current marker',
currentposition : 'Current position',
defaultframe : 'Default frame',
playcount : 'Play count',
rate : 'Rate',
uimode : 'UI Mode',
flash_options : 'Flash options',
qt_options : 'Quicktime options',
wmp_options : 'Windows media player options',
rmp_options : 'Real media player options',
shockwave_options : 'Shockwave options',
autogotourl : 'Auto goto URL',
center : 'Center',
imagestatus : 'Image status',
maintainaspect : 'Maintain aspect',
nojava : 'No java',
prefetch : 'Prefetch',
shuffle : 'Shuffle',
console : 'Console',
numloop : 'Num loops',
controls : 'Controls',
scriptcallbacks : 'Script callbacks',
swstretchstyle : 'Stretch style',
swstretchhalign : 'Stretch H-Align',
swstretchvalign : 'Stretch V-Align',
sound : 'Sound',
progress : 'Progress',
qtsrc : 'QT Src',
qt_stream_warn : 'Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..',
align_top : 'Top',
align_right : 'Right',
align_bottom : 'Bottom',
align_left : 'Left',
align_center : 'Center',
align_top_left : 'Top left',
align_top_right : 'Top right',
align_bottom_left : 'Bottom left',
align_bottom_right : 'Bottom right'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/media/langs/fr.js
New file
0,0 → 1,95
// FR lang variables
// Modified by shadow walker, last updated 2007-03-16, based on the work of Motte
 
tinyMCE.addToLang('media',{
title : 'Ins&eacute;rer / Editer des medias',
desc : 'Ins&eacute;rer / Editer des medias',
general : 'G&eacute;n&eacute;ral',
advanced : 'Avancement',
file : 'Fichier',
list : 'Liste',
size : 'Taille',
preview : 'Pr&eacute;visualisation',
constrain_proportions : 'Garder les proportions',
type : 'Type',
id : 'Id',
name : 'Nom',
class_name : 'Classe',
vspace : 'V-Space',
hspace : 'H-Space',
play : 'Lecture automatique',
loop : 'R&eacute;p&eacute;ter',
menu : 'Menu',
quality : 'Qualit&eacute;',
scale : 'Balance',
align : 'Aligner',
salign : 'SAlign',
wmode : 'WMode',
bgcolor : 'Arri�e plan',
base : 'Base',
flashvars : 'Flashvars',
liveconnect : 'SWLiveConnect',
autohref : 'AutoHREF',
cache : 'Cache',
hidden : 'Cache',
controller : 'Controleur',
kioskmode : 'Mode Kioske',
playeveryframe : 'Jouer chaque partie',
targetcache : 'Cible cach&eacute;e',
correction : 'Pas de corrections',
enablejavascript : 'Permettre le JavaScript',
starttime : 'D&eacute;but',
endtime : 'Fin',
href : 'Href',
qtsrcchokespeed : 'Vitesse de d&eacute;roulement',
target : 'Cible',
volume : 'Volume',
autostart : 'D&eacute;marrer automatiquement',
enabled : 'Autoris&eacute;',
fullscreen : 'Plein &eacute;cran',
invokeurls : 'Invoke URLs',
mute : 'Muet',
stretchtofit : 'Redimensionner',
windowlessvideo : 'Vid&eacute;o sans fen�re',
balance : 'Balance',
baseurl : 'URL de base',
captioningid : 'Captioning id',
currentmarker : 'Markeur actuel',
currentposition : 'Position actuelle',
defaultframe : 'Par d&eacute;faut',
playcount : 'Nombre delecture',
rate : 'Taux',
uimode : 'Mode UI',
flash_options : 'Options flash',
qt_options : 'Options quicktime',
wmp_options : 'Options windows media player',
rmp_options : 'Options real media player',
shockwave_options : 'Options shockwave',
autogotourl : 'Auto goto URL',
center : 'Centre',
imagestatus : 'Statut de l\'image',
maintainaspect : 'Maintenir l\'aspect',
nojava : 'Pas de java',
prefetch : 'Pr&eacute;-chargement',
shuffle : 'Al&eacute;atoire',
console : 'Console',
numloop : 'Nombre de boucles',
controls : 'Controles',
scriptcallbacks : 'Script callbacks',
swstretchstyle : 'Stretch style',
swstretchhalign : 'Stretch H-Align',
swstretchvalign : 'Stretch V-Align',
sound : 'Son',
progress : 'Avancement',
qtsrc : 'QT Src',
qt_stream_warn : 'Les flux rtsp doivent �re ajout&eacute;s au champ QT Src dans l\'onglet avanc&eacute;.\nVous devriez ajouter une version sans flux au champ Src..',
align_top : 'Haut',
align_right : 'Droite',
align_bottom : 'Bas',
align_left : 'Gauche',
align_center : 'Centrer',
align_top_left : 'Haut gauche',
align_top_right : 'Haut droit',
align_bottom_left : 'Bas gauche',
align_bottom_right : 'Bas droite'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/media/images/quicktime.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/media/images/quicktime.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/media/images/flash.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/media/images/flash.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/media/images/media.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/media/images/media.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/media/images/realmedia.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/media/images/realmedia.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/media/images/shockwave.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/media/images/shockwave.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/media/images/windowsmedia.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/media/images/windowsmedia.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/insertdatetime/langs/en.js
New file
0,0 → 1,12
// UK lang variables
 
tinyMCE.addToLang('',{
insertdate_def_fmt : '%Y-%m-%d',
inserttime_def_fmt : '%H:%M:%S',
insertdate_desc : 'Insert date',
inserttime_desc : 'Insert time',
inserttime_months_long : new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"),
inserttime_months_short : new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"),
inserttime_day_long : new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"),
inserttime_day_short : new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/insertdatetime/langs/fr.js
New file
0,0 → 1,13
// FR lang variables
// Modified by Motte, last updated 2006-03-23
 
tinyMCE.addToLang('',{
insertdate_def_fmt : '%d/%m/%Y',
inserttime_def_fmt : '%Hh%M',
insertdate_desc : 'Ins&eacute;rer la date',
inserttime_desc : 'Ins&eacute;rer l\'heure',
inserttime_months_long : new Array("Janvier", "F&eacute;vrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Ao&ucirc;t", "Septembre", "Octobre", "Novembre", "D&eacute;cembre"),
inserttime_months_short : new Array("Jan", "F&eacute;v", "Mar", "Avr", "Mai", "Jun", "Jul", "Ao&ucirc;", "Sep", "Oct", "Nov", "D&eacute;c"),
inserttime_day_long : new Array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"),
inserttime_day_short : new Array("Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim")
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/insertdatetime/images/insertdate.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/insertdatetime/images/insertdate.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/insertdatetime/images/inserttime.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/insertdatetime/images/inserttime.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js
New file
0,0 → 1,90
/**
* $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
tinyMCE.importPluginLanguagePack('insertdatetime');
 
var TinyMCE_InsertDateTimePlugin = {
getInfo : function() {
return {
longname : 'Insert date/time',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
/**
* Returns the HTML contents of the insertdate, inserttime controls.
*/
getControlHTML : function(cn) {
switch (cn) {
case "insertdate":
return tinyMCE.getButtonHTML(cn, 'lang_insertdate_desc', '{$pluginurl}/images/insertdate.gif', 'mceInsertDate');
 
case "inserttime":
return tinyMCE.getButtonHTML(cn, 'lang_inserttime_desc', '{$pluginurl}/images/inserttime.gif', 'mceInsertTime');
}
 
return "";
},
 
/**
* Executes the mceInsertDate command.
*/
execCommand : function(editor_id, element, command, user_interface, value) {
/* Adds zeros infront of value */
function addZeros(value, len) {
value = "" + value;
 
if (value.length < len) {
for (var i=0; i<(len-value.length); i++)
value = "0" + value;
}
 
return value;
}
 
function getDateTime(d, fmt) {
fmt = fmt.replace("%D", "%m/%d/%y");
fmt = fmt.replace("%r", "%I:%M:%S %p");
fmt = fmt.replace("%Y", "" + d.getFullYear());
fmt = fmt.replace("%y", "" + d.getYear());
fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
fmt = fmt.replace("%B", "" + tinyMCE.getLang("lang_inserttime_months_long")[d.getMonth()]);
fmt = fmt.replace("%b", "" + tinyMCE.getLang("lang_inserttime_months_short")[d.getMonth()]);
fmt = fmt.replace("%A", "" + tinyMCE.getLang("lang_inserttime_day_long")[d.getDay()]);
fmt = fmt.replace("%a", "" + tinyMCE.getLang("lang_inserttime_day_short")[d.getDay()]);
fmt = fmt.replace("%%", "%");
 
return fmt;
}
 
// Handle commands
switch (command) {
case "mceInsertDate":
tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, getDateTime(new Date(), tinyMCE.getParam("plugin_insertdate_dateFormat", tinyMCE.getLang('lang_insertdate_def_fmt'))));
return true;
 
case "mceInsertTime":
tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, getDateTime(new Date(), tinyMCE.getParam("plugin_insertdate_timeFormat", tinyMCE.getLang('lang_inserttime_def_fmt'))));
return true;
}
 
// Pass to next handler in chain
return false;
}
};
 
tinyMCE.addPlugin("insertdatetime", TinyMCE_InsertDateTimePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/insertdatetime/readme.txt
New file
0,0 → 1,0
Check the TinyMCE documentation for details on this plugin.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/insertdatetime/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('insertdatetime');var TinyMCE_InsertDateTimePlugin={getInfo:function(){return{longname:'Insert date/time',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"insertdate":return tinyMCE.getButtonHTML(cn,'lang_insertdate_desc','{$pluginurl}/images/insertdate.gif','mceInsertDate');case"inserttime":return tinyMCE.getButtonHTML(cn,'lang_inserttime_desc','{$pluginurl}/images/inserttime.gif','mceInsertTime')}return""},execCommand:function(editor_id,element,command,user_interface,value){function addZeros(value,len){value=""+value;if(value.length<len){for(var i=0;i<(len-value.length);i++)value="0"+value}return value}function getDateTime(d,fmt){fmt=fmt.replace("%D","%m/%d/%y");fmt=fmt.replace("%r","%I:%M:%S %p");fmt=fmt.replace("%Y",""+d.getFullYear());fmt=fmt.replace("%y",""+d.getYear());fmt=fmt.replace("%m",addZeros(d.getMonth()+1,2));fmt=fmt.replace("%d",addZeros(d.getDate(),2));fmt=fmt.replace("%H",""+addZeros(d.getHours(),2));fmt=fmt.replace("%M",""+addZeros(d.getMinutes(),2));fmt=fmt.replace("%S",""+addZeros(d.getSeconds(),2));fmt=fmt.replace("%I",""+((d.getHours()+11)%12+1));fmt=fmt.replace("%p",""+(d.getHours()<12?"AM":"PM"));fmt=fmt.replace("%B",""+tinyMCE.getLang("lang_inserttime_months_long")[d.getMonth()]);fmt=fmt.replace("%b",""+tinyMCE.getLang("lang_inserttime_months_short")[d.getMonth()]);fmt=fmt.replace("%A",""+tinyMCE.getLang("lang_inserttime_day_long")[d.getDay()]);fmt=fmt.replace("%a",""+tinyMCE.getLang("lang_inserttime_day_short")[d.getDay()]);fmt=fmt.replace("%%","%");return fmt}switch(command){case"mceInsertDate":tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,getDateTime(new Date(),tinyMCE.getParam("plugin_insertdate_dateFormat",tinyMCE.getLang('lang_insertdate_def_fmt'))));return true;case"mceInsertTime":tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,getDateTime(new Date(),tinyMCE.getParam("plugin_insertdate_timeFormat",tinyMCE.getLang('lang_inserttime_def_fmt'))));return true}return false}};tinyMCE.addPlugin("insertdatetime",TinyMCE_InsertDateTimePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/noneditable/editor_plugin_src.js
New file
0,0 → 1,153
/**
* $Id: editor_plugin_src.js 205 2007-02-12 18:58:29Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
var TinyMCE_NonEditablePlugin = {
getInfo : function() {
return {
longname : 'Non editable elements',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
initInstance : function(inst) {
tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/noneditable/css/noneditable.css");
 
// Ugly hack
if (tinyMCE.isMSIE5_0)
tinyMCE.settings['plugins'] = tinyMCE.settings['plugins'].replace(/noneditable/gi, 'Noneditable');
},
 
handleEvent : function(e) {
return this._moveSelection(e, tinyMCE.selectedInstance);
},
 
cleanup : function(type, content, inst) {
switch (type) {
case "insert_to_editor_dom":
var nodes, i, editClass, nonEditClass, editable, elm;
 
// Pass through Gecko
if (tinyMCE.isGecko)
return content;
 
nodes = tinyMCE.getNodeTree(content, [], 1);
 
editClass = tinyMCE.getParam("noneditable_editable_class", "mceEditable");
nonEditClass = tinyMCE.getParam("noneditable_noneditable_class", "mceNonEditable");
 
for (i=0; i<nodes.length; i++) {
elm = nodes[i];
 
// Convert contenteditable to classes
editable = tinyMCE.getAttrib(elm, "contenteditable");
if (new RegExp("true|false","gi").test(editable))
TinyMCE_NonEditablePlugin._setEditable(elm, editable == "true");
 
if (tinyMCE.isIE) {
if (tinyMCE.hasCSSClass(elm, editClass))
elm.contentEditable = true;
 
if (tinyMCE.hasCSSClass(elm, nonEditClass))
elm.contentEditable = false;
}
}
 
break;
 
case "insert_to_editor":
var editClass = tinyMCE.getParam("noneditable_editable_class", "mceEditable");
var nonEditClass = tinyMCE.getParam("noneditable_noneditable_class", "mceNonEditable");
 
// Replace mceItem to new school
content = content.replace(/mceItemEditable/g, editClass);
content = content.replace(/mceItemNonEditable/g, nonEditClass);
 
if (tinyMCE.isIE && (content.indexOf(editClass) != -1 || content.indexOf(nonEditClass) != -1)) {
content = content.replace(new RegExp("class=\"(.+)(" + editClass + ")\"", "gi"), 'class="$1$2" contenteditable="true"');
content = content.replace(new RegExp("class=\"(.+)(" + nonEditClass + ")\"", "gi"), 'class="$1$2" contenteditable="false"');
content = content.replace(new RegExp("class=\"(" + editClass + ")([^\"]*)\"", "gi"), 'class="$1$2" contenteditable="true"');
content = content.replace(new RegExp("class=\"(" + nonEditClass + ")([^\"]*)\"", "gi"), 'class="$1$2" contenteditable="false"');
content = content.replace(new RegExp("class=\"(.+)(" + editClass + ")([^\"]*)\"", "gi"), 'class="$1$2$3" contenteditable="true"');
content = content.replace(new RegExp("class=\"(.+)(" + nonEditClass + ")([^\"]*)\"", "gi"), 'class="$1$2$3" contenteditable="false"');
}
 
break;
 
case "get_from_editor_dom":
// Pass through Gecko
if (tinyMCE.isGecko)
return content;
 
if (tinyMCE.getParam("noneditable_leave_contenteditable", false)) {
var nodes = tinyMCE.getNodeTree(content, new Array(), 1);
 
for (var i=0; i<nodes.length; i++)
nodes[i].removeAttribute("contenteditable");
}
 
break;
}
 
return content;
},
 
_moveSelection : function(e, inst) {
var s, r, sc, ec, el, c = tinyMCE.getParam('noneditable_editable_class', 'mceNonEditable');
 
if (!inst)
return true;
 
// Always select whole element
if (tinyMCE.isGecko) {
s = inst.selection.getSel();
r = s.getRangeAt(0);
sc = tinyMCE.getParentNode(r.startContainer, function (n) {return tinyMCE.hasCSSClass(n, c);});
ec = tinyMCE.getParentNode(r.endContainer, function (n) {return tinyMCE.hasCSSClass(n, c);});
 
sc && r.setStartBefore(sc);
ec && r.setEndAfter(ec);
 
if (sc || ec) {
if (e.type == 'keypress' && e.keyCode == 39) {
el = sc || ec;
 
// Try!!
}
 
s.removeAllRanges();
s.addRange(r);
 
return tinyMCE.cancelEvent(e);
}
}
 
return true;
},
 
_setEditable : function(elm, state) {
var editClass = tinyMCE.getParam("noneditable_editable_class", "mceEditable");
var nonEditClass = tinyMCE.getParam("noneditable_noneditable_class", "mceNonEditable");
 
var className = elm.className ? elm.className : "";
 
if (className.indexOf(editClass) != -1 || className.indexOf(nonEditClass) != -1)
return;
 
if ((className = tinyMCE.getAttrib(elm, "class")) != "")
className += " ";
 
className += state ? editClass : nonEditClass;
 
elm.setAttribute("class", className);
elm.className = className;
}
};
 
tinyMCE.addPlugin("noneditable", TinyMCE_NonEditablePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/noneditable/css/noneditable.css
New file
0,0 → 1,9
/* This is the CSS file for the noneditable elements plugin */
 
.mceEditable {
/*border: 1px dotted #0000cc;*/
}
 
.mceNonEditable {
/*border: 1px dotted #cc0000;*/
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/noneditable/readme.txt
New file
0,0 → 1,0
Check the TinyMCE documentation for details on this plugin.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/noneditable/editor_plugin.js
New file
0,0 → 1,0
var TinyMCE_NonEditablePlugin={getInfo:function(){return{longname:'Non editable elements',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/noneditable/css/noneditable.css");if(tinyMCE.isMSIE5_0)tinyMCE.settings['plugins']=tinyMCE.settings['plugins'].replace(/noneditable/gi,'Noneditable')},handleEvent:function(e){return this._moveSelection(e,tinyMCE.selectedInstance)},cleanup:function(type,content,inst){switch(type){case"insert_to_editor_dom":var nodes,i,editClass,nonEditClass,editable,elm;if(tinyMCE.isGecko)return content;nodes=tinyMCE.getNodeTree(content,[],1);editClass=tinyMCE.getParam("noneditable_editable_class","mceEditable");nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceNonEditable");for(i=0;i<nodes.length;i++){elm=nodes[i];editable=tinyMCE.getAttrib(elm,"contenteditable");if(new RegExp("true|false","gi").test(editable))TinyMCE_NonEditablePlugin._setEditable(elm,editable=="true");if(tinyMCE.isIE){if(tinyMCE.hasCSSClass(elm,editClass))elm.contentEditable=true;if(tinyMCE.hasCSSClass(elm,nonEditClass))elm.contentEditable=false}}break;case"insert_to_editor":var editClass=tinyMCE.getParam("noneditable_editable_class","mceEditable");var nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceNonEditable");content=content.replace(/mceItemEditable/g,editClass);content=content.replace(/mceItemNonEditable/g,nonEditClass);if(tinyMCE.isIE&&(content.indexOf(editClass)!=-1||content.indexOf(nonEditClass)!=-1)){content=content.replace(new RegExp("class=\"(.+)("+editClass+")\"","gi"),'class="$1$2" contenteditable="true"');content=content.replace(new RegExp("class=\"(.+)("+nonEditClass+")\"","gi"),'class="$1$2" contenteditable="false"');content=content.replace(new RegExp("class=\"("+editClass+")([^\"]*)\"","gi"),'class="$1$2" contenteditable="true"');content=content.replace(new RegExp("class=\"("+nonEditClass+")([^\"]*)\"","gi"),'class="$1$2" contenteditable="false"');content=content.replace(new RegExp("class=\"(.+)("+editClass+")([^\"]*)\"","gi"),'class="$1$2$3" contenteditable="true"');content=content.replace(new RegExp("class=\"(.+)("+nonEditClass+")([^\"]*)\"","gi"),'class="$1$2$3" contenteditable="false"')}break;case"get_from_editor_dom":if(tinyMCE.isGecko)return content;if(tinyMCE.getParam("noneditable_leave_contenteditable",false)){var nodes=tinyMCE.getNodeTree(content,new Array(),1);for(var i=0;i<nodes.length;i++)nodes[i].removeAttribute("contenteditable")}break}return content},_moveSelection:function(e,inst){var s,r,sc,ec,el,c=tinyMCE.getParam('noneditable_editable_class','mceNonEditable');if(!inst)return true;if(tinyMCE.isGecko){s=inst.selection.getSel();r=s.getRangeAt(0);sc=tinyMCE.getParentNode(r.startContainer,function(n){return tinyMCE.hasCSSClass(n,c)});ec=tinyMCE.getParentNode(r.endContainer,function(n){return tinyMCE.hasCSSClass(n,c)});sc&&r.setStartBefore(sc);ec&&r.setEndAfter(ec);if(sc||ec){if(e.type=='keypress'&&e.keyCode==39){el=sc||ec;}s.removeAllRanges();s.addRange(r);return tinyMCE.cancelEvent(e)}}return true},_setEditable:function(elm,state){var editClass=tinyMCE.getParam("noneditable_editable_class","mceEditable");var nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceNonEditable");var className=elm.className?elm.className:"";if(className.indexOf(editClass)!=-1||className.indexOf(nonEditClass)!=-1)return;if((className=tinyMCE.getAttrib(elm,"class"))!="")className+=" ";className+=state?editClass:nonEditClass;elm.setAttribute("class",className);elm.className=className}};tinyMCE.addPlugin("noneditable",TinyMCE_NonEditablePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/inlinepopups/readme.txt
--- maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/inlinepopups/editor_plugin.js (revision 0)
+++ maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/inlinepopups/editor_plugin.js (revision 420)
@@ -0,0 +1 @@
+var TinyMCE_InlinePopupsPlugin={getInfo:function(){return{longname:'Inline Popups',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}}};tinyMCE.addPlugin("inlinepopups",TinyMCE_InlinePopupsPlugin);TinyMCE_Engine.prototype.orgOpenWindow=TinyMCE_Engine.prototype.openWindow;TinyMCE_Engine.prototype.orgCloseWindow=TinyMCE_Engine.prototype.closeWindow;TinyMCE_Engine.prototype.openWindow=function(template,args){if(args['inline']!="yes"||tinyMCE.isOpera||tinyMCE.getParam("plugins").indexOf('inlinepopups')==-1){mcWindows.selectedWindow=null;args['mce_inside_iframe']=false;this.orgOpenWindow(template,args);return}var url,resizable,scrollbars;args['mce_inside_iframe']=true;tinyMCE.windowArgs=args;if(template['file'].charAt(0)!='/'&&template['file'].indexOf('://')==-1)url=tinyMCE.baseURL+"/themes/"+tinyMCE.getParam("theme")+"/"+template['file'];else url=template['file'];if(!(width=parseInt(template['width'])))width=320;if(!(height=parseInt(template['height'])))height=200;if(!(minWidth=parseInt(template['minWidth'])))minWidth=100;if(!(minHeight=parseInt(template['minHeight'])))minHeight=100;resizable=(args&&args['resizable'])?args['resizable']:"no";scrollbars=(args&&args['scrollbars'])?args['scrollbars']:"no";height+=18;for(var name in args){if(typeof(args[name])=='function')continue;url=tinyMCE.replaceVar(url,name,escape(args[name]))}var elm=document.getElementById(this.selectedInstance.editorId+'_parent');if(tinyMCE.hasPlugin('fullscreen')&&this.selectedInstance.getData('fullscreen').enabled)pos={absLeft:0,absTop:0};else pos=tinyMCE.getAbsPosition(elm);pos.absLeft+=Math.round((elm.firstChild.clientWidth/ 2) - (width /2));pos.absTop+=Math.round((elm.firstChild.clientHeight/ 2) - (height /2));mcWindows.open(url,mcWindows.idCounter++,"modal=yes,width="+width+",height="+height+",resizable="+resizable+",scrollbars="+scrollbars+",statusbar="+resizable+",left="+pos.absLeft+",top="+pos.absTop+",minWidth="+minWidth+",minHeight="+minHeight)};TinyMCE_Engine.prototype.closeWindow=function(win){var gotit=false,n,w;for(n in mcWindows.windows){w=mcWindows.windows[n];if(typeof(w)=='function')continue;if(win.name==w.id+'_iframe'){w.close();gotit=true}}if(!gotit)this.orgCloseWindow(win);tinyMCE.selectedInstance.getWin().focus()};TinyMCE_Engine.prototype.setWindowTitle=function(win_ref,title){for(var n in mcWindows.windows){var win=mcWindows.windows[n];if(typeof(win)=='function')continue;if(win_ref.name==win.id+"_iframe")window.frames[win.id+"_iframe"].document.getElementById(win.id+'_title').innerHTML=title}};function TinyMCE_Windows(){this.settings=new Array();this.windows=new Array();this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.isGecko=navigator.userAgent.indexOf('Gecko')!=-1;this.isSafari=navigator.userAgent.indexOf('Safari')!=-1;this.isMac=navigator.userAgent.indexOf('Mac')!=-1;this.isMSIE5_0=this.isMSIE&&(navigator.userAgent.indexOf('MSIE 5.0')!=-1);this.action="none";this.selectedWindow=null;this.lastSelectedWindow=null;this.zindex=1001;this.mouseDownScreenX=0;this.mouseDownScreenY=0;this.mouseDownLayerX=0;this.mouseDownLayerY=0;this.mouseDownWidth=0;this.mouseDownHeight=0;this.idCounter=0};TinyMCE_Windows.prototype.init=function(settings){this.settings=settings;if(this.isMSIE)this.addEvent(document,"mousemove",mcWindows.eventDispatcher);else this.addEvent(window,"mousemove",mcWindows.eventDispatcher);this.addEvent(document,"mouseup",mcWindows.eventDispatcher);this.addEvent(window,"resize",mcWindows.eventDispatcher);this.addEvent(document,"scroll",mcWindows.eventDispatcher);this.doc=document};TinyMCE_Windows.prototype.getBounds=function(){if(!this.bounds){var vp=tinyMCE.getViewPort(window);var top,left,bottom,right,docEl=this.doc.documentElement;top=vp.top;left=vp.left;bottom=vp.height+top-2;right=vp.width+left-22;this.bounds=[left,top,right,bottom]}return this.bounds};TinyMCE_Windows.prototype.clampBoxPosition=function(x,y,w,h,minW,minH){var bounds=this.getBounds();x=Math.max(bounds[0],Math.min(bounds[2],x+w)-w);y=Math.max(bounds[1],Math.min(bounds[3],y+h)-h);return this.clampBoxSize(x,y,w,h,minW,minH)};TinyMCE_Windows.prototype.clampBoxSize=function(x,y,w,h,minW,minH){var bounds=this.getBounds();return[x,y,Math.max(minW,Math.min(bounds[2],x+w)-x),Math.max(minH,Math.min(bounds[3],y+h)-y)]};TinyMCE_Windows.prototype.getParam=function(name,default_value){var value=null;value=(typeof(this.settings[name])=="undefined")?default_value:this.settings[name];if(value=="true"||value=="false")return(value=="true");return value};TinyMCE_Windows.prototype.eventDispatcher=function(e){e=typeof(e)=="undefined"?window.event:e;if(mcWindows.selectedWindow==null)return;if(mcWindows.isGecko&&e.type=="mousedown"){var elm=e.currentTarget;for(var n in mcWindows.windows){var win=mcWindows.windows[n];if(win.headElement==elm||win.resizeElement==elm){win.focus();break}}}switch(e.type){case"mousemove":mcWindows.selectedWindow.onMouseMove(e);break;case"mouseup":mcWindows.selectedWindow.onMouseUp(e);break;case"mousedown":mcWindows.selectedWindow.onMouseDown(e);break;case"focus":mcWindows.selectedWindow.onFocus(e);break;case"scroll":case"resize":if(mcWindows.clampUpdateTimeout)clearTimeout(mcWindows.clampUpdateTimeout);mcWindows.clampEventType=e.type;mcWindows.clampUpdateTimeout=setTimeout(function(){mcWindows.updateClamping()},100);break}};TinyMCE_Windows.prototype.updateClamping=function(){var clamp,oversize,etype=mcWindows.clampEventType;this.bounds=null;this.clampUpdateTimeout=null;for(var n in this.windows){win=this.windows[n];if(typeof(win)=='function'||!win.winElement)continue;clamp=mcWindows.clampBoxPosition(win.left,win.top,win.winElement.scrollWidth,win.winElement.scrollHeight,win.features.minWidth,win.features.minHeight);oversize=(clamp[2]!=win.winElement.scrollWidth||clamp[3]!=win.winElement.scrollHeight)?true:false;if(!oversize||win.features.resizable=="yes"||etype!="scroll")win.moveTo(clamp[0],clamp[1]);if(oversize&&win.features.resizable=="yes")win.resizeTo(clamp[2],clamp[3])}};TinyMCE_Windows.prototype.addEvent=function(obj,name,handler){if(this.isMSIE)obj.attachEvent("on"+name,handler);else obj.addEventListener(name,handler,false)};TinyMCE_Windows.prototype.cancelEvent=function(e){if(this.isMSIE){e.returnValue=false;e.cancelBubble=true}else e.preventDefault()};TinyMCE_Windows.prototype.parseFeatures=function(opts){opts=opts.toLowerCase();opts=opts.replace(/;/g,",");opts=opts.replace(/[^0-9a-z=,]/g,"");var optionChunks=opts.split(',');var options=new Array();options['left']="10";options['top']="10";options['width']="300";options['height']="300";options['minwidth']="100";options['minheight']="100";options['resizable']="yes";options['minimizable']="yes";options['maximizable']="yes";options['close']="yes";options['movable']="yes";options['statusbar']="yes";options['scrollbars']="auto";options['modal']="no";if(opts=="")return options;for(var i=0;i<optionChunks.length;i++){var parts=optionChunks[i].split('=');if(parts.length==2)options[parts[0]]=parts[1]}options['left']=parseInt(options['left']);options['top']=parseInt(options['top']);options['width']=parseInt(options['width']);options['height']=parseInt(options['height']);options['minWidth']=parseInt(options['minwidth']);options['minHeight']=parseInt(options['minheight']);return options};TinyMCE_Windows.prototype.open=function(url,name,features){this.lastSelectedWindow=this.selectedWindow;var win=new TinyMCE_Window();var winDiv,html="",id;var imgPath=this.getParam("images_path");features=this.parseFeatures(features);var clamp=mcWindows.clampBoxPosition(features['left'],features['top'],features['width'],features['height'],features['minWidth'],features['minHeight']);features['left']=clamp[0];features['top']=clamp[1];if(features['resizable']=="yes"){features['width']=clamp[2];features['height']=clamp[3]}id="mcWindow_"+name;win.deltaHeight=18;if(features['statusbar']=="yes"){win.deltaHeight+=13;if(this.isMSIE)win.deltaHeight+=1}width=parseInt(features['width']);height=parseInt(features['height'])-win.deltaHeight;if(this.isMSIE)width-=2;win.id=id;win.url=url;win.name=name;win.features=features;this.windows[name]=win;iframeWidth=width;iframeHeight=height;html+='<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';html+='<html>';html+='<head>';html+='<title>Wrapper iframe</title>';html+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';html+='<link href="'+this.getParam("css_file")+'" rel="stylesheet" type="text/css" />';html+='</head>';html+='<body onload="parent.mcWindows.onLoad(\''+name+'\');">';html+='<div id="'+id+'_container" class="mceWindow">';html+='<div id="'+id+'_head" class="mceWindowHead" onmousedown="parent.mcWindows.windows[\''+name+'\'].focus();">';html+=' <div id="'+id+'_title" class="mceWindowTitle"';html+=' onselectstart="return false;" unselectable="on" style="-moz-user-select: none !important;"></div>';html+=' <div class="mceWindowHeadTools">';html+=' <a href="javascript:parent.mcWindows.windows[\''+name+'\'].close();" target="_self" onmousedown="return false;" class="mceWindowClose"><img border="0" src="'+imgPath+'/window_close.gif" /></a>';if(features['resizable']=="yes"&&features['maximizable']=="yes")html+=' <a href="javascript:parent.mcWindows.windows[\''+name+'\'].maximize();" target="_self" onmousedown="return false;" class="mceWindowMaximize"><img border="0" src="'+imgPath+'/window_maximize.gif" /></a>';html+=' </div>';html+='</div><div id="'+id+'_body" class="mceWindowBody" style="width: '+width+'px; height: '+height+'px;">';html+='<iframe id="'+id+'_iframe" name="'+id+'_iframe" frameborder="0" width="'+iframeWidth+'" height="'+iframeHeight+'" src="'+url+'" class="mceWindowBodyIframe" scrolling="'+features['scrollbars']+'"></iframe></div>';if(features['statusbar']=="yes"){html+='<div id="'+id+'_statusbar" class="mceWindowStatusbar" onmousedown="parent.mcWindows.windows[\''+name+'\'].focus();">';if(features['resizable']=="yes"){if(this.isGecko)html+='<div id="'+id+'_resize" class="mceWindowResize"><div style="background-image: url(\''+imgPath+'/window_resize.gif\'); width: 12px; height: 12px;"></div></div>';else html+='<div id="'+id+'_resize" class="mceWindowResize"><img onmousedown="parent.mcWindows.windows[\''+name+'\'].focus();" border="0" src="'+imgPath+'/window_resize.gif" /></div>'}html+='</div>'}html+='</div>';html+='</body>';html+='</html>';this.createFloatingIFrame(id,features['left'],features['top'],features['width'],features['height'],html)};TinyMCE_Windows.prototype.setDocumentLock=function(state){var elm=document.getElementById('mcWindowEventBlocker');if(state){if(elm==null){elm=document.createElement("div");elm.id="mcWindowEventBlocker";elm.style.position="absolute";elm.style.left="0";elm.style.top="0";document.body.appendChild(elm)}elm.style.display="none";var imgPath=this.getParam("images_path");var width=document.body.clientWidth;var height=document.body.clientHeight;elm.style.width=width;elm.style.height=height;elm.innerHTML='<img src="'+imgPath+'/spacer.gif" width="'+width+'" height="'+height+'" />';elm.style.zIndex=mcWindows.zindex-1;elm.style.display="block"}else if(elm!=null){if(mcWindows.windows.length==0)elm.parentNode.removeChild(elm);else elm.style.zIndex=mcWindows.zindex-1}};TinyMCE_Windows.prototype.onLoad=function(name){var win=mcWindows.windows[name];var id="mcWindow_"+name;var wrapperIframe=window.frames[id+"_iframe"].frames[0];var wrapperDoc=window.frames[id+"_iframe"].document;var doc=window.frames[id+"_iframe"].document;var winDiv=document.getElementById("mcWindow_"+name+"_div");var realIframe=window.frames[id+"_iframe"].frames[0];win.id="mcWindow_"+name;win.winElement=winDiv;win.bodyElement=doc.getElementById(id+'_body');win.iframeElement=doc.getElementById(id+'_iframe');win.headElement=doc.getElementById(id+'_head');win.titleElement=doc.getElementById(id+'_title');win.resizeElement=doc.getElementById(id+'_resize');win.containerElement=doc.getElementById(id+'_container');win.left=win.features['left'];win.top=win.features['top'];win.frame=window.frames[id+'_iframe'].frames[0];win.wrapperFrame=window.frames[id+'_iframe'];win.wrapperIFrameElement=document.getElementById(id+"_iframe");mcWindows.addEvent(win.headElement,"mousedown",mcWindows.eventDispatcher);if(win.resizeElement!=null)mcWindows.addEvent(win.resizeElement,"mousedown",mcWindows.eventDispatcher);if(mcWindows.isMSIE){mcWindows.addEvent(realIframe.document,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(realIframe.document,"mouseup",mcWindows.eventDispatcher)}else{mcWindows.addEvent(realIframe,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(realIframe,"mouseup",mcWindows.eventDispatcher);mcWindows.addEvent(realIframe,"focus",mcWindows.eventDispatcher)}for(var i=0;i<window.frames.length;i++){if(!window.frames[i]._hasMouseHandlers){if(mcWindows.isMSIE){mcWindows.addEvent(window.frames[i].document,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(window.frames[i].document,"mouseup",mcWindows.eventDispatcher)}else{mcWindows.addEvent(window.frames[i],"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(window.frames[i],"mouseup",mcWindows.eventDispatcher)}window.frames[i]._hasMouseHandlers=true}}if(mcWindows.isMSIE){mcWindows.addEvent(win.frame.document,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(win.frame.document,"mouseup",mcWindows.eventDispatcher)}else{mcWindows.addEvent(win.frame,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(win.frame,"mouseup",mcWindows.eventDispatcher);mcWindows.addEvent(win.frame,"focus",mcWindows.eventDispatcher)}var func=this.getParam("on_open_window","");if(func!="")eval(func+"(win);");win.focus();if(win.features['modal']=="yes")mcWindows.setDocumentLock(true)};TinyMCE_Windows.prototype.createFloatingIFrame=function(id_prefix,left,top,width,height,html){var iframe=document.createElement("iframe");var div=document.createElement("div"),doc;width=parseInt(width);height=parseInt(height)+1;div.setAttribute("id",id_prefix+"_div");div.setAttribute("width",width);div.setAttribute("height",(height));div.style.position="absolute";div.style.left=left+"px";div.style.top=top+"px";div.style.width=width+"px";div.style.height=(height)+"px";div.style.backgroundColor="white";div.style.display="none";if(this.isGecko){iframeWidth=width+2;iframeHeight=height+2}else{iframeWidth=width;iframeHeight=height+1}iframe.setAttribute("id",id_prefix+"_iframe");iframe.setAttribute("name",id_prefix+"_iframe");iframe.setAttribute("border","0");iframe.setAttribute("frameBorder","0");iframe.setAttribute("marginWidth","0");iframe.setAttribute("marginHeight","0");iframe.setAttribute("leftMargin","0");iframe.setAttribute("topMargin","0");iframe.setAttribute("width",iframeWidth);iframe.setAttribute("height",iframeHeight);iframe.setAttribute("scrolling","no");iframe.style.width=iframeWidth+"px";iframe.style.height=iframeHeight+"px";iframe.style.backgroundColor="white";div.appendChild(iframe);document.body.appendChild(div);div.innerHTML=div.innerHTML;if(this.isSafari){window.setTimeout(function(){var doc=window.frames[id_prefix+'_iframe'].document;doc.open();doc.write(html);doc.close()},10)}else{doc=window.frames[id_prefix+'_iframe'].window.document;doc.open();doc.write(html);doc.close()}div.style.display="block";return div};function TinyMCE_Window(){};TinyMCE_Window.prototype.focus=function(){if(this!=mcWindows.selectedWindow){this.winElement.style.zIndex=++mcWindows.zindex;mcWindows.lastSelectedWindow=mcWindows.selectedWindow;mcWindows.selectedWindow=this}};TinyMCE_Window.prototype.minimize=function(){};TinyMCE_Window.prototype.maximize=function(){if(this.restoreSize){this.moveTo(this.restoreSize[0],this.restoreSize[1]);this.resizeTo(this.restoreSize[2],this.restoreSize[3]);this.updateClamping();this.restoreSize=null}else{var bounds=mcWindows.getBounds();this.restoreSize=[this.left,this.top,this.winElement.scrollWidth,this.winElement.scrollHeight];this.moveTo(bounds[0],bounds[1]);this.resizeTo(bounds[2]-bounds[0],bounds[3]-bounds[1])}};TinyMCE_Window.prototype.startResize=function(){mcWindows.action="resize"};TinyMCE_Window.prototype.startMove=function(e){mcWindows.action="move"};TinyMCE_Window.prototype.close=function(){if(this.frame&&this.frame['tinyMCEPopup'])this.frame['tinyMCEPopup'].restoreSelection();if(mcWindows.lastSelectedWindow!=null)mcWindows.lastSelectedWindow.focus();var mcWindowsNew=new Array();for(var n in mcWindows.windows){var win=mcWindows.windows[n];if(typeof(win)=='function')continue;if(win.name!=this.name)mcWindowsNew[n]=win}mcWindows.windows=mcWindowsNew;var e=mcWindows.doc.getElementById(this.id+"_iframe");e.parentNode.removeChild(e);var e=mcWindows.doc.getElementById(this.id+"_div");e.parentNode.removeChild(e);mcWindows.setDocumentLock(false)};TinyMCE_Window.prototype.onMouseMove=function(e){var clamp;var dx=e.screenX-mcWindows.mouseDownScreenX;var dy=e.screenY-mcWindows.mouseDownScreenY;switch(mcWindows.action){case"resize":clamp=mcWindows.clampBoxSize(this.left,this.top,mcWindows.mouseDownWidth+(e.screenX-mcWindows.mouseDownScreenX),mcWindows.mouseDownHeight+(e.screenY-mcWindows.mouseDownScreenY),this.features.minWidth,this.features.minHeight);this.resizeTo(clamp[2],clamp[3]);mcWindows.cancelEvent(e);break;case"move":this.left=mcWindows.mouseDownLayerX+(e.screenX-mcWindows.mouseDownScreenX);this.top=mcWindows.mouseDownLayerY+(e.screenY-mcWindows.mouseDownScreenY);this.updateClamping();mcWindows.cancelEvent(e);break}};TinyMCE_Window.prototype.moveTo=function(x,y){this.left=x;this.top=y;this.winElement.style.left=this.left+"px";this.winElement.style.top=this.top+"px"};TinyMCE_Window.prototype.resizeTo=function(width,height){this.wrapperIFrameElement.style.width=(width+2)+'px';this.wrapperIFrameElement.style.height=(height+2)+'px';this.wrapperIFrameElement.width=width+2;this.wrapperIFrameElement.height=height+2;this.winElement.style.width=width+'px';this.winElement.style.height=height+'px';height=height-this.deltaHeight;this.containerElement.style.width=width+'px';this.iframeElement.style.width=width+'px';this.iframeElement.style.height=height+'px';this.bodyElement.style.width=width+'px';this.bodyElement.style.height=height+'px';this.headElement.style.width=width+'px';};TinyMCE_Window.prototype.updateClamping=function(){var clamp,oversize;clamp=mcWindows.clampBoxPosition(this.left,this.top,this.winElement.scrollWidth,this.winElement.scrollHeight,this.features.minWidth,this.features.minHeight);oversize=(clamp[2]!=this.winElement.scrollWidth||clamp[3]!=this.winElement.scrollHeight)?true:false;this.moveTo(clamp[0],clamp[1]);if(this.features.resizable=="yes"&&oversize)this.resizeTo(clamp[2],clamp[3])};function debug(msg){document.getElementById('debug').value+=msg+"\n"}TinyMCE_Window.prototype.onMouseUp=function(e){mcWindows.action="none"};TinyMCE_Window.prototype.onFocus=function(e){var winRef=e.currentTarget;for(var n in mcWindows.windows){var win=mcWindows.windows[n];if(typeof(win)=='function')continue;if(winRef.name==win.id+"_iframe"){win.focus();return}}};TinyMCE_Window.prototype.onMouseDown=function(e){var elm=mcWindows.isMSIE?this.wrapperFrame.event.srcElement:e.target;mcWindows.mouseDownScreenX=e.screenX;mcWindows.mouseDownScreenY=e.screenY;mcWindows.mouseDownLayerX=this.left;mcWindows.mouseDownLayerY=this.top;mcWindows.mouseDownWidth=parseInt(this.winElement.style.width);mcWindows.mouseDownHeight=parseInt(this.winElement.style.height);if(this.resizeElement!=null&&elm==this.resizeElement.firstChild)this.startResize(e);else this.startMove(e);mcWindows.cancelEvent(e)};var mcWindows=new TinyMCE_Windows();mcWindows.init({images_path:tinyMCE.baseURL+"/plugins/inlinepopups/images",css_file:tinyMCE.baseURL+"/plugins/inlinepopups/css/inlinepopup.css"});
\ No newline at end of file
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/inlinepopups/jscripts/mcwindows.js
New file
0,0 → 1,453
/**
* $Id: mcwindows.js 18 2006-06-29 14:11:23Z spocke $
*
* Moxiecode DHTML Windows script.
*
* @author Moxiecode
* @copyright Copyright © 2004, Moxiecode Systems AB, All rights reserved.
*/
 
// Windows handler
function MCWindows() {
this.settings = new Array();
this.windows = new Array();
this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
this.isGecko = navigator.userAgent.indexOf('Gecko') != -1;
this.isSafari = navigator.userAgent.indexOf('Safari') != -1;
this.isMac = navigator.userAgent.indexOf('Mac') != -1;
this.isMSIE5_0 = this.isMSIE && (navigator.userAgent.indexOf('MSIE 5.0') != -1);
this.action = "none";
this.selectedWindow = null;
this.zindex = 100;
this.mouseDownScreenX = 0;
this.mouseDownScreenY = 0;
this.mouseDownLayerX = 0;
this.mouseDownLayerY = 0;
this.mouseDownWidth = 0;
this.mouseDownHeight = 0;
};
 
MCWindows.prototype.init = function(settings) {
this.settings = settings;
 
if (this.isMSIE)
this.addEvent(document, "mousemove", mcWindows.eventDispatcher);
else
this.addEvent(window, "mousemove", mcWindows.eventDispatcher);
 
this.addEvent(document, "mouseup", mcWindows.eventDispatcher);
};
 
MCWindows.prototype.getParam = function(name, default_value) {
var value = null;
 
value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
 
// Fix bool values
if (value == "true" || value == "false")
return (value == "true");
 
return value;
};
 
MCWindows.prototype.eventDispatcher = function(e) {
e = typeof(e) == "undefined" ? window.event : e;
 
if (mcWindows.selectedWindow == null)
return;
 
// Switch focus
if (mcWindows.isGecko && e.type == "mousedown") {
var elm = e.currentTarget;
 
for (var n in mcWindows.windows) {
var win = mcWindows.windows[n];
if (typeof(win) == 'function')
continue;
 
if (win.headElement == elm || win.resizeElement == elm) {
win.focus();
break;
}
}
}
 
switch (e.type) {
case "mousemove":
mcWindows.selectedWindow.onMouseMove(e);
break;
 
case "mouseup":
mcWindows.selectedWindow.onMouseUp(e);
break;
 
case "mousedown":
mcWindows.selectedWindow.onMouseDown(e);
break;
 
case "focus":
mcWindows.selectedWindow.onFocus(e);
break;
}
}
 
MCWindows.prototype.addEvent = function(obj, name, handler) {
if (this.isMSIE)
obj.attachEvent("on" + name, handler);
else
obj.addEventListener(name, handler, true);
};
 
MCWindows.prototype.cancelEvent = function(e) {
if (this.isMSIE) {
e.returnValue = false;
e.cancelBubble = true;
} else
e.preventDefault();
};
 
MCWindows.prototype.parseFeatures = function(opts) {
// Cleanup the options
opts = opts.toLowerCase();
opts = opts.replace(/;/g, ",");
opts = opts.replace(/[^0-9a-z=,]/g, "");
 
var optionChunks = opts.split(',');
var options = new Array();
 
options['left'] = 10;
options['top'] = 10;
options['width'] = 300;
options['height'] = 300;
options['resizable'] = true;
options['minimizable'] = true;
options['maximizable'] = true;
options['close'] = true;
options['movable'] = true;
 
if (opts == "")
return options;
 
for (var i=0; i<optionChunks.length; i++) {
var parts = optionChunks[i].split('=');
 
if (parts.length == 2)
options[parts[0]] = parts[1];
}
 
return options;
};
 
MCWindows.prototype.open = function(url, name, features) {
var win = new MCWindow();
var winDiv, html = "", id;
 
features = this.parseFeatures(features);
 
// Create div
id = "mcWindow_" + name;
 
width = parseInt(features['width']);
height = parseInt(features['height'])-12-19;
 
if (this.isMSIE)
width -= 2;
 
// Setup first part of window
win.id = id;
win.url = url;
win.name = name;
win.features = features;
this.windows[name] = win;
 
iframeWidth = width;
iframeHeight = height;
 
// Create inner content
html += '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';
html += '<html>';
html += '<head>';
html += '<title>Wrapper iframe</title>';
html += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
html += '<link href="../jscripts/tiny_mce/themes/advanced/css/editor_ui.css" rel="stylesheet" type="text/css" />';
html += '</head>';
html += '<body onload="parent.mcWindows.onLoad(\'' + name + '\');">';
 
html += '<div id="' + id + '_container" class="mceWindow">';
html += '<div id="' + id + '_head" class="mceWindowHead" onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();">';
html += ' <div id="' + id + '_title" class="mceWindowTitle"';
html += ' onselectstart="return false;" unselectable="on" style="-moz-user-select: none !important;">No name window</div>';
html += ' <div class="mceWindowHeadTools">';
html += ' <a href="javascript:parent.mcWindows.windows[\'' + name + '\'].close();" onmousedown="return false;" class="mceWindowClose"><img border="0" src="../jscripts/tiny_mce/themes/advanced/images/window_close.gif" /></a>';
// html += ' <a href="javascript:mcWindows.windows[\'' + name + '\'].maximize();" onmousedown="return false;" class="mceWindowMaximize"></a>';
// html += ' <a href="javascript:mcWindows.windows[\'' + name + '\'].minimize();" onmousedown="return false;" class="mceWindowMinimize"></a>';
html += ' </div>';
html += '</div><div id="' + id + '_body" class="mceWindowBody" style="width: ' + width + 'px; height: ' + height + 'px;">';
html += '<iframe id="' + id + '_iframe" name="' + id + '_iframe" onfocus="parent.mcWindows.windows[\'' + name + '\'].focus();" frameborder="0" width="' + iframeWidth + '" height="' + iframeHeight + '" src="' + url + '" class="mceWindowBodyIframe"></iframe></div>';
html += '<div id="' + id + '_statusbar" class="mceWindowStatusbar" onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();">';
html += '<div id="' + id + '_resize" class="mceWindowResize"><img onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();" border="0" src="../jscripts/tiny_mce/themes/advanced/images/window_resize.gif" /></div>';
html += '</div>';
html += '</div>';
 
html += '</body>';
html += '</html>';
 
// Create iframe
this.createFloatingIFrame(id, features['left'], features['top'], features['width'], features['height'], html);
};
 
// Gets called when wrapper iframe is initialized
MCWindows.prototype.onLoad = function(name) {
var win = mcWindows.windows[name];
var id = "mcWindow_" + name;
var wrapperIframe = window.frames[id + "_iframe"].frames[0];
var wrapperDoc = window.frames[id + "_iframe"].document;
var doc = window.frames[id + "_iframe"].document;
var winDiv = document.getElementById("mcWindow_" + name + "_div");
var realIframe = window.frames[id + "_iframe"].frames[0];
 
// Set window data
win.id = "mcWindow_" + name + "_iframe";
win.winElement = winDiv;
win.bodyElement = doc.getElementById(id + '_body');
win.iframeElement = doc.getElementById(id + '_iframe');
win.headElement = doc.getElementById(id + '_head');
win.titleElement = doc.getElementById(id + '_title');
win.resizeElement = doc.getElementById(id + '_resize');
win.containerElement = doc.getElementById(id + '_container');
win.left = win.features['left'];
win.top = win.features['top'];
win.frame = window.frames[id + '_iframe'].frames[0];
win.wrapperFrame = window.frames[id + '_iframe'];
win.wrapperIFrameElement = document.getElementById(id + "_iframe");
 
// Add event handlers
mcWindows.addEvent(win.headElement, "mousedown", mcWindows.eventDispatcher);
mcWindows.addEvent(win.resizeElement, "mousedown", mcWindows.eventDispatcher);
 
if (mcWindows.isMSIE) {
mcWindows.addEvent(realIframe.document, "mousemove", mcWindows.eventDispatcher);
mcWindows.addEvent(realIframe.document, "mouseup", mcWindows.eventDispatcher);
} else {
mcWindows.addEvent(realIframe, "mousemove", mcWindows.eventDispatcher);
mcWindows.addEvent(realIframe, "mouseup", mcWindows.eventDispatcher);
mcWindows.addEvent(realIframe, "focus", mcWindows.eventDispatcher);
}
 
for (var i=0; i<window.frames.length; i++) {
if (!window.frames[i]._hasMouseHandlers) {
if (mcWindows.isMSIE) {
mcWindows.addEvent(window.frames[i].document, "mousemove", mcWindows.eventDispatcher);
mcWindows.addEvent(window.frames[i].document, "mouseup", mcWindows.eventDispatcher);
} else {
mcWindows.addEvent(window.frames[i], "mousemove", mcWindows.eventDispatcher);
mcWindows.addEvent(window.frames[i], "mouseup", mcWindows.eventDispatcher);
}
 
window.frames[i]._hasMouseHandlers = true;
}
}
 
if (mcWindows.isMSIE) {
mcWindows.addEvent(win.frame.document, "mousemove", mcWindows.eventDispatcher);
mcWindows.addEvent(win.frame.document, "mouseup", mcWindows.eventDispatcher);
} else {
mcWindows.addEvent(win.frame, "mousemove", mcWindows.eventDispatcher);
mcWindows.addEvent(win.frame, "mouseup", mcWindows.eventDispatcher);
mcWindows.addEvent(win.frame, "focus", mcWindows.eventDispatcher);
}
 
this.selectedWindow = win;
};
 
MCWindows.prototype.createFloatingIFrame = function(id_prefix, left, top, width, height, html) {
var iframe = document.createElement("iframe");
var div = document.createElement("div");
 
width = parseInt(width);
height = parseInt(height)+1;
 
// Create wrapper div
div.setAttribute("id", id_prefix + "_div");
div.setAttribute("width", width);
div.setAttribute("height", (height));
div.style.position = "absolute";
div.style.left = left + "px";
div.style.top = top + "px";
div.style.width = width + "px";
div.style.height = (height) + "px";
div.style.backgroundColor = "white";
div.style.display = "none";
 
if (this.isGecko) {
iframeWidth = width + 2;
iframeHeight = height + 2;
} else {
iframeWidth = width;
iframeHeight = height + 1;
}
 
// Create iframe
iframe.setAttribute("id", id_prefix + "_iframe");
iframe.setAttribute("name", id_prefix + "_iframe");
iframe.setAttribute("border", "0");
iframe.setAttribute("frameBorder", "0");
iframe.setAttribute("marginWidth", "0");
iframe.setAttribute("marginHeight", "0");
iframe.setAttribute("leftMargin", "0");
iframe.setAttribute("topMargin", "0");
iframe.setAttribute("width", iframeWidth);
iframe.setAttribute("height", iframeHeight);
// iframe.setAttribute("src", "../jscripts/tiny_mce/blank.htm");
// iframe.setAttribute("allowtransparency", "false");
iframe.setAttribute("scrolling", "no");
iframe.style.width = iframeWidth + "px";
iframe.style.height = iframeHeight + "px";
iframe.style.backgroundColor = "white";
div.appendChild(iframe);
 
document.body.appendChild(div);
 
// Fixed MSIE 5.0 issue
div.innerHTML = div.innerHTML;
 
if (this.isSafari) {
// Give Safari some time to setup
window.setTimeout(function() {
doc = window.frames[id_prefix + '_iframe'].document;
doc.open();
doc.write(html);
doc.close();
}, 10);
} else {
doc = window.frames[id_prefix + '_iframe'].window.document
doc.open();
doc.write(html);
doc.close();
}
 
div.style.display = "block";
 
return div;
};
 
// Window instance
function MCWindow() {
};
 
MCWindow.prototype.focus = function() {
this.winElement.style.zIndex = mcWindows.zindex++;
mcWindows.selectedWindow = this;
};
 
MCWindow.prototype.minimize = function() {
};
 
MCWindow.prototype.maximize = function() {
};
 
MCWindow.prototype.startResize = function() {
mcWindows.action = "resize";
};
 
MCWindow.prototype.startMove = function(e) {
mcWindows.action = "move";
};
 
MCWindow.prototype.close = function() {
document.body.removeChild(this.winElement);
mcWindows.windows[this.name] = null;
};
 
MCWindow.prototype.onMouseMove = function(e) {
var scrollX = 0;//this.doc.body.scrollLeft;
var scrollY = 0;//this.doc.body.scrollTop;
 
// Calculate real X, Y
var dx = e.screenX - mcWindows.mouseDownScreenX;
var dy = e.screenY - mcWindows.mouseDownScreenY;
 
switch (mcWindows.action) {
case "resize":
width = mcWindows.mouseDownWidth + (e.screenX - mcWindows.mouseDownScreenX);
height = mcWindows.mouseDownHeight + (e.screenY - mcWindows.mouseDownScreenY);
 
width = width < 100 ? 100 : width;
height = height < 100 ? 100 : height;
 
this.wrapperIFrameElement.style.width = width+2;
this.wrapperIFrameElement.style.height = height+2;
this.wrapperIFrameElement.width = width+2;
this.wrapperIFrameElement.height = height+2;
this.winElement.style.width = width;
this.winElement.style.height = height;
 
height = height-12-19;
 
this.containerElement.style.width = width;
 
this.iframeElement.style.width = width;
this.iframeElement.style.height = height;
this.bodyElement.style.width = width;
this.bodyElement.style.height = height;
this.headElement.style.width = width;
//this.statusElement.style.width = width;
 
mcWindows.cancelEvent(e);
break;
 
case "move":
this.left = mcWindows.mouseDownLayerX + (e.screenX - mcWindows.mouseDownScreenX);
this.top = mcWindows.mouseDownLayerY + (e.screenY - mcWindows.mouseDownScreenY);
this.winElement.style.left = this.left + "px";
this.winElement.style.top = this.top + "px";
 
mcWindows.cancelEvent(e);
break;
}
};
 
MCWindow.prototype.onMouseUp = function(e) {
mcWindows.action = "none";
};
 
MCWindow.prototype.onFocus = function(e) {
// Gecko only handler
var winRef = e.currentTarget;
 
for (var n in mcWindows.windows) {
var win = mcWindows.windows[n];
if (typeof(win) == 'function')
continue;
 
if (winRef.name == win.id) {
win.focus();
return;
}
}
};
 
MCWindow.prototype.onMouseDown = function(e) {
var elm = mcWindows.isMSIE ? this.wrapperFrame.event.srcElement : e.target;
 
var scrollX = 0;//this.doc.body.scrollLeft;
var scrollY = 0;//this.doc.body.scrollTop;
 
mcWindows.mouseDownScreenX = e.screenX;
mcWindows.mouseDownScreenY = e.screenY;
mcWindows.mouseDownLayerX = this.left;
mcWindows.mouseDownLayerY = this.top;
mcWindows.mouseDownWidth = parseInt(this.winElement.style.width);
mcWindows.mouseDownHeight = parseInt(this.winElement.style.height);
 
if (elm == this.resizeElement.firstChild)
this.startResize(e);
else
this.startMove(e);
 
mcWindows.cancelEvent(e);
};
 
// Global instance
var mcWindows = new MCWindows();
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/inlinepopups/images/window_minimize.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/inlinepopups/images/window_minimize.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/inlinepopups/images/window_resize.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/inlinepopups/images/window_resize.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/inlinepopups/images/window_maximize.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/inlinepopups/images/window_maximize.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/inlinepopups/images/window_close.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/inlinepopups/images/window_close.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/inlinepopups/images/spacer.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/inlinepopups/images/spacer.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js
New file
0,0 → 1,819
/**
* $Id: editor_plugin_src.js 268 2007-04-28 15:52:59Z spocke $
*
* Moxiecode DHTML Windows script.
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
// Patch openWindow, closeWindow TinyMCE functions
 
var TinyMCE_InlinePopupsPlugin = {
getInfo : function() {
return {
longname : 'Inline Popups',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
}
};
 
tinyMCE.addPlugin("inlinepopups", TinyMCE_InlinePopupsPlugin);
 
// Patch openWindow, closeWindow TinyMCE functions
 
TinyMCE_Engine.prototype.orgOpenWindow = TinyMCE_Engine.prototype.openWindow;
TinyMCE_Engine.prototype.orgCloseWindow = TinyMCE_Engine.prototype.closeWindow;
 
TinyMCE_Engine.prototype.openWindow = function(template, args) {
// Does the caller support inline
if (args['inline'] != "yes" || tinyMCE.isOpera || tinyMCE.getParam("plugins").indexOf('inlinepopups') == -1) {
mcWindows.selectedWindow = null;
args['mce_inside_iframe'] = false;
this.orgOpenWindow(template, args);
return;
}
 
var url, resizable, scrollbars;
 
args['mce_inside_iframe'] = true;
tinyMCE.windowArgs = args;
 
if (template['file'].charAt(0) != '/' && template['file'].indexOf('://') == -1)
url = tinyMCE.baseURL + "/themes/" + tinyMCE.getParam("theme") + "/" + template['file'];
else
url = template['file'];
 
if (!(width = parseInt(template['width'])))
width = 320;
 
if (!(height = parseInt(template['height'])))
height = 200;
 
if (!(minWidth = parseInt(template['minWidth'])))
minWidth = 100;
 
if (!(minHeight = parseInt(template['minHeight'])))
minHeight = 100;
 
resizable = (args && args['resizable']) ? args['resizable'] : "no";
scrollbars = (args && args['scrollbars']) ? args['scrollbars'] : "no";
 
height += 18;
 
// Replace all args as variables in URL
for (var name in args) {
if (typeof(args[name]) == 'function')
continue;
 
url = tinyMCE.replaceVar(url, name, escape(args[name]));
}
 
var elm = document.getElementById(this.selectedInstance.editorId + '_parent');
 
if (tinyMCE.hasPlugin('fullscreen') && this.selectedInstance.getData('fullscreen').enabled)
pos = { absLeft: 0, absTop: 0 };
else
pos = tinyMCE.getAbsPosition(elm);
 
// Center div in editor area
pos.absLeft += Math.round((elm.firstChild.clientWidth / 2) - (width / 2));
pos.absTop += Math.round((elm.firstChild.clientHeight / 2) - (height / 2));
 
mcWindows.open(url, mcWindows.idCounter++, "modal=yes,width=" + width+ ",height=" + height + ",resizable=" + resizable + ",scrollbars=" + scrollbars + ",statusbar=" + resizable + ",left=" + pos.absLeft + ",top=" + pos.absTop + ",minWidth=" + minWidth + ",minHeight=" + minHeight );
};
 
TinyMCE_Engine.prototype.closeWindow = function(win) {
var gotit = false, n, w;
 
for (n in mcWindows.windows) {
w = mcWindows.windows[n];
 
if (typeof(w) == 'function')
continue;
 
if (win.name == w.id + '_iframe') {
w.close();
gotit = true;
}
}
 
if (!gotit)
this.orgCloseWindow(win);
 
tinyMCE.selectedInstance.getWin().focus();
};
 
TinyMCE_Engine.prototype.setWindowTitle = function(win_ref, title) {
for (var n in mcWindows.windows) {
var win = mcWindows.windows[n];
if (typeof(win) == 'function')
continue;
 
if (win_ref.name == win.id + "_iframe")
window.frames[win.id + "_iframe"].document.getElementById(win.id + '_title').innerHTML = title;
}
};
 
// * * * * * TinyMCE_Windows classes below
 
// Windows handler
function TinyMCE_Windows() {
this.settings = new Array();
this.windows = new Array();
this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
this.isGecko = navigator.userAgent.indexOf('Gecko') != -1;
this.isSafari = navigator.userAgent.indexOf('Safari') != -1;
this.isMac = navigator.userAgent.indexOf('Mac') != -1;
this.isMSIE5_0 = this.isMSIE && (navigator.userAgent.indexOf('MSIE 5.0') != -1);
this.action = "none";
this.selectedWindow = null;
this.lastSelectedWindow = null;
this.zindex = 1001;
this.mouseDownScreenX = 0;
this.mouseDownScreenY = 0;
this.mouseDownLayerX = 0;
this.mouseDownLayerY = 0;
this.mouseDownWidth = 0;
this.mouseDownHeight = 0;
this.idCounter = 0;
};
 
TinyMCE_Windows.prototype.init = function(settings) {
this.settings = settings;
 
if (this.isMSIE)
this.addEvent(document, "mousemove", mcWindows.eventDispatcher);
else
this.addEvent(window, "mousemove", mcWindows.eventDispatcher);
 
this.addEvent(document, "mouseup", mcWindows.eventDispatcher);
 
this.addEvent(window, "resize", mcWindows.eventDispatcher);
this.addEvent(document, "scroll", mcWindows.eventDispatcher);
 
this.doc = document;
};
 
TinyMCE_Windows.prototype.getBounds = function() {
if (!this.bounds) {
var vp = tinyMCE.getViewPort(window);
var top, left, bottom, right, docEl = this.doc.documentElement;
 
top = vp.top;
left = vp.left;
bottom = vp.height + top - 2;
right = vp.width + left - 22; // TODO this number is platform dependant
// x1, y1, x2, y2
this.bounds = [left, top, right, bottom];
}
return this.bounds;
};
 
TinyMCE_Windows.prototype.clampBoxPosition = function(x, y, w, h, minW, minH) {
var bounds = this.getBounds();
 
x = Math.max(bounds[0], Math.min(bounds[2], x + w) - w);
y = Math.max(bounds[1], Math.min(bounds[3], y + h) - h);
 
return this.clampBoxSize(x, y, w, h, minW, minH);
};
 
TinyMCE_Windows.prototype.clampBoxSize = function(x, y, w, h, minW, minH) {
var bounds = this.getBounds();
 
return [
x, y,
Math.max(minW, Math.min(bounds[2], x + w) - x),
Math.max(minH, Math.min(bounds[3], y + h) - y)
];
};
 
TinyMCE_Windows.prototype.getParam = function(name, default_value) {
var value = null;
 
value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
 
// Fix bool values
if (value == "true" || value == "false")
return (value == "true");
 
return value;
};
 
TinyMCE_Windows.prototype.eventDispatcher = function(e) {
e = typeof(e) == "undefined" ? window.event : e;
 
if (mcWindows.selectedWindow == null)
return;
 
// Switch focus
if (mcWindows.isGecko && e.type == "mousedown") {
var elm = e.currentTarget;
 
for (var n in mcWindows.windows) {
var win = mcWindows.windows[n];
 
if (win.headElement == elm || win.resizeElement == elm) {
win.focus();
break;
}
}
}
 
switch (e.type) {
case "mousemove":
mcWindows.selectedWindow.onMouseMove(e);
break;
 
case "mouseup":
mcWindows.selectedWindow.onMouseUp(e);
break;
 
case "mousedown":
mcWindows.selectedWindow.onMouseDown(e);
break;
 
case "focus":
mcWindows.selectedWindow.onFocus(e);
break;
case "scroll":
case "resize":
if (mcWindows.clampUpdateTimeout)
clearTimeout(mcWindows.clampUpdateTimeout);
mcWindows.clampEventType = e.type;
mcWindows.clampUpdateTimeout =
setTimeout(function () {mcWindows.updateClamping()}, 100);
break;
}
};
 
TinyMCE_Windows.prototype.updateClamping = function () {
var clamp, oversize, etype = mcWindows.clampEventType;
 
this.bounds = null; // Recalc window bounds on resize/scroll
this.clampUpdateTimeout = null;
 
for (var n in this.windows) {
win = this.windows[n];
if (typeof(win) == 'function' || ! win.winElement) continue;
 
clamp = mcWindows.clampBoxPosition(
win.left, win.top,
win.winElement.scrollWidth,
win.winElement.scrollHeight,
win.features.minWidth,
win.features.minHeight
);
oversize = (
clamp[2] != win.winElement.scrollWidth ||
clamp[3] != win.winElement.scrollHeight
) ? true : false;
 
if (!oversize || win.features.resizable == "yes" || etype != "scroll")
win.moveTo(clamp[0], clamp[1]);
if (oversize && win.features.resizable == "yes")
win.resizeTo(clamp[2], clamp[3]);
}
};
 
TinyMCE_Windows.prototype.addEvent = function(obj, name, handler) {
if (this.isMSIE)
obj.attachEvent("on" + name, handler);
else
obj.addEventListener(name, handler, false);
};
 
TinyMCE_Windows.prototype.cancelEvent = function(e) {
if (this.isMSIE) {
e.returnValue = false;
e.cancelBubble = true;
} else
e.preventDefault();
};
 
TinyMCE_Windows.prototype.parseFeatures = function(opts) {
// Cleanup the options
opts = opts.toLowerCase();
opts = opts.replace(/;/g, ",");
opts = opts.replace(/[^0-9a-z=,]/g, "");
 
var optionChunks = opts.split(',');
var options = new Array();
 
options['left'] = "10";
options['top'] = "10";
options['width'] = "300";
options['height'] = "300";
options['minwidth'] = "100";
options['minheight'] = "100";
options['resizable'] = "yes";
options['minimizable'] = "yes";
options['maximizable'] = "yes";
options['close'] = "yes";
options['movable'] = "yes";
options['statusbar'] = "yes";
options['scrollbars'] = "auto";
options['modal'] = "no";
 
if (opts == "")
return options;
 
for (var i=0; i<optionChunks.length; i++) {
var parts = optionChunks[i].split('=');
 
if (parts.length == 2)
options[parts[0]] = parts[1];
}
 
options['left'] = parseInt(options['left']);
options['top'] = parseInt(options['top']);
options['width'] = parseInt(options['width']);
options['height'] = parseInt(options['height']);
options['minWidth'] = parseInt(options['minwidth']);
options['minHeight'] = parseInt(options['minheight']);
 
return options;
};
 
TinyMCE_Windows.prototype.open = function(url, name, features) {
this.lastSelectedWindow = this.selectedWindow;
 
var win = new TinyMCE_Window();
var winDiv, html = "", id;
var imgPath = this.getParam("images_path");
 
features = this.parseFeatures(features);
 
// Clamp specified dimensions
var clamp = mcWindows.clampBoxPosition(
features['left'], features['top'],
features['width'], features['height'],
features['minWidth'], features['minHeight']
);
 
features['left'] = clamp[0];
features['top'] = clamp[1];
 
if (features['resizable'] == "yes") {
features['width'] = clamp[2];
features['height'] = clamp[3];
}
 
// Create div
id = "mcWindow_" + name;
win.deltaHeight = 18;
 
if (features['statusbar'] == "yes") {
win.deltaHeight += 13;
 
if (this.isMSIE)
win.deltaHeight += 1;
}
 
width = parseInt(features['width']);
height = parseInt(features['height'])-win.deltaHeight;
 
if (this.isMSIE)
width -= 2;
 
// Setup first part of window
win.id = id;
win.url = url;
win.name = name;
win.features = features;
this.windows[name] = win;
 
iframeWidth = width;
iframeHeight = height;
 
// Create inner content
html += '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';
html += '<html>';
html += '<head>';
html += '<title>Wrapper iframe</title>';
html += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
html += '<link href="' + this.getParam("css_file") + '" rel="stylesheet" type="text/css" />';
html += '</head>';
html += '<body onload="parent.mcWindows.onLoad(\'' + name + '\');">';
 
html += '<div id="' + id + '_container" class="mceWindow">';
html += '<div id="' + id + '_head" class="mceWindowHead" onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();">';
html += ' <div id="' + id + '_title" class="mceWindowTitle"';
html += ' onselectstart="return false;" unselectable="on" style="-moz-user-select: none !important;"></div>';
html += ' <div class="mceWindowHeadTools">';
html += ' <a href="javascript:parent.mcWindows.windows[\'' + name + '\'].close();" target="_self" onmousedown="return false;" class="mceWindowClose"><img border="0" src="' + imgPath + '/window_close.gif" /></a>';
if (features['resizable'] == "yes" && features['maximizable'] == "yes")
html += ' <a href="javascript:parent.mcWindows.windows[\'' + name + '\'].maximize();" target="_self" onmousedown="return false;" class="mceWindowMaximize"><img border="0" src="' + imgPath + '/window_maximize.gif" /></a>';
// html += ' <a href="javascript:mcWindows.windows[\'' + name + '\'].minimize();" target="_self" onmousedown="return false;" class="mceWindowMinimize"></a>';
html += ' </div>';
html += '</div><div id="' + id + '_body" class="mceWindowBody" style="width: ' + width + 'px; height: ' + height + 'px;">';
html += '<iframe id="' + id + '_iframe" name="' + id + '_iframe" frameborder="0" width="' + iframeWidth + '" height="' + iframeHeight + '" src="' + url + '" class="mceWindowBodyIframe" scrolling="' + features['scrollbars'] + '"></iframe></div>';
 
if (features['statusbar'] == "yes") {
html += '<div id="' + id + '_statusbar" class="mceWindowStatusbar" onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();">';
 
if (features['resizable'] == "yes") {
if (this.isGecko)
html += '<div id="' + id + '_resize" class="mceWindowResize"><div style="background-image: url(\'' + imgPath + '/window_resize.gif\'); width: 12px; height: 12px;"></div></div>';
else
html += '<div id="' + id + '_resize" class="mceWindowResize"><img onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();" border="0" src="' + imgPath + '/window_resize.gif" /></div>';
}
 
html += '</div>';
}
 
html += '</div>';
 
html += '</body>';
html += '</html>';
 
// Create iframe
this.createFloatingIFrame(id, features['left'], features['top'], features['width'], features['height'], html);
};
 
// Blocks the document events by placing a image over the whole document
TinyMCE_Windows.prototype.setDocumentLock = function(state) {
var elm = document.getElementById('mcWindowEventBlocker');
 
if (state) {
if (elm == null) {
elm = document.createElement("div");
 
elm.id = "mcWindowEventBlocker";
elm.style.position = "absolute";
elm.style.left = "0";
elm.style.top = "0";
 
document.body.appendChild(elm);
}
 
elm.style.display = "none";
 
var imgPath = this.getParam("images_path");
var width = document.body.clientWidth;
var height = document.body.clientHeight;
 
elm.style.width = width;
elm.style.height = height;
elm.innerHTML = '<img src="' + imgPath + '/spacer.gif" width="' + width + '" height="' + height + '" />';
 
elm.style.zIndex = mcWindows.zindex-1;
elm.style.display = "block";
} else if (elm != null) {
if (mcWindows.windows.length == 0)
elm.parentNode.removeChild(elm);
else
elm.style.zIndex = mcWindows.zindex-1;
}
};
 
// Gets called when wrapper iframe is initialized
TinyMCE_Windows.prototype.onLoad = function(name) {
var win = mcWindows.windows[name];
var id = "mcWindow_" + name;
var wrapperIframe = window.frames[id + "_iframe"].frames[0];
var wrapperDoc = window.frames[id + "_iframe"].document;
var doc = window.frames[id + "_iframe"].document;
var winDiv = document.getElementById("mcWindow_" + name + "_div");
var realIframe = window.frames[id + "_iframe"].frames[0];
 
// Set window data
win.id = "mcWindow_" + name;
win.winElement = winDiv;
win.bodyElement = doc.getElementById(id + '_body');
win.iframeElement = doc.getElementById(id + '_iframe');
win.headElement = doc.getElementById(id + '_head');
win.titleElement = doc.getElementById(id + '_title');
win.resizeElement = doc.getElementById(id + '_resize');
win.containerElement = doc.getElementById(id + '_container');
win.left = win.features['left'];
win.top = win.features['top'];
win.frame = window.frames[id + '_iframe'].frames[0];
win.wrapperFrame = window.frames[id + '_iframe'];
win.wrapperIFrameElement = document.getElementById(id + "_iframe");
 
// Add event handlers
mcWindows.addEvent(win.headElement, "mousedown", mcWindows.eventDispatcher);
 
if (win.resizeElement != null)
mcWindows.addEvent(win.resizeElement, "mousedown", mcWindows.eventDispatcher);
 
if (mcWindows.isMSIE) {
mcWindows.addEvent(realIframe.document, "mousemove", mcWindows.eventDispatcher);
mcWindows.addEvent(realIframe.document, "mouseup", mcWindows.eventDispatcher);
} else {
mcWindows.addEvent(realIframe, "mousemove", mcWindows.eventDispatcher);
mcWindows.addEvent(realIframe, "mouseup", mcWindows.eventDispatcher);
mcWindows.addEvent(realIframe, "focus", mcWindows.eventDispatcher);
}
 
for (var i=0; i<window.frames.length; i++) {
if (!window.frames[i]._hasMouseHandlers) {
if (mcWindows.isMSIE) {
mcWindows.addEvent(window.frames[i].document, "mousemove", mcWindows.eventDispatcher);
mcWindows.addEvent(window.frames[i].document, "mouseup", mcWindows.eventDispatcher);
} else {
mcWindows.addEvent(window.frames[i], "mousemove", mcWindows.eventDispatcher);
mcWindows.addEvent(window.frames[i], "mouseup", mcWindows.eventDispatcher);
}
 
window.frames[i]._hasMouseHandlers = true;
}
}
 
if (mcWindows.isMSIE) {
mcWindows.addEvent(win.frame.document, "mousemove", mcWindows.eventDispatcher);
mcWindows.addEvent(win.frame.document, "mouseup", mcWindows.eventDispatcher);
} else {
mcWindows.addEvent(win.frame, "mousemove", mcWindows.eventDispatcher);
mcWindows.addEvent(win.frame, "mouseup", mcWindows.eventDispatcher);
mcWindows.addEvent(win.frame, "focus", mcWindows.eventDispatcher);
}
 
// Dispatch open window event
var func = this.getParam("on_open_window", "");
if (func != "")
eval(func + "(win);");
 
win.focus();
 
if (win.features['modal'] == "yes")
mcWindows.setDocumentLock(true);
};
 
TinyMCE_Windows.prototype.createFloatingIFrame = function(id_prefix, left, top, width, height, html) {
var iframe = document.createElement("iframe");
var div = document.createElement("div"), doc;
 
width = parseInt(width);
height = parseInt(height)+1;
 
// Create wrapper div
div.setAttribute("id", id_prefix + "_div");
div.setAttribute("width", width);
div.setAttribute("height", (height));
div.style.position = "absolute";
 
div.style.left = left + "px";
div.style.top = top + "px";
div.style.width = width + "px";
div.style.height = (height) + "px";
div.style.backgroundColor = "white";
div.style.display = "none";
 
if (this.isGecko) {
iframeWidth = width + 2;
iframeHeight = height + 2;
} else {
iframeWidth = width;
iframeHeight = height + 1;
}
 
// Create iframe
iframe.setAttribute("id", id_prefix + "_iframe");
iframe.setAttribute("name", id_prefix + "_iframe");
iframe.setAttribute("border", "0");
iframe.setAttribute("frameBorder", "0");
iframe.setAttribute("marginWidth", "0");
iframe.setAttribute("marginHeight", "0");
iframe.setAttribute("leftMargin", "0");
iframe.setAttribute("topMargin", "0");
iframe.setAttribute("width", iframeWidth);
iframe.setAttribute("height", iframeHeight);
// iframe.setAttribute("src", "../jscripts/tiny_mce/blank.htm");
// iframe.setAttribute("allowtransparency", "false");
iframe.setAttribute("scrolling", "no");
iframe.style.width = iframeWidth + "px";
iframe.style.height = iframeHeight + "px";
iframe.style.backgroundColor = "white";
div.appendChild(iframe);
 
document.body.appendChild(div);
 
// Fixed MSIE 5.0 issue
div.innerHTML = div.innerHTML;
 
if (this.isSafari) {
// Give Safari some time to setup
window.setTimeout(function() {
var doc = window.frames[id_prefix + '_iframe'].document;
doc.open();
doc.write(html);
doc.close();
}, 10);
} else {
doc = window.frames[id_prefix + '_iframe'].window.document;
doc.open();
doc.write(html);
doc.close();
}
 
div.style.display = "block";
 
return div;
};
 
// Window instance
function TinyMCE_Window() {
};
 
TinyMCE_Window.prototype.focus = function() {
if (this != mcWindows.selectedWindow) {
this.winElement.style.zIndex = ++mcWindows.zindex;
mcWindows.lastSelectedWindow = mcWindows.selectedWindow;
mcWindows.selectedWindow = this;
}
};
 
TinyMCE_Window.prototype.minimize = function() {
};
 
TinyMCE_Window.prototype.maximize = function() {
if (this.restoreSize) {
this.moveTo(this.restoreSize[0], this.restoreSize[1]);
this.resizeTo(this.restoreSize[2], this.restoreSize[3]);
this.updateClamping();
this.restoreSize = null;
} else {
var bounds = mcWindows.getBounds();
this.restoreSize = [
this.left, this.top,
this.winElement.scrollWidth,
this.winElement.scrollHeight
];
this.moveTo(bounds[0], bounds[1]);
this.resizeTo(
bounds[2] - bounds[0],
bounds[3] - bounds[1]
);
}
};
 
TinyMCE_Window.prototype.startResize = function() {
mcWindows.action = "resize";
};
 
TinyMCE_Window.prototype.startMove = function(e) {
mcWindows.action = "move";
};
 
TinyMCE_Window.prototype.close = function() {
if (this.frame && this.frame['tinyMCEPopup'])
this.frame['tinyMCEPopup'].restoreSelection();
 
if (mcWindows.lastSelectedWindow != null)
mcWindows.lastSelectedWindow.focus();
 
var mcWindowsNew = new Array();
for (var n in mcWindows.windows) {
var win = mcWindows.windows[n];
if (typeof(win) == 'function')
continue;
 
if (win.name != this.name)
mcWindowsNew[n] = win;
}
 
mcWindows.windows = mcWindowsNew;
 
// alert(mcWindows.doc.getElementById(this.id + "_iframe"));
 
var e = mcWindows.doc.getElementById(this.id + "_iframe");
e.parentNode.removeChild(e);
 
var e = mcWindows.doc.getElementById(this.id + "_div");
e.parentNode.removeChild(e);
 
mcWindows.setDocumentLock(false);
};
 
TinyMCE_Window.prototype.onMouseMove = function(e) {
var clamp;
// Calculate real X, Y
var dx = e.screenX - mcWindows.mouseDownScreenX;
var dy = e.screenY - mcWindows.mouseDownScreenY;
 
switch (mcWindows.action) {
case "resize":
clamp = mcWindows.clampBoxSize(
this.left, this.top,
mcWindows.mouseDownWidth + (e.screenX - mcWindows.mouseDownScreenX),
mcWindows.mouseDownHeight + (e.screenY - mcWindows.mouseDownScreenY),
this.features.minWidth, this.features.minHeight
);
 
this.resizeTo(clamp[2], clamp[3]);
 
mcWindows.cancelEvent(e);
break;
 
case "move":
this.left = mcWindows.mouseDownLayerX + (e.screenX - mcWindows.mouseDownScreenX);
this.top = mcWindows.mouseDownLayerY + (e.screenY - mcWindows.mouseDownScreenY);
this.updateClamping();
 
mcWindows.cancelEvent(e);
break;
}
};
 
TinyMCE_Window.prototype.moveTo = function (x, y) {
this.left = x;
this.top = y;
 
this.winElement.style.left = this.left + "px";
this.winElement.style.top = this.top + "px";
};
 
TinyMCE_Window.prototype.resizeTo = function (width, height) {
this.wrapperIFrameElement.style.width = (width+2) + 'px';
this.wrapperIFrameElement.style.height = (height+2) + 'px';
this.wrapperIFrameElement.width = width+2;
this.wrapperIFrameElement.height = height+2;
this.winElement.style.width = width + 'px';
this.winElement.style.height = height + 'px';
 
height = height - this.deltaHeight;
 
this.containerElement.style.width = width + 'px';
this.iframeElement.style.width = width + 'px';
this.iframeElement.style.height = height + 'px';
this.bodyElement.style.width = width + 'px';
this.bodyElement.style.height = height + 'px';
this.headElement.style.width = width + 'px';
//this.statusElement.style.width = width + 'px';
};
 
TinyMCE_Window.prototype.updateClamping = function () {
var clamp, oversize;
 
clamp = mcWindows.clampBoxPosition(
this.left, this.top,
this.winElement.scrollWidth,
this.winElement.scrollHeight,
this.features.minWidth, this.features.minHeight
);
oversize = (
clamp[2] != this.winElement.scrollWidth ||
clamp[3] != this.winElement.scrollHeight
) ? true : false;
 
this.moveTo(clamp[0], clamp[1]);
if (this.features.resizable == "yes" && oversize)
this.resizeTo(clamp[2], clamp[3]);
};
 
function debug(msg) {
document.getElementById('debug').value += msg + "\n";
}
 
TinyMCE_Window.prototype.onMouseUp = function(e) {
mcWindows.action = "none";
};
 
TinyMCE_Window.prototype.onFocus = function(e) {
// Gecko only handler
var winRef = e.currentTarget;
 
for (var n in mcWindows.windows) {
var win = mcWindows.windows[n];
if (typeof(win) == 'function')
continue;
 
if (winRef.name == win.id + "_iframe") {
win.focus();
return;
}
}
};
 
TinyMCE_Window.prototype.onMouseDown = function(e) {
var elm = mcWindows.isMSIE ? this.wrapperFrame.event.srcElement : e.target;
 
mcWindows.mouseDownScreenX = e.screenX;
mcWindows.mouseDownScreenY = e.screenY;
mcWindows.mouseDownLayerX = this.left;
mcWindows.mouseDownLayerY = this.top;
mcWindows.mouseDownWidth = parseInt(this.winElement.style.width);
mcWindows.mouseDownHeight = parseInt(this.winElement.style.height);
 
if (this.resizeElement != null && elm == this.resizeElement.firstChild)
this.startResize(e);
else
this.startMove(e);
 
mcWindows.cancelEvent(e);
};
 
// Global instance
var mcWindows = new TinyMCE_Windows();
 
// Initialize windows
mcWindows.init({
images_path : tinyMCE.baseURL + "/plugins/inlinepopups/images",
css_file : tinyMCE.baseURL + "/plugins/inlinepopups/css/inlinepopup.css"
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/inlinepopups/css/inlinepopup.css
New file
0,0 → 1,69
/* Window classes */
 
.mceWindow {
position: absolute;
left: 0;
top: 0;
border: 1px solid black;
background-color: #D4D0C8;
}
 
.mceWindowHead {
background-color: #334F8D;
width: 100%;
height: 18px;
cursor: move;
overflow: hidden;
}
 
.mceWindowBody {
clear: both;
background-color: white;
}
 
.mceWindowStatusbar {
background-color: #D4D0C8;
height: 12px;
border-top: 1px solid black;
}
 
.mceWindowTitle {
float: left;
font-family: "MS Sans Serif";
font-size: 9pt;
font-weight: bold;
line-height: 18px;
color: white;
margin-left: 2px;
overflow: hidden;
}
 
.mceWindowHeadTools {
margin-right: 2px;
}
 
.mceWindowClose, .mceWindowMinimize, .mceWindowMaximize {
display: block;
float: right;
overflow: hidden;
margin-top: 2px;
}
 
.mceWindowClose {
margin-left: 2px;
}
 
.mceWindowMinimize {
}
 
.mceWindowMaximize {
}
 
.mceWindowResize {
display: block;
float: right;
overflow: hidden;
cursor: se-resize;
width: 12px;
height: 12px;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('emotions');var TinyMCE_EmotionsPlugin={getInfo:function(){return{longname:'Emotions',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"emotions":return tinyMCE.getButtonHTML(cn,'lang_emotions_desc','{$pluginurl}/images/emotions.gif','mceEmotion')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceEmotion":var template=new Array();template['file']='../../plugins/emotions/emotions.htm';template['width']=250;template['height']=160;template['width']+=tinyMCE.getLang('lang_emotions_delta_width',0);template['height']+=tinyMCE.getLang('lang_emotions_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true}return false}};tinyMCE.addPlugin('emotions',TinyMCE_EmotionsPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/jscripts/functions.js
New file
0,0 → 1,21
function init() {
tinyMCEPopup.resizeToInnerSize();
}
 
function insertEmotion(file_name, title) {
title = tinyMCE.getLang(title);
 
if (title == null)
title = "";
 
// XML encode
title = title.replace(/&/g, '&amp;');
title = title.replace(/\"/g, '&quot;');
title = title.replace(/</g, '&lt;');
title = title.replace(/>/g, '&gt;');
 
var html = '<img src="' + tinyMCE.baseURL + "/plugins/emotions/images/" + file_name + '" mce_src="' + tinyMCE.baseURL + "/plugins/emotions/images/" + file_name + '" border="0" alt="' + title + '" title="' + title + '" />';
 
tinyMCE.execCommand('mceInsertContent', false, html);
tinyMCEPopup.close();
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/emotions.htm
New file
0,0 → 1,40
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_emotions_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/functions.js"></script>
<base target="_self" />
</head>
<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<div align="center">
<div class="title">{$lang_emotions_title}:<br /><br /></div>
 
<table border="0" cellspacing="0" cellpadding="4">
<tr>
<td><a href="javascript:insertEmotion('smiley-cool.gif','lang_emotions_cool');"><img src="images/smiley-cool.gif" width="18" height="18" border="0" alt="{$lang_emotions_cool}" title="{$lang_emotions_cool}" /></a></td>
<td><a href="javascript:insertEmotion('smiley-cry.gif','lang_emotions_cry');"><img src="images/smiley-cry.gif" width="18" height="18" border="0" alt="{$lang_emotions_cry}" title="{$lang_emotions_cry}" /></a></td>
<td><a href="javascript:insertEmotion('smiley-embarassed.gif','lang_emotions_embarassed');"><img src="images/smiley-embarassed.gif" width="18" height="18" border="0" alt="{$lang_emotions_embarassed}" title="{$lang_emotions_embarassed}" /></a></td>
<td><a href="javascript:insertEmotion('smiley-foot-in-mouth.gif','lang_emotions_foot_in_mouth');"><img src="images/smiley-foot-in-mouth.gif" width="18" height="18" border="0" alt="{$lang_emotions_foot_in_mouth}" title="{$lang_emotions_foot_in_mouth}" /></a></td>
</tr>
<tr>
<td><a href="javascript:insertEmotion('smiley-frown.gif','lang_emotions_frown');"><img src="images/smiley-frown.gif" width="18" height="18" border="0" alt="{$lang_emotions_frown}" title="{$lang_emotions_frown}" /></a></td>
<td><a href="javascript:insertEmotion('smiley-innocent.gif','lang_emotions_innocent');"><img src="images/smiley-innocent.gif" width="18" height="18" border="0" alt="{$lang_emotions_innocent}" title="{$lang_emotions_innocent}" /></a></td>
<td><a href="javascript:insertEmotion('smiley-kiss.gif','lang_emotions_kiss');"><img src="images/smiley-kiss.gif" width="18" height="18" border="0" alt="{$lang_emotions_kiss}" title="{$lang_emotions_kiss}" /></a></td>
<td><a href="javascript:insertEmotion('smiley-laughing.gif','lang_emotions_laughing');"><img src="images/smiley-laughing.gif" width="18" height="18" border="0" alt="{$lang_emotions_laughing}" title="{$lang_emotions_laughing}" /></a></td>
</tr>
<tr>
<td><a href="javascript:insertEmotion('smiley-money-mouth.gif','lang_emotions_money_mouth');"><img src="images/smiley-money-mouth.gif" width="18" height="18" border="0" alt="{$lang_emotions_money_mouth}" title="{$lang_emotions_money_mouth}" /></a></td>
<td><a href="javascript:insertEmotion('smiley-sealed.gif','lang_emotions_sealed');"><img src="images/smiley-sealed.gif" width="18" height="18" border="0" alt="{$lang_emotions_sealed}" title="{$lang_emotions_sealed}" /></a></td>
<td><a href="javascript:insertEmotion('smiley-smile.gif','lang_emotions_smile');"><img src="images/smiley-smile.gif" width="18" height="18" border="0" alt="{$lang_emotions_smile}" title="{$lang_emotions_smile}" /></a></td>
<td><a href="javascript:insertEmotion('smiley-surprised.gif','lang_emotions_surprised');"><img src="images/smiley-surprised.gif" width="18" height="18" border="0" alt="{$lang_emotions_surprised}" title="{$lang_emotions_surprised}" /></a></td>
</tr>
<tr>
<td><a href="javascript:insertEmotion('smiley-tongue-out.gif','lang_emotions_tongue_out');"><img src="images/smiley-tongue-out.gif" width="18" height="18" border="0" alt="{$lang_emotions_tongue-out}" title="{$lang_emotions_tongue_out}" /></a></td>
<td><a href="javascript:insertEmotion('smiley-undecided.gif','lang_emotions_undecided');"><img src="images/smiley-undecided.gif" width="18" height="18" border="0" alt="{$lang_emotions_undecided}" title="{$lang_emotions_undecided}" /></a></td>
<td><a href="javascript:insertEmotion('smiley-wink.gif','lang_emotions_wink');"><img src="images/smiley-wink.gif" width="18" height="18" border="0" alt="{$lang_emotions_wink}" title="{$lang_emotions_wink}" /></a></td>
<td><a href="javascript:insertEmotion('smiley-yell.gif','lang_emotions_yell');"><img src="images/smiley-yell.gif" width="18" height="18" border="0" alt="{$lang_emotions_yell}" title="{$lang_emotions_yell}" /></a></td>
</tr>
</table>
</div>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/langs/fr.js
New file
0,0 → 1,23
// FR lang variables
// Modified by keyko-web.net, last updated 2007-03-08, based on the work of Motte
 
tinyMCE.addToLang('emotions',{
title : 'Choisir une &eacute;motic&ocirc;ne',
desc : 'Ins&eacute;rer une &eacute;motic&ocirc;ne',
cool : 'Cool',
cry : 'Triste',
embarassed : 'Embarrass&eacute;',
foot_in_mouth : 'Oups !',
frown : 'M&eacute;content',
innocent : 'Innocent',
kiss : 'Bisou',
laughing : 'Mort de rire',
money_mouth : 'Sensur&eacute;',
sealed : 'Motus',
smile : 'Sourire',
surprised : 'Surprise',
tongue_out : 'Moqueur',
undecided : 'Perplexe',
wink : 'Clin d\'oeil',
yell : 'Horreur !'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/langs/en.js
New file
0,0 → 1,22
// UK lang variables
 
tinyMCE.addToLang('emotions',{
title : 'Insert emotion',
desc : 'Emotions',
cool : 'Cool',
cry : 'Cry',
embarassed : 'Embarassed',
foot_in_mouth : 'Foot in mouth',
frown : 'Frown',
innocent : 'Innocent',
kiss : 'Kiss',
laughing : 'Laughing',
money_mouth : 'Money mouth',
sealed : 'Sealed',
smile : 'Smile',
surprised : 'Surprised',
tongue_out : 'Tongue out',
undecided : 'Undecided',
wink : 'Wink',
yell : 'Yell'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-frown.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-frown.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-cool.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-cool.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/emotions.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/emotions.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-cry.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-cry.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-sealed.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-sealed.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-laughing.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-laughing.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-yell.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-yell.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-foot-in-mouth.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-foot-in-mouth.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-embarassed.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-embarassed.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-tongue-out.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-tongue-out.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/readme.txt
New file
0,0 → 1,2
These emotions where taken from Mozilla Thunderbird.
I hope they don't get angry if I use them here after all this is a open source project aswell.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-wink.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-wink.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-smile.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-smile.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-kiss.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-kiss.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-innocent.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-innocent.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-surprised.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-surprised.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-money-mouth.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-money-mouth.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-undecided.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/images/smiley-undecided.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/editor_plugin_src.js
New file
0,0 → 1,63
/**
* $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
tinyMCE.importPluginLanguagePack('emotions');
 
// Plucin static class
var TinyMCE_EmotionsPlugin = {
getInfo : function() {
return {
longname : 'Emotions',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
/**
* Returns the HTML contents of the emotions control.
*/
getControlHTML : function(cn) {
switch (cn) {
case "emotions":
return tinyMCE.getButtonHTML(cn, 'lang_emotions_desc', '{$pluginurl}/images/emotions.gif', 'mceEmotion');
}
 
return "";
},
 
/**
* Executes the mceEmotion command.
*/
execCommand : function(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
case "mceEmotion":
var template = new Array();
 
template['file'] = '../../plugins/emotions/emotions.htm'; // Relative to theme
template['width'] = 250;
template['height'] = 160;
 
// Language specific width and height addons
template['width'] += tinyMCE.getLang('lang_emotions_delta_width', 0);
template['height'] += tinyMCE.getLang('lang_emotions_delta_height', 0);
 
tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});
 
return true;
}
 
// Pass to next handler in chain
return false;
}
};
 
// Register plugin
tinyMCE.addPlugin('emotions', TinyMCE_EmotionsPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/emotions/readme.txt
New file
0,0 → 1,0
Check the TinyMCE documentation for details on this plugin.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/iespell/langs/en.js
New file
0,0 → 1,7
// UK lang variables
 
tinyMCE.addToLang('',{
iespell_desc : 'Run spell checking',
iespell_download : "ieSpell not detected. Click OK to go to download page."
});
 
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/iespell/langs/fr.js
New file
0,0 → 1,7
// FR lang variables
// Modified by Motte, last updated 2006-03-23
 
tinyMCE.addToLang('',{
iespell_desc : 'Lancer le v&eacute;rificateur d\'orthographe',
iespell_download : "Le dictionnaire ieSpell n\'a pas &eacute;t&eacute; trouv&eacute;.\n\nCliquez sur Ok pour aller au site de t&eacute;l&eacute;chargement."
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/iespell/images/iespell.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/iespell/images/iespell.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/iespell/editor_plugin_src.js
New file
0,0 → 1,58
/**
* $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
tinyMCE.importPluginLanguagePack('iespell');
 
var TinyMCE_IESpellPlugin = {
getInfo : function() {
return {
longname : 'IESpell (MSIE Only)',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
/**
* Returns the HTML contents of the iespell control.
*/
getControlHTML : function(cn) {
// Is it the iespell control and is the brower MSIE.
if (cn == "iespell" && (tinyMCE.isMSIE && !tinyMCE.isOpera))
return tinyMCE.getButtonHTML(cn, 'lang_iespell_desc', '{$pluginurl}/images/iespell.gif', 'mceIESpell');
 
return "";
},
 
/**
* Executes the mceIESpell command.
*/
execCommand : function(editor_id, element, command, user_interface, value) {
// Handle ieSpellCommand
if (command == "mceIESpell") {
try {
var ieSpell = new ActiveXObject("ieSpell.ieSpellExtension");
ieSpell.CheckDocumentNode(tinyMCE.getInstanceById(editor_id).contentDocument.documentElement);
} catch (e) {
if (e.number == -2146827859) {
if (confirm(tinyMCE.getLang("lang_iespell_download", "", true)))
window.open('http://www.iespell.com/download.php', 'ieSpellDownload', '');
} else
alert("Error Loading ieSpell: Exception " + e.number);
}
 
return true;
}
 
// Pass to next handler in chain
return false;
}
};
 
tinyMCE.addPlugin("iespell", TinyMCE_IESpellPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/iespell/readme.txt
New file
0,0 → 1,0
Check the TinyMCE documentation for details on this plugin.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/iespell/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('iespell');var TinyMCE_IESpellPlugin={getInfo:function(){return{longname:'IESpell (MSIE Only)',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){if(cn=="iespell"&&(tinyMCE.isMSIE&&!tinyMCE.isOpera))return tinyMCE.getButtonHTML(cn,'lang_iespell_desc','{$pluginurl}/images/iespell.gif','mceIESpell');return""},execCommand:function(editor_id,element,command,user_interface,value){if(command=="mceIESpell"){try{var ieSpell=new ActiveXObject("ieSpell.ieSpellExtension");ieSpell.CheckDocumentNode(tinyMCE.getInstanceById(editor_id).contentDocument.documentElement)}catch(e){if(e.number==-2146827859){if(confirm(tinyMCE.getLang("lang_iespell_download","",true)))window.open('http://www.iespell.com/download.php','ieSpellDownload','')}else alert("Error Loading ieSpell: Exception "+e.number)}return true}return false}};tinyMCE.addPlugin("iespell",TinyMCE_IESpellPlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/save/langs/en.js
New file
0,0 → 1,6
// UK lang variables
 
tinyMCE.addToLang('',{
save_desc : 'Save',
cancel_desc : 'Cancel all changes'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/save/langs/fr.js
New file
0,0 → 1,6
// FR lang variables
// Modified by Motte, last updated 2006-03-23
 
tinyMCE.addToLang('',{
save_desc : 'Enregistrer'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/save/images/save.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/save/images/save.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/save/images/cancel.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/save/images/cancel.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/save/editor_plugin_src.js
New file
0,0 → 1,152
/**
* $Id: editor_plugin_src.js 251 2007-04-10 20:16:15Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import plugin specific language pack */
tinyMCE.importPluginLanguagePack('save');
 
var TinyMCE_SavePlugin = {
getInfo : function() {
return {
longname : 'Save',
author : 'Moxiecode Systems AB',
authorurl : 'http://tinymce.moxiecode.com',
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save',
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
};
},
 
initInstance : function(inst) {
inst.addShortcut('ctrl', 's', 'lang_save_desc', 'mceSave');
},
 
/**
* Returns the HTML contents of the save control.
*/
getControlHTML : function(cn) {
switch (cn) {
case "save":
return tinyMCE.getButtonHTML(cn, 'lang_save_desc', '{$pluginurl}/images/save.gif', 'mceSave');
 
case "cancel":
return tinyMCE.getButtonHTML(cn, 'lang_cancel_desc', '{$pluginurl}/images/cancel.gif', 'mceCancel');
}
 
return "";
},
 
/**
* Executes the save command.
*/
execCommand : function(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
case "mceSave":
return this._save(editor_id, element, command, user_interface, value);
 
case "mceCancel":
return this._cancel(editor_id, element, command, user_interface, value);
}
 
// Pass to next handler in chain
return false;
},
 
_save : function(editor_id, element, command, user_interface, value) {
var inst, formObj, os, i, elementId;
 
if (tinyMCE.getParam("fullscreen_is_enabled"))
return true;
 
inst = tinyMCE.selectedInstance;
formObj = inst.formElement.form;
 
if (tinyMCE.getParam("save_enablewhendirty") && !inst.isDirty())
return true;
 
if (formObj) {
tinyMCE.triggerSave();
 
// Use callback instead
if ((os = tinyMCE.getParam("save_onsavecallback"))) {
if (eval(os + '(inst);')) {
inst.startContent = tinyMCE.trim(inst.getBody().innerHTML);
/*inst.undoLevels = new Array();
inst.undoIndex = 0;
inst.typingUndoIndex = -1;
inst.undoRedo = true;
inst.undoLevels[inst.undoLevels.length] = inst.startContent;*/
tinyMCE.triggerNodeChange(false, true);
}
 
return true;
}
 
// Disable all UI form elements that TinyMCE created
for (i=0; i<formObj.elements.length; i++) {
elementId = formObj.elements[i].name ? formObj.elements[i].name : formObj.elements[i].id;
 
if (elementId.indexOf('mce_editor_') == 0)
formObj.elements[i].disabled = true;
}
 
inst.isNotDirty = true;
 
if (formObj.onsubmit == null || formObj.onsubmit() != false)
inst.formElement.form.submit();
 
tinyMCE.triggerNodeChange(false, true);
} else
alert("Error: No form element found.");
 
return true;
},
 
_cancel : function(editor_id, element, command, user_interface, value) {
var inst = tinyMCE.getInstanceById(editor_id), os, h = tinyMCE.trim(inst.startContent);
 
// Use callback instead
if ((os = tinyMCE.getParam("save_oncancelcallback"))) {
if (eval(os + '(inst);'))
return true;
}
 
inst.setHTML(h);
 
inst.undoRedo.undoLevels = [];
inst.undoRedo.add({ content : h });
inst.undoRedo.undoIndex = 0;
inst.undoRedo.typingUndoIndex = -1;
 
tinyMCE.triggerNodeChange(false, true);
 
return true;
},
 
handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
var inst;
 
if (tinyMCE.getParam("fullscreen_is_enabled")) {
tinyMCE.switchClass(editor_id + '_save', 'mceButtonDisabled');
return true;
}
 
if (tinyMCE.getParam("save_enablewhendirty")) {
inst = tinyMCE.getInstanceById(editor_id);
 
if (inst.isDirty()) {
tinyMCE.switchClass(editor_id + '_save', 'mceButtonNormal');
return true;
}
 
tinyMCE.switchClass(editor_id + '_save', 'mceButtonDisabled');
}
 
return true;
}
};
 
tinyMCE.addPlugin("save", TinyMCE_SavePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/save/readme.txt
New file
0,0 → 1,0
Check the TinyMCE documentation for details on this plugin.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/plugins/save/editor_plugin.js
New file
0,0 → 1,0
tinyMCE.importPluginLanguagePack('save');var TinyMCE_SavePlugin={getInfo:function(){return{longname:'Save',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){inst.addShortcut('ctrl','s','lang_save_desc','mceSave')},getControlHTML:function(cn){switch(cn){case"save":return tinyMCE.getButtonHTML(cn,'lang_save_desc','{$pluginurl}/images/save.gif','mceSave');case"cancel":return tinyMCE.getButtonHTML(cn,'lang_cancel_desc','{$pluginurl}/images/cancel.gif','mceCancel')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceSave":return this._save(editor_id,element,command,user_interface,value);case"mceCancel":return this._cancel(editor_id,element,command,user_interface,value)}return false},_save:function(editor_id,element,command,user_interface,value){var inst,formObj,os,i,elementId;if(tinyMCE.getParam("fullscreen_is_enabled"))return true;inst=tinyMCE.selectedInstance;formObj=inst.formElement.form;if(tinyMCE.getParam("save_enablewhendirty")&&!inst.isDirty())return true;if(formObj){tinyMCE.triggerSave();if((os=tinyMCE.getParam("save_onsavecallback"))){if(eval(os+'(inst);')){inst.startContent=tinyMCE.trim(inst.getBody().innerHTML);tinyMCE.triggerNodeChange(false,true)}return true}for(i=0;i<formObj.elements.length;i++){elementId=formObj.elements[i].name?formObj.elements[i].name:formObj.elements[i].id;if(elementId.indexOf('mce_editor_')==0)formObj.elements[i].disabled=true}inst.isNotDirty=true;if(formObj.onsubmit==null||formObj.onsubmit()!=false)inst.formElement.form.submit();tinyMCE.triggerNodeChange(false,true)}else alert("Error: No form element found.");return true},_cancel:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id),os,h=tinyMCE.trim(inst.startContent);if((os=tinyMCE.getParam("save_oncancelcallback"))){if(eval(os+'(inst);'))return true}inst.setHTML(h);inst.undoRedo.undoLevels=[];inst.undoRedo.add({content:h});inst.undoRedo.undoIndex=0;inst.undoRedo.typingUndoIndex=-1;tinyMCE.triggerNodeChange(false,true);return true},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var inst;if(tinyMCE.getParam("fullscreen_is_enabled")){tinyMCE.switchClass(editor_id+'_save','mceButtonDisabled');return true}if(tinyMCE.getParam("save_enablewhendirty")){inst=tinyMCE.getInstanceById(editor_id);if(inst.isDirty()){tinyMCE.switchClass(editor_id+'_save','mceButtonNormal');return true}tinyMCE.switchClass(editor_id+'_save','mceButtonDisabled')}return true}};tinyMCE.addPlugin("save",TinyMCE_SavePlugin);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/tiny_mce.js
New file
0,0 → 1,0
function TinyMCE_Engine(){var ua;this.majorVersion="2";this.minorVersion="1.2";this.releaseDate="2007-08-21";this.instances=[];this.switchClassCache=[];this.windowArgs=[];this.loadedFiles=[];this.pendingFiles=[];this.loadingIndex=0;this.configs=[];this.currentConfig=0;this.eventHandlers=[];this.log=[];this.undoLevels=[];this.undoIndex=0;this.typingUndoIndex=-1;this.settings=[];ua=navigator.userAgent;this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.isMSIE5=this.isMSIE&&(ua.indexOf('MSIE 5')!=-1);this.isMSIE5_0=this.isMSIE&&(ua.indexOf('MSIE 5.0')!=-1);this.isMSIE7=this.isMSIE&&(ua.indexOf('MSIE 7')!=-1);this.isGecko=ua.indexOf('Gecko')!=-1;this.isSafari=ua.indexOf('Safari')!=-1;this.isOpera=window['opera']&&opera.buildNumber?true:false;this.isMac=ua.indexOf('Mac')!=-1;this.isNS7=ua.indexOf('Netscape/7')!=-1;this.isNS71=ua.indexOf('Netscape/7.1')!=-1;this.dialogCounter=0;this.plugins=[];this.themes=[];this.menus=[];this.loadedPlugins=[];this.buttonMap=[];this.isLoaded=false;if(this.isOpera){this.isMSIE=true;this.isGecko=false;this.isSafari=false}this.isIE=this.isMSIE;this.isRealIE=this.isMSIE&&!this.isOpera;this.idCounter=0};TinyMCE_Engine.prototype={init:function(settings){var theme,nl,baseHREF="",i,cssPath,entities,h,p,src,elements=[],head;if(this.isMSIE5_0)return;this.settings=settings;if(typeof(document.execCommand)=='undefined')return;if(!tinyMCE.baseURL){head=document.getElementsByTagName('head')[0];if(head){for(i=0,nl=head.getElementsByTagName('script');i<nl.length;i++)elements.push(nl[i])}for(i=0,nl=document.getElementsByTagName('script');i<nl.length;i++)elements.push(nl[i]);nl=document.getElementsByTagName('base');for(i=0;i<nl.length;i++){if(nl[i].href)baseHREF=nl[i].href}for(i=0;i<elements.length;i++){if(elements[i].src&&(elements[i].src.indexOf("tiny_mce.js")!=-1||elements[i].src.indexOf("tiny_mce_dev.js")!=-1||elements[i].src.indexOf("tiny_mce_src.js")!=-1||elements[i].src.indexOf("tiny_mce_gzip")!=-1)){src=elements[i].src;tinyMCE.srcMode=(src.indexOf('_src')!=-1||src.indexOf('_dev')!=-1)?'_src':'';tinyMCE.gzipMode=src.indexOf('_gzip')!=-1;src=src.substring(0,src.lastIndexOf('/'));if(settings.exec_mode=="src"||settings.exec_mode=="normal")tinyMCE.srcMode=settings.exec_mode=="src"?'_src':'';if(baseHREF!==''&&src.indexOf('://')==-1)tinyMCE.baseURL=baseHREF+src;else tinyMCE.baseURL=src;break}}}this.documentBasePath=document.location.href;if(this.documentBasePath.indexOf('?')!=-1)this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.indexOf('?'));this.documentURL=this.documentBasePath;this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.lastIndexOf('/'));if(tinyMCE.baseURL.indexOf('://')==-1&&tinyMCE.baseURL.charAt(0)!='/'){tinyMCE.baseURL=this.documentBasePath+"/"+tinyMCE.baseURL}this._def("mode","none");this._def("theme","advanced");this._def("plugins","",true);this._def("language","en");this._def("docs_language",this.settings.language);this._def("elements","");this._def("textarea_trigger","mce_editable");this._def("editor_selector","");this._def("editor_deselector","mceNoEditor");this._def("valid_elements","+a[id|style|rel|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/-b[class|style],-em/-i[class|style],-strike[class|style],-u[class|style],#p[id|style|dir|class|align],-ol[class|style],-ul[class|style],-li[class|style],br,img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|alt=|title|hspace|vspace|width|height|align],-sub[style|class],-sup[style|class],-blockquote[dir|style],-table[border=0|cellspacing|cellpadding|width|height|class|align|summary|style|dir|id|lang|bgcolor|background|bordercolor],-tr[id|lang|dir|class|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor],tbody[id|class],thead[id|class],tfoot[id|class],#td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],-th[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|scope],caption[id|lang|dir|class|style],-div[id|dir|class|align|style],-span[style|class|align],-pre[class|align|style],address[class|align|style],-h1[id|style|dir|class|align],-h2[id|style|dir|class|align],-h3[id|style|dir|class|align],-h4[id|style|dir|class|align],-h5[id|style|dir|class|align],-h6[id|style|dir|class|align],hr[class|style],-font[face|size|style|id|class|dir|color],dd[id|class|title|style|dir|lang],dl[id|class|title|style|dir|lang],dt[id|class|title|style|dir|lang],cite[title|id|class|style|dir|lang],abbr[title|id|class|style|dir|lang],acronym[title|id|class|style|dir|lang],del[title|id|class|style|dir|lang|datetime|cite],ins[title|id|class|style|dir|lang|datetime|cite]");this._def("extended_valid_elements","");this._def("invalid_elements","");this._def("encoding","");this._def("urlconverter_callback",tinyMCE.getParam("urlconvertor_callback","TinyMCE_Engine.prototype.convertURL"));this._def("save_callback","");this._def("force_br_newlines",false);this._def("force_p_newlines",true);this._def("add_form_submit_trigger",true);this._def("relative_urls",true);this._def("remove_script_host",true);this._def("focus_alert",true);this._def("document_base_url",this.documentURL);this._def("visual",true);this._def("visual_table_class","mceVisualAid");this._def("setupcontent_callback","");this._def("fix_content_duplication",true);this._def("custom_undo_redo",true);this._def("custom_undo_redo_levels",-1);this._def("custom_undo_redo_keyboard_shortcuts",true);this._def("custom_undo_redo_restore_selection",true);this._def("custom_undo_redo_global",false);this._def("verify_html",true);this._def("apply_source_formatting",false);this._def("directionality","ltr");this._def("cleanup_on_startup",false);this._def("inline_styles",false);this._def("convert_newlines_to_brs",false);this._def("auto_reset_designmode",true);this._def("entities","39,#39,160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,34,quot,38,amp,60,lt,62,gt,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro",true);this._def("entity_encoding","named");this._def("cleanup_callback","");this._def("add_unload_trigger",true);this._def("ask",false);this._def("nowrap",false);this._def("auto_resize",false);this._def("auto_focus",false);this._def("cleanup",true);this._def("remove_linebreaks",true);this._def("button_tile_map",false);this._def("submit_patch",true);this._def("browsers","msie,safari,gecko,opera",true);this._def("dialog_type","window");this._def("accessibility_warnings",true);this._def("accessibility_focus",true);this._def("merge_styles_invalid_parents","");this._def("force_hex_style_colors",true);this._def("trim_span_elements",true);this._def("convert_fonts_to_spans",false);this._def("doctype",'<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">');this._def("font_size_classes",'');this._def("font_size_style_values",'xx-small,x-small,small,medium,large,x-large,xx-large',true);this._def("event_elements",'a,img',true);this._def("convert_urls",true);this._def("table_inline_editing",false);this._def("object_resizing",true);this._def("custom_shortcuts",true);this._def("convert_on_click",false);this._def("content_css",'');this._def("fix_list_elements",true);this._def("fix_table_elements",false);this._def("strict_loading_mode",document.contentType=='application/xhtml+xml');this._def("hidden_tab_class",'');this._def("display_tab_class",'');this._def("gecko_spellcheck",false);this._def("hide_selects_on_submit",true);this._def("forced_root_block",false);this._def("remove_trailing_nbsp",false);this._def("save_on_tinymce_forms",false);if(this.isMSIE&&!this.isOpera)this.settings.strict_loading_mode=false;if(this.isMSIE&&this.settings.browsers.indexOf('msie')==-1)return;if(this.isGecko&&this.settings.browsers.indexOf('gecko')==-1)return;if(this.isSafari&&this.settings.browsers.indexOf('safari')==-1)return;if(this.isOpera&&this.settings.browsers.indexOf('opera')==-1)return;baseHREF=tinyMCE.settings.document_base_url;h=document.location.href;p=h.indexOf('://');if(p>0&&document.location.protocol!="file:"){p=h.indexOf('/',p+3);h=h.substring(0,p);if(baseHREF.indexOf('://')==-1)baseHREF=h+baseHREF;tinyMCE.settings.document_base_url=baseHREF;tinyMCE.settings.document_base_prefix=h}if(baseHREF.indexOf('?')!=-1)baseHREF=baseHREF.substring(0,baseHREF.indexOf('?'));this.settings.base_href=baseHREF.substring(0,baseHREF.lastIndexOf('/'))+"/";theme=this.settings.theme;this.inlineStrict='A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment';this.inlineTransitional='A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment';this.blockElms='H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP';this.blockRegExp=new RegExp("^("+this.blockElms+")$","i");this.posKeyCodes=[13,45,36,35,33,34,37,38,39,40];this.uniqueURL='javascript:void(091039730);';this.uniqueTag='<div id="mceTMPElement" style="display: none">TMP</div>';this.callbacks=['onInit','getInfo','getEditorTemplate','setupContent','onChange','onPageLoad','handleNodeChange','initInstance','execCommand','getControlHTML','handleEvent','cleanup','removeInstance'];this.settings.theme_href=tinyMCE.baseURL+"/themes/"+theme;if(!tinyMCE.isIE||tinyMCE.isOpera)this.settings.force_br_newlines=false;if(tinyMCE.getParam("popups_css",false)){cssPath=tinyMCE.getParam("popups_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings.popups_css=this.documentBasePath+"/"+cssPath;else this.settings.popups_css=cssPath}else this.settings.popups_css=tinyMCE.baseURL+"/themes/"+theme+"/css/editor_popup.css";if(tinyMCE.getParam("editor_css",false)){cssPath=tinyMCE.getParam("editor_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings.editor_css=this.documentBasePath+"/"+cssPath;else this.settings.editor_css=cssPath}else{if(this.settings.editor_css!=='')this.settings.editor_css=tinyMCE.baseURL+"/themes/"+theme+"/css/editor_ui.css"}if(this.configs.length==0){if(typeof(TinyMCECompressed)=="undefined"){tinyMCE.addEvent(window,"DOMContentLoaded",TinyMCE_Engine.prototype.onLoad);if(tinyMCE.isRealIE){if(document.body)tinyMCE.addEvent(document.body,"readystatechange",TinyMCE_Engine.prototype.onLoad);else tinyMCE.addEvent(document,"readystatechange",TinyMCE_Engine.prototype.onLoad)}tinyMCE.addEvent(window,"load",TinyMCE_Engine.prototype.onLoad);tinyMCE._addUnloadEvents()}}this.loadScript(tinyMCE.baseURL+'/themes/'+this.settings.theme+'/editor_template'+tinyMCE.srcMode+'.js');this.loadScript(tinyMCE.baseURL+'/langs/'+this.settings.language+'.js');this.loadCSS(this.settings.editor_css);p=tinyMCE.getParam('plugins','',true,',');if(p.length>0){for(i=0;i<p.length;i++){if(p[i].charAt(0)!='-')this.loadScript(tinyMCE.baseURL+'/plugins/'+p[i]+'/editor_plugin'+tinyMCE.srcMode+'.js')}}if(tinyMCE.getParam('entity_encoding')=='named'){settings.cleanup_entities=[];entities=tinyMCE.getParam('entities','',true,',');for(i=0;i<entities.length;i+=2)settings.cleanup_entities['c'+entities[i]]=entities[i+1]}settings.index=this.configs.length;this.configs[this.configs.length]=settings;this.loadNextScript();if(this.isIE&&!this.isOpera){try{document.execCommand('BackgroundImageCache',false,true)}catch(e){}}this.xmlEncodeRe=new RegExp('[<>&"]','g')},_addUnloadEvents:function(){var st=tinyMCE.settings.add_unload_trigger;if(tinyMCE.isIE){if(st){tinyMCE.addEvent(window,"unload",TinyMCE_Engine.prototype.unloadHandler);tinyMCE.addEvent(window.document,"beforeunload",TinyMCE_Engine.prototype.unloadHandler)}}else{if(st)tinyMCE.addEvent(window,"unload",function(){tinyMCE.triggerSave(true,true)})}},_def:function(key,def_val,t){var v=tinyMCE.getParam(key,def_val);v=t?v.replace(/\s+/g,""):v;this.settings[key]=v},hasPlugin:function(n){return typeof(this.plugins[n])!="undefined"&&this.plugins[n]!=null},addPlugin:function(n,p){var op=this.plugins[n];p.baseURL=op?op.baseURL:tinyMCE.baseURL+"/plugins/"+n;this.plugins[n]=p;this.loadNextScript()},setPluginBaseURL:function(n,u){var op=this.plugins[n];if(op)op.baseURL=u;else this.plugins[n]={baseURL:u}},loadPlugin:function(n,u){u=u.indexOf('.js')!=-1?u.substring(0,u.lastIndexOf('/')):u;u=u.charAt(u.length-1)=='/'?u.substring(0,u.length-1):u;this.plugins[n]={baseURL:u};this.loadScript(u+"/editor_plugin"+(tinyMCE.srcMode?'_src':'')+".js")},hasTheme:function(n){return typeof(this.themes[n])!="undefined"&&this.themes[n]!=null},addTheme:function(n,t){this.themes[n]=t;this.loadNextScript()},addMenu:function(n,m){this.menus[n]=m},hasMenu:function(n){return typeof(this.plugins[n])!="undefined"&&this.plugins[n]!=null},loadScript:function(url){var i;for(i=0;i<this.loadedFiles.length;i++){if(this.loadedFiles[i]==url)return}if(tinyMCE.settings.strict_loading_mode)this.pendingFiles[this.pendingFiles.length]=url;else document.write('<sc'+'ript language="javascript" type="text/javascript" src="'+url+'"></script>');this.loadedFiles[this.loadedFiles.length]=url},loadNextScript:function(){var d=document,se;if(!tinyMCE.settings.strict_loading_mode)return;if(this.loadingIndex<this.pendingFiles.length){se=d.createElementNS('http://www.w3.org/1999/xhtml','script');se.setAttribute('language','javascript');se.setAttribute('type','text/javascript');se.setAttribute('src',this.pendingFiles[this.loadingIndex++]);d.getElementsByTagName("head")[0].appendChild(se)}else this.loadingIndex=-1;},loadCSS:function(url){var ar=url.replace(/\s+/,'').split(',');var lflen=0,csslen=0,skip=false;var x=0,i=0,nl,le;for(x=0,csslen=ar.length;x<csslen;x++){if(ar[x]!=null&&ar[x]!='null'&&ar[x].length>0){for(i=0,lflen=this.loadedFiles.length;i<lflen;i++){if(this.loadedFiles[i]==ar[x]){skip=true;break}}if(!skip){if(tinyMCE.settings.strict_loading_mode){nl=document.getElementsByTagName("head");le=document.createElement('link');le.setAttribute('href',ar[x]);le.setAttribute('rel','stylesheet');le.setAttribute('type','text/css');nl[0].appendChild(le)}else document.write('<link href="'+ar[x]+'" rel="stylesheet" type="text/css" />');this.loadedFiles[this.loadedFiles.length]=ar[x]}}}},importCSS:function(doc,css){var css_ary=css.replace(/\s+/,'').split(',');var csslen,elm,headArr,x,css_file;for(x=0,csslen=css_ary.length;x<csslen;x++){css_file=css_ary[x];if(css_file!=null&&css_file!='null'&&css_file.length>0){if(css_file.indexOf('://')==-1&&css_file.charAt(0)!='/')css_file=this.documentBasePath+"/"+css_file;if(typeof(doc.createStyleSheet)=="undefined"){elm=doc.createElement("link");elm.rel="stylesheet";elm.href=css_file;if((headArr=doc.getElementsByTagName("head"))!=null&&headArr.length>0)headArr[0].appendChild(elm)}else doc.createStyleSheet(css_file)}}},confirmAdd:function(e,settings){var elm=tinyMCE.isIE?event.srcElement:e.target;var elementId=elm.name?elm.name:elm.id;tinyMCE.settings=settings;if(tinyMCE.settings.convert_on_click||(!elm.getAttribute('mce_noask')&&confirm(tinyMCELang.lang_edit_confirm)))tinyMCE.addMCEControl(elm,elementId);elm.setAttribute('mce_noask','true')},updateContent:function(form_element_name){var formElement,n,inst,doc;formElement=document.getElementById(form_element_name);for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.switchSettings();if(inst.formElement==formElement){doc=inst.getDoc();tinyMCE._setHTML(doc,inst.formElement.value);if(!tinyMCE.isIE)doc.body.innerHTML=tinyMCE._cleanupHTML(inst,doc,this.settings,doc.body,inst.visualAid)}}},addMCEControl:function(replace_element,form_element_name,target_document){var id="mce_editor_"+tinyMCE.idCounter++;var inst=new TinyMCE_Control(tinyMCE.settings);inst.editorId=id;this.instances[id]=inst;inst._onAdd(replace_element,form_element_name,target_document)},removeInstance:function(ti){var t=[],n,i;for(n in tinyMCE.instances){i=tinyMCE.instances[n];if(tinyMCE.isInstance(i)&&ti!=i)t[n]=i}tinyMCE.instances=t;n=[];t=tinyMCE.undoLevels;for(i=0;i<t.length;i++){if(t[i]!=ti)n.push(t[i])}tinyMCE.undoLevels=n;tinyMCE.undoIndex=n.length;tinyMCE.dispatchCallback(ti,'remove_instance_callback','removeInstance',ti);return ti},removeMCEControl:function(editor_id){var inst=tinyMCE.getInstanceById(editor_id),h,re,ot,tn,n;if(inst){inst.switchSettings();editor_id=inst.editorId;h=tinyMCE.getContent(editor_id);this.removeInstance(inst);tinyMCE.selectedElement=null;tinyMCE.selectedInstance=null;tinyMCE.selectedElement=null;tinyMCE.selectedInstance=null;for(n in tinyMCE.instances){if(!tinyMCE.isInstance(tinyMCE.instances[n]))continue;tinyMCE.selectedInstance=tinyMCE.instances[n];break}re=document.getElementById(editor_id+"_parent");ot=inst.oldTargetElement;tn=ot.nodeName.toLowerCase();if(tn=="textarea"||tn=="input"){re.parentNode.removeChild(re);ot.style.display="inline";ot.value=h}else{ot.innerHTML=h;ot.style.display='block';re.parentNode.insertBefore(ot,re);re.parentNode.removeChild(re)}}},triggerSave:function(skip_cleanup,skip_callback){var inst,n;if(typeof(skip_cleanup)=="undefined")skip_cleanup=false;if(typeof(skip_callback)=="undefined")skip_callback=false;for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.triggerSave(skip_cleanup,skip_callback)}},resetForm:function(form_index){var i,inst,n,formObj=document.forms[form_index];for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.switchSettings();for(i=0;i<formObj.elements.length;i++){if(inst.formTargetElementId==formObj.elements[i].name)inst.getBody().innerHTML=inst.startContent}}},execInstanceCommand:function(editor_id,command,user_interface,value,focus){var inst=tinyMCE.getInstanceById(editor_id),r;if(inst){r=inst.selection.getRng();if(typeof(focus)=="undefined")focus=true;if(focus&&(!r||!r.item))inst.contentWindow.focus();inst.autoResetDesignMode();this.selectedElement=inst.getFocusElement();inst.select();tinyMCE.execCommand(command,user_interface,value);if(tinyMCE.isIE&&window.event!=null)tinyMCE.cancelEvent(window.event)}},execCommand:function(command,user_interface,value){var inst=tinyMCE.selectedInstance,n,pe,te;user_interface=user_interface?user_interface:false;value=value?value:null;if(inst)inst.switchSettings();switch(command){case"Undo":if(this.getParam('custom_undo_redo_global')){if(this.undoIndex>0){tinyMCE.nextUndoRedoAction='Undo';inst=this.undoLevels[--this.undoIndex];inst.select();if(!tinyMCE.nextUndoRedoInstanceId)inst.execCommand('Undo')}}else inst.execCommand('Undo');return true;case"Redo":if(this.getParam('custom_undo_redo_global')){if(this.undoIndex<=this.undoLevels.length-1){tinyMCE.nextUndoRedoAction='Redo';inst=this.undoLevels[this.undoIndex++];inst.select();if(!tinyMCE.nextUndoRedoInstanceId)inst.execCommand('Redo')}}else inst.execCommand('Redo');return true;case'mceFocus':inst=tinyMCE.getInstanceById(value);if(inst)inst.getWin().focus();return;case"mceAddControl":case"mceAddEditor":tinyMCE.addMCEControl(tinyMCE._getElementById(value),value);return;case"mceAddFrameControl":tinyMCE.addMCEControl(tinyMCE._getElementById(value.element,value.document),value.element,value.document);return;case"mceRemoveControl":case"mceRemoveEditor":tinyMCE.removeMCEControl(value);return;case"mceToggleEditor":inst=tinyMCE.getInstanceById(value);if(inst){pe=document.getElementById(inst.editorId+'_parent');te=inst.oldTargetElement;if(typeof(inst.enabled)=='undefined')inst.enabled=true;inst.enabled=!inst.enabled;if(!inst.enabled){pe.style.display='none';if(te.nodeName=='TEXTAREA'||te.nodeName=='INPUT')te.value=inst.getHTML();else te.innerHTML=inst.getHTML();te.style.display=inst.oldTargetDisplay;tinyMCE.dispatchCallback(inst,'hide_instance_callback','hideInstance',inst)}else{pe.style.display='block';te.style.display='none';if(te.nodeName=='TEXTAREA'||te.nodeName=='INPUT')inst.setHTML(te.value);else inst.setHTML(te.innerHTML);inst.useCSS=false;tinyMCE.dispatchCallback(inst,'show_instance_callback','showInstance',inst)}}else tinyMCE.addMCEControl(tinyMCE._getElementById(value),value);return;case"mceResetDesignMode":if(tinyMCE.isGecko){for(n in tinyMCE.instances){if(!tinyMCE.isInstance(tinyMCE.instances[n]))continue;try{tinyMCE.instances[n].getDoc().designMode="off";tinyMCE.instances[n].getDoc().designMode="on";tinyMCE.instances[n].useCSS=false}catch(e){}}}return}if(inst){inst.execCommand(command,user_interface,value)}else if(tinyMCE.settings.focus_alert)alert(tinyMCELang.lang_focus_alert)},_createIFrame:function(replace_element,doc,win){var iframe,id=replace_element.getAttribute("id");var aw,ah;if(typeof(doc)=="undefined")doc=document;if(typeof(win)=="undefined")win=window;iframe=doc.createElement("iframe");aw=""+tinyMCE.settings.area_width;ah=""+tinyMCE.settings.area_height;if(aw.indexOf('%')==-1){aw=parseInt(aw);aw=(isNaN(aw)||aw<0)?300:aw;aw=aw+"px"}if(ah.indexOf('%')==-1){ah=parseInt(ah);ah=(isNaN(ah)||ah<0)?240:ah;ah=ah+"px"}iframe.setAttribute("id",id);iframe.setAttribute("name",id);iframe.setAttribute("class","mceEditorIframe");iframe.setAttribute("border","0");iframe.setAttribute("frameBorder","0");iframe.setAttribute("marginWidth","0");iframe.setAttribute("marginHeight","0");iframe.setAttribute("leftMargin","0");iframe.setAttribute("topMargin","0");iframe.setAttribute("width",aw);iframe.setAttribute("height",ah);iframe.setAttribute("allowtransparency","true");iframe.className='mceEditorIframe';if(tinyMCE.settings.auto_resize)iframe.setAttribute("scrolling","no");if(tinyMCE.isRealIE)iframe.setAttribute("src",this.settings.default_document);iframe.style.width=aw;iframe.style.height=ah;if(tinyMCE.settings.strict_loading_mode)iframe.style.marginBottom='-5px';if(tinyMCE.isRealIE)replace_element.outerHTML=iframe.outerHTML;else replace_element.parentNode.replaceChild(iframe,replace_element);if(tinyMCE.isRealIE)return win.frames[id];else return iframe},setupContent:function(editor_id){var inst=tinyMCE.instances[editor_id],i,doc=inst.getDoc(),head=doc.getElementsByTagName('head').item(0);var content=inst.startContent,contentElement,body;if(tinyMCE.settings.strict_loading_mode){content=content.replace(/&lt;/g,'<');content=content.replace(/&gt;/g,'>');content=content.replace(/&quot;/g,'"');content=content.replace(/&amp;/g,'&')}tinyMCE.selectedInstance=inst;inst.switchSettings();if(!tinyMCE.isIE&&tinyMCE.getParam("setupcontent_reload",false)&&doc.title!="blank_page"){try{doc.location.href=tinyMCE.baseURL+"/blank.htm"}catch(ex){}window.setTimeout("tinyMCE.setupContent('"+editor_id+"');",1000);return}if(!head||!doc.body){window.setTimeout("tinyMCE.setupContent('"+editor_id+"');",10);return}tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/themes/"+inst.settings.theme+"/css/editor_content.css");tinyMCE.importCSS(inst.getDoc(),inst.settings.content_css);tinyMCE.dispatchCallback(inst,'init_instance_callback','initInstance',inst);if(tinyMCE.getParam('custom_undo_redo_keyboard_shortcuts')){inst.addShortcut('ctrl','z','lang_undo_desc','Undo');inst.addShortcut('ctrl','y','lang_redo_desc','Redo')}for(i=1;i<=6;i++)inst.addShortcut('ctrl',''+i,'','FormatBlock',false,'<h'+i+'>');inst.addShortcut('ctrl','7','','FormatBlock',false,'<p>');inst.addShortcut('ctrl','8','','FormatBlock',false,'<div>');inst.addShortcut('ctrl','9','','FormatBlock',false,'<address>');if(tinyMCE.isGecko){inst.addShortcut('ctrl','b','lang_bold_desc','Bold');inst.addShortcut('ctrl','i','lang_italic_desc','Italic');inst.addShortcut('ctrl','u','lang_underline_desc','Underline')}if(tinyMCE.getParam("convert_fonts_to_spans"))inst.getBody().setAttribute('id','mceSpanFonts');if(tinyMCE.settings.nowrap)doc.body.style.whiteSpace="nowrap";doc.body.dir=this.settings.directionality;doc.editorId=editor_id;if(!tinyMCE.isIE)doc.documentElement.editorId=editor_id;inst.setBaseHREF(tinyMCE.settings.base_href);if(tinyMCE.settings.convert_newlines_to_brs){content=tinyMCE.regexpReplace(content,"\r\n","<br />","gi");content=tinyMCE.regexpReplace(content,"\r","<br />","gi");content=tinyMCE.regexpReplace(content,"\n","<br />","gi")}content=tinyMCE.storeAwayURLs(content);content=tinyMCE._customCleanup(inst,"insert_to_editor",content);if(tinyMCE.isIE){window.setInterval('try{tinyMCE.getCSSClasses(tinyMCE.instances["'+editor_id+'"].getDoc(), "'+editor_id+'");}catch(e){}',500);if(tinyMCE.settings.force_br_newlines)doc.styleSheets[0].addRule("p","margin: 0;");body=inst.getBody();body.editorId=editor_id}content=tinyMCE.cleanupHTMLCode(content);if(!tinyMCE.isIE){contentElement=inst.getDoc().createElement("body");doc=inst.getDoc();contentElement.innerHTML=content;if(tinyMCE.settings.cleanup_on_startup)tinyMCE.setInnerHTML(inst.getBody(),tinyMCE._cleanupHTML(inst,doc,this.settings,contentElement));else tinyMCE.setInnerHTML(inst.getBody(),content);tinyMCE.convertAllRelativeURLs(inst.getBody())}else{if(tinyMCE.settings.cleanup_on_startup){tinyMCE._setHTML(inst.getDoc(),content);try{tinyMCE.setInnerHTML(inst.getBody(),tinyMCE._cleanupHTML(inst,inst.contentDocument,this.settings,inst.getBody()))}catch(e){}}else tinyMCE._setHTML(inst.getDoc(),content)}tinyMCE.handleVisualAid(inst.getBody(),true,tinyMCE.settings.visual,inst);tinyMCE.dispatchCallback(inst,'setupcontent_callback','setupContent',editor_id,inst.getBody(),inst.getDoc());if(!tinyMCE.isIE)tinyMCE.addEventHandlers(inst);if(tinyMCE.isIE){tinyMCE.addEvent(inst.getBody(),"blur",TinyMCE_Engine.prototype._eventPatch);tinyMCE.addEvent(inst.getBody(),"beforedeactivate",TinyMCE_Engine.prototype._eventPatch);if(!tinyMCE.isOpera){tinyMCE.addEvent(doc.body,"mousemove",TinyMCE_Engine.prototype.onMouseMove);tinyMCE.addEvent(doc.body,"beforepaste",TinyMCE_Engine.prototype._eventPatch);tinyMCE.addEvent(doc.body,"drop",TinyMCE_Engine.prototype._eventPatch)}}inst.select();tinyMCE.selectedElement=inst.contentWindow.document.body;tinyMCE._customCleanup(inst,"insert_to_editor_dom",inst.getBody());tinyMCE._customCleanup(inst,"setup_content_dom",inst.getBody());tinyMCE._setEventsEnabled(inst.getBody(),false);tinyMCE.cleanupAnchors(inst.getDoc());if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(inst.getDoc());inst.startContent=tinyMCE.trim(inst.getBody().innerHTML);inst.undoRedo.add({content:inst.startContent});if(tinyMCE.isGecko){tinyMCE.selectNodes(inst.getBody(),function(n){if(n.nodeType==3||n.nodeType==8)n.nodeValue=n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"','gi'),"");return false})}if(tinyMCE.isGecko)inst.getBody().spellcheck=tinyMCE.getParam("gecko_spellcheck");tinyMCE._removeInternal(inst.getBody());inst.select();tinyMCE.triggerNodeChange(false,true)},storeAwayURLs:function(s){if(!s.match(/(mce_src|mce_href)/gi,s)){s=s.replace(new RegExp('src\\s*=\\s*\"([^ >\"]*)\"','gi'),'src="$1" mce_src="$1"');s=s.replace(new RegExp('href\\s*=\\s*\"([^ >\"]*)\"','gi'),'href="$1" mce_href="$1"')}return s},_removeInternal:function(n){if(tinyMCE.isGecko){tinyMCE.selectNodes(n,function(n){if(n.nodeType==3||n.nodeType==8)n.nodeValue=n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"','gi'),"");return false})}},removeTinyMCEFormElements:function(form_obj){var i,elementId;if(!tinyMCE.getParam('hide_selects_on_submit'))return;if(typeof(form_obj)=="undefined"||form_obj==null)return;if(form_obj.nodeName!="FORM"){if(form_obj.form)form_obj=form_obj.form;else form_obj=tinyMCE.getParentElement(form_obj,"form")}if(form_obj==null)return;for(i=0;i<form_obj.elements.length;i++){elementId=form_obj.elements[i].name?form_obj.elements[i].name:form_obj.elements[i].id;if(elementId.indexOf('mce_editor_')==0)form_obj.elements[i].disabled=true}},handleEvent:function(e){var inst=tinyMCE.selectedInstance,i,elm,keys;if(typeof(tinyMCE)=="undefined")return true;if(tinyMCE.executeCallback(tinyMCE.selectedInstance,'handle_event_callback','handleEvent',e))return false;switch(e.type){case"beforedeactivate":case"blur":if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.execCommand('mceEndTyping');tinyMCE.hideMenus();return;case"drop":case"beforepaste":if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.setBaseHREF(null);if(tinyMCE.isRealIE){var ife=tinyMCE.selectedInstance.iframeElement;if(ife.style.height.indexOf('%')!=-1){ife._oldHeight=ife.style.height;ife.style.height=ife.clientHeight}}window.setTimeout("tinyMCE.selectedInstance.setBaseHREF(tinyMCE.settings.base_href);tinyMCE._resetIframeHeight();",1);return;case"submit":tinyMCE.formSubmit(tinyMCE.isMSIE?window.event.srcElement:e.target);return;case"reset":var formObj=tinyMCE.isIE?window.event.srcElement:e.target;for(i=0;i<document.forms.length;i++){if(document.forms[i]==formObj)window.setTimeout('tinyMCE.resetForm('+i+');',10)}return;case"keypress":if(inst&&inst.handleShortcut(e))return false;if(e.target.editorId){tinyMCE.instances[e.target.editorId].select()}else{if(e.target.ownerDocument.editorId)tinyMCE.instances[e.target.ownerDocument.editorId].select()}if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();if((tinyMCE.isGecko||tinyMCE.isOpera||tinyMCE.isSafari)&&tinyMCE.settings.force_p_newlines&&e.keyCode==13&&!e.shiftKey){if(TinyMCE_ForceParagraphs._insertPara(tinyMCE.selectedInstance,e)){tinyMCE.execCommand("mceAddUndoLevel");return tinyMCE.cancelEvent(e)}}if((tinyMCE.isGecko&&!tinyMCE.isSafari)&&tinyMCE.settings.force_p_newlines&&(e.keyCode==8||e.keyCode==46)&&!e.shiftKey){if(TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance,e.type)){tinyMCE.execCommand("mceAddUndoLevel");return tinyMCE.cancelEvent(e)}}if(tinyMCE.isIE&&tinyMCE.settings.force_br_newlines&&e.keyCode==13){if(e.target.editorId)tinyMCE.instances[e.target.editorId].select();if(tinyMCE.selectedInstance){var sel=tinyMCE.selectedInstance.getDoc().selection;var rng=sel.createRange();if(tinyMCE.getParentElement(rng.parentElement(),"li")!=null)return false;e.returnValue=false;e.cancelBubble=true;rng.pasteHTML("<br />");rng.collapse(false);rng.select();tinyMCE.execCommand("mceAddUndoLevel");tinyMCE.triggerNodeChange(false);return false}}if(e.keyCode==8||e.keyCode==46){tinyMCE.selectedElement=e.target;tinyMCE.linkElement=tinyMCE.getParentElement(e.target,"a");tinyMCE.imgElement=tinyMCE.getParentElement(e.target,"img");tinyMCE.triggerNodeChange(false)}return false;case"keyup":case"keydown":tinyMCE.hideMenus();tinyMCE.hasMouseMoved=false;if(inst&&inst.handleShortcut(e))return false;inst._fixRootBlocks();if(inst.settings.remove_trailing_nbsp)inst._fixTrailingNbsp();if(e.target.editorId)tinyMCE.instances[e.target.editorId].select();if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();inst=tinyMCE.selectedInstance;if(tinyMCE.isGecko&&tinyMCE.settings.force_p_newlines&&(e.keyCode==8||e.keyCode==46)&&!e.shiftKey){if(TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance,e.type)){tinyMCE.execCommand("mceAddUndoLevel");e.preventDefault();return false}}tinyMCE.selectedElement=null;tinyMCE.selectedNode=null;elm=tinyMCE.selectedInstance.getFocusElement();tinyMCE.linkElement=tinyMCE.getParentElement(elm,"a");tinyMCE.imgElement=tinyMCE.getParentElement(elm,"img");tinyMCE.selectedElement=elm;if(tinyMCE.isGecko&&e.type=="keyup"&&e.keyCode==9)tinyMCE.handleVisualAid(tinyMCE.selectedInstance.getBody(),true,tinyMCE.settings.visual,tinyMCE.selectedInstance);if(tinyMCE.isIE&&e.type=="keydown"&&e.keyCode==13)tinyMCE.enterKeyElement=tinyMCE.selectedInstance.getFocusElement();if(tinyMCE.isIE&&e.type=="keyup"&&e.keyCode==13){elm=tinyMCE.enterKeyElement;if(elm){var re=new RegExp('^HR|IMG|BR$','g');var dre=new RegExp('^H[1-6]$','g');if(!elm.hasChildNodes()&&!re.test(elm.nodeName)){if(dre.test(elm.nodeName))elm.innerHTML="&nbsp;&nbsp;";else elm.innerHTML="&nbsp;"}}}keys=tinyMCE.posKeyCodes;var posKey=false;for(i=0;i<keys.length;i++){if(keys[i]==e.keyCode){posKey=true;break}}if(tinyMCE.isIE&&tinyMCE.settings.custom_undo_redo){keys=[8,46];for(i=0;i<keys.length;i++){if(keys[i]==e.keyCode){if(e.type=="keyup")tinyMCE.triggerNodeChange(false)}}}if(e.keyCode==17)return true;if(tinyMCE.isGecko){if(!posKey&&e.type=="keyup"&&!e.ctrlKey||(e.ctrlKey&&(e.keyCode==86||e.keyCode==88)))tinyMCE.execCommand("mceStartTyping")}else{if(!posKey&&e.type=="keyup")tinyMCE.execCommand("mceStartTyping")}if(e.type=="keydown"&&(posKey||e.ctrlKey)&&inst)inst.undoBookmark=inst.selection.getBookmark();if(e.type=="keyup"&&(posKey||e.ctrlKey))tinyMCE.execCommand("mceEndTyping");if(posKey&&e.type=="keyup")tinyMCE.triggerNodeChange(false);if(tinyMCE.isIE&&e.ctrlKey)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);break;case"mousedown":case"mouseup":case"click":case"dblclick":case"focus":tinyMCE.hideMenus();if(tinyMCE.selectedInstance){tinyMCE.selectedInstance.switchSettings();tinyMCE.selectedInstance.isFocused=true}var targetBody=tinyMCE.getParentElement(e.target,"html");for(var instanceName in tinyMCE.instances){if(!tinyMCE.isInstance(tinyMCE.instances[instanceName]))continue;inst=tinyMCE.instances[instanceName];inst.autoResetDesignMode();if(inst.getBody().parentNode==targetBody){inst.select();tinyMCE.selectedElement=e.target;tinyMCE.linkElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"a");tinyMCE.imgElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"img");break}}if(!tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark&&(e.type=="mouseup"||e.type=="dblclick"))tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark=tinyMCE.selectedInstance.selection.getBookmark();if(e.type!="focus")tinyMCE.selectedNode=null;tinyMCE.triggerNodeChange(false);tinyMCE.execCommand("mceEndTyping");if(e.type=="mouseup")tinyMCE.execCommand("mceAddUndoLevel");if(!tinyMCE.selectedInstance&&e.target.editorId)tinyMCE.instances[e.target.editorId].select();return false}},getButtonHTML:function(id,lang,img,cmd,ui,val){var h='',m,x,io='';cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+cmd+'\'';if(typeof(ui)!="undefined"&&ui!=null)cmd+=','+ui;if(typeof(val)!="undefined"&&val!=null)cmd+=",'"+val+"'";cmd+=');';if(tinyMCE.isRealIE)io='onmouseover="tinyMCE.lastHover = this;"';if(tinyMCE.getParam('button_tile_map')&&(!tinyMCE.isIE||tinyMCE.isOpera)&&(m=this.buttonMap[id])!=null&&(tinyMCE.getParam("language")=="en"||img.indexOf('$lang')==-1)){x=0-(m*20)==0?'0':0-(m*20);h+='<a id="{$editor_id}_'+id+'" href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" '+io+' class="mceTiledButton mceButtonNormal" target="_self">';h+='<img src="{$themeurl}/images/spacer.gif" style="background-position: '+x+'px 0" alt="{$'+lang+'}" title="{$'+lang+'}" />';h+='</a>'}else{h+='<a id="{$editor_id}_'+id+'" href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" '+io+' class="mceButtonNormal" target="_self">';h+='<img src="'+img+'" alt="{$'+lang+'}" title="{$'+lang+'}" />';h+='</a>'}return h},getMenuButtonHTML:function(id,lang,img,mcmd,cmd,ui,val){var h='',m,x;mcmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+mcmd+'\');';cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+cmd+'\'';if(typeof(ui)!="undefined"&&ui!=null)cmd+=','+ui;if(typeof(val)!="undefined"&&val!=null)cmd+=",'"+val+"'";cmd+=');';if(tinyMCE.getParam('button_tile_map')&&(!tinyMCE.isIE||tinyMCE.isOpera)&&(m=tinyMCE.buttonMap[id])!=null&&(tinyMCE.getParam("language")=="en"||img.indexOf('$lang')==-1)){x=0-(m*20)==0?'0':0-(m*20);if(tinyMCE.isRealIE)h+='<span id="{$editor_id}_'+id+'" class="mceMenuButton" onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover = this;" onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';else h+='<span id="{$editor_id}_'+id+'" class="mceMenuButton">';h+='<a href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" class="mceTiledButton mceMenuButtonNormal" target="_self">';h+='<img src="{$themeurl}/images/spacer.gif" style="width: 20px; height: 20px; background-position: '+x+'px 0" title="{$'+lang+'}" /></a>';h+='<a href="javascript:'+mcmd+'" onclick="'+mcmd+'return false;" onmousedown="return false;"><img src="{$themeurl}/images/button_menu.gif" title="{$'+lang+'}" class="mceMenuButton" />';h+='</a></span>'}else{if(tinyMCE.isRealIE)h+='<span id="{$editor_id}_'+id+'" dir="ltr" class="mceMenuButton" onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover = this;" onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';else h+='<span id="{$editor_id}_'+id+'" dir="ltr" class="mceMenuButton">';h+='<a href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" class="mceMenuButtonNormal" target="_self">';h+='<img src="'+img+'" title="{$'+lang+'}" /></a>';h+='<a href="javascript:'+mcmd+'" onclick="'+mcmd+'return false;" onmousedown="return false;"><img src="{$themeurl}/images/button_menu.gif" title="{$'+lang+'}" class="mceMenuButton" />';h+='</a></span>'}return h},_menuButtonEvent:function(e,o){if(o.className=='mceMenuButtonFocus')return;if(e=='over')o.className=o.className+' mceMenuHover';else o.className=o.className.replace(/\s.*$/,'')},addButtonMap:function(m){var i,a=m.replace(/\s+/,'').split(',');for(i=0;i<a.length;i++)this.buttonMap[a[i]]=i},formSubmit:function(f,p){var n,inst,found=false;if(f.form)f=f.form;if(tinyMCE.getParam('save_on_tinymce_forms')){for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;if(inst.formElement){if(f==inst.formElement.form){found=true;inst.isNotDirty=true}}}}else found=true;if(found){tinyMCE.removeTinyMCEFormElements(f);tinyMCE.triggerSave()}if(f.mceOldSubmit&&p)f.mceOldSubmit()},submitPatch:function(){tinyMCE.formSubmit(this,true)},onLoad:function(){var r,i,c,mode,trigger,elements,element,settings,elementId,elm;var selector,deselector,elementRefAr,form;if(tinyMCE.settings.strict_loading_mode&&this.loadingIndex!=-1){window.setTimeout('tinyMCE.onLoad();',1);return}if(tinyMCE.isRealIE&&window.event.type=="readystatechange"&&document.readyState!="complete")return true;if(tinyMCE.isLoaded)return true;tinyMCE.isLoaded=true;if(tinyMCE.isRealIE&&document.body&&window.location.href!=window.top.location.href){r=document.body.createTextRange();r.collapse(true);r.select()}tinyMCE.dispatchCallback(null,'onpageload','onPageLoad');for(c=0;c<tinyMCE.configs.length;c++){tinyMCE.settings=tinyMCE.configs[c];selector=tinyMCE.getParam("editor_selector");deselector=tinyMCE.getParam("editor_deselector");elementRefAr=[];if(document.forms&&tinyMCE.settings.add_form_submit_trigger&&!tinyMCE.submitTriggers){for(i=0;i<document.forms.length;i++){form=document.forms[i];tinyMCE.addEvent(form,"submit",TinyMCE_Engine.prototype.handleEvent);tinyMCE.addEvent(form,"reset",TinyMCE_Engine.prototype.handleEvent);tinyMCE.submitTriggers=true;if(tinyMCE.settings.submit_patch){try{form.mceOldSubmit=form.submit;form.submit=TinyMCE_Engine.prototype.submitPatch}catch(e){}}}}mode=tinyMCE.settings.mode;switch(mode){case"exact":elements=tinyMCE.getParam('elements','',true,',');for(i=0;i<elements.length;i++){element=tinyMCE._getElementById(elements[i]);trigger=element?element.getAttribute(tinyMCE.settings.textarea_trigger):"";if(new RegExp('\\b'+deselector+'\\b').test(tinyMCE.getAttrib(element,"class")))continue;if(trigger=="false")continue;if((tinyMCE.settings.ask||tinyMCE.settings.convert_on_click)&&element){elementRefAr[elementRefAr.length]=element;continue}if(element)tinyMCE.addMCEControl(element,elements[i])}break;case"specific_textareas":case"textareas":elements=document.getElementsByTagName("textarea");for(i=0;i<elements.length;i++){elm=elements.item(i);trigger=elm.getAttribute(tinyMCE.settings.textarea_trigger);if(selector!==''&&!new RegExp('\\b'+selector+'\\b').test(tinyMCE.getAttrib(elm,"class")))continue;if(selector!=='')trigger=selector!==''?"true":"";if(new RegExp('\\b'+deselector+'\\b').test(tinyMCE.getAttrib(elm,"class")))continue;if((mode=="specific_textareas"&&trigger=="true")||(mode=="textareas"&&trigger!="false"))elementRefAr[elementRefAr.length]=elm}break}for(i=0;i<elementRefAr.length;i++){element=elementRefAr[i];elementId=element.name?element.name:element.id;if(tinyMCE.settings.ask||tinyMCE.settings.convert_on_click){if(tinyMCE.isGecko){settings=tinyMCE.settings;tinyMCE.addEvent(element,"focus",function(e){window.setTimeout(function(){TinyMCE_Engine.prototype.confirmAdd(e,settings)},10)});if(element.nodeName!="TEXTAREA"&&element.nodeName!="INPUT")tinyMCE.addEvent(element,"click",function(e){window.setTimeout(function(){TinyMCE_Engine.prototype.confirmAdd(e,settings)},10)});}else{settings=tinyMCE.settings;tinyMCE.addEvent(element,"focus",function(){TinyMCE_Engine.prototype.confirmAdd(null,settings)});tinyMCE.addEvent(element,"click",function(){TinyMCE_Engine.prototype.confirmAdd(null,settings)});}}else tinyMCE.addMCEControl(element,elementId)}if(tinyMCE.settings.auto_focus){window.setTimeout(function(){var inst=tinyMCE.getInstanceById(tinyMCE.settings.auto_focus);inst.selection.selectNode(inst.getBody(),true,true);inst.contentWindow.focus()},100)}tinyMCE.dispatchCallback(null,'oninit','onInit')}},isInstance:function(o){return o!=null&&typeof(o)=="object"&&o.isTinyMCE_Control},getParam:function(name,default_value,strip_whitespace,split_chr){var i,outArray,value=(typeof(this.settings[name])=="undefined")?default_value:this.settings[name];if(value=="true"||value=="false")return(value=="true");if(strip_whitespace)value=tinyMCE.regexpReplace(value,"[ \t\r\n]","");if(typeof(split_chr)!="undefined"&&split_chr!=null){value=value.split(split_chr);outArray=[];for(i=0;i<value.length;i++){if(value[i]&&value[i]!=='')outArray[outArray.length]=value[i]}value=outArray}return value},getLang:function(name,default_value,parse_entities,va){var v=(typeof(tinyMCELang[name])=="undefined")?default_value:tinyMCELang[name],n;if(parse_entities)v=tinyMCE.entityDecode(v);if(va){for(n in va)v=this.replaceVar(v,n,va[n])}return v},entityDecode:function(s){var e=document.createElement("div");e.innerHTML=s;return!e.firstChild?s:e.firstChild.nodeValue},addToLang:function(prefix,ar){var k;for(k in ar){if(typeof(ar[k])=='function')continue;tinyMCELang[(k.indexOf('lang_')==-1?'lang_':'')+(prefix!==''?(prefix+"_"):'')+k]=ar[k]}this.loadNextScript()},triggerNodeChange:function(focus,setup_content){var elm,inst,editorId,undoIndex=-1,undoLevels=-1,doc,anySelection=false,st;if(tinyMCE.selectedInstance){inst=tinyMCE.selectedInstance;elm=(typeof(setup_content)!="undefined"&&setup_content)?tinyMCE.selectedElement:inst.getFocusElement();editorId=inst.editorId;st=inst.selection.getSelectedText();if(tinyMCE.settings.auto_resize)inst.resizeToContent();if(setup_content&&tinyMCE.isGecko&&inst.isHidden())elm=inst.getBody();inst.switchSettings();if(tinyMCE.selectedElement)anySelection=(tinyMCE.selectedElement.nodeName.toLowerCase()=="img")||(st&&st.length>0);if(tinyMCE.settings.custom_undo_redo){undoIndex=inst.undoRedo.undoIndex;undoLevels=inst.undoRedo.undoLevels.length}tinyMCE.dispatchCallback(inst,'handle_node_change_callback','handleNodeChange',editorId,elm,undoIndex,undoLevels,inst.visualAid,anySelection,setup_content)}if(this.selectedInstance&&(typeof(focus)=="undefined"||focus))this.selectedInstance.contentWindow.focus()},_customCleanup:function(inst,type,content){var pl,po,i,customCleanup;customCleanup=tinyMCE.settings.cleanup_callback;if(customCleanup!='')content=tinyMCE.resolveDots(tinyMCE.settings.cleanup_callback,window)(type,content,inst);po=tinyMCE.themes[tinyMCE.settings.theme];if(po&&po.cleanup)content=po.cleanup(type,content,inst);pl=inst.plugins;for(i=0;i<pl.length;i++){po=tinyMCE.plugins[pl[i]];if(po&&po.cleanup)content=po.cleanup(type,content,inst)}return content},setContent:function(h){if(tinyMCE.selectedInstance){tinyMCE.selectedInstance.execCommand('mceSetContent',false,h);tinyMCE.selectedInstance.repaint()}},importThemeLanguagePack:function(name){if(typeof(name)=="undefined")name=tinyMCE.settings.theme;tinyMCE.loadScript(tinyMCE.baseURL+'/themes/'+name+'/langs/'+tinyMCE.settings.language+'.js')},importPluginLanguagePack:function(name){var b=tinyMCE.baseURL+'/plugins/'+name;if(this.plugins[name])b=this.plugins[name].baseURL;tinyMCE.loadScript(b+'/langs/'+tinyMCE.settings.language+'.js')},applyTemplate:function(h,ag){return h.replace(new RegExp('\\{\\$([a-z0-9_]+)\\}','gi'),function(m,s){if(s.indexOf('lang_')==0&&tinyMCELang[s])return tinyMCELang[s];if(ag&&ag[s])return ag[s];if(tinyMCE.settings[s])return tinyMCE.settings[s];if(m=='themeurl')return tinyMCE.themeURL;return m})},replaceVar:function(h,r,v){return h.replace(new RegExp('{\\\$'+r+'}','g'),v)},openWindow:function(template,args){var html,width,height,x,y,resizable,scrollbars,url,name,win,modal,features;args=!args?{}:args;args.mce_template_file=template.file;args.mce_width=template.width;args.mce_height=template.height;tinyMCE.windowArgs=args;html=template.html;if(!(width=parseInt(template.width)))width=320;if(!(height=parseInt(template.height)))height=200;if(tinyMCE.isIE)height+=40;else height+=20;x=parseInt(screen.width/ 2.0) - (width /2.0);y=parseInt(screen.height/ 2.0) - (height /2.0);resizable=(args&&args.resizable)?args.resizable:"no";scrollbars=(args&&args.scrollbars)?args.scrollbars:"no";if(template.file.charAt(0)!='/'&&template.file.indexOf('://')==-1)url=tinyMCE.baseURL+"/themes/"+tinyMCE.getParam("theme")+"/"+template.file;else url=template.file;for(name in args){if(typeof(args[name])=='function')continue;url=tinyMCE.replaceVar(url,name,escape(args[name]))}if(html){html=tinyMCE.replaceVar(html,"css",this.settings.popups_css);html=tinyMCE.applyTemplate(html,args);win=window.open("","mcePopup"+new Date().getTime(),"top="+y+",left="+x+",scrollbars="+scrollbars+",dialog=yes,minimizable="+resizable+",modal=yes,width="+width+",height="+height+",resizable="+resizable);if(win==null){alert(tinyMCELang.lang_popup_blocked);return}win.document.write(html);win.document.close();win.resizeTo(width,height);win.focus()}else{if((tinyMCE.isRealIE)&&resizable!='yes'&&tinyMCE.settings.dialog_type=="modal"){height+=10;features="resizable:"+resizable+";scroll:"+scrollbars+";status:yes;center:yes;help:no;dialogWidth:"+width+"px;dialogHeight:"+height+"px;";window.showModalDialog(url,window,features)}else{modal=(resizable=="yes")?"no":"yes";if(tinyMCE.isGecko&&tinyMCE.isMac)modal="no";if(template.close_previous!="no")try{tinyMCE.lastWindow.close()}catch(ex){}win=window.open(url,"mcePopup"+new Date().getTime(),"top="+y+",left="+x+",scrollbars="+scrollbars+",dialog="+modal+",minimizable="+resizable+",modal="+modal+",width="+width+",height="+height+",resizable="+resizable);if(win==null){alert(tinyMCELang.lang_popup_blocked);return}if(template.close_previous!="no")tinyMCE.lastWindow=win;try{win.resizeTo(width,height)}catch(e){}if(tinyMCE.isGecko){if(win.document.defaultView.statusbar.visible)win.resizeBy(0,tinyMCE.isMac?10:24)}win.focus()}}},closeWindow:function(win){win.close()},getVisualAidClass:function(class_name,state){var i,classNames,ar,className,aidClass=tinyMCE.settings.visual_table_class;if(typeof(state)=="undefined")state=tinyMCE.settings.visual;classNames=[];ar=class_name.split(' ');for(i=0;i<ar.length;i++){if(ar[i]==aidClass)ar[i]="";if(ar[i]!=='')classNames[classNames.length]=ar[i]}if(state)classNames[classNames.length]=aidClass;className="";for(i=0;i<classNames.length;i++){if(i>0)className+=" ";className+=classNames[i]}return className},handleVisualAid:function(el,deep,state,inst,skip_dispatch){var i,x,y,tableElement,anchorName,oldW,oldH,bo,cn;if(!el)return;if(!skip_dispatch)tinyMCE.dispatchCallback(inst,'handle_visual_aid_callback','handleVisualAid',el,deep,state,inst);tableElement=null;switch(el.nodeName){case"TABLE":oldW=el.style.width;oldH=el.style.height;bo=tinyMCE.getAttrib(el,"border");bo=bo==''||bo=="0"?true:false;tinyMCE.setAttrib(el,"class",tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el,"class"),state&&bo));el.style.width=oldW;el.style.height=oldH;for(y=0;y<el.rows.length;y++){for(x=0;x<el.rows[y].cells.length;x++){cn=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el.rows[y].cells[x],"class"),state&&bo);tinyMCE.setAttrib(el.rows[y].cells[x],"class",cn)}}break;case"A":anchorName=tinyMCE.getAttrib(el,"name");if(anchorName!==''&&state){el.title=anchorName;tinyMCE.addCSSClass(el,'mceItemAnchor')}else if(anchorName!==''&&!state)el.className='';break}if(deep&&el.hasChildNodes()){for(i=0;i<el.childNodes.length;i++)tinyMCE.handleVisualAid(el.childNodes[i],deep,state,inst,true)}},fixGeckoBaseHREFBug:function(m,e,h){var xsrc,xhref;if(tinyMCE.isGecko){if(m==1){h=h.replace(/\ssrc=/gi," mce_tsrc=");h=h.replace(/\shref=/gi," mce_thref=");return h}else{if(!new RegExp('(src|href)=','g').test(h))return h;tinyMCE.selectElements(e,'A,IMG,SELECT,AREA,IFRAME,BASE,INPUT,SCRIPT,EMBED,OBJECT,LINK',function(n){xsrc=tinyMCE.getAttrib(n,"mce_tsrc");xhref=tinyMCE.getAttrib(n,"mce_thref");if(xsrc!==''){try{n.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href,xsrc)}catch(e){}n.removeAttribute("mce_tsrc")}if(xhref!==''){try{n.href=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href,xhref)}catch(e){}n.removeAttribute("mce_thref")}return false});tinyMCE.selectNodes(e,function(n){if(n.nodeType==3||n.nodeType==8){n.nodeValue=n.nodeValue.replace(/\smce_tsrc=/gi," src=");n.nodeValue=n.nodeValue.replace(/\smce_thref=/gi," href=")}return false})}}return h},_setHTML:function(doc,html_content){var i,html,paras,node;html_content=tinyMCE.cleanupHTMLCode(html_content);try{tinyMCE.setInnerHTML(doc.body,html_content)}catch(e){if(this.isMSIE)doc.body.createTextRange().pasteHTML(html_content)}if(tinyMCE.isIE&&tinyMCE.settings.fix_content_duplication){paras=doc.getElementsByTagName("P");for(i=0;i<paras.length;i++){node=paras[i];while((node=node.parentNode)!=null){if(node.nodeName=="P")node.outerHTML=node.innerHTML}}html=doc.body.innerHTML;tinyMCE.setInnerHTML(doc.body,html)}tinyMCE.cleanupAnchors(doc);if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(doc)},getEditorId:function(form_element){var inst=this.getInstanceById(form_element);if(!inst)return null;return inst.editorId},getInstanceById:function(editor_id){var inst=this.instances[editor_id],n;if(!inst){for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;if(inst.formTargetElementId==editor_id)return inst}}else return inst;return null},queryInstanceCommandValue:function(editor_id,command){var inst=tinyMCE.getInstanceById(editor_id);if(inst)return inst.queryCommandValue(command);return false},queryInstanceCommandState:function(editor_id,command){var inst=tinyMCE.getInstanceById(editor_id);if(inst)return inst.queryCommandState(command);return null},setWindowArg:function(n,v){this.windowArgs[n]=v},getWindowArg:function(n,d){return(typeof(this.windowArgs[n])=="undefined")?d:this.windowArgs[n]},getCSSClasses:function(editor_id,doc){var i,c,x,rule,styles,rules,csses,selectorText,inst=tinyMCE.getInstanceById(editor_id);var cssClass,addClass,p;if(!inst)inst=tinyMCE.selectedInstance;if(!inst)return[];if(!doc)doc=inst.getDoc();if(inst&&inst.cssClasses.length>0)return inst.cssClasses;if(!doc)return;styles=doc.styleSheets;if(styles&&styles.length>0){for(x=0;x<styles.length;x++){csses=null;try{csses=tinyMCE.isIE?doc.styleSheets(x).rules:styles[x].cssRules}catch(e){}if(!csses)return[];for(i=0;i<csses.length;i++){selectorText=csses[i].selectorText;if(selectorText){rules=selectorText.split(',');for(c=0;c<rules.length;c++){rule=rules[c];while(rule.indexOf(' ')==0)rule=rule.substring(1);if(rule.indexOf(' ')!=-1||rule.indexOf(':')!=-1||rule.indexOf('mceItem')!=-1)continue;if(rule.indexOf(tinyMCE.settings.visual_table_class)!=-1||rule.indexOf('mceEditable')!=-1||rule.indexOf('mceNonEditable')!=-1)continue;if(rule.indexOf('.')!=-1){cssClass=rule.substring(rule.indexOf('.')+1);addClass=true;for(p=0;p<inst.cssClasses.length&&addClass;p++){if(inst.cssClasses[p]==cssClass)addClass=false}if(addClass)inst.cssClasses[inst.cssClasses.length]=cssClass}}}}}}return inst.cssClasses},regexpReplace:function(in_str,reg_exp,replace_str,opts){var re;if(in_str==null)return in_str;if(typeof(opts)=="undefined")opts='g';re=new RegExp(reg_exp,opts);return in_str.replace(re,replace_str)},trim:function(s){return s.replace(/^\s*|\s*$/g,"")},cleanupEventStr:function(s){s=""+s;s=s.replace('function anonymous()\n{\n','');s=s.replace('\n}','');s=s.replace(/^return true;/gi,'');return s},getControlHTML:function(c){var i,l,n,o,v,rtl=tinyMCE.getLang('lang_dir')=='rtl';l=tinyMCE.plugins;for(n in l){o=l[n];if(o.getControlHTML&&(v=o.getControlHTML(c))!==''){if(rtl)return'<span dir="rtl">'+tinyMCE.replaceVar(v,"pluginurl",o.baseURL)+'</span>';return tinyMCE.replaceVar(v,"pluginurl",o.baseURL)}}o=tinyMCE.themes[tinyMCE.settings.theme];if(o.getControlHTML&&(v=o.getControlHTML(c))!==''){if(rtl)return'<span dir="rtl">'+v+'</span>';return v}return''},evalFunc:function(f,idx,a,o){o=!o?window:o;f=typeof(f)=='function'?f:o[f];return f.apply(o,Array.prototype.slice.call(a,idx))},dispatchCallback:function(i,p,n){return this.callFunc(i,p,n,0,this.dispatchCallback.arguments)},executeCallback:function(i,p,n){return this.callFunc(i,p,n,1,this.executeCallback.arguments)},execCommandCallback:function(i,p,n){return this.callFunc(i,p,n,2,this.execCommandCallback.arguments)},callFunc:function(ins,p,n,m,a){var l,i,on,o,s,v;s=m==2;l=tinyMCE.getParam(p,'');if(l!==''&&(v=tinyMCE.evalFunc(l,3,a))==s&&m>0)return true;if(ins!=null){for(i=0,l=ins.plugins;i<l.length;i++){o=tinyMCE.plugins[l[i]];if(o[n]&&(v=tinyMCE.evalFunc(n,3,a,o))==s&&m>0)return true}}l=tinyMCE.themes;for(on in l){o=l[on];if(o[n]&&(v=tinyMCE.evalFunc(n,3,a,o))==s&&m>0)return true}return false},resolveDots:function(s,o){var i;if(typeof(s)=='string'){for(i=0,s=s.split('.');i<s.length;i++)o=o[s[i]]}else o=s;return o},xmlEncode:function(s){return s?(''+s).replace(this.xmlEncodeRe,function(c,b){switch(c){case'&':return'&amp;';case'"':return'&quot;';case'<':return'&lt;';case'>':return'&gt;'}return c}):s},add:function(c,m){var n;for(n in m){if(m.hasOwnProperty(n))c.prototype[n]=m[n]}},extend:function(p,np){var o={},n;o.parent=p;for(n in p){if(p.hasOwnProperty(n))o[n]=p[n]}for(n in np){if(np.hasOwnProperty(n))o[n]=np[n]}return o},hideMenus:function(){var e=tinyMCE.lastSelectedMenuBtn;if(tinyMCE.lastMenu){tinyMCE.lastMenu.hide();tinyMCE.lastMenu=null}if(e){tinyMCE.switchClass(e,tinyMCE.lastMenuBtnClass);tinyMCE.lastSelectedMenuBtn=null}}};var TinyMCE=TinyMCE_Engine;var tinyMCE=new TinyMCE_Engine();var tinyMCELang={};function TinyMCE_Control(settings){var t,i,tos,fu,p,x,fn,fu,pn,s=settings;this.undoRedoLevel=true;this.isTinyMCE_Control=true;this.enabled=true;this.settings=s;this.settings.theme=tinyMCE.getParam("theme","default");this.settings.width=tinyMCE.getParam("width",-1);this.settings.height=tinyMCE.getParam("height",-1);this.selection=new TinyMCE_Selection(this);this.undoRedo=new TinyMCE_UndoRedo(this);this.cleanup=new TinyMCE_Cleanup();this.shortcuts=[];this.hasMouseMoved=false;this.foreColor=this.backColor="#999999";this.data={};this.cssClasses=[];this.cleanup.init({valid_elements:s.valid_elements,extended_valid_elements:s.extended_valid_elements,valid_child_elements:s.valid_child_elements,entities:s.entities,entity_encoding:s.entity_encoding,debug:s.cleanup_debug,indent:s.apply_source_formatting,invalid_elements:s.invalid_elements,verify_html:s.verify_html,fix_content_duplication:s.fix_content_duplication,convert_fonts_to_spans:s.convert_fonts_to_spans});t=this.settings.theme;if(!tinyMCE.hasTheme(t)){fn=tinyMCE.callbacks;tos={};for(i=0;i<fn.length;i++){if((fu=window['TinyMCE_'+t+"_"+fn[i]]))tos[fn[i]]=fu}tinyMCE.addTheme(t,tos)}this.plugins=[];p=tinyMCE.getParam('plugins','',true,',');if(p.length>0){for(i=0;i<p.length;i++){pn=p[i];if(pn.charAt(0)=='-')pn=pn.substring(1);if(!tinyMCE.hasPlugin(pn)){fn=tinyMCE.callbacks;tos={};for(x=0;x<fn.length;x++){if((fu=window['TinyMCE_'+pn+"_"+fn[x]]))tos[fn[x]]=fu}tinyMCE.addPlugin(pn,tos)}this.plugins[this.plugins.length]=pn}}};TinyMCE_Control.prototype={selection:null,settings:null,cleanup:null,getData:function(na){var o=this.data[na];if(!o)o=this.data[na]={};return o},hasPlugin:function(n){var i;for(i=0;i<this.plugins.length;i++){if(this.plugins[i]==n)return true}return false},addPlugin:function(n,p){if(!this.hasPlugin(n)){tinyMCE.addPlugin(n,p);this.plugins[this.plugins.length]=n}},repaint:function(){var s,b,ex;if(tinyMCE.isRealIE)return;try{s=this.selection;b=s.getBookmark(true);this.getBody().style.display='none';this.getDoc().execCommand('selectall',false,null);this.getSel().collapseToStart();this.getBody().style.display='block';s.moveToBookmark(b)}catch(ex){}},switchSettings:function(){if(tinyMCE.configs.length>1&&tinyMCE.currentConfig!=this.settings.index){tinyMCE.settings=this.settings;tinyMCE.currentConfig=this.settings.index}},select:function(){var oldInst=tinyMCE.selectedInstance;if(oldInst!=this){if(oldInst)oldInst.execCommand('mceEndTyping');tinyMCE.dispatchCallback(this,'select_instance_callback','selectInstance',this,oldInst);tinyMCE.selectedInstance=this}},getBody:function(){return this.contentBody?this.contentBody:this.getDoc().body},getDoc:function(){return this.contentWindow.document},getWin:function(){return this.contentWindow},getContainerWin:function(){return this.containerWindow?this.containerWindow:window},getViewPort:function(){return tinyMCE.getViewPort(this.getWin())},getParentNode:function(n,f){return tinyMCE.getParentNode(n,f,this.getBody())},getParentElement:function(n,na,f){return tinyMCE.getParentElement(n,na,f,this.getBody())},getParentBlockElement:function(n){return tinyMCE.getParentBlockElement(n,this.getBody())},resizeToContent:function(){var d=this.getDoc(),b=d.body,de=d.documentElement;this.iframeElement.style.height=(tinyMCE.isRealIE)?b.scrollHeight:de.offsetHeight+'px'},addShortcut:function(m,k,d,cmd,ui,va){var n=typeof(k)=="number",ie=tinyMCE.isIE,c,sc,i,scl=this.shortcuts;if(!tinyMCE.getParam('custom_shortcuts'))return false;m=m.toLowerCase();k=ie&&!n?k.toUpperCase():k;c=n?null:k.charCodeAt(0);d=d&&d.indexOf('lang_')==0?tinyMCE.getLang(d):d;sc={alt:m.indexOf('alt')!=-1,ctrl:m.indexOf('ctrl')!=-1,shift:m.indexOf('shift')!=-1,charCode:c,keyCode:n?k:(ie?c:null),desc:d,cmd:cmd,ui:ui,val:va};for(i=0;i<scl.length;i++){if(sc.alt==scl[i].alt&&sc.ctrl==scl[i].ctrl&&sc.shift==scl[i].shift&&sc.charCode==scl[i].charCode&&sc.keyCode==scl[i].keyCode){return false}}scl[scl.length]=sc;return true},handleShortcut:function(e){var i,s,o;if(!e.altKey&&!e.ctrlKey)return false;s=this.shortcuts;for(i=0;i<s.length;i++){o=s[i];if(o.alt==e.altKey&&o.ctrl==e.ctrlKey&&(o.keyCode==e.keyCode||o.charCode==e.charCode)){if(o.cmd&&(e.type=="keydown"||(e.type=="keypress"&&!tinyMCE.isOpera)))tinyMCE.execCommand(o.cmd,o.ui,o.val);tinyMCE.cancelEvent(e);return true}}return false},autoResetDesignMode:function(){if(!tinyMCE.isIE&&this.isHidden()&&tinyMCE.getParam('auto_reset_designmode'))eval('try { this.getDoc().designMode = "On"; this.useCSS = false; } catch(e) {}')},isHidden:function(){var s;if(tinyMCE.isIE)return false;s=this.getSel();return(!s||!s.rangeCount||s.rangeCount==0)},isDirty:function(){return tinyMCE.trim(this.startContent)!=tinyMCE.trim(this.getBody().innerHTML)&&!this.isNotDirty},_mergeElements:function(scmd,pa,ch,override){var st,stc,className,n;if(scmd=="removeformat"){pa.className="";pa.style.cssText="";ch.className="";ch.style.cssText="";return}st=tinyMCE.parseStyle(tinyMCE.getAttrib(pa,"style"));stc=tinyMCE.parseStyle(tinyMCE.getAttrib(ch,"style"));className=tinyMCE.getAttrib(pa,"class");className=tinyMCE.getAttrib(ch,"class");if(override){for(n in st){if(typeof(st[n])=='function')continue;stc[n]=st[n]}}else{for(n in stc){if(typeof(stc[n])=='function')continue;st[n]=stc[n]}}tinyMCE.setAttrib(pa,"style",tinyMCE.serializeStyle(st));tinyMCE.setAttrib(pa,"class",tinyMCE.trim(className));ch.className="";ch.style.cssText="";ch.removeAttribute("class");ch.removeAttribute("style")},_fixRootBlocks:function(){var rb,b,ne,be,nx,bm;rb=tinyMCE.getParam('forced_root_block');if(!rb)return;b=this.getBody();ne=b.firstChild;while(ne){nx=ne.nextSibling;if((ne.nodeType==3&&ne.nodeValue.replace(/\s+/g,'')!='')||(ne.nodeType==1&&!tinyMCE.blockRegExp.test(ne.nodeName))){if(!bm)bm=this.selection.getBookmark();if(!be){be=this.getDoc().createElement(rb);be.appendChild(ne.cloneNode(true));b.replaceChild(be,ne)}else{be.appendChild(ne.cloneNode(true));b.removeChild(ne)}}else be=null;ne=nx}if(bm)this.selection.moveToBookmark(bm)},_fixTrailingNbsp:function(){var s=this.selection,e=s.getFocusElement(),bm,v;if(e&&tinyMCE.blockRegExp.test(e.nodeName)&&e.firstChild){v=e.firstChild.nodeValue;if(v&&v.length>1&&/(^\u00a0|\u00a0$)/.test(v)){e.firstChild.nodeValue=v.replace(/(^\u00a0|\u00a0$)/,'');s.selectNode(e.firstChild,true,false,false);}}},_setUseCSS:function(b){var d=this.getDoc();try{d.execCommand("useCSS",false,!b)}catch(ex){}try{d.execCommand("styleWithCSS",false,b)}catch(ex){}if(!tinyMCE.getParam("table_inline_editing"))try{d.execCommand('enableInlineTableEditing',false,"false")}catch(ex){}if(!tinyMCE.getParam("object_resizing"))try{d.execCommand('enableObjectResizing',false,"false")}catch(ex){}},execCommand:function(command,user_interface,value){var i,x,z,align,img,div,doc=this.getDoc(),win=this.getWin(),focusElm=this.getFocusElement();if(!new RegExp('mceStartTyping|mceEndTyping|mceBeginUndoLevel|mceEndUndoLevel|mceAddUndoLevel','gi').test(command))this.undoBookmark=null;if(!tinyMCE.isIE&&!this.useCSS){this._setUseCSS(false);this.useCSS=true}this.contentDocument=doc;if(!/mceStartTyping|mceEndTyping/.test(command)){if(tinyMCE.execCommandCallback(this,'execcommand_callback','execCommand',this.editorId,this.getBody(),command,user_interface,value))return}if(focusElm&&focusElm.nodeName=="IMG"){align=focusElm.getAttribute('align');img=command=="JustifyCenter"?focusElm.cloneNode(false):focusElm;switch(command){case"JustifyLeft":if(align=='left'){img.setAttribute('align','');img.removeAttribute('align')}else img.setAttribute('align','left');div=focusElm.parentNode;if(div&&div.nodeName=="DIV"&&div.childNodes.length==1&&div.parentNode)div.parentNode.replaceChild(img,div);this.selection.selectNode(img);this.repaint();tinyMCE.triggerNodeChange();return;case"JustifyCenter":img.setAttribute('align','');img.removeAttribute('align');div=tinyMCE.getParentElement(focusElm,"div");if(div&&div.style.textAlign=="center"){if(div.nodeName=="DIV"&&div.childNodes.length==1&&div.parentNode)div.parentNode.replaceChild(img,div)}else{div=this.getDoc().createElement("div");div.style.textAlign='center';div.appendChild(img);focusElm.parentNode.replaceChild(div,focusElm)}this.selection.selectNode(img);this.repaint();tinyMCE.triggerNodeChange();return;case"JustifyRight":if(align=='right'){img.setAttribute('align','');img.removeAttribute('align')}else img.setAttribute('align','right');div=focusElm.parentNode;if(div&&div.nodeName=="DIV"&&div.childNodes.length==1&&div.parentNode)div.parentNode.replaceChild(img,div);this.selection.selectNode(img);this.repaint();tinyMCE.triggerNodeChange();return}}if(tinyMCE.settings.force_br_newlines){var alignValue="";if(doc.selection.type!="Control"){switch(command){case"JustifyLeft":alignValue="left";break;case"JustifyCenter":alignValue="center";break;case"JustifyFull":alignValue="justify";break;case"JustifyRight":alignValue="right";break}if(alignValue!==''){var rng=doc.selection.createRange();if((divElm=tinyMCE.getParentElement(rng.parentElement(),"div"))!=null)divElm.setAttribute("align",alignValue);else if(rng.pasteHTML&&rng.htmlText.length>0)rng.pasteHTML('<div align="'+alignValue+'">'+rng.htmlText+"</div>");tinyMCE.triggerNodeChange();return}}}switch(command){case"mceRepaint":this.repaint();return true;case"JustifyLeft":case"JustifyCenter":case"JustifyFull":case"JustifyRight":var el=tinyMCE.getParentNode(focusElm,function(n){return tinyMCE.getAttrib(n,'align')});if(el){el.setAttribute('align','');el.removeAttribute('align')}else this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();return true;case"unlink":if(tinyMCE.isGecko&&this.getSel().isCollapsed){focusElm=tinyMCE.getParentElement(focusElm,'A');if(focusElm)this.selection.selectNode(focusElm,false)}this.getDoc().execCommand(command,user_interface,value);tinyMCE.isGecko&&this.getSel().collapseToEnd();tinyMCE.triggerNodeChange();return true;case"InsertUnorderedList":case"InsertOrderedList":this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();break;case"Strikethrough":this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();break;case"mceSelectNode":this.selection.selectNode(value);tinyMCE.triggerNodeChange();tinyMCE.selectedNode=value;break;case"FormatBlock":if(value==null||value==''){var elm=tinyMCE.getParentElement(this.getFocusElement(),"p,div,h1,h2,h3,h4,h5,h6,pre,address,blockquote,dt,dl,dd,samp");if(elm)this.execCommand("mceRemoveNode",false,elm)}else{if(!this.cleanup.isValid(value))return true;if(tinyMCE.isGecko&&new RegExp('<(div|blockquote|code|dt|dd|dl|samp)>','gi').test(value))value=value.replace(/[^a-z]/gi,'');if(tinyMCE.isIE&&new RegExp('blockquote|code|samp','gi').test(value)){var b=this.selection.getBookmark();this.getDoc().execCommand("FormatBlock",false,'<p>');tinyMCE.renameElement(tinyMCE.getParentBlockElement(this.getFocusElement()),value);this.selection.moveToBookmark(b)}else this.getDoc().execCommand("FormatBlock",false,value)}tinyMCE.triggerNodeChange();break;case"mceRemoveNode":if(!value)value=tinyMCE.getParentElement(this.getFocusElement());if(tinyMCE.isIE){value.outerHTML=value.innerHTML}else{var rng=value.ownerDocument.createRange();rng.setStartBefore(value);rng.setEndAfter(value);rng.deleteContents();rng.insertNode(rng.createContextualFragment(value.innerHTML))}tinyMCE.triggerNodeChange();break;case"mceSelectNodeDepth":var parentNode=this.getFocusElement();for(i=0;parentNode;i++){if(parentNode.nodeName.toLowerCase()=="body")break;if(parentNode.nodeName.toLowerCase()=="#text"){i--;parentNode=parentNode.parentNode;continue}if(i==value){this.selection.selectNode(parentNode,false);tinyMCE.triggerNodeChange();tinyMCE.selectedNode=parentNode;return}parentNode=parentNode.parentNode}break;case"mceSetStyleInfo":case"SetStyleInfo":var rng=this.getRng();var sel=this.getSel();var scmd=value.command;var sname=value.name;var svalue=value.value==null?'':value.value;var wrapper=value.wrapper?value.wrapper:"span";var parentElm=null;var invalidRe=new RegExp("^BODY|HTML$","g");var invalidParentsRe=tinyMCE.settings.merge_styles_invalid_parents!==''?new RegExp(tinyMCE.settings.merge_styles_invalid_parents,"gi"):null;if(tinyMCE.isIE){if(rng.item)parentElm=rng.item(0);else{var pelm=rng.parentElement();var prng=doc.selection.createRange();prng.moveToElementText(pelm);if(rng.htmlText==prng.htmlText||rng.boundingWidth==0){if(invalidParentsRe==null||!invalidParentsRe.test(pelm.nodeName))parentElm=pelm}}}else{var felm=this.getFocusElement();if(sel.isCollapsed||(new RegExp('td|tr|tbody|table|img','gi').test(felm.nodeName)&&sel.anchorNode==felm.parentNode))parentElm=felm}if(parentElm&&!invalidRe.test(parentElm.nodeName)){if(scmd=="setstyle")tinyMCE.setStyleAttrib(parentElm,sname,svalue);if(scmd=="setattrib")tinyMCE.setAttrib(parentElm,sname,svalue);if(scmd=="removeformat"){parentElm.style.cssText='';tinyMCE.setAttrib(parentElm,'class','')}var ch=tinyMCE.getNodeTree(parentElm,[],1);for(z=0;z<ch.length;z++){if(ch[z]==parentElm)continue;if(scmd=="setstyle")tinyMCE.setStyleAttrib(ch[z],sname,'');if(scmd=="setattrib")tinyMCE.setAttrib(ch[z],sname,'');if(scmd=="removeformat"){ch[z].style.cssText='';tinyMCE.setAttrib(ch[z],'class','')}}}else{this._setUseCSS(false);doc.execCommand("FontName",false,"#mce_temp_font#");var elementArray=tinyMCE.getElementsByAttributeValue(this.getBody(),"font","face","#mce_temp_font#");for(x=0;x<elementArray.length;x++){elm=elementArray[x];if(elm){var spanElm=doc.createElement(wrapper);if(scmd=="setstyle")tinyMCE.setStyleAttrib(spanElm,sname,svalue);if(scmd=="setattrib")tinyMCE.setAttrib(spanElm,sname,svalue);if(scmd=="removeformat"){spanElm.style.cssText='';tinyMCE.setAttrib(spanElm,'class','')}if(elm.hasChildNodes()){for(i=0;i<elm.childNodes.length;i++)spanElm.appendChild(elm.childNodes[i].cloneNode(true))}spanElm.setAttribute("mce_new","true");elm.parentNode.replaceChild(spanElm,elm);var ch=tinyMCE.getNodeTree(spanElm,[],1);for(z=0;z<ch.length;z++){if(ch[z]==spanElm)continue;if(scmd=="setstyle")tinyMCE.setStyleAttrib(ch[z],sname,'');if(scmd=="setattrib")tinyMCE.setAttrib(ch[z],sname,'');if(scmd=="removeformat"){ch[z].style.cssText='';tinyMCE.setAttrib(ch[z],'class','')}}}}}var nodes=doc.getElementsByTagName(wrapper);for(i=nodes.length-1;i>=0;i--){var elm=nodes[i];var isNew=tinyMCE.getAttrib(elm,"mce_new")=="true";elm.removeAttribute("mce_new");if(elm.childNodes&&elm.childNodes.length==1&&elm.childNodes[0].nodeType==1){this._mergeElements(scmd,elm,elm.childNodes[0],isNew);continue}if(elm.parentNode.childNodes.length==1&&!invalidRe.test(elm.nodeName)&&!invalidRe.test(elm.parentNode.nodeName)){if(invalidParentsRe==null||!invalidParentsRe.test(elm.parentNode.nodeName))this._mergeElements(scmd,elm.parentNode,elm,false)}}var nodes=doc.getElementsByTagName(wrapper);for(i=nodes.length-1;i>=0;i--){var elm=nodes[i],isEmpty=true;var tmp=doc.createElement("body");tmp.appendChild(elm.cloneNode(false));tmp.innerHTML=tmp.innerHTML.replace(new RegExp('style=""|class=""','gi'),'');if(new RegExp('<span>','gi').test(tmp.innerHTML)){for(x=0;x<elm.childNodes.length;x++){if(elm.parentNode!=null)elm.parentNode.insertBefore(elm.childNodes[x].cloneNode(true),elm)}elm.parentNode.removeChild(elm)}}if(scmd=="removeformat")tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE.triggerNodeChange();break;case"FontName":if(value==null){var s=this.getSel();if(tinyMCE.isGecko&&s.isCollapsed){var f=tinyMCE.getParentElement(this.getFocusElement(),"font");if(f!=null)this.selection.selectNode(f,false)}this.getDoc().execCommand("RemoveFormat",false,null);if(f!=null&&tinyMCE.isGecko){var r=this.getRng().cloneRange();r.collapse(true);s.removeAllRanges();s.addRange(r)}}else this.getDoc().execCommand('FontName',false,value);if(tinyMCE.isGecko)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);return;case"FontSize":this.getDoc().execCommand('FontSize',false,value);if(tinyMCE.isGecko)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);return;case"forecolor":value=value==null?this.foreColor:value;value=tinyMCE.trim(value);value=value.charAt(0)!='#'?(isNaN('0x'+value)?value:'#'+value):value;this.foreColor=value;this.getDoc().execCommand('forecolor',false,value);break;case"HiliteColor":value=value==null?this.backColor:value;value=tinyMCE.trim(value);value=value.charAt(0)!='#'?(isNaN('0x'+value)?value:'#'+value):value;this.backColor=value;if(tinyMCE.isGecko||tinyMCE.isOpera){this._setUseCSS(true);this.getDoc().execCommand('hilitecolor',false,value);this._setUseCSS(false)}else this.getDoc().execCommand('BackColor',false,value);break;case"Cut":case"Copy":case"Paste":var cmdFailed=false;eval('try {this.getDoc().execCommand(command, user_interface, value);} catch (e) {cmdFailed = true;}');if(tinyMCE.isOpera&&cmdFailed)alert('Currently not supported by your browser, use keyboard shortcuts instead.');if(tinyMCE.isGecko&&cmdFailed){if(confirm(tinyMCE.entityDecode(tinyMCE.getLang('lang_clipboard_msg'))))window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html','mceExternal');return}else tinyMCE.triggerNodeChange();break;case"mceSetContent":if(!value)value="";value=tinyMCE.storeAwayURLs(value);value=tinyMCE._customCleanup(this,"insert_to_editor",value);if(this.getBody().nodeName=='BODY')tinyMCE._setHTML(doc,value);else this.getBody().innerHTML=value;tinyMCE.setInnerHTML(this.getBody(),tinyMCE._cleanupHTML(this,doc,this.settings,this.getBody(),false,false,false,true));tinyMCE.convertAllRelativeURLs(this.getBody());tinyMCE._removeInternal(this.getBody());if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(doc);tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE._setEventsEnabled(this.getBody(),false);this._addBogusBR();return true;case"mceCleanup":var b=this.selection.getBookmark();tinyMCE._setHTML(this.contentDocument,this.getBody().innerHTML);tinyMCE.setInnerHTML(this.getBody(),tinyMCE._cleanupHTML(this,this.contentDocument,this.settings,this.getBody(),this.visualAid));tinyMCE.convertAllRelativeURLs(doc.body);if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(doc);tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE._setEventsEnabled(this.getBody(),false);this._addBogusBR();this.repaint();this.selection.moveToBookmark(b);tinyMCE.triggerNodeChange();break;case"mceReplaceContent":if(!value)value='';this.getWin().focus();var selectedText="";if(tinyMCE.isIE){var rng=doc.selection.createRange();selectedText=rng.text}else selectedText=this.getSel().toString();if(selectedText.length>0){value=tinyMCE.replaceVar(value,"selection",selectedText);tinyMCE.execCommand('mceInsertContent',false,value)}this._addBogusBR();tinyMCE.triggerNodeChange();break;case"mceSetAttribute":if(typeof(value)=='object'){var targetElms=(typeof(value.targets)=="undefined")?"p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address":value.targets;var targetNode=tinyMCE.getParentElement(this.getFocusElement(),targetElms);if(targetNode){targetNode.setAttribute(value.name,value.value);tinyMCE.triggerNodeChange()}}break;case"mceSetCSSClass":this.execCommand("mceSetStyleInfo",false,{command:"setattrib",name:"class",value:value});break;case"mceInsertRawHTML":var key='tiny_mce_marker';this.execCommand('mceBeginUndoLevel');this.execCommand('mceInsertContent',false,key);var scrollX=this.getBody().scrollLeft+this.getDoc().documentElement.scrollLeft;var scrollY=this.getBody().scrollTop+this.getDoc().documentElement.scrollTop;var html=this.getBody().innerHTML;if((pos=html.indexOf(key))!=-1)tinyMCE.setInnerHTML(this.getBody(),html.substring(0,pos)+value+html.substring(pos+key.length));this.contentWindow.scrollTo(scrollX,scrollY);this.execCommand('mceEndUndoLevel');break;case"mceInsertContent":if(!value)value='';var insertHTMLFailed=false;if(tinyMCE.isGecko||tinyMCE.isOpera){try{if(value.indexOf('<')==-1&&!value.match(/(&#38;|&#160;|&#60;|&#62;)/g)){var r=this.getRng();var n=this.getDoc().createTextNode(tinyMCE.entityDecode(value));var s=this.getSel();var r2=r.cloneRange();s.removeAllRanges();r.deleteContents();r.insertNode(n);r2.selectNode(n);r2.collapse(false);s.removeAllRanges();s.addRange(r2)}else{value=tinyMCE.fixGeckoBaseHREFBug(1,this.getDoc(),value);this.getDoc().execCommand('inserthtml',false,value);tinyMCE.fixGeckoBaseHREFBug(2,this.getDoc(),value)}}catch(ex){insertHTMLFailed=true}if(!insertHTMLFailed){tinyMCE.triggerNodeChange();return}}if(!tinyMCE.isIE){var isHTML=value.indexOf('<')!=-1;var sel=this.getSel();var rng=this.getRng();if(isHTML){if(tinyMCE.isSafari){var tmpRng=this.getDoc().createRange();tmpRng.setStart(this.getBody(),0);tmpRng.setEnd(this.getBody(),0);value=tmpRng.createContextualFragment(value)}else value=rng.createContextualFragment(value)}else{value=doc.createTextNode(tinyMCE.entityDecode(value))}if(tinyMCE.isSafari&&!isHTML){this.execCommand('InsertText',false,value.nodeValue);tinyMCE.triggerNodeChange();return true}else if(tinyMCE.isSafari&&isHTML){rng.deleteContents();rng.insertNode(value);tinyMCE.triggerNodeChange();return true}rng.deleteContents();if(rng.startContainer.nodeType==3){var node=rng.startContainer.splitText(rng.startOffset);node.parentNode.insertBefore(value,node)}else rng.insertNode(value);if(!isHTML){sel.selectAllChildren(doc.body);sel.removeAllRanges();var rng=doc.createRange();rng.selectNode(value);rng.collapse(false);sel.addRange(rng)}else rng.collapse(false);tinyMCE.fixGeckoBaseHREFBug(2,this.getDoc(),value)}else{var rng=doc.selection.createRange(),tmpRng=null;var c=value.indexOf('<!--')!=-1;if(c)value=tinyMCE.uniqueTag+value;if(rng.item)rng.item(0).outerHTML=value;else rng.pasteHTML(value);if(c){var e=this.getDoc().getElementById('mceTMPElement');e.parentNode.removeChild(e)}}tinyMCE.execCommand("mceAddUndoLevel");tinyMCE.triggerNodeChange();break;case"mceStartTyping":if(tinyMCE.settings.custom_undo_redo&&this.undoRedo.typingUndoIndex==-1){this.undoRedo.typingUndoIndex=this.undoRedo.undoIndex;tinyMCE.typingUndoIndex=tinyMCE.undoIndex;this.execCommand('mceAddUndoLevel')}break;case"mceEndTyping":if(tinyMCE.settings.custom_undo_redo&&this.undoRedo.typingUndoIndex!=-1){this.execCommand('mceAddUndoLevel');this.undoRedo.typingUndoIndex=-1}tinyMCE.typingUndoIndex=-1;break;case"mceBeginUndoLevel":this.undoRedoLevel=false;break;case"mceEndUndoLevel":this.undoRedoLevel=true;this.execCommand('mceAddUndoLevel');break;case"mceAddUndoLevel":if(tinyMCE.settings.custom_undo_redo&&this.undoRedoLevel){if(this.undoRedo.add())tinyMCE.triggerNodeChange(false)}break;case"Undo":if(tinyMCE.settings.custom_undo_redo){tinyMCE.execCommand("mceEndTyping");this.undoRedo.undo();tinyMCE.triggerNodeChange()}else this.getDoc().execCommand(command,user_interface,value);break;case"Redo":if(tinyMCE.settings.custom_undo_redo){tinyMCE.execCommand("mceEndTyping");this.undoRedo.redo();tinyMCE.triggerNodeChange()}else this.getDoc().execCommand(command,user_interface,value);break;case"mceToggleVisualAid":this.visualAid=!this.visualAid;tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE.triggerNodeChange();break;case"Indent":this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();if(tinyMCE.isIE){var n=tinyMCE.getParentElement(this.getFocusElement(),"blockquote");do{if(n&&n.nodeName=="BLOCKQUOTE"){n.removeAttribute("dir");n.removeAttribute("style")}}while(n!=null&&(n=n.parentNode)!=null)}break;case"RemoveFormat":case"removeformat":var text=this.selection.getSelectedText();if(tinyMCE.isOpera){this.getDoc().execCommand("RemoveFormat",false,null);return}if(tinyMCE.isIE){try{var rng=doc.selection.createRange();rng.execCommand("RemoveFormat",false,null)}catch(e){}this.execCommand("mceSetStyleInfo",false,{command:"removeformat"})}else{this.getDoc().execCommand(command,user_interface,value);this.execCommand("mceSetStyleInfo",false,{command:"removeformat"})}if(text.length==0)this.execCommand("mceSetCSSClass",false,"");tinyMCE.triggerNodeChange();break;default:this.getDoc().execCommand(command,user_interface,value);if(tinyMCE.isGecko)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);else tinyMCE.triggerNodeChange()}if(command!="mceAddUndoLevel"&&command!="Undo"&&command!="Redo"&&command!="mceStartTyping"&&command!="mceEndTyping")tinyMCE.execCommand("mceAddUndoLevel")},queryCommandValue:function(c){try{return this.getDoc().queryCommandValue(c)}catch(e){return null}},queryCommandState:function(c){return this.getDoc().queryCommandState(c)},_addBogusBR:function(){var b=this.getBody();if(tinyMCE.isGecko&&!b.hasChildNodes())b.innerHTML='<br _moz_editor_bogus_node="TRUE" />'},_onAdd:function(replace_element,form_element_name,target_document){var hc,th,tos,editorTemplate,targetDoc,deltaWidth,deltaHeight,html,rng,fragment;var dynamicIFrame,tElm,doc,parentElm;th=this.settings.theme;tos=tinyMCE.themes[th];targetDoc=target_document?target_document:document;this.targetDoc=targetDoc;tinyMCE.themeURL=tinyMCE.baseURL+"/themes/"+this.settings.theme;this.settings.themeurl=tinyMCE.themeURL;if(!replace_element){alert("Error: Could not find the target element.");return false}if(tos.getEditorTemplate)editorTemplate=tos.getEditorTemplate(this.settings,this.editorId);deltaWidth=editorTemplate.delta_width?editorTemplate.delta_width:0;deltaHeight=editorTemplate.delta_height?editorTemplate.delta_height:0;html='<span id="'+this.editorId+'_parent" class="mceEditorContainer">'+editorTemplate.html;html=tinyMCE.replaceVar(html,"editor_id",this.editorId);if(!this.settings.default_document)this.settings.default_document=tinyMCE.baseURL+"/blank.htm";this.settings.old_width=this.settings.width;this.settings.old_height=this.settings.height;if(this.settings.width==-1)this.settings.width=replace_element.offsetWidth;if(this.settings.height==-1)this.settings.height=replace_element.offsetHeight;if(this.settings.width==0)this.settings.width=replace_element.style.width;if(this.settings.height==0)this.settings.height=replace_element.style.height;if(this.settings.width==0)this.settings.width=320;if(this.settings.height==0)this.settings.height=240;this.settings.area_width=parseInt(this.settings.width);this.settings.area_height=parseInt(this.settings.height);this.settings.area_width+=deltaWidth;this.settings.area_height+=deltaHeight;this.settings.width_style=""+this.settings.width;this.settings.height_style=""+this.settings.height;if((""+this.settings.width).indexOf('%')!=-1)this.settings.area_width="100%";else this.settings.width_style+='px';if((""+this.settings.height).indexOf('%')!=-1)this.settings.area_height="100%";else this.settings.height_style+='px';if((""+replace_element.style.width).indexOf('%')!=-1){this.settings.width=replace_element.style.width;this.settings.area_width="100%";this.settings.width_style="100%"}if((""+replace_element.style.height).indexOf('%')!=-1){this.settings.height=replace_element.style.height;this.settings.area_height="100%";this.settings.height_style="100%"}html=tinyMCE.applyTemplate(html);this.settings.width=this.settings.old_width;this.settings.height=this.settings.old_height;this.visualAid=this.settings.visual;this.formTargetElementId=form_element_name;if(replace_element.nodeName=="TEXTAREA"||replace_element.nodeName=="INPUT")this.startContent=replace_element.value;else this.startContent=replace_element.innerHTML;if(replace_element.nodeName!="TEXTAREA"&&replace_element.nodeName!="INPUT"){this.oldTargetElement=replace_element;hc='<input type="hidden" id="'+form_element_name+'" name="'+form_element_name+'" />';this.oldTargetDisplay=tinyMCE.getStyle(this.oldTargetElement,'display','inline');this.oldTargetElement.style.display="none";html+='</span>';if(tinyMCE.isGecko)html=hc+html;else html+=hc;if(tinyMCE.isGecko){rng=replace_element.ownerDocument.createRange();rng.setStartBefore(replace_element);fragment=rng.createContextualFragment(html);tinyMCE.insertAfter(fragment,replace_element)}else replace_element.insertAdjacentHTML("beforeBegin",html)}else{html+='</span>';this.oldTargetElement=replace_element;this.oldTargetDisplay=tinyMCE.getStyle(this.oldTargetElement,'display','inline');this.oldTargetElement.style.display="none";if(tinyMCE.isGecko){rng=replace_element.ownerDocument.createRange();rng.setStartBefore(replace_element);fragment=rng.createContextualFragment(html);tinyMCE.insertAfter(fragment,replace_element)}else replace_element.insertAdjacentHTML("beforeBegin",html)}dynamicIFrame=false;tElm=targetDoc.getElementById(this.editorId);if(!tinyMCE.isIE){if(tElm&&(tElm.nodeName=="SPAN"||tElm.nodeName=="span")){tElm=tinyMCE._createIFrame(tElm,targetDoc);dynamicIFrame=true}this.targetElement=tElm;this.iframeElement=tElm;this.contentDocument=tElm.contentDocument;this.contentWindow=tElm.contentWindow;}else{if(tElm&&tElm.nodeName=="SPAN")tElm=tinyMCE._createIFrame(tElm,targetDoc,targetDoc.parentWindow);else tElm=targetDoc.frames[this.editorId];this.targetElement=tElm;this.iframeElement=targetDoc.getElementById(this.editorId);if(tinyMCE.isOpera){this.contentDocument=this.iframeElement.contentDocument;this.contentWindow=this.iframeElement.contentWindow;dynamicIFrame=true}else{this.contentDocument=tElm.window.document;this.contentWindow=tElm.window}this.getDoc().designMode="on"}doc=this.contentDocument;if(dynamicIFrame){html=tinyMCE.getParam('doctype')+'<html><head xmlns="http://www.w3.org/1999/xhtml"><base href="'+tinyMCE.settings.base_href+'" /><title>blank_page</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body class="mceContentBody"></body></html>';try{if(!this.isHidden())this.getDoc().designMode="on";doc.open();doc.write(html);doc.close()}catch(e){this.getDoc().location.href=tinyMCE.baseURL+"/blank.htm"}}if(tinyMCE.isIE)window.setTimeout("tinyMCE.addEventHandlers(tinyMCE.instances[\""+this.editorId+"\"]);",1);parentElm=this.targetDoc.getElementById(this.editorId+'_parent');this.formElement=tinyMCE.isGecko?parentElm.previousSibling:parentElm.nextSibling;tinyMCE.setupContent(this.editorId,true);return true},setBaseHREF:function(u){var h,b,d,nl;d=this.getDoc();nl=d.getElementsByTagName("base");b=nl.length>0?nl[0]:null;if(!b){nl=d.getElementsByTagName("head");h=nl.length>0?nl[0]:null;b=d.createElement("base");b.setAttribute('href',u);h.appendChild(b)}else{if(u==''||u==null)b.parentNode.removeChild(b);else b.setAttribute('href',u)}},getHTML:function(r){var h,d=this.getDoc(),b=this.getBody();if(r)return b.innerHTML;h=tinyMCE._cleanupHTML(this,d,this.settings,b,false,true,false,true);if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(d);return h},setHTML:function(h){this.execCommand('mceSetContent',false,h);this.repaint()},getFocusElement:function(){return this.selection.getFocusElement()},getSel:function(){return this.selection.getSel()},getRng:function(){return this.selection.getRng()},triggerSave:function(skip_cleanup,skip_callback){var e,nl=[],i,s,content,htm;if(!this.enabled)return;this.switchSettings();s=tinyMCE.settings;if(tinyMCE.isRealIE){e=this.iframeElement;do{if(e.style&&e.style.display=='none'){e.style.display='block';nl[nl.length]={elm:e,type:'style'}}if(e.style&&s.hidden_tab_class.length>0&&e.className.indexOf(s.hidden_tab_class)!=-1){e.className=s.display_tab_class;nl[nl.length]={elm:e,type:'class'}}}while((e=e.parentNode)!=null)}tinyMCE.settings.preformatted=false;if(typeof(skip_cleanup)=="undefined")skip_cleanup=false;if(typeof(skip_callback)=="undefined")skip_callback=false;tinyMCE._setHTML(this.getDoc(),this.getBody().innerHTML);if(this.settings.cleanup==false){tinyMCE.handleVisualAid(this.getBody(),true,false,this);tinyMCE._setEventsEnabled(this.getBody(),true)}tinyMCE._customCleanup(this,"submit_content_dom",this.contentWindow.document.body);htm=skip_cleanup?this.getBody().innerHTML:tinyMCE._cleanupHTML(this,this.getDoc(),this.settings,this.getBody(),tinyMCE.visualAid,true,true);htm=tinyMCE._customCleanup(this,"submit_content",htm);if(!skip_callback&&tinyMCE.settings.save_callback!=='')content=tinyMCE.resolveDots(tinyMCE.settings.save_callback,window)(this.formTargetElementId,htm,this.getBody());if((typeof(content)!="undefined")&&content!=null)htm=content;htm=tinyMCE.regexpReplace(htm,"&#40;","(","gi");htm=tinyMCE.regexpReplace(htm,"&#41;",")","gi");htm=tinyMCE.regexpReplace(htm,"&#59;",";","gi");htm=tinyMCE.regexpReplace(htm,"&#34;","&quot;","gi");htm=tinyMCE.regexpReplace(htm,"&#94;","^","gi");if(this.formElement)this.formElement.value=htm;if(tinyMCE.isSafari&&this.formElement)this.formElement.innerText=htm;for(i=0;i<nl.length;i++){if(nl[i].type=='style')nl[i].elm.style.display='none';else nl[i].elm.className=s.hidden_tab_class}}};tinyMCE.add(TinyMCE_Engine,{cleanupHTMLCode:function(s){s=s.replace(new RegExp('<p \\/>','gi'),'<p>&nbsp;</p>');s=s.replace(new RegExp('<p>\\s*<\\/p>','gi'),'<p>&nbsp;</p>');s=s.replace(new RegExp('<br>\\s*<\\/br>','gi'),'<br />');s=s.replace(new RegExp('<(h[1-6]|p|div|address|pre|form|table|li|ol|ul|td|b|font|em|strong|i|strike|u|span|a|ul|ol|li|blockquote)([a-z]*)([^\\\\|>]*)\\/>','gi'),'<$1$2$3></$1$2>');s=s.replace(new RegExp('\\s+></','gi'),'></');s=s.replace(new RegExp('<(img|br|hr)([^>]*)><\\/(img|br|hr)>','gi'),'<$1$2 />');if(tinyMCE.isIE)s=s.replace(new RegExp('<p><hr \\/><\\/p>','gi'),"<hr>");if(tinyMCE.isIE)s=s.replace(/<!(\s*)\/>/g,'');return s},parseStyle:function(str){var ar=[],st,i,re,pa;if(str==null)return ar;st=str.split(';');tinyMCE.clearArray(ar);for(i=0;i<st.length;i++){if(st[i]=='')continue;re=new RegExp('^\\s*([^:]*):\\s*(.*)\\s*$');pa=st[i].replace(re,'$1||$2').split('||');if(pa.length==2)ar[pa[0].toLowerCase()]=pa[1]}return ar},compressStyle:function(ar,pr,sf,res){var box=[],i,a;box[0]=ar[pr+'-top'+sf];box[1]=ar[pr+'-left'+sf];box[2]=ar[pr+'-right'+sf];box[3]=ar[pr+'-bottom'+sf];for(i=0;i<box.length;i++){if(box[i]==null)return;if(i&&box[i]!=box[i-1])return}ar[res]=box[0];ar[pr+'-top'+sf]=null;ar[pr+'-left'+sf]=null;ar[pr+'-right'+sf]=null;ar[pr+'-bottom'+sf]=null},serializeStyle:function(ar){var str="",key,val,m;tinyMCE.compressStyle(ar,"border","","border");tinyMCE.compressStyle(ar,"border","-width","border-width");tinyMCE.compressStyle(ar,"border","-color","border-color");tinyMCE.compressStyle(ar,"border","-style","border-style");tinyMCE.compressStyle(ar,"padding","","padding");tinyMCE.compressStyle(ar,"margin","","margin");for(key in ar){val=ar[key];if(typeof(val)=='function')continue;if(key.indexOf('mso-')==0)continue;if(val!=null&&val!==''){val=''+val;val=val.replace(new RegExp("url\\(\\'?([^\\']*)\\'?\\)",'gi'),"url('$1')");if(val.indexOf('url(')!=-1&&tinyMCE.getParam('convert_urls')){m=new RegExp("url\\('(.*?)'\\)").exec(val);if(m.length>1)val="url('"+eval(tinyMCE.getParam('urlconverter_callback')+"(m[1], null, true);")+"')"}if(tinyMCE.getParam("force_hex_style_colors"))val=tinyMCE.convertRGBToHex(val,true);val=val.replace(/\"/g,'\'');if(val!="url('')")str+=key.toLowerCase()+": "+val+"; "}}if(new RegExp('; $').test(str))str=str.substring(0,str.length-2);return str},convertRGBToHex:function(s,k){var re,rgb;if(s.toLowerCase().indexOf('rgb')!=-1){re=new RegExp("(.*?)rgb\\s*?\\(\\s*?([0-9]+).*?,\\s*?([0-9]+).*?,\\s*?([0-9]+).*?\\)(.*?)","gi");rgb=s.replace(re,"$1,$2,$3,$4,$5").split(',');if(rgb.length==5){r=parseInt(rgb[1]).toString(16);g=parseInt(rgb[2]).toString(16);b=parseInt(rgb[3]).toString(16);r=r.length==1?'0'+r:r;g=g.length==1?'0'+g:g;b=b.length==1?'0'+b:b;s="#"+r+g+b;if(k)s=rgb[0]+s+rgb[4]}}return s},convertHexToRGB:function(s){if(s.indexOf('#')!=-1){s=s.replace(new RegExp('[^0-9A-F]','gi'),'');return"rgb("+parseInt(s.substring(0,2),16)+","+parseInt(s.substring(2,4),16)+","+parseInt(s.substring(4,6),16)+")"}return s},convertSpansToFonts:function(doc){var s,i,size,fSize,x,fFace,fColor,sizes=tinyMCE.getParam('font_size_style_values').replace(/\s+/,'').split(',');s=tinyMCE.selectElements(doc,'span,font');for(i=0;i<s.length;i++){size=tinyMCE.trim(s[i].style.fontSize).toLowerCase();fSize=0;for(x=0;x<sizes.length;x++){if(sizes[x]==size){fSize=x+1;break}}if(fSize>0){tinyMCE.setAttrib(s[i],'size',fSize);s[i].style.fontSize=''}fFace=s[i].style.fontFamily;if(fFace!=null&&fFace!==''){tinyMCE.setAttrib(s[i],'face',fFace);s[i].style.fontFamily=''}fColor=s[i].style.color;if(fColor!=null&&fColor!==''){tinyMCE.setAttrib(s[i],'color',tinyMCE.convertRGBToHex(fColor));s[i].style.color=''}}},convertFontsToSpans:function(doc){var fsClasses,s,i,fSize,fFace,fColor,sizes=tinyMCE.getParam('font_size_style_values').replace(/\s+/,'').split(',');fsClasses=tinyMCE.getParam('font_size_classes');if(fsClasses!=='')fsClasses=fsClasses.replace(/\s+/,'').split(',');else fsClasses=null;s=tinyMCE.selectElements(doc,'span,font');for(i=0;i<s.length;i++){fSize=tinyMCE.getAttrib(s[i],'size');fFace=tinyMCE.getAttrib(s[i],'face');fColor=tinyMCE.getAttrib(s[i],'color');if(fSize!==''){fSize=parseInt(fSize);if(fSize>0&&fSize<8){if(fsClasses!=null)tinyMCE.setAttrib(s[i],'class',fsClasses[fSize-1]);else s[i].style.fontSize=sizes[fSize-1]}s[i].removeAttribute('size')}if(fFace!==''){s[i].style.fontFamily=fFace;s[i].removeAttribute('face')}if(fColor!==''){s[i].style.color=fColor;s[i].removeAttribute('color')}}},cleanupAnchors:function(doc){var i,cn,x,an=doc.getElementsByTagName("a");for(i=an.length-1;i>=0;i--){if(tinyMCE.getAttrib(an[i],"name")!==''&&tinyMCE.getAttrib(an[i],"href")==''){cn=an[i].childNodes;for(x=cn.length-1;x>=0;x--)tinyMCE.insertAfter(cn[x],an[i])}}},getContent:function(editor_id){if(typeof(editor_id)!="undefined")tinyMCE.getInstanceById(editor_id).select();if(tinyMCE.selectedInstance)return tinyMCE.selectedInstance.getHTML();return null},_fixListElements:function(d){var nl,x,a=['ol','ul'],i,n,p,r=new RegExp('^(OL|UL)$'),np;for(x=0;x<a.length;x++){nl=d.getElementsByTagName(a[x]);for(i=0;i<nl.length;i++){n=nl[i];p=n.parentNode;if(r.test(p.nodeName)){np=tinyMCE.prevNode(n,'LI');if(!np){np=d.createElement('li');np.innerHTML='&nbsp;';np.appendChild(n);p.insertBefore(np,p.firstChild)}else np.appendChild(n)}}}},_fixTables:function(d){var nl,i,n,p,np,x,t;nl=d.getElementsByTagName('table');for(i=0;i<nl.length;i++){n=nl[i];if((p=tinyMCE.getParentElement(n,'p,h1,h2,h3,h4,h5,h6'))!=null){np=p.cloneNode(false);np.removeAttribute('id');t=n;while((n=n.nextSibling))np.appendChild(n);tinyMCE.insertAfter(np,p);tinyMCE.insertAfter(t,p)}}},_cleanupHTML:function(inst,doc,config,elm,visual,on_save,on_submit,inn){var h,d,t1,t2,t3,t4,t5,c,s,nb;if(!tinyMCE.getParam('cleanup'))return elm.innerHTML;on_save=typeof(on_save)=='undefined'?false:on_save;c=inst.cleanup;s=inst.settings;d=c.settings.debug;if(d)t1=new Date().getTime();inst._fixRootBlocks();if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertFontsToSpans(doc);if(tinyMCE.getParam("fix_list_elements"))tinyMCE._fixListElements(doc);if(tinyMCE.getParam("fix_table_elements"))tinyMCE._fixTables(doc);tinyMCE._customCleanup(inst,on_save?"get_from_editor_dom":"insert_to_editor_dom",doc.body);if(d)t2=new Date().getTime();c.settings.on_save=on_save;c.idCount=0;c.serializationId++;c.serializedNodes=[];c.sourceIndex=-1;if(s.cleanup_serializer=="xml")h=c.serializeNodeAsXML(elm,inn);else h=c.serializeNodeAsHTML(elm,inn);if(d)t3=new Date().getTime();nb=tinyMCE.getParam('entity_encoding')=='numeric'?'&#160;':'&nbsp;';h=h.replace(/<\/?(body|head|html)[^>]*>/gi,'');h=h.replace(new RegExp(' (rowspan="1"|colspan="1")','g'),'');h=h.replace(/<p><hr \/><\/p>/g,'<hr />');h=h.replace(/<p>(&nbsp;|&#160;)<\/p><hr \/><p>(&nbsp;|&#160;)<\/p>/g,'<hr />');h=h.replace(/<td>\s*<br \/>\s*<\/td>/g,'<td>'+nb+'</td>');h=h.replace(/<p>\s*<br \/>\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(/<br \/>$/,'');h=h.replace(/<br \/><\/p>/g,'</p>');h=h.replace(/<p>\s*(&nbsp;|&#160;)\s*<br \/>\s*(&nbsp;|&#160;)\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(/<p>\s*(&nbsp;|&#160;)\s*<br \/>\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(/<p>\s*<br \/>\s*&nbsp;\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(new RegExp('<a>(.*?)<\\/a>','g'),'$1');h=h.replace(/<p([^>]*)>\s*<\/p>/g,'<p$1>'+nb+'</p>');if(/^\s*(<br \/>|<p>&nbsp;<\/p>|<p>&#160;<\/p>|<p><\/p>)\s*$/.test(h))h='';if(s.preformatted){h=h.replace(/^<pre>/,'');h=h.replace(/<\/pre>$/,'');h='<pre>'+h+'</pre>'}if(tinyMCE.isGecko){h=h.replace(/<br \/>\s*<\/li>/g,'</li>');h=h.replace(/&nbsp;\s*<\/(dd|dt)>/g,'</$1>');h=h.replace(/<o:p _moz-userdefined="" \/>/g,'');h=h.replace(/<td([^>]*)>\s*<br \/>\s*<\/td>/g,'<td$1>'+nb+'</td>')}if(s.force_br_newlines)h=h.replace(/<p>(&nbsp;|&#160;)<\/p>/g,'<br />');h=tinyMCE._customCleanup(inst,on_save?"get_from_editor":"insert_to_editor",h);if(on_save){h=h.replace(new RegExp(' ?(mceItem[a-zA-Z0-9]*|'+s.visual_table_class+')','g'),'');h=h.replace(new RegExp(' ?class=""','g'),'')}if(s.remove_linebreaks&&!c.settings.indent)h=h.replace(/\n|\r/g,' ');if(d)t4=new Date().getTime();if(on_save&&c.settings.indent)h=c.formatHTML(h);if(on_submit&&(s.encoding=="xml"||s.encoding=="html"))h=c.xmlEncode(h);if(d)t5=new Date().getTime();if(c.settings.debug)tinyMCE.debug("Cleanup in ms: Pre="+(t2-t1)+", Serialize: "+(t3-t2)+", Post: "+(t4-t3)+", Format: "+(t5-t4)+", Sum: "+(t5-t1)+".");return h}});function TinyMCE_Cleanup(){this.isIE=(navigator.appName=="Microsoft Internet Explorer");this.rules=tinyMCE.clearArray([]);this.settings={indent_elements:'head,table,tbody,thead,tfoot,form,tr,ul,ol,blockquote,object',newline_before_elements:'h1,h2,h3,h4,h5,h6,pre,address,div,ul,ol,li,meta,option,area,title,link,base,script,td',newline_after_elements:'br,hr,p,pre,address,div,ul,ol,meta,option,area,link,base,script',newline_before_after_elements:'html,head,body,table,thead,tbody,tfoot,tr,form,ul,ol,blockquote,p,object,param,hr,div',indent_char:'\t',indent_levels:1,entity_encoding:'raw',valid_elements:'*[*]',entities:'',url_converter:'',invalid_elements:'',verify_html:false};this.vElements=tinyMCE.clearArray([]);this.vElementsRe='';this.closeElementsRe=/^(IMG|BR|HR|LINK|META|BASE|INPUT|AREA)$/;this.codeElementsRe=/^(SCRIPT|STYLE)$/;this.serializationId=0;this.mceAttribs={href:'mce_href',src:'mce_src',type:'mce_type'}}TinyMCE_Cleanup.prototype={init:function(s){var n,a,i,ir,or,st;for(n in s)this.settings[n]=s[n];s=this.settings;this.inRe=this._arrayToRe(s.indent_elements.split(','),'','^<(',')[^>]*');this.ouRe=this._arrayToRe(s.indent_elements.split(','),'','^<\\/(',')[^>]*');this.nlBeforeRe=this._arrayToRe(s.newline_before_elements.split(','),'gi','<(',')([^>]*)>');this.nlAfterRe=this._arrayToRe(s.newline_after_elements.split(','),'gi','<(',')([^>]*)>');this.nlBeforeAfterRe=this._arrayToRe(s.newline_before_after_elements.split(','),'gi','<(\\/?)(',')([^>]*)>');this.serializedNodes=[];this.serializationId=0;if(s.invalid_elements!=='')this.iveRe=this._arrayToRe(s.invalid_elements.toUpperCase().split(','),'g','^(',')$');else this.iveRe=null;st='';for(i=0;i<s.indent_levels;i++)st+=s.indent_char;this.inStr=st;if(!s.verify_html){s.valid_elements='*[*]';s.extended_valid_elements=''}this.fillStr=s.entity_encoding=="named"?"&nbsp;":"&#160;";this.idCount=0;this.xmlEncodeRe=new RegExp('[\u007F-\uFFFF<>&"]','g')},addRuleStr:function(s){var r=this.parseRuleStr(s),n;for(n in r){if(r[n])this.rules[n]=r[n]}this.vElements=tinyMCE.clearArray([]);for(n in this.rules){if(this.rules[n])this.vElements[this.vElements.length]=this.rules[n].tag}this.vElementsRe=this._arrayToRe(this.vElements,'')},isValid:function(n){if(!this.rulesDone)this._setupRules();if(!n)return true;n=n.replace(/[^a-z0-9]+/gi,'').toUpperCase();return!tinyMCE.getParam('cleanup')||this.vElementsRe.test(n)},addChildRemoveRuleStr:function(s){var x,y,p,i,t,tn,ta,cl,r;if(!s)return;ta=s.split(',');for(x=0;x<ta.length;x++){s=ta[x];p=this.split(/\[|\]/,s);if(p==null||p.length<1)t=s.toUpperCase();else t=p[0].toUpperCase();tn=this.split('/',t);for(y=0;y<tn.length;y++){r="^(";cl=this.split(/\|/,p[1]);for(i=0;i<cl.length;i++){if(cl[i]=='%istrict')r+=tinyMCE.inlineStrict;else if(cl[i]=='%itrans')r+=tinyMCE.inlineTransitional;else if(cl[i]=='%istrict_na')r+=tinyMCE.inlineStrict.substring(2);else if(cl[i]=='%itrans_na')r+=tinyMCE.inlineTransitional.substring(2);else if(cl[i]=='%btrans')r+=tinyMCE.blockElms;else if(cl[i]=='%strict')r+=tinyMCE.blockStrict;else r+=(cl[i].charAt(0)!='#'?cl[i].toUpperCase():cl[i]);r+=(i!=cl.length-1?'|':'')}r+=')$';if(this.childRules==null)this.childRules=tinyMCE.clearArray([]);this.childRules[tn[y]]=new RegExp(r);if(p.length>1)this.childRules[tn[y]].wrapTag=p[2]}}},parseRuleStr:function(s){var ta,p,r,a,i,x,px,t,tn,y,av,or=tinyMCE.clearArray([]),dv;if(s==null||s.length==0)return or;ta=s.split(',');for(x=0;x<ta.length;x++){s=ta[x];if(s.length==0)continue;p=this.split(/\[|\]/,s);if(p==null||p.length<1)t=s.toUpperCase();else t=p[0].toUpperCase();tn=this.split('/',t);for(y=0;y<tn.length;y++){r={};r.tag=tn[y];r.forceAttribs=null;r.defaultAttribs=null;r.validAttribValues=null;px=r.tag.charAt(0);r.forceOpen=px=='+';r.removeEmpty=px=='-';r.fill=px=='#';r.tag=r.tag.replace(/\+|-|#/g,'');r.oTagName=tn[0].replace(/\+|-|#/g,'').toLowerCase();r.isWild=new RegExp('\\*|\\?|\\+','g').test(r.tag);r.validRe=new RegExp(this._wildcardToRe('^'+r.tag+'$'));if(p.length>1){r.vAttribsRe='^(';a=this.split(/\|/,p[1]);for(i=0;i<a.length;i++){t=a[i];if(t.charAt(0)=='!'){a[i]=t=t.substring(1);if(!r.reqAttribsRe)r.reqAttribsRe='\\s+('+t;else r.reqAttribsRe+='|'+t}av=new RegExp('(=|:|<)(.*?)$').exec(t);t=t.replace(new RegExp('(=|:|<).*?$'),'');if(av&&av.length>0){if(av[0].charAt(0)==':'){if(!r.forceAttribs)r.forceAttribs=tinyMCE.clearArray([]);r.forceAttribs[t.toLowerCase()]=av[0].substring(1)}else if(av[0].charAt(0)=='='){if(!r.defaultAttribs)r.defaultAttribs=tinyMCE.clearArray([]);dv=av[0].substring(1);r.defaultAttribs[t.toLowerCase()]=dv==''?"mce_empty":dv}else if(av[0].charAt(0)=='<'){if(!r.validAttribValues)r.validAttribValues=tinyMCE.clearArray([]);r.validAttribValues[t.toLowerCase()]=this._arrayToRe(this.split('?',av[0].substring(1)),'i')}}r.vAttribsRe+=''+t.toLowerCase()+(i!=a.length-1?'|':'');a[i]=t.toLowerCase()}if(r.reqAttribsRe)r.reqAttribsRe=new RegExp(r.reqAttribsRe+')=\"','g');r.vAttribsRe+=')$';r.vAttribsRe=this._wildcardToRe(r.vAttribsRe);r.vAttribsReIsWild=new RegExp('\\*|\\?|\\+','g').test(r.vAttribsRe);r.vAttribsRe=new RegExp(r.vAttribsRe);r.vAttribs=a.reverse();}else{r.vAttribsRe='';r.vAttribs=tinyMCE.clearArray([]);r.vAttribsReIsWild=false}or[r.tag]=r}}return or},serializeNodeAsXML:function(n){var s,b;if(!this.xmlDoc){if(this.isIE){try{this.xmlDoc=new ActiveXObject('MSXML2.DOMDocument')}catch(e){}if(!this.xmlDoc)try{this.xmlDoc=new ActiveXObject('Microsoft.XmlDom')}catch(e){}}else this.xmlDoc=document.implementation.createDocument('','',null);if(!this.xmlDoc)alert("Error XML Parser could not be found.")}if(this.xmlDoc.firstChild)this.xmlDoc.removeChild(this.xmlDoc.firstChild);b=this.xmlDoc.createElement("html");b=this.xmlDoc.appendChild(b);this._convertToXML(n,b);if(this.isIE)return this.xmlDoc.xml;else return new XMLSerializer().serializeToString(this.xmlDoc)},_convertToXML:function(n,xn){var xd,el,i,l,cn,at,no,hc=false;if(tinyMCE.isRealIE&&this._isDuplicate(n))return;xd=this.xmlDoc;switch(n.nodeType){case 1:hc=n.hasChildNodes();el=xd.createElement(n.nodeName.toLowerCase());at=n.attributes;for(i=at.length-1;i>-1;i--){no=at[i];if(no.specified&&no.nodeValue)el.setAttribute(no.nodeName.toLowerCase(),no.nodeValue)}if(!hc&&!this.closeElementsRe.test(n.nodeName))el.appendChild(xd.createTextNode(""));xn=xn.appendChild(el);break;case 3:xn.appendChild(xd.createTextNode(n.nodeValue));return;case 8:xn.appendChild(xd.createComment(n.nodeValue));return}if(hc){cn=n.childNodes;for(i=0,l=cn.length;i<l;i++)this._convertToXML(cn[i],xn)}},serializeNodeAsHTML:function(n,inn){var en,no,h='',i,l,t,st,r,cn,va=false,f=false,at,hc,cr,nn;if(!this.rulesDone)this._setupRules();if(tinyMCE.isRealIE&&this._isDuplicate(n))return'';if(n.parentNode&&this.childRules!=null){cr=this.childRules[n.parentNode.nodeName];if(typeof(cr)!="undefined"&&!cr.test(n.nodeName)){st=true;t=null}}switch(n.nodeType){case 1:hc=n.hasChildNodes();if(st)break;nn=n.nodeName;if(tinyMCE.isRealIE){if(n.nodeName.indexOf('/')!=-1)break;if(n.scopeName&&n.scopeName!='HTML')nn=n.scopeName.toUpperCase()+':'+nn.toUpperCase()}else if(tinyMCE.isOpera&&nn.indexOf(':')>0)nn=nn.toUpperCase();if(this.settings.convert_fonts_to_spans){if(this.settings.on_save&&nn=='FONT')nn='SPAN';if(!this.settings.on_save&&nn=='SPAN')nn='FONT'}if(this.vElementsRe.test(nn)&&(!this.iveRe||!this.iveRe.test(nn))&&!inn){va=true;r=this.rules[nn];if(!r){at=this.rules;for(no in at){if(at[no]&&at[no].validRe.test(nn)){r=at[no];break}}}en=r.isWild?nn.toLowerCase():r.oTagName;f=r.fill;if(r.removeEmpty&&!hc)return"";t='<'+en;if(r.vAttribsReIsWild){at=n.attributes;for(i=at.length-1;i>-1;i--){no=at[i];if(no.specified&&r.vAttribsRe.test(no.nodeName))t+=this._serializeAttribute(n,r,no.nodeName)}}else{for(i=r.vAttribs.length-1;i>-1;i--)t+=this._serializeAttribute(n,r,r.vAttribs[i])}if(!this.settings.on_save){at=this.mceAttribs;for(no in at){if(at[no])t+=this._serializeAttribute(n,r,at[no])}}if(r.reqAttribsRe&&!t.match(r.reqAttribsRe))t=null;if(t!=null&&this.closeElementsRe.test(nn))return t+' />';if(t!=null)h+=t+'>';if(this.isIE&&this.codeElementsRe.test(nn))h+=n.innerHTML}break;case 3:if(st)break;if(n.parentNode&&this.codeElementsRe.test(n.parentNode.nodeName))return this.isIE?'':n.nodeValue;return this.xmlEncode(n.nodeValue);case 8:if(st)break;return"<!--"+this._trimComment(n.nodeValue)+"-->"}if(hc){cn=n.childNodes;for(i=0,l=cn.length;i<l;i++)h+=this.serializeNodeAsHTML(cn[i])}if(f&&!hc)h+=this.fillStr;if(t!=null&&va)h+='</'+en+'>';return h},_serializeAttribute:function(n,r,an){var av='',t,os=this.settings.on_save;if(os&&(an.indexOf('mce_')==0||an.indexOf('_moz')==0))return'';if(os&&this.mceAttribs[an])av=this._getAttrib(n,this.mceAttribs[an]);if(av.length==0)av=this._getAttrib(n,an);if(av.length==0&&r.defaultAttribs&&(t=r.defaultAttribs[an])){av=t;if(av=="mce_empty")return" "+an+'=""'}if(r.forceAttribs&&(t=r.forceAttribs[an]))av=t;if(os&&av.length!=0&&/^(src|href|longdesc)$/.test(an))av=this._urlConverter(this,n,av);if(av.length!=0&&r.validAttribValues&&r.validAttribValues[an]&&!r.validAttribValues[an].test(av))return"";if(av.length!=0&&av=="{$uid}")av="uid_"+(this.idCount++);if(av.length!=0){if(an.indexOf('on')!=0)av=this.xmlEncode(av,1);return" "+an+"="+'"'+av+'"'}return""},formatHTML:function(h){var s=this.settings,p='',i=0,li=0,o='',l;h=h.replace(/<pre([^>]*)>(.*?)<\/pre>/gi,function(a,b,c){c=c.replace(/<br\s*\/>/gi,'\n');return'<pre'+b+'>'+c+'</pre>'});h=h.replace(/\r/g,'');h='\n'+h;h=h.replace(new RegExp('\\n\\s+','gi'),'\n');h=h.replace(this.nlBeforeRe,'\n<$1$2>');h=h.replace(this.nlAfterRe,'<$1$2>\n');h=h.replace(this.nlBeforeAfterRe,'\n<$1$2$3>\n');h+='\n';while((i=h.indexOf('\n',i+1))!=-1){if((l=h.substring(li+1,i)).length!=0){if(this.ouRe.test(l)&&p.length>=s.indent_levels)p=p.substring(s.indent_levels);o+=p+l+'\n';if(this.inRe.test(l))p+=this.inStr}li=i}return o},xmlEncode:function(s){var cl=this,re=this.xmlEncodeRe;if(!this.entitiesDone)this._setupEntities();switch(this.settings.entity_encoding){case"raw":return tinyMCE.xmlEncode(s);case"named":return s.replace(re,function(c){var b=cl.entities[c.charCodeAt(0)];return b?'&'+b+';':c});case"numeric":return s.replace(re,function(c){return'&#'+c.charCodeAt(0)+';'})}return s},split:function(re,s){var i,l,o=[],c=s.split(re);for(i=0,l=c.length;i<l;i++){if(c[i]!=='')o[i]=c[i]}return o},_trimComment:function(s){s=s.replace(new RegExp('\\smce_src=\"[^\"]*\"','gi'),"");s=s.replace(new RegExp('\\smce_href=\"[^\"]*\"','gi'),"");return s},_getAttrib:function(e,n,d){var v,ex,nn;if(typeof(d)=="undefined")d="";if(!e||e.nodeType!=1)return d;try{v=e.getAttribute(n,0)}catch(ex){v=e.getAttribute(n,2)}if(n=="class"&&!v)v=e.className;if(this.isIE){if(n=="http-equiv")v=e.httpEquiv;nn=e.nodeName;if(nn=="FORM"&&n=="enctype"&&v=="application/x-www-form-urlencoded")v="";if(nn=="INPUT"&&n=="size"&&v=="20")v="";if(nn=="INPUT"&&n=="maxlength"&&v=="2147483647")v="";if(n=="width"||n=="height")v=e.getAttribute(n,2)}if(n=='style'&&v){if(!tinyMCE.isOpera)v=e.style.cssText;v=tinyMCE.serializeStyle(tinyMCE.parseStyle(v))}if(this.settings.on_save&&n.indexOf('on')!=-1&&this.settings.on_save&&v&&v!=='')v=tinyMCE.cleanupEventStr(v);return(v&&v!=='')?''+v:d},_urlConverter:function(c,n,v){if(!c.settings.on_save)return tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href,v);else if(tinyMCE.getParam('convert_urls')){if(!this.urlConverter)this.urlConverter=eval(tinyMCE.settings.urlconverter_callback);return this.urlConverter(v,n,true)}return v},_arrayToRe:function(a,op,be,af){var i,r;op=typeof(op)=="undefined"?"gi":op;be=typeof(be)=="undefined"?"^(":be;af=typeof(af)=="undefined"?")$":af;r=be;for(i=0;i<a.length;i++)r+=this._wildcardToRe(a[i])+(i!=a.length-1?"|":"");r+=af;return new RegExp(r,op)},_wildcardToRe:function(s){s=s.replace(/\?/g,'(\\S?)');s=s.replace(/\+/g,'(\\S+)');s=s.replace(/\*/g,'(\\S*)');return s},_setupEntities:function(){var n,a,i,s=this.settings;if(s.entity_encoding=="named"){n=tinyMCE.clearArray([]);a=this.split(',',s.entities);for(i=0;i<a.length;i+=2)n[a[i]]=a[i+1];this.entities=n}this.entitiesDone=true},_setupRules:function(){var s=this.settings;this.addRuleStr(s.valid_elements);this.addRuleStr(s.extended_valid_elements);this.addChildRemoveRuleStr(s.valid_child_elements);this.rulesDone=true},_isDuplicate:function(n){var i,l,sn;if(!this.settings.fix_content_duplication)return false;if(tinyMCE.isRealIE&&n.nodeType==1){if(n.mce_serialized==this.serializationId)return true;n.setAttribute('mce_serialized',this.serializationId)}else{sn=this.serializedNodes;for(i=0,l=sn.length;i<l;i++){if(sn[i]==n)return true}sn.push(n)}return false}};tinyMCE.add(TinyMCE_Engine,{createTagHTML:function(tn,a,h){var o='',f=tinyMCE.xmlEncode,n;o='<'+tn;if(a){for(n in a){if(typeof(a[n])!='function'&&a[n]!=null)o+=' '+f(n)+'="'+f(''+a[n])+'"'}}o+=!h?' />':'>'+h+'</'+tn+'>';return o},createTag:function(d,tn,a,h){var o=d.createElement(tn),n;if(a){for(n in a){if(typeof(a[n])!='function'&&a[n]!=null)tinyMCE.setAttrib(o,n,a[n])}}if(h)o.innerHTML=h;return o},getElementByAttributeValue:function(n,e,a,v){return(n=this.getElementsByAttributeValue(n,e,a,v)).length==0?null:n[0]},getElementsByAttributeValue:function(n,e,a,v){var i,nl=n.getElementsByTagName(e),o=[];for(i=0;i<nl.length;i++){if(tinyMCE.getAttrib(nl[i],a).indexOf(v)!=-1)o[o.length]=nl[i]}return o},isBlockElement:function(n){return n!=null&&n.nodeType==1&&this.blockRegExp.test(n.nodeName)},getParentBlockElement:function(n,r){return this.getParentNode(n,function(n){return tinyMCE.isBlockElement(n)},r);return null},insertAfter:function(n,r){if(r.nextSibling)r.parentNode.insertBefore(n,r.nextSibling);else r.parentNode.appendChild(n)},setInnerHTML:function(e,h){var i,nl,n;if(tinyMCE.isGecko){h=h.replace(/<embed([^>]*)>/gi,'<tmpembed$1>');h=h.replace(/<em([^>]*)>/gi,'<i$1>');h=h.replace(/<tmpembed([^>]*)>/gi,'<embed$1>');h=h.replace(/<strong([^>]*)>/gi,'<b$1>');h=h.replace(/<\/strong>/gi,'</b>');h=h.replace(/<\/em>/gi,'</i>')}if(tinyMCE.isRealIE){h=h.replace(/\s\/>/g,'>');h=h.replace(/<p([^>]*)>\u00A0?<\/p>/gi,'<p$1 mce_keep="true">&nbsp;</p>');h=h.replace(/<p([^>]*)>\s*&nbsp;\s*<\/p>/gi,'<p$1 mce_keep="true">&nbsp;</p>');h=h.replace(/<p([^>]*)>\s+<\/p>/gi,'<p$1 mce_keep="true">&nbsp;</p>');e.innerHTML=tinyMCE.uniqueTag+h;e.firstChild.removeNode(true);nl=e.getElementsByTagName("p");for(i=nl.length-1;i>=0;i--){n=nl[i];if(n.nodeName=='P'&&!n.hasChildNodes()&&!n.mce_keep)n.parentNode.removeChild(n)}}else{h=this.fixGeckoBaseHREFBug(1,e,h);e.innerHTML=h;this.fixGeckoBaseHREFBug(2,e,h)}},getOuterHTML:function(e){var d;if(tinyMCE.isIE)return e.outerHTML;d=e.ownerDocument.createElement("body");d.appendChild(e.cloneNode(true));return d.innerHTML},setOuterHTML:function(e,h,d){var d=typeof(d)=="undefined"?e.ownerDocument:d,i,nl,t;if(tinyMCE.isIE&&e.nodeType==1)e.outerHTML=h;else{t=d.createElement("body");t.innerHTML=h;for(i=0,nl=t.childNodes;i<nl.length;i++)e.parentNode.insertBefore(nl[i].cloneNode(true),e);e.parentNode.removeChild(e)}},_getElementById:function(id,d){var e,i,j,f;if(typeof(d)=="undefined")d=document;e=d.getElementById(id);if(!e){f=d.forms;for(i=0;i<f.length;i++){for(j=0;j<f[i].elements.length;j++){if(f[i].elements[j].name==id){e=f[i].elements[j];break}}}}return e},getNodeTree:function(n,na,t,nn){return this.selectNodes(n,function(n){return(!t||n.nodeType==t)&&(!nn||n.nodeName==nn)},na?na:[])},getParentElement:function(n,na,f,r){var re=na?new RegExp('^('+na.toUpperCase().replace(/,/g,'|')+')$'):0,v;if(f&&typeof(f)=='string')return this.getParentElement(n,na,function(no){return tinyMCE.getAttrib(no,f)!==''});return this.getParentNode(n,function(n){return((n.nodeType==1&&!re)||(re&&re.test(n.nodeName)))&&(!f||f(n))},r)},getParentNode:function(n,f,r){while(n){if(n==r)return null;if(f(n))return n;n=n.parentNode}return null},getAttrib:function(elm,name,dv){var v;if(typeof(dv)=="undefined")dv="";if(!elm||elm.nodeType!=1)return dv;try{v=elm.getAttribute(name,0)}catch(ex){v=elm.getAttribute(name,2)}if(name=="class"&&!v)v=elm.className;if(tinyMCE.isGecko){if(name=="src"&&elm.src!=null&&elm.src!=='')v=elm.src;if(name=="href"&&elm.href!=null&&elm.href!=='')v=elm.href}else if(tinyMCE.isIE){switch(name){case"http-equiv":v=elm.httpEquiv;break;case"width":case"height":v=elm.getAttribute(name,2);break}}if(name=="style"&&!tinyMCE.isOpera)v=elm.style.cssText;return(v&&v!=='')?v:dv},setAttrib:function(el,name,va,fix){if(typeof(va)=="number"&&va!=null)va=""+va;if(fix){if(va==null)va="";va=va.replace(/[^0-9%]/g,'')}if(name=="style")el.style.cssText=va;if(name=="class")el.className=va;if(va!=null&&va!==''&&va!=-1)el.setAttribute(name,va);else el.removeAttribute(name)},setStyleAttrib:function(e,n,v){e.style[n]=v;if(tinyMCE.isIE&&v==null||v==''){v=tinyMCE.serializeStyle(tinyMCE.parseStyle(e.style.cssText));e.style.cssText=v;e.setAttribute("style",v)}},switchClass:function(ei,c){var e;if(tinyMCE.switchClassCache[ei])e=tinyMCE.switchClassCache[ei];else e=tinyMCE.switchClassCache[ei]=document.getElementById(ei);if(e){if(tinyMCE.settings.button_tile_map&&e.className&&e.className.indexOf('mceTiledButton')==0)c='mceTiledButton '+c;e.className=c}},getAbsPosition:function(n,cn){var l=0,t=0;while(n&&n!=cn){l+=n.offsetLeft;t+=n.offsetTop;n=n.offsetParent}return{absLeft:l,absTop:t}},prevNode:function(e,n){var a=n.split(','),i;while((e=e.previousSibling)!=null){for(i=0;i<a.length;i++){if(e.nodeName==a[i])return e}}return null},nextNode:function(e,n){var a=n.split(','),i;while((e=e.nextSibling)!=null){for(i=0;i<a.length;i++){if(e.nodeName==a[i])return e}}return null},selectElements:function(n,na,f){var i,a=[],nl,x;for(x=0,na=na.split(',');x<na.length;x++)for(i=0,nl=n.getElementsByTagName(na[x]);i<nl.length;i++)(!f||f(nl[i]))&&a.push(nl[i]);return a},selectNodes:function(n,f,a){var i;if(!a)a=[];if(f(n))a[a.length]=n;if(n.hasChildNodes()){for(i=0;i<n.childNodes.length;i++)tinyMCE.selectNodes(n.childNodes[i],f,a)}return a},addCSSClass:function(e,c,b){var o=this.removeCSSClass(e,c);return e.className=b?c+(o!==''?(' '+o):''):(o!==''?(o+' '):'')+c},removeCSSClass:function(e,c){c=e.className.replace(new RegExp("(^|\\s+)"+c+"(\\s+|$)"),' ');return e.className=c!=' '?c:''},hasCSSClass:function(n,c){return new RegExp('\\b'+c+'\\b','g').test(n.className)},renameElement:function(e,n,d){var ne,i,ar;d=typeof(d)=="undefined"?tinyMCE.selectedInstance.getDoc():d;if(e){ne=d.createElement(n);ar=e.attributes;for(i=ar.length-1;i>-1;i--){if(ar[i].specified&&ar[i].nodeValue)ne.setAttribute(ar[i].nodeName.toLowerCase(),ar[i].nodeValue)}ar=e.childNodes;for(i=0;i<ar.length;i++)ne.appendChild(ar[i].cloneNode(true));e.parentNode.replaceChild(ne,e)}},getViewPort:function(w){var d=w.document,m=d.compatMode=='CSS1Compat',b=d.body,de=d.documentElement;return{left:w.pageXOffset||(m?de.scrollLeft:b.scrollLeft),top:w.pageYOffset||(m?de.scrollTop:b.scrollTop),width:w.innerWidth||(m?de.clientWidth:b.clientWidth),height:w.innerHeight||(m?de.clientHeight:b.clientHeight)}},getStyle:function(n,na,d){if(!n)return false;if(tinyMCE.isGecko&&n.ownerDocument.defaultView){try{return n.ownerDocument.defaultView.getComputedStyle(n,null).getPropertyValue(na)}catch(n){return null}}na=na.replace(/-(\D)/g,function(a,b){return b.toUpperCase()});if(n.currentStyle)return n.currentStyle[na];return false}});tinyMCE.add(TinyMCE_Engine,{parseURL:function(url_str){var urlParts=[],i,pos,lastPos,chr;if(url_str){pos=url_str.indexOf('://');if(pos!=-1){urlParts.protocol=url_str.substring(0,pos);lastPos=pos+3}for(i=lastPos;i<url_str.length;i++){chr=url_str.charAt(i);if(chr==':')break;if(chr=='/')break}pos=i;urlParts.host=url_str.substring(lastPos,pos);urlParts.port="";lastPos=pos;if(url_str.charAt(pos)==':'){pos=url_str.indexOf('/',lastPos);urlParts.port=url_str.substring(lastPos+1,pos)}lastPos=pos;pos=url_str.indexOf('?',lastPos);if(pos==-1)pos=url_str.indexOf('#',lastPos);if(pos==-1)pos=url_str.length;urlParts.path=url_str.substring(lastPos,pos);lastPos=pos;if(url_str.charAt(pos)=='?'){pos=url_str.indexOf('#');pos=(pos==-1)?url_str.length:pos;urlParts.query=url_str.substring(lastPos+1,pos)}lastPos=pos;if(url_str.charAt(pos)=='#'){pos=url_str.length;urlParts.anchor=url_str.substring(lastPos+1,pos)}}return urlParts},serializeURL:function(up){var o="";if(up.protocol)o+=up.protocol+"://";if(up.host)o+=up.host;if(up.port)o+=":"+up.port;if(up.path)o+=up.path;if(up.query)o+="?"+up.query;if(up.anchor)o+="#"+up.anchor;return o},convertAbsoluteURLToRelativeURL:function(base_url,url_to_relative){var baseURL=this.parseURL(base_url),targetURL=this.parseURL(url_to_relative);var i,strTok1,strTok2,breakPoint=0,outPath="",forceSlash=false;var fileName,pos;if(targetURL.path=='')targetURL.path="/";else forceSlash=true;base_url=baseURL.path.substring(0,baseURL.path.lastIndexOf('/'));strTok1=base_url.split('/');strTok2=targetURL.path.split('/');if(strTok1.length>=strTok2.length){for(i=0;i<strTok1.length;i++){if(i>=strTok2.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break}}}if(strTok1.length<strTok2.length){for(i=0;i<strTok2.length;i++){if(i>=strTok1.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break}}}if(breakPoint==1)return targetURL.path;for(i=0;i<(strTok1.length-(breakPoint-1));i++)outPath+="../";for(i=breakPoint-1;i<strTok2.length;i++){if(i!=(breakPoint-1))outPath+="/"+strTok2[i];else outPath+=strTok2[i]}targetURL.protocol=null;targetURL.host=null;targetURL.port=null;targetURL.path=outPath==''&&forceSlash?"/":outPath;fileName=baseURL.path;if((pos=fileName.lastIndexOf('/'))!=-1)fileName=fileName.substring(pos+1);if(fileName==targetURL.path&&targetURL.anchor!=='')targetURL.path="";if(targetURL.path==''&&!targetURL.anchor)targetURL.path=fileName!==''?fileName:"/";return this.serializeURL(targetURL)},convertRelativeToAbsoluteURL:function(base_url,relative_url){var baseURL=this.parseURL(base_url),baseURLParts,relURLParts,newRelURLParts,numBack,relURL=this.parseURL(relative_url),i;var len,absPath,start,end,newBaseURLParts;if(relative_url==''||relative_url.indexOf('://')!=-1||/^(mailto:|javascript:|#|\/)/.test(relative_url))return relative_url;baseURLParts=baseURL.path.split('/');relURLParts=relURL.path.split('/');newBaseURLParts=[];for(i=baseURLParts.length-1;i>=0;i--){if(baseURLParts[i].length==0)continue;newBaseURLParts[newBaseURLParts.length]=baseURLParts[i]}baseURLParts=newBaseURLParts.reverse();newRelURLParts=[];numBack=0;for(i=relURLParts.length-1;i>=0;i--){if(relURLParts[i].length==0||relURLParts[i]==".")continue;if(relURLParts[i]=='..'){numBack++;continue}if(numBack>0){numBack--;continue}newRelURLParts[newRelURLParts.length]=relURLParts[i]}relURLParts=newRelURLParts.reverse();len=baseURLParts.length-numBack;absPath=(len<=0?"":"/")+baseURLParts.slice(0,len).join('/')+"/"+relURLParts.join('/');start="";end="";relURL.protocol=baseURL.protocol;relURL.host=baseURL.host;relURL.port=baseURL.port;if(relURL.path.charAt(relURL.path.length-1)=="/")absPath+="/";relURL.path=absPath;return this.serializeURL(relURL)},convertURL:function(url,node,on_save){var dl=document.location,start,portPart,urlParts,baseUrlParts,tmpUrlParts,curl;var prot=dl.protocol,host=dl.hostname,port=dl.port;if(prot=="file:")return url;url=tinyMCE.regexpReplace(url,'(http|https):///','/');if(url.indexOf('mailto:')!=-1||url.indexOf('javascript:')!=-1||/^[ \t\r\n\+]*[#\?]/.test(url))return url;if(!tinyMCE.isIE&&!on_save&&url.indexOf("://")==-1&&url.charAt(0)!='/')return tinyMCE.settings.base_href+url;if(on_save&&tinyMCE.getParam('relative_urls')){curl=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href,url);if(curl.charAt(0)=='/')curl=tinyMCE.settings.document_base_prefix+curl;urlParts=tinyMCE.parseURL(curl);tmpUrlParts=tinyMCE.parseURL(tinyMCE.settings.document_base_url);if(urlParts.host==tmpUrlParts.host&&(urlParts.port==tmpUrlParts.port))return tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings.document_base_url,curl)}if(!tinyMCE.getParam('relative_urls')){urlParts=tinyMCE.parseURL(url);baseUrlParts=tinyMCE.parseURL(tinyMCE.settings.base_href);url=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href,url);if(urlParts.anchor&&urlParts.path==baseUrlParts.path)return"#"+urlParts.anchor}if(tinyMCE.getParam('remove_script_host')){start="";portPart="";if(port!=='')portPart=":"+port;start=prot+"//"+host+portPart+"/";if(url.indexOf(start)==0)url=url.substring(start.length-1)}return url},convertAllRelativeURLs:function(body){var i,elms,src,href,mhref,msrc;elms=body.getElementsByTagName("img");for(i=0;i<elms.length;i++){src=tinyMCE.getAttrib(elms[i],'src');msrc=tinyMCE.getAttrib(elms[i],'mce_src');if(msrc!=='')src=msrc;if(src!==''){src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href,src);elms[i].setAttribute("src",src)}}elms=body.getElementsByTagName("a");for(i=0;i<elms.length;i++){href=tinyMCE.getAttrib(elms[i],'href');mhref=tinyMCE.getAttrib(elms[i],'mce_href');if(mhref!=='')href=mhref;if(href&&href!==''){href=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href,href);elms[i].setAttribute("href",href)}}}});tinyMCE.add(TinyMCE_Engine,{clearArray:function(a){var n;for(n in a)a[n]=null;return a},explode:function(d,s){var ar=s.split(d),oar=[],i;for(i=0;i<ar.length;i++){if(ar[i]!=='')oar[oar.length]=ar[i]}return oar}});tinyMCE.add(TinyMCE_Engine,{_setEventsEnabled:function(node,state){var evs,x,y,elms,i,event;var events=['onfocus','onblur','onclick','ondblclick','onmousedown','onmouseup','onmouseover','onmousemove','onmouseout','onkeypress','onkeydown','onkeydown','onkeyup'];evs=tinyMCE.settings.event_elements.split(',');for(y=0;y<evs.length;y++){elms=node.getElementsByTagName(evs[y]);for(i=0;i<elms.length;i++){event="";for(x=0;x<events.length;x++){if((event=tinyMCE.getAttrib(elms[i],events[x]))!==''){event=tinyMCE.cleanupEventStr(""+event);if(!state)event="return true;"+event;else event=event.replace(/^return true;/gi,'');elms[i].removeAttribute(events[x]);elms[i].setAttribute(events[x],event)}}}}},_eventPatch:function(editor_id){var n,inst,win,e;if(typeof(tinyMCE)=="undefined")return true;try{if(tinyMCE.selectedInstance){win=tinyMCE.selectedInstance.getWin();if(win&&win.event){e=win.event;if(!e.target)e.target=e.srcElement;TinyMCE_Engine.prototype.handleEvent(e);return}}for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.select();win=inst.getWin();if(win&&win.event){e=win.event;if(!e.target)e.target=e.srcElement;TinyMCE_Engine.prototype.handleEvent(e);return}}}catch(ex){}},findEvent:function(e){var n,inst;if(e)return e;for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(tinyMCE.isInstance(inst)&&inst.getWin().event)return inst.getWin().event}return null},unloadHandler:function(){tinyMCE.triggerSave(true,true)},addEventHandlers:function(inst){this.setEventHandlers(inst,1)},setEventHandlers:function(inst,s){var doc=inst.getDoc(),ie,ot,i,f=s?tinyMCE.addEvent:tinyMCE.removeEvent;ie=['keypress','keyup','keydown','click','mouseup','mousedown','controlselect','dblclick'];ot=['keypress','keyup','keydown','click','mouseup','mousedown','focus','blur','dragdrop'];inst.switchSettings();if(tinyMCE.isIE){for(i=0;i<ie.length;i++)f(doc,ie[i],TinyMCE_Engine.prototype._eventPatch)}else{for(i=0;i<ot.length;i++)f(doc,ot[i],tinyMCE.handleEvent);try{doc.designMode="On"}catch(e){}}},onMouseMove:function(){var inst,lh;if(tinyMCE.lastHover){lh=tinyMCE.lastHover;if(lh.className.indexOf('mceMenu')!=-1)tinyMCE._menuButtonEvent('out',lh);else lh.className=lh.className;tinyMCE.lastHover=null}if(!tinyMCE.hasMouseMoved){inst=tinyMCE.selectedInstance;if(inst.isFocused){inst.undoBookmark=inst.selection.getBookmark();tinyMCE.hasMouseMoved=true}}},cancelEvent:function(e){if(!e)return false;if(tinyMCE.isIE){e.returnValue=false;e.cancelBubble=true}else{e.preventDefault();e.stopPropagation&&e.stopPropagation()}return false},addEvent:function(o,n,h){if(n!='unload'){function clean(){var ex;try{tinyMCE.removeEvent(o,n,h);tinyMCE.removeEvent(window,'unload',clean);o=n=h=null}catch(ex){}}tinyMCE.addEvent(window,'unload',clean)}if(o.attachEvent)o.attachEvent("on"+n,h);else o.addEventListener(n,h,false)},removeEvent:function(o,n,h){if(o.detachEvent)o.detachEvent("on"+n,h);else o.removeEventListener(n,h,false)},addSelectAccessibility:function(e,s,w){if(!s._isAccessible){s.onkeydown=tinyMCE.accessibleEventHandler;s.onblur=tinyMCE.accessibleEventHandler;s._isAccessible=true;s._win=w}return false},accessibleEventHandler:function(e){var elm,win=this._win;e=tinyMCE.isIE?win.event:e;elm=tinyMCE.isIE?e.srcElement:e.target;if(e.type=="blur"){if(elm.oldonchange){elm.onchange=elm.oldonchange;elm.oldonchange=null}return true}if(elm.nodeName=="SELECT"&&!elm.oldonchange){elm.oldonchange=elm.onchange;elm.onchange=null}if(e.keyCode==13||e.keyCode==32){elm.onchange=elm.oldonchange;elm.onchange();elm.oldonchange=null;tinyMCE.cancelEvent(e);return false}return true},_resetIframeHeight:function(){var ife;if(tinyMCE.isRealIE){ife=tinyMCE.selectedInstance.iframeElement;if(ife._oldHeight){ife.style.height=ife._oldHeight;ife.height=ife._oldHeight}}}});function TinyMCE_Selection(inst){this.instance=inst};TinyMCE_Selection.prototype={getSelectedHTML:function(){var inst=this.instance,e,r=this.getRng(),h;if(!r)return null;e=document.createElement("body");if(r.cloneContents)e.appendChild(r.cloneContents());else if(typeof(r.item)!='undefined'||typeof(r.htmlText)!='undefined')e.innerHTML=r.item?r.item(0).outerHTML:r.htmlText;else e.innerHTML=r.toString();h=tinyMCE._cleanupHTML(inst,inst.contentDocument,inst.settings,e,e,false,true,false);return h},getSelectedText:function(){var inst=this.instance,d,r,s,t;if(tinyMCE.isIE){d=inst.getDoc();if(d.selection.type=="Text"){r=d.selection.createRange();t=r.text}else t=''}else{s=this.getSel();if(s&&s.toString)t=s.toString();else t=''}return t},getBookmark:function(simple){var inst=this.instance,rng=this.getRng(),doc=inst.getDoc(),b=inst.getBody();var trng,sx,sy,xx=-999999999,vp=inst.getViewPort();var sp,le,s,e,nl,i,si,ei,w;sx=vp.left;sy=vp.top;if(simple)return{rng:rng,scrollX:sx,scrollY:sy};if(tinyMCE.isRealIE){if(rng.item){e=rng.item(0);nl=b.getElementsByTagName(e.nodeName);for(i=0;i<nl.length;i++){if(e==nl[i]){sp=i;break}}return{tag:e.nodeName,index:sp,scrollX:sx,scrollY:sy}}else{trng=doc.body.createTextRange();trng.moveToElementText(inst.getBody());trng.collapse(true);bp=Math.abs(trng.move('character',xx));trng=rng.duplicate();trng.collapse(true);sp=Math.abs(trng.move('character',xx));trng=rng.duplicate();trng.collapse(false);le=Math.abs(trng.move('character',xx))-sp;return{start:sp-bp,length:le,scrollX:sx,scrollY:sy}}}else{s=this.getSel();e=this.getFocusElement();if(!s)return null;if(e&&e.nodeName=='IMG'){return{start:-1,end:-1,index:sp,scrollX:sx,scrollY:sy}}if(s.anchorNode==s.focusNode&&s.anchorOffset==s.focusOffset){e=this._getPosText(b,s.anchorNode,s.focusNode);if(!e)return{scrollX:sx,scrollY:sy};return{start:e.start+s.anchorOffset,end:e.end+s.focusOffset,scrollX:sx,scrollY:sy}}else{e=this._getPosText(b,rng.startContainer,rng.endContainer);if(!e)return{scrollX:sx,scrollY:sy};return{start:e.start+rng.startOffset,end:e.end+rng.endOffset,scrollX:sx,scrollY:sy}}}return null},moveToBookmark:function(bookmark){var inst=this.instance,rng,nl,i,ex,b=inst.getBody(),sd;var doc=inst.getDoc(),win=inst.getWin(),sel=this.getSel();if(!bookmark)return false;if(tinyMCE.isSafari&&bookmark.rng){sel.setBaseAndExtent(bookmark.rng.startContainer,bookmark.rng.startOffset,bookmark.rng.endContainer,bookmark.rng.endOffset);return true}if(tinyMCE.isRealIE){if(bookmark.rng){try{bookmark.rng.select()}catch(ex){}return true}win.focus();if(bookmark.tag){rng=b.createControlRange();nl=b.getElementsByTagName(bookmark.tag);if(nl.length>bookmark.index){try{rng.addElement(nl[bookmark.index])}catch(ex){}}}else{try{if(bookmark.start<0)return true;rng=inst.getSel().createRange();rng.moveToElementText(inst.getBody());rng.collapse(true);rng.moveStart('character',bookmark.start);rng.moveEnd('character',bookmark.length)}catch(ex){return true}}rng.select();win.scrollTo(bookmark.scrollX,bookmark.scrollY);return true}if(tinyMCE.isGecko||tinyMCE.isOpera){if(!sel)return false;if(bookmark.rng){sel.removeAllRanges();sel.addRange(bookmark.rng)}if(bookmark.start!=-1&&bookmark.end!=-1){try{sd=this._getTextPos(b,bookmark.start,bookmark.end);rng=doc.createRange();rng.setStart(sd.startNode,sd.startOffset);rng.setEnd(sd.endNode,sd.endOffset);sel.removeAllRanges();sel.addRange(rng);if(!tinyMCE.isOpera)win.focus()}catch(ex){}}win.scrollTo(bookmark.scrollX,bookmark.scrollY);return true}return false},_getPosText:function(r,sn,en){var w=document.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={};while((n=w.nextNode())!=null){if(n==sn)d.start=p;if(n==en){d.end=p;return d}p+=n.nodeValue?n.nodeValue.length:0}return null},_getTextPos:function(r,sp,ep){var w=document.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={};while((n=w.nextNode())!=null){p+=n.nodeValue?n.nodeValue.length:0;if(p>=sp&&!d.startNode){d.startNode=n;d.startOffset=sp-(p-n.nodeValue.length)}if(p>=ep){d.endNode=n;d.endOffset=ep-(p-n.nodeValue.length);return d}}return null},selectNode:function(node,collapse,select_text_node,to_start){var inst=this.instance,sel,rng,nodes;if(!node)return;if(typeof(collapse)=="undefined")collapse=true;if(typeof(select_text_node)=="undefined")select_text_node=false;if(typeof(to_start)=="undefined")to_start=true;if(inst.settings.auto_resize)inst.resizeToContent();if(tinyMCE.isRealIE){rng=inst.getDoc().body.createTextRange();try{rng.moveToElementText(node);if(collapse)rng.collapse(to_start);rng.select()}catch(e){}}else{sel=this.getSel();if(!sel)return;if(tinyMCE.isSafari){sel.setBaseAndExtent(node,0,node,node.innerText.length);if(collapse){if(to_start)sel.collapseToStart();else sel.collapseToEnd()}this.scrollToNode(node);return}rng=inst.getDoc().createRange();if(select_text_node){nodes=tinyMCE.getNodeTree(node,[],3);if(nodes.length>0)rng.selectNodeContents(nodes[0]);else rng.selectNodeContents(node)}else rng.selectNode(node);if(collapse){if(!to_start&&node.nodeType==3){rng.setStart(node,node.nodeValue.length);rng.setEnd(node,node.nodeValue.length)}else rng.collapse(to_start)}sel.removeAllRanges();sel.addRange(rng)}this.scrollToNode(node);tinyMCE.selectedElement=null;if(node.nodeType==1)tinyMCE.selectedElement=node},scrollToNode:function(node){var inst=this.instance,w=inst.getWin(),vp=inst.getViewPort(),pos=tinyMCE.getAbsPosition(node),cvp,p,cwin;if(pos.absLeft<vp.left||pos.absLeft>vp.left+vp.width||pos.absTop<vp.top||pos.absTop>vp.top+(vp.height-25))w.scrollTo(pos.absLeft,pos.absTop-vp.height+25);if(inst.settings.auto_resize){cwin=inst.getContainerWin();cvp=tinyMCE.getViewPort(cwin);p=this.getAbsPosition(node);if(p.absLeft<cvp.left||p.absLeft>cvp.left+cvp.width||p.absTop<cvp.top||p.absTop>cvp.top+cvp.height)cwin.scrollTo(p.absLeft,p.absTop-cvp.height+25)}},getAbsPosition:function(n){var pos=tinyMCE.getAbsPosition(n),ipos=tinyMCE.getAbsPosition(this.instance.iframeElement);return{absLeft:ipos.absLeft+pos.absLeft,absTop:ipos.absTop+pos.absTop}},getSel:function(){var inst=this.instance;if(tinyMCE.isRealIE)return inst.getDoc().selection;return inst.contentWindow.getSelection()},getRng:function(){var s=this.getSel();if(s==null)return null;if(tinyMCE.isRealIE)return s.createRange();if(tinyMCE.isSafari&&!s.getRangeAt)return''+window.getSelection();if(s.rangeCount>0)return s.getRangeAt(0);return null},isCollapsed:function(){var r=this.getRng();if(r.item)return false;return r.boundingWidth==0||this.getSel().isCollapsed},collapse:function(b){var r=this.getRng(),s=this.getSel();if(r.select){r.collapse(b);r.select()}else{if(b)s.collapseToStart();else s.collapseToEnd()}},getFocusElement:function(){var inst=this.instance,doc,rng,sel,elm;if(tinyMCE.isRealIE){doc=inst.getDoc();rng=doc.selection.createRange();elm=rng.item?rng.item(0):rng.parentElement()}else{if(!tinyMCE.isSafari&&inst.isHidden())return inst.getBody();sel=this.getSel();rng=this.getRng();if(!sel||!rng)return null;elm=rng.commonAncestorContainer;if(!rng.collapsed){if(rng.startContainer==rng.endContainer){if(rng.startOffset-rng.endOffset<2){if(rng.startContainer.hasChildNodes())elm=rng.startContainer.childNodes[rng.startOffset]}}}elm=tinyMCE.getParentElement(elm);}return elm}};function TinyMCE_UndoRedo(inst){this.instance=inst;this.undoLevels=[];this.undoIndex=0;this.typingUndoIndex=-1;this.undoRedo=true};TinyMCE_UndoRedo.prototype={add:function(l){var b,customUndoLevels,newHTML,inst=this.instance,i,ul,ur;if(l){this.undoLevels[this.undoLevels.length]=l;return true}if(this.typingUndoIndex!=-1){this.undoIndex=this.typingUndoIndex;if(tinyMCE.typingUndoIndex!=-1)tinyMCE.undoIndex=tinyMCE.typingUndoIndex}newHTML=tinyMCE.trim(inst.getBody().innerHTML);if(this.undoLevels[this.undoIndex]&&newHTML!=this.undoLevels[this.undoIndex].content){inst.isNotDirty=false;tinyMCE.dispatchCallback(inst,'onchange_callback','onChange',inst);customUndoLevels=tinyMCE.settings.custom_undo_redo_levels;if(customUndoLevels!=-1&&this.undoLevels.length>customUndoLevels){for(i=0;i<this.undoLevels.length-1;i++)this.undoLevels[i]=this.undoLevels[i+1];this.undoLevels.length--;this.undoIndex--;}b=inst.undoBookmark;if(!b)b=inst.selection.getBookmark();this.undoIndex++;this.undoLevels[this.undoIndex]={content:newHTML,bookmark:b};ul=tinyMCE.undoLevels;for(i=tinyMCE.undoIndex+1;i<ul.length;i++){ur=ul[i].undoRedo;if(ur.undoIndex==ur.undoLevels.length-1)ur.undoIndex--;ur.undoLevels.length--}tinyMCE.undoLevels[tinyMCE.undoIndex++]=inst;tinyMCE.undoLevels.length=tinyMCE.undoIndex;this.undoLevels.length=this.undoIndex+1;return true}return false},undo:function(){var inst=this.instance;if(this.undoIndex>0){this.undoIndex--;tinyMCE.setInnerHTML(inst.getBody(),this.undoLevels[this.undoIndex].content);inst.repaint();if(inst.settings.custom_undo_redo_restore_selection)inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark)}},redo:function(){var inst=this.instance;tinyMCE.execCommand("mceEndTyping");if(this.undoIndex<(this.undoLevels.length-1)){this.undoIndex++;tinyMCE.setInnerHTML(inst.getBody(),this.undoLevels[this.undoIndex].content);inst.repaint();if(inst.settings.custom_undo_redo_restore_selection)inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark)}tinyMCE.triggerNodeChange()}};var TinyMCE_ForceParagraphs={_insertPara:function(inst,e){var doc=inst.getDoc(),sel=inst.getSel(),body=inst.getBody(),win=inst.contentWindow,rng=sel.getRangeAt(0);var rootElm=doc.documentElement,blockName="P",startNode,endNode,startBlock,endBlock;var rngBefore,rngAfter,direct,startNode,startOffset,endNode,endOffset,b=tinyMCE.isOpera?inst.selection.getBookmark():null;var paraBefore,paraAfter,startChop,endChop,contents,i;function isEmpty(para){var nodes;function isEmptyHTML(html){return html.replace(new RegExp('[ \t\r\n]+','g'),'').toLowerCase()==''}if(para.getElementsByTagName("img").length>0)return false;if(para.getElementsByTagName("table").length>0)return false;if(para.getElementsByTagName("hr").length>0)return false;nodes=tinyMCE.getNodeTree(para,[],3);for(i=0;i<nodes.length;i++){if(!isEmptyHTML(nodes[i].nodeValue))return false}return true}rngBefore=doc.createRange();rngBefore.setStart(sel.anchorNode,sel.anchorOffset);rngBefore.collapse(true);rngAfter=doc.createRange();rngAfter.setStart(sel.focusNode,sel.focusOffset);rngAfter.collapse(true);direct=rngBefore.compareBoundaryPoints(rngBefore.START_TO_END,rngAfter)<0;startNode=direct?sel.anchorNode:sel.focusNode;startOffset=direct?sel.anchorOffset:sel.focusOffset;endNode=direct?sel.focusNode:sel.anchorNode;endOffset=direct?sel.focusOffset:sel.anchorOffset;startNode=startNode.nodeName=="HTML"?doc.body:startNode;startNode=startNode.nodeName=="BODY"?startNode.firstChild:startNode;endNode=endNode.nodeName=="BODY"?endNode.firstChild:endNode;startBlock=inst.getParentBlockElement(startNode);endBlock=inst.getParentBlockElement(endNode);if(startBlock&&(startBlock.nodeName=='CAPTION'||/absolute|relative|static/gi.test(startBlock.style.position)))startBlock=null;if(endBlock&&(endBlock.nodeName=='CAPTION'||/absolute|relative|static/gi.test(endBlock.style.position)))endBlock=null;if(startBlock!=null){blockName=startBlock.nodeName;if(/(TD|TABLE|TH|CAPTION)/.test(blockName)||(blockName=="DIV"&&/left|right/gi.test(startBlock.style.cssFloat)))blockName="P"}if(tinyMCE.getParentElement(startBlock,"OL,UL",null,body)!=null)return false;if((startBlock!=null&&startBlock.nodeName=="TABLE")||(endBlock!=null&&endBlock.nodeName=="TABLE"))startBlock=endBlock=null;paraBefore=(startBlock!=null&&startBlock.nodeName==blockName)?startBlock.cloneNode(false):doc.createElement(blockName);paraAfter=(endBlock!=null&&endBlock.nodeName==blockName)?endBlock.cloneNode(false):doc.createElement(blockName);if(/^(H[1-6])$/.test(blockName))paraAfter=doc.createElement("p");startChop=startNode;endChop=endNode;node=startChop;do{if(node==body||node.nodeType==9||tinyMCE.isBlockElement(node))break;startChop=node}while((node=node.previousSibling?node.previousSibling:node.parentNode));node=endChop;do{if(node==body||node.nodeType==9||tinyMCE.isBlockElement(node))break;endChop=node}while((node=node.nextSibling?node.nextSibling:node.parentNode));if(startChop.nodeName=="TD")startChop=startChop.firstChild;if(endChop.nodeName=="TD")endChop=endChop.lastChild;if(startBlock==null){rng.deleteContents();if(!tinyMCE.isSafari)sel.removeAllRanges();if(startChop!=rootElm&&endChop!=rootElm){rngBefore=rng.cloneRange();if(startChop==body)rngBefore.setStart(startChop,0);else rngBefore.setStartBefore(startChop);paraBefore.appendChild(rngBefore.cloneContents());if(endChop.parentNode.nodeName==blockName)endChop=endChop.parentNode;rng.setEndAfter(endChop);if(endChop.nodeName!="#text"&&endChop.nodeName!="BODY")rngBefore.setEndAfter(endChop);contents=rng.cloneContents();if(contents.firstChild&&(contents.firstChild.nodeName==blockName||contents.firstChild.nodeName=="BODY"))paraAfter.innerHTML=contents.firstChild.innerHTML;else paraAfter.appendChild(contents);if(isEmpty(paraBefore))paraBefore.innerHTML="&nbsp;";if(isEmpty(paraAfter))paraAfter.innerHTML="&nbsp;";rng.deleteContents();rngAfter.deleteContents();rngBefore.deleteContents();if(tinyMCE.isOpera){paraBefore.normalize();rngBefore.insertNode(paraBefore);paraAfter.normalize();rngBefore.insertNode(paraAfter)}else{paraAfter.normalize();rngBefore.insertNode(paraAfter);paraBefore.normalize();rngBefore.insertNode(paraBefore)}}else{body.innerHTML="<"+blockName+">&nbsp;</"+blockName+"><"+blockName+">&nbsp;</"+blockName+">";paraAfter=body.childNodes[1]}inst.selection.moveToBookmark(b);inst.selection.selectNode(paraAfter,true,true);return true}if(startChop.nodeName==blockName)rngBefore.setStart(startChop,0);else rngBefore.setStartBefore(startChop);rngBefore.setEnd(startNode,startOffset);paraBefore.appendChild(rngBefore.cloneContents());rngAfter.setEndAfter(endChop);rngAfter.setStart(endNode,endOffset);contents=rngAfter.cloneContents();if(contents.firstChild&&contents.firstChild.nodeName==blockName){paraAfter.innerHTML=contents.firstChild.innerHTML}else paraAfter.appendChild(contents);if(isEmpty(paraBefore))paraBefore.innerHTML="&nbsp;";if(isEmpty(paraAfter))paraAfter.innerHTML="&nbsp;";rng=doc.createRange();if(!startChop.previousSibling&&startChop.parentNode.nodeName.toUpperCase()==blockName){rng.setStartBefore(startChop.parentNode)}else{if(rngBefore.startContainer.nodeName.toUpperCase()==blockName&&rngBefore.startOffset==0)rng.setStartBefore(rngBefore.startContainer);else rng.setStart(rngBefore.startContainer,rngBefore.startOffset)}if(!endChop.nextSibling&&endChop.parentNode.nodeName.toUpperCase()==blockName)rng.setEndAfter(endChop.parentNode);else rng.setEnd(rngAfter.endContainer,rngAfter.endOffset);rng.deleteContents();if(tinyMCE.isOpera){rng.insertNode(paraBefore);rng.insertNode(paraAfter)}else{rng.insertNode(paraAfter);rng.insertNode(paraBefore)}paraAfter.normalize();paraBefore.normalize();inst.selection.moveToBookmark(b);inst.selection.selectNode(paraAfter,true,true);return true},_handleBackSpace:function(inst){var r=inst.getRng(),sn=r.startContainer,nv,s=false;if(sn&&sn.nextSibling&&sn.nextSibling.nodeName=="BR"&&sn.parentNode.nodeName!="BODY"){nv=sn.nodeValue;if(nv!=null&&r.startOffset==nv.length)sn.nextSibling.parentNode.removeChild(sn.nextSibling)}if(inst.settings.auto_resize)inst.resizeToContent();return s}};function TinyMCE_Layer(id,bm){this.id=id;this.blockerElement=null;this.events=false;this.element=null;this.blockMode=typeof(bm)!='undefined'?bm:true;this.doc=document};TinyMCE_Layer.prototype={moveRelativeTo:function(re,p){var rep=this.getAbsPosition(re),e=this.getElement(),x,y;var w=parseInt(re.offsetWidth),h=parseInt(re.offsetHeight);var ew=parseInt(e.offsetWidth),eh=parseInt(e.offsetHeight);switch(p){case"tl":x=rep.absLeft;y=rep.absTop;break;case"tr":x=rep.absLeft+w;y=rep.absTop;break;case"bl":x=rep.absLeft;y=rep.absTop+h;break;case"br":x=rep.absLeft+w;y=rep.absTop+h;break;case"cc":x=rep.absLeft+(w/ 2) - (ew /2);y=rep.absTop+(h/ 2) - (eh /2);break}this.moveTo(x,y)},moveBy:function(x,y){var e=this.getElement();this.moveTo(parseInt(e.style.left)+x,parseInt(e.style.top)+y)},moveTo:function(x,y){var e=this.getElement();e.style.left=x+"px";e.style.top=y+"px";this.updateBlocker()},resizeBy:function(w,h){var e=this.getElement();this.resizeTo(parseInt(e.style.width)+w,parseInt(e.style.height)+h)},resizeTo:function(w,h){var e=this.getElement();if(w!=null)e.style.width=w+"px";if(h!=null)e.style.height=h+"px";this.updateBlocker()},show:function(){var el=this.getElement();if(el){el.style.display='block';this.updateBlocker()}},hide:function(){var el=this.getElement();if(el){el.style.display='none';this.updateBlocker()}},isVisible:function(){return this.getElement().style.display=='block'},getElement:function(){if(!this.element)this.element=this.doc.getElementById(this.id);return this.element},setBlockMode:function(s){this.blockMode=s},updateBlocker:function(){var e,b,x,y,w,h;b=this.getBlocker();if(b){if(this.blockMode){e=this.getElement();x=this.parseInt(e.style.left);y=this.parseInt(e.style.top);w=this.parseInt(e.offsetWidth);h=this.parseInt(e.offsetHeight);b.style.left=x+'px';b.style.top=y+'px';b.style.width=w+'px';b.style.height=h+'px';b.style.display=e.style.display}else b.style.display='none'}},getBlocker:function(){var d,b;if(!this.blockerElement&&this.blockMode){d=this.doc;b=d.getElementById(this.id+"_blocker");if(!b){b=d.createElement("iframe");b.setAttribute('id',this.id+"_blocker");b.style.cssText='display: none; position: absolute; left: 0; top: 0';b.src='javascript:false;';b.frameBorder='0';b.scrolling='no';d.body.appendChild(b)}this.blockerElement=b}return this.blockerElement},getAbsPosition:function(n){var p={absLeft:0,absTop:0};while(n){p.absLeft+=n.offsetLeft;p.absTop+=n.offsetTop;n=n.offsetParent}return p},create:function(n,c,p,h){var d=this.doc,e=d.createElement(n);e.setAttribute('id',this.id);if(c)e.className=c;if(!p)p=d.body;if(h)e.innerHTML=h;p.appendChild(e);return this.element=e},exists:function(){return this.doc.getElementById(this.id)!=null},parseInt:function(s){if(s==null||s=='')return 0;return parseInt(s)},remove:function(){var e=this.getElement(),b=this.getBlocker();if(e)e.parentNode.removeChild(e);if(b)b.parentNode.removeChild(b)}};function TinyMCE_Menu(){var id;if(typeof(tinyMCE.menuCounter)=="undefined")tinyMCE.menuCounter=0;id="mc_menu_"+tinyMCE.menuCounter++;TinyMCE_Layer.call(this,id,true);this.id=id;this.items=[];this.needsUpdate=true};TinyMCE_Menu.prototype=tinyMCE.extend(TinyMCE_Layer.prototype,{init:function(s){var n;this.settings={separator_class:'mceMenuSeparator',title_class:'mceMenuTitle',disabled_class:'mceMenuDisabled',menu_class:'mceMenu',drop_menu:true};for(n in s)this.settings[n]=s[n];this.create('div',this.settings.menu_class)},clear:function(){this.items=[]},addTitle:function(t){this.add({type:'title',text:t})},addDisabled:function(t){this.add({type:'disabled',text:t})},addSeparator:function(){this.add({type:'separator'})},addItem:function(t,js){this.add({text:t,js:js})},add:function(mi){this.items[this.items.length]=mi;this.needsUpdate=true},update:function(){var e=this.getElement(),h='',i,t,m=this.items,s=this.settings;if(this.settings.drop_menu)h+='<span class="mceMenuLine"></span>';h+='<table border="0" cellpadding="0" cellspacing="0">';for(i=0;i<m.length;i++){t=tinyMCE.xmlEncode(m[i].text);c=m[i].class_name?' class="'+m[i].class_name+'"':'';switch(m[i].type){case'separator':h+='<tr class="'+s.separator_class+'"><td>';break;case'title':h+='<tr class="'+s.title_class+'"><td><span'+c+'>'+t+'</span>';break;case'disabled':h+='<tr class="'+s.disabled_class+'"><td><span'+c+'>'+t+'</span>';break;default:h+='<tr><td><a href="'+tinyMCE.xmlEncode(m[i].js)+'" onmousedown="'+tinyMCE.xmlEncode(m[i].js)+';return tinyMCE.cancelEvent(event);" onclick="return tinyMCE.cancelEvent(event);" onmouseup="return tinyMCE.cancelEvent(event);"><span'+c+'>'+t+'</span></a>'}h+='</td></tr>'}h+='</table>';e.innerHTML=h;this.needsUpdate=false;this.updateBlocker()},show:function(){var nl,i;if(tinyMCE.lastMenu==this)return;if(this.needsUpdate)this.update();if(tinyMCE.lastMenu&&tinyMCE.lastMenu!=this)tinyMCE.lastMenu.hide();TinyMCE_Layer.prototype.show.call(this);if(!tinyMCE.isOpera){}tinyMCE.lastMenu=this}});tinyMCE.add(TinyMCE_Engine,{debug:function(){var m="",a,i,l=tinyMCE.log.length;for(i=0,a=this.debug.arguments;i<a.length;i++){m+=a[i];if(i<a.length-1)m+=', '}if(l<1000)tinyMCE.log[l]="[debug] "+m}});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/langs/fr.js
New file
0,0 → 1,42
// FR lang variables
// Modified by Motte, last updated 2006-03-23
 
tinyMCE.addToLang('',{
bold_desc : 'Gras',
italic_desc : 'Italique',
underline_desc : 'Soulign&eacute;',
striketrough_desc : 'Barr&eacute;',
justifyleft_desc : 'Aligner &agrave; gauche',
justifycenter_desc : 'Centrer',
justifyright_desc : 'Aligner &agrave; droite',
justifyfull_desc : 'Justifier',
bullist_desc : 'Liste &agrave; puces',
numlist_desc : 'Liste num&eacute;rot&eacute;e',
outdent_desc : 'Diminuer le retrait',
indent_desc : 'Augmenter le retrait',
undo_desc : 'Annuler',
redo_desc : 'Restaurer',
link_desc : 'Ins&eacute;rer/Modifier un lien',
unlink_desc : 'Supprimer le lien',
image_desc : 'Ins&eacute;rer/Modifier une image',
cleanup_desc : 'Nettoyer le code',
focus_alert : 'Une instance de l\&eacute;diteur doit avoir le focus avant d\'utiliser cette commande.',
edit_confirm : 'Voulez-vous utiliser le mode WYSIWYG pour cette zone d\'&eacute;dition de texte ?',
insert_link_title : 'Gestionnaire d\'hyperlien',
insert : 'Ins&eacute;rer',
update : 'Appliquer',
cancel : 'Annuler',
insert_link_url : 'Lien URL',
insert_link_target : 'Cible',
insert_link_target_same : 'Ouvrir dans la m&ecirc;me fen&ecirc;tre',
insert_link_target_blank : 'Ouvrir dans une nouvelle fen&ecirc;tre',
insert_image_title : 'Gestionnaire d\'image',
insert_image_src : 'URL de l\'image',
insert_image_alt : 'Equivalent textuel',
help_desc : 'Aide',
bold_img : "bold_fr.gif",
italic_img : "italic.gif",
underline_img : "underline_fr.gif",
clipboard_msg : 'Pour des raisons de s&eacute;curit&eacute;, les fonctions « Copier », « Couper » et « Coller »\nne sont pas disponibles dans Mozilla et Firefox.\n\n\nVoulez-vous plus d\'information &agrave; ce sujet?\n',
popup_blocked : 'D&eacute;sol&eacute;, mais votre bloqueur de pop-up emp&ecirc;che le fonctionnement normal de l\'application.\n\n\nPour utiliser cet outil, veuillez r&eacute;gler votre navigateur pour qu\'il accepte les pop-up de ce site.'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/langs/readme.txt
New file
0,0 → 1,9
Beginning with version 2.0.5 the language packs are no
longer included with the core distribution.
Language packs can be downloaded from the TinyMCE website:
http://tinymce.moxiecode.com/download.php
 
The language pack codes are based on ISO-639-1:
http://www.loc.gov/standards/iso639-2/englangn.html
 
Plrease try using entities if possible. Like &aring; etc for non a-z characters.
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/langs/en.js
New file
0,0 → 1,41
// UK lang variables
 
tinyMCE.addToLang('',{
bold_desc : 'Bold (Ctrl+B)',
italic_desc : 'Italic (Ctrl+I)',
underline_desc : 'Underline (Ctrl+U)',
striketrough_desc : 'Strikethrough',
justifyleft_desc : 'Align left',
justifycenter_desc : 'Align center',
justifyright_desc : 'Align right',
justifyfull_desc : 'Align full',
bullist_desc : 'Unordered list',
numlist_desc : 'Ordered list',
outdent_desc : 'Outdent',
indent_desc : 'Indent',
undo_desc : 'Undo (Ctrl+Z)',
redo_desc : 'Redo (Ctrl+Y)',
link_desc : 'Insert/edit link',
unlink_desc : 'Unlink',
image_desc : 'Insert/edit image',
cleanup_desc : 'Cleanup messy code',
focus_alert : 'A editor instance must be focused before using this command.',
edit_confirm : 'Do you want to use the WYSIWYG mode for this textarea?',
insert_link_title : 'Insert/edit link',
insert : 'Insert',
update : 'Update',
cancel : 'Cancel',
insert_link_url : 'Link URL',
insert_link_target : 'Target',
insert_link_target_same : 'Open link in the same window',
insert_link_target_blank : 'Open link in a new window',
insert_image_title : 'Insert/edit image',
insert_image_src : 'Image URL',
insert_image_alt : 'Image description',
help_desc : 'Help',
bold_img : "bold.gif",
italic_img : "italic.gif",
underline_img : "underline.gif",
clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/editor_template.js
New file
0,0 → 1,0
tinyMCE.importThemeLanguagePack('advanced');var TinyMCE_AdvancedTheme={_defColors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",_autoImportCSSClasses:true,_resizer:{},_buttons:[['bold','{$lang_bold_img}','lang_bold_desc','Bold'],['italic','{$lang_italic_img}','lang_italic_desc','Italic'],['underline','{$lang_underline_img}','lang_underline_desc','Underline'],['strikethrough','strikethrough.gif','lang_striketrough_desc','Strikethrough'],['justifyleft','justifyleft.gif','lang_justifyleft_desc','JustifyLeft'],['justifycenter','justifycenter.gif','lang_justifycenter_desc','JustifyCenter'],['justifyright','justifyright.gif','lang_justifyright_desc','JustifyRight'],['justifyfull','justifyfull.gif','lang_justifyfull_desc','JustifyFull'],['bullist','bullist.gif','lang_bullist_desc','InsertUnorderedList'],['numlist','numlist.gif','lang_numlist_desc','InsertOrderedList'],['outdent','outdent.gif','lang_outdent_desc','Outdent'],['indent','indent.gif','lang_indent_desc','Indent'],['cut','cut.gif','lang_cut_desc','Cut'],['copy','copy.gif','lang_copy_desc','Copy'],['paste','paste.gif','lang_paste_desc','Paste'],['undo','undo.gif','lang_undo_desc','Undo'],['redo','redo.gif','lang_redo_desc','Redo'],['link','link.gif','lang_link_desc','mceLink',true],['unlink','unlink.gif','lang_unlink_desc','unlink'],['image','image.gif','lang_image_desc','mceImage',true],['cleanup','cleanup.gif','lang_cleanup_desc','mceCleanup'],['help','help.gif','lang_help_desc','mceHelp'],['code','code.gif','lang_theme_code_desc','mceCodeEditor'],['hr','hr.gif','lang_theme_hr_desc','inserthorizontalrule'],['removeformat','removeformat.gif','lang_theme_removeformat_desc','removeformat'],['sub','sub.gif','lang_theme_sub_desc','subscript'],['sup','sup.gif','lang_theme_sup_desc','superscript'],['forecolor','forecolor.gif','lang_theme_forecolor_desc','forecolor',true],['forecolorpicker','forecolor.gif','lang_theme_forecolor_desc','forecolorpicker',true],['backcolor','backcolor.gif','lang_theme_backcolor_desc','HiliteColor',true],['backcolorpicker','backcolor.gif','lang_theme_backcolor_desc','backcolorpicker',true],['charmap','charmap.gif','lang_theme_charmap_desc','mceCharMap'],['visualaid','visualaid.gif','lang_theme_visualaid_desc','mceToggleVisualAid'],['anchor','anchor.gif','lang_theme_anchor_desc','mceInsertAnchor'],['newdocument','newdocument.gif','lang_newdocument_desc','mceNewDocument']],_buttonMap:'anchor,backcolor,bold,bullist,charmap,cleanup,code,copy,cut,forecolor,help,hr,image,indent,italic,justifycenter,justifyfull,justifyleft,justifyright,link,newdocument,numlist,outdent,paste,redo,removeformat,strikethrough,sub,sup,underline,undo,unlink,visualaid,advhr,ltr,rtl,emotions,flash,fullpage,fullscreen,iespell,insertdate,inserttime,pastetext,pasteword,selectall,preview,print,save,replace,search,table,cell_props,delete_col,delete_row,col_after,col_before,row_after,row_before,merge_cells,row_props,split_cells,delete_table',getControlHTML:function(button_name){var i,x,but;for(i=0;i<TinyMCE_AdvancedTheme._buttons.length;i++){but=TinyMCE_AdvancedTheme._buttons[i];if(but[0]==button_name&&(button_name=="forecolor"||button_name=="backcolor"))return tinyMCE.getMenuButtonHTML(but[0],but[2],'{$themeurl}/images/'+but[1],but[3]+"Menu",but[3],(but.length>4?but[4]:false),(but.length>5?but[5]:null));if(but[0]==button_name)return tinyMCE.getButtonHTML(but[0],but[2],'{$themeurl}/images/'+but[1],but[3],(but.length>4?but[4]:false),(but.length>5?but[5]:null))}switch(button_name){case"formatselect":var html='<select id="{$editor_id}_formatSelect" name="{$editor_id}_formatSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FormatBlock\',false,this.options[this.selectedIndex].value);" class="mceSelectList">';var formats=tinyMCE.getParam("theme_advanced_blockformats","p,address,pre,h1,h2,h3,h4,h5,h6",true).split(',');var lookup=[['p','{$lang_theme_paragraph}'],['address','{$lang_theme_address}'],['pre','{$lang_theme_pre}'],['h1','{$lang_theme_h1}'],['h2','{$lang_theme_h2}'],['h3','{$lang_theme_h3}'],['h4','{$lang_theme_h4}'],['h5','{$lang_theme_h5}'],['h6','{$lang_theme_h6}'],['div','{$lang_theme_div}'],['blockquote','{$lang_theme_blockquote}'],['code','{$lang_theme_code}'],['dt','{$lang_theme_dt}'],['dd','{$lang_theme_dd}'],['samp','{$lang_theme_samp}']];html+='<option value="">{$lang_theme_block}</option>';for(var i=0;i<formats.length;i++){for(var x=0;x<lookup.length;x++){if(formats[i]==lookup[x][0])html+='<option value="&lt;'+lookup[x][0]+'&gt;">'+lookup[x][1]+'</option>'}}html+='</select>';return html;case"styleselect":return'<select id="{$editor_id}_styleSelect" onmousedown="tinyMCE.themes.advanced._setupCSSClasses(\'{$editor_id}\');" name="{$editor_id}_styleSelect" onfocus="tinyMCE.addSelectAccessibility(event,this,window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSetCSSClass\',false,this.options[this.selectedIndex].value);" class="mceSelectList">{$style_select_options}</select>';case"fontselect":var fontHTML='<select id="{$editor_id}_fontNameSelect" name="{$editor_id}_fontNameSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontName\',false,this.options[this.selectedIndex].value);" class="mceSelectList"><option value="">{$lang_theme_fontdefault}</option>';var iFonts='Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings';var nFonts='Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats';var fonts=tinyMCE.getParam("theme_advanced_fonts",nFonts).split(';');for(i=0;i<fonts.length;i++){if(fonts[i]!=''){var parts=fonts[i].split('=');fontHTML+='<option value="'+parts[1]+'">'+parts[0]+'</option>'}}fontHTML+='</select>';return fontHTML;case"fontsizeselect":return'<select id="{$editor_id}_fontSizeSelect" name="{$editor_id}_fontSizeSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontSize\',false,this.options[this.selectedIndex].value);" class="mceSelectList">'+'<option value="0">{$lang_theme_font_size}</option>'+'<option value="1">1 (8 pt)</option>'+'<option value="2">2 (10 pt)</option>'+'<option value="3">3 (12 pt)</option>'+'<option value="4">4 (14 pt)</option>'+'<option value="5">5 (18 pt)</option>'+'<option value="6">6 (24 pt)</option>'+'<option value="7">7 (36 pt)</option>'+'</select>';case"|":case"separator":return'<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" alt="" />';case"spacer":return'<img src="{$themeurl}/images/separator.gif" width="2" height="15" border="0" class="mceSeparatorLine" style="vertical-align: middle" alt="" />';case"rowseparator":return'<br />'}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case'mceHelp':tinyMCE.openWindow({file:'about.htm',width:480,height:380},{tinymce_version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion,tinymce_releasedate:tinyMCE.releaseDate,inline:"yes"});return true;case"mceLink":var inst=tinyMCE.getInstanceById(editor_id);var doc=inst.getDoc();var selectedText="";if(tinyMCE.isMSIE){var rng=doc.selection.createRange();selectedText=rng.text}else selectedText=inst.getSel().toString();if(!tinyMCE.linkElement){if((tinyMCE.selectedElement.nodeName.toLowerCase()!="img")&&(selectedText.length<=0))return true}var href="",target="",title="",onclick="",action="insert",style_class="";if(tinyMCE.selectedElement.nodeName.toLowerCase()=="a")tinyMCE.linkElement=tinyMCE.selectedElement;if(tinyMCE.linkElement!=null&&tinyMCE.getAttrib(tinyMCE.linkElement,'href')=="")tinyMCE.linkElement=null;if(tinyMCE.linkElement){href=tinyMCE.getAttrib(tinyMCE.linkElement,'href');target=tinyMCE.getAttrib(tinyMCE.linkElement,'target');title=tinyMCE.getAttrib(tinyMCE.linkElement,'title');onclick=tinyMCE.getAttrib(tinyMCE.linkElement,'onclick');style_class=tinyMCE.getAttrib(tinyMCE.linkElement,'class');if(onclick=="")onclick=tinyMCE.getAttrib(tinyMCE.linkElement,'onclick');onclick=tinyMCE.cleanupEventStr(onclick);href=eval(tinyMCE.settings['urlconverter_callback']+"(href, tinyMCE.linkElement, true);");mceRealHref=tinyMCE.getAttrib(tinyMCE.linkElement,'mce_href');if(mceRealHref!=""){href=mceRealHref;if(tinyMCE.getParam('convert_urls'))href=eval(tinyMCE.settings['urlconverter_callback']+"(href, tinyMCE.linkElement, true);")}action="update"}var template=new Array();template['file']='link.htm';template['width']=310;template['height']=200;template['width']+=tinyMCE.getLang('lang_insert_link_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_link_delta_height',0);if(inst.settings['insertlink_callback']){var returnVal=eval(inst.settings['insertlink_callback']+"(href, target, title, onclick, action, style_class);");if(returnVal&&returnVal['href'])TinyMCE_AdvancedTheme._insertLink(returnVal['href'],returnVal['target'],returnVal['title'],returnVal['onclick'],returnVal['style_class'])}else{tinyMCE.openWindow(template,{href:href,target:target,title:title,onclick:onclick,action:action,className:style_class,inline:"yes"})}return true;case"mceImage":var src="",alt="",border="",hspace="",vspace="",width="",height="",align="";var title="",onmouseover="",onmouseout="",action="insert";var img=tinyMCE.imgElement;var inst=tinyMCE.getInstanceById(editor_id);if(tinyMCE.selectedElement!=null&&tinyMCE.selectedElement.nodeName.toLowerCase()=="img"){img=tinyMCE.selectedElement;tinyMCE.imgElement=img}if(img){if(tinyMCE.getAttrib(img,'name').indexOf('mce_')==0)return true;src=tinyMCE.getAttrib(img,'src');alt=tinyMCE.getAttrib(img,'alt');if(alt=="")alt=tinyMCE.getAttrib(img,'title');if(tinyMCE.isGecko){var w=img.style.width;if(w!=null&&w!="")img.setAttribute("width",w);var h=img.style.height;if(h!=null&&h!="")img.setAttribute("height",h)}border=tinyMCE.getAttrib(img,'border');hspace=tinyMCE.getAttrib(img,'hspace');vspace=tinyMCE.getAttrib(img,'vspace');width=tinyMCE.getAttrib(img,'width');height=tinyMCE.getAttrib(img,'height');align=tinyMCE.getAttrib(img,'align');onmouseover=tinyMCE.getAttrib(img,'onmouseover');onmouseout=tinyMCE.getAttrib(img,'onmouseout');title=tinyMCE.getAttrib(img,'title');if(tinyMCE.isMSIE){width=img.attributes['width'].specified?width:"";height=img.attributes['height'].specified?height:""}src=eval(tinyMCE.settings['urlconverter_callback']+"(src, img, true);");mceRealSrc=tinyMCE.getAttrib(img,'mce_src');if(mceRealSrc!=""){src=mceRealSrc;if(tinyMCE.getParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callback']+"(src, img, true);")}action="update"}var template=new Array();template['file']='image.htm?src={$src}';template['width']=355;template['height']=265+(tinyMCE.isMSIE?25:0);template['width']+=tinyMCE.getLang('lang_insert_image_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_image_delta_height',0);if(inst.settings['insertimage_callback']){var returnVal=eval(inst.settings['insertimage_callback']+"(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout, action);");if(returnVal&&returnVal['src'])TinyMCE_AdvancedTheme._insertImage(returnVal['src'],returnVal['alt'],returnVal['border'],returnVal['hspace'],returnVal['vspace'],returnVal['width'],returnVal['height'],returnVal['align'],returnVal['title'],returnVal['onmouseover'],returnVal['onmouseout'])}else tinyMCE.openWindow(template,{src:src,alt:alt,border:border,hspace:hspace,vspace:vspace,width:width,height:height,align:align,title:title,onmouseover:onmouseover,onmouseout:onmouseout,action:action,inline:"yes"});return true;case"forecolor":var fcp=new TinyMCE_Layer(editor_id+'_fcPreview',false),p,img,elm;TinyMCE_AdvancedTheme._hideMenus(editor_id);if(!fcp.exists()){fcp.create('div','mceColorPreview',document.getElementById(editor_id+'_toolbar'));elm=fcp.getElement();elm._editor_id=editor_id;elm._command="forecolor";elm._switchId=editor_id+"_forecolor";tinyMCE.addEvent(elm,'click',TinyMCE_AdvancedTheme._handleMenuEvent);tinyMCE.addEvent(elm,'mouseover',TinyMCE_AdvancedTheme._handleMenuEvent);tinyMCE.addEvent(elm,'mouseout',TinyMCE_AdvancedTheme._handleMenuEvent)}img=tinyMCE.selectNodes(document.getElementById(editor_id+"_forecolor"),function(n){return n.nodeName=="IMG"})[0];p=tinyMCE.getAbsPosition(img,document.getElementById(editor_id+'_toolbar'));fcp.moveTo(p.absLeft,p.absTop);fcp.getElement().style.backgroundColor=value!=null?value:tinyMCE.getInstanceById(editor_id).foreColor;fcp.show();return false;case"forecolorpicker":this._pickColor(editor_id,'forecolor');return true;case"forecolorMenu":TinyMCE_AdvancedTheme._hideMenus(editor_id);var ml=new TinyMCE_Layer(editor_id+'_fcMenu');if(!ml.exists())ml.create('div','mceMenu',document.body,TinyMCE_AdvancedTheme._getColorHTML(editor_id,'theme_advanced_text_colors','forecolor'));tinyMCE.switchClass(editor_id+'_forecolor','mceMenuButtonFocus');ml.moveRelativeTo(document.getElementById(editor_id+"_forecolor"),'bl');ml.moveBy(tinyMCE.isMSIE&&!tinyMCE.isOpera?-1:1,-1);if(tinyMCE.isOpera)ml.moveBy(0,-2);ml.show();return true;case"HiliteColor":var bcp=new TinyMCE_Layer(editor_id+'_bcPreview',false),p,img;TinyMCE_AdvancedTheme._hideMenus(editor_id);if(!bcp.exists()){bcp.create('div','mceColorPreview',document.getElementById(editor_id+'_toolbar'));elm=bcp.getElement();elm._editor_id=editor_id;elm._command="HiliteColor";elm._switchId=editor_id+"_backcolor";tinyMCE.addEvent(elm,'click',TinyMCE_AdvancedTheme._handleMenuEvent);tinyMCE.addEvent(elm,'mouseover',TinyMCE_AdvancedTheme._handleMenuEvent);tinyMCE.addEvent(elm,'mouseout',TinyMCE_AdvancedTheme._handleMenuEvent)}img=tinyMCE.selectNodes(document.getElementById(editor_id+"_backcolor"),function(n){return n.nodeName=="IMG"})[0];p=tinyMCE.getAbsPosition(img,document.getElementById(editor_id+'_toolbar'));bcp.moveTo(p.absLeft,p.absTop);bcp.getElement().style.backgroundColor=value!=null?value:tinyMCE.getInstanceById(editor_id).backColor;bcp.show();return false;case"HiliteColorMenu":TinyMCE_AdvancedTheme._hideMenus(editor_id);var ml=new TinyMCE_Layer(editor_id+'_bcMenu');if(!ml.exists())ml.create('div','mceMenu',document.body,TinyMCE_AdvancedTheme._getColorHTML(editor_id,'theme_advanced_background_colors','HiliteColor'));tinyMCE.switchClass(editor_id+'_backcolor','mceMenuButtonFocus');ml.moveRelativeTo(document.getElementById(editor_id+"_backcolor"),'bl');ml.moveBy(tinyMCE.isMSIE&&!tinyMCE.isOpera?-1:1,-1);if(tinyMCE.isOpera)ml.moveBy(0,-2);ml.show();return true;case"backcolorpicker":this._pickColor(editor_id,'HiliteColor');return true;case"mceColorPicker":if(user_interface){var template=[];if(!value['callback']&&!value['color'])value['color']=value['document'].getElementById(value['element_id']).value;template['file']='color_picker.htm';template['width']=380;template['height']=250;template['close_previous']="no";template['width']+=tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_height',0);if(typeof(value['store_selection'])=="undefined")value['store_selection']=true;tinyMCE.lastColorPickerValue=value;tinyMCE.openWindow(template,{editor_id:editor_id,mce_store_selection:value['store_selection'],inline:"yes",command:"mceColorPicker",input_color:value['color']})}else{var savedVal=tinyMCE.lastColorPickerValue,elm;if(savedVal['callback']){savedVal['callback'](value);return true}elm=savedVal['document'].getElementById(savedVal['element_id']);elm.value=value;if(elm.onchange!=null&&elm.onchange!='')eval('elm.onchange();')}return true;case"mceCodeEditor":var template=new Array();template['file']='source_editor.htm';template['width']=parseInt(tinyMCE.getParam("theme_advanced_source_editor_width",720));template['height']=parseInt(tinyMCE.getParam("theme_advanced_source_editor_height",580));tinyMCE.openWindow(template,{editor_id:editor_id,resizable:"yes",scrollbars:"no",inline:"yes"});return true;case"mceCharMap":var template=new Array();template['file']='charmap.htm';template['width']=550+(tinyMCE.isOpera?40:0);template['height']=250;template['width']+=tinyMCE.getLang('lang_theme_advanced_charmap_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_charmap_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;case"mceInsertAnchor":var template=new Array();template['file']='anchor.htm';template['width']=320;template['height']=90+(tinyMCE.isNS7?30:0);template['width']+=tinyMCE.getLang('lang_theme_advanced_anchor_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_anchor_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;case"mceNewDocument":if(confirm(tinyMCE.entityDecode(tinyMCE.getLang('lang_newdocument'))))tinyMCE.execInstanceCommand(editor_id,'mceSetContent',false,' ');return true}return false},getEditorTemplate:function(settings,editorId){function removeFromArray(in_array,remove_array){var outArray=new Array(),skip;for(var i=0;i<in_array.length;i++){skip=false;for(var j=0;j<remove_array.length;j++){if(in_array[i]==remove_array[j]){skip=true}}if(!skip){outArray[outArray.length]=in_array[i]}}return outArray}function addToArray(in_array,add_array){for(var i=0;i<add_array.length;i++){in_array[in_array.length]=add_array[i]}return in_array}var template=new Array();var deltaHeight=0;var resizing=tinyMCE.getParam("theme_advanced_resizing",false);var path=tinyMCE.getParam("theme_advanced_path",true);var statusbarHTML='<div id="{$editor_id}_path" class="mceStatusbarPathText" style="display: '+(path?"block":"none")+'">&#160;</div><div id="{$editor_id}_resize" class="mceStatusbarResize" style="display: '+(resizing?"block":"none")+'" onmousedown="tinyMCE.themes.advanced._setResizing(event,\'{$editor_id}\',true);"></div><br style="clear: both" />';var layoutManager=tinyMCE.getParam("theme_advanced_layout_manager","SimpleLayout");var styleSelectHTML='<option value="">{$lang_theme_style_select}</option>';if(settings['theme_advanced_styles']){var stylesAr=settings['theme_advanced_styles'].split(';');for(var i=0;i<stylesAr.length;i++){var key,value;key=stylesAr[i].split('=')[0];value=stylesAr[i].split('=')[1];styleSelectHTML+='<option value="'+value+'">'+key+'</option>'}TinyMCE_AdvancedTheme._autoImportCSSClasses=false}switch(layoutManager){case"SimpleLayout":var toolbarHTML="";var toolbarLocation=tinyMCE.getParam("theme_advanced_toolbar_location","bottom");var toolbarAlign=tinyMCE.getParam("theme_advanced_toolbar_align","center");var pathLocation=tinyMCE.getParam("theme_advanced_path_location","none");var statusbarLocation=tinyMCE.getParam("theme_advanced_statusbar_location",pathLocation);var defVals={theme_advanced_buttons1:"bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,separator,sub,sup,separator,charmap"};toolbarHTML+='<a href="#" accesskey="q" title="'+tinyMCE.getLang("lang_toolbar_focus")+'"';if(!tinyMCE.getParam("accessibility_focus"))toolbarHTML+=' onfocus="tinyMCE.getInstanceById(\''+editorId+'\').getWin().focus();"';toolbarHTML+='></a>';for(var i=1;i<100;i++){var def=defVals["theme_advanced_buttons"+i];var buttons=tinyMCE.getParam("theme_advanced_buttons"+i,def==null?'':def,true,',');if(buttons.length==0)break;buttons=removeFromArray(buttons,tinyMCE.getParam("theme_advanced_disable","",true,','));buttons=addToArray(buttons,tinyMCE.getParam("theme_advanced_buttons"+i+"_add","",true,','));buttons=addToArray(tinyMCE.getParam("theme_advanced_buttons"+i+"_add_before","",true,','),buttons);for(var b=0;b<buttons.length;b++)toolbarHTML+=tinyMCE.getControlHTML(buttons[b]);if(buttons.length>0){toolbarHTML+="<br />";deltaHeight-=23}}toolbarHTML+='<a href="#" accesskey="z" onfocus="tinyMCE.getInstanceById(\''+editorId+'\').getWin().focus();"></a>';template['html']='<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width_style};height:{$height_style}"><tbody>';if(toolbarLocation=="top")template['html']+='<tr><td dir="ltr" class="mceToolbarTop" align="'+toolbarAlign+'" height="1" nowrap="nowrap"><span id="'+editorId+'_toolbar" class="mceToolbarContainer">'+toolbarHTML+'</span></td></tr>';if(statusbarLocation=="top"){template['html']+='<tr><td class="mceStatusbarTop" height="1">'+statusbarHTML+'</td></tr>';deltaHeight-=23}template['html']+='<tr><td align="center"><span id="{$editor_id}"></span></td></tr>';if(toolbarLocation=="bottom")template['html']+='<tr><td dir="ltr" class="mceToolbarBottom" align="'+toolbarAlign+'" height="1"><span id="'+editorId+'_toolbar" class="mceToolbarContainer">'+toolbarHTML+'</span></td></tr>';if(toolbarLocation=="external"){var bod=document.body;var elm=document.createElement("div");toolbarHTML=tinyMCE.replaceVar(toolbarHTML,'style_select_options',styleSelectHTML);toolbarHTML=tinyMCE.applyTemplate(toolbarHTML,{editor_id:editorId});elm.className="mceToolbarExternal";elm.id=editorId+"_toolbar";elm.innerHTML='<table width="100%" border="0" align="center"><tr><td align="center">'+toolbarHTML+'</td></tr></table>';bod.appendChild(elm);deltaHeight=0;tinyMCE.getInstanceById(editorId).toolbarElement=elm;}else{tinyMCE.getInstanceById(editorId).toolbarElement=null}if(statusbarLocation=="bottom"){template['html']+='<tr><td class="mceStatusbarBottom" height="1">'+statusbarHTML+'</td></tr>';deltaHeight-=23}template['html']+='</tbody></table>';break;case"RowLayout":template['html']='<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width}px;height:{$height}px"><tbody>';var containers=tinyMCE.getParam("theme_advanced_containers","",true,",");var defaultContainerCSS=tinyMCE.getParam("theme_advanced_containers_default_class","container");var defaultContainerAlign=tinyMCE.getParam("theme_advanced_containers_default_align","center");for(var i=0;i<containers.length;i++){if(containers[i]=="mceEditor")template['html']+='<tr><td align="center" class="mceEditor_border"><span id="{$editor_id}"></span></td></tr>';else if(containers[i]=="mceElementpath"||containers[i]=="mceStatusbar"){var pathClass="mceStatusbar";if(i==containers.length-1){pathClass="mceStatusbarBottom"}else if(i==0){pathClass="mceStatusbar"}else{deltaHeight-=2}template['html']+='<tr><td class="'+pathClass+'" height="1">'+statusbarHTML+'</td></tr>';deltaHeight-=22}else{var curContainer=tinyMCE.getParam("theme_advanced_container_"+containers[i],"",true,',');var curContainerHTML="";var curAlign=tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_align",defaultContainerAlign);var curCSS=tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_class",defaultContainerCSS);curContainer=removeFromArray(curContainer,tinyMCE.getParam("theme_advanced_disable","",true,','));for(var j=0;j<curContainer.length;j++)curContainerHTML+=tinyMCE.getControlHTML(curContainer[j]);if(curContainer.length>0){curContainerHTML+="<br />";deltaHeight-=23}template['html']+='<tr><td class="'+curCSS+'" align="'+curAlign+'" height="1">'+curContainerHTML+'</td></tr>'}}template['html']+='</tbody></table>';break;case"CustomLayout":var customLayout=tinyMCE.getParam("theme_advanced_custom_layout","");if(customLayout!=""&&eval("typeof("+customLayout+")")!="undefined"){template=eval(customLayout+"(template);")}break}if(resizing)template['html']+='<span id="{$editor_id}_resize_box" class="mceResizeBox"></span>';template['html']=tinyMCE.replaceVar(template['html'],'style_select_options',styleSelectHTML);if(!template['delta_width'])template['delta_width']=0;if(!template['delta_height'])template['delta_height']=deltaHeight;return template},initInstance:function(inst){if(tinyMCE.getParam("theme_advanced_resizing",false)){if(tinyMCE.getParam("theme_advanced_resizing_use_cookie",true)){var w=TinyMCE_AdvancedTheme._getCookie("TinyMCE_"+inst.editorId+"_width");var h=TinyMCE_AdvancedTheme._getCookie("TinyMCE_"+inst.editorId+"_height");TinyMCE_AdvancedTheme._resizeTo(inst,w,h,tinyMCE.getParam("theme_advanced_resize_horizontal",true))}}inst.addShortcut('ctrl','k','lang_link_desc','mceLink')},removeInstance:function(inst){new TinyMCE_Layer(inst.editorId+'_fcMenu').remove();new TinyMCE_Layer(inst.editorId+'_bcMenu').remove()},hideInstance:function(inst){TinyMCE_AdvancedTheme._hideMenus(inst.editorId)},_handleMenuEvent:function(e){var te=tinyMCE.isMSIE?window.event.srcElement:e.target;tinyMCE._menuButtonEvent(e.type=="mouseover"?"over":"out",document.getElementById(te._switchId));if(e.type=="click")tinyMCE.execInstanceCommand(te._editor_id,te._command)},_hideMenus:function(id){var fcml=new TinyMCE_Layer(id+'_fcMenu'),bcml=new TinyMCE_Layer(id+'_bcMenu');if(fcml.exists()&&fcml.isVisible()){tinyMCE.switchClass(id+'_forecolor','mceMenuButton');fcml.hide()}if(bcml.exists()&&bcml.isVisible()){tinyMCE.switchClass(id+'_backcolor','mceMenuButton');bcml.hide()}},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection,setup_content){var alignNode,breakOut,classNode;function selectByValue(select_elm,value,first_index){first_index=typeof(first_index)=="undefined"?false:true;if(select_elm){for(var i=0;i<select_elm.options.length;i++){var ov=""+select_elm.options[i].value;if(first_index&&ov.toLowerCase().indexOf(value.toLowerCase())==0){select_elm.selectedIndex=i;return true}if(ov==value){select_elm.selectedIndex=i;return true}}}return false};if(node==null)return;var pathElm=document.getElementById(editor_id+"_path");var inst=tinyMCE.getInstanceById(editor_id);var doc=inst.getDoc();TinyMCE_AdvancedTheme._hideMenus(editor_id);if(pathElm){var parentNode=node;var path=new Array();while(parentNode!=null){if(parentNode.nodeName.toUpperCase()=="BODY"){break}if(parentNode.nodeType==1&&tinyMCE.getAttrib(parentNode,"class").indexOf('mceItemHidden')==-1){path[path.length]=parentNode}parentNode=parentNode.parentNode}var html="";for(var i=path.length-1;i>=0;i--){var nodeName=path[i].nodeName.toLowerCase();var nodeData="";if(nodeName.indexOf("html:")==0)nodeName=nodeName.substring(5);if(nodeName=="b"){nodeName="strong"}if(nodeName=="i"){nodeName="em"}if(nodeName=="span"){var cn=tinyMCE.getAttrib(path[i],"class");if(cn!=""&&cn.indexOf('mceItem')==-1)nodeData+="class: "+cn+" ";var st=tinyMCE.getAttrib(path[i],"style");if(st!=""){st=tinyMCE.serializeStyle(tinyMCE.parseStyle(st));nodeData+="style: "+tinyMCE.xmlEncode(st)+" "}}if(nodeName=="font"){if(tinyMCE.getParam("convert_fonts_to_spans"))nodeName="span";var face=tinyMCE.getAttrib(path[i],"face");if(face!="")nodeData+="font: "+tinyMCE.xmlEncode(face)+" ";var size=tinyMCE.getAttrib(path[i],"size");if(size!="")nodeData+="size: "+tinyMCE.xmlEncode(size)+" ";var color=tinyMCE.getAttrib(path[i],"color");if(color!="")nodeData+="color: "+tinyMCE.xmlEncode(color)+" "}if(tinyMCE.getAttrib(path[i],'id')!=""){nodeData+="id: "+path[i].getAttribute('id')+" "}var className=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i],"class"),false);if(className!=""&&className.indexOf('mceItem')==-1)nodeData+="class: "+className+" ";if(tinyMCE.getAttrib(path[i],'src')!=""){var src=tinyMCE.getAttrib(path[i],"mce_src");if(src=="")src=tinyMCE.getAttrib(path[i],"src");nodeData+="src: "+tinyMCE.xmlEncode(src)+" "}if(path[i].nodeName=='A'&&tinyMCE.getAttrib(path[i],'href')!=""){var href=tinyMCE.getAttrib(path[i],"mce_href");if(href=="")href=tinyMCE.getAttrib(path[i],"href");nodeData+="href: "+tinyMCE.xmlEncode(href)+" "}className=tinyMCE.getAttrib(path[i],"class");if((nodeName=="img"||nodeName=="span")&&className.indexOf('mceItem')!=-1){nodeName=className.replace(/mceItem([a-z]+)/gi,'$1').toLowerCase();nodeData=path[i].getAttribute('title')}if(nodeName=="a"&&(anchor=tinyMCE.getAttrib(path[i],"name"))!=""){nodeName="a";nodeName+="#"+tinyMCE.xmlEncode(anchor);nodeData=""}if(tinyMCE.getAttrib(path[i],'name').indexOf("mce_")!=0){var className=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i],"class"),false);if(className!=""&&className.indexOf('mceItem')==-1){nodeName+="."+className}}var cmd='tinyMCE.execInstanceCommand(\''+editor_id+'\',\'mceSelectNodeDepth\',false,\''+i+'\');';html+='<a title="'+nodeData+'" href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" target="_self" class="mcePathItem">'+nodeName+'</a>';if(i>0){html+=" &raquo; "}}pathElm.innerHTML='<a href="#" accesskey="x"></a>'+tinyMCE.getLang('lang_theme_path')+": "+html+'&#160;'}tinyMCE.switchClass(editor_id+'_justifyleft','mceButtonNormal');tinyMCE.switchClass(editor_id+'_justifyright','mceButtonNormal');tinyMCE.switchClass(editor_id+'_justifycenter','mceButtonNormal');tinyMCE.switchClass(editor_id+'_justifyfull','mceButtonNormal');tinyMCE.switchClass(editor_id+'_bold','mceButtonNormal');tinyMCE.switchClass(editor_id+'_italic','mceButtonNormal');tinyMCE.switchClass(editor_id+'_underline','mceButtonNormal');tinyMCE.switchClass(editor_id+'_strikethrough','mceButtonNormal');tinyMCE.switchClass(editor_id+'_bullist','mceButtonNormal');tinyMCE.switchClass(editor_id+'_numlist','mceButtonNormal');tinyMCE.switchClass(editor_id+'_sub','mceButtonNormal');tinyMCE.switchClass(editor_id+'_sup','mceButtonNormal');tinyMCE.switchClass(editor_id+'_anchor','mceButtonNormal');tinyMCE.switchClass(editor_id+'_link','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_unlink','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_outdent','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_image','mceButtonNormal');tinyMCE.switchClass(editor_id+'_hr','mceButtonNormal');if(node.nodeName=="A"&&tinyMCE.getAttrib(node,"class").indexOf('mceItemAnchor')!=-1)tinyMCE.switchClass(editor_id+'_anchor','mceButtonSelected');var anchorLink=tinyMCE.getParentElement(node,"a","href");if(anchorLink||any_selection){tinyMCE.switchClass(editor_id+'_link',anchorLink?'mceButtonSelected':'mceButtonNormal');tinyMCE.switchClass(editor_id+'_unlink',anchorLink?'mceButtonSelected':'mceButtonNormal')}tinyMCE.switchClass(editor_id+'_visualaid',visual_aid?'mceButtonSelected':'mceButtonNormal');if(undo_levels!=-1){tinyMCE.switchClass(editor_id+'_undo','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_redo','mceButtonDisabled')}if(tinyMCE.getParentElement(node,"li,blockquote"))tinyMCE.switchClass(editor_id+'_outdent','mceButtonNormal');if(undo_index!=-1&&(undo_index<undo_levels-1&&undo_levels>0))tinyMCE.switchClass(editor_id+'_redo','mceButtonNormal');if(undo_index!=-1&&(undo_index>0&&undo_levels>0))tinyMCE.switchClass(editor_id+'_undo','mceButtonNormal');var selectElm=document.getElementById(editor_id+"_styleSelect");if(selectElm){TinyMCE_AdvancedTheme._setupCSSClasses(editor_id);classNode=node;breakOut=false;var index=0;do{if(classNode&&classNode.className){for(var i=0;i<selectElm.options.length;i++){if(selectElm.options[i].value==classNode.className){index=i;breakOut=true;break}}}}while(!breakOut&&classNode!=null&&(classNode=classNode.parentNode)!=null);selectElm.selectedIndex=index}var selectElm=document.getElementById(editor_id+"_formatSelect");if(selectElm){var elm=tinyMCE.getParentElement(node,"p,div,h1,h2,h3,h4,h5,h6,pre,address");if(elm)selectByValue(selectElm,"<"+elm.nodeName.toLowerCase()+">");else selectByValue(selectElm,"")}var selectElm=document.getElementById(editor_id+"_fontNameSelect");if(selectElm){if(!tinyMCE.isSafari&&!(tinyMCE.isMSIE&&!tinyMCE.isOpera)){var face=inst.queryCommandValue('FontName');face=face==null||face==""?"":face;selectByValue(selectElm,face,face!="")}else{var elm=tinyMCE.getParentElement(node,"font","face");if(elm){var family=tinyMCE.getAttrib(elm,"face");if(family=='')family=''+elm.style.fontFamily;if(!selectByValue(selectElm,family,family!=""))selectByValue(selectElm,"")}else selectByValue(selectElm,"")}}var selectElm=document.getElementById(editor_id+"_fontSizeSelect");if(selectElm){if(!tinyMCE.isSafari&&!tinyMCE.isOpera){var size=inst.queryCommandValue('FontSize');selectByValue(selectElm,size==null||size==""?"0":size)}else{var elm=tinyMCE.getParentElement(node,"font","size");if(elm){var size=tinyMCE.getAttrib(elm,"size");if(size==''){var sizes=new Array('','8px','10px','12px','14px','18px','24px','36px');size=''+elm.style.fontSize;for(var i=0;i<sizes.length;i++){if((''+sizes[i])==size){size=i;break}}}if(!selectByValue(selectElm,size))selectByValue(selectElm,"")}else selectByValue(selectElm,"0")}}alignNode=node;breakOut=false;do{if(!alignNode.getAttribute||!alignNode.getAttribute('align'))continue;switch(alignNode.getAttribute('align').toLowerCase()){case"left":tinyMCE.switchClass(editor_id+'_justifyleft','mceButtonSelected');breakOut=true;break;case"right":tinyMCE.switchClass(editor_id+'_justifyright','mceButtonSelected');breakOut=true;break;case"middle":case"center":tinyMCE.switchClass(editor_id+'_justifycenter','mceButtonSelected');breakOut=true;break;case"justify":tinyMCE.switchClass(editor_id+'_justifyfull','mceButtonSelected');breakOut=true;break}}while(!breakOut&&(alignNode=alignNode.parentNode)!=null);var div=tinyMCE.getParentElement(node,"div");if(div&&div.style.textAlign=="center")tinyMCE.switchClass(editor_id+'_justifycenter','mceButtonSelected');if(!setup_content){var ar=new Array("Bold","_bold","Italic","_italic","Strikethrough","_strikethrough","superscript","_sup","subscript","_sub");for(var i=0;i<ar.length;i+=2){if(inst.queryCommandState(ar[i]))tinyMCE.switchClass(editor_id+ar[i+1],'mceButtonSelected')}if(inst.queryCommandState("Underline")&&(node.parentNode==null||node.parentNode.nodeName!="A"))tinyMCE.switchClass(editor_id+'_underline','mceButtonSelected')}do{switch(node.nodeName){case"UL":tinyMCE.switchClass(editor_id+'_bullist','mceButtonSelected');break;case"OL":tinyMCE.switchClass(editor_id+'_numlist','mceButtonSelected');break;case"HR":tinyMCE.switchClass(editor_id+'_hr','mceButtonSelected');break;case"IMG":if(tinyMCE.getAttrib(node,'name').indexOf('mce_')!=0&&tinyMCE.getAttrib(node,'class').indexOf('mceItem')==-1){tinyMCE.switchClass(editor_id+'_image','mceButtonSelected')}break}}while((node=node.parentNode)!=null)},_setupCSSClasses:function(editor_id){var i,selectElm;if(!TinyMCE_AdvancedTheme._autoImportCSSClasses)return;selectElm=document.getElementById(editor_id+'_styleSelect');if(selectElm&&selectElm.getAttribute('cssImported')!='true'){var csses=tinyMCE.getCSSClasses(editor_id);if(csses&&selectElm){for(i=0;i<csses.length;i++)selectElm.options[selectElm.options.length]=new Option(csses[i],csses[i])}if(csses!=null&&csses.length>0)selectElm.setAttribute('cssImported','true')}},_setCookie:function(name,value,expires,path,domain,secure){var curCookie=name+"="+escape(value)+((expires)?"; expires="+expires.toGMTString():"")+((path)?"; path="+escape(path):"")+((domain)?"; domain="+domain:"")+((secure)?"; secure":"");document.cookie=curCookie},_getCookie:function(name){var dc=document.cookie;var prefix=name+"=";var begin=dc.indexOf("; "+prefix);if(begin==-1){begin=dc.indexOf(prefix);if(begin!=0)return null}else begin+=2;var end=document.cookie.indexOf(";",begin);if(end==-1)end=dc.length;return unescape(dc.substring(begin+prefix.length,end))},_resizeTo:function(inst,w,h,set_w){var editorContainer=document.getElementById(inst.editorId+'_parent');var tableElm=editorContainer.firstChild;var iframe=inst.iframeElement;if(w==null||w=="null"){set_w=false;w=0}if(h==null||h=="null")return;w=parseInt(w);h=parseInt(h);if(tinyMCE.isGecko){w+=2;h+=2}var dx=w-tableElm.clientWidth;var dy=h-tableElm.clientHeight;w=w<1?30:w;h=h<1?30:h;if(set_w)tableElm.style.width=w+"px";tableElm.style.height=h+"px";iw=iframe.clientWidth+dx;ih=iframe.clientHeight+dy;iw=iw<1?30:iw;ih=ih<1?30:ih;if(tinyMCE.isGecko){iw-=2;ih-=2}if(set_w)iframe.style.width=iw+"px";iframe.style.height=ih+"px";if(set_w){var tableBodyElm=tableElm.firstChild;var minIframeWidth=tableBodyElm.scrollWidth;if(inst.iframeElement.clientWidth<minIframeWidth){dx=minIframeWidth-inst.iframeElement.clientWidth;inst.iframeElement.style.width=(iw+dx)+"px"}}inst.useCSS=false},_resizeEventHandler:function(e){var resizer=TinyMCE_AdvancedTheme._resizer;if(!resizer.resizing)return;e=typeof(e)=="undefined"?window.event:e;var dx=e.screenX-resizer.downX;var dy=e.screenY-resizer.downY;var resizeBox=resizer.resizeBox;var editorId=resizer.editorId;switch(e.type){case"mousemove":var w,h;w=resizer.width+dx;h=resizer.height+dy;w=w<1?1:w;h=h<1?1:h;if(resizer.horizontal)resizeBox.style.width=w+"px";resizeBox.style.height=h+"px";break;case"mouseup":TinyMCE_AdvancedTheme._setResizing(e,editorId,false);TinyMCE_AdvancedTheme._resizeTo(tinyMCE.getInstanceById(editorId),resizer.width+dx,resizer.height+dy,resizer.horizontal);if(tinyMCE.getParam("theme_advanced_resizing_use_cookie",true)){var expires=new Date();expires.setTime(expires.getTime()+3600000*24*30);TinyMCE_AdvancedTheme._setCookie("TinyMCE_"+editorId+"_width",""+(resizer.horizontal?resizer.width+dx:""),expires);TinyMCE_AdvancedTheme._setCookie("TinyMCE_"+editorId+"_height",""+(resizer.height+dy),expires)}break}},_setResizing:function(e,editor_id,state){e=typeof(e)=="undefined"?window.event:e;var resizer=TinyMCE_AdvancedTheme._resizer;var editorContainer=document.getElementById(editor_id+'_parent');var editorArea=document.getElementById(editor_id+'_parent').firstChild;var resizeBox=document.getElementById(editor_id+'_resize_box');var inst=tinyMCE.getInstanceById(editor_id);if(state){var width=editorArea.clientWidth;var height=editorArea.clientHeight;resizeBox.style.width=width+"px";resizeBox.style.height=height+"px";resizer.iframeWidth=inst.iframeElement.clientWidth;resizer.iframeHeight=inst.iframeElement.clientHeight;editorArea.style.display="none";resizeBox.style.display="block";if(!resizer.eventHandlers){if(tinyMCE.isMSIE)tinyMCE.addEvent(document,"mousemove",TinyMCE_AdvancedTheme._resizeEventHandler);else tinyMCE.addEvent(window,"mousemove",TinyMCE_AdvancedTheme._resizeEventHandler);tinyMCE.addEvent(document,"mouseup",TinyMCE_AdvancedTheme._resizeEventHandler);resizer.eventHandlers=true}resizer.resizing=true;resizer.downX=e.screenX;resizer.downY=e.screenY;resizer.width=parseInt(resizeBox.style.width);resizer.height=parseInt(resizeBox.style.height);resizer.editorId=editor_id;resizer.resizeBox=resizeBox;resizer.horizontal=tinyMCE.getParam("theme_advanced_resize_horizontal",true)}else{resizer.resizing=false;resizeBox.style.display="none";editorArea.style.display=tinyMCE.isMSIE&&!tinyMCE.isOpera?"block":"table";tinyMCE.execCommand('mceResetDesignMode')}},_getColorHTML:function(id,n,cm){var i,h,cl;h='<span class="mceMenuLine"></span>';cl=tinyMCE.getParam(n,TinyMCE_AdvancedTheme._defColors).split(',');h+='<table class="mceColors"><tr>';for(i=0;i<cl.length;i++){c='tinyMCE.execInstanceCommand(\''+id+'\', \''+cm+'\', false, \'#'+cl[i]+'\');';h+='<td><a href="javascript:'+c+'" style="background-color: #'+cl[i]+'" onclick="'+c+';return false;"></a></td>';if((i+1)%8==0)h+='</tr><tr>'}h+='</tr></table>';if(tinyMCE.getParam("theme_advanced_more_colors",true))h+='<a href="javascript:void(0);" onclick="TinyMCE_AdvancedTheme._pickColor(\''+id+'\',\''+cm+'\');" class="mceMoreColors">'+tinyMCE.getLang('lang_more_colors')+'</a>';return h},_pickColor:function(id,cm){var inputColor,inst=tinyMCE.selectedInstance;if(cm=='forecolor'&&inst)inputColor=inst.foreColor;if((cm=='backcolor'||cm=='HiliteColor')&&inst)inputColor=inst.backColor;tinyMCE.execCommand('mceColorPicker',true,{color:inputColor,callback:function(c){tinyMCE.execInstanceCommand(id,cm,false,c)}})},_insertImage:function(src,alt,border,hspace,vspace,width,height,align,title,onmouseover,onmouseout){tinyMCE.execCommand("mceInsertContent",false,tinyMCE.createTagHTML('img',{src:tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],src),mce_src:src,alt:alt,border:border,hspace:hspace,vspace:vspace,width:width,height:height,align:align,title:title,onmouseover:onmouseover,onmouseout:onmouseout}))},_insertLink:function(href,target,title,onclick,style_class){tinyMCE.execCommand('mceBeginUndoLevel');if(tinyMCE.selectedInstance&&tinyMCE.selectedElement&&tinyMCE.selectedElement.nodeName.toLowerCase()=="img"){var doc=tinyMCE.selectedInstance.getDoc();var linkElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"a");var newLink=false;if(!linkElement){linkElement=doc.createElement("a");newLink=true}var mhref=href;var thref=eval(tinyMCE.settings['urlconverter_callback']+"(href, linkElement);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(linkElement,'href',thref);tinyMCE.setAttrib(linkElement,'mce_href',mhref);tinyMCE.setAttrib(linkElement,'target',target);tinyMCE.setAttrib(linkElement,'title',title);tinyMCE.setAttrib(linkElement,'onclick',onclick);tinyMCE.setAttrib(linkElement,'class',style_class);if(newLink){linkElement.appendChild(tinyMCE.selectedElement.cloneNode(true));tinyMCE.selectedElement.parentNode.replaceChild(linkElement,tinyMCE.selectedElement)}return}if(!tinyMCE.linkElement&&tinyMCE.selectedInstance){if(tinyMCE.isSafari){tinyMCE.execCommand("mceInsertContent",false,'<a href="'+tinyMCE.uniqueURL+'">'+tinyMCE.selectedInstance.selection.getSelectedHTML()+'</a>')}else tinyMCE.selectedInstance.contentDocument.execCommand("createlink",false,tinyMCE.uniqueURL);tinyMCE.linkElement=tinyMCE.getElementByAttributeValue(tinyMCE.selectedInstance.contentDocument.body,"a","href",tinyMCE.uniqueURL);var elementArray=tinyMCE.getElementsByAttributeValue(tinyMCE.selectedInstance.contentDocument.body,"a","href",tinyMCE.uniqueURL);for(var i=0;i<elementArray.length;i++){var mhref=href;var thref=eval(tinyMCE.settings['urlconverter_callback']+"(href, elementArray[i]);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(elementArray[i],'href',thref);tinyMCE.setAttrib(elementArray[i],'mce_href',mhref);tinyMCE.setAttrib(elementArray[i],'target',target);tinyMCE.setAttrib(elementArray[i],'title',title);tinyMCE.setAttrib(elementArray[i],'onclick',onclick);tinyMCE.setAttrib(elementArray[i],'class',style_class)}tinyMCE.linkElement=elementArray[0]}if(tinyMCE.linkElement){var mhref=href;href=eval(tinyMCE.settings['urlconverter_callback']+"(href, tinyMCE.linkElement);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(tinyMCE.linkElement,'href',href);tinyMCE.setAttrib(tinyMCE.linkElement,'mce_href',mhref);tinyMCE.setAttrib(tinyMCE.linkElement,'target',target);tinyMCE.setAttrib(tinyMCE.linkElement,'title',title);tinyMCE.setAttrib(tinyMCE.linkElement,'onclick',onclick);tinyMCE.setAttrib(tinyMCE.linkElement,'class',style_class)}tinyMCE.execCommand('mceEndUndoLevel')}};tinyMCE.addTheme("advanced",TinyMCE_AdvancedTheme);tinyMCE.addButtonMap(TinyMCE_AdvancedTheme._buttonMap);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/source_editor.htm
New file
0,0 → 1,32
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>{$lang_theme_code_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/source_editor.js"></script>
<base target="_self" />
</head>
<body onload="tinyMCEPopup.executeOnLoad('onLoadInit();');" onresize="resizeInputs();" style="display: none">
<form name="source" onsubmit="saveContent();" action="#">
<div style="float: left" class="title">{$lang_theme_code_title}</div>
 
<div id="wrapline" style="float: right">
<input type="checkbox" name="wraped" id="wraped" onclick="toggleWordWrap(this);" class="wordWrapCode" /><label for="wraped">{$lang_theme_code_wordwrap}</label>
</div>
 
<br style="clear: both" />
 
<textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,monospace; font-size: 12px" dir="ltr" wrap="off"></textarea>
 
<div class="mceActionPanel">
<div style="float: left">
<input type="button" name="insert" value="{$lang_update}" onclick="saveContent();" id="insert" />
</div>
 
<div style="float: right">
<input type="button" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
</div>
</div>
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/about.htm
New file
0,0 → 1,52
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_about_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/about.js"></script>
<base target="_self" />
</head>
<body id="about" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<div class="tabs">
<ul>
<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_about}</a></span></li>
<li id="help_tab"><span><a href="javascript:mcTabs.displayTab('help_tab','help_panel');" onmousedown="return false;">{$lang_help}</a></span></li>
<li id="plugins_tab"><span><a href="javascript:mcTabs.displayTab('plugins_tab','plugins_panel');" onmousedown="return false;">{$lang_plugins}</a></span></li>
</ul>
</div>
 
<div class="panel_wrapper">
<div id="general_panel" class="panel current">
<h3>{$lang_about_title}</h3>
<p>Version: {$tinymce_version} ({$tinymce_releasedate})</p>
<p>TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under <a href="../../license.txt" target="_blank">LGPL</a>
by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.</p>
<p>Copyright &copy; 2003-2007, <a href="http://www.moxiecode.com" target="_blank">Moxiecode Systems AB</a>, All rights reserved.</p>
<p>For more information about this software visit the <a href="http://tinymce.moxiecode.com" target="_blank">TinyMCE website</a>.</p>
 
<div id="buttoncontainer"></div>
</div>
 
<div id="plugins_panel" class="panel">
<div id="pluginscontainer">
<h3>{$lang_loaded_plugins}</h3>
 
<div id="plugintablecontainer">
</div>
 
<p>&nbsp;</p>
</div>
</div>
 
<div id="help_panel" class="panel noscroll" style="overflow: visible;">
<div id="iframecontainer"></div>
</div>
</div>
 
<div class="mceActionPanel">
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_close}" onclick="tinyMCEPopup.close();" />
</div>
</div>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/anchor.htm
New file
0,0 → 1,33
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_insert_anchor_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/anchor.js"></script>
<base target="_self" />
</head>
<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<form onsubmit="insertAnchor();return false;" action="#">
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td colspan="2" class="title">{$lang_insert_anchor_title}</td>
</tr>
<tr>
<td nowrap="nowrap">{$lang_insert_anchor_name}:</td>
<td><input name="anchorName" type="text" id="anchorName" value="" style="width: 200px" /></td>
</tr>
</table>
 
<div class="mceActionPanel">
<div style="float: left">
<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertAnchor();" />
</div>
 
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
</div>
</div>
 
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/jscripts/about.js
New file
0,0 → 1,75
function init() {
var inst;
 
tinyMCEPopup.resizeToInnerSize();
inst = tinyMCE.selectedInstance;
 
// Give FF some time
window.setTimeout('insertHelpIFrame();', 10);
 
var tcont = document.getElementById('plugintablecontainer');
var plugins = tinyMCE.getParam('plugins', '', true, ',');
if (plugins.length == 0)
document.getElementById('plugins_tab').style.display = 'none';
 
var html = "";
html += '<table id="plugintable">';
html += '<thead>';
html += '<tr>';
html += '<td>' + tinyMCE.getLang('lang_plugin') + '</td>';
html += '<td>' + tinyMCE.getLang('lang_author') + '</td>';
html += '<td>' + tinyMCE.getLang('lang_version') + '</td>';
html += '</tr>';
html += '</thead>';
html += '<tbody>';
 
for (var i=0; i<inst.plugins.length; i++) {
var info = getPluginInfo(inst.plugins[i]);
 
html += '<tr>';
 
if (info.infourl != null && info.infourl != '')
html += '<td width="50%" title="' + plugins[i] + '"><a href="' + info.infourl + '" target="mceplugin">' + info.longname + '</a></td>';
else
html += '<td width="50%" title="' + plugins[i] + '">' + info.longname + '</td>';
 
if (info.authorurl != null && info.authorurl != '')
html += '<td width="35%"><a href="' + info.authorurl + '" target="mceplugin">' + info.author + '</a></td>';
else
html += '<td width="35%">' + info.author + '</td>';
 
html += '<td width="15%">' + info.version + '</td>';
html += '</tr>';
}
 
html += '</tbody>';
html += '</table>';
 
tcont.innerHTML = html;
}
 
function getPluginInfo(name) {
if (tinyMCE.plugins[name].getInfo)
return tinyMCE.plugins[name].getInfo();
 
return {
longname : name,
authorurl : '',
infourl : '',
author : '--',
version : '--'
};
}
 
function insertHelpIFrame() {
var html = '<iframe width="100%" height="300" src="' + tinyMCE.themeURL + "/docs/" + tinyMCE.settings['docs_language'] + "/index.htm" + '"></iframe>';
 
document.getElementById('iframecontainer').innerHTML = html;
 
html = '';
html += '<a href="http://www.moxiecode.com" target="_blank"><img src="http://tinymce.moxiecode.com/images/gotmoxie.png" alt="Got Moxie?" border="0" /></a> ';
html += '<a href="http://sourceforge.net/projects/tinymce/" target="_blank"><img src="http://sourceforge.net/sflogo.php?group_id=103281" alt="Hosted By Sourceforge" border="0" /></a> ';
html += '<a href="http://www.freshmeat.net/projects/tinymce" target="_blank"><img src="http://tinymce.moxiecode.com/images/fm.gif" alt="Also on freshmeat" border="0" /></a> ';
 
document.getElementById('buttoncontainer').innerHTML = html;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/jscripts/anchor.js
New file
0,0 → 1,74
var action, element;
 
function init() {
tinyMCEPopup.resizeToInnerSize();
 
var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
var anchor = tinyMCE.getParentElement(inst.getFocusElement(), "a", "name");
var img = inst.getFocusElement();
action = 'insert';
 
if (anchor != null) {
element = anchor;
action = "update";
}
 
if (tinyMCE.getAttrib(img, "class") == "mceItemAnchor") {
element = img;
action = "update";
}
 
if (action == "update")
document.forms[0].anchorName.value = element.nodeName == "IMG" ? element.getAttribute("title") : element.getAttribute("name");
 
document.forms[0].insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true);
}
 
function insertAnchor() {
var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
var name = document.forms[0].anchorName.value, e;
 
tinyMCEPopup.execCommand("mceBeginUndoLevel");
 
if (action == "update") {
if (element.nodeName == "IMG")
element.setAttribute("title", name);
else
element.setAttribute("name", name);
} else {
var rng = inst.getRng();
 
if (rng.collapse)
rng.collapse(false);
 
name = name.replace(/&/g, '&amp;');
name = name.replace(/\"/g, '&quot;');
name = name.replace(/</g, '&lt;');
name = name.replace(/>/g, '&gt;');
 
// Fix for bug #1447335
if (tinyMCE.isGecko)
html = '<a id="mceNewAnchor" name="' + name + '"></a>';
else
html = '<a name="' + name + '"></a>';
 
tinyMCEPopup.execCommand("mceInsertContent", false, html);
 
// Fix for bug #1447335 force cursor after the anchor element
if (tinyMCE.isGecko) {
e = inst.getDoc().getElementById('mceNewAnchor');
 
if (e) {
inst.selection.selectNode(e, true, false, false);
e.removeAttribute('id');
}
}
 
tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
}
 
tinyMCEPopup.execCommand("mceEndUndoLevel");
 
tinyMCE.triggerNodeChange();
tinyMCEPopup.close();
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/jscripts/charmap.js
New file
0,0 → 1,326
function init() {
tinyMCEPopup.resizeToInnerSize();
}
 
var charmap = new Array();
 
// for mor details please see w3c.org
// now here is the complete list ;)
 
charmap = [
['&nbsp;', '&#160;', true, 'no-break space'],
['&amp;', '&#38;', true, 'ampersand'],
['&quot;', '&#34;', true, 'quotation mark'],
// finance
['&cent;', '&#162;', true, 'cent sign'],
['&euro;', '&#8364;', true, 'euro sign'],
['&pound;', '&#163;', true, 'pound sign'],
['&yen;', '&#165;', true, 'yen sign'],
// signs
['&copy;', '&#169;', true, 'copyright sign'],
['&reg;', '&#174;', true, 'registered sign'],
['&trade;', '&#8482;', true, 'trade mark sign'],
['&permil;', '&#8240;', true, 'per mille sign'],
['&micro;', '&#181;', true, 'micro sign'],
['&middot;', '&#183;', true, 'middle dot'],
['&bull;', '&#8226;', true, 'bullet'],
['&hellip;', '&#8230;', true, 'three dot leader'],
['&prime;', '&#8242;', true, 'minutes / feet'],
['&Prime;', '&#8243;', true, 'seconds / inches'],
['&sect;', '&#167;', true, 'section sign'],
['&para;', '&#182;', true, 'paragraph sign'],
['&szlig;', '&#223;', true, 'sharp s / ess-zed'],
// quotations
['&lsaquo;', '&#8249;', true, 'single left-pointing angle quotation mark'],
['&rsaquo;', '&#8250;', true, 'single right-pointing angle quotation mark'],
['&laquo;', '&#171;', true, 'left pointing guillemet'],
['&raquo;', '&#187;', true, 'right pointing guillemet'],
['&lsquo;', '&#8216;', true, 'left single quotation mark'],
['&rsquo;', '&#8217;', true, 'right single quotation mark'],
['&ldquo;', '&#8220;', true, 'left double quotation mark'],
['&rdquo;', '&#8221;', true, 'right double quotation mark'],
['&sbquo;', '&#8218;', true, 'single low-9 quotation mark'],
['&bdquo;', '&#8222;', true, 'double low-9 quotation mark'],
['&lt;', '&#60;', true, 'less-than sign'],
['&gt;', '&#62;', true, 'greater-than sign'],
['&le;', '&#8804;', true, 'less-than or equal to'],
['&ge;', '&#8805;', true, 'greater-than or equal to'],
['&ndash;', '&#8211;', true, 'en dash'],
['&mdash;', '&#8212;', true, 'em dash'],
['&macr;', '&#175;', true, 'macron'],
['&oline;', '&#8254;', true, 'overline'],
['&curren;', '&#164;', true, 'currency sign'],
['&brvbar;', '&#166;', true, 'broken bar'],
['&uml;', '&#168;', true, 'diaeresis'],
['&iexcl;', '&#161;', true, 'inverted exclamation mark'],
['&iquest;', '&#191;', true, 'turned question mark'],
['&circ;', '&#710;', true, 'circumflex accent'],
['&tilde;', '&#732;', true, 'small tilde'],
['&deg;', '&#176;', true, 'degree sign'],
['&minus;', '&#8722;', true, 'minus sign'],
['&plusmn;', '&#177;', true, 'plus-minus sign'],
['&divide;', '&#247;', true, 'division sign'],
['&frasl;', '&#8260;', true, 'fraction slash'],
['&times;', '&#215;', true, 'multiplication sign'],
['&sup1;', '&#185;', true, 'superscript one'],
['&sup2;', '&#178;', true, 'superscript two'],
['&sup3;', '&#179;', true, 'superscript three'],
['&frac14;', '&#188;', true, 'fraction one quarter'],
['&frac12;', '&#189;', true, 'fraction one half'],
['&frac34;', '&#190;', true, 'fraction three quarters'],
// math / logical
['&fnof;', '&#402;', true, 'function / florin'],
['&int;', '&#8747;', true, 'integral'],
['&sum;', '&#8721;', true, 'n-ary sumation'],
['&infin;', '&#8734;', true, 'infinity'],
['&radic;', '&#8730;', true, 'square root'],
['&sim;', '&#8764;', false,'similar to'],
['&cong;', '&#8773;', false,'approximately equal to'],
['&asymp;', '&#8776;', true, 'almost equal to'],
['&ne;', '&#8800;', true, 'not equal to'],
['&equiv;', '&#8801;', true, 'identical to'],
['&isin;', '&#8712;', false,'element of'],
['&notin;', '&#8713;', false,'not an element of'],
['&ni;', '&#8715;', false,'contains as member'],
['&prod;', '&#8719;', true, 'n-ary product'],
['&and;', '&#8743;', false,'logical and'],
['&or;', '&#8744;', false,'logical or'],
['&not;', '&#172;', true, 'not sign'],
['&cap;', '&#8745;', true, 'intersection'],
['&cup;', '&#8746;', false,'union'],
['&part;', '&#8706;', true, 'partial differential'],
['&forall;', '&#8704;', false,'for all'],
['&exist;', '&#8707;', false,'there exists'],
['&empty;', '&#8709;', false,'diameter'],
['&nabla;', '&#8711;', false,'backward difference'],
['&lowast;', '&#8727;', false,'asterisk operator'],
['&prop;', '&#8733;', false,'proportional to'],
['&ang;', '&#8736;', false,'angle'],
// undefined
['&acute;', '&#180;', true, 'acute accent'],
['&cedil;', '&#184;', true, 'cedilla'],
['&ordf;', '&#170;', true, 'feminine ordinal indicator'],
['&ordm;', '&#186;', true, 'masculine ordinal indicator'],
['&dagger;', '&#8224;', true, 'dagger'],
['&Dagger;', '&#8225;', true, 'double dagger'],
// alphabetical special chars
['&Agrave;', '&#192;', true, 'A - grave'],
['&Aacute;', '&#193;', true, 'A - acute'],
['&Acirc;', '&#194;', true, 'A - circumflex'],
['&Atilde;', '&#195;', true, 'A - tilde'],
['&Auml;', '&#196;', true, 'A - diaeresis'],
['&Aring;', '&#197;', true, 'A - ring above'],
['&AElig;', '&#198;', true, 'ligature AE'],
['&Ccedil;', '&#199;', true, 'C - cedilla'],
['&Egrave;', '&#200;', true, 'E - grave'],
['&Eacute;', '&#201;', true, 'E - acute'],
['&Ecirc;', '&#202;', true, 'E - circumflex'],
['&Euml;', '&#203;', true, 'E - diaeresis'],
['&Igrave;', '&#204;', true, 'I - grave'],
['&Iacute;', '&#205;', true, 'I - acute'],
['&Icirc;', '&#206;', true, 'I - circumflex'],
['&Iuml;', '&#207;', true, 'I - diaeresis'],
['&ETH;', '&#208;', true, 'ETH'],
['&Ntilde;', '&#209;', true, 'N - tilde'],
['&Ograve;', '&#210;', true, 'O - grave'],
['&Oacute;', '&#211;', true, 'O - acute'],
['&Ocirc;', '&#212;', true, 'O - circumflex'],
['&Otilde;', '&#213;', true, 'O - tilde'],
['&Ouml;', '&#214;', true, 'O - diaeresis'],
['&Oslash;', '&#216;', true, 'O - slash'],
['&OElig;', '&#338;', true, 'ligature OE'],
['&Scaron;', '&#352;', true, 'S - caron'],
['&Ugrave;', '&#217;', true, 'U - grave'],
['&Uacute;', '&#218;', true, 'U - acute'],
['&Ucirc;', '&#219;', true, 'U - circumflex'],
['&Uuml;', '&#220;', true, 'U - diaeresis'],
['&Yacute;', '&#221;', true, 'Y - acute'],
['&Yuml;', '&#376;', true, 'Y - diaeresis'],
['&THORN;', '&#222;', true, 'THORN'],
['&agrave;', '&#224;', true, 'a - grave'],
['&aacute;', '&#225;', true, 'a - acute'],
['&acirc;', '&#226;', true, 'a - circumflex'],
['&atilde;', '&#227;', true, 'a - tilde'],
['&auml;', '&#228;', true, 'a - diaeresis'],
['&aring;', '&#229;', true, 'a - ring above'],
['&aelig;', '&#230;', true, 'ligature ae'],
['&ccedil;', '&#231;', true, 'c - cedilla'],
['&egrave;', '&#232;', true, 'e - grave'],
['&eacute;', '&#233;', true, 'e - acute'],
['&ecirc;', '&#234;', true, 'e - circumflex'],
['&euml;', '&#235;', true, 'e - diaeresis'],
['&igrave;', '&#236;', true, 'i - grave'],
['&iacute;', '&#237;', true, 'i - acute'],
['&icirc;', '&#238;', true, 'i - circumflex'],
['&iuml;', '&#239;', true, 'i - diaeresis'],
['&eth;', '&#240;', true, 'eth'],
['&ntilde;', '&#241;', true, 'n - tilde'],
['&ograve;', '&#242;', true, 'o - grave'],
['&oacute;', '&#243;', true, 'o - acute'],
['&ocirc;', '&#244;', true, 'o - circumflex'],
['&otilde;', '&#245;', true, 'o - tilde'],
['&ouml;', '&#246;', true, 'o - diaeresis'],
['&oslash;', '&#248;', true, 'o slash'],
['&oelig;', '&#339;', true, 'ligature oe'],
['&scaron;', '&#353;', true, 's - caron'],
['&ugrave;', '&#249;', true, 'u - grave'],
['&uacute;', '&#250;', true, 'u - acute'],
['&ucirc;', '&#251;', true, 'u - circumflex'],
['&uuml;', '&#252;', true, 'u - diaeresis'],
['&yacute;', '&#253;', true, 'y - acute'],
['&thorn;', '&#254;', true, 'thorn'],
['&yuml;', '&#255;', true, 'y - diaeresis'],
['&Alpha;', '&#913;', true, 'Alpha'],
['&Beta;', '&#914;', true, 'Beta'],
['&Gamma;', '&#915;', true, 'Gamma'],
['&Delta;', '&#916;', true, 'Delta'],
['&Epsilon;', '&#917;', true, 'Epsilon'],
['&Zeta;', '&#918;', true, 'Zeta'],
['&Eta;', '&#919;', true, 'Eta'],
['&Theta;', '&#920;', true, 'Theta'],
['&Iota;', '&#921;', true, 'Iota'],
['&Kappa;', '&#922;', true, 'Kappa'],
['&Lambda;', '&#923;', true, 'Lambda'],
['&Mu;', '&#924;', true, 'Mu'],
['&Nu;', '&#925;', true, 'Nu'],
['&Xi;', '&#926;', true, 'Xi'],
['&Omicron;', '&#927;', true, 'Omicron'],
['&Pi;', '&#928;', true, 'Pi'],
['&Rho;', '&#929;', true, 'Rho'],
['&Sigma;', '&#931;', true, 'Sigma'],
['&Tau;', '&#932;', true, 'Tau'],
['&Upsilon;', '&#933;', true, 'Upsilon'],
['&Phi;', '&#934;', true, 'Phi'],
['&Chi;', '&#935;', true, 'Chi'],
['&Psi;', '&#936;', true, 'Psi'],
['&Omega;', '&#937;', true, 'Omega'],
['&alpha;', '&#945;', true, 'alpha'],
['&beta;', '&#946;', true, 'beta'],
['&gamma;', '&#947;', true, 'gamma'],
['&delta;', '&#948;', true, 'delta'],
['&epsilon;', '&#949;', true, 'epsilon'],
['&zeta;', '&#950;', true, 'zeta'],
['&eta;', '&#951;', true, 'eta'],
['&theta;', '&#952;', true, 'theta'],
['&iota;', '&#953;', true, 'iota'],
['&kappa;', '&#954;', true, 'kappa'],
['&lambda;', '&#955;', true, 'lambda'],
['&mu;', '&#956;', true, 'mu'],
['&nu;', '&#957;', true, 'nu'],
['&xi;', '&#958;', true, 'xi'],
['&omicron;', '&#959;', true, 'omicron'],
['&pi;', '&#960;', true, 'pi'],
['&rho;', '&#961;', true, 'rho'],
['&sigmaf;', '&#962;', true, 'final sigma'],
['&sigma;', '&#963;', true, 'sigma'],
['&tau;', '&#964;', true, 'tau'],
['&upsilon;', '&#965;', true, 'upsilon'],
['&phi;', '&#966;', true, 'phi'],
['&chi;', '&#967;', true, 'chi'],
['&psi;', '&#968;', true, 'psi'],
['&omega;', '&#969;', true, 'omega'],
// symbols
['&alefsym;', '&#8501;', false,'alef symbol'],
['&piv;', '&#982;', false,'pi symbol'],
['&real;', '&#8476;', false,'real part symbol'],
['&thetasym;','&#977;', false,'theta symbol'],
['&upsih;', '&#978;', false,'upsilon - hook symbol'],
['&weierp;', '&#8472;', false,'Weierstrass p'],
['&image;', '&#8465;', false,'imaginary part'],
// arrows
['&larr;', '&#8592;', true, 'leftwards arrow'],
['&uarr;', '&#8593;', true, 'upwards arrow'],
['&rarr;', '&#8594;', true, 'rightwards arrow'],
['&darr;', '&#8595;', true, 'downwards arrow'],
['&harr;', '&#8596;', true, 'left right arrow'],
['&crarr;', '&#8629;', false,'carriage return'],
['&lArr;', '&#8656;', false,'leftwards double arrow'],
['&uArr;', '&#8657;', false,'upwards double arrow'],
['&rArr;', '&#8658;', false,'rightwards double arrow'],
['&dArr;', '&#8659;', false,'downwards double arrow'],
['&hArr;', '&#8660;', false,'left right double arrow'],
['&there4;', '&#8756;', false,'therefore'],
['&sub;', '&#8834;', false,'subset of'],
['&sup;', '&#8835;', false,'superset of'],
['&nsub;', '&#8836;', false,'not a subset of'],
['&sube;', '&#8838;', false,'subset of or equal to'],
['&supe;', '&#8839;', false,'superset of or equal to'],
['&oplus;', '&#8853;', false,'circled plus'],
['&otimes;', '&#8855;', false,'circled times'],
['&perp;', '&#8869;', false,'perpendicular'],
['&sdot;', '&#8901;', false,'dot operator'],
['&lceil;', '&#8968;', false,'left ceiling'],
['&rceil;', '&#8969;', false,'right ceiling'],
['&lfloor;', '&#8970;', false,'left floor'],
['&rfloor;', '&#8971;', false,'right floor'],
['&lang;', '&#9001;', false,'left-pointing angle bracket'],
['&rang;', '&#9002;', false,'right-pointing angle bracket'],
['&loz;', '&#9674;', true,'lozenge'],
['&spades;', '&#9824;', false,'black spade suit'],
['&clubs;', '&#9827;', true, 'black club suit'],
['&hearts;', '&#9829;', true, 'black heart suit'],
['&diams;', '&#9830;', true, 'black diamond suit'],
['&ensp;', '&#8194;', false,'en space'],
['&emsp;', '&#8195;', false,'em space'],
['&thinsp;', '&#8201;', false,'thin space'],
['&zwnj;', '&#8204;', false,'zero width non-joiner'],
['&zwj;', '&#8205;', false,'zero width joiner'],
['&lrm;', '&#8206;', false,'left-to-right mark'],
['&rlm;', '&#8207;', false,'right-to-left mark'],
['&shy;', '&#173;', false,'soft hyphen']
];
 
function renderCharMapHTML() {
var charsPerRow = 20, tdWidth=20, tdHeight=20;
var html = '<table border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) + '"><tr height="' + tdHeight + '">';
var cols=-1;
for (var i=0; i<charmap.length; i++) {
if (charmap[i][2]==true) {
cols++;
html += ''
+ '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap"'
+ ' onmouseover="this.className=\'charmapOver\';'
+ 'previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');"'
+ ' onmouseout="this.className=\'charmap\';"'
+ ' nowrap="nowrap" onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');"><a style="text-decoration: none;" onfocus="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" href="javascript:insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');" onclick="return false;" onmousedown="return false;" title="' + charmap[i][3] + '">'
+ charmap[i][1]
+ '</a></td>';
if ((cols+1) % charsPerRow == 0)
html += '</tr><tr height="' + tdHeight + '">';
}
}
if (cols % charsPerRow > 0) {
var padd = charsPerRow - (cols % charsPerRow);
for (var i=0; i<padd-1; i++)
html += '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap">&nbsp;</td>';
}
html += '</tr></table>';
document.write(html);
}
 
function insertChar(chr) {
tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';');
 
// Refocus in window
if (tinyMCEPopup.isWindow)
window.focus();
 
tinyMCEPopup.close();
}
 
function previewChar(codeA, codeB, codeN) {
var elmA = document.getElementById('codeA');
var elmB = document.getElementById('codeB');
var elmV = document.getElementById('codeV');
var elmN = document.getElementById('codeN');
 
if (codeA=='#160;') {
elmV.innerHTML = '__';
} else {
elmV.innerHTML = '&' + codeA;
}
 
elmB.innerHTML = '&amp;' + codeA;
elmA.innerHTML = '&amp;' + codeB;
elmN.innerHTML = codeN;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/jscripts/color_picker.js
New file
0,0 → 1,240
var detail = 50, strhex = "0123456789abcdef", i, isMouseDown = false, isMouseOver = false;
 
var colors = new Array(
"#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033",
"#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099",
"#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff",
"#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033",
"#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399",
"#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff",
"#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333",
"#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399",
"#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff",
"#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633",
"#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699",
"#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff",
"#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633",
"#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999",
"#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff",
"#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933",
"#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999",
"#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff",
"#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33",
"#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99",
"#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff",
"#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33",
"#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99",
"#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff",
"#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33",
"#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99",
"#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff"
);
 
var named = {
'#F0F8FF':'AliceBlue','#FAEBD7':'AntiqueWhite','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige',
'#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'BlanchedAlmond','#0000FF':'Blue','#8A2BE2':'BlueViolet','#A52A2A':'Brown',
'#DEB887':'BurlyWood','#5F9EA0':'CadetBlue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'CornflowerBlue',
'#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'DarkBlue','#008B8B':'DarkCyan','#B8860B':'DarkGoldenRod',
'#A9A9A9':'DarkGray','#A9A9A9':'DarkGrey','#006400':'DarkGreen','#BDB76B':'DarkKhaki','#8B008B':'DarkMagenta','#556B2F':'DarkOliveGreen',
'#FF8C00':'Darkorange','#9932CC':'DarkOrchid','#8B0000':'DarkRed','#E9967A':'DarkSalmon','#8FBC8F':'DarkSeaGreen','#483D8B':'DarkSlateBlue',
'#2F4F4F':'DarkSlateGray','#2F4F4F':'DarkSlateGrey','#00CED1':'DarkTurquoise','#9400D3':'DarkViolet','#FF1493':'DeepPink','#00BFFF':'DeepSkyBlue',
'#696969':'DimGray','#696969':'DimGrey','#1E90FF':'DodgerBlue','#B22222':'FireBrick','#FFFAF0':'FloralWhite','#228B22':'ForestGreen',
'#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'GhostWhite','#FFD700':'Gold','#DAA520':'GoldenRod','#808080':'Gray','#808080':'Grey',
'#008000':'Green','#ADFF2F':'GreenYellow','#F0FFF0':'HoneyDew','#FF69B4':'HotPink','#CD5C5C':'IndianRed','#4B0082':'Indigo','#FFFFF0':'Ivory',
'#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'LavenderBlush','#7CFC00':'LawnGreen','#FFFACD':'LemonChiffon','#ADD8E6':'LightBlue',
'#F08080':'LightCoral','#E0FFFF':'LightCyan','#FAFAD2':'LightGoldenRodYellow','#D3D3D3':'LightGray','#D3D3D3':'LightGrey','#90EE90':'LightGreen',
'#FFB6C1':'LightPink','#FFA07A':'LightSalmon','#20B2AA':'LightSeaGreen','#87CEFA':'LightSkyBlue','#778899':'LightSlateGray','#778899':'LightSlateGrey',
'#B0C4DE':'LightSteelBlue','#FFFFE0':'LightYellow','#00FF00':'Lime','#32CD32':'LimeGreen','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon',
'#66CDAA':'MediumAquaMarine','#0000CD':'MediumBlue','#BA55D3':'MediumOrchid','#9370D8':'MediumPurple','#3CB371':'MediumSeaGreen','#7B68EE':'MediumSlateBlue',
'#00FA9A':'MediumSpringGreen','#48D1CC':'MediumTurquoise','#C71585':'MediumVioletRed','#191970':'MidnightBlue','#F5FFFA':'MintCream','#FFE4E1':'MistyRose','#FFE4B5':'Moccasin',
'#FFDEAD':'NavajoWhite','#000080':'Navy','#FDF5E6':'OldLace','#808000':'Olive','#6B8E23':'OliveDrab','#FFA500':'Orange','#FF4500':'OrangeRed','#DA70D6':'Orchid',
'#EEE8AA':'PaleGoldenRod','#98FB98':'PaleGreen','#AFEEEE':'PaleTurquoise','#D87093':'PaleVioletRed','#FFEFD5':'PapayaWhip','#FFDAB9':'PeachPuff',
'#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'PowderBlue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'RosyBrown','#4169E1':'RoyalBlue',
'#8B4513':'SaddleBrown','#FA8072':'Salmon','#F4A460':'SandyBrown','#2E8B57':'SeaGreen','#FFF5EE':'SeaShell','#A0522D':'Sienna','#C0C0C0':'Silver',
'#87CEEB':'SkyBlue','#6A5ACD':'SlateBlue','#708090':'SlateGray','#708090':'SlateGrey','#FFFAFA':'Snow','#00FF7F':'SpringGreen',
'#4682B4':'SteelBlue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet',
'#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'WhiteSmoke','#FFFF00':'Yellow','#9ACD32':'YellowGreen'
};
 
function init() {
var inputColor = convertRGBToHex(tinyMCE.getWindowArg('input_color'));
 
if (tinyMCE.isMSIE)
tinyMCEPopup.resizeToInnerSize();
 
generatePicker();
 
if (inputColor) {
changeFinalColor(inputColor);
 
col = convertHexToRGB(inputColor);
 
if (col)
updateLight(col.r, col.g, col.b);
}
}
 
function insertAction() {
var color = document.getElementById("color").value;
 
tinyMCEPopup.execCommand(tinyMCE.getWindowArg('command'), false, color);
tinyMCEPopup.close();
}
 
function showColor(color, name) {
if (name)
document.getElementById("colorname").innerHTML = name;
 
document.getElementById("preview").style.backgroundColor = color;
document.getElementById("color").value = color;
}
 
function convertRGBToHex(col) {
var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
 
if (!col)
return col;
 
var rgb = col.replace(re, "$1,$2,$3").split(',');
if (rgb.length == 3) {
r = parseInt(rgb[0]).toString(16);
g = parseInt(rgb[1]).toString(16);
b = parseInt(rgb[2]).toString(16);
 
r = r.length == 1 ? '0' + r : r;
g = g.length == 1 ? '0' + g : g;
b = b.length == 1 ? '0' + b : b;
 
return "#" + r + g + b;
}
 
return col;
}
 
function convertHexToRGB(col) {
if (col.indexOf('#') != -1) {
col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
 
r = parseInt(col.substring(0, 2), 16);
g = parseInt(col.substring(2, 4), 16);
b = parseInt(col.substring(4, 6), 16);
 
return {r : r, g : g, b : b};
}
 
return null;
}
 
function generatePicker() {
var el = document.getElementById('light'), h = '', i;
 
for (i = 0; i < detail; i++){
h += '<div id="gs'+i+'" style="background-color:#000000; width:15px; height:3px; border-style:none; border-width:0px;"'
+ ' onclick="changeFinalColor(this.style.backgroundColor)"'
+ ' onmousedown="isMouseDown = true; return false;"'
+ ' onmouseup="isMouseDown = false;"'
+ ' onmousemove="if (isMouseDown && isMouseOver) changeFinalColor(this.style.backgroundColor); return false;"'
+ ' onmouseover="isMouseOver = true;"'
+ ' onmouseout="isMouseOver = false;"'
+ '></div>';
}
 
el.innerHTML = h;
}
 
function generateWebColors() {
var el = document.getElementById('webcolors'), h = '', i;
 
if (el.className == 'generated')
return;
 
h += '<table border="0" cellspacing="1" cellpadding="0">'
+ '<tr>';
 
for (i=0; i<colors.length; i++) {
h += '<td bgcolor="' + colors[i] + '">'
+ '<a href="javascript:insertAction();" onfocus="showColor(\'' + colors[i] + '\');" onmouseover="showColor(\'' + colors[i] + '\');">'
+ '<img border="0" src="images/spacer.gif" width="10" height="10" title="' + colors[i] + '" alt="' + colors[i] + '" /></a></td>';
if ((i+1) % 18 == 0)
h += '</tr><tr>';
}
 
h += '</table>';
 
el.innerHTML = h;
el.className = 'generated';
}
 
function generateNamedColors() {
var el = document.getElementById('namedcolors'), h = '', n, v, i = 0;
 
if (el.className == 'generated')
return;
 
for (n in named) {
v = named[n];
h += '<a href="javascript:insertAction();" onmouseover="showColor(\'' + n + '\',\'' + v + '\');" style="background-color: ' + n + '"><!-- IE --></a>'
}
 
el.innerHTML = h;
el.className = 'generated';
}
 
function dechex(n) {
return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16);
}
 
function computeColor(e) {
var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB;
 
x = e.offsetX ? e.offsetX : (e.target ? e.clientX - e.target.x : 0);
y = e.offsetY ? e.offsetY : (e.target ? e.clientY - e.target.y : 0);
 
partWidth = document.getElementById('colorpicker').width / 6;
partDetail = detail / 2;
imHeight = document.getElementById('colorpicker').height;
 
r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255;
g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255 + (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth);
b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth);
 
coef = (imHeight - y) / imHeight;
r = 128 + (r - 128) * coef;
g = 128 + (g - 128) * coef;
b = 128 + (b - 128) * coef;
 
changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b));
updateLight(r, g, b);
}
 
function updateLight(r, g, b) {
var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color;
 
for (i=0; i<detail; i++) {
if ((i>=0) && (i<partDetail)) {
finalCoef = i / partDetail;
finalR = dechex(255 - (255 - r) * finalCoef);
finalG = dechex(255 - (255 - g) * finalCoef);
finalB = dechex(255 - (255 - b) * finalCoef);
} else {
finalCoef = 2 - i / partDetail;
finalR = dechex(r * finalCoef);
finalG = dechex(g * finalCoef);
finalB = dechex(b * finalCoef);
}
 
color = finalR + finalG + finalB;
 
document.getElementById('gs' + i).style.backgroundColor = '#'+color;
}
}
 
function changeFinalColor(color) {
if (color.indexOf('#') == -1)
color = convertRGBToHex(color);
 
document.getElementById('preview').style.backgroundColor = color;
document.getElementById('color').value = color;
}
 
window.focus();
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/jscripts/link.js
New file
0,0 → 1,74
var url = tinyMCE.getParam("external_link_list_url");
if (url != null) {
// Fix relative
if (url.charAt(0) != '/' && url.indexOf('://') == -1)
url = tinyMCE.documentBasePath + "/" + url;
 
document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
}
 
function init() {
tinyMCEPopup.resizeToInnerSize();
 
document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','theme_advanced_link');
 
// Handle file browser
if (isVisible('hrefbrowser'))
document.getElementById('href').style.width = '180px';
 
var formObj = document.forms[0];
 
for (var i=0; i<document.forms[0].target.options.length; i++) {
var option = document.forms[0].target.options[i];
 
if (option.value == tinyMCE.getWindowArg('target'))
option.selected = true;
}
 
document.forms[0].href.value = tinyMCE.getWindowArg('href');
document.forms[0].linktitle.value = tinyMCE.getWindowArg('title');
document.forms[0].insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true);
 
addClassesToList('styleSelect', 'theme_advanced_link_styles');
selectByValue(formObj, 'styleSelect', tinyMCE.getWindowArg('className'), true);
 
// Hide css select row if no CSS classes
if (formObj.styleSelect && formObj.styleSelect.options.length <= 1) {
var sr = document.getElementById('styleSelectRow');
sr.style.display = 'none';
sr.parentNode.removeChild(sr);
}
 
// Auto select link in list
if (typeof(tinyMCELinkList) != "undefined" && tinyMCELinkList.length > 0) {
var formObj = document.forms[0];
 
for (var i=0; i<formObj.link_list.length; i++) {
if (formObj.link_list.options[i].value == tinyMCE.getWindowArg('href'))
formObj.link_list.options[i].selected = true;
}
}
}
 
function checkPrefix(n) {
if (Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCE.getLang('lang_is_email')))
n.value = 'mailto:' + n.value;
 
if (/^\s*www./i.test(n.value) && confirm(tinyMCE.getLang('lang_is_external')))
n.value = 'http://' + n.value;
}
 
function insertLink() {
var href = document.forms[0].href.value;
var target = document.forms[0].target.options[document.forms[0].target.selectedIndex].value;
var title = document.forms[0].linktitle.value;
var style_class = document.forms[0].styleSelect ? document.forms[0].styleSelect.value : "";
var dummy;
 
if (target == '_self')
target = '';
 
tinyMCEPopup.restoreSelection();
tinyMCE.themes['advanced']._insertLink(href, target, title, dummy, style_class);
tinyMCEPopup.close();
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/jscripts/image.js
New file
0,0 → 1,81
var url = tinyMCE.getParam("external_image_list_url");
if (url != null) {
// Fix relative
if (url.charAt(0) != '/' && url.indexOf('://') == -1)
url = tinyMCE.documentBasePath + "/" + url;
 
document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
}
 
function insertImage() {
var src = document.forms[0].src.value;
var alt = document.forms[0].alt.value;
var border = document.forms[0].border.value;
var vspace = document.forms[0].vspace.value;
var hspace = document.forms[0].hspace.value;
var width = document.forms[0].width.value;
var height = document.forms[0].height.value;
var align = document.forms[0].align.options[document.forms[0].align.selectedIndex].value;
 
tinyMCEPopup.restoreSelection();
tinyMCE.themes['advanced']._insertImage(src, alt, border, hspace, vspace, width, height, align);
tinyMCEPopup.close();
}
 
function init() {
tinyMCEPopup.resizeToInnerSize();
 
document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');
 
var formObj = document.forms[0];
 
for (var i=0; i<document.forms[0].align.options.length; i++) {
if (document.forms[0].align.options[i].value == tinyMCE.getWindowArg('align'))
document.forms[0].align.options.selectedIndex = i;
}
 
formObj.src.value = tinyMCE.getWindowArg('src');
formObj.alt.value = tinyMCE.getWindowArg('alt');
formObj.border.value = tinyMCE.getWindowArg('border');
formObj.vspace.value = tinyMCE.getWindowArg('vspace');
formObj.hspace.value = tinyMCE.getWindowArg('hspace');
formObj.width.value = tinyMCE.getWindowArg('width');
formObj.height.value = tinyMCE.getWindowArg('height');
formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true);
 
// Handle file browser
if (isVisible('srcbrowser'))
document.getElementById('src').style.width = '180px';
 
// Auto select image in list
if (typeof(tinyMCEImageList) != "undefined" && tinyMCEImageList.length > 0) {
for (var i=0; i<formObj.image_list.length; i++) {
if (formObj.image_list.options[i].value == tinyMCE.getWindowArg('src'))
formObj.image_list.options[i].selected = true;
}
}
}
 
var preloadImg = new Image();
 
function resetImageData() {
var formObj = document.forms[0];
formObj.width.value = formObj.height.value = "";
}
 
function updateImageData() {
var formObj = document.forms[0];
 
if (formObj.width.value == "")
formObj.width.value = preloadImg.width;
 
if (formObj.height.value == "")
formObj.height.value = preloadImg.height;
}
 
function getImageData() {
preloadImg = new Image();
tinyMCE.addEvent(preloadImg, "load", updateImageData);
tinyMCE.addEvent(preloadImg, "error", function () {var formObj = document.forms[0];formObj.width.value = formObj.height.value = "";});
preloadImg.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], document.forms[0].src.value);
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/jscripts/source_editor.js
New file
0,0 → 1,59
function saveContent() {
tinyMCE.setContent(document.getElementById('htmlSource').value);
tinyMCE.closeWindow(window);
}
 
function onLoadInit() {
tinyMCEPopup.resizeToInnerSize();
 
// Remove Gecko spellchecking
if (tinyMCE.isGecko)
document.body.spellcheck = tinyMCE.getParam("gecko_spellcheck");
 
document.getElementById('htmlSource').value = tinyMCE.getContent(tinyMCE.getWindowArg('editor_id'));
 
resizeInputs();
 
if (tinyMCE.getParam("theme_advanced_source_editor_wrap", true)) {
setWrap('soft');
document.getElementById('wraped').checked = true;
}
}
 
function setWrap(val) {
var s = document.getElementById('htmlSource');
 
s.wrap = val;
 
if (tinyMCE.isGecko || tinyMCE.isOpera) {
var v = s.value;
var n = s.cloneNode(false);
n.setAttribute("wrap", val);
s.parentNode.replaceChild(n, s);
n.value = v;
}
}
 
function toggleWordWrap(elm) {
if (elm.checked)
setWrap('soft');
else
setWrap('off');
}
 
var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
 
function resizeInputs() {
var el = document.getElementById('htmlSource');
 
if (!tinyMCE.isMSIE) {
wHeight = self.innerHeight - 60;
wWidth = self.innerWidth - 16;
} else {
wHeight = document.body.clientHeight - 60;
wWidth = document.body.clientWidth - 16;
}
 
el.style.height = Math.abs(wHeight) + 'px';
el.style.width = Math.abs(wWidth) + 'px';
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/charmap.htm
New file
0,0 → 1,53
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_theme_charmap_title}</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/charmap.js"></script>
<base target="_self" />
</head>
<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<table align="center" border="0" cellspacing="0" cellpadding="2">
<tr>
<td colspan="2" class="title">{$lang_theme_charmap_title}</td>
</tr>
<tr>
<td rowspan="2" align="left" valign="top">
<script language="javascript" type="text/javascript">renderCharMapHTML();</script>
</td>
<td width="100" align="center" valign="top">
<table border="0" cellpadding="0" cellspacing="0" width="100" style="height: 100px">
<tr>
<td class="charmapOver" style="font-size: 40px; height:80px;" id="codeV">&nbsp;</td>
</tr>
<tr>
<td style="font-size: 10px; font-family: Arial, Helvetica, sans-serif; text-align:center;" id="codeN">&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr>
<td valign="bottom" style="padding-bottom: 3px;">
<table width="100" align="center" border="0" cellpadding="2" cellspacing="0">
<tr>
<td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">HTML-Code</td>
</tr>
<tr>
<td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeA" align="center">&nbsp;</td>
</tr>
<tr>
<td style="font-size: 1px;">&nbsp;</td>
</tr>
<tr>
<td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">NUM-Code</td>
</tr>
<tr>
<td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeB" align="center">&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>
 
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/color_picker.htm
New file
0,0 → 1,74
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_theme_colorpicker_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/color_picker.js"></script>
<link href="css/colorpicker.css" rel="stylesheet" type="text/css" />
<base target="_self" />
</head>
<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<div class="tabs">
<ul>
<li id="picker_tab" class="current"><span><a href="javascript:mcTabs.displayTab('picker_tab','picker_panel');" onmousedown="return false;">{$lang_color_picker_tab}</a></span></li>
<li id="rgb_tab"><span><a href="#" onclick="generateWebColors();mcTabs.displayTab('rgb_tab','rgb_panel');" onmousedown="return false;">{$lang_web_colors_tab}</a></span></li>
<li id="named_tab"><span><a href="#" onclick="generateNamedColors();javascript:mcTabs.displayTab('named_tab','named_panel');" onmousedown="return false;">{$lang_named_colors_tab}</a></span></li>
</ul>
</div>
 
<div class="panel_wrapper">
<div id="picker_panel" class="panel current">
<fieldset>
<legend>{$lang_color_picker}</legend>
<div id="picker">
<img id="colorpicker" src="images/colors.jpg" onclick="computeColor(event)" onmousedown="isMouseDown = true;return false;" onmouseup="isMouseDown = false;" onmousemove="if (isMouseDown && isMouseOver) computeColor(event); return false;" onmouseover="isMouseOver=true;" onmouseout="isMouseOver=false;" />
 
<div id="light">
<!-- Will be filled with divs -->
</div>
 
<br style="clear: both" />
</div>
</fieldset>
</div>
 
<div id="rgb_panel" class="panel">
<fieldset>
<legend>{$lang_web_colors}</legend>
<div id="webcolors">
<!-- Gets filled with web safe colors-->
</div>
 
<br style="clear: both" />
</fieldset>
</div>
 
<div id="named_panel" class="panel">
<fieldset>
<legend>{$lang_named_colors}</legend>
<div id="namedcolors">
<!-- Gets filled with named colors-->
</div>
 
<br style="clear: both" />
 
<div id="colornamecontainer">
{$lang_color_name} <span id="colorname"></span>
</div>
</fieldset>
</div>
</div>
 
<div class="mceActionPanel">
<div style="float: left">
<input type="button" id="insert" name="insert" value="{$lang_theme_colorpicker_apply}" onclick="insertAction();" />
</div>
 
<div id="preview"></div>
 
<div id="previewblock">
<label for="color">{$lang_color}</label> <input id="color" type="text" size="8" maxlength="8" class="text" />
</div>
</div>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/editor_template_src.js
New file
0,0 → 1,1516
/**
* $Id: editor_template_src.js 296 2007-08-21 10:36:35Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
/* Import theme specific language pack */
tinyMCE.importThemeLanguagePack('advanced');
 
var TinyMCE_AdvancedTheme = {
// Private theme fields
_defColors : "000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",
_autoImportCSSClasses : true,
_resizer : {},
_buttons : [
// Control id, button img, button title, command, user_interface, value
['bold', '{$lang_bold_img}', 'lang_bold_desc', 'Bold'],
['italic', '{$lang_italic_img}', 'lang_italic_desc', 'Italic'],
['underline', '{$lang_underline_img}', 'lang_underline_desc', 'Underline'],
['strikethrough', 'strikethrough.gif', 'lang_striketrough_desc', 'Strikethrough'],
['justifyleft', 'justifyleft.gif', 'lang_justifyleft_desc', 'JustifyLeft'],
['justifycenter', 'justifycenter.gif', 'lang_justifycenter_desc', 'JustifyCenter'],
['justifyright', 'justifyright.gif', 'lang_justifyright_desc', 'JustifyRight'],
['justifyfull', 'justifyfull.gif', 'lang_justifyfull_desc', 'JustifyFull'],
['bullist', 'bullist.gif', 'lang_bullist_desc', 'InsertUnorderedList'],
['numlist', 'numlist.gif', 'lang_numlist_desc', 'InsertOrderedList'],
['outdent', 'outdent.gif', 'lang_outdent_desc', 'Outdent'],
['indent', 'indent.gif', 'lang_indent_desc', 'Indent'],
['cut', 'cut.gif', 'lang_cut_desc', 'Cut'],
['copy', 'copy.gif', 'lang_copy_desc', 'Copy'],
['paste', 'paste.gif', 'lang_paste_desc', 'Paste'],
['undo', 'undo.gif', 'lang_undo_desc', 'Undo'],
['redo', 'redo.gif', 'lang_redo_desc', 'Redo'],
['link', 'link.gif', 'lang_link_desc', 'mceLink', true],
['unlink', 'unlink.gif', 'lang_unlink_desc', 'unlink'],
['image', 'image.gif', 'lang_image_desc', 'mceImage', true],
['cleanup', 'cleanup.gif', 'lang_cleanup_desc', 'mceCleanup'],
['help', 'help.gif', 'lang_help_desc', 'mceHelp'],
['code', 'code.gif', 'lang_theme_code_desc', 'mceCodeEditor'],
['hr', 'hr.gif', 'lang_theme_hr_desc', 'inserthorizontalrule'],
['removeformat', 'removeformat.gif', 'lang_theme_removeformat_desc', 'removeformat'],
['sub', 'sub.gif', 'lang_theme_sub_desc', 'subscript'],
['sup', 'sup.gif', 'lang_theme_sup_desc', 'superscript'],
['forecolor', 'forecolor.gif', 'lang_theme_forecolor_desc', 'forecolor', true],
['forecolorpicker', 'forecolor.gif', 'lang_theme_forecolor_desc', 'forecolorpicker', true],
['backcolor', 'backcolor.gif', 'lang_theme_backcolor_desc', 'HiliteColor', true],
['backcolorpicker', 'backcolor.gif', 'lang_theme_backcolor_desc', 'backcolorpicker', true],
['charmap', 'charmap.gif', 'lang_theme_charmap_desc', 'mceCharMap'],
['visualaid', 'visualaid.gif', 'lang_theme_visualaid_desc', 'mceToggleVisualAid'],
['anchor', 'anchor.gif', 'lang_theme_anchor_desc', 'mceInsertAnchor'],
['newdocument', 'newdocument.gif', 'lang_newdocument_desc', 'mceNewDocument']
],
 
_buttonMap : 'anchor,backcolor,bold,bullist,charmap,cleanup,code,copy,cut,forecolor,help,hr,image,indent,italic,justifycenter,justifyfull,justifyleft,justifyright,link,newdocument,numlist,outdent,paste,redo,removeformat,strikethrough,sub,sup,underline,undo,unlink,visualaid,advhr,ltr,rtl,emotions,flash,fullpage,fullscreen,iespell,insertdate,inserttime,pastetext,pasteword,selectall,preview,print,save,replace,search,table,cell_props,delete_col,delete_row,col_after,col_before,row_after,row_before,merge_cells,row_props,split_cells,delete_table',
 
/**
* Returns HTML code for the specificed control.
*/
getControlHTML : function(button_name) {
var i, x, but;
 
// Lookup button in button list
for (i=0; i<TinyMCE_AdvancedTheme._buttons.length; i++) {
but = TinyMCE_AdvancedTheme._buttons[i];
 
if (but[0] == button_name && (button_name == "forecolor" || button_name == "backcolor"))
return tinyMCE.getMenuButtonHTML(but[0], but[2], '{$themeurl}/images/' + but[1], but[3] + "Menu", but[3], (but.length > 4 ? but[4] : false), (but.length > 5 ? but[5] : null));
 
if (but[0] == button_name)
return tinyMCE.getButtonHTML(but[0], but[2], '{$themeurl}/images/' + but[1], but[3], (but.length > 4 ? but[4] : false), (but.length > 5 ? but[5] : null));
}
 
// Custom controlls other than buttons
switch (button_name) {
case "formatselect":
var html = '<select id="{$editor_id}_formatSelect" name="{$editor_id}_formatSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FormatBlock\',false,this.options[this.selectedIndex].value);" class="mceSelectList">';
var formats = tinyMCE.getParam("theme_advanced_blockformats", "p,address,pre,h1,h2,h3,h4,h5,h6", true).split(',');
var lookup = [
['p', '{$lang_theme_paragraph}'],
['address', '{$lang_theme_address}'],
['pre', '{$lang_theme_pre}'],
['h1', '{$lang_theme_h1}'],
['h2', '{$lang_theme_h2}'],
['h3', '{$lang_theme_h3}'],
['h4', '{$lang_theme_h4}'],
['h5', '{$lang_theme_h5}'],
['h6', '{$lang_theme_h6}'],
['div', '{$lang_theme_div}'],
['blockquote', '{$lang_theme_blockquote}'],
['code', '{$lang_theme_code}'],
['dt', '{$lang_theme_dt}'],
['dd', '{$lang_theme_dd}'],
['samp', '{$lang_theme_samp}']
];
 
html += '<option value="">{$lang_theme_block}</option>';
 
// Build format select
for (var i=0; i<formats.length; i++) {
for (var x=0; x<lookup.length; x++) {
if (formats[i] == lookup[x][0])
html += '<option value="&lt;' + lookup[x][0] + '&gt;">' + lookup[x][1] + '</option>';
}
}
 
html += '</select>';
 
return html;
 
case "styleselect":
return '<select id="{$editor_id}_styleSelect" onmousedown="tinyMCE.themes.advanced._setupCSSClasses(\'{$editor_id}\');" name="{$editor_id}_styleSelect" onfocus="tinyMCE.addSelectAccessibility(event,this,window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSetCSSClass\',false,this.options[this.selectedIndex].value);" class="mceSelectList">{$style_select_options}</select>';
 
case "fontselect":
var fontHTML = '<select id="{$editor_id}_fontNameSelect" name="{$editor_id}_fontNameSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontName\',false,this.options[this.selectedIndex].value);" class="mceSelectList"><option value="">{$lang_theme_fontdefault}</option>';
var iFonts = 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings';
var nFonts = 'Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats';
var fonts = tinyMCE.getParam("theme_advanced_fonts", nFonts).split(';');
for (i=0; i<fonts.length; i++) {
if (fonts[i] != '') {
var parts = fonts[i].split('=');
fontHTML += '<option value="' + parts[1] + '">' + parts[0] + '</option>';
}
}
 
fontHTML += '</select>';
return fontHTML;
 
case "fontsizeselect":
return '<select id="{$editor_id}_fontSizeSelect" name="{$editor_id}_fontSizeSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontSize\',false,this.options[this.selectedIndex].value);" class="mceSelectList">'+
'<option value="0">{$lang_theme_font_size}</option>'+
'<option value="1">1 (8 pt)</option>'+
'<option value="2">2 (10 pt)</option>'+
'<option value="3">3 (12 pt)</option>'+
'<option value="4">4 (14 pt)</option>'+
'<option value="5">5 (18 pt)</option>'+
'<option value="6">6 (24 pt)</option>'+
'<option value="7">7 (36 pt)</option>'+
'</select>';
 
case "|":
case "separator":
return '<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" alt="" />';
 
case "spacer":
return '<img src="{$themeurl}/images/separator.gif" width="2" height="15" border="0" class="mceSeparatorLine" style="vertical-align: middle" alt="" />';
 
case "rowseparator":
return '<br />';
}
 
return "";
},
 
/**
* Theme specific execcommand handling.
*/
execCommand : function(editor_id, element, command, user_interface, value) {
switch (command) {
case 'mceHelp':
tinyMCE.openWindow({
file : 'about.htm',
width : 480,
height : 380
}, {
tinymce_version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion,
tinymce_releasedate : tinyMCE.releaseDate,
inline : "yes"
});
return true;
 
case "mceLink":
var inst = tinyMCE.getInstanceById(editor_id);
var doc = inst.getDoc();
var selectedText = "";
 
if (tinyMCE.isMSIE) {
var rng = doc.selection.createRange();
selectedText = rng.text;
} else
selectedText = inst.getSel().toString();
 
if (!tinyMCE.linkElement) {
if ((tinyMCE.selectedElement.nodeName.toLowerCase() != "img") && (selectedText.length <= 0))
return true;
}
 
var href = "", target = "", title = "", onclick = "", action = "insert", style_class = "";
 
if (tinyMCE.selectedElement.nodeName.toLowerCase() == "a")
tinyMCE.linkElement = tinyMCE.selectedElement;
 
// Is anchor not a link
if (tinyMCE.linkElement != null && tinyMCE.getAttrib(tinyMCE.linkElement, 'href') == "")
tinyMCE.linkElement = null;
 
if (tinyMCE.linkElement) {
href = tinyMCE.getAttrib(tinyMCE.linkElement, 'href');
target = tinyMCE.getAttrib(tinyMCE.linkElement, 'target');
title = tinyMCE.getAttrib(tinyMCE.linkElement, 'title');
onclick = tinyMCE.getAttrib(tinyMCE.linkElement, 'onclick');
style_class = tinyMCE.getAttrib(tinyMCE.linkElement, 'class');
 
// Try old onclick to if copy/pasted content
if (onclick == "")
onclick = tinyMCE.getAttrib(tinyMCE.linkElement, 'onclick');
 
onclick = tinyMCE.cleanupEventStr(onclick);
 
href = eval(tinyMCE.settings['urlconverter_callback'] + "(href, tinyMCE.linkElement, true);");
 
// Use mce_href if defined
mceRealHref = tinyMCE.getAttrib(tinyMCE.linkElement, 'mce_href');
if (mceRealHref != "") {
href = mceRealHref;
 
if (tinyMCE.getParam('convert_urls'))
href = eval(tinyMCE.settings['urlconverter_callback'] + "(href, tinyMCE.linkElement, true);");
}
 
action = "update";
}
 
var template = new Array();
 
template['file'] = 'link.htm';
template['width'] = 310;
template['height'] = 200;
 
// Language specific width and height addons
template['width'] += tinyMCE.getLang('lang_insert_link_delta_width', 0);
template['height'] += tinyMCE.getLang('lang_insert_link_delta_height', 0);
 
if (inst.settings['insertlink_callback']) {
var returnVal = eval(inst.settings['insertlink_callback'] + "(href, target, title, onclick, action, style_class);");
if (returnVal && returnVal['href'])
TinyMCE_AdvancedTheme._insertLink(returnVal['href'], returnVal['target'], returnVal['title'], returnVal['onclick'], returnVal['style_class']);
} else {
tinyMCE.openWindow(template, {href : href, target : target, title : title, onclick : onclick, action : action, className : style_class, inline : "yes"});
}
 
return true;
 
case "mceImage":
var src = "", alt = "", border = "", hspace = "", vspace = "", width = "", height = "", align = "";
var title = "", onmouseover = "", onmouseout = "", action = "insert";
var img = tinyMCE.imgElement;
var inst = tinyMCE.getInstanceById(editor_id);
 
if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "img") {
img = tinyMCE.selectedElement;
tinyMCE.imgElement = img;
}
 
if (img) {
// Is it a internal MCE visual aid image, then skip this one.
if (tinyMCE.getAttrib(img, 'name').indexOf('mce_') == 0)
return true;
 
src = tinyMCE.getAttrib(img, 'src');
alt = tinyMCE.getAttrib(img, 'alt');
 
// Try polling out the title
if (alt == "")
alt = tinyMCE.getAttrib(img, 'title');
 
// Fix width/height attributes if the styles is specified
if (tinyMCE.isGecko) {
var w = img.style.width;
if (w != null && w != "")
img.setAttribute("width", w);
 
var h = img.style.height;
if (h != null && h != "")
img.setAttribute("height", h);
}
 
border = tinyMCE.getAttrib(img, 'border');
hspace = tinyMCE.getAttrib(img, 'hspace');
vspace = tinyMCE.getAttrib(img, 'vspace');
width = tinyMCE.getAttrib(img, 'width');
height = tinyMCE.getAttrib(img, 'height');
align = tinyMCE.getAttrib(img, 'align');
onmouseover = tinyMCE.getAttrib(img, 'onmouseover');
onmouseout = tinyMCE.getAttrib(img, 'onmouseout');
title = tinyMCE.getAttrib(img, 'title');
 
// Is realy specified?
if (tinyMCE.isMSIE) {
width = img.attributes['width'].specified ? width : "";
height = img.attributes['height'].specified ? height : "";
}
 
//onmouseover = tinyMCE.getImageSrc(tinyMCE.cleanupEventStr(onmouseover));
//onmouseout = tinyMCE.getImageSrc(tinyMCE.cleanupEventStr(onmouseout));
 
src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, img, true);");
 
// Use mce_src if defined
mceRealSrc = tinyMCE.getAttrib(img, 'mce_src');
if (mceRealSrc != "") {
src = mceRealSrc;
 
if (tinyMCE.getParam('convert_urls'))
src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, img, true);");
}
 
//if (onmouseover != "")
// onmouseover = eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseover, img, true);");
 
//if (onmouseout != "")
// onmouseout = eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseout, img, true);");
 
action = "update";
}
 
var template = new Array();
 
template['file'] = 'image.htm?src={$src}';
template['width'] = 355;
template['height'] = 265 + (tinyMCE.isMSIE ? 25 : 0);
 
// Language specific width and height addons
template['width'] += tinyMCE.getLang('lang_insert_image_delta_width', 0);
template['height'] += tinyMCE.getLang('lang_insert_image_delta_height', 0);
 
if (inst.settings['insertimage_callback']) {
var returnVal = eval(inst.settings['insertimage_callback'] + "(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout, action);");
if (returnVal && returnVal['src'])
TinyMCE_AdvancedTheme._insertImage(returnVal['src'], returnVal['alt'], returnVal['border'], returnVal['hspace'], returnVal['vspace'], returnVal['width'], returnVal['height'], returnVal['align'], returnVal['title'], returnVal['onmouseover'], returnVal['onmouseout']);
} else
tinyMCE.openWindow(template, {src : src, alt : alt, border : border, hspace : hspace, vspace : vspace, width : width, height : height, align : align, title : title, onmouseover : onmouseover, onmouseout : onmouseout, action : action, inline : "yes"});
 
return true;
 
case "forecolor":
var fcp = new TinyMCE_Layer(editor_id + '_fcPreview', false), p, img, elm;
 
TinyMCE_AdvancedTheme._hideMenus(editor_id);
 
if (!fcp.exists()) {
fcp.create('div', 'mceColorPreview', document.getElementById(editor_id + '_toolbar'));
elm = fcp.getElement();
elm._editor_id = editor_id;
elm._command = "forecolor";
elm._switchId = editor_id + "_forecolor";
tinyMCE.addEvent(elm, 'click', TinyMCE_AdvancedTheme._handleMenuEvent);
tinyMCE.addEvent(elm, 'mouseover', TinyMCE_AdvancedTheme._handleMenuEvent);
tinyMCE.addEvent(elm, 'mouseout', TinyMCE_AdvancedTheme._handleMenuEvent);
}
 
img = tinyMCE.selectNodes(document.getElementById(editor_id + "_forecolor"), function(n) {return n.nodeName == "IMG";})[0];
p = tinyMCE.getAbsPosition(img, document.getElementById(editor_id + '_toolbar'));
 
fcp.moveTo(p.absLeft, p.absTop);
fcp.getElement().style.backgroundColor = value != null ? value : tinyMCE.getInstanceById(editor_id).foreColor;
fcp.show();
 
return false;
 
case "forecolorpicker":
this._pickColor(editor_id, 'forecolor');
return true;
 
case "forecolorMenu":
TinyMCE_AdvancedTheme._hideMenus(editor_id);
 
// Create color layer
var ml = new TinyMCE_Layer(editor_id + '_fcMenu');
 
if (!ml.exists())
ml.create('div', 'mceMenu', document.body, TinyMCE_AdvancedTheme._getColorHTML(editor_id, 'theme_advanced_text_colors', 'forecolor'));
 
tinyMCE.switchClass(editor_id + '_forecolor', 'mceMenuButtonFocus');
ml.moveRelativeTo(document.getElementById(editor_id + "_forecolor"), 'bl');
 
ml.moveBy(tinyMCE.isMSIE && !tinyMCE.isOpera ? -1 : 1, -1);
 
if (tinyMCE.isOpera)
ml.moveBy(0, -2);
 
ml.show();
return true;
 
case "HiliteColor":
var bcp = new TinyMCE_Layer(editor_id + '_bcPreview', false), p, img;
 
TinyMCE_AdvancedTheme._hideMenus(editor_id);
 
if (!bcp.exists()) {
bcp.create('div', 'mceColorPreview', document.getElementById(editor_id + '_toolbar'));
elm = bcp.getElement();
elm._editor_id = editor_id;
elm._command = "HiliteColor";
elm._switchId = editor_id + "_backcolor";
tinyMCE.addEvent(elm, 'click', TinyMCE_AdvancedTheme._handleMenuEvent);
tinyMCE.addEvent(elm, 'mouseover', TinyMCE_AdvancedTheme._handleMenuEvent);
tinyMCE.addEvent(elm, 'mouseout', TinyMCE_AdvancedTheme._handleMenuEvent);
}
 
img = tinyMCE.selectNodes(document.getElementById(editor_id + "_backcolor"), function(n) {return n.nodeName == "IMG";})[0];
p = tinyMCE.getAbsPosition(img, document.getElementById(editor_id + '_toolbar'));
 
bcp.moveTo(p.absLeft, p.absTop);
bcp.getElement().style.backgroundColor = value != null ? value : tinyMCE.getInstanceById(editor_id).backColor;
bcp.show();
 
return false;
 
case "HiliteColorMenu":
TinyMCE_AdvancedTheme._hideMenus(editor_id);
 
// Create color layer
var ml = new TinyMCE_Layer(editor_id + '_bcMenu');
 
if (!ml.exists())
ml.create('div', 'mceMenu', document.body, TinyMCE_AdvancedTheme._getColorHTML(editor_id, 'theme_advanced_background_colors', 'HiliteColor'));
 
tinyMCE.switchClass(editor_id + '_backcolor', 'mceMenuButtonFocus');
ml.moveRelativeTo(document.getElementById(editor_id + "_backcolor"), 'bl');
 
ml.moveBy(tinyMCE.isMSIE && !tinyMCE.isOpera ? -1 : 1, -1);
 
if (tinyMCE.isOpera)
ml.moveBy(0, -2);
 
ml.show();
return true;
case "backcolorpicker":
this._pickColor(editor_id, 'HiliteColor');
return true;
 
case "mceColorPicker":
if (user_interface) {
var template = [];
if (!value['callback'] && !value['color'])
value['color'] = value['document'].getElementById(value['element_id']).value;
 
template['file'] = 'color_picker.htm';
template['width'] = 380;
template['height'] = 250;
template['close_previous'] = "no";
 
template['width'] += tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_width', 0);
template['height'] += tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_height', 0);
 
if (typeof(value['store_selection']) == "undefined")
value['store_selection'] = true;
 
tinyMCE.lastColorPickerValue = value;
tinyMCE.openWindow(template, {editor_id : editor_id, mce_store_selection : value['store_selection'], inline : "yes", command : "mceColorPicker", input_color : value['color']});
} else {
var savedVal = tinyMCE.lastColorPickerValue, elm;
 
if (savedVal['callback']) {
savedVal['callback'](value);
return true;
}
 
elm = savedVal['document'].getElementById(savedVal['element_id']);
elm.value = value;
 
if (elm.onchange != null && elm.onchange != '')
eval('elm.onchange();');
}
return true;
 
case "mceCodeEditor":
var template = new Array();
 
template['file'] = 'source_editor.htm';
template['width'] = parseInt(tinyMCE.getParam("theme_advanced_source_editor_width", 720));
template['height'] = parseInt(tinyMCE.getParam("theme_advanced_source_editor_height", 580));
 
tinyMCE.openWindow(template, {editor_id : editor_id, resizable : "yes", scrollbars : "no", inline : "yes"});
return true;
 
case "mceCharMap":
var template = new Array();
 
template['file'] = 'charmap.htm';
template['width'] = 550 + (tinyMCE.isOpera ? 40 : 0);
template['height'] = 250;
 
template['width'] += tinyMCE.getLang('lang_theme_advanced_charmap_delta_width', 0);
template['height'] += tinyMCE.getLang('lang_theme_advanced_charmap_delta_height', 0);
 
tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});
return true;
 
case "mceInsertAnchor":
var template = new Array();
 
template['file'] = 'anchor.htm';
template['width'] = 320;
template['height'] = 90 + (tinyMCE.isNS7 ? 30 : 0);
 
template['width'] += tinyMCE.getLang('lang_theme_advanced_anchor_delta_width', 0);
template['height'] += tinyMCE.getLang('lang_theme_advanced_anchor_delta_height', 0);
 
tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});
return true;
 
case "mceNewDocument":
if (confirm(tinyMCE.entityDecode(tinyMCE.getLang('lang_newdocument'))))
tinyMCE.execInstanceCommand(editor_id, 'mceSetContent', false, ' ');
 
return true;
}
 
return false;
},
 
/**
* Editor instance template function.
*/
getEditorTemplate : function(settings, editorId) {
function removeFromArray(in_array, remove_array) {
var outArray = new Array(), skip;
for (var i=0; i<in_array.length; i++) {
skip = false;
 
for (var j=0; j<remove_array.length; j++) {
if (in_array[i] == remove_array[j]) {
skip = true;
}
}
 
if (!skip) {
outArray[outArray.length] = in_array[i];
}
}
 
return outArray;
}
 
function addToArray(in_array, add_array) {
for (var i=0; i<add_array.length; i++) {
in_array[in_array.length] = add_array[i];
}
 
return in_array;
}
 
var template = new Array();
var deltaHeight = 0;
var resizing = tinyMCE.getParam("theme_advanced_resizing", false);
var path = tinyMCE.getParam("theme_advanced_path", true);
var statusbarHTML = '<div id="{$editor_id}_path" class="mceStatusbarPathText" style="display: ' + (path ? "block" : "none") + '">&#160;</div><div id="{$editor_id}_resize" class="mceStatusbarResize" style="display: ' + (resizing ? "block" : "none") + '" onmousedown="tinyMCE.themes.advanced._setResizing(event,\'{$editor_id}\',true);"></div><br style="clear: both" />';
var layoutManager = tinyMCE.getParam("theme_advanced_layout_manager", "SimpleLayout");
 
// Setup style select options -- MOVED UP FOR EXTERNAL TOOLBAR COMPATABILITY!
var styleSelectHTML = '<option value="">{$lang_theme_style_select}</option>';
if (settings['theme_advanced_styles']) {
var stylesAr = settings['theme_advanced_styles'].split(';');
for (var i=0; i<stylesAr.length; i++) {
var key, value;
 
key = stylesAr[i].split('=')[0];
value = stylesAr[i].split('=')[1];
 
styleSelectHTML += '<option value="' + value + '">' + key + '</option>';
}
 
TinyMCE_AdvancedTheme._autoImportCSSClasses = false;
}
 
switch(layoutManager) {
case "SimpleLayout" : //the default TinyMCE Layout (for backwards compatibility)...
var toolbarHTML = "";
var toolbarLocation = tinyMCE.getParam("theme_advanced_toolbar_location", "bottom");
var toolbarAlign = tinyMCE.getParam("theme_advanced_toolbar_align", "center");
var pathLocation = tinyMCE.getParam("theme_advanced_path_location", "none"); // Compatiblity
var statusbarLocation = tinyMCE.getParam("theme_advanced_statusbar_location", pathLocation);
var defVals = {
theme_advanced_buttons1 : "bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect",
theme_advanced_buttons2 : "bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code",
theme_advanced_buttons3 : "hr,removeformat,visualaid,separator,sub,sup,separator,charmap"
};
 
// Add accessibility control
toolbarHTML += '<a href="#" accesskey="q" title="' + tinyMCE.getLang("lang_toolbar_focus") + '"';
 
if (!tinyMCE.getParam("accessibility_focus"))
toolbarHTML += ' onfocus="tinyMCE.getInstanceById(\'' + editorId + '\').getWin().focus();"';
 
toolbarHTML += '></a>';
 
// Render rows
for (var i=1; i<100; i++) {
var def = defVals["theme_advanced_buttons" + i];
 
var buttons = tinyMCE.getParam("theme_advanced_buttons" + i, def == null ? '' : def, true, ',');
if (buttons.length == 0)
break;
 
buttons = removeFromArray(buttons, tinyMCE.getParam("theme_advanced_disable", "", true, ','));
buttons = addToArray(buttons, tinyMCE.getParam("theme_advanced_buttons" + i + "_add", "", true, ','));
buttons = addToArray(tinyMCE.getParam("theme_advanced_buttons" + i + "_add_before", "", true, ','), buttons);
 
for (var b=0; b<buttons.length; b++)
toolbarHTML += tinyMCE.getControlHTML(buttons[b]);
 
if (buttons.length > 0) {
toolbarHTML += "<br />";
deltaHeight -= 23;
}
}
 
// Add accessibility control
toolbarHTML += '<a href="#" accesskey="z" onfocus="tinyMCE.getInstanceById(\'' + editorId + '\').getWin().focus();"></a>';
 
// Setup template html
template['html'] = '<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width_style};height:{$height_style}"><tbody>';
 
if (toolbarLocation == "top")
template['html'] += '<tr><td dir="ltr" class="mceToolbarTop" align="' + toolbarAlign + '" height="1" nowrap="nowrap"><span id="' + editorId + '_toolbar" class="mceToolbarContainer">' + toolbarHTML + '</span></td></tr>';
 
if (statusbarLocation == "top") {
template['html'] += '<tr><td class="mceStatusbarTop" height="1">' + statusbarHTML + '</td></tr>';
deltaHeight -= 23;
}
 
template['html'] += '<tr><td align="center"><span id="{$editor_id}"></span></td></tr>';
 
if (toolbarLocation == "bottom")
template['html'] += '<tr><td dir="ltr" class="mceToolbarBottom" align="' + toolbarAlign + '" height="1"><span id="' + editorId + '_toolbar" class="mceToolbarContainer">' + toolbarHTML + '</span></td></tr>';
 
// External toolbar changes
if (toolbarLocation == "external") {
var bod = document.body;
var elm = document.createElement ("div");
 
toolbarHTML = tinyMCE.replaceVar(toolbarHTML, 'style_select_options', styleSelectHTML);
toolbarHTML = tinyMCE.applyTemplate(toolbarHTML, {editor_id : editorId});
 
elm.className = "mceToolbarExternal";
elm.id = editorId+"_toolbar";
elm.innerHTML = '<table width="100%" border="0" align="center"><tr><td align="center">'+toolbarHTML+'</td></tr></table>';
bod.appendChild (elm);
// bod.style.marginTop = elm.offsetHeight + "px";
 
deltaHeight = 0;
tinyMCE.getInstanceById(editorId).toolbarElement = elm;
 
//template['html'] = '<div id="mceExternalToolbar" align="center" class="mceToolbarExternal"><table width="100%" border="0" align="center"><tr><td align="center">'+toolbarHTML+'</td></tr></table></div>' + template["html"];
} else {
tinyMCE.getInstanceById(editorId).toolbarElement = null;
}
 
if (statusbarLocation == "bottom") {
template['html'] += '<tr><td class="mceStatusbarBottom" height="1">' + statusbarHTML + '</td></tr>';
deltaHeight -= 23;
}
 
template['html'] += '</tbody></table>';
//"SimpleLayout"
break;
 
case "RowLayout" : //Container Layout - containers defined in "theme_advanced_containers" are rendered from top to bottom.
template['html'] = '<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width}px;height:{$height}px"><tbody>';
 
var containers = tinyMCE.getParam("theme_advanced_containers", "", true, ",");
var defaultContainerCSS = tinyMCE.getParam("theme_advanced_containers_default_class", "container");
var defaultContainerAlign = tinyMCE.getParam("theme_advanced_containers_default_align", "center");
 
//Render Containers:
for (var i = 0; i < containers.length; i++)
{
if (containers[i] == "mceEditor") //Exceptions for mceEditor and ...
template['html'] += '<tr><td align="center" class="mceEditor_border"><span id="{$editor_id}"></span></td></tr>';
else if (containers[i] == "mceElementpath" || containers[i] == "mceStatusbar") // ... mceElementpath:
{
var pathClass = "mceStatusbar";
 
if (i == containers.length-1)
{
pathClass = "mceStatusbarBottom";
}
else if (i == 0)
{
pathClass = "mceStatusbar";
}
else
{
deltaHeight-=2;
}
 
template['html'] += '<tr><td class="' + pathClass + '" height="1">' + statusbarHTML + '</td></tr>';
deltaHeight -= 22;
} else { // Render normal Container
var curContainer = tinyMCE.getParam("theme_advanced_container_"+containers[i], "", true, ',');
var curContainerHTML = "";
var curAlign = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_align", defaultContainerAlign);
var curCSS = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_class", defaultContainerCSS);
 
curContainer = removeFromArray(curContainer, tinyMCE.getParam("theme_advanced_disable", "", true, ','));
 
for (var j=0; j<curContainer.length; j++)
curContainerHTML += tinyMCE.getControlHTML(curContainer[j]);
 
if (curContainer.length > 0) {
curContainerHTML += "<br />";
deltaHeight -= 23;
}
 
template['html'] += '<tr><td class="' + curCSS + '" align="' + curAlign + '" height="1">' + curContainerHTML + '</td></tr>';
}
}
 
template['html'] += '</tbody></table>';
//RowLayout
break;
 
case "CustomLayout" : //User defined layout callback...
var customLayout = tinyMCE.getParam("theme_advanced_custom_layout","");
 
if (customLayout != "" && eval("typeof(" + customLayout + ")") != "undefined") {
template = eval(customLayout + "(template);");
}
break;
}
 
if (resizing)
template['html'] += '<span id="{$editor_id}_resize_box" class="mceResizeBox"></span>';
 
template['html'] = tinyMCE.replaceVar(template['html'], 'style_select_options', styleSelectHTML);
 
// Set to default values
if (!template['delta_width'])
template['delta_width'] = 0;
 
if (!template['delta_height'])
template['delta_height'] = deltaHeight;
 
return template;
},
 
initInstance : function(inst) {
if (tinyMCE.getParam("theme_advanced_resizing", false)) {
if (tinyMCE.getParam("theme_advanced_resizing_use_cookie", true)) {
var w = TinyMCE_AdvancedTheme._getCookie("TinyMCE_" + inst.editorId + "_width");
var h = TinyMCE_AdvancedTheme._getCookie("TinyMCE_" + inst.editorId + "_height");
 
TinyMCE_AdvancedTheme._resizeTo(inst, w, h, tinyMCE.getParam("theme_advanced_resize_horizontal", true));
}
}
 
inst.addShortcut('ctrl', 'k', 'lang_link_desc', 'mceLink');
},
 
removeInstance : function(inst) {
new TinyMCE_Layer(inst.editorId + '_fcMenu').remove();
new TinyMCE_Layer(inst.editorId + '_bcMenu').remove();
},
 
hideInstance : function(inst) {
TinyMCE_AdvancedTheme._hideMenus(inst.editorId);
},
 
_handleMenuEvent : function(e) {
var te = tinyMCE.isMSIE ? window.event.srcElement : e.target;
tinyMCE._menuButtonEvent(e.type == "mouseover" ? "over" : "out", document.getElementById(te._switchId));
 
if (e.type == "click")
tinyMCE.execInstanceCommand(te._editor_id, te._command);
},
 
_hideMenus : function(id) {
var fcml = new TinyMCE_Layer(id + '_fcMenu'), bcml = new TinyMCE_Layer(id + '_bcMenu');
 
if (fcml.exists() && fcml.isVisible()) {
tinyMCE.switchClass(id + '_forecolor', 'mceMenuButton');
fcml.hide();
}
 
if (bcml.exists() && bcml.isVisible()) {
tinyMCE.switchClass(id + '_backcolor', 'mceMenuButton');
bcml.hide();
}
},
 
/**
* Node change handler.
*/
handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection, setup_content) {
var alignNode, breakOut, classNode;
 
function selectByValue(select_elm, value, first_index) {
first_index = typeof(first_index) == "undefined" ? false : true;
 
if (select_elm) {
for (var i=0; i<select_elm.options.length; i++) {
var ov = "" + select_elm.options[i].value;
 
if (first_index && ov.toLowerCase().indexOf(value.toLowerCase()) == 0) {
select_elm.selectedIndex = i;
return true;
}
 
if (ov == value) {
select_elm.selectedIndex = i;
return true;
}
}
}
 
return false;
};
 
// No node provided
if (node == null)
return;
 
// Update path
var pathElm = document.getElementById(editor_id + "_path");
var inst = tinyMCE.getInstanceById(editor_id);
var doc = inst.getDoc();
TinyMCE_AdvancedTheme._hideMenus(editor_id);
 
if (pathElm) {
// Get node path
var parentNode = node;
var path = new Array();
while (parentNode != null) {
if (parentNode.nodeName.toUpperCase() == "BODY") {
break;
}
 
// Only append element nodes to path
if (parentNode.nodeType == 1 && tinyMCE.getAttrib(parentNode, "class").indexOf('mceItemHidden') == -1) {
path[path.length] = parentNode;
}
 
parentNode = parentNode.parentNode;
}
 
// Setup HTML
var html = "";
for (var i=path.length-1; i>=0; i--) {
var nodeName = path[i].nodeName.toLowerCase();
var nodeData = "";
 
if (nodeName.indexOf("html:") == 0)
nodeName = nodeName.substring(5);
 
if (nodeName == "b") {
nodeName = "strong";
}
 
if (nodeName == "i") {
nodeName = "em";
}
 
if (nodeName == "span") {
var cn = tinyMCE.getAttrib(path[i], "class");
if (cn != "" && cn.indexOf('mceItem') == -1)
nodeData += "class: " + cn + " ";
 
var st = tinyMCE.getAttrib(path[i], "style");
if (st != "") {
st = tinyMCE.serializeStyle(tinyMCE.parseStyle(st));
nodeData += "style: " + tinyMCE.xmlEncode(st) + " ";
}
}
 
if (nodeName == "font") {
if (tinyMCE.getParam("convert_fonts_to_spans"))
nodeName = "span";
 
var face = tinyMCE.getAttrib(path[i], "face");
if (face != "")
nodeData += "font: " + tinyMCE.xmlEncode(face) + " ";
 
var size = tinyMCE.getAttrib(path[i], "size");
if (size != "")
nodeData += "size: " + tinyMCE.xmlEncode(size) + " ";
 
var color = tinyMCE.getAttrib(path[i], "color");
if (color != "")
nodeData += "color: " + tinyMCE.xmlEncode(color) + " ";
}
 
if (tinyMCE.getAttrib(path[i], 'id') != "") {
nodeData += "id: " + path[i].getAttribute('id') + " ";
}
 
var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i], "class"), false);
if (className != "" && className.indexOf('mceItem') == -1)
nodeData += "class: " + className + " ";
 
if (tinyMCE.getAttrib(path[i], 'src') != "") {
var src = tinyMCE.getAttrib(path[i], "mce_src");
 
if (src == "")
src = tinyMCE.getAttrib(path[i], "src");
 
nodeData += "src: " + tinyMCE.xmlEncode(src) + " ";
}
 
if (path[i].nodeName == 'A' && tinyMCE.getAttrib(path[i], 'href') != "") {
var href = tinyMCE.getAttrib(path[i], "mce_href");
 
if (href == "")
href = tinyMCE.getAttrib(path[i], "href");
 
nodeData += "href: " + tinyMCE.xmlEncode(href) + " ";
}
 
className = tinyMCE.getAttrib(path[i], "class");
if ((nodeName == "img" || nodeName == "span") && className.indexOf('mceItem') != -1) {
nodeName = className.replace(/mceItem([a-z]+)/gi, '$1').toLowerCase();
nodeData = path[i].getAttribute('title');
}
 
if (nodeName == "a" && (anchor = tinyMCE.getAttrib(path[i], "name")) != "") {
nodeName = "a";
nodeName += "#" + tinyMCE.xmlEncode(anchor);
nodeData = "";
}
 
if (tinyMCE.getAttrib(path[i], 'name').indexOf("mce_") != 0) {
var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i], "class"), false);
if (className != "" && className.indexOf('mceItem') == -1) {
nodeName += "." + className;
}
}
 
var cmd = 'tinyMCE.execInstanceCommand(\'' + editor_id + '\',\'mceSelectNodeDepth\',false,\'' + i + '\');';
html += '<a title="' + nodeData + '" href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" target="_self" class="mcePathItem">' + nodeName + '</a>';
 
if (i > 0) {
html += " &raquo; ";
}
}
 
pathElm.innerHTML = '<a href="#" accesskey="x"></a>' + tinyMCE.getLang('lang_theme_path') + ": " + html + '&#160;';
}
 
// Reset old states
tinyMCE.switchClass(editor_id + '_justifyleft', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_justifyright', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_justifycenter', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_justifyfull', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_bold', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_italic', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_underline', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_strikethrough', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_sub', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_sup', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_anchor', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_link', 'mceButtonDisabled');
tinyMCE.switchClass(editor_id + '_unlink', 'mceButtonDisabled');
tinyMCE.switchClass(editor_id + '_outdent', 'mceButtonDisabled');
tinyMCE.switchClass(editor_id + '_image', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_hr', 'mceButtonNormal');
 
if (node.nodeName == "A" && tinyMCE.getAttrib(node, "class").indexOf('mceItemAnchor') != -1)
tinyMCE.switchClass(editor_id + '_anchor', 'mceButtonSelected');
 
// Get link
var anchorLink = tinyMCE.getParentElement(node, "a", "href");
 
if (anchorLink || any_selection) {
tinyMCE.switchClass(editor_id + '_link', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_unlink', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal');
}
 
// Handle visual aid
tinyMCE.switchClass(editor_id + '_visualaid', visual_aid ? 'mceButtonSelected' : 'mceButtonNormal');
 
if (undo_levels != -1) {
tinyMCE.switchClass(editor_id + '_undo', 'mceButtonDisabled');
tinyMCE.switchClass(editor_id + '_redo', 'mceButtonDisabled');
}
 
// Within li, blockquote
if (tinyMCE.getParentElement(node, "li,blockquote"))
tinyMCE.switchClass(editor_id + '_outdent', 'mceButtonNormal');
 
// Has redo levels
if (undo_index != -1 && (undo_index < undo_levels-1 && undo_levels > 0))
tinyMCE.switchClass(editor_id + '_redo', 'mceButtonNormal');
 
// Has undo levels
if (undo_index != -1 && (undo_index > 0 && undo_levels > 0))
tinyMCE.switchClass(editor_id + '_undo', 'mceButtonNormal');
 
// Select class in select box
var selectElm = document.getElementById(editor_id + "_styleSelect");
if (selectElm) {
TinyMCE_AdvancedTheme._setupCSSClasses(editor_id);
 
classNode = node;
breakOut = false;
var index = 0;
 
do {
if (classNode && classNode.className) {
for (var i=0; i<selectElm.options.length; i++) {
if (selectElm.options[i].value == classNode.className) {
index = i;
breakOut = true;
break;
}
}
}
} while (!breakOut && classNode != null && (classNode = classNode.parentNode) != null);
 
selectElm.selectedIndex = index;
}
 
// Select formatblock
var selectElm = document.getElementById(editor_id + "_formatSelect");
if (selectElm) {
var elm = tinyMCE.getParentElement(node, "p,div,h1,h2,h3,h4,h5,h6,pre,address");
 
if (elm)
selectByValue(selectElm, "<" + elm.nodeName.toLowerCase() + ">");
else
selectByValue(selectElm, "");
}
 
// Select fontselect
var selectElm = document.getElementById(editor_id + "_fontNameSelect");
if (selectElm) {
if (!tinyMCE.isSafari && !(tinyMCE.isMSIE && !tinyMCE.isOpera)) {
var face = inst.queryCommandValue('FontName');
 
face = face == null || face == "" ? "" : face;
 
selectByValue(selectElm, face, face != "");
} else {
var elm = tinyMCE.getParentElement(node, "font", "face");
 
if (elm) {
var family = tinyMCE.getAttrib(elm, "face");
 
if (family == '')
family = '' + elm.style.fontFamily;
 
if (!selectByValue(selectElm, family, family != ""))
selectByValue(selectElm, "");
} else
selectByValue(selectElm, "");
}
}
 
// Select fontsize
var selectElm = document.getElementById(editor_id + "_fontSizeSelect");
if (selectElm) {
if (!tinyMCE.isSafari && !tinyMCE.isOpera) {
var size = inst.queryCommandValue('FontSize');
selectByValue(selectElm, size == null || size == "" ? "0" : size);
} else {
var elm = tinyMCE.getParentElement(node, "font", "size");
if (elm) {
var size = tinyMCE.getAttrib(elm, "size");
 
if (size == '') {
var sizes = new Array('', '8px', '10px', '12px', '14px', '18px', '24px', '36px');
 
size = '' + elm.style.fontSize;
 
for (var i=0; i<sizes.length; i++) {
if (('' + sizes[i]) == size) {
size = i;
break;
}
}
}
 
if (!selectByValue(selectElm, size))
selectByValue(selectElm, "");
} else
selectByValue(selectElm, "0");
}
}
 
// Handle align attributes
alignNode = node;
breakOut = false;
do {
if (!alignNode.getAttribute || !alignNode.getAttribute('align'))
continue;
 
switch (alignNode.getAttribute('align').toLowerCase()) {
case "left":
tinyMCE.switchClass(editor_id + '_justifyleft', 'mceButtonSelected');
breakOut = true;
break;
 
case "right":
tinyMCE.switchClass(editor_id + '_justifyright', 'mceButtonSelected');
breakOut = true;
break;
 
case "middle":
case "center":
tinyMCE.switchClass(editor_id + '_justifycenter', 'mceButtonSelected');
breakOut = true;
break;
 
case "justify":
tinyMCE.switchClass(editor_id + '_justifyfull', 'mceButtonSelected');
breakOut = true;
break;
}
} while (!breakOut && (alignNode = alignNode.parentNode) != null);
 
// Div justification
var div = tinyMCE.getParentElement(node, "div");
if (div && div.style.textAlign == "center")
tinyMCE.switchClass(editor_id + '_justifycenter', 'mceButtonSelected');
 
// Do special text
if (!setup_content) {
// , "JustifyLeft", "_justifyleft", "JustifyCenter", "justifycenter", "JustifyRight", "justifyright", "JustifyFull", "justifyfull", "InsertUnorderedList", "bullist", "InsertOrderedList", "numlist", "InsertUnorderedList", "bullist", "Outdent", "outdent", "Indent", "indent", "subscript", "sub"
var ar = new Array("Bold", "_bold", "Italic", "_italic", "Strikethrough", "_strikethrough", "superscript", "_sup", "subscript", "_sub");
for (var i=0; i<ar.length; i+=2) {
if (inst.queryCommandState(ar[i]))
tinyMCE.switchClass(editor_id + ar[i+1], 'mceButtonSelected');
}
 
if (inst.queryCommandState("Underline") && (node.parentNode == null || node.parentNode.nodeName != "A"))
tinyMCE.switchClass(editor_id + '_underline', 'mceButtonSelected');
}
 
// Handle elements
do {
switch (node.nodeName) {
case "UL":
tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonSelected');
break;
 
case "OL":
tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonSelected');
break;
 
case "HR":
tinyMCE.switchClass(editor_id + '_hr', 'mceButtonSelected');
break;
 
case "IMG":
if (tinyMCE.getAttrib(node, 'name').indexOf('mce_') != 0 && tinyMCE.getAttrib(node, 'class').indexOf('mceItem') == -1) {
tinyMCE.switchClass(editor_id + '_image', 'mceButtonSelected');
}
break;
}
} while ((node = node.parentNode) != null);
},
 
// Private theme internal functions
 
// This function auto imports CSS classes into the class selection droplist
_setupCSSClasses : function(editor_id) {
var i, selectElm;
 
if (!TinyMCE_AdvancedTheme._autoImportCSSClasses)
return;
 
selectElm = document.getElementById(editor_id + '_styleSelect');
 
if (selectElm && selectElm.getAttribute('cssImported') != 'true') {
var csses = tinyMCE.getCSSClasses(editor_id);
if (csses && selectElm) {
for (i=0; i<csses.length; i++)
selectElm.options[selectElm.options.length] = new Option(csses[i], csses[i]);
}
 
// Only do this once
if (csses != null && csses.length > 0)
selectElm.setAttribute('cssImported', 'true');
}
},
 
_setCookie : function(name, value, expires, path, domain, secure) {
var curCookie = name + "=" + escape(value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + escape(path) : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
 
document.cookie = curCookie;
},
 
_getCookie : function(name) {
var dc = document.cookie;
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
 
if (begin == -1) {
begin = dc.indexOf(prefix);
 
if (begin != 0)
return null;
} else
begin += 2;
 
var end = document.cookie.indexOf(";", begin);
 
if (end == -1)
end = dc.length;
 
return unescape(dc.substring(begin + prefix.length, end));
},
 
_resizeTo : function(inst, w, h, set_w) {
var editorContainer = document.getElementById(inst.editorId + '_parent');
var tableElm = editorContainer.firstChild;
var iframe = inst.iframeElement;
 
if (w == null || w == "null") {
set_w = false;
w = 0;
}
 
if (h == null || h == "null")
return;
 
w = parseInt(w);
h = parseInt(h);
 
if (tinyMCE.isGecko) {
w += 2;
h += 2;
}
 
var dx = w - tableElm.clientWidth;
var dy = h - tableElm.clientHeight;
 
w = w < 1 ? 30 : w;
h = h < 1 ? 30 : h;
 
if (set_w)
tableElm.style.width = w + "px";
 
tableElm.style.height = h + "px";
 
iw = iframe.clientWidth + dx;
ih = iframe.clientHeight + dy;
 
iw = iw < 1 ? 30 : iw;
ih = ih < 1 ? 30 : ih;
 
if (tinyMCE.isGecko) {
iw -= 2;
ih -= 2;
}
 
if (set_w)
iframe.style.width = iw + "px";
 
iframe.style.height = ih + "px";
 
// Is it to small, make it bigger again
if (set_w) {
var tableBodyElm = tableElm.firstChild;
var minIframeWidth = tableBodyElm.scrollWidth;
if (inst.iframeElement.clientWidth < minIframeWidth) {
dx = minIframeWidth - inst.iframeElement.clientWidth;
 
inst.iframeElement.style.width = (iw + dx) + "px";
}
}
 
// Remove pesky table controls
inst.useCSS = false;
},
 
/**
* Handles resizing events.
*/
_resizeEventHandler : function(e) {
var resizer = TinyMCE_AdvancedTheme._resizer;
 
// Do nothing
if (!resizer.resizing)
return;
 
e = typeof(e) == "undefined" ? window.event : e;
 
var dx = e.screenX - resizer.downX;
var dy = e.screenY - resizer.downY;
var resizeBox = resizer.resizeBox;
var editorId = resizer.editorId;
 
switch (e.type) {
case "mousemove":
var w, h;
 
w = resizer.width + dx;
h = resizer.height + dy;
 
w = w < 1 ? 1 : w;
h = h < 1 ? 1 : h;
 
if (resizer.horizontal)
resizeBox.style.width = w + "px";
 
resizeBox.style.height = h + "px";
break;
 
case "mouseup":
TinyMCE_AdvancedTheme._setResizing(e, editorId, false);
TinyMCE_AdvancedTheme._resizeTo(tinyMCE.getInstanceById(editorId), resizer.width + dx, resizer.height + dy, resizer.horizontal);
 
// Expire in a month
if (tinyMCE.getParam("theme_advanced_resizing_use_cookie", true)) {
var expires = new Date();
expires.setTime(expires.getTime() + 3600000 * 24 * 30);
 
// Set the cookies
TinyMCE_AdvancedTheme._setCookie("TinyMCE_" + editorId + "_width", "" + (resizer.horizontal ? resizer.width + dx : ""), expires);
TinyMCE_AdvancedTheme._setCookie("TinyMCE_" + editorId + "_height", "" + (resizer.height + dy), expires);
}
break;
}
},
 
/**
* Starts/stops the editor resizing.
*/
_setResizing : function(e, editor_id, state) {
e = typeof(e) == "undefined" ? window.event : e;
 
var resizer = TinyMCE_AdvancedTheme._resizer;
var editorContainer = document.getElementById(editor_id + '_parent');
var editorArea = document.getElementById(editor_id + '_parent').firstChild;
var resizeBox = document.getElementById(editor_id + '_resize_box');
var inst = tinyMCE.getInstanceById(editor_id);
 
if (state) {
// Place box over editor area
var width = editorArea.clientWidth;
var height = editorArea.clientHeight;
 
resizeBox.style.width = width + "px";
resizeBox.style.height = height + "px";
 
resizer.iframeWidth = inst.iframeElement.clientWidth;
resizer.iframeHeight = inst.iframeElement.clientHeight;
 
// Hide editor and show resize box
editorArea.style.display = "none";
resizeBox.style.display = "block";
 
// Add event handlers, only once
if (!resizer.eventHandlers) {
if (tinyMCE.isMSIE)
tinyMCE.addEvent(document, "mousemove", TinyMCE_AdvancedTheme._resizeEventHandler);
else
tinyMCE.addEvent(window, "mousemove", TinyMCE_AdvancedTheme._resizeEventHandler);
 
tinyMCE.addEvent(document, "mouseup", TinyMCE_AdvancedTheme._resizeEventHandler);
 
resizer.eventHandlers = true;
}
 
resizer.resizing = true;
resizer.downX = e.screenX;
resizer.downY = e.screenY;
resizer.width = parseInt(resizeBox.style.width);
resizer.height = parseInt(resizeBox.style.height);
resizer.editorId = editor_id;
resizer.resizeBox = resizeBox;
resizer.horizontal = tinyMCE.getParam("theme_advanced_resize_horizontal", true);
} else {
resizer.resizing = false;
resizeBox.style.display = "none";
editorArea.style.display = tinyMCE.isMSIE && !tinyMCE.isOpera ? "block" : "table";
tinyMCE.execCommand('mceResetDesignMode');
}
},
 
_getColorHTML : function(id, n, cm) {
var i, h, cl;
 
h = '<span class="mceMenuLine"></span>';
cl = tinyMCE.getParam(n, TinyMCE_AdvancedTheme._defColors).split(',');
 
h += '<table class="mceColors"><tr>';
for (i=0; i<cl.length; i++) {
c = 'tinyMCE.execInstanceCommand(\'' + id + '\', \'' + cm + '\', false, \'#' + cl[i] + '\');';
h += '<td><a href="javascript:' + c + '" style="background-color: #' + cl[i] + '" onclick="' + c + ';return false;"></a></td>';
 
if ((i+1) % 8 == 0)
h += '</tr><tr>';
}
 
h += '</tr></table>';
 
if (tinyMCE.getParam("theme_advanced_more_colors", true))
h += '<a href="javascript:void(0);" onclick="TinyMCE_AdvancedTheme._pickColor(\'' + id + '\',\'' + cm + '\');" class="mceMoreColors">' + tinyMCE.getLang('lang_more_colors') + '</a>';
 
return h;
},
 
_pickColor : function(id, cm) {
var inputColor, inst = tinyMCE.selectedInstance;
 
if (cm == 'forecolor' && inst)
inputColor = inst.foreColor;
 
if ((cm == 'backcolor' || cm == 'HiliteColor') && inst)
inputColor = inst.backColor;
 
tinyMCE.execCommand('mceColorPicker', true, {color : inputColor, callback : function(c) {
tinyMCE.execInstanceCommand(id, cm, false, c);
}});
},
 
_insertImage : function(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout) {
tinyMCE.execCommand("mceInsertContent", false, tinyMCE.createTagHTML('img', {
src : tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src), // Force absolute
mce_src : src,
alt : alt,
border : border,
hspace : hspace,
vspace : vspace,
width : width,
height : height,
align : align,
title : title,
onmouseover : onmouseover,
onmouseout : onmouseout
}));
},
 
_insertLink : function(href, target, title, onclick, style_class) {
tinyMCE.execCommand('mceBeginUndoLevel');
 
if (tinyMCE.selectedInstance && tinyMCE.selectedElement && tinyMCE.selectedElement.nodeName.toLowerCase() == "img") {
var doc = tinyMCE.selectedInstance.getDoc();
var linkElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "a");
var newLink = false;
 
if (!linkElement) {
linkElement = doc.createElement("a");
newLink = true;
}
 
var mhref = href;
var thref = eval(tinyMCE.settings['urlconverter_callback'] + "(href, linkElement);");
mhref = tinyMCE.getParam('convert_urls') ? href : mhref;
 
tinyMCE.setAttrib(linkElement, 'href', thref);
tinyMCE.setAttrib(linkElement, 'mce_href', mhref);
tinyMCE.setAttrib(linkElement, 'target', target);
tinyMCE.setAttrib(linkElement, 'title', title);
tinyMCE.setAttrib(linkElement, 'onclick', onclick);
tinyMCE.setAttrib(linkElement, 'class', style_class);
 
if (newLink) {
linkElement.appendChild(tinyMCE.selectedElement.cloneNode(true));
tinyMCE.selectedElement.parentNode.replaceChild(linkElement, tinyMCE.selectedElement);
}
 
return;
}
 
if (!tinyMCE.linkElement && tinyMCE.selectedInstance) {
if (tinyMCE.isSafari) {
tinyMCE.execCommand("mceInsertContent", false, '<a href="' + tinyMCE.uniqueURL + '">' + tinyMCE.selectedInstance.selection.getSelectedHTML() + '</a>');
} else
tinyMCE.selectedInstance.contentDocument.execCommand("createlink", false, tinyMCE.uniqueURL);
 
tinyMCE.linkElement = tinyMCE.getElementByAttributeValue(tinyMCE.selectedInstance.contentDocument.body, "a", "href", tinyMCE.uniqueURL);
 
var elementArray = tinyMCE.getElementsByAttributeValue(tinyMCE.selectedInstance.contentDocument.body, "a", "href", tinyMCE.uniqueURL);
 
for (var i=0; i<elementArray.length; i++) {
var mhref = href;
var thref = eval(tinyMCE.settings['urlconverter_callback'] + "(href, elementArray[i]);");
mhref = tinyMCE.getParam('convert_urls') ? href : mhref;
 
tinyMCE.setAttrib(elementArray[i], 'href', thref);
tinyMCE.setAttrib(elementArray[i], 'mce_href', mhref);
tinyMCE.setAttrib(elementArray[i], 'target', target);
tinyMCE.setAttrib(elementArray[i], 'title', title);
tinyMCE.setAttrib(elementArray[i], 'onclick', onclick);
tinyMCE.setAttrib(elementArray[i], 'class', style_class);
}
 
tinyMCE.linkElement = elementArray[0];
}
 
if (tinyMCE.linkElement) {
var mhref = href;
href = eval(tinyMCE.settings['urlconverter_callback'] + "(href, tinyMCE.linkElement);");
mhref = tinyMCE.getParam('convert_urls') ? href : mhref;
 
tinyMCE.setAttrib(tinyMCE.linkElement, 'href', href);
tinyMCE.setAttrib(tinyMCE.linkElement, 'mce_href', mhref);
tinyMCE.setAttrib(tinyMCE.linkElement, 'target', target);
tinyMCE.setAttrib(tinyMCE.linkElement, 'title', title);
tinyMCE.setAttrib(tinyMCE.linkElement, 'onclick', onclick);
tinyMCE.setAttrib(tinyMCE.linkElement, 'class', style_class);
}
 
tinyMCE.execCommand('mceEndUndoLevel');
}
};
 
tinyMCE.addTheme("advanced", TinyMCE_AdvancedTheme);
 
// Add default buttons maps for advanced theme and all internal plugins
tinyMCE.addButtonMap(TinyMCE_AdvancedTheme._buttonMap);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/langs/en.js
New file
0,0 → 1,93
// UK lang variables
 
tinyMCE.addToLang('',{
theme_style_select : '-- Styles --',
theme_code_desc : 'Edit HTML Source',
theme_code_title : 'HTML Source Editor',
theme_code_wordwrap : 'Word wrap',
theme_sub_desc : 'Subscript',
theme_sup_desc : 'Superscript',
theme_hr_desc : 'Insert horizontal ruler',
theme_removeformat_desc : 'Remove formatting',
theme_custom1_desc : 'Your custom description here',
insert_image_border : 'Border',
insert_image_dimensions : 'Dimensions',
insert_image_vspace : 'Vertical space',
insert_image_hspace : 'Horizontal space',
insert_image_align : 'Alignment',
insert_image_align_default : '-- Not set --',
insert_image_align_baseline : 'Baseline',
insert_image_align_top : 'Top',
insert_image_align_middle : 'Middle',
insert_image_align_bottom : 'Bottom',
insert_image_align_texttop : 'TextTop',
insert_image_align_absmiddle : 'Absolute Middle',
insert_image_align_absbottom : 'Absolute Bottom',
insert_image_align_left : 'Left',
insert_image_align_right : 'Right',
theme_font_size : '-- Font size --',
theme_fontdefault : '-- Font family --',
theme_block : '-- Format --',
theme_paragraph : 'Paragraph',
theme_div : 'Div',
theme_address : 'Address',
theme_pre : 'Preformatted',
theme_h1 : 'Heading 1',
theme_h2 : 'Heading 2',
theme_h3 : 'Heading 3',
theme_h4 : 'Heading 4',
theme_h5 : 'Heading 5',
theme_h6 : 'Heading 6',
theme_blockquote : 'Blockquote',
theme_code : 'Code',
theme_samp : 'Code sample',
theme_dt : 'Definition term ',
theme_dd : 'Definition description',
theme_colorpicker_title : 'Select a color',
theme_colorpicker_apply : 'Apply',
theme_forecolor_desc : 'Select text color',
theme_backcolor_desc : 'Select background color',
theme_charmap_title : 'Select custom character',
theme_charmap_desc : 'Insert custom character',
theme_visualaid_desc : 'Toggle guidelines/invisible elements',
insert_anchor_title : 'Insert/edit anchor',
insert_anchor_name : 'Anchor name',
theme_anchor_desc : 'Insert/edit anchor',
theme_insert_link_titlefield : 'Title',
theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
theme_path : 'Path',
cut_desc : 'Cut',
copy_desc : 'Copy',
paste_desc : 'Paste',
link_list : 'Link list',
image_list : 'Image list',
browse : 'Browse',
image_props_desc : 'Image properties',
newdocument_desc : 'New document',
class_name : 'Class',
newdocument : 'Are you sure you want clear all contents?',
about_title : 'About TinyMCE',
about : 'About',
license : 'License',
plugins : 'Plugins',
plugin : 'Plugin',
author : 'Author',
version : 'Version',
loaded_plugins : 'Loaded plugins',
help : 'Help',
not_set : '-- Not set --',
close : 'Close',
toolbar_focus : 'Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X',
invalid_data : 'Error: Invalid values entered, these are marked in red.',
more_colors : 'More colors',
color_picker_tab : 'Picker',
color_picker : 'Color picker',
web_colors_tab : 'Palette',
web_colors : 'Palette colors',
named_colors_tab : 'Named',
named_colors : 'Named colors',
color : 'Color:',
color_name : 'Name:',
is_email : 'The URL you entered seems to be an email address, do you want to add the required mailto: prefix?',
is_external : 'The URL you entered seems to external link, do you want to add the required http:// prefix?'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/langs/fr.js
New file
0,0 → 1,92
// FR lang variables
// Modified by shadow walker, last updated 2007-03-16, based on the work of Motte
 
tinyMCE.addToLang('',{
theme_style_select : '-- Style --',
theme_code_desc : 'Afficher le code source',
theme_code_title : 'Edition du code source',
theme_code_wordwrap : 'Retour &agrave; la ligne automatique',
theme_sub_desc : 'Indice',
theme_sup_desc : 'Exposant',
theme_hr_desc : 'Ins&eacute;rer une r&egrave;gle horizontale ordinaire',
theme_removeformat_desc : 'Supprimer le formatage',
theme_custom1_desc : 'Votre description personnalis&eacute;e ici',
insert_image_border : 'Bordure',
insert_image_dimensions : 'Dimensions',
insert_image_vspace : 'Espacement vertical',
insert_image_hspace : 'Espacement horizontal',
insert_image_align : 'Alignement',
insert_image_align_default : '-- Ind&eacute;fini --',
insert_image_align_baseline : 'Ligne de base',
insert_image_align_top : 'Haut',
insert_image_align_middle : 'Milieu',
insert_image_align_bottom : 'Bas',
insert_image_align_texttop : 'Haut du texte',
insert_image_align_absmiddle : 'Milieu absolu',
insert_image_align_absbottom : 'Bas absolu',
insert_image_align_left : 'En flottement &agrave; gauche',
insert_image_align_right : 'En flottement &agrave; droite',
theme_font_size : '-- Taille --',
theme_fontdefault : '-- Police --',
theme_block : '-- Bloc de texte --',
theme_paragraph : 'Paragraphe',
theme_div : 'Div',
theme_address : 'Infos sur l\'auteur',
theme_pre : 'Texte pr&eacute;format&eacute;',
theme_h1 : 'Titre de niveau 1',
theme_h2 : 'Titre de niveau 2',
theme_h3 : 'Titre de niveau 3',
theme_h4 : 'Titre de niveau 4',
theme_h5 : 'Titre de niveau 5',
theme_h6 : 'Titre de niveau 6',
theme_blockquote : 'Citation',
theme_code : 'Code',
theme_samp : 'Exemple de code',
theme_dt : 'Definition du therme ',
theme_dd : 'Definition de la description',
theme_colorpicker_title : 'Choisir une couleur',
theme_colorpicker_apply : 'Appliquer',
theme_forecolor_desc : 'Couleur du texte',
theme_backcolor_desc : 'Couleur d\'arri&egrave;re-plan',
theme_charmap_title : 'S&eacute;lectionner un caract&egrave;re sp&eacute;cial',
theme_charmap_desc : 'Ins&eacute;rer un caract&egrave;re sp&eacute;cial',
theme_visualaid_desc : 'Activer/D&eacute;sactiver les lignes guides et les &eacute;l&eacute;ments invisibles',
insert_anchor_title : 'Gestionnaire d\'ancre',
insert_anchor_name : 'Nom de l\'ancre',
theme_anchor_desc : 'Ins&eacute;rer/Modifier une ancre',
theme_insert_link_titlefield : 'Info-bulle',
theme_clipboard_msg : 'Pour des raisons de s&eacute;curit&eacute;, les fonctions « Copier », « Couper » et « Coller »\nne sont pas disponibles dans Mozilla et Firefox.\n\n\nVoulez-vous plus d\'information &agrave; ce sujet?\n',
theme_path : 'El&eacute;ment(s) en cours ',
cut_desc : 'Couper',
copy_desc : 'Copier',
paste_desc : 'Coller',
link_list : 'Lien de la liste',
image_list : 'Image de la liste',
browse : 'Naviguer',
image_props_desc : 'Propri&eacute;t&eacute;s de l\'image',
newdocument_desc : 'Nouveau document',
class_name : 'Classe CSS',
newdocument : 'Etes-vous s&ucirc;r de vouloir supprimer tout le contenu ?',
about_title : 'A propos de TinyMCE',
about : 'A propos',
license : 'License',
plugins : 'Extensions',
plugin : 'Extension',
author : 'Auteur',
version : 'Version',
loaded_plugins : 'Extensions install&eacute;es',
help : 'Aide',
not_set : '-- Ind&eacute;fini --',
close : 'Fermer',
toolbar_focus : 'Atteindre la barre d\'outils (Alt+Q), Atteindre l\'&eacute;diteur (Alt-Z), Atteindre l\'&eacute;l&eacute;ment en cours (Alt-X)',
invalid_data : 'Erreur: La valeur en rouge est incorrecte.',
more_colors : 'Plus de couleurs',
color_picker_tab : 'Pipette',
color_picker : 'Palette de couleur',
web_colors_tab : 'S&eacute;curis&eacute; pour le web',
web_colors : 'Couleur s&eacute;curis&eacute;e pour le web',
named_colors_tab : 'Nom',
named_colors : 'Nom de la couleur',
color : 'Couleur:',
color_name : 'Nom:'
});
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/link.htm
New file
0,0 → 1,101
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_insert_link_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/link.js"></script>
<base target="_self" />
</head>
<body id="link" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<form onsubmit="insertLink();return false;" action="#">
<div class="tabs">
<ul>
<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_insert_link_title}</a></span></li>
</ul>
</div>
 
<div class="panel_wrapper">
<div id="general_panel" class="panel current">
 
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td nowrap="nowrap"><label for="href">{$lang_insert_link_url}</label></td>
<td><table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input id="href" name="href" type="text" value="" style="width: 200px" onchange="checkPrefix(this);" /></td>
<td id="hrefbrowsercontainer">&nbsp;</td>
</tr>
</table></td>
</tr>
<!-- Link list -->
<script language="javascript">
if (typeof(tinyMCELinkList) != "undefined" && tinyMCELinkList.length > 0) {
var html = "";
 
html += '<tr><td><label for="link_list">{$lang_link_list}</label></td>';
html += '<td><select id="link_list" name="link_list" style="width: 200px" onchange="this.form.href.value=this.options[this.selectedIndex].value;">';
html += '<option value="">---</option>';
 
for (var i=0; i<tinyMCELinkList.length; i++)
html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';
 
html += '</select></td></tr>';
 
document.write(html);
}
</script>
<!-- /Link list -->
<tr>
<td nowrap="nowrap"><label for="target">{$lang_insert_link_target}</label></td>
<td><select id="target" name="target" style="width: 200px">
<option value="_self">{$lang_insert_link_target_same}</option>
<option value="_blank">{$lang_insert_link_target_blank}</option>
<script language="javascript">
var html = "";
var targets = tinyMCE.getParam('theme_advanced_link_targets', '').split(';');
 
for (var i=0; i<targets.length; i++) {
var key, value;
 
if (targets[i] == "")
continue;
 
key = targets[i].split('=')[0];
value = targets[i].split('=')[1];
 
html += '<option value="' + value + '">' + key + '</option>';
}
 
document.write(html);
</script>
</select></td>
</tr>
<tr>
<td nowrap="nowrap"><label for="linktitle">{$lang_theme_insert_link_titlefield}</label></td>
<td><input id="linktitle" name="linktitle" type="text" value="" style="width: 200px"></td>
</tr>
<tr id="styleSelectRow">
<td><label for="styleSelect">{$lang_class_name}</label></td>
<td>
<select id="styleSelect" name="styleSelect">
<option value="" selected>{$lang_theme_style_select}</option>
</select></td>
</tr>
</table>
</div>
</div>
 
<div class="mceActionPanel">
<div style="float: left">
<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertLink();" />
</div>
 
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
</div>
</div>
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/strikethrough.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/strikethrough.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/bold_es.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/bold_es.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/insert_button_bg.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/insert_button_bg.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/justifyleft.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/justifyleft.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/code.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/code.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/italic_ru.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/italic_ru.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/underline_es.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/underline_es.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/color.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/color.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/italic_tw.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/italic_tw.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/justifyfull.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/justifyfull.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/visualaid.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/visualaid.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/outdent.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/outdent.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/underline.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/underline.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/cleanup.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/cleanup.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/cancel_button_bg.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/cancel_button_bg.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/statusbar_resize.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/statusbar_resize.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/sub.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/sub.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/cut.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/cut.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/italic_es.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/italic_es.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/buttons.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/buttons.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/justifycenter.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/justifycenter.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/backcolor.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/backcolor.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/button_menu.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/button_menu.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/browse.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/browse.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/italic_de_se.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/italic_de_se.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/italic.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/italic.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/undo.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/undo.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/close.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/close.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/removeformat.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/removeformat.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/bold_fr.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/bold_fr.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/sup.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/sup.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/hr.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/hr.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/anchor.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/anchor.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/copy.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/copy.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/charmap.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/charmap.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/underline_fr.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/underline_fr.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/colors.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/colors.jpg
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/paste.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/paste.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/spacer.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/spacer.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/bullist.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/bullist.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/bold_de_se.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/bold_de_se.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/bold.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/bold.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/indent.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/indent.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/image.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/image.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/xp/tab_end.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/xp/tab_end.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/xp/tab_bg.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/xp/tab_bg.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/xp/tab_sel_end.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/xp/tab_sel_end.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/xp/tabs_bg.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/xp/tabs_bg.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/bold_ru.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/bold_ru.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/opacity.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/opacity.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/newdocument.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/newdocument.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/help.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/help.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/redo.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/redo.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/forecolor.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/forecolor.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/bold_tw.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/bold_tw.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/custom_1.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/custom_1.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/numlist.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/numlist.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/justifyright.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/justifyright.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/underline_ru.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/underline_ru.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/link.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/link.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/anchor_symbol.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/anchor_symbol.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/underline_tw.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/underline_tw.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/separator.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/separator.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/unlink.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/unlink.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/menu_check.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/images/menu_check.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/css/editor_popup.css
New file
0,0 → 1,331
/* This file contains the CSS data for all popups in TinyMCE */
 
body {
background-color: #F0F0EE;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
scrollbar-3dlight-color: #F0F0EE;
scrollbar-arrow-color: #676662;
scrollbar-base-color: #F0F0EE;
scrollbar-darkshadow-color: #DDDDDD;
scrollbar-face-color: #E0E0DD;
scrollbar-highlight-color: #F0F0EE;
scrollbar-shadow-color: #F0F0EE;
scrollbar-track-color: #F5F5F5;
margin: 8px;
}
 
td {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
}
 
input {
background: #FFFFFF;
border: 1px solid #cccccc;
}
 
td, input, select, textarea {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
}
 
input, select, textarea {
border: 1px solid #808080;
}
 
.input_noborder {
border: 0;
}
 
#insert, .updateButton {
font-weight: bold;
width: 90px;
height: 21px;
border: 0;
background-image: url('../images/insert_button_bg.gif');
cursor: pointer;
}
 
#cancel {
font-weight: bold;
width: 90px;
height: 21px;
border: 0;
background-image: url('../images/cancel_button_bg.gif');
cursor: pointer;
}
 
/* Mozilla only style */
html>body #insert, html>body #cancel {
padding-bottom: 2px;
}
 
.title {
font-size: 12px;
font-weight: bold;
color: #2B6FB6;
}
 
table.charmap {
border-style: solid;
border-width: 1px;
border-color: #AAAAAA;
}
 
td.charmap, td.charmapOver {
color: #000000;
border-color: #AAAAAA;
border-style: solid;
border-width: 1px;
text-align: center;
font-size: 12px;
}
 
td.charmapOver {
background-color: #CCCCCC;
cursor: default;
}
 
a.charmap {
color: #000000;
text-decoration: none
}
 
.wordWrapCode {
vertical-align: middle;
border: 1px none #000000;
background-color: transparent;
}
 
input.radio {
border: 1px none #000000;
background-color: transparent;
vertical-align: middle;
}
 
input.checkbox {
border: 1px none #000000;
background-color: transparent;
vertical-align: middle;
}
 
.mceButtonNormal, .mceButtonOver, .mceButtonDown, .mceSeparator, .mceButtonDisabled, .mceButtonSelected {
margin-left: 1px;
}
 
.mceButtonNormal {
border-top: 1px solid;
border-left: 1px solid;
border-bottom: 1px solid;
border-right: 1px solid;
border-color: #F0F0EE;
cursor: default;
}
 
.mceButtonOver {
border: 1px solid #0A246A;
cursor: default;
background-color: #B6BDD2;
}
 
.mceButtonDown {
cursor: default;
border: 1px solid #0A246A;
background-color: #8592B5;
}
 
.mceButtonDisabled {
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);
-moz-opacity:0.3;
opacity: 0.3;
border-top: 1px solid;
border-left: 1px solid;
border-bottom: 1px solid;
border-right: 1px solid;
border-color: #F0F0EE;
cursor: default;
}
 
.mceActionPanel {
margin-top: 5px;
}
 
/* Tabs classes */
 
.tabs {
float: left;
width: 100%;
line-height: normal;
background-image: url("../images/xp/tabs_bg.gif");
}
 
.tabs ul {
margin: 0;
padding: 0 0 0;
list-style: none;
}
 
.tabs li {
float: left;
background: url("../images/xp/tab_bg.gif") no-repeat left top;
margin: 0;
margin-left: 0;
margin-right: 2px;
padding: 0 0 0 10px;
line-height: 18px;
}
 
.tabs li.current {
background: url("../images/xp/tab_sel_bg.gif") no-repeat left top;
margin-right: 2px;
}
 
.tabs span {
float: left;
display: block;
background: url("../images/xp/tab_end.gif") no-repeat right top;
padding: 0px 10px 0 0;
}
 
.tabs .current span {
background: url("../images/xp/tab_sel_end.gif") no-repeat right top;
}
 
.tabs a {
text-decoration: none;
font-family: Verdana, Arial;
font-size: 10px;
}
 
.tabs a:link, .tabs a:visited, .tabs a:hover {
color: black;
}
 
.tabs a:hover {
}
 
.tabs .current {
}
 
.tabs .current a, .tabs .current a:link, .tabs .current a:visited {
}
 
.panel_wrapper div.panel {
display: none;
}
 
.panel_wrapper div.current {
display: block;
width: 100%;
height: 300px;
overflow: visible; /* Should be auto but that breaks Safari */
}
 
.panel_wrapper {
border: 1px solid #919B9C;
border-top: 0px;
padding: 10px;
padding-top: 5px;
clear: both;
background-color: white;
}
 
fieldset {
border: 1px solid #919B9C;
font-family: Verdana, Arial;
font-size: 10px;
padding: 0;
margin: 0;
padding: 4px;
}
 
legend {
color: #2B6FB6;
font-weight: bold;
}
 
.properties {
width: 100%;
}
 
.properties .column1 {
}
 
.properties .column2 {
text-align: left;
}
 
a:link, a:visited {
color: black;
}
 
a:hover {
color: #2B6FB6;
}
 
#plugintable thead {
font-weight: bold;
background-color: #DDDDDD;
}
 
#plugintable, #about #plugintable td {
border: 1px solid #919B9C;
}
 
#plugintable {
width: 99%;
margin-top: 10px;
}
 
#pluginscontainer {
height: 290px;
overflow: auto;
}
 
/* MSIE Specific styles */
 
* html .panel_wrapper {
width: 100%;
}
 
.column {
float: left;
}
 
h1, h2, h3, h4 {
color: #2B6FB6;
margin: 0;
padding: 0;
padding-top: 5px;
}
 
h3 {
font-size: 14px;
}
 
#link .panel_wrapper, #link div.current {
height: 125px;
}
 
#image .panel_wrapper, #image div.current {
height: 190px;
}
 
label.msg { display: none; }
label.invalid { color: #EE0000; display: inline; }
input.invalid { border: 1px solid #EE0000; }
 
/* Disables the advanced tab in the table plugin. */
/*
#table #advanced_tab {
display: none;
}
*/
 
/* Disables the border input field and label in the table plugin. */
/*
#table #border, #table #borderlabel {
display: none;
}
*/
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/css/colorpicker.css
New file
0,0 → 1,53
/* Colorpicker dialog specific CSS */
 
#preview {
float: right;
width: 50px;
height: 14px;
line-height: 1px;
border: 1px solid black;
margin-left: 5px;
}
 
#colorpicker {
float: left;
cursor: crosshair;
}
 
#light {
border: 1px solid gray;
margin-left: 5px;
float: left;
width: 15px;
cursor: crosshair;
}
 
#light div {
overflow: hidden;
}
 
#previewblock {
float: right;
padding-left: 10px;
height: 20px;
}
 
.panel_wrapper div.current {
height: 175px;
}
 
#namedcolors {
width: 150px;
}
 
#namedcolors a {
display: block;
float: left;
width: 10px; height: 10px;
margin: 1px 1px 0 0;
overflow: hidden;
}
 
#colornamecontainer {
margin-top: 5px;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/css/editor_content.css
New file
0,0 → 1,58
/* This file contains the CSS data for the editable area(iframe) of TinyMCE */
/* You can extend this CSS by adding your own CSS file with the the content_css option */
 
body, td, pre {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
}
 
body {
background-color: #FFFFFF;
}
 
.mceVisualAid {
border: 1px dashed #BBBBBB !important;
}
 
div.mceVisualAid {
background-image:url('../images/spacer.gif');
visibility: visible !important;
}
 
.mceItemAnchor {
width: 12px;
line-height: 6px;
overflow: hidden;
padding-left: 12px;
background-image: url('../images/anchor_symbol.gif');
background-position: bottom;
background-repeat: no-repeat;
}
 
/* Important is needed in Gecko browsers inorder to style links */
/*
a {
color: green !important;
}
*/
 
/* Style selection range colors in Gecko browsers */
/*
::-moz-selection {
background-color: red;
color: green;
}
*/
 
/* MSIE specific */
 
* html body {
scrollbar-3dlight-color: #F0F0EE;
scrollbar-arrow-color: #676662;
scrollbar-base-color: #F0F0EE;
scrollbar-darkshadow-color: #DDDDDD;
scrollbar-face-color: #E0E0DD;
scrollbar-highlight-color: #F0F0EE;
scrollbar-shadow-color: #F0F0EE;
scrollbar-track-color: #F5F5F5;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/css/editor_ui.css
New file
0,0 → 1,97
/* This file contains the CSS data for the editor UI of TinyMCE instances */
 
.mceToolbarTop a, .mceToolbarTop a:visited, .mceToolbarTop a:hover, .mceToolbarBottom a, .mceToolbarBottom a:visited, .mceToolbarBottom a:hover {border: 0; margin: 0; padding: 0; background: transparent;}
.mceSeparatorLine {border: 0; padding: 0; margin-left: 4px; margin-right: 2px;}
.mceSelectList {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 7pt !important; font-weight: normal; margin-top: 3px; padding: 0; display: inline; vertical-align: top; background-color: #F0F0EE;}
.mceLabel, .mceLabelDisabled {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt;}
.mceLabel {color: #000000;}
.mceLabelDisabled {cursor: text; color: #999999;}
.mceEditor {background: #F0F0EE; border: 1px solid #cccccc; padding: 0; margin: 0;}
.mceEditorArea { font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; background: #FFFFFF; padding: 0; margin: 0; }
.mceToolbarTop, .mceToolbarBottom {background: #F0F0EE; line-height: 1px; font-size: 1px;}
.mceToolbarTop {border-bottom: 1px solid #cccccc; padding-bottom: 1px;}
.mceToolbarBottom {border-top: 1px solid #cccccc;}
.mceToolbarContainer {display: block; position: relative; left: 0; top: 0; width: 100%;}
.mceStatusbarTop, .mceStatusbarBottom, .mceStatusbar {height: 20px;}
.mceStatusbarTop .mceStatusbarPathText, .mceStatusbarBottom .mceStatusbarPathText, .mceStatusbar .mceStatusbarPathText {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt; padding: 2px; line-height: 16px; overflow: visible;}
.mceStatusbarTop {border-bottom: 1px solid #cccccc;}
.mceStatusbarBottom {border-top: 1px solid #cccccc;}
.mceStatusbar {border-bottom: 1px solid #cccccc;}
.mcePathItem, .mcePathItem:link, .mcePathItem:visited, .mcePathItem:hover {text-decoration: none; font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt; color: #000000;}
.mcePathItem:hover {text-decoration: underline;}
.mceStatusbarPathText {float: left;}
.mceStatusbarResize {float: right; background-image: url('../images/statusbar_resize.gif'); background-repeat: no-repeat; width: 11px; height: 20px; cursor: se-resize;}
.mceResizeBox {width: 10px; height: 10px; display: none; border: 1px dotted gray; margin: 0; padding: 0;}
.mceEditorIframe {border: 0;}
 
/* Button CSS rules */
 
a.mceButtonDisabled img, a.mceButtonNormal img, a.mceButtonSelected img {width: 20px; height: 20px; cursor: default; margin-top: 1px; margin-left: 1px;}
a.mceButtonDisabled img {border: 0 !important;}
a.mceButtonNormal img, a.mceButtonSelected img {border: 1px solid #F0F0EE !important;}
a.mceButtonSelected img {border: 1px solid #6779AA !important; background-color: #D4D5D8;}
a.mceButtonNormal img:hover, a.mceButtonSelected img:hover {border: 1px solid #0A246A !important; cursor: default; background-color: #B6BDD2;}
a.mceButtonDisabled img {-moz-opacity:0.3; opacity: 0.3; border: 1px solid #F0F0EE !important; cursor: default;}
a.mceTiledButton img {background-image: url('../images/buttons.gif'); background-repeat: no-repeat;}
 
/* Menu button CSS rules */
 
span.mceMenuButton img, span.mceMenuButtonSelected img {border: 1px solid #F0F0EE; margin-left: 1px;}
span.mceMenuButtonSelected img {border: 1px solid #6779AA; background-color: #B6BDD2;}
span.mceMenuButtonSelected img.mceMenuButton {border: 1px solid #F0F0EE; background-color: transparent;}
span.mceMenuButton img.mceMenuButton, span.mceMenuButtonSelected img.mceMenuButton {border-left: 0; margin-left: 0;}
span.mceMenuButton:hover img, span.mceMenuButtonSelected:hover img {border: 1px solid #0A246A; background-color: #B6BDD2;}
span.mceMenuButton:hover img.mceMenuButton, span.mceMenuButtonSelected:hover img.mceMenuButton {border-left: 0;}
span.mceMenuButtonFocus img {border: 1px solid gray; border-right: 0; margin-left: 1px; background-color: #F5F4F2;}
span.mceMenuButtonFocus img.mceMenuButton {border: 1px solid gray; border-left: 1px solid #F5F4F2; margin-left: 0;}
span.mceMenuHover img {border: 1px solid #0A246A; background-color: #B6BDD2;}
span.mceMenuButtonSelected.mceMenuHover img.mceMenuButton {border: 1px solid #0A246A; background-color: #B6BDD2; border-left: 0;}
 
/* Menu */
 
.mceMenu {position: absolute; left: 0; top: 0; display: none; z-index: 1000; background-color: white; border: 1px solid gray; font-weight: normal;}
.mceMenu a, .mceMenuTitle, .mceMenuDisabled {display: block; width: 100%; text-decoration: none; background-color: white; font-family: Tahoma, Verdana, Arial, Helvetica; font-size: 11px; line-height: 20px; color: black;}
.mceMenu a:hover {background-color: #B6BDD2; color: black; text-decoration: none !important;}
.mceMenu span {padding-left: 10px; padding-right: 10px; display: block; line-height: 20px;}
.mceMenuSeparator {border-bottom: 1px solid gray; background-color: gray; height: 1px;}
.mceMenuTitle span {padding-left: 5px;}
.mceMenuTitle {background-color: #DDDDDD; font-weight: bold;}
.mceMenuDisabled {color: gray;}
span.mceMenuSelectedItem {background-image: url('../images/menu_check.gif'); background-repeat: no-repeat; background-position: 5px 8px; padding-left: 20px;}
span.mceMenuCheckItem {padding-left: 20px;}
span.mceMenuLine {display: block; position: absolute; left: 0; top: -1px; background-color: #F5F4F2; width: 30px; height: 1px; overflow: hidden; padding-left: 0; padding-right: 0;}
.mceColors table, .mceColors td {margin: 0; padding: 2px;}
a.mceMoreColors {width: auto; padding: 0; margin: 0 3px 3px 3px; text-align: center; border: 1px solid white; text-decoration: none !important;}
.mceColorPreview {position: absolute; overflow:hidden; left: 0; top: 0; margin-left: 3px; margin-top: 15px; width: 16px; height: 4px; background-color: red;}
a.mceMoreColors:hover {border: 1px solid #0A246A;}
.mceColors td a {width: 9px; height: 9px; overflow: hidden; border: 1px solid #808080;}
 
/* MSIE 6 specific rules */
 
* html a.mceButtonNormal img, * html a.mceButtonSelected img, * html a.mceButtonDisabled img {border: 0 !important; margin-top: 2px; margin-bottom: 1px;}
* html a.mceButtonDisabled img {filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); border: 0 !important;}
* html a.mceButtonDisabled {border: 1px solid #F0F0EE !important;}
* html a.mceButtonNormal, * html a.mceButtonSelected {border: 1px solid #F0F0EE !important; cursor: default;}
* html a.mceButtonSelected {border: 1px solid #6779AA !important; background-color: #D4D5D8;}
* html a.mceButtonNormal:hover, * html a.mceButtonSelected:hover {border: 1px solid #0A246A !important; background-color: #B6BDD2; cursor: default;}
* html .mceSelectList {margin-top: 2px;}
* html span.mceMenuButton, * html span.mceMenuButtonFocus {position: relative; left: 0; top: 0;}
* html span.mceMenuButton img, * html span.mceMenuButtonSelected img, * html span.mceMenuButtonFocus img {position: relative; top: 1px;}
* html a.mceMoreColors {width: auto;}
* html .mceColors td a {width: 10px; height: 10px;}
* html .mceColorPreview {margin-left: 2px; margin-top: 14px;}
 
/* MSIE 7 specific rules */
 
*:first-child+html a.mceButtonNormal img, *:first-child+html a.mceButtonSelected img, *:first-child+html a.mceButtonDisabled img {border: 0 !important; margin-top: 2px; margin-bottom: 1px;}
*:first-child+html a.mceButtonDisabled img {filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); border: 0 !important;}
*:first-child+html a.mceButtonDisabled {border: 1px solid #F0F0EE !important;}
*:first-child+html a.mceButtonNormal, *:first-child+html a.mceButtonSelected {border: 1px solid #F0F0EE !important; cursor: default;}
*:first-child+html a.mceButtonSelected {border: 1px solid #6779AA !important; background-color: #D4D5D8;}
*:first-child+html a.mceButtonNormal:hover, *:first-child+html a.mceButtonSelected:hover {border: 1px solid #0A246A !important; background-color: #B6BDD2; cursor: default;}
*:first-child+html .mceSelectList {margin-top: 2px;}
*:first-child+html span.mceMenuButton, *:first-child+html span.mceMenuButtonFocus {position: relative; left: 0; top: 0;}
*:first-child+html span.mceMenuButton img, *:first-child+html span.mceMenuButtonSelected img, *:first-child+html span.mceMenuButtonFocus img {position: relative; top: 1px;}
*:first-child+html a.mceMoreColors {width: 137px;}
*:first-child+html .mceColors td a {width: 10px; height: 10px;}
*:first-child+html .mceColorPreview {margin: 0; padding-left: 4px; margin-top: 14px; width: 14px;}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/docs/en/style.css
New file
0,0 → 1,28
body { background-color: #FFFFFF; }
body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
.subtitle { font-size: 12px; font-weight: bold; }
 
.toc_ul, .toc_li { margin-left: 8px; line-height: 16px; }
.step_ol, .step_li { margin-left: 11px; line-height: 16px; }
img { border: #000000 solid 1px; }
 
a:visited { color: #666666; text-decoration: underline; }
a:active { color: #666666; text-decoration: underline; }
a:hover { color: #666666; text-decoration: underline; }
a { color: #666666; text-decoration: underline; }
 
.pageheader { border: #E0E0E0 solid 1px; }
.pagefooter { border: #E0E0E0 solid 1px; }
.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
.samplecontent { font-size: 10px; }
 
.code { background-color: #FFFFFF; border: #000000 solid 1px; }
.codecontent { font-size: 10px; }
.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold }
.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold }
.codecontent a { color: #666666; text-decoration: none; font-weight: bold }
 
hr { height: 1px; }
 
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/docs/en/insert_image_button.htm
New file
0,0 → 1,65
<html xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<TITLE>Insert image button</TITLE>
<link href="style.css" rel="stylesheet" type="text/css">
</HEAD>
 
<BODY>
 
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
<tr>
<td><span class="title">Insert image button</span></td>
<td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
</tr>
</table>
<hr noshade>
<br>
The insert image button opens the window shown below.<br>
<br>
<img src="images/insert_image_window.gif" alt="Insert image dialog/window" /><br>
<br>
You simply enter a URL to the image you want to link to and enter a image description,
this is then displayed as an alternative text descripton of the image on the page.<br>
<br>
<strong>Field descriptions:</strong><br>
<table border="1" cellspacing="0">
<tr>
<td width="150"><strong>Image URL </strong></td>
<td>URL/path to the image.</td>
</tr>
<tr>
<td width="150"><strong>Image description </strong></td>
<td>Alternative description of image contents.</td>
</tr>
<tr>
<td><strong>Dimentions</strong></td>
<td>Image width/height. </td>
</tr>
<tr>
<td><strong>Alignment</strong></td>
<td>Image alignment, useful when wrapping text around images.</td>
</tr>
<tr>
<td><strong>Border</strong></td>
<td>Border thickness. </td>
</tr>
<tr>
<td><strong>VSpace</strong></td>
<td>Vertical space, useful when wrapping text around images.</td>
</tr>
<tr>
<td><strong>HSpace</strong></td>
<td>Horizontal space, useful when wrapping text around images.</td>
</tr>
</table>
<br>
<hr noshade>
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
<tr>
<td>Go to: <a href="index.htm">Table of contents</a></td>
<td align="right"><a href="#">Top</a></td>
</tr>
</table>
<br>
</BODY>
</HTML>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/docs/en/common_buttons.htm
New file
0,0 → 1,162
<html xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<TITLE>Common buttons</TITLE>
<link href="style.css" rel="stylesheet" type="text/css">
</HEAD>
 
<BODY>
 
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
<tr>
<td><span class="title">Common buttons</span></td>
<td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
</tr>
</table>
<hr noshade>
<br>
Below is a short description about each button.
<br>
<br>
<table border="1" cellpadding="3" cellspacing="0">
<tr>
<td><img src="../../images/bold.gif" width="20" height="20" alt="Bold text icon" /></td>
<td>Bold text style (Ctrl+B).</td>
</tr>
<tr>
<td><img src="../../images/italic.gif" width="20" height="20" alt="Italic text icon" /></td>
<td>Italic text style (Ctrl+I).</td>
</tr>
<tr>
<td><img src="../../images/underline.gif" width="20" height="20" alt="Underline text icon." /></td>
<td>Underline text style (Ctrl+U).</td>
</tr>
<tr>
<td><img src="../../images/strikethrough.gif" width="20" height="20" alt="Strikethrough text icon." /></td>
<td>Strikethrough text style.</td>
</tr>
<tr>
<td><img src="../../images/justifyleft.gif" width="20" height="20" alt="Align left icon." /></td>
<td>Align left.</td>
</tr>
<tr>
<td><img src="../../images/justifycenter.gif" width="20" height="20" alt="Align center icon." /></td>
<td>Align center.</td>
</tr>
<tr>
<td><img src="../../images/justifyright.gif" width="20" height="20" alt="Align right icon." /></td>
<td>Align right.</td>
</tr>
<tr>
<td><img src="../../images/justifyfull.gif" width="20" height="20" alt="Align full icon." /></td>
<td>Align full.</td>
</tr>
<tr>
<td><img src="../../images/bullist.gif" width="20" height="20" alt="Unordered list/bullet list icon." /></td>
<td>Unordered list/bullet list.</td>
</tr>
<tr>
<td><img src="../../images/numlist.gif" width="20" height="20" alt="Ordered list/numbered list icon." /></td>
<td>Ordered list/numbered list</td>
</tr>
<tr>
<td><img src="../../images/outdent.gif" width="20" height="20" alt="Outdent/decrease indentation icon." /></td>
<td>Outdent/decrease indentation.</td>
</tr>
<tr>
<td><img src="../../images/indent.gif" width="20" height="20" alt="Indent/increase indentation icon." /></td>
<td>Indent/increase indentation.</td>
</tr>
<tr>
<td><img src="../../images/undo.gif" width="20" height="20" alt="Undo the last operation." /></td>
<td>Undo the last operation (Ctrl+Z).</td>
</tr>
<tr>
<td><img src="../../images/redo.gif" width="20" height="20" alt="Redo the last operation icon." /></td>
<td>Redo the last operation (Ctrl+Y).</td>
</tr>
<tr>
<td><img src="../../images/link.gif" width="20" height="20" alt="Insert a new link icon." /></td>
<td>Insert a new link, read more about this function in the <a href="insert_link_button.htm">Insert
link section</a>.</td>
</tr>
<tr>
<td><img src="../../images/unlink.gif" width="20" height="20" alt="Unlinks the current selection icon." /></td>
<td>Unlinks the current selection/removes all selected links.</td>
</tr>
<tr>
<td><img src="../../images/anchor.gif" width="20" height="20" alt="Insert a new anchor icon." /></td>
<td>Insert a new anchor, read more about this function in the <a href="insert_anchor_button.htm">Insert anchor section.</a></td>
</tr>
<tr>
<td><img src="../../images/image.gif" width="20" height="20" alt="Insert a new image icon." /></td>
<td>Insert a new image, read more about this function in the <a href="insert_image_button.htm">Insert
image section</a>.</td>
</tr>
<tr>
<td><img src="../../images/cleanup.gif" width="20" height="20" alt="Cleanup code icon." /></td>
<td>Cleanup code/Removes unwanted formating. This function is useful when
you copy contents from for example a office product.</td>
</tr>
<tr>
<td><img src="../../images/help.gif" width="20" height="20" alt="Show help icon." /></td>
<td>Shows this help window.</td>
</tr>
<tr>
<td><img src="../../images/code.gif" width="20" height="20" alt="Source code editor icon." /></td>
<td>Opens HTML source code editor. </td>
</tr>
<tr>
<td><img src="../../../../plugins/table/images/table.gif" width="20" height="20" alt="Insert table icon." /></td>
<td>Inserts a new table at the current location. </td>
</tr>
<tr>
<td><img src="../../../../plugins/table/images/table_insert_row_before.gif" width="20" height="20" alt="Adds a row above icon." /></td>
<td>Adds a row above the current one. </td>
</tr>
<tr>
<td><img src="../../../../plugins/table/images/table_insert_row_after.gif" width="20" height="20" alt="Adds a row under icon." /></td>
<td>Adds a row under the current one. </td>
</tr>
<tr>
<td><img src="../../../../plugins/table/images/table_delete_row.gif" width="20" height="20" alt="Remove row icon." /></td>
<td>Removes the row. </td>
</tr>
<tr>
<td><img src="../../../../plugins/table/images/table_insert_col_before.gif" width="20" height="20" alt="Add column before icon." /></td>
<td>Adds a column before the current one.</td>
</tr>
<tr>
<td><img src="../../../../plugins/table/images/table_insert_col_after.gif" width="20" height="20" alt="Add column after icon." /></td>
<td>Adds a column after the current one.</td>
</tr>
<tr>
<td><img src="../../../../plugins/table/images/table_delete_col.gif" width="20" height="20" alt="Remove column icon." /></td>
<td>Removes the current column.</td>
</tr>
<tr>
<td><img src="../../images/hr.gif" width="20" height="20" alt="Insert horizontal ruler icon." /></td>
<td>Inserts a new horizontal ruler </td>
</tr>
<tr>
<td><img src="../../images/removeformat.gif" width="20" height="20" alt="Remove formatting icon." /></td>
<td>Removes formatting from the selection. </td>
</tr>
<tr>
<td><img src="../../images/sub.gif" width="20" height="20" alt="Subscript icon." /></td>
<td>Makes the selection to be subscript. </td>
</tr>
<tr>
<td><img src="../../images/sup.gif" width="20" height="20" alt="Superscript icon." /></td>
<td>Makes the selection to be superscripted. </td>
</tr>
</table>
<br>
<hr noshade="noshade" />
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
<tr>
<td>Go to: <a href="index.htm">Table of contents</a></td>
<td align="right"><a href="#">Top</a></td>
</tr>
</table>
</BODY>
</HTML>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/docs/en/insert_table_button.htm
New file
0,0 → 1,71
<html xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<TITLE>Insert table button</TITLE>
<link href="style.css" rel="stylesheet" type="text/css">
</HEAD>
 
<BODY>
 
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
<tr>
<td><span class="title">Insert table button</span></td>
<td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
</tr>
</table>
<hr noshade>
<br>
The insert table button opens the window shown below. This action enables you to create tables. <br>
<br>
<img src="images/insert_table_window.gif" width="340" height="229" alt="Image of table window" /><br>
<br>
<strong>Field descriptions:</strong><br>
<table border="1" cellspacing="0">
<tr>
<td width="150"><strong>Columns</strong></td>
<td>Number of columns in the table. </td>
</tr>
<tr>
<td width="150"><strong>Rows</strong></td>
<td>Number of rows in the new table.</td>
</tr>
<tr>
<td><strong>Cellpadding</strong></td>
<td>Cellpadding of the table . </td>
</tr>
<tr>
<td><strong>Cellspacing</strong></td>
<td>Cellspacing of the table .</td>
</tr>
<tr>
<td><strong>Alignment</strong></td>
<td>Table alignment . </td>
</tr>
<tr>
<td><strong>Border</strong></td>
<td>Border thinkness of table.</td>
</tr>
<tr>
<td><strong>Width</strong></td>
<td>Width in pixels of table .</td>
</tr>
<tr>
<td><strong>Height</strong></td>
<td>Height in pixels of table.</td>
</tr>
<tr>
<td><strong>Class</strong></td>
<td>Style or CSS class of table.</td>
</tr>
</table>
<br>
<br>
<hr noshade>
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
<tr>
<td>Go to: <a href="index.htm">Table of contents</a></td>
<td align="right"><a href="#">Top</a></td>
</tr>
</table>
<br>
</BODY>
</HTML>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/docs/en/index.htm
New file
0,0 → 1,27
<html xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<TITLE>Help Index</TITLE>
<link href="style.css" rel="stylesheet" type="text/css">
</HEAD>
<BODY onload="window.focus();">
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
<tr>
<td><span class="title">Table of contents</span></td>
<td align="right">&nbsp;</td>
</tr>
</table>
<hr noshade>
<br>
Click the links below to go to the different help sections.
<ul class="toc_ul">
<li class="toc_li"><a href="about.htm">About TinyMCE</a></li>
<li class="toc_li"><a href="common_buttons.htm">Common buttons</a></li>
<li class="toc_li"><a href="insert_image_button.htm">Insert image button</a></li>
<li class="toc_li"><a href="insert_link_button.htm">Insert link button</a></li>
<li class="toc_li"><a href="insert_anchor_button.htm">Insert anchor button</a></li>
<li class="toc_li"><a href="insert_table_button.htm">Insert table button</a></li>
<li class="toc_li"><a href="create_accessible_content.htm">Create accessible content</a></li>
</ul>
<hr noshade>
</BODY>
</HTML>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm
New file
0,0 → 1,32
<html xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<TITLE>Insert anchor button</TITLE>
<link href="style.css" rel="stylesheet" type="text/css">
</HEAD>
 
<BODY>
 
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
<tr>
<td><span class="title">Insert anchor button</span></td>
<td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
</tr>
</table>
<hr noshade>
<br>
This button opens a new window with the insert/edit anchor function.<br>
<br>
<img src="images/insert_anchor_window.gif" width="330" height="139" alt="Anchor dialog/window" /><br>
<br>
There are one field in this window, this is where you enter the name of you anchor point. Remember the anchor name needs to be unique. <br>
<br>
<hr noshade>
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
<tr>
<td>Go to: <a href="index.htm">Table of contents</a></td>
<td align="right"><a href="#">Top</a></td>
</tr>
</table>
<br>
</BODY>
</HTML>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/docs/en/about.htm
New file
0,0 → 1,31
<html xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<TITLE>About TinyMCE</TITLE>
<link href="style.css" rel="stylesheet" type="text/css">
</HEAD>
 
<BODY>
 
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
<tr>
<td><span class="title">About TinyMCE</span></td>
<td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
</tr>
</table>
<hr noshade>
<br>
TinyMCE is a small WYSIWYG editor control for web browsers such as MSIE or Mozilla
that enables you to edit HTML contents in a more user friendly way. It has common
features that are found in most word processors and should not be difficult to
use.<br>
<br>
<hr noshade>
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
<tr>
<td>Go to: <a href="index.htm">Table of contents</a></td>
<td align="right"><a href="#">Top</a></td>
</tr>
</table>
<br>
</BODY>
</HTML>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm
New file
0,0 → 1,45
<html xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<TITLE>Insert table button</TITLE>
<link href="style.css" rel="stylesheet" type="text/css">
</HEAD>
 
<BODY>
 
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
<tr>
<td><span class="title">Create accessible content</span></td>
<td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
</tr>
</table>
<hr noshade>
<p>TinyMCE can create HTML content that will be accessible to all users, including those with disabilities using assistive technologies, as well as those using text-based browsers, or those browsing the Web with images turned off. </p>
 
<p><strong>Things you can do to make your content accessible:</strong></p>
<ol>
<li><strong>Include an Image Description:</strong> Blind users, or others who are unable to view images, will rely on the Image Description (or Alt text) to take the place of the image. If an image contains no meaning, such as a decoration or a spacer image, leave the Image Description empty. TinyMCE will then insert an empty Alt text attribute that will force assistive technologies to ignore the image. <br /><br /></li>
 
<li> <strong>Add Scope to data table header cells:</strong> In the table cell editor dialog window, choose a Scope when creating Header cells so the column or row label in that cell becomes explicitely associated with its data cells. Table cell headers will then be announced with each data cell, making it easier for blind users using a screen reader to understand what the content of each cell represents. <br /><br /></li>
 
<li><strong> Structure content with properly nested headings:</strong> In the format selection menu choose Heading 1 to Heading 6 to represent headings in your content, rather than using other font formating options. Blind users using a screen reader can then extract the headings from the page to generate a summary of the content it contains, and use those headings to navigate quickly to subsections within the page.<br /><br /></li>
 
<li><strong> Include alternate content:</strong> Create an alternate page for non-HTML content such as Flash, Java applets, or embedded movies. This might be a static image, with a description of the image, and a description of the content that would have appeared in its place. An alternate HTML page could also be created, and a link to it included next to the non-HTML object. This will ensure that the content will be accessible to users of assistive technologies that can not view or play the content, and ensure the content will be available to those who do not have the appropriate plugin or helper application installed.<br /><br /></li>
 
<li><strong> Check accessbility: </strong> When the AChecker plugin is installed with TinyMCE, click on the Check Accessibility button to generate a report of potential accessibility problems.<br /><br /></li>
 
</ol>
 
<p>See the <a href="http://checker.atrc.utoronto.ca" target="_new">AChecker Web Site</a> for further details about creating content that will be accessible to all users.<br />
</p>
 
<hr noshade>
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
<tr>
<td>Go to: <a href="index.htm">Table of contents</a></td>
<td align="right"><a href="#">Top</a></td>
</tr>
</table>
 
<br>
</BODY>
</HTML>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/docs/en/insert_link_button.htm
New file
0,0 → 1,33
<html xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<TITLE>Insert link button</TITLE>
<link href="style.css" rel="stylesheet" type="text/css">
</HEAD>
 
<BODY>
 
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
<tr>
<td><span class="title">Insert link button</span></td>
<td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
</tr>
</table>
<hr noshade>
<br>
This button opens a new window with the insert/edit link function.<br>
<br>
<img src="images/insert_link_window.gif" width="330" height="159" alt="Insert link dialog/window" /><br>
<br>
There are two fields in this window the first one &quot;Link URL&quot; is the
URL of the link. The target enables you to select how the link is to be opened.<br>
<br>
<hr noshade>
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
<tr>
<td>Go to: <a href="index.htm">Table of contents</a></td>
<td align="right"><a href="#">Top</a></td>
</tr>
</table>
<br>
</BODY>
</HTML>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/docs/en/images/insert_link_window.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/docs/en/images/insert_link_window.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/advanced/image.htm
New file
0,0 → 1,100
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_insert_image_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
<script language="javascript" type="text/javascript" src="jscripts/image.js"></script>
<base target="_self" />
</head>
<body id="image" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
<form onsubmit="insertImage();return false;" action="#">
<div class="tabs">
<ul>
<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_insert_image_title}</a></span></li>
</ul>
</div>
 
<div class="panel_wrapper">
<div id="general_panel" class="panel current">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td nowrap="nowrap"><label for="src">{$lang_insert_image_src}</label></td>
<td><table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input id="src" name="src" type="text" value="" style="width: 200px" onchange="getImageData();" /></td>
<td id="srcbrowsercontainer">&nbsp;</td>
</tr>
</table></td>
</tr>
<!-- Image list -->
<script language="javascript">
if (typeof(tinyMCEImageList) != "undefined" && tinyMCEImageList.length > 0) {
var html = "";
 
html += '<tr><td><label for="image_list">{$lang_image_list}</label></td>';
html += '<td><select id="image_list" name="image_list" style="width: 200px" onchange="this.form.src.value=this.options[this.selectedIndex].value;resetImageData();getImageData();">';
html += '<option value="">---</option>';
 
for (var i=0; i<tinyMCEImageList.length; i++)
html += '<option value="' + tinyMCEImageList[i][1] + '">' + tinyMCEImageList[i][0] + '</option>';
 
html += '</select></td></tr>';
 
document.write(html);
}
</script>
<!-- /Image list -->
<tr>
<td nowrap="nowrap"><label for="alt">{$lang_insert_image_alt}</label></td>
<td><input id="alt" name="alt" type="text" value="" style="width: 200px" /></td>
</tr>
<tr>
<td nowrap="nowrap"><label for="align">{$lang_insert_image_align}</label></td>
<td><select id="align" name="align">
<option value="">{$lang_insert_image_align_default}</option>
<option value="baseline">{$lang_insert_image_align_baseline}</option>
<option value="top">{$lang_insert_image_align_top}</option>
<option value="middle">{$lang_insert_image_align_middle}</option>
<option value="bottom">{$lang_insert_image_align_bottom}</option>
<option value="texttop">{$lang_insert_image_align_texttop}</option>
<option value="absmiddle">{$lang_insert_image_align_absmiddle}</option>
<option value="absbottom">{$lang_insert_image_align_absbottom}</option>
<option value="left">{$lang_insert_image_align_left}</option>
<option value="right">{$lang_insert_image_align_right}</option>
</select></td>
</tr>
<tr>
<td nowrap="nowrap"><label for="width">{$lang_insert_image_dimensions}</label></td>
<td><input id="width" name="width" type="text" value="" size="3" maxlength="5" />
x
<input id="height" name="height" type="text" value="" size="3" maxlength="5" /></td>
</tr>
<tr>
<td nowrap="nowrap"><label for="border">{$lang_insert_image_border}</label></td>
<td><input id="border" name="border" type="text" value="" size="3" maxlength="3" /></td>
</tr>
<tr>
<td nowrap="nowrap"><label for="vspace">{$lang_insert_image_vspace}</label></td>
<td><input id="vspace" name="vspace" type="text" value="" size="3" maxlength="3" /></td>
</tr>
<tr>
<td nowrap="nowrap"><label for="hspace">{$lang_insert_image_hspace}</label></td>
<td><input id="hspace" name="hspace" type="text" value="" size="3" maxlength="3" /></td>
</tr>
</table>
</div>
</div>
 
<div class="mceActionPanel">
<div style="float: left">
<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertImage();" />
</div>
 
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
</div>
</div>
</form>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/editor_template_src.js
New file
0,0 → 1,84
/**
* $Id: editor_template_src.js 162 2007-01-03 16:16:52Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
var TinyMCE_SimpleTheme = {
// List of button ids in tile map
_buttonMap : 'bold,bullist,cleanup,italic,numlist,redo,strikethrough,underline,undo',
 
getEditorTemplate : function() {
var html = '';
 
html += '<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}">';
html += '<tr><td align="center">';
html += '<span id="{$editor_id}">IFRAME</span>';
html += '</td></tr>';
html += '<tr><td class="mceToolbar" align="center" height="1">';
html += tinyMCE.getButtonHTML('bold', 'lang_bold_desc', '{$themeurl}/images/{$lang_bold_img}', 'Bold');
html += tinyMCE.getButtonHTML('italic', 'lang_italic_desc', '{$themeurl}/images/{$lang_italic_img}', 'Italic');
html += tinyMCE.getButtonHTML('underline', 'lang_underline_desc', '{$themeurl}/images/{$lang_underline_img}', 'Underline');
html += tinyMCE.getButtonHTML('strikethrough', 'lang_striketrough_desc', '{$themeurl}/images/strikethrough.gif', 'Strikethrough');
html += '<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';
html += tinyMCE.getButtonHTML('undo', 'lang_undo_desc', '{$themeurl}/images/undo.gif', 'Undo');
html += tinyMCE.getButtonHTML('redo', 'lang_redo_desc', '{$themeurl}/images/redo.gif', 'Redo');
html += '<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';
html += tinyMCE.getButtonHTML('cleanup', 'lang_cleanup_desc', '{$themeurl}/images/cleanup.gif', 'mceCleanup');
html += '<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';
html += tinyMCE.getButtonHTML('bullist', 'lang_bullist_desc', '{$themeurl}/images/bullist.gif', 'InsertUnorderedList');
html += tinyMCE.getButtonHTML('numlist', 'lang_numlist_desc', '{$themeurl}/images/numlist.gif', 'InsertOrderedList');
html += '</td></tr></table>';
 
return {
delta_width : 0,
delta_height : 20,
html : html
};
},
 
handleNodeChange : function(editor_id, node) {
// Reset old states
tinyMCE.switchClass(editor_id + '_bold', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_italic', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_underline', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_strikethrough', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonNormal');
tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonNormal');
 
// Handle elements
do {
switch (node.nodeName.toLowerCase()) {
case "b":
case "strong":
tinyMCE.switchClass(editor_id + '_bold', 'mceButtonSelected');
break;
 
case "i":
case "em":
tinyMCE.switchClass(editor_id + '_italic', 'mceButtonSelected');
break;
 
case "u":
tinyMCE.switchClass(editor_id + '_underline', 'mceButtonSelected');
break;
 
case "strike":
tinyMCE.switchClass(editor_id + '_strikethrough', 'mceButtonSelected');
break;
case "ul":
tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonSelected');
break;
 
case "ol":
tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonSelected');
break;
}
} while ((node = node.parentNode) != null);
}
};
 
tinyMCE.addTheme("simple", TinyMCE_SimpleTheme);
tinyMCE.addButtonMap(TinyMCE_SimpleTheme._buttonMap);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/spacer.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/spacer.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/bullist.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/bullist.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/bold_de_se.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/bold_de_se.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/italic_tw.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/italic_tw.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/bold.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/bold.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/underline.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/underline.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/bold_ru.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/bold_ru.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/cleanup.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/cleanup.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/redo.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/redo.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/bold_tw.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/bold_tw.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/underline_ru.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/underline_ru.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/numlist.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/numlist.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/buttons.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/buttons.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/underline_tw.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/underline_tw.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/separator.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/separator.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/strikethrough.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/strikethrough.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/italic_de_se.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/italic_de_se.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/italic.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/italic.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/undo.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/undo.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/bold_fr.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/bold_fr.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/italic_ru.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/italic_ru.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/underline_fr.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/images/underline_fr.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/css/editor_popup.css
New file
0,0 → 1,41
body {
background-color: #F0F0EE;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
scrollbar-3dlight-color: #F0F0EE;
scrollbar-arrow-color: #676662;
scrollbar-base-color: #F0F0EE;
scrollbar-darkshadow-color: #DDDDDD;
scrollbar-face-color: #E0E0DD;
scrollbar-highlight-color: #F0F0EE;
scrollbar-shadow-color: #F0F0EE;
scrollbar-track-color: #F5F5F5;
}
 
td {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
}
 
input {
background: #FFFFFF;
border: 1px solid #cccccc;
}
 
td, input, select, textarea {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
}
 
input, select, textarea {
border: 1px solid #808080;
}
 
.input_noborder {
border: 0;
}
 
.title {
font-size: 12px;
font-weight: bold;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/css/editor_content.css
New file
0,0 → 1,25
body, td, pre {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
}
 
body {
background-color: #FFFFFF;
}
 
.mceVisualAid {
border: 1px dashed #BBBBBB;
}
 
/* MSIE specific */
 
* html body {
scrollbar-3dlight-color: #F0F0EE;
scrollbar-arrow-color: #676662;
scrollbar-base-color: #F0F0EE;
scrollbar-darkshadow-color: #DDDDDD;
scrollbar-face-color: #E0E0DD;
scrollbar-highlight-color: #F0F0EE;
scrollbar-shadow-color: #F0F0EE;
scrollbar-track-color: #F5F5F5;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/css/editor_ui.css
New file
0,0 → 1,125
.mceSeparatorLine {
border: 0;
padding: 0;
margin-left: 4px;
margin-right: 2px;
}
 
.mceSelectList {
font-family: "MS Sans Serif";
font-size: 7pt;
font-weight: normal;
margin-top: 2px;
}
 
.mceLabel, .mceLabelDisabled {
font-family: "MS Sans Serif";
font-size: 9pt;
}
 
.mceLabel {
color: #000000;
}
 
.mceLabelDisabled {
cursor: text;
color: #999999;
}
 
.mceEditor {
background: #F0F0EE;
border: 1px solid #cccccc;
}
 
.mceEditorArea {
font-family: "MS Sans Serif";
background: #FFFFFF;
}
 
.mceToolbar {
background: #F0F0EE;
border-top: 1px solid #cccccc;
line-height: 1px;
font-size: 1px;
padding-bottom: 1px;
}
 
.mceEditorIframe {
border: 0;
}
 
/* Button CSS rules */
 
a.mceButtonDisabled img, a.mceButtonNormal img, a.mceButtonSelected img {
width: 20px;
height: 20px;
cursor: default;
margin-top: 1px;
margin-left: 1px;
}
 
a.mceButtonDisabled img {
border: 0 !important;
}
 
a.mceButtonNormal img, a.mceButtonSelected img {
border: 1px solid #F0F0EE !important;
}
 
a.mceButtonSelected img {
border: 1px solid #C0C0BB !important;
}
 
a.mceButtonNormal img:hover, a.mceButtonSelected img:hover {
border: 1px solid #0A246A !important;
cursor: default;
background-color: #B6BDD2;
}
 
a.mceButtonDisabled img {
-moz-opacity:0.3;
opacity: 0.3;
border: 1px solid #F0F0EE !important;
cursor: default;
}
 
a.mceTiledButton img {
background-image: url('../images/buttons.gif');
background-repeat: no-repeat;
}
 
/* MSIE specific rules */
 
* html a.mceButtonNormal img, * html a.mceButtonSelected img, * html a.mceButtonDisabled img {
border: 0px !important;
margin-top: 2px;
margin-bottom: 1px;
}
 
* html a.mceButtonDisabled img {
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);
border: 0px !important;
}
 
* html a.mceButtonDisabled {
border: 1px solid #F0F0EE !important;
}
 
* html a.mceButtonNormal, * html a.mceButtonSelected {
border: 1px solid #F0F0EE;
cursor: default;
}
 
* html a.mceButtonSelected {
border: 1px solid #C0C0BB;
}
 
* html a.mceButtonNormal:hover, * html a.mceButtonSelected:hover {
border: 1px solid #0A246A;
cursor: default;
background-color: #B6BDD2;
}
 
* html .mceSelectList {
margin-top: 2px;
}
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/themes/simple/editor_template.js
New file
0,0 → 1,0
var TinyMCE_SimpleTheme={_buttonMap:'bold,bullist,cleanup,italic,numlist,redo,strikethrough,underline,undo',getEditorTemplate:function(){var html='';html+='<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}">';html+='<tr><td align="center">';html+='<span id="{$editor_id}">IFRAME</span>';html+='</td></tr>';html+='<tr><td class="mceToolbar" align="center" height="1">';html+=tinyMCE.getButtonHTML('bold','lang_bold_desc','{$themeurl}/images/{$lang_bold_img}','Bold');html+=tinyMCE.getButtonHTML('italic','lang_italic_desc','{$themeurl}/images/{$lang_italic_img}','Italic');html+=tinyMCE.getButtonHTML('underline','lang_underline_desc','{$themeurl}/images/{$lang_underline_img}','Underline');html+=tinyMCE.getButtonHTML('strikethrough','lang_striketrough_desc','{$themeurl}/images/strikethrough.gif','Strikethrough');html+='<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';html+=tinyMCE.getButtonHTML('undo','lang_undo_desc','{$themeurl}/images/undo.gif','Undo');html+=tinyMCE.getButtonHTML('redo','lang_redo_desc','{$themeurl}/images/redo.gif','Redo');html+='<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';html+=tinyMCE.getButtonHTML('cleanup','lang_cleanup_desc','{$themeurl}/images/cleanup.gif','mceCleanup');html+='<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';html+=tinyMCE.getButtonHTML('bullist','lang_bullist_desc','{$themeurl}/images/bullist.gif','InsertUnorderedList');html+=tinyMCE.getButtonHTML('numlist','lang_numlist_desc','{$themeurl}/images/numlist.gif','InsertOrderedList');html+='</td></tr></table>';return{delta_width:0,delta_height:20,html:html}},handleNodeChange:function(editor_id,node){tinyMCE.switchClass(editor_id+'_bold','mceButtonNormal');tinyMCE.switchClass(editor_id+'_italic','mceButtonNormal');tinyMCE.switchClass(editor_id+'_underline','mceButtonNormal');tinyMCE.switchClass(editor_id+'_strikethrough','mceButtonNormal');tinyMCE.switchClass(editor_id+'_bullist','mceButtonNormal');tinyMCE.switchClass(editor_id+'_numlist','mceButtonNormal');do{switch(node.nodeName.toLowerCase()){case"b":case"strong":tinyMCE.switchClass(editor_id+'_bold','mceButtonSelected');break;case"i":case"em":tinyMCE.switchClass(editor_id+'_italic','mceButtonSelected');break;case"u":tinyMCE.switchClass(editor_id+'_underline','mceButtonSelected');break;case"strike":tinyMCE.switchClass(editor_id+'_strikethrough','mceButtonSelected');break;case"ul":tinyMCE.switchClass(editor_id+'_bullist','mceButtonSelected');break;case"ol":tinyMCE.switchClass(editor_id+'_numlist','mceButtonSelected');break}}while((node=node.parentNode)!=null)}};tinyMCE.addTheme("simple",TinyMCE_SimpleTheme);tinyMCE.addButtonMap(TinyMCE_SimpleTheme._buttonMap);
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/tiny_mce_popup.js
New file
0,0 → 1,294
// Some global instances, this will be filled later
var tinyMCE = null, tinyMCELang = null;
 
function TinyMCE_Popup() {
};
 
TinyMCE_Popup.prototype = {
findWin : function(w) {
var c;
 
// Check parents
c = w;
while (c && (c = c.parent) != null) {
if (typeof(c.tinyMCE) != "undefined")
return c;
}
 
// Check openers
c = w;
while (c && (c = c.opener) != null) {
if (typeof(c.tinyMCE) != "undefined")
return c;
}
 
// Try top
if (typeof(top.tinyMCE) != "undefined")
return top;
 
return null;
},
 
init : function() {
var win = window.opener ? window.opener : window.dialogArguments, c;
var inst, re, title, divElm;
 
if (!win)
win = this.findWin(window);
 
if (!win) {
alert("tinyMCE object reference not found from popup.");
return;
}
 
window.opener = win;
this.windowOpener = win;
this.onLoadEval = "";
 
// Setup parent references
tinyMCE = win.tinyMCE;
tinyMCELang = win.tinyMCELang;
 
inst = tinyMCE.selectedInstance;
this.isWindow = tinyMCE.getWindowArg('mce_inside_iframe', false) == false;
this.storeSelection = (tinyMCE.isRealIE) && !this.isWindow && tinyMCE.getWindowArg('mce_store_selection', true);
 
if (this.isWindow)
window.focus();
 
// Store selection
if (this.storeSelection)
inst.selectionBookmark = inst.selection.getBookmark(true);
 
// Setup dir
if (tinyMCELang.lang_dir)
document.dir = tinyMCELang.lang_dir;
 
// Setup title
re = new RegExp('{|\\\$|}', 'g');
title = document.title.replace(re, "");
if (typeof(tinyMCELang[title]) != "undefined") {
divElm = document.createElement("div");
divElm.innerHTML = tinyMCELang[title];
document.title = divElm.innerHTML;
 
if (typeof(tinyMCE.setWindowTitle) != 'undefined')
tinyMCE.setWindowTitle(window, divElm.innerHTML);
}
 
// Output Popup CSS class
document.write('<link href="' + tinyMCE.getParam("popups_css") + '" rel="stylesheet" type="text/css">');
 
if (tinyMCE.getParam("popups_css_add")) {
c = tinyMCE.getParam("popups_css_add");
 
// Is relative
if (c.indexOf('://') == -1 && c.charAt(0) != '/')
c = tinyMCE.documentBasePath + "/" + c;
 
document.write('<link href="' + c + '" rel="stylesheet" type="text/css">');
}
 
tinyMCE.addEvent(window, "load", this.onLoad);
},
 
onLoad : function() {
var dir, i, elms, body = document.body;
 
if (tinyMCE.getWindowArg('mce_replacevariables', true))
body.innerHTML = tinyMCE.applyTemplate(body.innerHTML, tinyMCE.windowArgs);
 
dir = tinyMCE.selectedInstance.settings.directionality;
if (dir == "rtl" && document.forms && document.forms.length > 0) {
elms = document.forms[0].elements;
for (i=0; i<elms.length; i++) {
if ((elms[i].type == "text" || elms[i].type == "textarea") && elms[i].getAttribute("dir") != "ltr")
elms[i].dir = dir;
}
}
 
if (body.style.display == 'none')
body.style.display = 'block';
 
// Execute real onload (Opera fix)
if (tinyMCEPopup.onLoadEval !== '')
eval(tinyMCEPopup.onLoadEval);
},
 
executeOnLoad : function(str) {
if (tinyMCE.isOpera)
this.onLoadEval = str;
else
eval(str);
},
 
resizeToInnerSize : function() {
var i, doc, body, oldMargin, wrapper, iframe, nodes, dx, dy;
 
// Netscape 7.1 workaround
if (this.isWindow && tinyMCE.isNS71) {
window.resizeBy(0, 10);
return;
}
 
if (this.isWindow) {
doc = document;
body = doc.body;
 
if (body.style.display == 'none')
body.style.display = 'block';
 
// Remove margin
oldMargin = body.style.margin;
body.style.margin = '0';
 
// Create wrapper
wrapper = doc.createElement("div");
wrapper.id = 'mcBodyWrapper';
wrapper.style.display = 'none';
wrapper.style.margin = '0';
 
// Wrap body elements
nodes = doc.body.childNodes;
for (i=nodes.length-1; i>=0; i--) {
if (wrapper.hasChildNodes())
wrapper.insertBefore(nodes[i].cloneNode(true), wrapper.firstChild);
else
wrapper.appendChild(nodes[i].cloneNode(true));
 
nodes[i].parentNode.removeChild(nodes[i]);
}
 
// Add wrapper
doc.body.appendChild(wrapper);
 
// Create iframe
iframe = document.createElement("iframe");
iframe.id = "mcWinIframe";
iframe.src = document.location.href.toLowerCase().indexOf('https') == -1 ? "about:blank" : tinyMCE.settings.default_document;
iframe.width = "100%";
iframe.height = "100%";
iframe.style.margin = '0';
 
// Add iframe
doc.body.appendChild(iframe);
 
// Measure iframe
iframe = document.getElementById('mcWinIframe');
dx = tinyMCE.getWindowArg('mce_width') - iframe.clientWidth;
dy = tinyMCE.getWindowArg('mce_height') - iframe.clientHeight;
 
// Resize window
// tinyMCE.debug(tinyMCE.getWindowArg('mce_width') + "," + tinyMCE.getWindowArg('mce_height') + " - " + dx + "," + dy);
window.resizeBy(dx, dy);
 
// Hide iframe and show wrapper
body.style.margin = oldMargin;
iframe.style.display = 'none';
wrapper.style.display = 'block';
}
},
 
resizeToContent : function() {
var isMSIE = (navigator.appName == "Microsoft Internet Explorer");
var isOpera = (navigator.userAgent.indexOf("Opera") != -1);
var elm, width, height, x, y, dx, dy;
 
if (isOpera)
return;
 
if (isMSIE) {
try { window.resizeTo(10, 10); } catch (e) {}
 
elm = document.body;
width = elm.offsetWidth;
height = elm.offsetHeight;
dx = (elm.scrollWidth - width) + 4;
dy = elm.scrollHeight - height;
 
try { window.resizeBy(dx, dy); } catch (e) {}
} else {
window.scrollBy(1000, 1000);
if (window.scrollX > 0 || window.scrollY > 0) {
window.resizeBy(window.innerWidth * 2, window.innerHeight * 2);
window.sizeToContent();
window.scrollTo(0, 0);
x = parseInt(screen.width / 2.0) - (window.outerWidth / 2.0);
y = parseInt(screen.height / 2.0) - (window.outerHeight / 2.0);
window.moveTo(x, y);
}
}
},
 
getWindowArg : function(name, default_value) {
return tinyMCE.getWindowArg(name, default_value);
},
 
restoreSelection : function() {
var inst;
 
if (this.storeSelection) {
inst = tinyMCE.selectedInstance;
 
inst.getWin().focus();
 
if (inst.selectionBookmark)
inst.selection.moveToBookmark(inst.selectionBookmark);
}
},
 
execCommand : function(command, user_interface, value) {
var inst = tinyMCE.selectedInstance;
 
this.restoreSelection();
inst.execCommand(command, user_interface, value);
 
// Store selection
if (this.storeSelection)
inst.selectionBookmark = inst.selection.getBookmark(true);
},
 
close : function() {
tinyMCE.closeWindow(window);
},
 
pickColor : function(e, element_id) {
tinyMCE.selectedInstance.execCommand('mceColorPicker', true, {
element_id : element_id,
document : document,
window : window,
store_selection : false
});
},
 
openBrowser : function(element_id, type, option) {
var cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback"));
var url = document.getElementById(element_id).value;
 
tinyMCE.setWindowArg("window", window);
tinyMCE.setWindowArg("document", document);
 
// Call to external callback
if (eval('typeof(tinyMCEPopup.windowOpener.' + cb + ')') == "undefined")
alert("Callback function: " + cb + " could not be found.");
else
eval("tinyMCEPopup.windowOpener." + cb + "(element_id, url, type, window);");
},
 
importClass : function(c) {
var n;
 
window[c] = function() {};
 
for (n in window.opener[c].prototype)
window[c].prototype[n] = window.opener[c].prototype[n];
 
window[c].constructor = window.opener[c].constructor;
}
 
};
 
// Setup global instance
var tinyMCEPopup = new TinyMCE_Popup();
 
tinyMCEPopup.init();
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/tiny_mce_gzip.php
New file
0,0 → 1,179
<?php
/**
* $Id: tiny_mce_gzip.php 158 2006-12-21 14:32:19Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2005-2006, Moxiecode Systems AB, All rights reserved.
*
* This file compresses the TinyMCE JavaScript using GZip and
* enables the browser to do two requests instead of one for each .js file.
* Notice: This script defaults the button_tile_map option to true for extra performance.
*/
 
// Set the error reporting to minimal.
@error_reporting(E_ERROR | E_WARNING | E_PARSE);
 
// Get input
$plugins = explode(',', getParam("plugins", ""));
$languages = explode(',', getParam("languages", ""));
$themes = explode(',', getParam("themes", ""));
$diskCache = getParam("diskcache", "") == "true";
$isJS = getParam("js", "") == "true";
$compress = getParam("compress", "true") == "true";
$suffix = getParam("suffix", "_src") == "_src" ? "_src" : "";
$cachePath = realpath("."); // Cache path, this is where the .gz files will be stored
$expiresOffset = 3600 * 24 * 10; // Cache for 10 days in browser cache
$content = "";
$encodings = array();
$supportsGzip = false;
$enc = "";
$cacheKey = "";
 
// Custom extra javascripts to pack
$custom = array(/*
"some custom .js file",
"some custom .js file"
*/);
 
// Headers
header("Content-type: text/javascript");
header("Vary: Accept-Encoding"); // Handle proxies
header("Expires: " . gmdate("D, d M Y H:i:s", time() + $expiresOffset) . " GMT");
 
// Is called directly then auto init with default settings
if (!$isJS) {
echo getFileContents("tiny_mce_gzip.js");
echo "tinyMCE_GZ.init({});";
die();
}
 
// Setup cache info
if ($diskCache) {
if (!$cachePath)
die("alert('Real path failed.');");
 
$cacheKey = getParam("plugins", "") . getParam("languages", "") . getParam("themes", "");
 
foreach ($custom as $file)
$cacheKey .= $file;
 
$cacheKey = md5($cacheKey);
 
if ($compress)
$cacheFile = $cachePath . "/tiny_mce_" . $cacheKey . ".gz";
else
$cacheFile = $cachePath . "/tiny_mce_" . $cacheKey . ".js";
}
 
// Check if it supports gzip
if (isset($_SERVER['HTTP_ACCEPT_ENCODING']))
$encodings = explode(',', strtolower(preg_replace("/\s+/", "", $_SERVER['HTTP_ACCEPT_ENCODING'])));
 
if ((in_array('gzip', $encodings) || in_array('x-gzip', $encodings) || isset($_SERVER['---------------'])) && function_exists('ob_gzhandler') && !ini_get('zlib.output_compression')) {
$enc = in_array('x-gzip', $encodings) ? "x-gzip" : "gzip";
$supportsGzip = true;
}
 
// Use cached file disk cache
if ($diskCache && $supportsGzip && file_exists($cacheFile)) {
if ($compress)
header("Content-Encoding: " . $enc);
 
echo getFileContents($cacheFile);
die();
}
 
// Add core
$content .= getFileContents("tiny_mce" . $suffix . ".js");
 
// Patch loading functions
$content .= "tinyMCE_GZ.start();";
 
// Add core languages
foreach ($languages as $lang)
$content .= getFileContents("langs/" . $lang . ".js");
 
// Add themes
foreach ($themes as $theme) {
$content .= getFileContents( "themes/" . $theme . "/editor_template" . $suffix . ".js");
 
foreach ($languages as $lang)
$content .= getFileContents("themes/" . $theme . "/langs/" . $lang . ".js");
}
 
// Add plugins
foreach ($plugins as $plugin) {
$content .= getFileContents("plugins/" . $plugin . "/editor_plugin" . $suffix . ".js");
 
foreach ($languages as $lang)
$content .= getFileContents("plugins/" . $plugin . "/langs/" . $lang . ".js");
}
 
// Add custom files
foreach ($custom as $file)
$content .= getFileContents($file);
 
// Restore loading functions
$content .= "tinyMCE_GZ.end();";
 
// Generate GZIP'd content
if ($supportsGzip) {
if ($compress) {
header("Content-Encoding: " . $enc);
$cacheData = gzencode($content, 9, FORCE_GZIP);
} else
$cacheData = $content;
 
// Write gz file
if ($diskCache && $cacheKey != "")
putFileContents($cacheFile, $cacheData);
 
// Stream to client
echo $cacheData;
} else {
// Stream uncompressed content
echo $content;
}
 
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
function getParam($name, $def = false) {
if (!isset($_GET[$name]))
return $def;
 
return preg_replace("/[^0-9a-z\-_,]+/i", "", $_GET[$name]); // Remove anything but 0-9,a-z,-_
}
 
function getFileContents($path) {
$path = realpath($path);
 
if (!$path || !@is_file($path))
return "";
 
if (function_exists("file_get_contents"))
return @file_get_contents($path);
 
$content = "";
$fp = @fopen($path, "r");
if (!$fp)
return "";
 
while (!feof($fp))
$content .= fgets($fp);
 
fclose($fp);
 
return $content;
}
 
function putFileContents($path, $content) {
if (function_exists("file_put_contents"))
return @file_put_contents($path, $content);
 
$fp = @fopen($path, "wb");
if ($fp) {
fwrite($fp, $content);
fclose($fp);
}
}
?>
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/tiny_mce_src.js
New file
0,0 → 1,7612
 
/* file:jscripts/tiny_mce/classes/TinyMCE_Engine.class.js */
 
function TinyMCE_Engine() {
var ua;
 
this.majorVersion = "2";
this.minorVersion = "1.2";
this.releaseDate = "2007-08-21";
 
this.instances = [];
this.switchClassCache = [];
this.windowArgs = [];
this.loadedFiles = [];
this.pendingFiles = [];
this.loadingIndex = 0;
this.configs = [];
this.currentConfig = 0;
this.eventHandlers = [];
this.log = [];
this.undoLevels = [];
this.undoIndex = 0;
this.typingUndoIndex = -1;
this.settings = [];
 
// Browser check
ua = navigator.userAgent;
this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
this.isMSIE5 = this.isMSIE && (ua.indexOf('MSIE 5') != -1);
this.isMSIE5_0 = this.isMSIE && (ua.indexOf('MSIE 5.0') != -1);
this.isMSIE7 = this.isMSIE && (ua.indexOf('MSIE 7') != -1);
this.isGecko = ua.indexOf('Gecko') != -1; // Will also be true on Safari
this.isSafari = ua.indexOf('Safari') != -1;
this.isOpera = window['opera'] && opera.buildNumber ? true : false;
this.isMac = ua.indexOf('Mac') != -1;
this.isNS7 = ua.indexOf('Netscape/7') != -1;
this.isNS71 = ua.indexOf('Netscape/7.1') != -1;
this.dialogCounter = 0;
this.plugins = [];
this.themes = [];
this.menus = [];
this.loadedPlugins = [];
this.buttonMap = [];
this.isLoaded = false;
 
// Fake MSIE on Opera and if Opera fakes IE, Gecko or Safari cancel those
if (this.isOpera) {
this.isMSIE = true;
this.isGecko = false;
this.isSafari = false;
}
 
this.isIE = this.isMSIE;
this.isRealIE = this.isMSIE && !this.isOpera;
 
// TinyMCE editor id instance counter
this.idCounter = 0;
};
 
TinyMCE_Engine.prototype = {
init : function(settings) {
var theme, nl, baseHREF = "", i, cssPath, entities, h, p, src, elements = [], head;
 
// IE 5.0x is no longer supported since 5.5, 6.0 and 7.0 now exists. We can't support old browsers forever, sorry.
if (this.isMSIE5_0)
return;
 
this.settings = settings;
 
// Check if valid browser has execcommand support
if (typeof(document.execCommand) == 'undefined')
return;
 
// Get script base path
if (!tinyMCE.baseURL) {
// Search through head
head = document.getElementsByTagName('head')[0];
 
if (head) {
for (i=0, nl = head.getElementsByTagName('script'); i<nl.length; i++)
elements.push(nl[i]);
}
 
// Search through rest of document
for (i=0, nl = document.getElementsByTagName('script'); i<nl.length; i++)
elements.push(nl[i]);
 
// If base element found, add that infront of baseURL
nl = document.getElementsByTagName('base');
for (i=0; i<nl.length; i++) {
if (nl[i].href)
baseHREF = nl[i].href;
}
 
for (i=0; i<elements.length; i++) {
if (elements[i].src && (elements[i].src.indexOf("tiny_mce.js") != -1 || elements[i].src.indexOf("tiny_mce_dev.js") != -1 || elements[i].src.indexOf("tiny_mce_src.js") != -1 || elements[i].src.indexOf("tiny_mce_gzip") != -1)) {
src = elements[i].src;
 
tinyMCE.srcMode = (src.indexOf('_src') != -1 || src.indexOf('_dev') != -1) ? '_src' : '';
tinyMCE.gzipMode = src.indexOf('_gzip') != -1;
src = src.substring(0, src.lastIndexOf('/'));
 
if (settings.exec_mode == "src" || settings.exec_mode == "normal")
tinyMCE.srcMode = settings.exec_mode == "src" ? '_src' : '';
 
// Force it absolute if page has a base href
if (baseHREF !== '' && src.indexOf('://') == -1)
tinyMCE.baseURL = baseHREF + src;
else
tinyMCE.baseURL = src;
 
break;
}
}
}
 
// Get document base path
this.documentBasePath = document.location.href;
if (this.documentBasePath.indexOf('?') != -1)
this.documentBasePath = this.documentBasePath.substring(0, this.documentBasePath.indexOf('?'));
this.documentURL = this.documentBasePath;
this.documentBasePath = this.documentBasePath.substring(0, this.documentBasePath.lastIndexOf('/'));
 
// If not HTTP absolute
if (tinyMCE.baseURL.indexOf('://') == -1 && tinyMCE.baseURL.charAt(0) != '/') {
// If site absolute
tinyMCE.baseURL = this.documentBasePath + "/" + tinyMCE.baseURL;
}
 
// Set default values on settings
this._def("mode", "none");
this._def("theme", "advanced");
this._def("plugins", "", true);
this._def("language", "en");
this._def("docs_language", this.settings.language);
this._def("elements", "");
this._def("textarea_trigger", "mce_editable");
this._def("editor_selector", "");
this._def("editor_deselector", "mceNoEditor");
this._def("valid_elements", "+a[id|style|rel|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/-b[class|style],-em/-i[class|style],-strike[class|style],-u[class|style],#p[id|style|dir|class|align],-ol[class|style],-ul[class|style],-li[class|style],br,img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|alt=|title|hspace|vspace|width|height|align],-sub[style|class],-sup[style|class],-blockquote[dir|style],-table[border=0|cellspacing|cellpadding|width|height|class|align|summary|style|dir|id|lang|bgcolor|background|bordercolor],-tr[id|lang|dir|class|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor],tbody[id|class],thead[id|class],tfoot[id|class],#td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],-th[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|scope],caption[id|lang|dir|class|style],-div[id|dir|class|align|style],-span[style|class|align],-pre[class|align|style],address[class|align|style],-h1[id|style|dir|class|align],-h2[id|style|dir|class|align],-h3[id|style|dir|class|align],-h4[id|style|dir|class|align],-h5[id|style|dir|class|align],-h6[id|style|dir|class|align],hr[class|style],-font[face|size|style|id|class|dir|color],dd[id|class|title|style|dir|lang],dl[id|class|title|style|dir|lang],dt[id|class|title|style|dir|lang],cite[title|id|class|style|dir|lang],abbr[title|id|class|style|dir|lang],acronym[title|id|class|style|dir|lang],del[title|id|class|style|dir|lang|datetime|cite],ins[title|id|class|style|dir|lang|datetime|cite]");
this._def("extended_valid_elements", "");
this._def("invalid_elements", "");
this._def("encoding", "");
this._def("urlconverter_callback", tinyMCE.getParam("urlconvertor_callback", "TinyMCE_Engine.prototype.convertURL"));
this._def("save_callback", "");
this._def("force_br_newlines", false);
this._def("force_p_newlines", true);
this._def("add_form_submit_trigger", true);
this._def("relative_urls", true);
this._def("remove_script_host", true);
this._def("focus_alert", true);
this._def("document_base_url", this.documentURL);
this._def("visual", true);
this._def("visual_table_class", "mceVisualAid");
this._def("setupcontent_callback", "");
this._def("fix_content_duplication", true);
this._def("custom_undo_redo", true);
this._def("custom_undo_redo_levels", -1);
this._def("custom_undo_redo_keyboard_shortcuts", true);
this._def("custom_undo_redo_restore_selection", true);
this._def("custom_undo_redo_global", false);
this._def("verify_html", true);
this._def("apply_source_formatting", false);
this._def("directionality", "ltr");
this._def("cleanup_on_startup", false);
this._def("inline_styles", false);
this._def("convert_newlines_to_brs", false);
this._def("auto_reset_designmode", true);
this._def("entities", "39,#39,160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,34,quot,38,amp,60,lt,62,gt,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro", true);
this._def("entity_encoding", "named");
this._def("cleanup_callback", "");
this._def("add_unload_trigger", true);
this._def("ask", false);
this._def("nowrap", false);
this._def("auto_resize", false);
this._def("auto_focus", false);
this._def("cleanup", true);
this._def("remove_linebreaks", true);
this._def("button_tile_map", false);
this._def("submit_patch", true);
this._def("browsers", "msie,safari,gecko,opera", true);
this._def("dialog_type", "window");
this._def("accessibility_warnings", true);
this._def("accessibility_focus", true);
this._def("merge_styles_invalid_parents", "");
this._def("force_hex_style_colors", true);
this._def("trim_span_elements", true);
this._def("convert_fonts_to_spans", false);
this._def("doctype", '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">');
this._def("font_size_classes", '');
this._def("font_size_style_values", 'xx-small,x-small,small,medium,large,x-large,xx-large', true);
this._def("event_elements", 'a,img', true);
this._def("convert_urls", true);
this._def("table_inline_editing", false);
this._def("object_resizing", true);
this._def("custom_shortcuts", true);
this._def("convert_on_click", false);
this._def("content_css", '');
this._def("fix_list_elements", true);
this._def("fix_table_elements", false);
this._def("strict_loading_mode", document.contentType == 'application/xhtml+xml');
this._def("hidden_tab_class", '');
this._def("display_tab_class", '');
this._def("gecko_spellcheck", false);
this._def("hide_selects_on_submit", true);
this._def("forced_root_block", false);
this._def("remove_trailing_nbsp", false);
this._def("save_on_tinymce_forms", false);
 
// Force strict loading mode to false on non Gecko browsers
if (this.isMSIE && !this.isOpera)
this.settings.strict_loading_mode = false;
 
// Browser check IE
if (this.isMSIE && this.settings.browsers.indexOf('msie') == -1)
return;
 
// Browser check Gecko
if (this.isGecko && this.settings.browsers.indexOf('gecko') == -1)
return;
 
// Browser check Safari
if (this.isSafari && this.settings.browsers.indexOf('safari') == -1)
return;
 
// Browser check Opera
if (this.isOpera && this.settings.browsers.indexOf('opera') == -1)
return;
 
// If not super absolute make it so
baseHREF = tinyMCE.settings.document_base_url;
h = document.location.href;
p = h.indexOf('://');
if (p > 0 && document.location.protocol != "file:") {
p = h.indexOf('/', p + 3);
h = h.substring(0, p);
 
if (baseHREF.indexOf('://') == -1)
baseHREF = h + baseHREF;
 
tinyMCE.settings.document_base_url = baseHREF;
tinyMCE.settings.document_base_prefix = h;
}
 
// Trim away query part
if (baseHREF.indexOf('?') != -1)
baseHREF = baseHREF.substring(0, baseHREF.indexOf('?'));
 
this.settings.base_href = baseHREF.substring(0, baseHREF.lastIndexOf('/')) + "/";
 
theme = this.settings.theme;
this.inlineStrict = 'A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment';
this.inlineTransitional = 'A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment';
this.blockElms = 'H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP';
this.blockRegExp = new RegExp("^(" + this.blockElms + ")$", "i");
this.posKeyCodes = [13,45,36,35,33,34,37,38,39,40];
this.uniqueURL = 'javascript:void(091039730);'; // Make unique URL non real URL
this.uniqueTag = '<div id="mceTMPElement" style="display: none">TMP</div>';
this.callbacks = ['onInit', 'getInfo', 'getEditorTemplate', 'setupContent', 'onChange', 'onPageLoad', 'handleNodeChange', 'initInstance', 'execCommand', 'getControlHTML', 'handleEvent', 'cleanup', 'removeInstance'];
 
// Theme url
this.settings.theme_href = tinyMCE.baseURL + "/themes/" + theme;
 
if (!tinyMCE.isIE || tinyMCE.isOpera)
this.settings.force_br_newlines = false;
 
if (tinyMCE.getParam("popups_css", false)) {
cssPath = tinyMCE.getParam("popups_css", "");
 
// Is relative
if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/')
this.settings.popups_css = this.documentBasePath + "/" + cssPath;
else
this.settings.popups_css = cssPath;
} else
this.settings.popups_css = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_popup.css";
 
if (tinyMCE.getParam("editor_css", false)) {
cssPath = tinyMCE.getParam("editor_css", "");
 
// Is relative
if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/')
this.settings.editor_css = this.documentBasePath + "/" + cssPath;
else
this.settings.editor_css = cssPath;
} else {
if (this.settings.editor_css !== '')
this.settings.editor_css = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_ui.css";
}
 
// Only do this once
if (this.configs.length == 0) {
if (typeof(TinyMCECompressed) == "undefined") {
tinyMCE.addEvent(window, "DOMContentLoaded", TinyMCE_Engine.prototype.onLoad);
 
if (tinyMCE.isRealIE) {
if (document.body)
tinyMCE.addEvent(document.body, "readystatechange", TinyMCE_Engine.prototype.onLoad);
else
tinyMCE.addEvent(document, "readystatechange", TinyMCE_Engine.prototype.onLoad);
}
 
tinyMCE.addEvent(window, "load", TinyMCE_Engine.prototype.onLoad);
tinyMCE._addUnloadEvents();
}
}
 
this.loadScript(tinyMCE.baseURL + '/themes/' + this.settings.theme + '/editor_template' + tinyMCE.srcMode + '.js');
this.loadScript(tinyMCE.baseURL + '/langs/' + this.settings.language + '.js');
this.loadCSS(this.settings.editor_css);
 
// Add plugins
p = tinyMCE.getParam('plugins', '', true, ',');
if (p.length > 0) {
for (i=0; i<p.length; i++) {
if (p[i].charAt(0) != '-')
this.loadScript(tinyMCE.baseURL + '/plugins/' + p[i] + '/editor_plugin' + tinyMCE.srcMode + '.js');
}
}
 
// Setup entities
if (tinyMCE.getParam('entity_encoding') == 'named') {
settings.cleanup_entities = [];
entities = tinyMCE.getParam('entities', '', true, ',');
for (i=0; i<entities.length; i+=2)
settings.cleanup_entities['c' + entities[i]] = entities[i+1];
}
 
// Save away this config
settings.index = this.configs.length;
this.configs[this.configs.length] = settings;
 
// Start loading first one in chain
this.loadNextScript();
 
// Force flicker free CSS backgrounds in IE
if (this.isIE && !this.isOpera) {
try {
document.execCommand('BackgroundImageCache', false, true);
} catch (e) {
// Ignore
}
}
 
// Setup XML encoding regexps
this.xmlEncodeRe = new RegExp('[<>&"]', 'g');
},
 
_addUnloadEvents : function() {
var st = tinyMCE.settings.add_unload_trigger;
 
if (tinyMCE.isIE) {
if (st) {
tinyMCE.addEvent(window, "unload", TinyMCE_Engine.prototype.unloadHandler);
tinyMCE.addEvent(window.document, "beforeunload", TinyMCE_Engine.prototype.unloadHandler);
}
} else {
if (st)
tinyMCE.addEvent(window, "unload", function () {tinyMCE.triggerSave(true, true);});
}
},
 
_def : function(key, def_val, t) {
var v = tinyMCE.getParam(key, def_val);
 
v = t ? v.replace(/\s+/g, "") : v;
 
this.settings[key] = v;
},
 
hasPlugin : function(n) {
return typeof(this.plugins[n]) != "undefined" && this.plugins[n] != null;
},
 
addPlugin : function(n, p) {
var op = this.plugins[n];
 
// Use the previous plugin object base URL used when loading external plugins
p.baseURL = op ? op.baseURL : tinyMCE.baseURL + "/plugins/" + n;
this.plugins[n] = p;
 
this.loadNextScript();
},
 
setPluginBaseURL : function(n, u) {
var op = this.plugins[n];
 
if (op)
op.baseURL = u;
else
this.plugins[n] = {baseURL : u};
},
 
loadPlugin : function(n, u) {
u = u.indexOf('.js') != -1 ? u.substring(0, u.lastIndexOf('/')) : u;
u = u.charAt(u.length-1) == '/' ? u.substring(0, u.length-1) : u;
this.plugins[n] = {baseURL : u};
this.loadScript(u + "/editor_plugin" + (tinyMCE.srcMode ? '_src' : '') + ".js");
},
 
hasTheme : function(n) {
return typeof(this.themes[n]) != "undefined" && this.themes[n] != null;
},
 
addTheme : function(n, t) {
this.themes[n] = t;
 
this.loadNextScript();
},
 
addMenu : function(n, m) {
this.menus[n] = m;
},
 
hasMenu : function(n) {
return typeof(this.plugins[n]) != "undefined" && this.plugins[n] != null;
},
 
loadScript : function(url) {
var i;
 
for (i=0; i<this.loadedFiles.length; i++) {
if (this.loadedFiles[i] == url)
return;
}
 
if (tinyMCE.settings.strict_loading_mode)
this.pendingFiles[this.pendingFiles.length] = url;
else
document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></script>');
 
this.loadedFiles[this.loadedFiles.length] = url;
},
 
loadNextScript : function() {
var d = document, se;
 
if (!tinyMCE.settings.strict_loading_mode)
return;
 
if (this.loadingIndex < this.pendingFiles.length) {
se = d.createElementNS('http://www.w3.org/1999/xhtml', 'script');
se.setAttribute('language', 'javascript');
se.setAttribute('type', 'text/javascript');
se.setAttribute('src', this.pendingFiles[this.loadingIndex++]);
 
d.getElementsByTagName("head")[0].appendChild(se);
} else
this.loadingIndex = -1; // Done with loading
},
 
loadCSS : function(url) {
var ar = url.replace(/\s+/, '').split(',');
var lflen = 0, csslen = 0, skip = false;
var x = 0, i = 0, nl, le;
 
for (x = 0,csslen = ar.length; x<csslen; x++) {
if (ar[x] != null && ar[x] != 'null' && ar[x].length > 0) {
/* Make sure it doesn't exist. */
for (i=0, lflen=this.loadedFiles.length; i<lflen; i++) {
if (this.loadedFiles[i] == ar[x]) {
skip = true;
break;
}
}
 
if (!skip) {
if (tinyMCE.settings.strict_loading_mode) {
nl = document.getElementsByTagName("head");
 
le = document.createElement('link');
le.setAttribute('href', ar[x]);
le.setAttribute('rel', 'stylesheet');
le.setAttribute('type', 'text/css');
 
nl[0].appendChild(le);
} else
document.write('<link href="' + ar[x] + '" rel="stylesheet" type="text/css" />');
 
this.loadedFiles[this.loadedFiles.length] = ar[x];
}
}
}
},
 
importCSS : function(doc, css) {
var css_ary = css.replace(/\s+/, '').split(',');
var csslen, elm, headArr, x, css_file;
 
for (x = 0, csslen = css_ary.length; x<csslen; x++) {
css_file = css_ary[x];
 
if (css_file != null && css_file != 'null' && css_file.length > 0) {
// Is relative, make absolute
if (css_file.indexOf('://') == -1 && css_file.charAt(0) != '/')
css_file = this.documentBasePath + "/" + css_file;
 
if (typeof(doc.createStyleSheet) == "undefined") {
elm = doc.createElement("link");
 
elm.rel = "stylesheet";
elm.href = css_file;
 
if ((headArr = doc.getElementsByTagName("head")) != null && headArr.length > 0)
headArr[0].appendChild(elm);
} else
doc.createStyleSheet(css_file);
}
}
},
 
confirmAdd : function(e, settings) {
var elm = tinyMCE.isIE ? event.srcElement : e.target;
var elementId = elm.name ? elm.name : elm.id;
 
tinyMCE.settings = settings;
 
if (tinyMCE.settings.convert_on_click || (!elm.getAttribute('mce_noask') && confirm(tinyMCELang.lang_edit_confirm)))
tinyMCE.addMCEControl(elm, elementId);
 
elm.setAttribute('mce_noask', 'true');
},
 
updateContent : function(form_element_name) {
var formElement, n, inst, doc;
 
// Find MCE instance linked to given form element and copy it's value
formElement = document.getElementById(form_element_name);
for (n in tinyMCE.instances) {
inst = tinyMCE.instances[n];
 
if (!tinyMCE.isInstance(inst))
continue;
 
inst.switchSettings();
 
if (inst.formElement == formElement) {
doc = inst.getDoc();
 
tinyMCE._setHTML(doc, inst.formElement.value);
 
if (!tinyMCE.isIE)
doc.body.innerHTML = tinyMCE._cleanupHTML(inst, doc, this.settings, doc.body, inst.visualAid);
}
}
},
 
addMCEControl : function(replace_element, form_element_name, target_document) {
var id = "mce_editor_" + tinyMCE.idCounter++;
var inst = new TinyMCE_Control(tinyMCE.settings);
 
inst.editorId = id;
this.instances[id] = inst;
 
inst._onAdd(replace_element, form_element_name, target_document);
},
 
removeInstance : function(ti) {
var t = [], n, i;
 
// Remove from instances
for (n in tinyMCE.instances) {
i = tinyMCE.instances[n];
 
if (tinyMCE.isInstance(i) && ti != i)
t[n] = i;
}
 
tinyMCE.instances = t;
 
// Remove from global undo/redo
n = [];
t = tinyMCE.undoLevels;
 
for (i=0; i<t.length; i++) {
if (t[i] != ti)
n.push(t[i]);
}
 
tinyMCE.undoLevels = n;
tinyMCE.undoIndex = n.length;
 
// Dispatch remove instance call
tinyMCE.dispatchCallback(ti, 'remove_instance_callback', 'removeInstance', ti);
 
return ti;
},
 
removeMCEControl : function(editor_id) {
var inst = tinyMCE.getInstanceById(editor_id), h, re, ot, tn, n;
 
if (inst) {
inst.switchSettings();
 
editor_id = inst.editorId;
h = tinyMCE.getContent(editor_id);
 
this.removeInstance(inst);
 
tinyMCE.selectedElement = null;
tinyMCE.selectedInstance = null;
 
tinyMCE.selectedElement = null;
tinyMCE.selectedInstance = null;
 
// Try finding an instance
for (n in tinyMCE.instances) {
if (!tinyMCE.isInstance(tinyMCE.instances[n]))
continue;
 
tinyMCE.selectedInstance = tinyMCE.instances[n];
break;
}
 
// Remove element
re = document.getElementById(editor_id + "_parent");
ot = inst.oldTargetElement;
tn = ot.nodeName.toLowerCase();
 
if (tn == "textarea" || tn == "input") {
re.parentNode.removeChild(re);
ot.style.display = "inline";
ot.value = h;
} else {
ot.innerHTML = h;
ot.style.display = 'block';
re.parentNode.insertBefore(ot, re);
re.parentNode.removeChild(re);
}
}
},
 
triggerSave : function(skip_cleanup, skip_callback) {
var inst, n;
 
// Default to false
if (typeof(skip_cleanup) == "undefined")
skip_cleanup = false;
 
// Default to false
if (typeof(skip_callback) == "undefined")
skip_callback = false;
 
// Cleanup and set all form fields
for (n in tinyMCE.instances) {
inst = tinyMCE.instances[n];
 
if (!tinyMCE.isInstance(inst))
continue;
 
inst.triggerSave(skip_cleanup, skip_callback);
}
},
 
resetForm : function(form_index) {
var i, inst, n, formObj = document.forms[form_index];
 
for (n in tinyMCE.instances) {
inst = tinyMCE.instances[n];
 
if (!tinyMCE.isInstance(inst))
continue;
 
inst.switchSettings();
 
for (i=0; i<formObj.elements.length; i++) {
if (inst.formTargetElementId == formObj.elements[i].name)
inst.getBody().innerHTML = inst.startContent;
}
}
},
 
execInstanceCommand : function(editor_id, command, user_interface, value, focus) {
var inst = tinyMCE.getInstanceById(editor_id), r;
 
if (inst) {
r = inst.selection.getRng();
 
if (typeof(focus) == "undefined")
focus = true;
 
// IE bug lost focus on images in absolute divs Bug #1534575
if (focus && (!r || !r.item))
inst.contentWindow.focus();
 
// Reset design mode if lost
inst.autoResetDesignMode();
 
this.selectedElement = inst.getFocusElement();
inst.select();
tinyMCE.execCommand(command, user_interface, value);
 
// Cancel event so it doesn't call onbeforeonunlaod
if (tinyMCE.isIE && window.event != null)
tinyMCE.cancelEvent(window.event);
}
},
 
execCommand : function(command, user_interface, value) {
var inst = tinyMCE.selectedInstance, n, pe, te;
 
// Default input
user_interface = user_interface ? user_interface : false;
value = value ? value : null;
 
if (inst)
inst.switchSettings();
 
switch (command) {
case "Undo":
if (this.getParam('custom_undo_redo_global')) {
if (this.undoIndex > 0) {
tinyMCE.nextUndoRedoAction = 'Undo';
inst = this.undoLevels[--this.undoIndex];
inst.select();
 
if (!tinyMCE.nextUndoRedoInstanceId)
inst.execCommand('Undo');
}
} else
inst.execCommand('Undo');
return true;
 
case "Redo":
if (this.getParam('custom_undo_redo_global')) {
if (this.undoIndex <= this.undoLevels.length - 1) {
tinyMCE.nextUndoRedoAction = 'Redo';
inst = this.undoLevels[this.undoIndex++];
inst.select();
 
if (!tinyMCE.nextUndoRedoInstanceId)
inst.execCommand('Redo');
}
} else
inst.execCommand('Redo');
 
return true;
 
case 'mceFocus':
inst = tinyMCE.getInstanceById(value);
 
if (inst)
inst.getWin().focus();
return;
 
case "mceAddControl":
case "mceAddEditor":
tinyMCE.addMCEControl(tinyMCE._getElementById(value), value);
return;
 
case "mceAddFrameControl":
tinyMCE.addMCEControl(tinyMCE._getElementById(value.element, value.document), value.element, value.document);
return;
 
case "mceRemoveControl":
case "mceRemoveEditor":
tinyMCE.removeMCEControl(value);
return;
 
case "mceToggleEditor":
inst = tinyMCE.getInstanceById(value);
 
if (inst) {
pe = document.getElementById(inst.editorId + '_parent');
te = inst.oldTargetElement;
 
if (typeof(inst.enabled) == 'undefined')
inst.enabled = true;
 
inst.enabled = !inst.enabled;
 
if (!inst.enabled) {
pe.style.display = 'none';
 
if (te.nodeName == 'TEXTAREA' || te.nodeName == 'INPUT')
te.value = inst.getHTML();
else
te.innerHTML = inst.getHTML();
 
te.style.display = inst.oldTargetDisplay;
tinyMCE.dispatchCallback(inst, 'hide_instance_callback', 'hideInstance', inst);
} else {
pe.style.display = 'block';
te.style.display = 'none';
 
if (te.nodeName == 'TEXTAREA' || te.nodeName == 'INPUT')
inst.setHTML(te.value);
else
inst.setHTML(te.innerHTML);
 
inst.useCSS = false;
tinyMCE.dispatchCallback(inst, 'show_instance_callback', 'showInstance', inst);
}
} else
tinyMCE.addMCEControl(tinyMCE._getElementById(value), value);
 
return;
 
case "mceResetDesignMode":
// Resets the designmode state of the editors in Gecko
if (tinyMCE.isGecko) {
for (n in tinyMCE.instances) {
if (!tinyMCE.isInstance(tinyMCE.instances[n]))
continue;
 
try {
tinyMCE.instances[n].getDoc().designMode = "off";
tinyMCE.instances[n].getDoc().designMode = "on";
tinyMCE.instances[n].useCSS = false;
} catch (e) {
// Ignore any errors
}
}
}
 
return;
}
 
if (inst) {
inst.execCommand(command, user_interface, value);
} else if (tinyMCE.settings.focus_alert)
alert(tinyMCELang.lang_focus_alert);
},
 
_createIFrame : function(replace_element, doc, win) {
var iframe, id = replace_element.getAttribute("id");
var aw, ah;
 
if (typeof(doc) == "undefined")
doc = document;
 
if (typeof(win) == "undefined")
win = window;
 
iframe = doc.createElement("iframe");
 
aw = "" + tinyMCE.settings.area_width;
ah = "" + tinyMCE.settings.area_height;
 
if (aw.indexOf('%') == -1) {
aw = parseInt(aw);
aw = (isNaN(aw) || aw < 0) ? 300 : aw;
aw = aw + "px";
}
 
if (ah.indexOf('%') == -1) {
ah = parseInt(ah);
ah = (isNaN(ah) || ah < 0) ? 240 : ah;
ah = ah + "px";
}
 
iframe.setAttribute("id", id);
iframe.setAttribute("name", id);
iframe.setAttribute("class", "mceEditorIframe");
iframe.setAttribute("border", "0");
iframe.setAttribute("frameBorder", "0");
iframe.setAttribute("marginWidth", "0");
iframe.setAttribute("marginHeight", "0");
iframe.setAttribute("leftMargin", "0");
iframe.setAttribute("topMargin", "0");
iframe.setAttribute("width", aw);
iframe.setAttribute("height", ah);
iframe.setAttribute("allowtransparency", "true");
iframe.className = 'mceEditorIframe';
 
if (tinyMCE.settings.auto_resize)
iframe.setAttribute("scrolling", "no");
 
// Must have a src element in MSIE HTTPs breaks aswell as absoute URLs
if (tinyMCE.isRealIE)
iframe.setAttribute("src", this.settings.default_document);
 
iframe.style.width = aw;
iframe.style.height = ah;
 
// Ugly hack for Gecko problem in strict mode
if (tinyMCE.settings.strict_loading_mode)
iframe.style.marginBottom = '-5px';
 
// MSIE 5.0 issue
if (tinyMCE.isRealIE)
replace_element.outerHTML = iframe.outerHTML;
else
replace_element.parentNode.replaceChild(iframe, replace_element);
 
if (tinyMCE.isRealIE)
return win.frames[id];
else
return iframe;
},
 
setupContent : function(editor_id) {
var inst = tinyMCE.instances[editor_id], i, doc = inst.getDoc(), head = doc.getElementsByTagName('head').item(0);
var content = inst.startContent, contentElement, body;
 
// HTML values get XML encoded in strict mode
if (tinyMCE.settings.strict_loading_mode) {
content = content.replace(/&lt;/g, '<');
content = content.replace(/&gt;/g, '>');
content = content.replace(/&quot;/g, '"');
content = content.replace(/&amp;/g, '&');
}
 
tinyMCE.selectedInstance = inst;
inst.switchSettings();
 
// Not loaded correctly hit it again, Mozilla bug #997860
if (!tinyMCE.isIE && tinyMCE.getParam("setupcontent_reload", false) && doc.title != "blank_page") {
// This part will remove the designMode status
// Failes first time in Firefox 1.5b2 on Mac
try {doc.location.href = tinyMCE.baseURL + "/blank.htm";} catch (ex) {}
window.setTimeout("tinyMCE.setupContent('" + editor_id + "');", 1000);
return;
}
 
// Wait for it to load
if (!head || !doc.body) {
window.setTimeout("tinyMCE.setupContent('" + editor_id + "');", 10);
return;
}
 
// Import theme specific content CSS the user specific
tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/themes/" + inst.settings.theme + "/css/editor_content.css");
tinyMCE.importCSS(inst.getDoc(), inst.settings.content_css);
tinyMCE.dispatchCallback(inst, 'init_instance_callback', 'initInstance', inst);
 
// Setup keyboard shortcuts
if (tinyMCE.getParam('custom_undo_redo_keyboard_shortcuts')) {
inst.addShortcut('ctrl', 'z', 'lang_undo_desc', 'Undo');
inst.addShortcut('ctrl', 'y', 'lang_redo_desc', 'Redo');
}
 
// BlockFormat shortcuts keys
for (i=1; i<=6; i++)
inst.addShortcut('ctrl', '' + i, '', 'FormatBlock', false, '<h' + i + '>');
 
inst.addShortcut('ctrl', '7', '', 'FormatBlock', false, '<p>');
inst.addShortcut('ctrl', '8', '', 'FormatBlock', false, '<div>');
inst.addShortcut('ctrl', '9', '', 'FormatBlock', false, '<address>');
 
// Add default shortcuts for gecko
if (tinyMCE.isGecko) {
inst.addShortcut('ctrl', 'b', 'lang_bold_desc', 'Bold');
inst.addShortcut('ctrl', 'i', 'lang_italic_desc', 'Italic');
inst.addShortcut('ctrl', 'u', 'lang_underline_desc', 'Underline');
}
 
// Setup span styles
if (tinyMCE.getParam("convert_fonts_to_spans"))
inst.getBody().setAttribute('id', 'mceSpanFonts');
 
if (tinyMCE.settings.nowrap)
doc.body.style.whiteSpace = "nowrap";
 
doc.body.dir = this.settings.directionality;
doc.editorId = editor_id;
 
// Add on document element in Mozilla
if (!tinyMCE.isIE)
doc.documentElement.editorId = editor_id;
 
inst.setBaseHREF(tinyMCE.settings.base_href);
 
// Replace new line characters to BRs
if (tinyMCE.settings.convert_newlines_to_brs) {
content = tinyMCE.regexpReplace(content, "\r\n", "<br />", "gi");
content = tinyMCE.regexpReplace(content, "\r", "<br />", "gi");
content = tinyMCE.regexpReplace(content, "\n", "<br />", "gi");
}
 
// Open closed anchors
// content = content.replace(new RegExp('<a(.*?)/>', 'gi'), '<a$1></a>');
 
// Call custom cleanup code
content = tinyMCE.storeAwayURLs(content);
content = tinyMCE._customCleanup(inst, "insert_to_editor", content);
 
if (tinyMCE.isIE) {
// Ugly!!!
window.setInterval('try{tinyMCE.getCSSClasses(tinyMCE.instances["' + editor_id + '"].getDoc(), "' + editor_id + '");}catch(e){}', 500);
 
if (tinyMCE.settings.force_br_newlines)
doc.styleSheets[0].addRule("p", "margin: 0;");
 
body = inst.getBody();
body.editorId = editor_id;
}
 
content = tinyMCE.cleanupHTMLCode(content);
 
// Fix for bug #958637
if (!tinyMCE.isIE) {
contentElement = inst.getDoc().createElement("body");
doc = inst.getDoc();
 
contentElement.innerHTML = content;
 
if (tinyMCE.settings.cleanup_on_startup)
tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, doc, this.settings, contentElement));
else
tinyMCE.setInnerHTML(inst.getBody(), content);
 
tinyMCE.convertAllRelativeURLs(inst.getBody());
} else {
if (tinyMCE.settings.cleanup_on_startup) {
tinyMCE._setHTML(inst.getDoc(), content);
 
// Produces permission denied error in MSIE 5.5
try {
tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, inst.contentDocument, this.settings, inst.getBody()));
} catch(e) {
// Ignore
}
} else
tinyMCE._setHTML(inst.getDoc(), content);
}
 
// Fix for bug #957681
//inst.getDoc().designMode = inst.getDoc().designMode;
 
tinyMCE.handleVisualAid(inst.getBody(), true, tinyMCE.settings.visual, inst);
tinyMCE.dispatchCallback(inst, 'setupcontent_callback', 'setupContent', editor_id, inst.getBody(), inst.getDoc());
 
// Re-add design mode on mozilla
if (!tinyMCE.isIE)
tinyMCE.addEventHandlers(inst);
 
// Add blur handler
if (tinyMCE.isIE) {
tinyMCE.addEvent(inst.getBody(), "blur", TinyMCE_Engine.prototype._eventPatch);
tinyMCE.addEvent(inst.getBody(), "beforedeactivate", TinyMCE_Engine.prototype._eventPatch); // Bug #1439953
 
// Workaround for drag drop/copy paste base href bug
if (!tinyMCE.isOpera) {
tinyMCE.addEvent(doc.body, "mousemove", TinyMCE_Engine.prototype.onMouseMove);
tinyMCE.addEvent(doc.body, "beforepaste", TinyMCE_Engine.prototype._eventPatch);
tinyMCE.addEvent(doc.body, "drop", TinyMCE_Engine.prototype._eventPatch);
}
}
 
// Trigger node change, this call locks buttons for tables and so forth
inst.select();
tinyMCE.selectedElement = inst.contentWindow.document.body;
 
// Call custom DOM cleanup
tinyMCE._customCleanup(inst, "insert_to_editor_dom", inst.getBody());
tinyMCE._customCleanup(inst, "setup_content_dom", inst.getBody());
tinyMCE._setEventsEnabled(inst.getBody(), false);
tinyMCE.cleanupAnchors(inst.getDoc());
 
if (tinyMCE.getParam("convert_fonts_to_spans"))
tinyMCE.convertSpansToFonts(inst.getDoc());
 
inst.startContent = tinyMCE.trim(inst.getBody().innerHTML);
inst.undoRedo.add({ content : inst.startContent });
 
// Cleanup any mess left from storyAwayURLs
if (tinyMCE.isGecko) {
// Remove mce_src from textnodes and comments
tinyMCE.selectNodes(inst.getBody(), function(n) {
if (n.nodeType == 3 || n.nodeType == 8)
n.nodeValue = n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"', 'gi'), "");
 
return false;
});
}
 
// Remove Gecko spellchecking
if (tinyMCE.isGecko)
inst.getBody().spellcheck = tinyMCE.getParam("gecko_spellcheck");
 
// Cleanup any mess left from storyAwayURLs
tinyMCE._removeInternal(inst.getBody());
 
inst.select();
tinyMCE.triggerNodeChange(false, true);
},
 
storeAwayURLs : function(s) {
// Remove all mce_src, mce_href and replace them with new ones
// s = s.replace(new RegExp('mce_src\\s*=\\s*\"[^ >\"]*\"', 'gi'), '');
// s = s.replace(new RegExp('mce_href\\s*=\\s*\"[^ >\"]*\"', 'gi'), '');
 
if (!s.match(/(mce_src|mce_href)/gi, s)) {
s = s.replace(new RegExp('src\\s*=\\s*\"([^ >\"]*)\"', 'gi'), 'src="$1" mce_src="$1"');
s = s.replace(new RegExp('href\\s*=\\s*\"([^ >\"]*)\"', 'gi'), 'href="$1" mce_href="$1"');
}
 
return s;
},
 
_removeInternal : function(n) {
if (tinyMCE.isGecko) {
// Remove mce_src from textnodes and comments
tinyMCE.selectNodes(n, function(n) {
if (n.nodeType == 3 || n.nodeType == 8)
n.nodeValue = n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"', 'gi'), "");
 
return false;
});
}
},
 
removeTinyMCEFormElements : function(form_obj) {
var i, elementId;
 
// Skip form element removal
if (!tinyMCE.getParam('hide_selects_on_submit'))
return;
 
// Check if form is valid
if (typeof(form_obj) == "undefined" || form_obj == null)
return;
 
// If not a form, find the form
if (form_obj.nodeName != "FORM") {
if (form_obj.form)
form_obj = form_obj.form;
else
form_obj = tinyMCE.getParentElement(form_obj, "form");
}
 
// Still nothing
if (form_obj == null)
return;
 
// Disable all UI form elements that TinyMCE created
for (i=0; i<form_obj.elements.length; i++) {
elementId = form_obj.elements[i].name ? form_obj.elements[i].name : form_obj.elements[i].id;
 
if (elementId.indexOf('mce_editor_') == 0)
form_obj.elements[i].disabled = true;
}
},
 
handleEvent : function(e) {
var inst = tinyMCE.selectedInstance, i, elm, keys;
 
// Remove odd, error
if (typeof(tinyMCE) == "undefined")
return true;
 
//tinyMCE.debug(e.type + " " + e.target.nodeName + " " + (e.relatedTarget ? e.relatedTarget.nodeName : ""));
 
if (tinyMCE.executeCallback(tinyMCE.selectedInstance, 'handle_event_callback', 'handleEvent', e))
return false;
 
switch (e.type) {
case "beforedeactivate": // Was added due to bug #1439953
case "blur":
if (tinyMCE.selectedInstance)
tinyMCE.selectedInstance.execCommand('mceEndTyping');
 
tinyMCE.hideMenus();
 
return;
 
// Workaround for drag drop/copy paste base href bug
case "drop":
case "beforepaste":
if (tinyMCE.selectedInstance)
tinyMCE.selectedInstance.setBaseHREF(null);
 
// Fixes odd MSIE bug where drag/droping elements in a iframe with height 100% breaks
// This logic forces the width/height to be in pixels while the user is drag/dropping
if (tinyMCE.isRealIE) {
var ife = tinyMCE.selectedInstance.iframeElement;
 
/*if (ife.style.width.indexOf('%') != -1) {
ife._oldWidth = ife.width.height;
ife.style.width = ife.clientWidth;
}*/
 
if (ife.style.height.indexOf('%') != -1) {
ife._oldHeight = ife.style.height;
ife.style.height = ife.clientHeight;
}
}
 
window.setTimeout("tinyMCE.selectedInstance.setBaseHREF(tinyMCE.settings.base_href);tinyMCE._resetIframeHeight();", 1);
return;
 
case "submit":
tinyMCE.formSubmit(tinyMCE.isMSIE ? window.event.srcElement : e.target);
return;
 
case "reset":
var formObj = tinyMCE.isIE ? window.event.srcElement : e.target;
 
for (i=0; i<document.forms.length; i++) {
if (document.forms[i] == formObj)
window.setTimeout('tinyMCE.resetForm(' + i + ');', 10);
}
 
return;
 
case "keypress":
if (inst && inst.handleShortcut(e))
return false;
 
if (e.target.editorId) {
tinyMCE.instances[e.target.editorId].select();
} else {
if (e.target.ownerDocument.editorId)
tinyMCE.instances[e.target.ownerDocument.editorId].select();
}
 
if (tinyMCE.selectedInstance)
tinyMCE.selectedInstance.switchSettings();
 
// Insert P element
if ((tinyMCE.isGecko || tinyMCE.isOpera || tinyMCE.isSafari) && tinyMCE.settings.force_p_newlines && e.keyCode == 13 && !e.shiftKey) {
// Insert P element instead of BR
if (TinyMCE_ForceParagraphs._insertPara(tinyMCE.selectedInstance, e)) {
// Cancel event
tinyMCE.execCommand("mceAddUndoLevel");
return tinyMCE.cancelEvent(e);
}
}
 
// Handle backspace
if ((tinyMCE.isGecko && !tinyMCE.isSafari) && tinyMCE.settings.force_p_newlines && (e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) {
// Insert P element instead of BR
if (TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance, e.type)) {
// Cancel event
tinyMCE.execCommand("mceAddUndoLevel");
return tinyMCE.cancelEvent(e);
}
}
 
// Return key pressed
if (tinyMCE.isIE && tinyMCE.settings.force_br_newlines && e.keyCode == 13) {
if (e.target.editorId)
tinyMCE.instances[e.target.editorId].select();
 
if (tinyMCE.selectedInstance) {
var sel = tinyMCE.selectedInstance.getDoc().selection;
var rng = sel.createRange();
 
if (tinyMCE.getParentElement(rng.parentElement(), "li") != null)
return false;
 
// Cancel event
e.returnValue = false;
e.cancelBubble = true;
 
// Insert BR element
rng.pasteHTML("<br />");
rng.collapse(false);
rng.select();
 
tinyMCE.execCommand("mceAddUndoLevel");
tinyMCE.triggerNodeChange(false);
return false;
}
}
 
// Backspace or delete
if (e.keyCode == 8 || e.keyCode == 46) {
tinyMCE.selectedElement = e.target;
tinyMCE.linkElement = tinyMCE.getParentElement(e.target, "a");
tinyMCE.imgElement = tinyMCE.getParentElement(e.target, "img");
tinyMCE.triggerNodeChange(false);
}
 
return false;
 
case "keyup":
case "keydown":
tinyMCE.hideMenus();
tinyMCE.hasMouseMoved = false;
 
if (inst && inst.handleShortcut(e))
return false;
 
inst._fixRootBlocks();
 
if (inst.settings.remove_trailing_nbsp)
inst._fixTrailingNbsp();
 
if (e.target.editorId)
tinyMCE.instances[e.target.editorId].select();
 
if (tinyMCE.selectedInstance)
tinyMCE.selectedInstance.switchSettings();
 
inst = tinyMCE.selectedInstance;
 
// Handle backspace
if (tinyMCE.isGecko && tinyMCE.settings.force_p_newlines && (e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) {
// Insert P element instead of BR
if (TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance, e.type)) {
// Cancel event
tinyMCE.execCommand("mceAddUndoLevel");
e.preventDefault();
return false;
}
}
 
tinyMCE.selectedElement = null;
tinyMCE.selectedNode = null;
elm = tinyMCE.selectedInstance.getFocusElement();
tinyMCE.linkElement = tinyMCE.getParentElement(elm, "a");
tinyMCE.imgElement = tinyMCE.getParentElement(elm, "img");
tinyMCE.selectedElement = elm;
 
// Update visualaids on tabs
if (tinyMCE.isGecko && e.type == "keyup" && e.keyCode == 9)
tinyMCE.handleVisualAid(tinyMCE.selectedInstance.getBody(), true, tinyMCE.settings.visual, tinyMCE.selectedInstance);
 
// Fix empty elements on return/enter, check where enter occured
if (tinyMCE.isIE && e.type == "keydown" && e.keyCode == 13)
tinyMCE.enterKeyElement = tinyMCE.selectedInstance.getFocusElement();
 
// Fix empty elements on return/enter
if (tinyMCE.isIE && e.type == "keyup" && e.keyCode == 13) {
elm = tinyMCE.enterKeyElement;
if (elm) {
var re = new RegExp('^HR|IMG|BR$','g'); // Skip these
var dre = new RegExp('^H[1-6]$','g'); // Add double on these
 
if (!elm.hasChildNodes() && !re.test(elm.nodeName)) {
if (dre.test(elm.nodeName))
elm.innerHTML = "&nbsp;&nbsp;";
else
elm.innerHTML = "&nbsp;";
}
}
}
 
// Check if it's a position key
keys = tinyMCE.posKeyCodes;
var posKey = false;
for (i=0; i<keys.length; i++) {
if (keys[i] == e.keyCode) {
posKey = true;
break;
}
}
 
// MSIE custom key handling
if (tinyMCE.isIE && tinyMCE.settings.custom_undo_redo) {
keys = [8, 46]; // Backspace,Delete
 
for (i=0; i<keys.length; i++) {
if (keys[i] == e.keyCode) {
if (e.type == "keyup")
tinyMCE.triggerNodeChange(false);
}
}
}
 
// If Ctrl key
if (e.keyCode == 17)
return true;
 
// Handle Undo/Redo when typing content
 
if (tinyMCE.isGecko) {
// Start typing (not a position key or ctrl key, but ctrl+x and ctrl+p is ok)
if (!posKey && e.type == "keyup" && !e.ctrlKey || (e.ctrlKey && (e.keyCode == 86 || e.keyCode == 88)))
tinyMCE.execCommand("mceStartTyping");
} else {
// IE seems to be working better with this setting
if (!posKey && e.type == "keyup")
tinyMCE.execCommand("mceStartTyping");
}
 
// Store undo bookmark
if (e.type == "keydown" && (posKey || e.ctrlKey) && inst)
inst.undoBookmark = inst.selection.getBookmark();
 
// End typing (position key) or some Ctrl event
if (e.type == "keyup" && (posKey || e.ctrlKey))
tinyMCE.execCommand("mceEndTyping");
 
if (posKey && e.type == "keyup")
tinyMCE.triggerNodeChange(false);
 
if (tinyMCE.isIE && e.ctrlKey)
window.setTimeout('tinyMCE.triggerNodeChange(false);', 1);
break;
 
case "mousedown":
case "mouseup":
case "click":
case "dblclick":
case "focus":
tinyMCE.hideMenus();
 
if (tinyMCE.selectedInstance) {
tinyMCE.selectedInstance.switchSettings();
tinyMCE.selectedInstance.isFocused = true;
}
 
// Check instance event trigged on
var targetBody = tinyMCE.getParentElement(e.target, "html");
for (var instanceName in tinyMCE.instances) {
if (!tinyMCE.isInstance(tinyMCE.instances[instanceName]))
continue;
 
inst = tinyMCE.instances[instanceName];
 
// Reset design mode if lost (on everything just in case)
inst.autoResetDesignMode();
 
// Use HTML element since users might click outside of body element
if (inst.getBody().parentNode == targetBody) {
inst.select();
tinyMCE.selectedElement = e.target;
tinyMCE.linkElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "a");
tinyMCE.imgElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "img");
break;
}
}
 
// Add first bookmark location
if (!tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark && (e.type == "mouseup" || e.type == "dblclick"))
tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark = tinyMCE.selectedInstance.selection.getBookmark();
 
// Reset selected node
if (e.type != "focus")
tinyMCE.selectedNode = null;
 
tinyMCE.triggerNodeChange(false);
tinyMCE.execCommand("mceEndTyping");
 
if (e.type == "mouseup")
tinyMCE.execCommand("mceAddUndoLevel");
 
// Just in case
if (!tinyMCE.selectedInstance && e.target.editorId)
tinyMCE.instances[e.target.editorId].select();
 
return false;
}
},
 
getButtonHTML : function(id, lang, img, cmd, ui, val) {
var h = '', m, x, io = '';
 
cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + cmd + '\'';
 
if (typeof(ui) != "undefined" && ui != null)
cmd += ',' + ui;
 
if (typeof(val) != "undefined" && val != null)
cmd += ",'" + val + "'";
 
cmd += ');';
 
// Patch for IE7 bug with hover out not restoring correctly
if (tinyMCE.isRealIE)
io = 'onmouseover="tinyMCE.lastHover = this;"';
 
// Use tilemaps when enabled and found and never in MSIE since it loads the tile each time from cache if cahce is disabled
if (tinyMCE.getParam('button_tile_map') && (!tinyMCE.isIE || tinyMCE.isOpera) && (m = this.buttonMap[id]) != null && (tinyMCE.getParam("language") == "en" || img.indexOf('$lang') == -1)) {
// Tiled button
x = 0 - (m * 20) == 0 ? '0' : 0 - (m * 20);
h += '<a id="{$editor_id}_' + id + '" href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" ' + io + ' class="mceTiledButton mceButtonNormal" target="_self">';
h += '<img src="{$themeurl}/images/spacer.gif" style="background-position: ' + x + 'px 0" alt="{$'+lang+'}" title="{$' + lang + '}" />';
h += '</a>';
} else {
// Normal button
h += '<a id="{$editor_id}_' + id + '" href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" ' + io + ' class="mceButtonNormal" target="_self">';
h += '<img src="' + img + '" alt="{$'+lang+'}" title="{$' + lang + '}" />';
h += '</a>';
}
 
return h;
},
 
getMenuButtonHTML : function(id, lang, img, mcmd, cmd, ui, val) {
var h = '', m, x;
 
mcmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + mcmd + '\');';
cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + cmd + '\'';
 
if (typeof(ui) != "undefined" && ui != null)
cmd += ',' + ui;
 
if (typeof(val) != "undefined" && val != null)
cmd += ",'" + val + "'";
 
cmd += ');';
 
// Use tilemaps when enabled and found and never in MSIE since it loads the tile each time from cache if cahce is disabled
if (tinyMCE.getParam('button_tile_map') && (!tinyMCE.isIE || tinyMCE.isOpera) && (m = tinyMCE.buttonMap[id]) != null && (tinyMCE.getParam("language") == "en" || img.indexOf('$lang') == -1)) {
x = 0 - (m * 20) == 0 ? '0' : 0 - (m * 20);
 
if (tinyMCE.isRealIE)
h += '<span id="{$editor_id}_' + id + '" class="mceMenuButton" onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover = this;" onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';
else
h += '<span id="{$editor_id}_' + id + '" class="mceMenuButton">';
 
h += '<a href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" class="mceTiledButton mceMenuButtonNormal" target="_self">';
h += '<img src="{$themeurl}/images/spacer.gif" style="width: 20px; height: 20px; background-position: ' + x + 'px 0" title="{$' + lang + '}" /></a>';
h += '<a href="javascript:' + mcmd + '" onclick="' + mcmd + 'return false;" onmousedown="return false;"><img src="{$themeurl}/images/button_menu.gif" title="{$' + lang + '}" class="mceMenuButton" />';
h += '</a></span>';
} else {
if (tinyMCE.isRealIE)
h += '<span id="{$editor_id}_' + id + '" dir="ltr" class="mceMenuButton" onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover = this;" onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';
else
h += '<span id="{$editor_id}_' + id + '" dir="ltr" class="mceMenuButton">';
 
h += '<a href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" class="mceMenuButtonNormal" target="_self">';
h += '<img src="' + img + '" title="{$' + lang + '}" /></a>';
h += '<a href="javascript:' + mcmd + '" onclick="' + mcmd + 'return false;" onmousedown="return false;"><img src="{$themeurl}/images/button_menu.gif" title="{$' + lang + '}" class="mceMenuButton" />';
h += '</a></span>';
}
 
return h;
},
 
_menuButtonEvent : function(e, o) {
if (o.className == 'mceMenuButtonFocus')
return;
 
if (e == 'over')
o.className = o.className + ' mceMenuHover';
else
o.className = o.className.replace(/\s.*$/, '');
},
 
addButtonMap : function(m) {
var i, a = m.replace(/\s+/, '').split(',');
 
for (i=0; i<a.length; i++)
this.buttonMap[a[i]] = i;
},
 
formSubmit : function(f, p) {
var n, inst, found = false;
 
if (f.form)
f = f.form;
 
// Is it a form that has a TinyMCE instance
if (tinyMCE.getParam('save_on_tinymce_forms')) {
for (n in tinyMCE.instances) {
inst = tinyMCE.instances[n];
 
if (!tinyMCE.isInstance(inst))
continue;
 
if (inst.formElement) {
if (f == inst.formElement.form) {
found = true;
inst.isNotDirty = true;
}
}
}
} else
found = true;
 
// Is valid
if (found) {
tinyMCE.removeTinyMCEFormElements(f);
tinyMCE.triggerSave();
}
 
// Is it patched
if (f.mceOldSubmit && p)
f.mceOldSubmit();
},
 
submitPatch : function() {
tinyMCE.formSubmit(this, true);
},
 
onLoad : function() {
var r, i, c, mode, trigger, elements, element, settings, elementId, elm;
var selector, deselector, elementRefAr, form;
 
// Wait for everything to be loaded first
if (tinyMCE.settings.strict_loading_mode && this.loadingIndex != -1) {
window.setTimeout('tinyMCE.onLoad();', 1);
return;
}
 
if (tinyMCE.isRealIE && window.event.type == "readystatechange" && document.readyState != "complete")
return true;
 
if (tinyMCE.isLoaded)
return true;
 
tinyMCE.isLoaded = true;
 
// IE produces JS error if TinyMCE is placed in a frame
// It seems to have something to do with the selection not beeing
// correctly initialized in IE so this hack solves the problem
if (tinyMCE.isRealIE && document.body && window.location.href != window.top.location.href) {
r = document.body.createTextRange();
r.collapse(true);
r.select();
}
 
tinyMCE.dispatchCallback(null, 'onpageload', 'onPageLoad');
 
for (c=0; c<tinyMCE.configs.length; c++) {
tinyMCE.settings = tinyMCE.configs[c];
 
selector = tinyMCE.getParam("editor_selector");
deselector = tinyMCE.getParam("editor_deselector");
elementRefAr = [];
 
// Add submit triggers
if (document.forms && tinyMCE.settings.add_form_submit_trigger && !tinyMCE.submitTriggers) {
for (i=0; i<document.forms.length; i++) {
form = document.forms[i];
 
tinyMCE.addEvent(form, "submit", TinyMCE_Engine.prototype.handleEvent);
tinyMCE.addEvent(form, "reset", TinyMCE_Engine.prototype.handleEvent);
tinyMCE.submitTriggers = true; // Do it only once
 
// Patch the form.submit function
if (tinyMCE.settings.submit_patch) {
try {
form.mceOldSubmit = form.submit;
form.submit = TinyMCE_Engine.prototype.submitPatch;
} catch (e) {
// Do nothing
}
}
}
}
 
// Add editor instances based on mode
mode = tinyMCE.settings.mode;
switch (mode) {
case "exact":
elements = tinyMCE.getParam('elements', '', true, ',');
 
for (i=0; i<elements.length; i++) {
element = tinyMCE._getElementById(elements[i]);
trigger = element ? element.getAttribute(tinyMCE.settings.textarea_trigger) : "";
 
if (new RegExp('\\b' + deselector + '\\b').test(tinyMCE.getAttrib(element, "class")))
continue;
 
if (trigger == "false")
continue;
 
if ((tinyMCE.settings.ask || tinyMCE.settings.convert_on_click) && element) {
elementRefAr[elementRefAr.length] = element;
continue;
}
 
if (element)
tinyMCE.addMCEControl(element, elements[i]);
}
break;
 
case "specific_textareas":
case "textareas":
elements = document.getElementsByTagName("textarea");
 
for (i=0; i<elements.length; i++) {
elm = elements.item(i);
trigger = elm.getAttribute(tinyMCE.settings.textarea_trigger);
 
if (selector !== '' && !new RegExp('\\b' + selector + '\\b').test(tinyMCE.getAttrib(elm, "class")))
continue;
 
if (selector !== '')
trigger = selector !== '' ? "true" : "";
 
if (new RegExp('\\b' + deselector + '\\b').test(tinyMCE.getAttrib(elm, "class")))
continue;
 
if ((mode == "specific_textareas" && trigger == "true") || (mode == "textareas" && trigger != "false"))
elementRefAr[elementRefAr.length] = elm;
}
break;
}
 
for (i=0; i<elementRefAr.length; i++) {
element = elementRefAr[i];
elementId = element.name ? element.name : element.id;
 
if (tinyMCE.settings.ask || tinyMCE.settings.convert_on_click) {
// Focus breaks in Mozilla
if (tinyMCE.isGecko) {
settings = tinyMCE.settings;
 
tinyMCE.addEvent(element, "focus", function (e) {window.setTimeout(function() {TinyMCE_Engine.prototype.confirmAdd(e, settings);}, 10);});
 
if (element.nodeName != "TEXTAREA" && element.nodeName != "INPUT")
tinyMCE.addEvent(element, "click", function (e) {window.setTimeout(function() {TinyMCE_Engine.prototype.confirmAdd(e, settings);}, 10);});
// tinyMCE.addEvent(element, "mouseover", function (e) {window.setTimeout(function() {TinyMCE_Engine.prototype.confirmAdd(e, settings);}, 10);});
} else {
settings = tinyMCE.settings;
 
tinyMCE.addEvent(element, "focus", function () { TinyMCE_Engine.prototype.confirmAdd(null, settings); });
tinyMCE.addEvent(element, "click", function () { TinyMCE_Engine.prototype.confirmAdd(null, settings); });
// tinyMCE.addEvent(element, "mouseenter", function () { TinyMCE_Engine.prototype.confirmAdd(null, settings); });
}
} else
tinyMCE.addMCEControl(element, elementId);
}
 
// Handle auto focus
if (tinyMCE.settings.auto_focus) {
window.setTimeout(function () {
var inst = tinyMCE.getInstanceById(tinyMCE.settings.auto_focus);
inst.selection.selectNode(inst.getBody(), true, true);
inst.contentWindow.focus();
}, 100);
}
 
tinyMCE.dispatchCallback(null, 'oninit', 'onInit');
}
},
 
isInstance : function(o) {
return o != null && typeof(o) == "object" && o.isTinyMCE_Control;
},
 
getParam : function(name, default_value, strip_whitespace, split_chr) {
var i, outArray, value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
 
// Fix bool values
if (value == "true" || value == "false")
return (value == "true");
 
if (strip_whitespace)
value = tinyMCE.regexpReplace(value, "[ \t\r\n]", "");
 
if (typeof(split_chr) != "undefined" && split_chr != null) {
value = value.split(split_chr);
outArray = [];
 
for (i=0; i<value.length; i++) {
if (value[i] && value[i] !== '')
outArray[outArray.length] = value[i];
}
 
value = outArray;
}
 
return value;
},
 
getLang : function(name, default_value, parse_entities, va) {
var v = (typeof(tinyMCELang[name]) == "undefined") ? default_value : tinyMCELang[name], n;
 
if (parse_entities)
v = tinyMCE.entityDecode(v);
 
if (va) {
for (n in va)
v = this.replaceVar(v, n, va[n]);
}
 
return v;
},
 
entityDecode : function(s) {
var e = document.createElement("div");
 
e.innerHTML = s;
 
return !e.firstChild ? s : e.firstChild.nodeValue;
},
 
addToLang : function(prefix, ar) {
var k;
 
for (k in ar) {
if (typeof(ar[k]) == 'function')
continue;
 
tinyMCELang[(k.indexOf('lang_') == -1 ? 'lang_' : '') + (prefix !== '' ? (prefix + "_") : '') + k] = ar[k];
}
 
this.loadNextScript();
},
 
triggerNodeChange : function(focus, setup_content) {
var elm, inst, editorId, undoIndex = -1, undoLevels = -1, doc, anySelection = false, st;
 
if (tinyMCE.selectedInstance) {
inst = tinyMCE.selectedInstance;
elm = (typeof(setup_content) != "undefined" && setup_content) ? tinyMCE.selectedElement : inst.getFocusElement();
 
/* if (elm == inst.lastTriggerEl)
return;
 
inst.lastTriggerEl = elm;*/
 
editorId = inst.editorId;
st = inst.selection.getSelectedText();
 
if (tinyMCE.settings.auto_resize)
inst.resizeToContent();
 
if (setup_content && tinyMCE.isGecko && inst.isHidden())
elm = inst.getBody();
 
inst.switchSettings();
 
if (tinyMCE.selectedElement)
anySelection = (tinyMCE.selectedElement.nodeName.toLowerCase() == "img") || (st && st.length > 0);
 
if (tinyMCE.settings.custom_undo_redo) {
undoIndex = inst.undoRedo.undoIndex;
undoLevels = inst.undoRedo.undoLevels.length;
}
 
tinyMCE.dispatchCallback(inst, 'handle_node_change_callback', 'handleNodeChange', editorId, elm, undoIndex, undoLevels, inst.visualAid, anySelection, setup_content);
}
 
if (this.selectedInstance && (typeof(focus) == "undefined" || focus))
this.selectedInstance.contentWindow.focus();
},
 
_customCleanup : function(inst, type, content) {
var pl, po, i, customCleanup;
 
// Call custom cleanup
customCleanup = tinyMCE.settings.cleanup_callback;
if (customCleanup != '')
content = tinyMCE.resolveDots(tinyMCE.settings.cleanup_callback, window)(type, content, inst);
 
// Trigger theme cleanup
po = tinyMCE.themes[tinyMCE.settings.theme];
if (po && po.cleanup)
content = po.cleanup(type, content, inst);
 
// Trigger plugin cleanups
pl = inst.plugins;
for (i=0; i<pl.length; i++) {
po = tinyMCE.plugins[pl[i]];
 
if (po && po.cleanup)
content = po.cleanup(type, content, inst);
}
 
return content;
},
 
setContent : function(h) {
if (tinyMCE.selectedInstance) {
tinyMCE.selectedInstance.execCommand('mceSetContent', false, h);
tinyMCE.selectedInstance.repaint();
}
},
 
importThemeLanguagePack : function(name) {
if (typeof(name) == "undefined")
name = tinyMCE.settings.theme;
 
tinyMCE.loadScript(tinyMCE.baseURL + '/themes/' + name + '/langs/' + tinyMCE.settings.language + '.js');
},
 
importPluginLanguagePack : function(name) {
var b = tinyMCE.baseURL + '/plugins/' + name;
 
if (this.plugins[name])
b = this.plugins[name].baseURL;
 
tinyMCE.loadScript(b + '/langs/' + tinyMCE.settings.language + '.js');
},
 
applyTemplate : function(h, ag) {
return h.replace(new RegExp('\\{\\$([a-z0-9_]+)\\}', 'gi'), function(m, s) {
if (s.indexOf('lang_') == 0 && tinyMCELang[s])
return tinyMCELang[s];
 
if (ag && ag[s])
return ag[s];
 
if (tinyMCE.settings[s])
return tinyMCE.settings[s];
 
if (m == 'themeurl')
return tinyMCE.themeURL;
 
return m;
});
},
 
replaceVar : function(h, r, v) {
return h.replace(new RegExp('{\\\$' + r + '}', 'g'), v);
},
 
openWindow : function(template, args) {
var html, width, height, x, y, resizable, scrollbars, url, name, win, modal, features;
 
args = !args ? {} : args;
 
args.mce_template_file = template.file;
args.mce_width = template.width;
args.mce_height = template.height;
tinyMCE.windowArgs = args;
 
html = template.html;
if (!(width = parseInt(template.width)))
width = 320;
 
if (!(height = parseInt(template.height)))
height = 200;
 
// Add to height in M$ due to SP2 WHY DON'T YOU GUYS IMPLEMENT innerWidth of windows!!
if (tinyMCE.isIE)
height += 40;
else
height += 20;
 
x = parseInt(screen.width / 2.0) - (width / 2.0);
y = parseInt(screen.height / 2.0) - (height / 2.0);
 
resizable = (args && args.resizable) ? args.resizable : "no";
scrollbars = (args && args.scrollbars) ? args.scrollbars : "no";
 
if (template.file.charAt(0) != '/' && template.file.indexOf('://') == -1)
url = tinyMCE.baseURL + "/themes/" + tinyMCE.getParam("theme") + "/" + template.file;
else
url = template.file;
 
// Replace all args as variables in URL
for (name in args) {
if (typeof(args[name]) == 'function')
continue;
 
url = tinyMCE.replaceVar(url, name, escape(args[name]));
}
 
if (html) {
html = tinyMCE.replaceVar(html, "css", this.settings.popups_css);
html = tinyMCE.applyTemplate(html, args);
 
win = window.open("", "mcePopup" + new Date().getTime(), "top=" + y + ",left=" + x + ",scrollbars=" + scrollbars + ",dialog=yes,minimizable=" + resizable + ",modal=yes,width=" + width + ",height=" + height + ",resizable=" + resizable);
if (win == null) {
alert(tinyMCELang.lang_popup_blocked);
return;
}
 
win.document.write(html);
win.document.close();
win.resizeTo(width, height);
win.focus();
} else {
if ((tinyMCE.isRealIE) && resizable != 'yes' && tinyMCE.settings.dialog_type == "modal") {
height += 10;
 
features = "resizable:" + resizable + ";scroll:" + scrollbars + ";status:yes;center:yes;help:no;dialogWidth:" + width + "px;dialogHeight:" + height + "px;";
 
window.showModalDialog(url, window, features);
} else {
modal = (resizable == "yes") ? "no" : "yes";
 
if (tinyMCE.isGecko && tinyMCE.isMac)
modal = "no";
 
if (template.close_previous != "no")
try {tinyMCE.lastWindow.close();} catch (ex) {}
 
win = window.open(url, "mcePopup" + new Date().getTime(), "top=" + y + ",left=" + x + ",scrollbars=" + scrollbars + ",dialog=" + modal + ",minimizable=" + resizable + ",modal=" + modal + ",width=" + width + ",height=" + height + ",resizable=" + resizable);
if (win == null) {
alert(tinyMCELang.lang_popup_blocked);
return;
}
 
if (template.close_previous != "no")
tinyMCE.lastWindow = win;
 
try {
win.resizeTo(width, height);
} catch(e) {
// Ignore
}
 
// Make it bigger if statusbar is forced
if (tinyMCE.isGecko) {
if (win.document.defaultView.statusbar.visible)
win.resizeBy(0, tinyMCE.isMac ? 10 : 24);
}
 
win.focus();
}
}
},
 
closeWindow : function(win) {
win.close();
},
 
getVisualAidClass : function(class_name, state) {
var i, classNames, ar, className, aidClass = tinyMCE.settings.visual_table_class;
 
if (typeof(state) == "undefined")
state = tinyMCE.settings.visual;
 
// Split
classNames = [];
ar = class_name.split(' ');
for (i=0; i<ar.length; i++) {
if (ar[i] == aidClass)
ar[i] = "";
 
if (ar[i] !== '')
classNames[classNames.length] = ar[i];
}
 
if (state)
classNames[classNames.length] = aidClass;
 
// Glue
className = "";
for (i=0; i<classNames.length; i++) {
if (i > 0)
className += " ";
 
className += classNames[i];
}
 
return className;
},
 
handleVisualAid : function(el, deep, state, inst, skip_dispatch) {
var i, x, y, tableElement, anchorName, oldW, oldH, bo, cn;
 
if (!el)
return;
 
if (!skip_dispatch)
tinyMCE.dispatchCallback(inst, 'handle_visual_aid_callback', 'handleVisualAid', el, deep, state, inst);
 
tableElement = null;
 
switch (el.nodeName) {
case "TABLE":
oldW = el.style.width;
oldH = el.style.height;
bo = tinyMCE.getAttrib(el, "border");
 
bo = bo == '' || bo == "0" ? true : false;
 
tinyMCE.setAttrib(el, "class", tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el, "class"), state && bo));
 
el.style.width = oldW;
el.style.height = oldH;
 
for (y=0; y<el.rows.length; y++) {
for (x=0; x<el.rows[y].cells.length; x++) {
cn = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el.rows[y].cells[x], "class"), state && bo);
tinyMCE.setAttrib(el.rows[y].cells[x], "class", cn);
}
}
 
break;
 
case "A":
anchorName = tinyMCE.getAttrib(el, "name");
 
if (anchorName !== '' && state) {
el.title = anchorName;
tinyMCE.addCSSClass(el, 'mceItemAnchor');
} else if (anchorName !== '' && !state)
el.className = '';
 
break;
}
 
if (deep && el.hasChildNodes()) {
for (i=0; i<el.childNodes.length; i++)
tinyMCE.handleVisualAid(el.childNodes[i], deep, state, inst, true);
}
},
 
fixGeckoBaseHREFBug : function(m, e, h) {
var xsrc, xhref;
 
if (tinyMCE.isGecko) {
if (m == 1) {
h = h.replace(/\ssrc=/gi, " mce_tsrc=");
h = h.replace(/\shref=/gi, " mce_thref=");
 
return h;
} else {
// Why bother if there is no src or href broken
if (!new RegExp('(src|href)=', 'g').test(h))
return h;
 
// Restore src and href that gets messed up by Gecko
tinyMCE.selectElements(e, 'A,IMG,SELECT,AREA,IFRAME,BASE,INPUT,SCRIPT,EMBED,OBJECT,LINK', function (n) {
xsrc = tinyMCE.getAttrib(n, "mce_tsrc");
xhref = tinyMCE.getAttrib(n, "mce_thref");
 
if (xsrc !== '') {
try {
n.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, xsrc);
} catch (e) {
// Ignore, Firefox cast exception if local file wasn't found
}
 
n.removeAttribute("mce_tsrc");
}
 
if (xhref !== '') {
try {
n.href = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, xhref);
} catch (e) {
// Ignore, Firefox cast exception if local file wasn't found
}
 
n.removeAttribute("mce_thref");
}
 
return false;
});
 
// Restore text/comment nodes
tinyMCE.selectNodes(e, function(n) {
if (n.nodeType == 3 || n.nodeType == 8) {
n.nodeValue = n.nodeValue.replace(/\smce_tsrc=/gi, " src=");
n.nodeValue = n.nodeValue.replace(/\smce_thref=/gi, " href=");
}
 
return false;
});
}
}
 
return h;
},
 
_setHTML : function(doc, html_content) {
var i, html, paras, node;
 
// Force closed anchors open
//html_content = html_content.replace(new RegExp('<a(.*?)/>', 'gi'), '<a$1></a>');
 
html_content = tinyMCE.cleanupHTMLCode(html_content);
 
// Try innerHTML if it fails use pasteHTML in MSIE
try {
tinyMCE.setInnerHTML(doc.body, html_content);
} catch (e) {
if (this.isMSIE)
doc.body.createTextRange().pasteHTML(html_content);
}
 
// Content duplication bug fix
if (tinyMCE.isIE && tinyMCE.settings.fix_content_duplication) {
// Remove P elements in P elements
paras = doc.getElementsByTagName("P");
for (i=0; i<paras.length; i++) {
node = paras[i];
 
while ((node = node.parentNode) != null) {
if (node.nodeName == "P")
node.outerHTML = node.innerHTML;
}
}
 
// Content duplication bug fix (Seems to be word crap)
html = doc.body.innerHTML;
 
// Always set the htmlText output
tinyMCE.setInnerHTML(doc.body, html);
}
 
tinyMCE.cleanupAnchors(doc);
 
if (tinyMCE.getParam("convert_fonts_to_spans"))
tinyMCE.convertSpansToFonts(doc);
},
 
getEditorId : function(form_element) {
var inst = this.getInstanceById(form_element);
 
if (!inst)
return null;
 
return inst.editorId;
},
 
getInstanceById : function(editor_id) {
var inst = this.instances[editor_id], n;
 
if (!inst) {
for (n in tinyMCE.instances) {
inst = tinyMCE.instances[n];
 
if (!tinyMCE.isInstance(inst))
continue;
 
if (inst.formTargetElementId == editor_id)
return inst;
}
} else
return inst;
 
return null;
},
 
queryInstanceCommandValue : function(editor_id, command) {
var inst = tinyMCE.getInstanceById(editor_id);
 
if (inst)
return inst.queryCommandValue(command);
 
return false;
},
 
queryInstanceCommandState : function(editor_id, command) {
var inst = tinyMCE.getInstanceById(editor_id);
 
if (inst)
return inst.queryCommandState(command);
 
return null;
},
 
setWindowArg : function(n, v) {
this.windowArgs[n] = v;
},
 
getWindowArg : function(n, d) {
return (typeof(this.windowArgs[n]) == "undefined") ? d : this.windowArgs[n];
},
 
getCSSClasses : function(editor_id, doc) {
var i, c, x, rule, styles, rules, csses, selectorText, inst = tinyMCE.getInstanceById(editor_id);
var cssClass, addClass, p;
 
if (!inst)
inst = tinyMCE.selectedInstance;
 
if (!inst)
return [];
 
if (!doc)
doc = inst.getDoc();
 
// Is cached, use that
if (inst && inst.cssClasses.length > 0)
return inst.cssClasses;
 
if (!doc)
return;
 
styles = doc.styleSheets;
 
if (styles && styles.length > 0) {
for (x=0; x<styles.length; x++) {
csses = null;
 
try {
csses = tinyMCE.isIE ? doc.styleSheets(x).rules : styles[x].cssRules;
} catch(e) {
// Just ignore any errors I know this is ugly!!
}
if (!csses)
return [];
 
for (i=0; i<csses.length; i++) {
selectorText = csses[i].selectorText;
 
// Can be multiple rules per selector
if (selectorText) {
rules = selectorText.split(',');
for (c=0; c<rules.length; c++) {
rule = rules[c];
 
// Strip spaces between selectors
while (rule.indexOf(' ') == 0)
rule = rule.substring(1);
 
// Invalid rule
if (rule.indexOf(' ') != -1 || rule.indexOf(':') != -1 || rule.indexOf('mceItem') != -1)
continue;
 
if (rule.indexOf(tinyMCE.settings.visual_table_class) != -1 || rule.indexOf('mceEditable') != -1 || rule.indexOf('mceNonEditable') != -1)
continue;
 
// Is class rule
if (rule.indexOf('.') != -1) {
cssClass = rule.substring(rule.indexOf('.') + 1);
addClass = true;
 
for (p=0; p<inst.cssClasses.length && addClass; p++) {
if (inst.cssClasses[p] == cssClass)
addClass = false;
}
 
if (addClass)
inst.cssClasses[inst.cssClasses.length] = cssClass;
}
}
}
}
}
}
 
return inst.cssClasses;
},
 
regexpReplace : function(in_str, reg_exp, replace_str, opts) {
var re;
 
if (in_str == null)
return in_str;
 
if (typeof(opts) == "undefined")
opts = 'g';
 
re = new RegExp(reg_exp, opts);
 
return in_str.replace(re, replace_str);
},
 
trim : function(s) {
return s.replace(/^\s*|\s*$/g, "");
},
 
cleanupEventStr : function(s) {
s = "" + s;
s = s.replace('function anonymous()\n{\n', '');
s = s.replace('\n}', '');
s = s.replace(/^return true;/gi, ''); // Remove event blocker
 
return s;
},
 
getControlHTML : function(c) {
var i, l, n, o, v, rtl = tinyMCE.getLang('lang_dir') == 'rtl';
 
l = tinyMCE.plugins;
for (n in l) {
o = l[n];
 
if (o.getControlHTML && (v = o.getControlHTML(c)) !== '') {
if (rtl)
return '<span dir="rtl">' + tinyMCE.replaceVar(v, "pluginurl", o.baseURL) + '</span>';
 
return tinyMCE.replaceVar(v, "pluginurl", o.baseURL);
}
}
 
o = tinyMCE.themes[tinyMCE.settings.theme];
if (o.getControlHTML && (v = o.getControlHTML(c)) !== '') {
if (rtl)
return '<span dir="rtl">' + v + '</span>';
 
return v;
}
 
return '';
},
 
evalFunc : function(f, idx, a, o) {
o = !o ? window : o;
f = typeof(f) == 'function' ? f : o[f];
 
return f.apply(o, Array.prototype.slice.call(a, idx));
},
 
dispatchCallback : function(i, p, n) {
return this.callFunc(i, p, n, 0, this.dispatchCallback.arguments);
},
 
executeCallback : function(i, p, n) {
return this.callFunc(i, p, n, 1, this.executeCallback.arguments);
},
 
execCommandCallback : function(i, p, n) {
return this.callFunc(i, p, n, 2, this.execCommandCallback.arguments);
},
 
callFunc : function(ins, p, n, m, a) {
var l, i, on, o, s, v;
 
s = m == 2;
 
l = tinyMCE.getParam(p, '');
 
if (l !== '' && (v = tinyMCE.evalFunc(l, 3, a)) == s && m > 0)
return true;
 
if (ins != null) {
for (i=0, l = ins.plugins; i<l.length; i++) {
o = tinyMCE.plugins[l[i]];
 
if (o[n] && (v = tinyMCE.evalFunc(n, 3, a, o)) == s && m > 0)
return true;
}
}
 
l = tinyMCE.themes;
for (on in l) {
o = l[on];
 
if (o[n] && (v = tinyMCE.evalFunc(n, 3, a, o)) == s && m > 0)
return true;
}
 
return false;
},
 
resolveDots : function(s, o) {
var i;
 
if (typeof(s) == 'string') {
for (i=0, s=s.split('.'); i<s.length; i++)
o = o[s[i]];
} else
o = s;
 
return o;
},
 
xmlEncode : function(s) {
return s ? ('' + s).replace(this.xmlEncodeRe, function (c, b) {
switch (c) {
case '&':
return '&amp;';
 
case '"':
return '&quot;';
 
case '<':
return '&lt;';
 
case '>':
return '&gt;';
}
 
return c;
}) : s;
},
 
add : function(c, m) {
var n;
 
for (n in m) {
if (m.hasOwnProperty(n))
c.prototype[n] = m[n];
}
},
 
extend : function(p, np) {
var o = {}, n;
 
o.parent = p;
 
for (n in p) {
if (p.hasOwnProperty(n))
o[n] = p[n];
}
 
for (n in np) {
if (np.hasOwnProperty(n))
o[n] = np[n];
}
 
return o;
},
 
hideMenus : function() {
var e = tinyMCE.lastSelectedMenuBtn;
 
if (tinyMCE.lastMenu) {
tinyMCE.lastMenu.hide();
tinyMCE.lastMenu = null;
}
 
if (e) {
tinyMCE.switchClass(e, tinyMCE.lastMenuBtnClass);
tinyMCE.lastSelectedMenuBtn = null;
}
}
 
};
 
// Global instances
var TinyMCE = TinyMCE_Engine; // Compatiblity with gzip compressors
var tinyMCE = new TinyMCE_Engine();
var tinyMCELang = {};
 
/* file:jscripts/tiny_mce/classes/TinyMCE_Control.class.js */
 
function TinyMCE_Control(settings) {
var t, i, tos, fu, p, x, fn, fu, pn, s = settings;
 
this.undoRedoLevel = true;
this.isTinyMCE_Control = true;
 
// Default settings
this.enabled = true;
this.settings = s;
this.settings.theme = tinyMCE.getParam("theme", "default");
this.settings.width = tinyMCE.getParam("width", -1);
this.settings.height = tinyMCE.getParam("height", -1);
this.selection = new TinyMCE_Selection(this);
this.undoRedo = new TinyMCE_UndoRedo(this);
this.cleanup = new TinyMCE_Cleanup();
this.shortcuts = [];
this.hasMouseMoved = false;
this.foreColor = this.backColor = "#999999";
this.data = {};
this.cssClasses = [];
 
this.cleanup.init({
valid_elements : s.valid_elements,
extended_valid_elements : s.extended_valid_elements,
valid_child_elements : s.valid_child_elements,
entities : s.entities,
entity_encoding : s.entity_encoding,
debug : s.cleanup_debug,
indent : s.apply_source_formatting,
invalid_elements : s.invalid_elements,
verify_html : s.verify_html,
fix_content_duplication : s.fix_content_duplication,
convert_fonts_to_spans : s.convert_fonts_to_spans
});
 
// Wrap old theme
t = this.settings.theme;
if (!tinyMCE.hasTheme(t)) {
fn = tinyMCE.callbacks;
tos = {};
 
for (i=0; i<fn.length; i++) {
if ((fu = window['TinyMCE_' + t + "_" + fn[i]]))
tos[fn[i]] = fu;
}
 
tinyMCE.addTheme(t, tos);
}
 
// Wrap old plugins
this.plugins = [];
p = tinyMCE.getParam('plugins', '', true, ',');
if (p.length > 0) {
for (i=0; i<p.length; i++) {
pn = p[i];
 
if (pn.charAt(0) == '-')
pn = pn.substring(1);
 
if (!tinyMCE.hasPlugin(pn)) {
fn = tinyMCE.callbacks;
tos = {};
 
for (x=0; x<fn.length; x++) {
if ((fu = window['TinyMCE_' + pn + "_" + fn[x]]))
tos[fn[x]] = fu;
}
 
tinyMCE.addPlugin(pn, tos);
}
 
this.plugins[this.plugins.length] = pn;
}
}
};
 
TinyMCE_Control.prototype = {
selection : null,
 
settings : null,
 
cleanup : null,
 
getData : function(na) {
var o = this.data[na];
 
if (!o)
o = this.data[na] = {};
 
return o;
},
 
hasPlugin : function(n) {
var i;
 
for (i=0; i<this.plugins.length; i++) {
if (this.plugins[i] == n)
return true;
}
 
return false;
},
 
addPlugin : function(n, p) {
if (!this.hasPlugin(n)) {
tinyMCE.addPlugin(n, p);
this.plugins[this.plugins.length] = n;
}
},
 
repaint : function() {
var s, b, ex;
 
if (tinyMCE.isRealIE)
return;
 
try {
s = this.selection;
b = s.getBookmark(true);
this.getBody().style.display = 'none';
this.getDoc().execCommand('selectall', false, null);
this.getSel().collapseToStart();
this.getBody().style.display = 'block';
s.moveToBookmark(b);
} catch (ex) {
// Ignore
}
},
 
switchSettings : function() {
if (tinyMCE.configs.length > 1 && tinyMCE.currentConfig != this.settings.index) {
tinyMCE.settings = this.settings;
tinyMCE.currentConfig = this.settings.index;
}
},
 
select : function() {
var oldInst = tinyMCE.selectedInstance;
 
if (oldInst != this) {
if (oldInst)
oldInst.execCommand('mceEndTyping');
 
tinyMCE.dispatchCallback(this, 'select_instance_callback', 'selectInstance', this, oldInst);
tinyMCE.selectedInstance = this;
}
},
 
getBody : function() {
return this.contentBody ? this.contentBody : this.getDoc().body;
},
 
getDoc : function() {
// return this.contentDocument ? this.contentDocument : this.contentWindow.document; // Removed due to IE 5.5 ?
return this.contentWindow.document;
},
 
getWin : function() {
return this.contentWindow;
},
 
getContainerWin : function() {
return this.containerWindow ? this.containerWindow : window;
},
 
getViewPort : function() {
return tinyMCE.getViewPort(this.getWin());
},
 
getParentNode : function(n, f) {
return tinyMCE.getParentNode(n, f, this.getBody());
},
 
getParentElement : function(n, na, f) {
return tinyMCE.getParentElement(n, na, f, this.getBody());
},
 
getParentBlockElement : function(n) {
return tinyMCE.getParentBlockElement(n, this.getBody());
},
 
resizeToContent : function() {
var d = this.getDoc(), b = d.body, de = d.documentElement;
 
this.iframeElement.style.height = (tinyMCE.isRealIE) ? b.scrollHeight : de.offsetHeight + 'px';
},
 
addShortcut : function(m, k, d, cmd, ui, va) {
var n = typeof(k) == "number", ie = tinyMCE.isIE, c, sc, i, scl = this.shortcuts;
 
if (!tinyMCE.getParam('custom_shortcuts'))
return false;
 
m = m.toLowerCase();
k = ie && !n ? k.toUpperCase() : k;
c = n ? null : k.charCodeAt(0);
d = d && d.indexOf('lang_') == 0 ? tinyMCE.getLang(d) : d;
 
sc = {
alt : m.indexOf('alt') != -1,
ctrl : m.indexOf('ctrl') != -1,
shift : m.indexOf('shift') != -1,
charCode : c,
keyCode : n ? k : (ie ? c : null),
desc : d,
cmd : cmd,
ui : ui,
val : va
};
 
for (i=0; i<scl.length; i++) {
if (sc.alt == scl[i].alt && sc.ctrl == scl[i].ctrl && sc.shift == scl[i].shift
&& sc.charCode == scl[i].charCode && sc.keyCode == scl[i].keyCode) {
return false;
}
}
 
scl[scl.length] = sc;
 
return true;
},
 
handleShortcut : function(e) {
var i, s, o;
 
// Normal key press, then ignore it
if (!e.altKey && !e.ctrlKey)
return false;
 
s = this.shortcuts;
 
for (i=0; i<s.length; i++) {
o = s[i];
 
if (o.alt == e.altKey && o.ctrl == e.ctrlKey && (o.keyCode == e.keyCode || o.charCode == e.charCode)) {
if (o.cmd && (e.type == "keydown" || (e.type == "keypress" && !tinyMCE.isOpera)))
tinyMCE.execCommand(o.cmd, o.ui, o.val);
 
tinyMCE.cancelEvent(e);
return true;
}
}
 
return false;
},
 
autoResetDesignMode : function() {
// Add fix for tab/style.display none/block problems in Gecko
if (!tinyMCE.isIE && this.isHidden() && tinyMCE.getParam('auto_reset_designmode'))
eval('try { this.getDoc().designMode = "On"; this.useCSS = false; } catch(e) {}');
},
 
isHidden : function() {
var s;
 
if (tinyMCE.isIE)
return false;
 
s = this.getSel();
 
// Weird, wheres that cursor selection?
return (!s || !s.rangeCount || s.rangeCount == 0);
},
 
isDirty : function() {
// Is content modified and not in a submit procedure
return tinyMCE.trim(this.startContent) != tinyMCE.trim(this.getBody().innerHTML) && !this.isNotDirty;
},
 
_mergeElements : function(scmd, pa, ch, override) {
var st, stc, className, n;
 
if (scmd == "removeformat") {
pa.className = "";
pa.style.cssText = "";
ch.className = "";
ch.style.cssText = "";
return;
}
 
st = tinyMCE.parseStyle(tinyMCE.getAttrib(pa, "style"));
stc = tinyMCE.parseStyle(tinyMCE.getAttrib(ch, "style"));
className = tinyMCE.getAttrib(pa, "class");
 
// Removed class adding due to bug #1478272
className = tinyMCE.getAttrib(ch, "class");
 
if (override) {
for (n in st) {
if (typeof(st[n]) == 'function')
continue;
 
stc[n] = st[n];
}
} else {
for (n in stc) {
if (typeof(stc[n]) == 'function')
continue;
 
st[n] = stc[n];
}
}
 
tinyMCE.setAttrib(pa, "style", tinyMCE.serializeStyle(st));
tinyMCE.setAttrib(pa, "class", tinyMCE.trim(className));
ch.className = "";
ch.style.cssText = "";
ch.removeAttribute("class");
ch.removeAttribute("style");
},
 
_fixRootBlocks : function() {
var rb, b, ne, be, nx, bm;
 
rb = tinyMCE.getParam('forced_root_block');
if (!rb)
return;
 
b = this.getBody();
ne = b.firstChild;
 
while (ne) {
nx = ne.nextSibling;
 
// If text node or inline element wrap it in a block element
if ((ne.nodeType == 3 && ne.nodeValue.replace(/\s+/g, '') != '') || (ne.nodeType == 1 && !tinyMCE.blockRegExp.test(ne.nodeName))) {
if (!bm)
bm = this.selection.getBookmark();
 
if (!be) {
be = this.getDoc().createElement(rb);
be.appendChild(ne.cloneNode(true));
b.replaceChild(be, ne);
} else {
be.appendChild(ne.cloneNode(true));
b.removeChild(ne);
}
} else
be = null;
 
ne = nx;
}
 
if (bm)
this.selection.moveToBookmark(bm);
},
 
_fixTrailingNbsp : function() {
var s = this.selection, e = s.getFocusElement(), bm, v;
 
if (e && tinyMCE.blockRegExp.test(e.nodeName) && e.firstChild) {
v = e.firstChild.nodeValue;
 
if (v && v.length > 1 && /(^\u00a0|\u00a0$)/.test(v)) {
e.firstChild.nodeValue = v.replace(/(^\u00a0|\u00a0$)/, '');
s.selectNode(e.firstChild, true, false, false); // Select and collapse
}
}
},
 
_setUseCSS : function(b) {
var d = this.getDoc();
 
try {d.execCommand("useCSS", false, !b);} catch (ex) {}
try {d.execCommand("styleWithCSS", false, b);} catch (ex) {}
 
if (!tinyMCE.getParam("table_inline_editing"))
try {d.execCommand('enableInlineTableEditing', false, "false");} catch (ex) {}
 
if (!tinyMCE.getParam("object_resizing"))
try {d.execCommand('enableObjectResizing', false, "false");} catch (ex) {}
},
 
execCommand : function(command, user_interface, value) {
var i, x, z, align, img, div, doc = this.getDoc(), win = this.getWin(), focusElm = this.getFocusElement();
 
// Is not a undo specific command
if (!new RegExp('mceStartTyping|mceEndTyping|mceBeginUndoLevel|mceEndUndoLevel|mceAddUndoLevel', 'gi').test(command))
this.undoBookmark = null;
 
// Mozilla issue
if (!tinyMCE.isIE && !this.useCSS) {
this._setUseCSS(false);
this.useCSS = true;
}
 
//debug("command: " + command + ", user_interface: " + user_interface + ", value: " + value);
this.contentDocument = doc; // <-- Strange, unless this is applied Mozilla 1.3 breaks
 
// Don't dispatch key commands
if (!/mceStartTyping|mceEndTyping/.test(command)) {
if (tinyMCE.execCommandCallback(this, 'execcommand_callback', 'execCommand', this.editorId, this.getBody(), command, user_interface, value))
return;
}
 
// Fix align on images
if (focusElm && focusElm.nodeName == "IMG") {
align = focusElm.getAttribute('align');
img = command == "JustifyCenter" ? focusElm.cloneNode(false) : focusElm;
 
switch (command) {
case "JustifyLeft":
if (align == 'left') {
img.setAttribute('align', ''); // Needed for IE
img.removeAttribute('align');
} else
img.setAttribute('align', 'left');
 
// Remove the div
div = focusElm.parentNode;
if (div && div.nodeName == "DIV" && div.childNodes.length == 1 && div.parentNode)
div.parentNode.replaceChild(img, div);
 
this.selection.selectNode(img);
this.repaint();
tinyMCE.triggerNodeChange();
return;
 
case "JustifyCenter":
img.setAttribute('align', ''); // Needed for IE
img.removeAttribute('align');
 
// Is centered
div = tinyMCE.getParentElement(focusElm, "div");
if (div && div.style.textAlign == "center") {
// Remove div
if (div.nodeName == "DIV" && div.childNodes.length == 1 && div.parentNode)
div.parentNode.replaceChild(img, div);
} else {
// Add div
div = this.getDoc().createElement("div");
div.style.textAlign = 'center';
div.appendChild(img);
focusElm.parentNode.replaceChild(div, focusElm);
}
 
this.selection.selectNode(img);
this.repaint();
tinyMCE.triggerNodeChange();
return;
 
case "JustifyRight":
if (align == 'right') {
img.setAttribute('align', ''); // Needed for IE
img.removeAttribute('align');
} else
img.setAttribute('align', 'right');
 
// Remove the div
div = focusElm.parentNode;
if (div && div.nodeName == "DIV" && div.childNodes.length == 1 && div.parentNode)
div.parentNode.replaceChild(img, div);
 
this.selection.selectNode(img);
this.repaint();
tinyMCE.triggerNodeChange();
return;
}
}
 
if (tinyMCE.settings.force_br_newlines) {
var alignValue = "";
 
if (doc.selection.type != "Control") {
switch (command) {
case "JustifyLeft":
alignValue = "left";
break;
 
case "JustifyCenter":
alignValue = "center";
break;
 
case "JustifyFull":
alignValue = "justify";
break;
 
case "JustifyRight":
alignValue = "right";
break;
}
 
if (alignValue !== '') {
var rng = doc.selection.createRange();
 
if ((divElm = tinyMCE.getParentElement(rng.parentElement(), "div")) != null)
divElm.setAttribute("align", alignValue);
else if (rng.pasteHTML && rng.htmlText.length > 0)
rng.pasteHTML('<div align="' + alignValue + '">' + rng.htmlText + "</div>");
 
tinyMCE.triggerNodeChange();
return;
}
}
}
 
switch (command) {
case "mceRepaint":
this.repaint();
return true;
 
case "JustifyLeft":
case "JustifyCenter":
case "JustifyFull":
case "JustifyRight":
var el = tinyMCE.getParentNode(focusElm, function(n) {return tinyMCE.getAttrib(n, 'align');});
 
if (el) {
el.setAttribute('align', ''); // Needed for IE
el.removeAttribute('align');
} else
this.getDoc().execCommand(command, user_interface, value);
 
tinyMCE.triggerNodeChange();
 
return true;
 
case "unlink":
// Unlink if caret is inside link
if (tinyMCE.isGecko && this.getSel().isCollapsed) {
focusElm = tinyMCE.getParentElement(focusElm, 'A');
 
if (focusElm)
this.selection.selectNode(focusElm, false);
}
 
this.getDoc().execCommand(command, user_interface, value);
 
tinyMCE.isGecko && this.getSel().collapseToEnd();
 
tinyMCE.triggerNodeChange();
 
return true;
 
case "InsertUnorderedList":
case "InsertOrderedList":
this.getDoc().execCommand(command, user_interface, value);
tinyMCE.triggerNodeChange();
break;
 
case "Strikethrough":
this.getDoc().execCommand(command, user_interface, value);
tinyMCE.triggerNodeChange();
break;
 
case "mceSelectNode":
this.selection.selectNode(value);
tinyMCE.triggerNodeChange();
tinyMCE.selectedNode = value;
break;
 
case "FormatBlock":
if (value == null || value == '') {
var elm = tinyMCE.getParentElement(this.getFocusElement(), "p,div,h1,h2,h3,h4,h5,h6,pre,address,blockquote,dt,dl,dd,samp");
 
if (elm)
this.execCommand("mceRemoveNode", false, elm);
} else {
if (!this.cleanup.isValid(value))
return true;
 
if (tinyMCE.isGecko && new RegExp('<(div|blockquote|code|dt|dd|dl|samp)>', 'gi').test(value))
value = value.replace(/[^a-z]/gi, '');
 
if (tinyMCE.isIE && new RegExp('blockquote|code|samp', 'gi').test(value)) {
var b = this.selection.getBookmark();
this.getDoc().execCommand("FormatBlock", false, '<p>');
tinyMCE.renameElement(tinyMCE.getParentBlockElement(this.getFocusElement()), value);
this.selection.moveToBookmark(b);
} else
this.getDoc().execCommand("FormatBlock", false, value);
}
 
tinyMCE.triggerNodeChange();
 
break;
 
case "mceRemoveNode":
if (!value)
value = tinyMCE.getParentElement(this.getFocusElement());
 
if (tinyMCE.isIE) {
value.outerHTML = value.innerHTML;
} else {
var rng = value.ownerDocument.createRange();
rng.setStartBefore(value);
rng.setEndAfter(value);
rng.deleteContents();
rng.insertNode(rng.createContextualFragment(value.innerHTML));
}
 
tinyMCE.triggerNodeChange();
 
break;
 
case "mceSelectNodeDepth":
var parentNode = this.getFocusElement();
for (i=0; parentNode; i++) {
if (parentNode.nodeName.toLowerCase() == "body")
break;
 
if (parentNode.nodeName.toLowerCase() == "#text") {
i--;
parentNode = parentNode.parentNode;
continue;
}
 
if (i == value) {
this.selection.selectNode(parentNode, false);
tinyMCE.triggerNodeChange();
tinyMCE.selectedNode = parentNode;
return;
}
 
parentNode = parentNode.parentNode;
}
 
break;
 
case "mceSetStyleInfo":
case "SetStyleInfo":
var rng = this.getRng();
var sel = this.getSel();
var scmd = value.command;
var sname = value.name;
var svalue = value.value == null ? '' : value.value;
//var svalue = value['value'] == null ? '' : value['value'];
var wrapper = value.wrapper ? value.wrapper : "span";
var parentElm = null;
var invalidRe = new RegExp("^BODY|HTML$", "g");
var invalidParentsRe = tinyMCE.settings.merge_styles_invalid_parents !== '' ? new RegExp(tinyMCE.settings.merge_styles_invalid_parents, "gi") : null;
 
// Whole element selected check
if (tinyMCE.isIE) {
// Control range
if (rng.item)
parentElm = rng.item(0);
else {
var pelm = rng.parentElement();
var prng = doc.selection.createRange();
prng.moveToElementText(pelm);
 
if (rng.htmlText == prng.htmlText || rng.boundingWidth == 0) {
if (invalidParentsRe == null || !invalidParentsRe.test(pelm.nodeName))
parentElm = pelm;
}
}
} else {
var felm = this.getFocusElement();
if (sel.isCollapsed || (new RegExp('td|tr|tbody|table|img', 'gi').test(felm.nodeName) && sel.anchorNode == felm.parentNode))
parentElm = felm;
}
 
// Whole element selected
if (parentElm && !invalidRe.test(parentElm.nodeName)) {
if (scmd == "setstyle")
tinyMCE.setStyleAttrib(parentElm, sname, svalue);
 
if (scmd == "setattrib")
tinyMCE.setAttrib(parentElm, sname, svalue);
 
if (scmd == "removeformat") {
parentElm.style.cssText = '';
tinyMCE.setAttrib(parentElm, 'class', '');
}
 
// Remove style/attribs from all children
var ch = tinyMCE.getNodeTree(parentElm, [], 1);
for (z=0; z<ch.length; z++) {
if (ch[z] == parentElm)
continue;
 
if (scmd == "setstyle")
tinyMCE.setStyleAttrib(ch[z], sname, '');
 
if (scmd == "setattrib")
tinyMCE.setAttrib(ch[z], sname, '');
 
if (scmd == "removeformat") {
ch[z].style.cssText = '';
tinyMCE.setAttrib(ch[z], 'class', '');
}
}
} else {
this._setUseCSS(false); // Bug in FF when running in fullscreen
doc.execCommand("FontName", false, "#mce_temp_font#");
var elementArray = tinyMCE.getElementsByAttributeValue(this.getBody(), "font", "face", "#mce_temp_font#");
 
// Change them all
for (x=0; x<elementArray.length; x++) {
elm = elementArray[x];
if (elm) {
var spanElm = doc.createElement(wrapper);
 
if (scmd == "setstyle")
tinyMCE.setStyleAttrib(spanElm, sname, svalue);
 
if (scmd == "setattrib")
tinyMCE.setAttrib(spanElm, sname, svalue);
 
if (scmd == "removeformat") {
spanElm.style.cssText = '';
tinyMCE.setAttrib(spanElm, 'class', '');
}
 
if (elm.hasChildNodes()) {
for (i=0; i<elm.childNodes.length; i++)
spanElm.appendChild(elm.childNodes[i].cloneNode(true));
}
 
spanElm.setAttribute("mce_new", "true");
elm.parentNode.replaceChild(spanElm, elm);
 
// Remove style/attribs from all children
var ch = tinyMCE.getNodeTree(spanElm, [], 1);
for (z=0; z<ch.length; z++) {
if (ch[z] == spanElm)
continue;
 
if (scmd == "setstyle")
tinyMCE.setStyleAttrib(ch[z], sname, '');
 
if (scmd == "setattrib")
tinyMCE.setAttrib(ch[z], sname, '');
 
if (scmd == "removeformat") {
ch[z].style.cssText = '';
tinyMCE.setAttrib(ch[z], 'class', '');
}
}
}
}
}
 
// Cleaup wrappers
var nodes = doc.getElementsByTagName(wrapper);
for (i=nodes.length-1; i>=0; i--) {
var elm = nodes[i];
var isNew = tinyMCE.getAttrib(elm, "mce_new") == "true";
 
elm.removeAttribute("mce_new");
 
// Is only child a element
if (elm.childNodes && elm.childNodes.length == 1 && elm.childNodes[0].nodeType == 1) {
//tinyMCE.debug("merge1" + isNew);
this._mergeElements(scmd, elm, elm.childNodes[0], isNew);
continue;
}
 
// Is I the only child
if (elm.parentNode.childNodes.length == 1 && !invalidRe.test(elm.nodeName) && !invalidRe.test(elm.parentNode.nodeName)) {
//tinyMCE.debug("merge2" + isNew + "," + elm.nodeName + "," + elm.parentNode.nodeName);
if (invalidParentsRe == null || !invalidParentsRe.test(elm.parentNode.nodeName))
this._mergeElements(scmd, elm.parentNode, elm, false);
}
}
 
// Remove empty wrappers
var nodes = doc.getElementsByTagName(wrapper);
for (i=nodes.length-1; i>=0; i--) {
var elm = nodes[i], isEmpty = true;
 
// Check if it has any attribs
var tmp = doc.createElement("body");
tmp.appendChild(elm.cloneNode(false));
 
// Is empty span, remove it
tmp.innerHTML = tmp.innerHTML.replace(new RegExp('style=""|class=""', 'gi'), '');
//tinyMCE.debug(tmp.innerHTML);
if (new RegExp('<span>', 'gi').test(tmp.innerHTML)) {
for (x=0; x<elm.childNodes.length; x++) {
if (elm.parentNode != null)
elm.parentNode.insertBefore(elm.childNodes[x].cloneNode(true), elm);
}
 
elm.parentNode.removeChild(elm);
}
}
 
// Re add the visual aids
if (scmd == "removeformat")
tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);
 
tinyMCE.triggerNodeChange();
 
break;
 
case "FontName":
if (value == null) {
var s = this.getSel();
 
// Find font and select it
if (tinyMCE.isGecko && s.isCollapsed) {
var f = tinyMCE.getParentElement(this.getFocusElement(), "font");
 
if (f != null)
this.selection.selectNode(f, false);
}
 
// Remove format
this.getDoc().execCommand("RemoveFormat", false, null);
 
// Collapse range if font was found
if (f != null && tinyMCE.isGecko) {
var r = this.getRng().cloneRange();
r.collapse(true);
s.removeAllRanges();
s.addRange(r);
}
} else
this.getDoc().execCommand('FontName', false, value);
 
if (tinyMCE.isGecko)
window.setTimeout('tinyMCE.triggerNodeChange(false);', 1);
 
return;
 
case "FontSize":
this.getDoc().execCommand('FontSize', false, value);
 
if (tinyMCE.isGecko)
window.setTimeout('tinyMCE.triggerNodeChange(false);', 1);
 
return;
 
case "forecolor":
value = value == null ? this.foreColor : value;
value = tinyMCE.trim(value);
value = value.charAt(0) != '#' ? (isNaN('0x' + value) ? value : '#' + value) : value;
 
this.foreColor = value;
this.getDoc().execCommand('forecolor', false, value);
break;
 
case "HiliteColor":
value = value == null ? this.backColor : value;
value = tinyMCE.trim(value);
value = value.charAt(0) != '#' ? (isNaN('0x' + value) ? value : '#' + value) : value;
this.backColor = value;
 
if (tinyMCE.isGecko || tinyMCE.isOpera) {
this._setUseCSS(true);
this.getDoc().execCommand('hilitecolor', false, value);
this._setUseCSS(false);
} else
this.getDoc().execCommand('BackColor', false, value);
break;
 
case "Cut":
case "Copy":
case "Paste":
var cmdFailed = false;
 
// Try executing command
eval('try {this.getDoc().execCommand(command, user_interface, value);} catch (e) {cmdFailed = true;}');
 
if (tinyMCE.isOpera && cmdFailed)
alert('Currently not supported by your browser, use keyboard shortcuts instead.');
 
// Alert error in gecko if command failed
if (tinyMCE.isGecko && cmdFailed) {
// Confirm more info
if (confirm(tinyMCE.entityDecode(tinyMCE.getLang('lang_clipboard_msg'))))
window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html', 'mceExternal');
 
return;
} else
tinyMCE.triggerNodeChange();
break;
 
case "mceSetContent":
if (!value)
value = "";
 
// Call custom cleanup code
value = tinyMCE.storeAwayURLs(value);
value = tinyMCE._customCleanup(this, "insert_to_editor", value);
 
if (this.getBody().nodeName == 'BODY')
tinyMCE._setHTML(doc, value);
else
this.getBody().innerHTML = value;
 
tinyMCE.setInnerHTML(this.getBody(), tinyMCE._cleanupHTML(this, doc, this.settings, this.getBody(), false, false, false, true));
tinyMCE.convertAllRelativeURLs(this.getBody());
 
// Cleanup any mess left from storyAwayURLs
tinyMCE._removeInternal(this.getBody());
 
// When editing always use fonts internaly
if (tinyMCE.getParam("convert_fonts_to_spans"))
tinyMCE.convertSpansToFonts(doc);
 
tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);
tinyMCE._setEventsEnabled(this.getBody(), false);
this._addBogusBR();
 
return true;
 
case "mceCleanup":
var b = this.selection.getBookmark();
tinyMCE._setHTML(this.contentDocument, this.getBody().innerHTML);
tinyMCE.setInnerHTML(this.getBody(), tinyMCE._cleanupHTML(this, this.contentDocument, this.settings, this.getBody(), this.visualAid));
tinyMCE.convertAllRelativeURLs(doc.body);
 
// When editing always use fonts internaly
if (tinyMCE.getParam("convert_fonts_to_spans"))
tinyMCE.convertSpansToFonts(doc);
 
tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);
tinyMCE._setEventsEnabled(this.getBody(), false);
this._addBogusBR();
this.repaint();
this.selection.moveToBookmark(b);
tinyMCE.triggerNodeChange();
break;
 
case "mceReplaceContent":
// Force empty string
if (!value)
value = '';
 
this.getWin().focus();
 
var selectedText = "";
 
if (tinyMCE.isIE) {
var rng = doc.selection.createRange();
selectedText = rng.text;
} else
selectedText = this.getSel().toString();
 
if (selectedText.length > 0) {
value = tinyMCE.replaceVar(value, "selection", selectedText);
tinyMCE.execCommand('mceInsertContent', false, value);
}
 
this._addBogusBR();
tinyMCE.triggerNodeChange();
break;
 
case "mceSetAttribute":
if (typeof(value) == 'object') {
var targetElms = (typeof(value.targets) == "undefined") ? "p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address" : value.targets;
var targetNode = tinyMCE.getParentElement(this.getFocusElement(), targetElms);
 
if (targetNode) {
targetNode.setAttribute(value.name, value.value);
tinyMCE.triggerNodeChange();
}
}
break;
 
case "mceSetCSSClass":
this.execCommand("mceSetStyleInfo", false, {command : "setattrib", name : "class", value : value});
break;
 
case "mceInsertRawHTML":
var key = 'tiny_mce_marker';
 
this.execCommand('mceBeginUndoLevel');
 
// Insert marker key
this.execCommand('mceInsertContent', false, key);
 
// Store away scroll pos
var scrollX = this.getBody().scrollLeft + this.getDoc().documentElement.scrollLeft;
var scrollY = this.getBody().scrollTop + this.getDoc().documentElement.scrollTop;
 
// Find marker and replace with RAW HTML
var html = this.getBody().innerHTML;
if ((pos = html.indexOf(key)) != -1)
tinyMCE.setInnerHTML(this.getBody(), html.substring(0, pos) + value + html.substring(pos + key.length));
 
// Restore scoll pos
this.contentWindow.scrollTo(scrollX, scrollY);
 
this.execCommand('mceEndUndoLevel');
 
break;
 
case "mceInsertContent":
// Force empty string
if (!value)
value = '';
 
var insertHTMLFailed = false;
 
// Removed since it produced problems in IE
// this.getWin().focus();
 
if (tinyMCE.isGecko || tinyMCE.isOpera) {
try {
// Is plain text or HTML, &amp;, &nbsp; etc will be encoded wrong in FF
if (value.indexOf('<') == -1 && !value.match(/(&#38;|&#160;|&#60;|&#62;)/g)) {
var r = this.getRng();
var n = this.getDoc().createTextNode(tinyMCE.entityDecode(value));
var s = this.getSel();
var r2 = r.cloneRange();
 
// Insert text at cursor position
s.removeAllRanges();
r.deleteContents();
r.insertNode(n);
 
// Move the cursor to the end of text
r2.selectNode(n);
r2.collapse(false);
s.removeAllRanges();
s.addRange(r2);
} else {
value = tinyMCE.fixGeckoBaseHREFBug(1, this.getDoc(), value);
this.getDoc().execCommand('inserthtml', false, value);
tinyMCE.fixGeckoBaseHREFBug(2, this.getDoc(), value);
}
} catch (ex) {
insertHTMLFailed = true;
}
 
if (!insertHTMLFailed) {
tinyMCE.triggerNodeChange();
return;
}
}
 
if (!tinyMCE.isIE) {
var isHTML = value.indexOf('<') != -1;
var sel = this.getSel();
var rng = this.getRng();
 
if (isHTML) {
if (tinyMCE.isSafari) {
var tmpRng = this.getDoc().createRange();
 
tmpRng.setStart(this.getBody(), 0);
tmpRng.setEnd(this.getBody(), 0);
 
value = tmpRng.createContextualFragment(value);
} else
value = rng.createContextualFragment(value);
} else {
// Setup text node
value = doc.createTextNode(tinyMCE.entityDecode(value));
}
 
// Insert plain text in Safari
if (tinyMCE.isSafari && !isHTML) {
this.execCommand('InsertText', false, value.nodeValue);
tinyMCE.triggerNodeChange();
return true;
} else if (tinyMCE.isSafari && isHTML) {
rng.deleteContents();
rng.insertNode(value);
tinyMCE.triggerNodeChange();
return true;
}
 
rng.deleteContents();
 
// If target node is text do special treatment, (Mozilla 1.3 fix)
if (rng.startContainer.nodeType == 3) {
var node = rng.startContainer.splitText(rng.startOffset);
node.parentNode.insertBefore(value, node);
} else
rng.insertNode(value);
 
if (!isHTML) {
// Removes weird selection trails
sel.selectAllChildren(doc.body);
sel.removeAllRanges();
 
// Move cursor to end of content
var rng = doc.createRange();
 
rng.selectNode(value);
rng.collapse(false);
 
sel.addRange(rng);
} else
rng.collapse(false);
 
tinyMCE.fixGeckoBaseHREFBug(2, this.getDoc(), value);
} else {
var rng = doc.selection.createRange(), tmpRng = null;
var c = value.indexOf('<!--') != -1;
 
// Fix comment bug, add tag before comments
if (c)
value = tinyMCE.uniqueTag + value;
 
// tmpRng = rng.duplicate(); // Store away range (Fixes Undo bookmark bug in IE)
 
if (rng.item)
rng.item(0).outerHTML = value;
else
rng.pasteHTML(value);
 
//if (tmpRng)
// tmpRng.select(); // Restore range (Fixes Undo bookmark bug in IE)
 
// Remove unique tag
if (c) {
var e = this.getDoc().getElementById('mceTMPElement');
e.parentNode.removeChild(e);
}
}
 
tinyMCE.execCommand("mceAddUndoLevel");
tinyMCE.triggerNodeChange();
break;
 
case "mceStartTyping":
if (tinyMCE.settings.custom_undo_redo && this.undoRedo.typingUndoIndex == -1) {
this.undoRedo.typingUndoIndex = this.undoRedo.undoIndex;
tinyMCE.typingUndoIndex = tinyMCE.undoIndex;
this.execCommand('mceAddUndoLevel');
}
break;
 
case "mceEndTyping":
if (tinyMCE.settings.custom_undo_redo && this.undoRedo.typingUndoIndex != -1) {
this.execCommand('mceAddUndoLevel');
this.undoRedo.typingUndoIndex = -1;
}
 
tinyMCE.typingUndoIndex = -1;
break;
 
case "mceBeginUndoLevel":
this.undoRedoLevel = false;
break;
 
case "mceEndUndoLevel":
this.undoRedoLevel = true;
this.execCommand('mceAddUndoLevel');
break;
 
case "mceAddUndoLevel":
if (tinyMCE.settings.custom_undo_redo && this.undoRedoLevel) {
if (this.undoRedo.add())
tinyMCE.triggerNodeChange(false);
}
break;
 
case "Undo":
if (tinyMCE.settings.custom_undo_redo) {
tinyMCE.execCommand("mceEndTyping");
this.undoRedo.undo();
tinyMCE.triggerNodeChange();
} else
this.getDoc().execCommand(command, user_interface, value);
break;
 
case "Redo":
if (tinyMCE.settings.custom_undo_redo) {
tinyMCE.execCommand("mceEndTyping");
this.undoRedo.redo();
tinyMCE.triggerNodeChange();
} else
this.getDoc().execCommand(command, user_interface, value);
break;
 
case "mceToggleVisualAid":
this.visualAid = !this.visualAid;
tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);
tinyMCE.triggerNodeChange();
break;
 
case "Indent":
this.getDoc().execCommand(command, user_interface, value);
tinyMCE.triggerNodeChange();
 
if (tinyMCE.isIE) {
var n = tinyMCE.getParentElement(this.getFocusElement(), "blockquote");
do {
if (n && n.nodeName == "BLOCKQUOTE") {
n.removeAttribute("dir");
n.removeAttribute("style");
}
} while (n != null && (n = n.parentNode) != null);
}
break;
 
case "RemoveFormat":
case "removeformat":
var text = this.selection.getSelectedText();
 
if (tinyMCE.isOpera) {
this.getDoc().execCommand("RemoveFormat", false, null);
return;
}
 
if (tinyMCE.isIE) {
try {
var rng = doc.selection.createRange();
rng.execCommand("RemoveFormat", false, null);
} catch (e) {
// Do nothing
}
 
this.execCommand("mceSetStyleInfo", false, {command : "removeformat"});
} else {
this.getDoc().execCommand(command, user_interface, value);
 
this.execCommand("mceSetStyleInfo", false, {command : "removeformat"});
}
 
// Remove class
if (text.length == 0)
this.execCommand("mceSetCSSClass", false, "");
 
tinyMCE.triggerNodeChange();
break;
 
default:
this.getDoc().execCommand(command, user_interface, value);
 
if (tinyMCE.isGecko)
window.setTimeout('tinyMCE.triggerNodeChange(false);', 1);
else
tinyMCE.triggerNodeChange();
}
 
// Add undo level after modification
if (command != "mceAddUndoLevel" && command != "Undo" && command != "Redo" && command != "mceStartTyping" && command != "mceEndTyping")
tinyMCE.execCommand("mceAddUndoLevel");
},
 
queryCommandValue : function(c) {
try {
return this.getDoc().queryCommandValue(c);
} catch (e) {
return null;
}
},
 
queryCommandState : function(c) {
return this.getDoc().queryCommandState(c);
},
 
_addBogusBR : function() {
var b = this.getBody();
 
if (tinyMCE.isGecko && !b.hasChildNodes())
b.innerHTML = '<br _moz_editor_bogus_node="TRUE" />';
},
 
_onAdd : function(replace_element, form_element_name, target_document) {
var hc, th, tos, editorTemplate, targetDoc, deltaWidth, deltaHeight, html, rng, fragment;
var dynamicIFrame, tElm, doc, parentElm;
 
th = this.settings.theme;
tos = tinyMCE.themes[th];
 
targetDoc = target_document ? target_document : document;
 
this.targetDoc = targetDoc;
 
tinyMCE.themeURL = tinyMCE.baseURL + "/themes/" + this.settings.theme;
this.settings.themeurl = tinyMCE.themeURL;
 
if (!replace_element) {
alert("Error: Could not find the target element.");
return false;
}
 
if (tos.getEditorTemplate)
editorTemplate = tos.getEditorTemplate(this.settings, this.editorId);
 
deltaWidth = editorTemplate.delta_width ? editorTemplate.delta_width : 0;
deltaHeight = editorTemplate.delta_height ? editorTemplate.delta_height : 0;
html = '<span id="' + this.editorId + '_parent" class="mceEditorContainer">' + editorTemplate.html;
 
html = tinyMCE.replaceVar(html, "editor_id", this.editorId);
 
if (!this.settings.default_document)
this.settings.default_document = tinyMCE.baseURL + "/blank.htm";
 
this.settings.old_width = this.settings.width;
this.settings.old_height = this.settings.height;
 
// Set default width, height
if (this.settings.width == -1)
this.settings.width = replace_element.offsetWidth;
 
if (this.settings.height == -1)
this.settings.height = replace_element.offsetHeight;
 
// Try the style width
if (this.settings.width == 0)
this.settings.width = replace_element.style.width;
 
// Try the style height
if (this.settings.height == 0)
this.settings.height = replace_element.style.height;
 
// If no width/height then default to 320x240, better than nothing
if (this.settings.width == 0)
this.settings.width = 320;
 
if (this.settings.height == 0)
this.settings.height = 240;
 
this.settings.area_width = parseInt(this.settings.width);
this.settings.area_height = parseInt(this.settings.height);
this.settings.area_width += deltaWidth;
this.settings.area_height += deltaHeight;
this.settings.width_style = "" + this.settings.width;
this.settings.height_style = "" + this.settings.height;
 
// Special % handling
if (("" + this.settings.width).indexOf('%') != -1)
this.settings.area_width = "100%";
else
this.settings.width_style += 'px';
 
if (("" + this.settings.height).indexOf('%') != -1)
this.settings.area_height = "100%";
else
this.settings.height_style += 'px';
 
if (("" + replace_element.style.width).indexOf('%') != -1) {
this.settings.width = replace_element.style.width;
this.settings.area_width = "100%";
this.settings.width_style = "100%";
}
 
if (("" + replace_element.style.height).indexOf('%') != -1) {
this.settings.height = replace_element.style.height;
this.settings.area_height = "100%";
this.settings.height_style = "100%";
}
 
html = tinyMCE.applyTemplate(html);
 
this.settings.width = this.settings.old_width;
this.settings.height = this.settings.old_height;
 
this.visualAid = this.settings.visual;
this.formTargetElementId = form_element_name;
 
// Get replace_element contents
if (replace_element.nodeName == "TEXTAREA" || replace_element.nodeName == "INPUT")
this.startContent = replace_element.value;
else
this.startContent = replace_element.innerHTML;
 
// If not text area or input
if (replace_element.nodeName != "TEXTAREA" && replace_element.nodeName != "INPUT") {
this.oldTargetElement = replace_element;
 
// Debug mode
hc = '<input type="hidden" id="' + form_element_name + '" name="' + form_element_name + '" />';
this.oldTargetDisplay = tinyMCE.getStyle(this.oldTargetElement, 'display', 'inline');
this.oldTargetElement.style.display = "none";
 
html += '</span>';
 
if (tinyMCE.isGecko)
html = hc + html;
else
html += hc;
 
// Output HTML and set editable
if (tinyMCE.isGecko) {
rng = replace_element.ownerDocument.createRange();
rng.setStartBefore(replace_element);
 
fragment = rng.createContextualFragment(html);
tinyMCE.insertAfter(fragment, replace_element);
} else
replace_element.insertAdjacentHTML("beforeBegin", html);
} else {
html += '</span>';
 
// Just hide the textarea element
this.oldTargetElement = replace_element;
 
this.oldTargetDisplay = tinyMCE.getStyle(this.oldTargetElement, 'display', 'inline');
this.oldTargetElement.style.display = "none";
 
// Output HTML and set editable
if (tinyMCE.isGecko) {
rng = replace_element.ownerDocument.createRange();
rng.setStartBefore(replace_element);
 
fragment = rng.createContextualFragment(html);
tinyMCE.insertAfter(fragment, replace_element);
} else
replace_element.insertAdjacentHTML("beforeBegin", html);
}
 
// Setup iframe
dynamicIFrame = false;
tElm = targetDoc.getElementById(this.editorId);
 
if (!tinyMCE.isIE) {
// Node case is preserved in XML strict mode
if (tElm && (tElm.nodeName == "SPAN" || tElm.nodeName == "span")) {
tElm = tinyMCE._createIFrame(tElm, targetDoc);
dynamicIFrame = true;
}
 
this.targetElement = tElm;
this.iframeElement = tElm;
this.contentDocument = tElm.contentDocument;
this.contentWindow = tElm.contentWindow;
 
//this.getDoc().designMode = "on";
} else {
if (tElm && tElm.nodeName == "SPAN")
tElm = tinyMCE._createIFrame(tElm, targetDoc, targetDoc.parentWindow);
else
tElm = targetDoc.frames[this.editorId];
 
this.targetElement = tElm;
this.iframeElement = targetDoc.getElementById(this.editorId);
 
if (tinyMCE.isOpera) {
this.contentDocument = this.iframeElement.contentDocument;
this.contentWindow = this.iframeElement.contentWindow;
dynamicIFrame = true;
} else {
this.contentDocument = tElm.window.document;
this.contentWindow = tElm.window;
}
 
this.getDoc().designMode = "on";
}
 
// Setup base HTML
doc = this.contentDocument;
if (dynamicIFrame) {
html = tinyMCE.getParam('doctype') + '<html><head xmlns="http://www.w3.org/1999/xhtml"><base href="' + tinyMCE.settings.base_href + '" /><title>blank_page</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body class="mceContentBody"></body></html>';
 
try {
if (!this.isHidden())
this.getDoc().designMode = "on";
 
doc.open();
doc.write(html);
doc.close();
} catch (e) {
// Failed Mozilla 1.3
this.getDoc().location.href = tinyMCE.baseURL + "/blank.htm";
}
}
 
// This timeout is needed in MSIE 5.5 for some odd reason
// it seems that the document.frames isn't initialized yet?
if (tinyMCE.isIE)
window.setTimeout("tinyMCE.addEventHandlers(tinyMCE.instances[\"" + this.editorId + "\"]);", 1);
 
// Setup element references
parentElm = this.targetDoc.getElementById(this.editorId + '_parent');
this.formElement = tinyMCE.isGecko ? parentElm.previousSibling : parentElm.nextSibling;
 
tinyMCE.setupContent(this.editorId, true);
 
return true;
},
 
setBaseHREF : function(u) {
var h, b, d, nl;
 
d = this.getDoc();
nl = d.getElementsByTagName("base");
b = nl.length > 0 ? nl[0] : null;
 
if (!b) {
nl = d.getElementsByTagName("head");
h = nl.length > 0 ? nl[0] : null;
 
b = d.createElement("base");
b.setAttribute('href', u);
h.appendChild(b);
} else {
if (u == '' || u == null)
b.parentNode.removeChild(b);
else
b.setAttribute('href', u);
}
},
 
getHTML : function(r) {
var h, d = this.getDoc(), b = this.getBody();
 
if (r)
return b.innerHTML;
 
h = tinyMCE._cleanupHTML(this, d, this.settings, b, false, true, false, true);
 
if (tinyMCE.getParam("convert_fonts_to_spans"))
tinyMCE.convertSpansToFonts(d);
 
return h;
},
 
setHTML : function(h) {
this.execCommand('mceSetContent', false, h);
this.repaint();
},
 
getFocusElement : function() {
return this.selection.getFocusElement();
},
 
getSel : function() {
return this.selection.getSel();
},
 
getRng : function() {
return this.selection.getRng();
},
 
triggerSave : function(skip_cleanup, skip_callback) {
var e, nl = [], i, s, content, htm;
 
if (!this.enabled)
return;
 
this.switchSettings();
s = tinyMCE.settings;
 
// Force hidden tabs visible while serializing
if (tinyMCE.isRealIE) {
e = this.iframeElement;
 
do {
if (e.style && e.style.display == 'none') {
e.style.display = 'block';
nl[nl.length] = {elm : e, type : 'style'};
}
 
if (e.style && s.hidden_tab_class.length > 0 && e.className.indexOf(s.hidden_tab_class) != -1) {
e.className = s.display_tab_class;
nl[nl.length] = {elm : e, type : 'class'};
}
} while ((e = e.parentNode) != null)
}
 
tinyMCE.settings.preformatted = false;
 
// Default to false
if (typeof(skip_cleanup) == "undefined")
skip_cleanup = false;
 
// Default to false
if (typeof(skip_callback) == "undefined")
skip_callback = false;
 
tinyMCE._setHTML(this.getDoc(), this.getBody().innerHTML);
 
// Remove visual aids when cleanup is disabled
if (this.settings.cleanup == false) {
tinyMCE.handleVisualAid(this.getBody(), true, false, this);
tinyMCE._setEventsEnabled(this.getBody(), true);
}
 
tinyMCE._customCleanup(this, "submit_content_dom", this.contentWindow.document.body);
htm = skip_cleanup ? this.getBody().innerHTML : tinyMCE._cleanupHTML(this, this.getDoc(), this.settings, this.getBody(), tinyMCE.visualAid, true, true);
htm = tinyMCE._customCleanup(this, "submit_content", htm);
 
if (!skip_callback && tinyMCE.settings.save_callback !== '')
content = tinyMCE.resolveDots(tinyMCE.settings.save_callback, window)(this.formTargetElementId,htm,this.getBody());
 
// Use callback content if available
if ((typeof(content) != "undefined") && content != null)
htm = content;
 
// Replace some weird entities (Bug: #1056343)
htm = tinyMCE.regexpReplace(htm, "&#40;", "(", "gi");
htm = tinyMCE.regexpReplace(htm, "&#41;", ")", "gi");
htm = tinyMCE.regexpReplace(htm, "&#59;", ";", "gi");
htm = tinyMCE.regexpReplace(htm, "&#34;", "&quot;", "gi");
htm = tinyMCE.regexpReplace(htm, "&#94;", "^", "gi");
 
if (this.formElement)
this.formElement.value = htm;
 
if (tinyMCE.isSafari && this.formElement)
this.formElement.innerText = htm;
 
// Hide them again (tabs in MSIE)
for (i=0; i<nl.length; i++) {
if (nl[i].type == 'style')
nl[i].elm.style.display = 'none';
else
nl[i].elm.className = s.hidden_tab_class;
}
}
 
};
 
/* file:jscripts/tiny_mce/classes/TinyMCE_Cleanup.class.js */
 
tinyMCE.add(TinyMCE_Engine, {
cleanupHTMLCode : function(s) {
s = s.replace(new RegExp('<p \\/>', 'gi'), '<p>&nbsp;</p>');
s = s.replace(new RegExp('<p>\\s*<\\/p>', 'gi'), '<p>&nbsp;</p>');
 
// Fix close BR elements
s = s.replace(new RegExp('<br>\\s*<\\/br>', 'gi'), '<br />');
 
// Open closed tags like <b/> to <b></b>
s = s.replace(new RegExp('<(h[1-6]|p|div|address|pre|form|table|li|ol|ul|td|b|font|em|strong|i|strike|u|span|a|ul|ol|li|blockquote)([a-z]*)([^\\\\|>]*)\\/>', 'gi'), '<$1$2$3></$1$2>');
 
// Remove trailing space <b > to <b>
s = s.replace(new RegExp('\\s+></', 'gi'), '></');
 
// Close tags <img></img> to <img/>
s = s.replace(new RegExp('<(img|br|hr)([^>]*)><\\/(img|br|hr)>', 'gi'), '<$1$2 />');
 
// Weird MSIE bug, <p><hr /></p> breaks runtime?
if (tinyMCE.isIE)
s = s.replace(new RegExp('<p><hr \\/><\\/p>', 'gi'), "<hr>");
 
// Weird tags will make IE error #bug: 1538495
if (tinyMCE.isIE)
s = s.replace(/<!(\s*)\/>/g, '');
 
// Convert relative anchors to absolute URLs ex: #something to file.htm#something
// Removed: Since local document anchors should never be forced absolute example edit.php?id=something
//if (tinyMCE.getParam('convert_urls'))
// s = s.replace(new RegExp('(href=\"{0,1})(\\s*#)', 'gi'), '$1' + tinyMCE.settings.document_base_url + "#");
 
return s;
},
 
parseStyle : function(str) {
var ar = [], st, i, re, pa;
 
if (str == null)
return ar;
 
st = str.split(';');
 
tinyMCE.clearArray(ar);
 
for (i=0; i<st.length; i++) {
if (st[i] == '')
continue;
 
re = new RegExp('^\\s*([^:]*):\\s*(.*)\\s*$');
pa = st[i].replace(re, '$1||$2').split('||');
//tinyMCE.debug(str, pa[0] + "=" + pa[1], st[i].replace(re, '$1||$2'));
if (pa.length == 2)
ar[pa[0].toLowerCase()] = pa[1];
}
 
return ar;
},
 
compressStyle : function(ar, pr, sf, res) {
var box = [], i, a;
 
box[0] = ar[pr + '-top' + sf];
box[1] = ar[pr + '-left' + sf];
box[2] = ar[pr + '-right' + sf];
box[3] = ar[pr + '-bottom' + sf];
 
for (i=0; i<box.length; i++) {
if (box[i] == null)
return;
 
if (i && box[i] != box[i-1])
return;
}
 
// They are all the same
ar[res] = box[0];
ar[pr + '-top' + sf] = null;
ar[pr + '-left' + sf] = null;
ar[pr + '-right' + sf] = null;
ar[pr + '-bottom' + sf] = null;
},
 
serializeStyle : function(ar) {
var str = "", key, val, m;
 
// Compress box
tinyMCE.compressStyle(ar, "border", "", "border");
tinyMCE.compressStyle(ar, "border", "-width", "border-width");
tinyMCE.compressStyle(ar, "border", "-color", "border-color");
tinyMCE.compressStyle(ar, "border", "-style", "border-style");
tinyMCE.compressStyle(ar, "padding", "", "padding");
tinyMCE.compressStyle(ar, "margin", "", "margin");
 
for (key in ar) {
val = ar[key];
 
if (typeof(val) == 'function')
continue;
 
if (key.indexOf('mso-') == 0)
continue;
 
if (val != null && val !== '') {
val = '' + val; // Force string
 
// Fix style URL
val = val.replace(new RegExp("url\\(\\'?([^\\']*)\\'?\\)", 'gi'), "url('$1')");
 
// Convert URL
if (val.indexOf('url(') != -1 && tinyMCE.getParam('convert_urls')) {
m = new RegExp("url\\('(.*?)'\\)").exec(val);
 
if (m.length > 1)
val = "url('" + eval(tinyMCE.getParam('urlconverter_callback') + "(m[1], null, true);") + "')";
}
 
// Force HEX colors
if (tinyMCE.getParam("force_hex_style_colors"))
val = tinyMCE.convertRGBToHex(val, true);
 
val = val.replace(/\"/g, '\'');
 
if (val != "url('')")
str += key.toLowerCase() + ": " + val + "; ";
}
}
 
if (new RegExp('; $').test(str))
str = str.substring(0, str.length - 2);
 
return str;
},
 
convertRGBToHex : function(s, k) {
var re, rgb;
 
if (s.toLowerCase().indexOf('rgb') != -1) {
re = new RegExp("(.*?)rgb\\s*?\\(\\s*?([0-9]+).*?,\\s*?([0-9]+).*?,\\s*?([0-9]+).*?\\)(.*?)", "gi");
rgb = s.replace(re, "$1,$2,$3,$4,$5").split(',');
 
if (rgb.length == 5) {
r = parseInt(rgb[1]).toString(16);
g = parseInt(rgb[2]).toString(16);
b = parseInt(rgb[3]).toString(16);
 
r = r.length == 1 ? '0' + r : r;
g = g.length == 1 ? '0' + g : g;
b = b.length == 1 ? '0' + b : b;
 
s = "#" + r + g + b;
 
if (k)
s = rgb[0] + s + rgb[4];
}
}
 
return s;
},
 
convertHexToRGB : function(s) {
if (s.indexOf('#') != -1) {
s = s.replace(new RegExp('[^0-9A-F]', 'gi'), '');
return "rgb(" + parseInt(s.substring(0, 2), 16) + "," + parseInt(s.substring(2, 4), 16) + "," + parseInt(s.substring(4, 6), 16) + ")";
}
 
return s;
},
 
convertSpansToFonts : function(doc) {
var s, i, size, fSize, x, fFace, fColor, sizes = tinyMCE.getParam('font_size_style_values').replace(/\s+/, '').split(',');
 
s = tinyMCE.selectElements(doc, 'span,font');
for (i=0; i<s.length; i++) {
size = tinyMCE.trim(s[i].style.fontSize).toLowerCase();
fSize = 0;
 
for (x=0; x<sizes.length; x++) {
if (sizes[x] == size) {
fSize = x + 1;
break;
}
}
 
if (fSize > 0) {
tinyMCE.setAttrib(s[i], 'size', fSize);
s[i].style.fontSize = '';
}
 
fFace = s[i].style.fontFamily;
if (fFace != null && fFace !== '') {
tinyMCE.setAttrib(s[i], 'face', fFace);
s[i].style.fontFamily = '';
}
 
fColor = s[i].style.color;
if (fColor != null && fColor !== '') {
tinyMCE.setAttrib(s[i], 'color', tinyMCE.convertRGBToHex(fColor));
s[i].style.color = '';
}
}
},
 
convertFontsToSpans : function(doc) {
var fsClasses, s, i, fSize, fFace, fColor, sizes = tinyMCE.getParam('font_size_style_values').replace(/\s+/, '').split(',');
 
fsClasses = tinyMCE.getParam('font_size_classes');
if (fsClasses !== '')
fsClasses = fsClasses.replace(/\s+/, '').split(',');
else
fsClasses = null;
 
s = tinyMCE.selectElements(doc, 'span,font');
for (i=0; i<s.length; i++) {
fSize = tinyMCE.getAttrib(s[i], 'size');
fFace = tinyMCE.getAttrib(s[i], 'face');
fColor = tinyMCE.getAttrib(s[i], 'color');
 
if (fSize !== '') {
fSize = parseInt(fSize);
 
if (fSize > 0 && fSize < 8) {
if (fsClasses != null)
tinyMCE.setAttrib(s[i], 'class', fsClasses[fSize-1]);
else
s[i].style.fontSize = sizes[fSize-1];
}
 
s[i].removeAttribute('size');
}
 
if (fFace !== '') {
s[i].style.fontFamily = fFace;
s[i].removeAttribute('face');
}
 
if (fColor !== '') {
s[i].style.color = fColor;
s[i].removeAttribute('color');
}
}
},
 
cleanupAnchors : function(doc) {
var i, cn, x, an = doc.getElementsByTagName("a");
 
// Loops backwards due to bug #1467987
for (i=an.length-1; i>=0; i--) {
if (tinyMCE.getAttrib(an[i], "name") !== '' && tinyMCE.getAttrib(an[i], "href") == '') {
cn = an[i].childNodes;
 
for (x=cn.length-1; x>=0; x--)
tinyMCE.insertAfter(cn[x], an[i]);
}
}
},
 
getContent : function(editor_id) {
if (typeof(editor_id) != "undefined")
tinyMCE.getInstanceById(editor_id).select();
 
if (tinyMCE.selectedInstance)
return tinyMCE.selectedInstance.getHTML();
 
return null;
},
 
_fixListElements : function(d) {
var nl, x, a = ['ol', 'ul'], i, n, p, r = new RegExp('^(OL|UL)$'), np;
 
for (x=0; x<a.length; x++) {
nl = d.getElementsByTagName(a[x]);
 
for (i=0; i<nl.length; i++) {
n = nl[i];
p = n.parentNode;
 
if (r.test(p.nodeName)) {
np = tinyMCE.prevNode(n, 'LI');
 
if (!np) {
np = d.createElement('li');
np.innerHTML = '&nbsp;';
np.appendChild(n);
p.insertBefore(np, p.firstChild);
} else
np.appendChild(n);
}
}
}
},
 
_fixTables : function(d) {
var nl, i, n, p, np, x, t;
 
nl = d.getElementsByTagName('table');
for (i=0; i<nl.length; i++) {
n = nl[i];
 
if ((p = tinyMCE.getParentElement(n, 'p,h1,h2,h3,h4,h5,h6')) != null) {
np = p.cloneNode(false);
np.removeAttribute('id');
 
t = n;
 
while ((n = n.nextSibling))
np.appendChild(n);
 
tinyMCE.insertAfter(np, p);
tinyMCE.insertAfter(t, p);
}
}
},
 
_cleanupHTML : function(inst, doc, config, elm, visual, on_save, on_submit, inn) {
var h, d, t1, t2, t3, t4, t5, c, s, nb;
 
if (!tinyMCE.getParam('cleanup'))
return elm.innerHTML;
 
on_save = typeof(on_save) == 'undefined' ? false : on_save;
 
c = inst.cleanup;
s = inst.settings;
d = c.settings.debug;
 
if (d)
t1 = new Date().getTime();
 
inst._fixRootBlocks();
 
if (tinyMCE.getParam("convert_fonts_to_spans"))
tinyMCE.convertFontsToSpans(doc);
 
if (tinyMCE.getParam("fix_list_elements"))
tinyMCE._fixListElements(doc);
 
if (tinyMCE.getParam("fix_table_elements"))
tinyMCE._fixTables(doc);
 
// Call custom cleanup code
tinyMCE._customCleanup(inst, on_save ? "get_from_editor_dom" : "insert_to_editor_dom", doc.body);
 
if (d)
t2 = new Date().getTime();
 
c.settings.on_save = on_save;
 
c.idCount = 0;
c.serializationId++; // Unique ID needed for the content duplication bug
c.serializedNodes = [];
c.sourceIndex = -1;
 
if (s.cleanup_serializer == "xml")
h = c.serializeNodeAsXML(elm, inn);
else
h = c.serializeNodeAsHTML(elm, inn);
 
if (d)
t3 = new Date().getTime();
 
// Post processing
nb = tinyMCE.getParam('entity_encoding') == 'numeric' ? '&#160;' : '&nbsp;';
h = h.replace(/<\/?(body|head|html)[^>]*>/gi, '');
h = h.replace(new RegExp(' (rowspan="1"|colspan="1")', 'g'), '');
h = h.replace(/<p><hr \/><\/p>/g, '<hr />');
h = h.replace(/<p>(&nbsp;|&#160;)<\/p><hr \/><p>(&nbsp;|&#160;)<\/p>/g, '<hr />');
h = h.replace(/<td>\s*<br \/>\s*<\/td>/g, '<td>' + nb + '</td>');
h = h.replace(/<p>\s*<br \/>\s*<\/p>/g, '<p>' + nb + '</p>');
h = h.replace(/<br \/>$/, ''); // Remove last BR for Gecko
h = h.replace(/<br \/><\/p>/g, '</p>'); // Remove last BR in P tags for Gecko
h = h.replace(/<p>\s*(&nbsp;|&#160;)\s*<br \/>\s*(&nbsp;|&#160;)\s*<\/p>/g, '<p>' + nb + '</p>');
h = h.replace(/<p>\s*(&nbsp;|&#160;)\s*<br \/>\s*<\/p>/g, '<p>' + nb + '</p>');
h = h.replace(/<p>\s*<br \/>\s*&nbsp;\s*<\/p>/g, '<p>' + nb + '</p>');
h = h.replace(new RegExp('<a>(.*?)<\\/a>', 'g'), '$1');
h = h.replace(/<p([^>]*)>\s*<\/p>/g, '<p$1>' + nb + '</p>');
 
// Clean body
if (/^\s*(<br \/>|<p>&nbsp;<\/p>|<p>&#160;<\/p>|<p><\/p>)\s*$/.test(h))
h = '';
 
// If preformatted
if (s.preformatted) {
h = h.replace(/^<pre>/, '');
h = h.replace(/<\/pre>$/, '');
h = '<pre>' + h + '</pre>';
}
 
// Gecko specific processing
if (tinyMCE.isGecko) {
// Makes no sence but FF generates it!!
h = h.replace(/<br \/>\s*<\/li>/g, '</li>');
h = h.replace(/&nbsp;\s*<\/(dd|dt)>/g, '</$1>');
h = h.replace(/<o:p _moz-userdefined="" \/>/g, '');
h = h.replace(/<td([^>]*)>\s*<br \/>\s*<\/td>/g, '<td$1>' + nb + '</td>');
}
 
if (s.force_br_newlines)
h = h.replace(/<p>(&nbsp;|&#160;)<\/p>/g, '<br />');
 
// Call custom cleanup code
h = tinyMCE._customCleanup(inst, on_save ? "get_from_editor" : "insert_to_editor", h);
 
// Remove internal classes
if (on_save) {
h = h.replace(new RegExp(' ?(mceItem[a-zA-Z0-9]*|' + s.visual_table_class + ')', 'g'), '');
h = h.replace(new RegExp(' ?class=""', 'g'), '');
}
 
if (s.remove_linebreaks && !c.settings.indent)
h = h.replace(/\n|\r/g, ' ');
 
if (d)
t4 = new Date().getTime();
 
if (on_save && c.settings.indent)
h = c.formatHTML(h);
 
// If encoding (not recommended option)
if (on_submit && (s.encoding == "xml" || s.encoding == "html"))
h = c.xmlEncode(h);
 
if (d)
t5 = new Date().getTime();
 
if (c.settings.debug)
tinyMCE.debug("Cleanup in ms: Pre=" + (t2-t1) + ", Serialize: " + (t3-t2) + ", Post: " + (t4-t3) + ", Format: " + (t5-t4) + ", Sum: " + (t5-t1) + ".");
 
return h;
}
});
 
function TinyMCE_Cleanup() {
this.isIE = (navigator.appName == "Microsoft Internet Explorer");
this.rules = tinyMCE.clearArray([]);
 
// Default config
this.settings = {
indent_elements : 'head,table,tbody,thead,tfoot,form,tr,ul,ol,blockquote,object',
newline_before_elements : 'h1,h2,h3,h4,h5,h6,pre,address,div,ul,ol,li,meta,option,area,title,link,base,script,td',
newline_after_elements : 'br,hr,p,pre,address,div,ul,ol,meta,option,area,link,base,script',
newline_before_after_elements : 'html,head,body,table,thead,tbody,tfoot,tr,form,ul,ol,blockquote,p,object,param,hr,div',
indent_char : '\t',
indent_levels : 1,
entity_encoding : 'raw',
valid_elements : '*[*]',
entities : '',
url_converter : '',
invalid_elements : '',
verify_html : false
};
 
this.vElements = tinyMCE.clearArray([]);
this.vElementsRe = '';
this.closeElementsRe = /^(IMG|BR|HR|LINK|META|BASE|INPUT|AREA)$/;
this.codeElementsRe = /^(SCRIPT|STYLE)$/;
this.serializationId = 0;
this.mceAttribs = {
href : 'mce_href',
src : 'mce_src',
type : 'mce_type'
};
}
 
TinyMCE_Cleanup.prototype = {
init : function(s) {
var n, a, i, ir, or, st;
 
for (n in s)
this.settings[n] = s[n];
 
// Setup code formating
s = this.settings;
 
// Setup regexps
this.inRe = this._arrayToRe(s.indent_elements.split(','), '', '^<(', ')[^>]*');
this.ouRe = this._arrayToRe(s.indent_elements.split(','), '', '^<\\/(', ')[^>]*');
this.nlBeforeRe = this._arrayToRe(s.newline_before_elements.split(','), 'gi', '<(', ')([^>]*)>');
this.nlAfterRe = this._arrayToRe(s.newline_after_elements.split(','), 'gi', '<(', ')([^>]*)>');
this.nlBeforeAfterRe = this._arrayToRe(s.newline_before_after_elements.split(','), 'gi', '<(\\/?)(', ')([^>]*)>');
this.serializedNodes = [];
this.serializationId = 0;
 
if (s.invalid_elements !== '')
this.iveRe = this._arrayToRe(s.invalid_elements.toUpperCase().split(','), 'g', '^(', ')$');
else
this.iveRe = null;
 
// Setup separator
st = '';
for (i=0; i<s.indent_levels; i++)
st += s.indent_char;
 
this.inStr = st;
 
// If verify_html if false force *[*]
if (!s.verify_html) {
s.valid_elements = '*[*]';
s.extended_valid_elements = '';
}
 
this.fillStr = s.entity_encoding == "named" ? "&nbsp;" : "&#160;";
this.idCount = 0;
this.xmlEncodeRe = new RegExp('[\u007F-\uFFFF<>&"]', 'g');
},
 
addRuleStr : function(s) {
var r = this.parseRuleStr(s), n;
 
for (n in r) {
if (r[n])
this.rules[n] = r[n];
}
 
this.vElements = tinyMCE.clearArray([]);
 
for (n in this.rules) {
if (this.rules[n])
this.vElements[this.vElements.length] = this.rules[n].tag;
}
 
this.vElementsRe = this._arrayToRe(this.vElements, '');
},
 
isValid : function(n) {
if (!this.rulesDone)
this._setupRules(); // Will initialize cleanup rules
 
// Empty is true since it removes formatting
if (!n)
return true;
 
// Clean the name up a bit
n = n.replace(/[^a-z0-9]+/gi, '').toUpperCase();
 
return !tinyMCE.getParam('cleanup') || this.vElementsRe.test(n);
},
 
addChildRemoveRuleStr : function(s) {
var x, y, p, i, t, tn, ta, cl, r;
 
if (!s)
return;
 
ta = s.split(',');
for (x=0; x<ta.length; x++) {
s = ta[x];
 
// Split tag/children
p = this.split(/\[|\]/, s);
if (p == null || p.length < 1)
t = s.toUpperCase();
else
t = p[0].toUpperCase();
 
// Handle all tag names
tn = this.split('/', t);
for (y=0; y<tn.length; y++) {
r = "^(";
 
// Build regex
cl = this.split(/\|/, p[1]);
for (i=0; i<cl.length; i++) {
if (cl[i] == '%istrict')
r += tinyMCE.inlineStrict;
else if (cl[i] == '%itrans')
r += tinyMCE.inlineTransitional;
else if (cl[i] == '%istrict_na')
r += tinyMCE.inlineStrict.substring(2);
else if (cl[i] == '%itrans_na')
r += tinyMCE.inlineTransitional.substring(2);
else if (cl[i] == '%btrans')
r += tinyMCE.blockElms;
else if (cl[i] == '%strict')
r += tinyMCE.blockStrict;
else
r += (cl[i].charAt(0) != '#' ? cl[i].toUpperCase() : cl[i]);
 
r += (i != cl.length - 1 ? '|' : '');
}
 
r += ')$';
 
if (this.childRules == null)
this.childRules = tinyMCE.clearArray([]);
 
this.childRules[tn[y]] = new RegExp(r);
 
if (p.length > 1)
this.childRules[tn[y]].wrapTag = p[2];
}
}
},
 
parseRuleStr : function(s) {
var ta, p, r, a, i, x, px, t, tn, y, av, or = tinyMCE.clearArray([]), dv;
 
if (s == null || s.length == 0)
return or;
 
ta = s.split(',');
for (x=0; x<ta.length; x++) {
s = ta[x];
if (s.length == 0)
continue;
 
// Split tag/attrs
p = this.split(/\[|\]/, s);
if (p == null || p.length < 1)
t = s.toUpperCase();
else
t = p[0].toUpperCase();
 
// Handle all tag names
tn = this.split('/', t);
for (y=0; y<tn.length; y++) {
r = {};
 
r.tag = tn[y];
r.forceAttribs = null;
r.defaultAttribs = null;
r.validAttribValues = null;
 
// Handle prefixes
px = r.tag.charAt(0);
r.forceOpen = px == '+';
r.removeEmpty = px == '-';
r.fill = px == '#';
r.tag = r.tag.replace(/\+|-|#/g, '');
r.oTagName = tn[0].replace(/\+|-|#/g, '').toLowerCase();
r.isWild = new RegExp('\\*|\\?|\\+', 'g').test(r.tag);
r.validRe = new RegExp(this._wildcardToRe('^' + r.tag + '$'));
 
// Setup valid attributes
if (p.length > 1) {
r.vAttribsRe = '^(';
a = this.split(/\|/, p[1]);
 
for (i=0; i<a.length; i++) {
t = a[i];
 
if (t.charAt(0) == '!') {
a[i] = t = t.substring(1);
 
if (!r.reqAttribsRe)
r.reqAttribsRe = '\\s+(' + t;
else
r.reqAttribsRe += '|' + t;
}
 
av = new RegExp('(=|:|<)(.*?)$').exec(t);
t = t.replace(new RegExp('(=|:|<).*?$'), '');
if (av && av.length > 0) {
if (av[0].charAt(0) == ':') {
if (!r.forceAttribs)
r.forceAttribs = tinyMCE.clearArray([]);
 
r.forceAttribs[t.toLowerCase()] = av[0].substring(1);
} else if (av[0].charAt(0) == '=') {
if (!r.defaultAttribs)
r.defaultAttribs = tinyMCE.clearArray([]);
 
dv = av[0].substring(1);
 
r.defaultAttribs[t.toLowerCase()] = dv == '' ? "mce_empty" : dv;
} else if (av[0].charAt(0) == '<') {
if (!r.validAttribValues)
r.validAttribValues = tinyMCE.clearArray([]);
 
r.validAttribValues[t.toLowerCase()] = this._arrayToRe(this.split('?', av[0].substring(1)), 'i');
}
}
 
r.vAttribsRe += '' + t.toLowerCase() + (i != a.length - 1 ? '|' : '');
 
a[i] = t.toLowerCase();
}
 
if (r.reqAttribsRe)
r.reqAttribsRe = new RegExp(r.reqAttribsRe + ')=\"', 'g');
 
r.vAttribsRe += ')$';
r.vAttribsRe = this._wildcardToRe(r.vAttribsRe);
r.vAttribsReIsWild = new RegExp('\\*|\\?|\\+', 'g').test(r.vAttribsRe);
r.vAttribsRe = new RegExp(r.vAttribsRe);
r.vAttribs = a.reverse();
 
//tinyMCE.debug(r.tag, r.oTagName, r.vAttribsRe, r.vAttribsReWC);
} else {
r.vAttribsRe = '';
r.vAttribs = tinyMCE.clearArray([]);
r.vAttribsReIsWild = false;
}
 
or[r.tag] = r;
}
}
 
return or;
},
 
serializeNodeAsXML : function(n) {
var s, b;
 
if (!this.xmlDoc) {
if (this.isIE) {
try {this.xmlDoc = new ActiveXObject('MSXML2.DOMDocument');} catch (e) {}
 
if (!this.xmlDoc)
try {this.xmlDoc = new ActiveXObject('Microsoft.XmlDom');} catch (e) {}
} else
this.xmlDoc = document.implementation.createDocument('', '', null);
 
if (!this.xmlDoc)
alert("Error XML Parser could not be found.");
}
 
if (this.xmlDoc.firstChild)
this.xmlDoc.removeChild(this.xmlDoc.firstChild);
 
b = this.xmlDoc.createElement("html");
b = this.xmlDoc.appendChild(b);
 
this._convertToXML(n, b);
 
if (this.isIE)
return this.xmlDoc.xml;
else
return new XMLSerializer().serializeToString(this.xmlDoc);
},
 
_convertToXML : function(n, xn) {
var xd, el, i, l, cn, at, no, hc = false;
 
if (tinyMCE.isRealIE && this._isDuplicate(n))
return;
 
xd = this.xmlDoc;
 
switch (n.nodeType) {
case 1: // Element
hc = n.hasChildNodes();
 
el = xd.createElement(n.nodeName.toLowerCase());
 
at = n.attributes;
for (i=at.length-1; i>-1; i--) {
no = at[i];
 
if (no.specified && no.nodeValue)
el.setAttribute(no.nodeName.toLowerCase(), no.nodeValue);
}
 
if (!hc && !this.closeElementsRe.test(n.nodeName))
el.appendChild(xd.createTextNode(""));
 
xn = xn.appendChild(el);
break;
 
case 3: // Text
xn.appendChild(xd.createTextNode(n.nodeValue));
return;
 
case 8: // Comment
xn.appendChild(xd.createComment(n.nodeValue));
return;
}
 
if (hc) {
cn = n.childNodes;
 
for (i=0, l=cn.length; i<l; i++)
this._convertToXML(cn[i], xn);
}
},
 
serializeNodeAsHTML : function(n, inn) {
var en, no, h = '', i, l, t, st, r, cn, va = false, f = false, at, hc, cr, nn;
 
if (!this.rulesDone)
this._setupRules(); // Will initialize cleanup rules
 
if (tinyMCE.isRealIE && this._isDuplicate(n))
return '';
 
// Skip non valid child elements
if (n.parentNode && this.childRules != null) {
cr = this.childRules[n.parentNode.nodeName];
 
if (typeof(cr) != "undefined" && !cr.test(n.nodeName)) {
st = true;
t = null;
}
}
 
switch (n.nodeType) {
case 1: // Element
hc = n.hasChildNodes();
 
if (st)
break;
 
nn = n.nodeName;
 
if (tinyMCE.isRealIE) {
// MSIE sometimes produces <//tag>
if (n.nodeName.indexOf('/') != -1)
break;
 
// MSIE has it's NS in a separate attrib
if (n.scopeName && n.scopeName != 'HTML')
nn = n.scopeName.toUpperCase() + ':' + nn.toUpperCase();
} else if (tinyMCE.isOpera && nn.indexOf(':') > 0)
nn = nn.toUpperCase();
 
// Convert fonts to spans
if (this.settings.convert_fonts_to_spans) {
// On get content FONT -> SPAN
if (this.settings.on_save && nn == 'FONT')
nn = 'SPAN';
 
// On insert content SPAN -> FONT
if (!this.settings.on_save && nn == 'SPAN')
nn = 'FONT';
}
 
if (this.vElementsRe.test(nn) && (!this.iveRe || !this.iveRe.test(nn)) && !inn) {
va = true;
 
r = this.rules[nn];
if (!r) {
at = this.rules;
for (no in at) {
if (at[no] && at[no].validRe.test(nn)) {
r = at[no];
break;
}
}
}
 
en = r.isWild ? nn.toLowerCase() : r.oTagName;
f = r.fill;
 
if (r.removeEmpty && !hc)
return "";
 
t = '<' + en;
 
if (r.vAttribsReIsWild) {
// Serialize wildcard attributes
at = n.attributes;
for (i=at.length-1; i>-1; i--) {
no = at[i];
if (no.specified && r.vAttribsRe.test(no.nodeName))
t += this._serializeAttribute(n, r, no.nodeName);
}
} else {
// Serialize specific attributes
for (i=r.vAttribs.length-1; i>-1; i--)
t += this._serializeAttribute(n, r, r.vAttribs[i]);
}
 
// Serialize mce_ atts
if (!this.settings.on_save) {
at = this.mceAttribs;
 
for (no in at) {
if (at[no])
t += this._serializeAttribute(n, r, at[no]);
}
}
 
// Check for required attribs
if (r.reqAttribsRe && !t.match(r.reqAttribsRe))
t = null;
 
// Close these
if (t != null && this.closeElementsRe.test(nn))
return t + ' />';
 
if (t != null)
h += t + '>';
 
if (this.isIE && this.codeElementsRe.test(nn))
h += n.innerHTML;
}
break;
 
case 3: // Text
if (st)
break;
 
if (n.parentNode && this.codeElementsRe.test(n.parentNode.nodeName))
return this.isIE ? '' : n.nodeValue;
 
return this.xmlEncode(n.nodeValue);
 
case 8: // Comment
if (st)
break;
 
return "<!--" + this._trimComment(n.nodeValue) + "-->";
}
 
if (hc) {
cn = n.childNodes;
 
for (i=0, l=cn.length; i<l; i++)
h += this.serializeNodeAsHTML(cn[i]);
}
 
// Fill empty nodes
if (f && !hc)
h += this.fillStr;
 
// End element
if (t != null && va)
h += '</' + en + '>';
 
return h;
},
 
_serializeAttribute : function(n, r, an) {
var av = '', t, os = this.settings.on_save;
 
if (os && (an.indexOf('mce_') == 0 || an.indexOf('_moz') == 0))
return '';
 
if (os && this.mceAttribs[an])
av = this._getAttrib(n, this.mceAttribs[an]);
 
if (av.length == 0)
av = this._getAttrib(n, an);
 
if (av.length == 0 && r.defaultAttribs && (t = r.defaultAttribs[an])) {
av = t;
 
if (av == "mce_empty")
return " " + an + '=""';
}
 
if (r.forceAttribs && (t = r.forceAttribs[an]))
av = t;
 
if (os && av.length != 0 && /^(src|href|longdesc)$/.test(an))
av = this._urlConverter(this, n, av);
 
if (av.length != 0 && r.validAttribValues && r.validAttribValues[an] && !r.validAttribValues[an].test(av))
return "";
 
if (av.length != 0 && av == "{$uid}")
av = "uid_" + (this.idCount++);
 
if (av.length != 0) {
if (an.indexOf('on') != 0)
av = this.xmlEncode(av, 1);
 
return " " + an + "=" + '"' + av + '"';
}
 
return "";
},
 
formatHTML : function(h) {
var s = this.settings, p = '', i = 0, li = 0, o = '', l;
 
// Replace BR in pre elements to \n
h = h.replace(/<pre([^>]*)>(.*?)<\/pre>/gi, function (a, b, c) {
c = c.replace(/<br\s*\/>/gi, '\n');
return '<pre' + b + '>' + c + '</pre>';
});
 
h = h.replace(/\r/g, ''); // Windows sux, isn't carriage return a thing of the past :)
h = '\n' + h;
h = h.replace(new RegExp('\\n\\s+', 'gi'), '\n'); // Remove previous formatting
h = h.replace(this.nlBeforeRe, '\n<$1$2>');
h = h.replace(this.nlAfterRe, '<$1$2>\n');
h = h.replace(this.nlBeforeAfterRe, '\n<$1$2$3>\n');
h += '\n';
 
//tinyMCE.debug(h);
 
while ((i = h.indexOf('\n', i + 1)) != -1) {
if ((l = h.substring(li + 1, i)).length != 0) {
if (this.ouRe.test(l) && p.length >= s.indent_levels)
p = p.substring(s.indent_levels);
 
o += p + l + '\n';
if (this.inRe.test(l))
p += this.inStr;
}
 
li = i;
}
 
//tinyMCE.debug(h);
 
return o;
},
 
xmlEncode : function(s) {
var cl = this, re = this.xmlEncodeRe;
 
if (!this.entitiesDone)
this._setupEntities(); // Will intialize lookup table
 
switch (this.settings.entity_encoding) {
case "raw":
return tinyMCE.xmlEncode(s);
 
case "named":
return s.replace(re, function (c) {
var b = cl.entities[c.charCodeAt(0)];
 
return b ? '&' + b + ';' : c;
});
 
case "numeric":
return s.replace(re, function (c) {
return '&#' + c.charCodeAt(0) + ';';
});
}
 
return s;
},
 
split : function(re, s) {
var i, l, o = [], c = s.split(re);
 
for (i=0, l=c.length; i<l; i++) {
if (c[i] !== '')
o[i] = c[i];
}
 
return o;
},
 
_trimComment : function(s) {
// Remove mce_src, mce_href
s = s.replace(new RegExp('\\smce_src=\"[^\"]*\"', 'gi'), "");
s = s.replace(new RegExp('\\smce_href=\"[^\"]*\"', 'gi'), "");
 
return s;
},
 
_getAttrib : function(e, n, d) {
var v, ex, nn;
 
if (typeof(d) == "undefined")
d = "";
 
if (!e || e.nodeType != 1)
return d;
 
try {
v = e.getAttribute(n, 0);
} catch (ex) {
// IE 7 may cast exception on invalid attributes
v = e.getAttribute(n, 2);
}
 
if (n == "class" && !v)
v = e.className;
 
if (this.isIE) {
if (n == "http-equiv")
v = e.httpEquiv;
 
nn = e.nodeName;
 
// Skip the default values that IE returns
if (nn == "FORM" && n == "enctype" && v == "application/x-www-form-urlencoded")
v = "";
 
if (nn == "INPUT" && n == "size" && v == "20")
v = "";
 
if (nn == "INPUT" && n == "maxlength" && v == "2147483647")
v = "";
 
// Images
if (n == "width" || n == "height")
v = e.getAttribute(n, 2);
}
 
if (n == 'style' && v) {
if (!tinyMCE.isOpera)
v = e.style.cssText;
 
v = tinyMCE.serializeStyle(tinyMCE.parseStyle(v));
}
 
if (this.settings.on_save && n.indexOf('on') != -1 && this.settings.on_save && v && v !== '')
v = tinyMCE.cleanupEventStr(v);
 
return (v && v !== '') ? '' + v : d;
},
 
_urlConverter : function(c, n, v) {
if (!c.settings.on_save)
return tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, v);
else if (tinyMCE.getParam('convert_urls')) {
if (!this.urlConverter)
this.urlConverter = eval(tinyMCE.settings.urlconverter_callback);
 
return this.urlConverter(v, n, true);
}
 
return v;
},
 
_arrayToRe : function(a, op, be, af) {
var i, r;
 
op = typeof(op) == "undefined" ? "gi" : op;
be = typeof(be) == "undefined" ? "^(" : be;
af = typeof(af) == "undefined" ? ")$" : af;
 
r = be;
 
for (i=0; i<a.length; i++)
r += this._wildcardToRe(a[i]) + (i != a.length-1 ? "|" : "");
 
r += af;
 
return new RegExp(r, op);
},
 
_wildcardToRe : function(s) {
s = s.replace(/\?/g, '(\\S?)');
s = s.replace(/\+/g, '(\\S+)');
s = s.replace(/\*/g, '(\\S*)');
 
return s;
},
 
_setupEntities : function() {
var n, a, i, s = this.settings;
 
// Setup entities
if (s.entity_encoding == "named") {
n = tinyMCE.clearArray([]);
a = this.split(',', s.entities);
for (i=0; i<a.length; i+=2)
n[a[i]] = a[i+1];
 
this.entities = n;
}
 
this.entitiesDone = true;
},
 
_setupRules : function() {
var s = this.settings;
 
// Setup default rule
this.addRuleStr(s.valid_elements);
this.addRuleStr(s.extended_valid_elements);
this.addChildRemoveRuleStr(s.valid_child_elements);
 
this.rulesDone = true;
},
 
_isDuplicate : function(n) {
var i, l, sn;
 
if (!this.settings.fix_content_duplication)
return false;
 
if (tinyMCE.isRealIE && n.nodeType == 1) {
// Mark elements
if (n.mce_serialized == this.serializationId)
return true;
 
n.setAttribute('mce_serialized', this.serializationId);
} else {
sn = this.serializedNodes;
 
// Search lookup table for text nodes and comments
for (i=0, l = sn.length; i<l; i++) {
if (sn[i] == n)
return true;
}
 
sn.push(n);
}
 
return false;
}
 
};
 
/* file:jscripts/tiny_mce/classes/TinyMCE_DOMUtils.class.js */
 
tinyMCE.add(TinyMCE_Engine, {
createTagHTML : function(tn, a, h) {
var o = '', f = tinyMCE.xmlEncode, n;
 
o = '<' + tn;
 
if (a) {
for (n in a) {
if (typeof(a[n]) != 'function' && a[n] != null)
o += ' ' + f(n) + '="' + f('' + a[n]) + '"';
}
}
 
o += !h ? ' />' : '>' + h + '</' + tn + '>';
 
return o;
},
 
createTag : function(d, tn, a, h) {
var o = d.createElement(tn), n;
 
if (a) {
for (n in a) {
if (typeof(a[n]) != 'function' && a[n] != null)
tinyMCE.setAttrib(o, n, a[n]);
}
}
 
if (h)
o.innerHTML = h;
 
return o;
},
 
getElementByAttributeValue : function(n, e, a, v) {
return (n = this.getElementsByAttributeValue(n, e, a, v)).length == 0 ? null : n[0];
},
 
getElementsByAttributeValue : function(n, e, a, v) {
var i, nl = n.getElementsByTagName(e), o = [];
 
for (i=0; i<nl.length; i++) {
if (tinyMCE.getAttrib(nl[i], a).indexOf(v) != -1)
o[o.length] = nl[i];
}
 
return o;
},
 
isBlockElement : function(n) {
return n != null && n.nodeType == 1 && this.blockRegExp.test(n.nodeName);
},
 
getParentBlockElement : function(n, r) {
return this.getParentNode(n, function(n) {
return tinyMCE.isBlockElement(n);
}, r);
 
return null;
},
 
insertAfter : function(n, r){
if (r.nextSibling)
r.parentNode.insertBefore(n, r.nextSibling);
else
r.parentNode.appendChild(n);
},
 
setInnerHTML : function(e, h) {
var i, nl, n;
 
// Convert all strong/em to b/i in Gecko
if (tinyMCE.isGecko) {
h = h.replace(/<embed([^>]*)>/gi, '<tmpembed$1>');
h = h.replace(/<em([^>]*)>/gi, '<i$1>');
h = h.replace(/<tmpembed([^>]*)>/gi, '<embed$1>');
h = h.replace(/<strong([^>]*)>/gi, '<b$1>');
h = h.replace(/<\/strong>/gi, '</b>');
h = h.replace(/<\/em>/gi, '</i>');
}
 
if (tinyMCE.isRealIE) {
// Since MSIE handles invalid HTML better that valid XHTML we
// need to make some things invalid. <hr /> gets converted to <hr>.
h = h.replace(/\s\/>/g, '>');
 
// Since MSIE auto generated emtpy P tags some times we must tell it to keep the real ones
h = h.replace(/<p([^>]*)>\u00A0?<\/p>/gi, '<p$1 mce_keep="true">&nbsp;</p>'); // Keep empty paragraphs
h = h.replace(/<p([^>]*)>\s*&nbsp;\s*<\/p>/gi, '<p$1 mce_keep="true">&nbsp;</p>'); // Keep empty paragraphs
h = h.replace(/<p([^>]*)>\s+<\/p>/gi, '<p$1 mce_keep="true">&nbsp;</p>'); // Keep empty paragraphs
 
// Remove first comment
e.innerHTML = tinyMCE.uniqueTag + h;
e.firstChild.removeNode(true);
 
// Remove weird auto generated empty paragraphs unless it's supposed to be there
nl = e.getElementsByTagName("p");
for (i=nl.length-1; i>=0; i--) {
n = nl[i];
 
if (n.nodeName == 'P' && !n.hasChildNodes() && !n.mce_keep)
n.parentNode.removeChild(n);
}
} else {
h = this.fixGeckoBaseHREFBug(1, e, h);
e.innerHTML = h;
this.fixGeckoBaseHREFBug(2, e, h);
}
},
 
getOuterHTML : function(e) {
var d;
 
if (tinyMCE.isIE)
return e.outerHTML;
 
d = e.ownerDocument.createElement("body");
d.appendChild(e.cloneNode(true));
 
return d.innerHTML;
},
 
setOuterHTML : function(e, h, d) {
var d = typeof(d) == "undefined" ? e.ownerDocument : d, i, nl, t;
 
if (tinyMCE.isIE && e.nodeType == 1)
e.outerHTML = h;
else {
t = d.createElement("body");
t.innerHTML = h;
 
for (i=0, nl=t.childNodes; i<nl.length; i++)
e.parentNode.insertBefore(nl[i].cloneNode(true), e);
 
e.parentNode.removeChild(e);
}
},
 
_getElementById : function(id, d) {
var e, i, j, f;
 
if (typeof(d) == "undefined")
d = document;
 
e = d.getElementById(id);
if (!e) {
f = d.forms;
 
for (i=0; i<f.length; i++) {
for (j=0; j<f[i].elements.length; j++) {
if (f[i].elements[j].name == id) {
e = f[i].elements[j];
break;
}
}
}
}
 
return e;
},
 
getNodeTree : function(n, na, t, nn) {
return this.selectNodes(n, function(n) {
return (!t || n.nodeType == t) && (!nn || n.nodeName == nn);
}, na ? na : []);
},
 
getParentElement : function(n, na, f, r) {
var re = na ? new RegExp('^(' + na.toUpperCase().replace(/,/g, '|') + ')$') : 0, v;
 
// Compatiblity with old scripts where f param was a attribute string
if (f && typeof(f) == 'string')
return this.getParentElement(n, na, function(no) {return tinyMCE.getAttrib(no, f) !== '';});
 
return this.getParentNode(n, function(n) {
return ((n.nodeType == 1 && !re) || (re && re.test(n.nodeName))) && (!f || f(n));
}, r);
},
 
getParentNode : function(n, f, r) {
while (n) {
if (n == r)
return null;
 
if (f(n))
return n;
 
n = n.parentNode;
}
 
return null;
},
 
getAttrib : function(elm, name, dv) {
var v;
 
if (typeof(dv) == "undefined")
dv = "";
 
// Not a element
if (!elm || elm.nodeType != 1)
return dv;
 
try {
v = elm.getAttribute(name, 0);
} catch (ex) {
// IE 7 may cast exception on invalid attributes
v = elm.getAttribute(name, 2);
}
 
// Try className for class attrib
if (name == "class" && !v)
v = elm.className;
 
// Workaround for a issue with Firefox 1.5rc2+
if (tinyMCE.isGecko) {
if (name == "src" && elm.src != null && elm.src !== '')
v = elm.src;
 
// Workaround for a issue with Firefox 1.5rc2+
if (name == "href" && elm.href != null && elm.href !== '')
v = elm.href;
} else if (tinyMCE.isIE) {
switch (name) {
case "http-equiv":
v = elm.httpEquiv;
break;
 
case "width":
case "height":
v = elm.getAttribute(name, 2);
break;
}
}
 
if (name == "style" && !tinyMCE.isOpera)
v = elm.style.cssText;
 
return (v && v !== '') ? v : dv;
},
 
setAttrib : function(el, name, va, fix) {
if (typeof(va) == "number" && va != null)
va = "" + va;
 
if (fix) {
if (va == null)
va = "";
 
va = va.replace(/[^0-9%]/g, '');
}
 
if (name == "style")
el.style.cssText = va;
 
if (name == "class")
el.className = va;
 
if (va != null && va !== '' && va != -1)
el.setAttribute(name, va);
else
el.removeAttribute(name);
},
 
setStyleAttrib : function(e, n, v) {
e.style[n] = v;
 
// Style attrib deleted in IE
if (tinyMCE.isIE && v == null || v == '') {
v = tinyMCE.serializeStyle(tinyMCE.parseStyle(e.style.cssText));
e.style.cssText = v;
e.setAttribute("style", v);
}
},
 
switchClass : function(ei, c) {
var e;
 
if (tinyMCE.switchClassCache[ei])
e = tinyMCE.switchClassCache[ei];
else
e = tinyMCE.switchClassCache[ei] = document.getElementById(ei);
 
if (e) {
// Keep tile mode
if (tinyMCE.settings.button_tile_map && e.className && e.className.indexOf('mceTiledButton') == 0)
c = 'mceTiledButton ' + c;
 
e.className = c;
}
},
 
getAbsPosition : function(n, cn) {
var l = 0, t = 0;
 
while (n && n != cn) {
l += n.offsetLeft;
t += n.offsetTop;
n = n.offsetParent;
}
 
return {absLeft : l, absTop : t};
},
 
prevNode : function(e, n) {
var a = n.split(','), i;
 
while ((e = e.previousSibling) != null) {
for (i=0; i<a.length; i++) {
if (e.nodeName == a[i])
return e;
}
}
 
return null;
},
 
nextNode : function(e, n) {
var a = n.split(','), i;
 
while ((e = e.nextSibling) != null) {
for (i=0; i<a.length; i++) {
if (e.nodeName == a[i])
return e;
}
}
 
return null;
},
 
selectElements : function(n, na, f) {
var i, a = [], nl, x;
 
for (x=0, na = na.split(','); x<na.length; x++)
for (i=0, nl = n.getElementsByTagName(na[x]); i<nl.length; i++)
(!f || f(nl[i])) && a.push(nl[i]);
 
return a;
},
 
selectNodes : function(n, f, a) {
var i;
 
if (!a)
a = [];
 
if (f(n))
a[a.length] = n;
 
if (n.hasChildNodes()) {
for (i=0; i<n.childNodes.length; i++)
tinyMCE.selectNodes(n.childNodes[i], f, a);
}
 
return a;
},
 
addCSSClass : function(e, c, b) {
var o = this.removeCSSClass(e, c);
return e.className = b ? c + (o !== '' ? (' ' + o) : '') : (o !== '' ? (o + ' ') : '') + c;
},
 
removeCSSClass : function(e, c) {
c = e.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' ');
return e.className = c != ' ' ? c : '';
},
 
hasCSSClass : function(n, c) {
return new RegExp('\\b' + c + '\\b', 'g').test(n.className);
},
 
renameElement : function(e, n, d) {
var ne, i, ar;
 
d = typeof(d) == "undefined" ? tinyMCE.selectedInstance.getDoc() : d;
 
if (e) {
ne = d.createElement(n);
 
ar = e.attributes;
for (i=ar.length-1; i>-1; i--) {
if (ar[i].specified && ar[i].nodeValue)
ne.setAttribute(ar[i].nodeName.toLowerCase(), ar[i].nodeValue);
}
 
ar = e.childNodes;
for (i=0; i<ar.length; i++)
ne.appendChild(ar[i].cloneNode(true));
 
e.parentNode.replaceChild(ne, e);
}
},
 
getViewPort : function(w) {
var d = w.document, m = d.compatMode == 'CSS1Compat', b = d.body, de = d.documentElement;
 
return {
left : w.pageXOffset || (m ? de.scrollLeft : b.scrollLeft),
top : w.pageYOffset || (m ? de.scrollTop : b.scrollTop),
width : w.innerWidth || (m ? de.clientWidth : b.clientWidth),
height : w.innerHeight || (m ? de.clientHeight : b.clientHeight)
};
},
 
getStyle : function(n, na, d) {
if (!n)
return false;
 
// Gecko
if (tinyMCE.isGecko && n.ownerDocument.defaultView) {
try {
return n.ownerDocument.defaultView.getComputedStyle(n, null).getPropertyValue(na);
} catch (n) {
// Old safari might fail
return null;
}
}
 
// Camelcase it, if needed
na = na.replace(/-(\D)/g, function(a, b){
return b.toUpperCase();
});
 
// IE & Opera
if (n.currentStyle)
return n.currentStyle[na];
 
return false;
}
 
});
 
/* file:jscripts/tiny_mce/classes/TinyMCE_URL.class.js */
 
tinyMCE.add(TinyMCE_Engine, {
parseURL : function(url_str) {
var urlParts = [], i, pos, lastPos, chr;
 
if (url_str) {
// Parse protocol part
pos = url_str.indexOf('://');
if (pos != -1) {
urlParts.protocol = url_str.substring(0, pos);
lastPos = pos + 3;
}
 
// Find port or path start
for (i=lastPos; i<url_str.length; i++) {
chr = url_str.charAt(i);
 
if (chr == ':')
break;
 
if (chr == '/')
break;
}
pos = i;
 
// Get host
urlParts.host = url_str.substring(lastPos, pos);
 
// Get port
urlParts.port = "";
lastPos = pos;
if (url_str.charAt(pos) == ':') {
pos = url_str.indexOf('/', lastPos);
urlParts.port = url_str.substring(lastPos+1, pos);
}
 
// Get path
lastPos = pos;
pos = url_str.indexOf('?', lastPos);
 
if (pos == -1)
pos = url_str.indexOf('#', lastPos);
 
if (pos == -1)
pos = url_str.length;
 
urlParts.path = url_str.substring(lastPos, pos);
 
// Get query
lastPos = pos;
if (url_str.charAt(pos) == '?') {
pos = url_str.indexOf('#');
pos = (pos == -1) ? url_str.length : pos;
urlParts.query = url_str.substring(lastPos+1, pos);
}
 
// Get anchor
lastPos = pos;
if (url_str.charAt(pos) == '#') {
pos = url_str.length;
urlParts.anchor = url_str.substring(lastPos+1, pos);
}
}
 
return urlParts;
},
 
serializeURL : function(up) {
var o = "";
 
if (up.protocol)
o += up.protocol + "://";
 
if (up.host)
o += up.host;
 
if (up.port)
o += ":" + up.port;
 
if (up.path)
o += up.path;
 
if (up.query)
o += "?" + up.query;
 
if (up.anchor)
o += "#" + up.anchor;
 
return o;
},
 
convertAbsoluteURLToRelativeURL : function(base_url, url_to_relative) {
var baseURL = this.parseURL(base_url), targetURL = this.parseURL(url_to_relative);
var i, strTok1, strTok2, breakPoint = 0, outPath = "", forceSlash = false;
var fileName, pos;
 
if (targetURL.path == '')
targetURL.path = "/";
else
forceSlash = true;
 
// Crop away last path part
base_url = baseURL.path.substring(0, baseURL.path.lastIndexOf('/'));
strTok1 = base_url.split('/');
strTok2 = targetURL.path.split('/');
 
if (strTok1.length >= strTok2.length) {
for (i=0; i<strTok1.length; i++) {
if (i >= strTok2.length || strTok1[i] != strTok2[i]) {
breakPoint = i + 1;
break;
}
}
}
 
if (strTok1.length < strTok2.length) {
for (i=0; i<strTok2.length; i++) {
if (i >= strTok1.length || strTok1[i] != strTok2[i]) {
breakPoint = i + 1;
break;
}
}
}
 
if (breakPoint == 1)
return targetURL.path;
 
for (i=0; i<(strTok1.length-(breakPoint-1)); i++)
outPath += "../";
 
for (i=breakPoint-1; i<strTok2.length; i++) {
if (i != (breakPoint-1))
outPath += "/" + strTok2[i];
else
outPath += strTok2[i];
}
 
targetURL.protocol = null;
targetURL.host = null;
targetURL.port = null;
targetURL.path = outPath == '' && forceSlash ? "/" : outPath;
 
// Remove document prefix from local anchors
fileName = baseURL.path;
 
if ((pos = fileName.lastIndexOf('/')) != -1)
fileName = fileName.substring(pos + 1);
 
// Is local anchor
if (fileName == targetURL.path && targetURL.anchor !== '')
targetURL.path = "";
 
// If empty and not local anchor force filename or slash
if (targetURL.path == '' && !targetURL.anchor)
targetURL.path = fileName !== '' ? fileName : "/";
 
return this.serializeURL(targetURL);
},
 
convertRelativeToAbsoluteURL : function(base_url, relative_url) {
var baseURL = this.parseURL(base_url), baseURLParts, relURLParts, newRelURLParts, numBack, relURL = this.parseURL(relative_url), i;
var len, absPath, start, end, newBaseURLParts;
 
if (relative_url == '' || relative_url.indexOf('://') != -1 || /^(mailto:|javascript:|#|\/)/.test(relative_url))
return relative_url;
 
// Split parts
baseURLParts = baseURL.path.split('/');
relURLParts = relURL.path.split('/');
 
// Remove empty chunks
newBaseURLParts = [];
for (i=baseURLParts.length-1; i>=0; i--) {
if (baseURLParts[i].length == 0)
continue;
 
newBaseURLParts[newBaseURLParts.length] = baseURLParts[i];
}
baseURLParts = newBaseURLParts.reverse();
 
// Merge relURLParts chunks
newRelURLParts = [];
numBack = 0;
for (i=relURLParts.length-1; i>=0; i--) {
if (relURLParts[i].length == 0 || relURLParts[i] == ".")
continue;
 
if (relURLParts[i] == '..') {
numBack++;
continue;
}
 
if (numBack > 0) {
numBack--;
continue;
}
 
newRelURLParts[newRelURLParts.length] = relURLParts[i];
}
 
relURLParts = newRelURLParts.reverse();
 
// Remove end from absolute path
len = baseURLParts.length-numBack;
absPath = (len <= 0 ? "" : "/") + baseURLParts.slice(0, len).join('/') + "/" + relURLParts.join('/');
start = "";
end = "";
 
// Build output URL
relURL.protocol = baseURL.protocol;
relURL.host = baseURL.host;
relURL.port = baseURL.port;
 
// Re-add trailing slash if it's removed
if (relURL.path.charAt(relURL.path.length-1) == "/")
absPath += "/";
 
relURL.path = absPath;
 
return this.serializeURL(relURL);
},
 
convertURL : function(url, node, on_save) {
var dl = document.location, start, portPart, urlParts, baseUrlParts, tmpUrlParts, curl;
var prot = dl.protocol, host = dl.hostname, port = dl.port;
 
// Pass through file protocol
if (prot == "file:")
return url;
 
// Something is wrong, remove weirdness
url = tinyMCE.regexpReplace(url, '(http|https):///', '/');
 
// Mailto link or anchor (Pass through)
if (url.indexOf('mailto:') != -1 || url.indexOf('javascript:') != -1 || /^[ \t\r\n\+]*[#\?]/.test(url))
return url;
 
// Fix relative/Mozilla
if (!tinyMCE.isIE && !on_save && url.indexOf("://") == -1 && url.charAt(0) != '/')
return tinyMCE.settings.base_href + url;
 
// Handle relative URLs
if (on_save && tinyMCE.getParam('relative_urls')) {
curl = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, url);
if (curl.charAt(0) == '/')
curl = tinyMCE.settings.document_base_prefix + curl;
 
urlParts = tinyMCE.parseURL(curl);
tmpUrlParts = tinyMCE.parseURL(tinyMCE.settings.document_base_url);
 
// Force relative
if (urlParts.host == tmpUrlParts.host && (urlParts.port == tmpUrlParts.port))
return tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings.document_base_url, curl);
}
 
// Handle absolute URLs
if (!tinyMCE.getParam('relative_urls')) {
urlParts = tinyMCE.parseURL(url);
baseUrlParts = tinyMCE.parseURL(tinyMCE.settings.base_href);
 
// Force absolute URLs from relative URLs
url = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, url);
 
// If anchor and path is the same page
if (urlParts.anchor && urlParts.path == baseUrlParts.path)
return "#" + urlParts.anchor;
}
 
// Remove current domain
if (tinyMCE.getParam('remove_script_host')) {
start = "";
portPart = "";
 
if (port !== '')
portPart = ":" + port;
 
start = prot + "//" + host + portPart + "/";
 
if (url.indexOf(start) == 0)
url = url.substring(start.length-1);
}
 
return url;
},
 
convertAllRelativeURLs : function(body) {
var i, elms, src, href, mhref, msrc;
 
// Convert all image URL:s to absolute URL
elms = body.getElementsByTagName("img");
for (i=0; i<elms.length; i++) {
src = tinyMCE.getAttrib(elms[i], 'src');
 
msrc = tinyMCE.getAttrib(elms[i], 'mce_src');
if (msrc !== '')
src = msrc;
 
if (src !== '') {
src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, src);
elms[i].setAttribute("src", src);
}
}
 
// Convert all link URL:s to absolute URL
elms = body.getElementsByTagName("a");
for (i=0; i<elms.length; i++) {
href = tinyMCE.getAttrib(elms[i], 'href');
 
mhref = tinyMCE.getAttrib(elms[i], 'mce_href');
if (mhref !== '')
href = mhref;
 
if (href && href !== '') {
href = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, href);
elms[i].setAttribute("href", href);
}
}
}
 
});
 
/* file:jscripts/tiny_mce/classes/TinyMCE_Array.class.js */
 
tinyMCE.add(TinyMCE_Engine, {
clearArray : function(a) {
var n;
 
for (n in a)
a[n] = null;
 
return a;
},
 
explode : function(d, s) {
var ar = s.split(d), oar = [], i;
 
for (i = 0; i<ar.length; i++) {
if (ar[i] !== '')
oar[oar.length] = ar[i];
}
 
return oar;
}
});
 
/* file:jscripts/tiny_mce/classes/TinyMCE_Event.class.js */
 
tinyMCE.add(TinyMCE_Engine, {
_setEventsEnabled : function(node, state) {
var evs, x, y, elms, i, event;
var events = ['onfocus','onblur','onclick','ondblclick',
'onmousedown','onmouseup','onmouseover','onmousemove',
'onmouseout','onkeypress','onkeydown','onkeydown','onkeyup'];
 
evs = tinyMCE.settings.event_elements.split(',');
for (y=0; y<evs.length; y++){
elms = node.getElementsByTagName(evs[y]);
for (i=0; i<elms.length; i++) {
event = "";
 
for (x=0; x<events.length; x++) {
if ((event = tinyMCE.getAttrib(elms[i], events[x])) !== '') {
event = tinyMCE.cleanupEventStr("" + event);
 
if (!state)
event = "return true;" + event;
else
event = event.replace(/^return true;/gi, '');
 
elms[i].removeAttribute(events[x]);
elms[i].setAttribute(events[x], event);
}
}
}
}
},
 
_eventPatch : function(editor_id) {
var n, inst, win, e;
 
// Remove odd, error
if (typeof(tinyMCE) == "undefined")
return true;
 
try {
// Try selected instance first
if (tinyMCE.selectedInstance) {
win = tinyMCE.selectedInstance.getWin();
 
if (win && win.event) {
e = win.event;
 
if (!e.target)
e.target = e.srcElement;
 
TinyMCE_Engine.prototype.handleEvent(e);
return;
}
}
 
// Search for it
for (n in tinyMCE.instances) {
inst = tinyMCE.instances[n];
 
if (!tinyMCE.isInstance(inst))
continue;
 
inst.select();
win = inst.getWin();
 
if (win && win.event) {
e = win.event;
 
if (!e.target)
e.target = e.srcElement;
 
TinyMCE_Engine.prototype.handleEvent(e);
return;
}
}
} catch (ex) {
// Ignore error if iframe is pointing to external URL
}
},
 
findEvent : function(e) {
var n, inst;
 
if (e)
return e;
 
for (n in tinyMCE.instances) {
inst = tinyMCE.instances[n];
 
if (tinyMCE.isInstance(inst) && inst.getWin().event)
return inst.getWin().event;
}
 
return null;
},
 
unloadHandler : function() {
tinyMCE.triggerSave(true, true);
},
 
addEventHandlers : function(inst) {
this.setEventHandlers(inst, 1);
},
 
setEventHandlers : function(inst, s) {
var doc = inst.getDoc(), ie, ot, i, f = s ? tinyMCE.addEvent : tinyMCE.removeEvent;
 
ie = ['keypress', 'keyup', 'keydown', 'click', 'mouseup', 'mousedown', 'controlselect', 'dblclick'];
ot = ['keypress', 'keyup', 'keydown', 'click', 'mouseup', 'mousedown', 'focus', 'blur', 'dragdrop'];
 
inst.switchSettings();
 
if (tinyMCE.isIE) {
for (i=0; i<ie.length; i++)
f(doc, ie[i], TinyMCE_Engine.prototype._eventPatch);
} else {
for (i=0; i<ot.length; i++)
f(doc, ot[i], tinyMCE.handleEvent);
 
// Force designmode
try {
doc.designMode = "On";
} catch (e) {
// Ignore
}
}
},
 
onMouseMove : function() {
var inst, lh;
 
// Fix for IE7 bug where it's not restoring hover on anchors correctly
if (tinyMCE.lastHover) {
lh = tinyMCE.lastHover;
 
// Call out on menus and refresh class on normal buttons
if (lh.className.indexOf('mceMenu') != -1)
tinyMCE._menuButtonEvent('out', lh);
else
lh.className = lh.className;
 
tinyMCE.lastHover = null;
}
 
if (!tinyMCE.hasMouseMoved) {
inst = tinyMCE.selectedInstance;
 
// Workaround for bug #1437457 (Odd MSIE bug)
if (inst.isFocused) {
inst.undoBookmark = inst.selection.getBookmark();
tinyMCE.hasMouseMoved = true;
}
}
 
// tinyMCE.cancelEvent(inst.getWin().event);
// return false;
},
 
cancelEvent : function(e) {
if (!e)
return false;
 
if (tinyMCE.isIE) {
e.returnValue = false;
e.cancelBubble = true;
} else {
e.preventDefault();
e.stopPropagation && e.stopPropagation();
}
 
return false;
},
 
addEvent : function(o, n, h) {
// Add cleanup for all non unload events
if (n != 'unload') {
function clean() {
var ex;
 
try {
tinyMCE.removeEvent(o, n, h);
tinyMCE.removeEvent(window, 'unload', clean);
o = n = h = null;
} catch (ex) {
// IE may produce access denied exception on unload
}
}
 
// Add memory cleaner
tinyMCE.addEvent(window, 'unload', clean);
}
 
if (o.attachEvent)
o.attachEvent("on" + n, h);
else
o.addEventListener(n, h, false);
},
 
removeEvent : function(o, n, h) {
if (o.detachEvent)
o.detachEvent("on" + n, h);
else
o.removeEventListener(n, h, false);
},
 
addSelectAccessibility : function(e, s, w) {
// Add event handlers
if (!s._isAccessible) {
s.onkeydown = tinyMCE.accessibleEventHandler;
s.onblur = tinyMCE.accessibleEventHandler;
s._isAccessible = true;
s._win = w;
}
 
return false;
},
 
accessibleEventHandler : function(e) {
var elm, win = this._win;
 
e = tinyMCE.isIE ? win.event : e;
elm = tinyMCE.isIE ? e.srcElement : e.target;
 
// Unpiggyback onchange on blur
if (e.type == "blur") {
if (elm.oldonchange) {
elm.onchange = elm.oldonchange;
elm.oldonchange = null;
}
 
return true;
}
 
// Piggyback onchange
if (elm.nodeName == "SELECT" && !elm.oldonchange) {
elm.oldonchange = elm.onchange;
elm.onchange = null;
}
 
// Execute onchange and remove piggyback
if (e.keyCode == 13 || e.keyCode == 32) {
elm.onchange = elm.oldonchange;
elm.onchange();
elm.oldonchange = null;
 
tinyMCE.cancelEvent(e);
return false;
}
 
return true;
},
 
_resetIframeHeight : function() {
var ife;
 
if (tinyMCE.isRealIE) {
ife = tinyMCE.selectedInstance.iframeElement;
 
/* if (ife._oldWidth) {
ife.style.width = ife._oldWidth;
ife.width = ife._oldWidth;
}*/
 
if (ife._oldHeight) {
ife.style.height = ife._oldHeight;
ife.height = ife._oldHeight;
}
}
}
 
});
 
/* file:jscripts/tiny_mce/classes/TinyMCE_Selection.class.js */
 
function TinyMCE_Selection(inst) {
this.instance = inst;
};
 
TinyMCE_Selection.prototype = {
getSelectedHTML : function() {
var inst = this.instance, e, r = this.getRng(), h;
 
if (!r)
return null;
 
e = document.createElement("body");
 
if (r.cloneContents)
e.appendChild(r.cloneContents());
else if (typeof(r.item) != 'undefined' || typeof(r.htmlText) != 'undefined')
e.innerHTML = r.item ? r.item(0).outerHTML : r.htmlText;
else
e.innerHTML = r.toString(); // Failed, use text for now
 
h = tinyMCE._cleanupHTML(inst, inst.contentDocument, inst.settings, e, e, false, true, false);
 
// When editing always use fonts internaly
//if (tinyMCE.getParam("convert_fonts_to_spans"))
// tinyMCE.convertSpansToFonts(inst.getDoc());
 
return h;
},
 
getSelectedText : function() {
var inst = this.instance, d, r, s, t;
 
if (tinyMCE.isIE) {
d = inst.getDoc();
 
if (d.selection.type == "Text") {
r = d.selection.createRange();
t = r.text;
} else
t = '';
} else {
s = this.getSel();
 
if (s && s.toString)
t = s.toString();
else
t = '';
}
 
return t;
},
 
getBookmark : function(simple) {
var inst = this.instance, rng = this.getRng(), doc = inst.getDoc(), b = inst.getBody();
var trng, sx, sy, xx = -999999999, vp = inst.getViewPort();
var sp, le, s, e, nl, i, si, ei, w;
 
sx = vp.left;
sy = vp.top;
 
if (simple)
return {rng : rng, scrollX : sx, scrollY : sy};
 
if (tinyMCE.isRealIE) {
if (rng.item) {
e = rng.item(0);
 
nl = b.getElementsByTagName(e.nodeName);
for (i=0; i<nl.length; i++) {
if (e == nl[i]) {
sp = i;
break;
}
}
 
return {
tag : e.nodeName,
index : sp,
scrollX : sx,
scrollY : sy
};
} else {
trng = doc.body.createTextRange();
trng.moveToElementText(inst.getBody());
trng.collapse(true);
bp = Math.abs(trng.move('character', xx));
 
trng = rng.duplicate();
trng.collapse(true);
sp = Math.abs(trng.move('character', xx));
 
trng = rng.duplicate();
trng.collapse(false);
le = Math.abs(trng.move('character', xx)) - sp;
 
return {
start : sp - bp,
length : le,
scrollX : sx,
scrollY : sy
};
}
} else {
s = this.getSel();
e = this.getFocusElement();
 
if (!s)
return null;
 
if (e && e.nodeName == 'IMG') {
/*nl = b.getElementsByTagName('IMG');
for (i=0; i<nl.length; i++) {
if (e == nl[i]) {
sp = i;
break;
}
}*/
 
return {
start : -1,
end : -1,
index : sp,
scrollX : sx,
scrollY : sy
};
}
 
// Caret or selection
if (s.anchorNode == s.focusNode && s.anchorOffset == s.focusOffset) {
e = this._getPosText(b, s.anchorNode, s.focusNode);
 
if (!e)
return {scrollX : sx, scrollY : sy};
 
return {
start : e.start + s.anchorOffset,
end : e.end + s.focusOffset,
scrollX : sx,
scrollY : sy
};
} else {
e = this._getPosText(b, rng.startContainer, rng.endContainer);
 
if (!e)
return {scrollX : sx, scrollY : sy};
 
return {
start : e.start + rng.startOffset,
end : e.end + rng.endOffset,
scrollX : sx,
scrollY : sy
};
}
}
 
return null;
},
 
moveToBookmark : function(bookmark) {
var inst = this.instance, rng, nl, i, ex, b = inst.getBody(), sd;
var doc = inst.getDoc(), win = inst.getWin(), sel = this.getSel();
 
if (!bookmark)
return false;
 
if (tinyMCE.isSafari && bookmark.rng) {
sel.setBaseAndExtent(bookmark.rng.startContainer, bookmark.rng.startOffset, bookmark.rng.endContainer, bookmark.rng.endOffset);
return true;
}
 
if (tinyMCE.isRealIE) {
if (bookmark.rng) {
try {
bookmark.rng.select();
} catch (ex) {
// Ignore
}
 
return true;
}
 
win.focus();
 
if (bookmark.tag) {
rng = b.createControlRange();
 
nl = b.getElementsByTagName(bookmark.tag);
 
if (nl.length > bookmark.index) {
try {
rng.addElement(nl[bookmark.index]);
} catch (ex) {
// Might be thrown if the node no longer exists
}
}
} else {
// Try/catch needed since this operation breaks when TinyMCE is placed in hidden divs/tabs
try {
// Incorrect bookmark
if (bookmark.start < 0)
return true;
 
rng = inst.getSel().createRange();
rng.moveToElementText(inst.getBody());
rng.collapse(true);
rng.moveStart('character', bookmark.start);
rng.moveEnd('character', bookmark.length);
} catch (ex) {
return true;
}
}
 
rng.select();
 
win.scrollTo(bookmark.scrollX, bookmark.scrollY);
return true;
}
 
if (tinyMCE.isGecko || tinyMCE.isOpera) {
if (!sel)
return false;
 
if (bookmark.rng) {
sel.removeAllRanges();
sel.addRange(bookmark.rng);
}
 
if (bookmark.start != -1 && bookmark.end != -1) {
try {
sd = this._getTextPos(b, bookmark.start, bookmark.end);
rng = doc.createRange();
rng.setStart(sd.startNode, sd.startOffset);
rng.setEnd(sd.endNode, sd.endOffset);
sel.removeAllRanges();
sel.addRange(rng);
 
if (!tinyMCE.isOpera)
win.focus();
} catch (ex) {
// Ignore
}
}
 
/*
if (typeof(bookmark.index) != 'undefined') {
tinyMCE.selectElements(b, 'IMG', function (n) {
if (bookmark.index-- == 0) {
// Select image in Gecko here
}
 
return false;
});
}
*/
 
win.scrollTo(bookmark.scrollX, bookmark.scrollY);
return true;
}
 
return false;
},
 
_getPosText : function(r, sn, en) {
var w = document.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {};
 
while ((n = w.nextNode()) != null) {
if (n == sn)
d.start = p;
 
if (n == en) {
d.end = p;
return d;
}
 
p += n.nodeValue ? n.nodeValue.length : 0;
}
 
return null;
},
 
_getTextPos : function(r, sp, ep) {
var w = document.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {};
 
while ((n = w.nextNode()) != null) {
p += n.nodeValue ? n.nodeValue.length : 0;
 
if (p >= sp && !d.startNode) {
d.startNode = n;
d.startOffset = sp - (p - n.nodeValue.length);
}
 
if (p >= ep) {
d.endNode = n;
d.endOffset = ep - (p - n.nodeValue.length);
 
return d;
}
}
 
return null;
},
 
selectNode : function(node, collapse, select_text_node, to_start) {
var inst = this.instance, sel, rng, nodes;
 
if (!node)
return;
 
if (typeof(collapse) == "undefined")
collapse = true;
 
if (typeof(select_text_node) == "undefined")
select_text_node = false;
 
if (typeof(to_start) == "undefined")
to_start = true;
 
if (inst.settings.auto_resize)
inst.resizeToContent();
 
if (tinyMCE.isRealIE) {
rng = inst.getDoc().body.createTextRange();
 
try {
rng.moveToElementText(node);
 
if (collapse)
rng.collapse(to_start);
 
rng.select();
} catch (e) {
// Throws illigal agrument in MSIE some times
}
} else {
sel = this.getSel();
 
if (!sel)
return;
 
if (tinyMCE.isSafari) {
sel.setBaseAndExtent(node, 0, node, node.innerText.length);
 
if (collapse) {
if (to_start)
sel.collapseToStart();
else
sel.collapseToEnd();
}
 
this.scrollToNode(node);
 
return;
}
 
rng = inst.getDoc().createRange();
 
if (select_text_node) {
// Find first textnode in tree
nodes = tinyMCE.getNodeTree(node, [], 3);
if (nodes.length > 0)
rng.selectNodeContents(nodes[0]);
else
rng.selectNodeContents(node);
} else
rng.selectNode(node);
 
if (collapse) {
// Special treatment of textnode collapse
if (!to_start && node.nodeType == 3) {
rng.setStart(node, node.nodeValue.length);
rng.setEnd(node, node.nodeValue.length);
} else
rng.collapse(to_start);
}
 
sel.removeAllRanges();
sel.addRange(rng);
}
 
this.scrollToNode(node);
 
// Set selected element
tinyMCE.selectedElement = null;
if (node.nodeType == 1)
tinyMCE.selectedElement = node;
},
 
scrollToNode : function(node) {
var inst = this.instance, w = inst.getWin(), vp = inst.getViewPort(), pos = tinyMCE.getAbsPosition(node), cvp, p, cwin;
 
// Only scroll if out of visible area
if (pos.absLeft < vp.left || pos.absLeft > vp.left + vp.width || pos.absTop < vp.top || pos.absTop > vp.top + (vp.height-25))
w.scrollTo(pos.absLeft, pos.absTop - vp.height + 25);
 
// Scroll container window
if (inst.settings.auto_resize) {
cwin = inst.getContainerWin();
cvp = tinyMCE.getViewPort(cwin);
p = this.getAbsPosition(node);
 
if (p.absLeft < cvp.left || p.absLeft > cvp.left + cvp.width || p.absTop < cvp.top || p.absTop > cvp.top + cvp.height)
cwin.scrollTo(p.absLeft, p.absTop - cvp.height + 25);
}
},
 
getAbsPosition : function(n) {
var pos = tinyMCE.getAbsPosition(n), ipos = tinyMCE.getAbsPosition(this.instance.iframeElement);
 
return {
absLeft : ipos.absLeft + pos.absLeft,
absTop : ipos.absTop + pos.absTop
};
},
 
getSel : function() {
var inst = this.instance;
 
if (tinyMCE.isRealIE)
return inst.getDoc().selection;
 
return inst.contentWindow.getSelection();
},
 
getRng : function() {
var s = this.getSel();
 
if (s == null)
return null;
 
if (tinyMCE.isRealIE)
return s.createRange();
 
if (tinyMCE.isSafari && !s.getRangeAt)
return '' + window.getSelection();
 
if (s.rangeCount > 0)
return s.getRangeAt(0);
 
return null;
},
 
isCollapsed : function() {
var r = this.getRng();
 
if (r.item)
return false;
 
return r.boundingWidth == 0 || this.getSel().isCollapsed;
},
 
collapse : function(b) {
var r = this.getRng(), s = this.getSel();
 
if (r.select) {
r.collapse(b);
r.select();
} else {
if (b)
s.collapseToStart();
else
s.collapseToEnd();
}
},
 
getFocusElement : function() {
var inst = this.instance, doc, rng, sel, elm;
 
if (tinyMCE.isRealIE) {
doc = inst.getDoc();
rng = doc.selection.createRange();
 
// if (rng.collapse)
// rng.collapse(true);
 
elm = rng.item ? rng.item(0) : rng.parentElement();
} else {
if (!tinyMCE.isSafari && inst.isHidden())
return inst.getBody();
 
sel = this.getSel();
rng = this.getRng();
 
if (!sel || !rng)
return null;
 
elm = rng.commonAncestorContainer;
//elm = (sel && sel.anchorNode) ? sel.anchorNode : null;
 
// Handle selection a image or other control like element such as anchors
if (!rng.collapsed) {
// Is selection small
if (rng.startContainer == rng.endContainer) {
if (rng.startOffset - rng.endOffset < 2) {
if (rng.startContainer.hasChildNodes())
elm = rng.startContainer.childNodes[rng.startOffset];
}
}
}
 
// Get the element parent of the node
elm = tinyMCE.getParentElement(elm);
 
//if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "img")
// elm = tinyMCE.selectedElement;
}
 
return elm;
}
 
};
 
/* file:jscripts/tiny_mce/classes/TinyMCE_UndoRedo.class.js */
 
function TinyMCE_UndoRedo(inst) {
this.instance = inst;
this.undoLevels = [];
this.undoIndex = 0;
this.typingUndoIndex = -1;
this.undoRedo = true;
};
 
TinyMCE_UndoRedo.prototype = {
add : function(l) {
var b, customUndoLevels, newHTML, inst = this.instance, i, ul, ur;
 
if (l) {
this.undoLevels[this.undoLevels.length] = l;
return true;
}
 
if (this.typingUndoIndex != -1) {
this.undoIndex = this.typingUndoIndex;
 
if (tinyMCE.typingUndoIndex != -1)
tinyMCE.undoIndex = tinyMCE.typingUndoIndex;
}
 
newHTML = tinyMCE.trim(inst.getBody().innerHTML);
if (this.undoLevels[this.undoIndex] && newHTML != this.undoLevels[this.undoIndex].content) {
//tinyMCE.debug(newHTML, this.undoLevels[this.undoIndex].content);
 
// Is dirty again
inst.isNotDirty = false;
 
tinyMCE.dispatchCallback(inst, 'onchange_callback', 'onChange', inst);
 
// Time to compress
customUndoLevels = tinyMCE.settings.custom_undo_redo_levels;
if (customUndoLevels != -1 && this.undoLevels.length > customUndoLevels) {
for (i=0; i<this.undoLevels.length-1; i++)
this.undoLevels[i] = this.undoLevels[i+1];
 
this.undoLevels.length--;
this.undoIndex--;
 
// Todo: Implement global undo/redo logic here
}
 
b = inst.undoBookmark;
 
if (!b)
b = inst.selection.getBookmark();
 
this.undoIndex++;
this.undoLevels[this.undoIndex] = {
content : newHTML,
bookmark : b
};
 
// Remove all above from global undo/redo
ul = tinyMCE.undoLevels;
for (i=tinyMCE.undoIndex + 1; i<ul.length; i++) {
ur = ul[i].undoRedo;
 
if (ur.undoIndex == ur.undoLevels.length -1)
ur.undoIndex--;
 
ur.undoLevels.length--;
}
 
// Add global undo level
tinyMCE.undoLevels[tinyMCE.undoIndex++] = inst;
tinyMCE.undoLevels.length = tinyMCE.undoIndex;
 
this.undoLevels.length = this.undoIndex + 1;
 
return true;
}
 
return false;
},
 
undo : function() {
var inst = this.instance;
 
// Do undo
if (this.undoIndex > 0) {
this.undoIndex--;
 
tinyMCE.setInnerHTML(inst.getBody(), this.undoLevels[this.undoIndex].content);
inst.repaint();
 
if (inst.settings.custom_undo_redo_restore_selection)
inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark);
}
},
 
redo : function() {
var inst = this.instance;
 
tinyMCE.execCommand("mceEndTyping");
 
if (this.undoIndex < (this.undoLevels.length-1)) {
this.undoIndex++;
 
tinyMCE.setInnerHTML(inst.getBody(), this.undoLevels[this.undoIndex].content);
inst.repaint();
 
if (inst.settings.custom_undo_redo_restore_selection)
inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark);
}
 
tinyMCE.triggerNodeChange();
}
 
};
 
/* file:jscripts/tiny_mce/classes/TinyMCE_ForceParagraphs.class.js */
 
var TinyMCE_ForceParagraphs = {
_insertPara : function(inst, e) {
var doc = inst.getDoc(), sel = inst.getSel(), body = inst.getBody(), win = inst.contentWindow, rng = sel.getRangeAt(0);
var rootElm = doc.documentElement, blockName = "P", startNode, endNode, startBlock, endBlock;
var rngBefore, rngAfter, direct, startNode, startOffset, endNode, endOffset, b = tinyMCE.isOpera ? inst.selection.getBookmark() : null;
var paraBefore, paraAfter, startChop, endChop, contents, i;
 
function isEmpty(para) {
var nodes;
 
function isEmptyHTML(html) {
return html.replace(new RegExp('[ \t\r\n]+', 'g'), '').toLowerCase() == '';
}
 
// Check for images
if (para.getElementsByTagName("img").length > 0)
return false;
 
// Check for tables
if (para.getElementsByTagName("table").length > 0)
return false;
 
// Check for HRs
if (para.getElementsByTagName("hr").length > 0)
return false;
 
// Check all textnodes
nodes = tinyMCE.getNodeTree(para, [], 3);
for (i=0; i<nodes.length; i++) {
if (!isEmptyHTML(nodes[i].nodeValue))
return false;
}
 
// No images, no tables, no hrs, no text content then it's empty
return true;
}
 
// tinyMCE.debug(body.innerHTML);
 
// debug(e.target, sel.anchorNode.nodeName, sel.focusNode.nodeName, rng.startContainer, rng.endContainer, rng.commonAncestorContainer, sel.anchorOffset, sel.focusOffset, rng.toString());
 
// Setup before range
rngBefore = doc.createRange();
rngBefore.setStart(sel.anchorNode, sel.anchorOffset);
rngBefore.collapse(true);
 
// Setup after range
rngAfter = doc.createRange();
rngAfter.setStart(sel.focusNode, sel.focusOffset);
rngAfter.collapse(true);
 
// Setup start/end points
direct = rngBefore.compareBoundaryPoints(rngBefore.START_TO_END, rngAfter) < 0;
startNode = direct ? sel.anchorNode : sel.focusNode;
startOffset = direct ? sel.anchorOffset : sel.focusOffset;
endNode = direct ? sel.focusNode : sel.anchorNode;
endOffset = direct ? sel.focusOffset : sel.anchorOffset;
 
startNode = startNode.nodeName == "HTML" ? doc.body : startNode; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes
startNode = startNode.nodeName == "BODY" ? startNode.firstChild : startNode;
endNode = endNode.nodeName == "BODY" ? endNode.firstChild : endNode;
 
// Get block elements
startBlock = inst.getParentBlockElement(startNode);
endBlock = inst.getParentBlockElement(endNode);
 
// If absolute force paragraph generation within
if (startBlock && (startBlock.nodeName == 'CAPTION' || /absolute|relative|static/gi.test(startBlock.style.position)))
startBlock = null;
 
if (endBlock && (endBlock.nodeName == 'CAPTION' || /absolute|relative|static/gi.test(endBlock.style.position)))
endBlock = null;
 
// Use current block name
if (startBlock != null) {
blockName = startBlock.nodeName;
 
// Use P instead
if (/(TD|TABLE|TH|CAPTION)/.test(blockName) || (blockName == "DIV" && /left|right/gi.test(startBlock.style.cssFloat)))
blockName = "P";
}
 
// Within a list use normal behaviour
if (tinyMCE.getParentElement(startBlock, "OL,UL", null, body) != null)
return false;
 
// Within a table create new paragraphs
if ((startBlock != null && startBlock.nodeName == "TABLE") || (endBlock != null && endBlock.nodeName == "TABLE"))
startBlock = endBlock = null;
 
// Setup new paragraphs
paraBefore = (startBlock != null && startBlock.nodeName == blockName) ? startBlock.cloneNode(false) : doc.createElement(blockName);
paraAfter = (endBlock != null && endBlock.nodeName == blockName) ? endBlock.cloneNode(false) : doc.createElement(blockName);
 
// Is header, then force paragraph under
if (/^(H[1-6])$/.test(blockName))
paraAfter = doc.createElement("p");
 
// Setup chop nodes
startChop = startNode;
endChop = endNode;
 
// Get startChop node
node = startChop;
do {
if (node == body || node.nodeType == 9 || tinyMCE.isBlockElement(node))
break;
 
startChop = node;
} while ((node = node.previousSibling ? node.previousSibling : node.parentNode));
 
// Get endChop node
node = endChop;
do {
if (node == body || node.nodeType == 9 || tinyMCE.isBlockElement(node))
break;
 
endChop = node;
} while ((node = node.nextSibling ? node.nextSibling : node.parentNode));
 
// Fix when only a image is within the TD
if (startChop.nodeName == "TD")
startChop = startChop.firstChild;
 
if (endChop.nodeName == "TD")
endChop = endChop.lastChild;
 
// If not in a block element
if (startBlock == null) {
// Delete selection
rng.deleteContents();
 
if (!tinyMCE.isSafari)
sel.removeAllRanges();
 
if (startChop != rootElm && endChop != rootElm) {
// Insert paragraph before
rngBefore = rng.cloneRange();
 
if (startChop == body)
rngBefore.setStart(startChop, 0);
else
rngBefore.setStartBefore(startChop);
 
paraBefore.appendChild(rngBefore.cloneContents());
 
// Insert paragraph after
if (endChop.parentNode.nodeName == blockName)
endChop = endChop.parentNode;
 
// If not after image
//if (rng.startContainer.nodeName != "BODY" && rng.endContainer.nodeName != "BODY")
rng.setEndAfter(endChop);
 
if (endChop.nodeName != "#text" && endChop.nodeName != "BODY")
rngBefore.setEndAfter(endChop);
 
contents = rng.cloneContents();
if (contents.firstChild && (contents.firstChild.nodeName == blockName || contents.firstChild.nodeName == "BODY"))
paraAfter.innerHTML = contents.firstChild.innerHTML;
else
paraAfter.appendChild(contents);
 
// Check if it's a empty paragraph
if (isEmpty(paraBefore))
paraBefore.innerHTML = "&nbsp;";
 
// Check if it's a empty paragraph
if (isEmpty(paraAfter))
paraAfter.innerHTML = "&nbsp;";
 
// Delete old contents
rng.deleteContents();
rngAfter.deleteContents();
rngBefore.deleteContents();
 
// Insert new paragraphs
if (tinyMCE.isOpera) {
paraBefore.normalize();
rngBefore.insertNode(paraBefore);
paraAfter.normalize();
rngBefore.insertNode(paraAfter);
} else {
paraAfter.normalize();
rngBefore.insertNode(paraAfter);
paraBefore.normalize();
rngBefore.insertNode(paraBefore);
}
 
//tinyMCE.debug("1: ", paraBefore.innerHTML, paraAfter.innerHTML);
} else {
body.innerHTML = "<" + blockName + ">&nbsp;</" + blockName + "><" + blockName + ">&nbsp;</" + blockName + ">";
paraAfter = body.childNodes[1];
}
 
inst.selection.moveToBookmark(b);
inst.selection.selectNode(paraAfter, true, true);
 
return true;
}
 
// Place first part within new paragraph
if (startChop.nodeName == blockName)
rngBefore.setStart(startChop, 0);
else
rngBefore.setStartBefore(startChop);
 
rngBefore.setEnd(startNode, startOffset);
paraBefore.appendChild(rngBefore.cloneContents());
 
// Place secound part within new paragraph
rngAfter.setEndAfter(endChop);
rngAfter.setStart(endNode, endOffset);
contents = rngAfter.cloneContents();
 
if (contents.firstChild && contents.firstChild.nodeName == blockName) {
/* var nodes = contents.firstChild.childNodes;
for (i=0; i<nodes.length; i++) {
//tinyMCE.debug(nodes[i].nodeName);
if (nodes[i].nodeName != "BODY")
paraAfter.appendChild(nodes[i]);
}
*/
paraAfter.innerHTML = contents.firstChild.innerHTML;
} else
paraAfter.appendChild(contents);
 
// Check if it's a empty paragraph
if (isEmpty(paraBefore))
paraBefore.innerHTML = "&nbsp;";
 
// Check if it's a empty paragraph
if (isEmpty(paraAfter))
paraAfter.innerHTML = "&nbsp;";
 
// Create a range around everything
rng = doc.createRange();
 
if (!startChop.previousSibling && startChop.parentNode.nodeName.toUpperCase() == blockName) {
rng.setStartBefore(startChop.parentNode);
} else {
if (rngBefore.startContainer.nodeName.toUpperCase() == blockName && rngBefore.startOffset == 0)
rng.setStartBefore(rngBefore.startContainer);
else
rng.setStart(rngBefore.startContainer, rngBefore.startOffset);
}
 
if (!endChop.nextSibling && endChop.parentNode.nodeName.toUpperCase() == blockName)
rng.setEndAfter(endChop.parentNode);
else
rng.setEnd(rngAfter.endContainer, rngAfter.endOffset);
 
// Delete all contents and insert new paragraphs
rng.deleteContents();
 
if (tinyMCE.isOpera) {
rng.insertNode(paraBefore);
rng.insertNode(paraAfter);
} else {
rng.insertNode(paraAfter);
rng.insertNode(paraBefore);
}
 
//tinyMCE.debug("2", paraBefore.innerHTML, paraAfter.innerHTML);
 
// Normalize
paraAfter.normalize();
paraBefore.normalize();
 
inst.selection.moveToBookmark(b);
inst.selection.selectNode(paraAfter, true, true);
 
return true;
},
 
_handleBackSpace : function(inst) {
var r = inst.getRng(), sn = r.startContainer, nv, s = false;
 
// Added body check for bug #1527787
if (sn && sn.nextSibling && sn.nextSibling.nodeName == "BR" && sn.parentNode.nodeName != "BODY") {
nv = sn.nodeValue;
 
// Handle if a backspace is pressed after a space character #bug 1466054 removed since fix for #1527787
/*if (nv != null && nv.length >= r.startOffset && nv.charAt(r.startOffset - 1) == ' ')
s = true;*/
 
// Only remove BRs if we are at the end of line #bug 1464152
if (nv != null && r.startOffset == nv.length)
sn.nextSibling.parentNode.removeChild(sn.nextSibling);
}
 
if (inst.settings.auto_resize)
inst.resizeToContent();
 
return s;
}
 
};
 
/* file:jscripts/tiny_mce/classes/TinyMCE_Layer.class.js */
 
function TinyMCE_Layer(id, bm) {
this.id = id;
this.blockerElement = null;
this.events = false;
this.element = null;
this.blockMode = typeof(bm) != 'undefined' ? bm : true;
this.doc = document;
};
 
TinyMCE_Layer.prototype = {
moveRelativeTo : function(re, p) {
var rep = this.getAbsPosition(re), e = this.getElement(), x, y;
var w = parseInt(re.offsetWidth), h = parseInt(re.offsetHeight);
var ew = parseInt(e.offsetWidth), eh = parseInt(e.offsetHeight);
 
switch (p) {
case "tl":
x = rep.absLeft;
y = rep.absTop;
break;
 
case "tr":
x = rep.absLeft + w;
y = rep.absTop;
break;
 
case "bl":
x = rep.absLeft;
y = rep.absTop + h;
break;
 
case "br":
x = rep.absLeft + w;
y = rep.absTop + h;
break;
 
case "cc":
x = rep.absLeft + (w / 2) - (ew / 2);
y = rep.absTop + (h / 2) - (eh / 2);
break;
}
 
this.moveTo(x, y);
},
 
moveBy : function(x, y) {
var e = this.getElement();
this.moveTo(parseInt(e.style.left) + x, parseInt(e.style.top) + y);
},
 
moveTo : function(x, y) {
var e = this.getElement();
 
e.style.left = x + "px";
e.style.top = y + "px";
 
this.updateBlocker();
},
 
resizeBy : function(w, h) {
var e = this.getElement();
this.resizeTo(parseInt(e.style.width) + w, parseInt(e.style.height) + h);
},
 
resizeTo : function(w, h) {
var e = this.getElement();
 
if (w != null)
e.style.width = w + "px";
 
if (h != null)
e.style.height = h + "px";
 
this.updateBlocker();
},
 
show : function() {
var el = this.getElement();
 
if (el) {
el.style.display = 'block';
this.updateBlocker();
}
},
 
hide : function() {
var el = this.getElement();
 
if (el) {
el.style.display = 'none';
this.updateBlocker();
}
},
 
isVisible : function() {
return this.getElement().style.display == 'block';
},
 
getElement : function() {
if (!this.element)
this.element = this.doc.getElementById(this.id);
 
return this.element;
},
 
setBlockMode : function(s) {
this.blockMode = s;
},
 
updateBlocker : function() {
var e, b, x, y, w, h;
 
b = this.getBlocker();
if (b) {
if (this.blockMode) {
e = this.getElement();
x = this.parseInt(e.style.left);
y = this.parseInt(e.style.top);
w = this.parseInt(e.offsetWidth);
h = this.parseInt(e.offsetHeight);
 
b.style.left = x + 'px';
b.style.top = y + 'px';
b.style.width = w + 'px';
b.style.height = h + 'px';
b.style.display = e.style.display;
} else
b.style.display = 'none';
}
},
 
getBlocker : function() {
var d, b;
 
if (!this.blockerElement && this.blockMode) {
d = this.doc;
b = d.getElementById(this.id + "_blocker");
 
if (!b) {
b = d.createElement("iframe");
 
b.setAttribute('id', this.id + "_blocker");
b.style.cssText = 'display: none; position: absolute; left: 0; top: 0';
b.src = 'javascript:false;';
b.frameBorder = '0';
b.scrolling = 'no';
d.body.appendChild(b);
}
 
this.blockerElement = b;
}
 
return this.blockerElement;
},
 
getAbsPosition : function(n) {
var p = {absLeft : 0, absTop : 0};
 
while (n) {
p.absLeft += n.offsetLeft;
p.absTop += n.offsetTop;
n = n.offsetParent;
}
 
return p;
},
 
create : function(n, c, p, h) {
var d = this.doc, e = d.createElement(n);
 
e.setAttribute('id', this.id);
 
if (c)
e.className = c;
 
if (!p)
p = d.body;
 
if (h)
e.innerHTML = h;
 
p.appendChild(e);
 
return this.element = e;
},
 
exists : function() {
return this.doc.getElementById(this.id) != null;
},
 
parseInt : function(s) {
if (s == null || s == '')
return 0;
 
return parseInt(s);
},
 
remove : function() {
var e = this.getElement(), b = this.getBlocker();
 
if (e)
e.parentNode.removeChild(e);
 
if (b)
b.parentNode.removeChild(b);
}
 
};
 
/* file:jscripts/tiny_mce/classes/TinyMCE_Menu.class.js */
 
function TinyMCE_Menu() {
var id;
 
if (typeof(tinyMCE.menuCounter) == "undefined")
tinyMCE.menuCounter = 0;
 
id = "mc_menu_" + tinyMCE.menuCounter++;
 
TinyMCE_Layer.call(this, id, true);
 
this.id = id;
this.items = [];
this.needsUpdate = true;
};
 
TinyMCE_Menu.prototype = tinyMCE.extend(TinyMCE_Layer.prototype, {
init : function(s) {
var n;
 
// Default params
this.settings = {
separator_class : 'mceMenuSeparator',
title_class : 'mceMenuTitle',
disabled_class : 'mceMenuDisabled',
menu_class : 'mceMenu',
drop_menu : true
};
 
for (n in s)
this.settings[n] = s[n];
 
this.create('div', this.settings.menu_class);
},
 
clear : function() {
this.items = [];
},
 
addTitle : function(t) {
this.add({type : 'title', text : t});
},
 
addDisabled : function(t) {
this.add({type : 'disabled', text : t});
},
 
addSeparator : function() {
this.add({type : 'separator'});
},
 
addItem : function(t, js) {
this.add({text : t, js : js});
},
 
add : function(mi) {
this.items[this.items.length] = mi;
this.needsUpdate = true;
},
 
update : function() {
var e = this.getElement(), h = '', i, t, m = this.items, s = this.settings;
 
if (this.settings.drop_menu)
h += '<span class="mceMenuLine"></span>';
 
h += '<table border="0" cellpadding="0" cellspacing="0">';
 
for (i=0; i<m.length; i++) {
t = tinyMCE.xmlEncode(m[i].text);
c = m[i].class_name ? ' class="' + m[i].class_name + '"' : '';
 
switch (m[i].type) {
case 'separator':
h += '<tr class="' + s.separator_class + '"><td>';
break;
 
case 'title':
h += '<tr class="' + s.title_class + '"><td><span' + c +'>' + t + '</span>';
break;
 
case 'disabled':
h += '<tr class="' + s.disabled_class + '"><td><span' + c +'>' + t + '</span>';
break;
 
default:
h += '<tr><td><a href="' + tinyMCE.xmlEncode(m[i].js) + '" onmousedown="' + tinyMCE.xmlEncode(m[i].js) + ';return tinyMCE.cancelEvent(event);" onclick="return tinyMCE.cancelEvent(event);" onmouseup="return tinyMCE.cancelEvent(event);"><span' + c +'>' + t + '</span></a>';
}
 
h += '</td></tr>';
}
 
h += '</table>';
 
e.innerHTML = h;
 
this.needsUpdate = false;
this.updateBlocker();
},
 
show : function() {
var nl, i;
 
if (tinyMCE.lastMenu == this)
return;
 
if (this.needsUpdate)
this.update();
 
if (tinyMCE.lastMenu && tinyMCE.lastMenu != this)
tinyMCE.lastMenu.hide();
 
TinyMCE_Layer.prototype.show.call(this);
 
if (!tinyMCE.isOpera) {
// Accessibility stuff
/* nl = this.getElement().getElementsByTagName("a");
if (nl.length > 0)
nl[0].focus();*/
}
 
tinyMCE.lastMenu = this;
}
 
});
 
/* file:jscripts/tiny_mce/classes/TinyMCE_Debug.class.js */
 
tinyMCE.add(TinyMCE_Engine, {
debug : function() {
var m = "", a, i, l = tinyMCE.log.length;
 
for (i=0, a = this.debug.arguments; i<a.length; i++) {
m += a[i];
 
if (i<a.length-1)
m += ', ';
}
 
if (l < 1000)
tinyMCE.log[l] = "[debug] " + m;
}
 
});
 
/trunk/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/tiny_mce_gzip.js
New file
0,0 → 1,152
var tinyMCE_GZ = {
settings : {
plugins : 'style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras',
themes : 'simple,advanced',
languages : 'en',
disk_cache : true,
page_name : 'tiny_mce_gzip.php',
debug : false
},
 
init : function(s) {
var n, d = document, nl, i, b = '', sr, db;
 
this.isIE = (navigator.appName == "Microsoft Internet Explorer");
this.isOpera = navigator.userAgent.indexOf('Opera') != -1;
 
for (n in s)
this.settings[n] = s[n];
 
for (i=0, nl = d.getElementsByTagName('base'); i<nl.length; i++) {
if (nl[i].href)
b = nl[i].href;
}
 
for (i=0, nl = d.getElementsByTagName('script'); i<nl.length; i++) {
if (nl[i].src && nl[i].src.indexOf('tiny_mce_gzip') != -1) {
sr = nl[i].src;
sr = sr.substring(0, sr.lastIndexOf('/'));
 
if (b != '' && b.indexOf('://') == -1)
b += sr;
else
b = sr;
}
}
 
db = document.location.href;
 
if (db.indexOf('?') != -1)
db = db.substring(0, db.indexOf('?'));
 
db = db.substring(0, db.lastIndexOf('/'));
 
if (b.indexOf('://') == -1 && b.charAt(0) != '/')
b = db + "/" + b;
 
this.baseURL = b + '/';
this.load(this.settings.page_name);
},
 
load : function(v) {
var s = this.settings, h, d = document, sp2;
 
v += '?js=true&plugins=' + escape(s.plugins);
v += '&themes=' + escape(s.themes);
v += '&languages=' + escape(s.languages);
v += '&diskcache=' + (s.disk_cache ? 'true' : 'false');
//v += this.checkCompress() ? '' : '&compress=false';
 
this.loadFile(this.baseURL + v);
},
 
checkCompress : function() {
var sp2, ver, na = navigator, ua = navigator.userAgent;
 
// Non IE browsers are fine
if (!this.isIE)
return 1;
 
sp2 = na.appMinorVersion.indexOf('SP2') != -1;
ver = parseFloat(ua.match(/MSIE\s+([0-9\.]+)/)[1]);
 
// IE 6.0+ with SP2 seems fine
if (ver >= 6 && sp2)
return 1;
 
// IE 7.0+ seems fine
if (ver >= 7)
return 1;
 
// All others might fail
return 0;
},
 
loadFile : function(u) {
var x, ex;
 
if (this.settings['debug'])
alert('JS: ' + u);
 
if (this.isIE) {
// Synchronous AJAX load gzip JS file
try {
x = new ActiveXObject("Microsoft.XMLHTTP");
} catch (ex) {
x = new ActiveXObject("Msxml2.XMLHTTP");
}
 
x.open("GET", u.replace(/%2C/g, ','), false);
x.send(null);
 
this.scriptData = x.responseText;
 
document.write('<script type="text/javascript">eval(tinyMCE_GZ.scriptData);</script>');
} else
document.write('<script type="text/javascript" src="' + u + '"></script>');
},
 
start : function() {
var s = this.settings, p = TinyMCE_Engine.prototype;
 
p.__loadScript = p.loadScript;
p.__importThemeLanguagePack = p.importThemeLanguagePack;
p.__importPluginLanguagePack = p.importPluginLanguagePack;
p.__loadNextScript = p.loadNextScript;
p.loadScript = p.importThemeLanguagePack = p.importPluginLanguagePack = p.loadNextScript = function() {};
tinyMCE.baseURL = this.baseURL.substring(0, this.baseURL.length - 1);
tinyMCE.settings = {};
tinyMCE.srcMode = '';
},
 
end : function() {
var s = this.settings, l = tinyMCE.loadedFiles, la, i, p = TinyMCE_Engine.prototype;
 
this.addFiles(s.plugins, 'plugins', 'editor_plugin.js');
this.addFiles(s.themes, 'themes', 'editor_template.js');
 
la = s.languages.replace(/\s+/, '').split(',')
for (i=0; i<la.length; i++)
l[l.length] = this.baseURL + 'langs/' + la[i] + '.js';
 
p.loadScript = p.__loadScript;
p.importThemeLanguagePack = p.__importThemeLanguagePack;
p.importPluginLanguagePack = p.__importPluginLanguagePack;
p.loadNextScript = p.__loadNextScript;
},
 
addFiles : function(f, c, e) {
var i, a, s = this.settings, l = tinyMCE.loadedFiles, la, x;
 
a = f.replace(/\s+/, '').split(',');
for (i=0; i<a.length; i++) {
if (a[i]) {
l[l.length] = this.baseURL + c + '/' + a[i] + '/' + e;
 
la = s.languages.replace(/\s+/, '').split(',')
for (x=0; x<la.length; x++)
l[l.length] = this.baseURL + c + '/' + a[i] + '/langs/' + la[x] + '.js';
}
}
}
};
/trunk/wikini/maj_wikini/tools/templates/themes/default/squelettes/default.tpl.html
New file
0,0 → 1,44
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
 
<head>
<title>{WIKINI_TITRE}</title>
{WIKINI_META_ROBOTS}
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<meta name="keywords" content="{WIKINI_MOTS_CLES}" />
<meta name="description" content="{WIKINI_DESCRIPTION}" />
{WIKINI_STYLES_CSS}
{WIKINI_JAVASCRIPTS}
</head>
 
<body {WIKINI_BODY}>
<div style="display: none;"><a href="{WIKINI_RESETSTYLE}" accesskey="7"></a></div>
<div id="page">
<div id="zone_bandeau">
<h1 id="titre_site">{WIKINI_TITRE_SITE}</h1>
</div> <!--fin div zone_bandeau-->
<div id="zone_contenu" {WIKINI_DOUBLE_CLIC}>
<div id="colonne_gauche">
<div id="menu_haut">
<h1>Menu</h1>
</div>
<div id="menu_contenu">
{{include page="PageMenu"}}
</div>
<div id="menu_bas">
&nbsp;
</div>
</div> <!-- fin div colonne_gauche -->
<div id="colonne_droite">
{WIKINI_PAGE}
</div> <!-- fin div colonne_droite -->
</div> <!-- fin div zone_contenu -->
<div id="zone_pied">
<div id="copyright">
R&eacute;alisation <a href="http://coop-tic.net">Coop-Tic.net</a><br />
Site utilisant <a href="http://wikini.net">Wikini</a><br /><br />
</div> <!-- fin div copyright -->
</div> <!-- fin div zone_pied -->
</div> <!-- fin div page -->
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/acteurs_ree05/styles/default.css
New file
0,0 → 1,384
body {
color:#000;
background:#737fbb url(../images/background.png) repeat-x top left;
}
 
body,p,td,li,input,select,textarea {
font-family:'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif;
font-size:13px;
line-height:1.3;
}
 
a {
color:#849F20;
text-decoration:none;
margin:0;
padding:0;
}
 
a:hover {
text-decoration:none;
color:#F90;
}
 
 
h1 {
text-align:center;
padding:5px 0 5px 20px;
margin:20px auto;
font-size:22px;
color:#849F20;
font-weight:bold;
width:400px;
}
 
 
 
h2 {
font-weight:bold;
font-size:18px;
text-align:left;
padding:5px 0 5px 30px;
margin:25px 0 25px 0;
color:#7271b5;
}
 
 
 
h3 {
 
font-size:17px;
 
color:#849F20;
 
font-weight:bold;
 
}
 
 
 
h4 {
 
font-size:14px;
 
color:#00A0C6;
 
}
 
 
 
h5 {
 
font-size:12px;
 
color:#F90;
 
}
 
 
 
a img {
 
border:none;
 
}
 
 
form li {
 
list-style-type:none;
 
color:#000;
 
}
 
 
 
ul {
 
margin:0 0 0 10px;
 
padding:0;
 
}
 
 
 
li {
 
color:#000;
 
margin:2px 0 0 10px;
 
padding:0;
 
}
 
#zone_pied {text-align:center;}
 
 
#zone_bandeau {
background:url(../images/bandeau_haut.jpg) no-repeat top left;
width:957px;
height:248px;
margin:0 auto;
}
 
#titre_site {position:absolute; top:220px; left:387px; width:704px; text-align:center;}
#lien_accueil {position:relative; top:20px; left:30px; display:block; width:250px;height:125px;text-decoration:none;}
tt {
color:Navy;
}
 
hr {
border:0;
color:#000;
background-color:#000;
height:1px;
}
 
.wiki_name {
float:left;
font-size:150%;
margin:0 15px 0 10px;
}
 
.page_name {
font-size:150%;
}
 
#page {
border:none;
height:100%;
width:973px;
margin:0 auto;
padding:0;
}
 
#colonne_gauche {
float:left;
background:#FFF;
width:191px;
border:2px solid #c5b9a3;
border-top:none;
margin: 0 0 10px 17px;
}
 
#colonne_gauche h1 {
text-align:center;
font-weight:bold;
font-size:13px;
color:#751451;
margin:0;
padding:6px 0;
width:195px;
}
 
#menu_contenu ul {
display:block;
color:#FFF;
list-style:none;
list-style-type:none;
margin:0;
padding:0 0 0 3px;
}
 
#menu_contenu li,#menu li li {
color:#000;
text-align:left;
margin:6px 0;
padding:0;
 
}
 
#colonne_droite {
border:none;
padding:0;
background-color:#FFF;
border-left:2px solid #c5b9a3;
border-right:2px solid #c5b9a3;
border-bottom:2px solid #c5b9a3;
margin:0 0 0 247px;
height:100%;
width:705px;
}
 
.error {
color:#C33;
font-weight:700;
}
 
.indent {
margin-left:40px;
}
 
.additions {
color:#080;
}
 
.deletions {
color:#800;
}
 
.add {
font-weight:700;
color:#c00;
text-decoration:underline;
}
 
.del {
font-style:italic;
color:#c00;
text-decoration:line-through;
}
 
.header {
padding:0 10px 10px;
}
 
.page {
padding: 0 5px 20px 5px;
}
 
.prev_alert {
background-color:red;
color:#FFF;
font-size:1.7em;
font-weight:700;
margin-bottom:5px;
}
 
.edit {
width:100%;
height:400px;
}
 
.footer {
background-color:#d1d2e7;
padding:5px 10px;
font-size:11px;
}
 
.code {
background:#FFF;
border:solid #888 2px;
font-family:'Courier New', Courier;
width:100%;
height:400px;
overflow:scroll;
padding:3px;
}
 
.revisioninfo {
color:#AAA;
padding-bottom:20px;
}
 
.commentsheader {
border-top:2px solid #c5b9a3;
background-color:#d1d2e7;
margin:0;
padding:5px;
/*width:695px;*/
}
 
.comment {
background-color:#d1d2e7;
padding:10px;
}
 
.commentform {
background-color:#d1d2e7;
padding:10px;
}
 
.copyright {
font-size:11px;
color:#AAA;
text-align:right;
}
 
.searchbox {
background:#FFFFF8;
border:0;
border-bottom:1px solid #CCA;
margin:0;
padding:0;
}
 
.debug {
font-size:11px;
color:#888;
}
 
.hr_clear {
clear:both;
visibility:hidden;
}
 
.include_right {
float:right;
width:17%;
}
 
.include_left {
float:left;
width:17%;
}
 
.include_solid_border {
border:solid;
padding:2px;
}
 
.include_gray_background {
background-color:#DDD;
}
 
.include_small_fonts {
font-size:.8em;
}
 
.include_big_fonts {
font-size:1.2em;
}
 
.include_height10em {
height:10em;
overflow:scroll;
}
 
.include_height15em {
height:15em;
overflow:scroll;
}
 
.include_height30em {
height:30em;
overflow:scroll;
}
 
.include_height60em {
height:60em;
overflow:scroll;
}
 
.trail_table {
line-height:30px;
}
 
h1,h2,h3,h4,h5,form {
margin:0;
padding:0;
}
 
a,.trail_button {
color:#933;
}
 
ul,ol {
margin-top:0;
margin-bottom:0;
padding-top:0;
padding-bottom:0;
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/acteurs_ree05/images/bandeau_haut.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/acteurs_ree05/images/bandeau_haut.jpg
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/acteurs_ree05/images/background.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/acteurs_ree05/images/background.png
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/acteurs_ree05/javascripts/fonctions_wikini.js
New file
0,0 → 1,6
function fKeyDown() {
if (event.keyCode == 9) {
event.returnValue= false;
document.selection.createRange().text = String.fromCharCode(9);
}
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/acteurs_ree05/squelettes/default.tpl.html
New file
0,0 → 1,43
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
 
<head>
<title>{WIKINI_TITRE}</title>
{WIKINI_META_ROBOTS}
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<meta name="keywords" content="{WIKINI_MOTS_CLES}" />
<meta name="description" content="{WIKINI_DESCRIPTION}" />
{WIKINI_STYLES_CSS}
{WIKINI_JAVASCRIPTS}
</head>
 
<body {WIKINI_BODY}>
<div style="display: none;"><a href="{WIKINI_RESETSTYLE}" accesskey="7"></a></div>
<div id="page">
<div id="zone_bandeau">
<a id="lien_accueil" href="http://ree05.org/papyrus.php" title="Retour &agrave; la page d'accueil">&nbsp;</a>
<h1 id="titre_site">{WIKINI_TITRE_SITE}</h1>
</div> <!--fin div zone_bandeau-->
<div id="zone_contenu" {WIKINI_DOUBLE_CLIC}>
<div id="colonne_gauche">
<div id="menu_haut">
<h1>Menu</h1>
</div>
<div id="menu_contenu">
{{include page="PageMenu"}}
</div>
<div id="menu_bas">
&nbsp;
</div>
</div> <!-- fin div colonne_gauche -->
<div id="colonne_droite">
{WIKINI_PAGE}
{WIKINI_BARRE_BAS}
</div> <!-- fin div colonne_droite -->
</div> <!-- fin div zone_contenu -->
<div id="zone_pied">
Site utilisant <a href="http://wikini.net">Wikini {WIKINI_VERSION}</a><br /><br />
</div> <!-- fin div zone_pied -->
</div> <!-- fin div page -->
</body>
</html>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/images/services.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/images/services.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/images/accueil.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/images/accueil.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/images/bullet.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/images/bullet.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/images/demos.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/images/demos.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/images/top_bg.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/images/top_bg.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/images/contact.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/images/contact.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/images/veille.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/images/veille.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/javascripts/menu.js
New file
0,0 → 1,28
window.addEvent('domready', function(){
var szNormal = 70, szSmall = 70, szFull = 150;
var kwicks = $$("#kwicks .kwick");
var fx = new Fx.Elements(kwicks, {wait: false, duration: 300, transition: Fx.Transitions.Back.easeOut});
kwicks.each(function(kwick, i) {
kwick.addEvent("mouseenter", function(event) {
var o = {};
o[i] = {width: [kwick.getStyle("width").toInt(), szFull]}
kwicks.each(function(other, j) {
if(i != j) {
var w = other.getStyle("width").toInt();
if(w != szSmall) o[j] = {width: [w, szSmall]};
}
});
fx.start(o);
});
});
$("kwicks").addEvent("mouseleave", function(event) {
var o = {};
kwicks.each(function(kwick, i) {
o[i] = {width: [kwick.getStyle("width").toInt(), szNormal]}
});
fx.start(o);
})
});
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/javascripts/0mootools-release-1.11.js
New file
0,0 → 1,3
//MooTools, My Object Oriented Javascript Tools. Copyright (c) 2006-2007 Valerio Proietti, <http://mad4milk.net>, MIT Style License.
 
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('o ci={cj:\'1.11\'};k $77(N){m(N!=9N)};k $F(N){B(!$77(N))m O;B(N.5i)m\'G\';o F=7c N;B(F==\'2I\'&&N.ch){22(N.84){Y 1:m\'G\';Y 3:m(/\\S/).2v(N.ax)?\'cg\':\'cd\'}}B(F==\'2I\'||F==\'k\'){22(N.9C){Y 2t:m\'1z\';Y 7y:m\'5C\';Y 18:m\'4R\'}B(7c N.V==\'4M\'){B(N.3r)m\'ce\';B(N.8t)m\'1b\'}}m F};k $2a(){o 54={};M(o i=0;i<1b.V;i++){M(o K 1a 1b[i]){o ap=1b[i][K];o 6d=54[K];B(6d&&$F(ap)==\'2I\'&&$F(6d)==\'2I\')54[K]=$2a(6d,ap);14 54[K]=ap}}m 54};o $R=k(){o 1p=1b;B(!1p[1])1p=[c,1p[0]];M(o K 1a 1p[1])1p[0][K]=1p[1][K];m 1p[0]};o $5e=k(){M(o i=0,l=1b.V;i<l;i++){1b[i].R=k(1U){M(o 1V 1a 1U){B(!c.1L[1V])c.1L[1V]=1U[1V];B(!c[1V])c[1V]=$5e.6x(1V)}}}};$5e.6x=k(1V){m k(W){m c.1L[1V].4j(W,2t.1L.bh.1X(1b,1))}};$5e(7Z,2t,6i,aN);k $2A(N){m!!(N||N===0)};k $4T(N,aY){m $77(N)?N:aY};k $8c(3s,1D){m 1c.9q(1c.8c()*(1D-3s+1)+3s)};k $3A(){m L 96().9w()};k $55(1H){cf(1H);ck(1H);m 1n};o 3M=k(N){N=N||{};N.R=$R;m N};o cl=L 3M(U);o cr=L 3M(Q);Q.6e=Q.33(\'6e\')[0];U.4a=!!(Q.5r);B(U.9o)U.2P=U[U.6C?\'cs\':\'ag\']=1e;14 B(Q.aC&&!Q.cq&&!cp.cm)U.4x=U[U.4a?\'cn\':\'5x\']=1e;14 B(Q.co!=1n)U.8r=1e;U.cc=U.4x;8X.R=$R;B(7c 5B==\'9N\'){o 5B=k(){};B(U.4x)Q.aJ("cb");5B.1L=(U.4x)?U["[[bZ.1L]]"]:{}}5B.1L.5i=k(){};B(U.ag)5j{Q.c0("c1",O,1e)}5c(e){};o 18=k(1J){o 5Z=k(){m(1b[0]!==1n&&c.1i&&$F(c.1i)==\'k\')?c.1i.4j(c,1b):c};$R(5Z,c);5Z.1L=1J;5Z.9C=18;m 5Z};18.1l=k(){};18.1L={R:k(1J){o 7m=L c(1n);M(o K 1a 1J){o 9m=7m[K];7m[K]=18.9l(9m,1J[K])}m L 18(7m)},3i:k(){M(o i=0,l=1b.V;i<l;i++)$R(c.1L,1b[i])}};18.9l=k(2l,2i){B(2l&&2l!=2i){o F=$F(2i);B(F!=$F(2l))m 2i;22(F){Y\'k\':o 8i=k(){c.1r=1b.8t.1r;m 2i.4j(c,1b)};8i.1r=2l;m 8i;Y\'2I\':m $2a(2l,2i)}}m 2i};o 7u=L 18({bY:k(fn){c.4v=c.4v||[];c.4v.1k(fn);m c},7z:k(){B(c.4v&&c.4v.V)c.4v.aK().2g(10,c)},bX:k(){c.4v=[]}});o 2p=L 18({1B:k(F,fn){B(fn!=18.1l){c.$19=c.$19||{};c.$19[F]=c.$19[F]||[];c.$19[F].5S(fn)}m c},1h:k(F,1p,2g){B(c.$19&&c.$19[F]){c.$19[F].1q(k(fn){fn.3a({\'W\':c,\'2g\':2g,\'1b\':1p})()},c)}m c},4C:k(F,fn){B(c.$19&&c.$19[F])c.$19[F].2K(fn);m c}});o 43=L 18({2Y:k(){c.C=$2a.4j(1n,[c.C].R(1b));B(c.1B){M(o 3z 1a c.C){B($F(c.C[3z]==\'k\')&&(/^67[A-Z]/).2v(3z))c.1B(3z,c.C[3z])}}m c}});2t.R({7b:k(fn,W){M(o i=0,j=c.V;i<j;i++)fn.1X(W,c[i],i,c)},36:k(fn,W){o 4Y=[];M(o i=0,j=c.V;i<j;i++){B(fn.1X(W,c[i],i,c))4Y.1k(c[i])}m 4Y},2D:k(fn,W){o 4Y=[];M(o i=0,j=c.V;i<j;i++)4Y[i]=fn.1X(W,c[i],i,c);m 4Y},4F:k(fn,W){M(o i=0,j=c.V;i<j;i++){B(!fn.1X(W,c[i],i,c))m O}m 1e},bU:k(fn,W){M(o i=0,j=c.V;i<j;i++){B(fn.1X(W,c[i],i,c))m 1e}m O},3k:k(3r,15){o 3S=c.V;M(o i=(15<0)?1c.1D(0,3S+15):15||0;i<3S;i++){B(c[i]===3r)m i}m-1},8e:k(1g,V){1g=1g||0;B(1g<0)1g=c.V+1g;V=V||(c.V-1g);o 8g=[];M(o i=0;i<V;i++)8g[i]=c[1g++];m 8g},2K:k(3r){o i=0;o 3S=c.V;6Z(i<3S){B(c[i]===3r){c.74(i,1);3S--}14{i++}}m c},1j:k(3r,15){m c.3k(3r,15)!=-1},bV:k(1O){o N={},V=1c.3s(c.V,1O.V);M(o i=0;i<V;i++)N[1O[i]]=c[i];m N},R:k(1z){M(o i=0,j=1z.V;i<j;i++)c.1k(1z[i]);m c},2a:k(1z){M(o i=0,l=1z.V;i<l;i++)c.5S(1z[i]);m c},5S:k(3r){B(!c.1j(3r))c.1k(3r);m c},bW:k(){m c[$8c(0,c.V-1)]||1n},80:k(){m c[c.V-1]||1n}});2t.1L.1q=2t.1L.7b;2t.1q=2t.7b;k $A(1z){m 2t.8e(1z)};k $1q(41,fn,W){B(41&&7c 41.V==\'4M\'&&$F(41)!=\'2I\'){2t.7b(41,fn,W)}14{M(o 1w 1a 41)fn.1X(W||41,41[1w],1w)}};2t.1L.2v=2t.1L.1j;6i.R({2v:k(79,2U){m(($F(79)==\'2z\')?L 7y(79,2U):79).2v(c)},3d:k(){m 5O(c,10)},aH:k(){m 66(c)},8a:k(){m c.3g(/-\\D/g,k(31){m 31.8d(1).7A()})},aL:k(){m c.3g(/\\w[A-Z]/g,k(31){m(31.8d(0)+\'-\'+31.8d(1).5L())})},8R:k(){m c.3g(/\\b[a-z]/g,k(31){m 31.7A()})},5T:k(){m c.3g(/^\\s+|\\s+$/g,\'\')},7r:k(){m c.3g(/\\s{2,}/g,\' \').5T()},5E:k(1z){o 1s=c.31(/\\d{1,3}/g);m(1s)?1s.5E(1z):O},5G:k(1z){o 3C=c.31(/^#?(\\w{1,2})(\\w{1,2})(\\w{1,2})$/);m(3C)?3C.bh(1).5G(1z):O},1j:k(2z,s){m(s)?(s+c+s).3k(s+2z+s)>-1:c.3k(2z)>-1},b5:k(){m c.3g(/([.*+?^${}()|[\\]\\/\\\\])/g,\'\\\\$1\')}});2t.R({5E:k(1z){B(c.V<3)m O;B(c.V==4&&c[3]==0&&!1z)m\'c2\';o 3C=[];M(o i=0;i<3;i++){o 5d=(c[i]-0).4l(16);3C.1k((5d.V==1)?\'0\'+5d:5d)}m 1z?3C:\'#\'+3C.2c(\'\')},5G:k(1z){B(c.V!=3)m O;o 1s=[];M(o i=0;i<3;i++){1s.1k(5O((c[i].V==1)?c[i]+c[i]:c[i],16))}m 1z?1s:\'1s(\'+1s.2c(\',\')+\')\'}});7Z.R({3a:k(C){o fn=c;C=$2a({\'W\':fn,\'I\':O,\'1b\':1n,\'2g\':O,\'4f\':O,\'6f\':O},C);B($2A(C.1b)&&$F(C.1b)!=\'1z\')C.1b=[C.1b];m k(I){o 1p;B(C.I){I=I||U.I;1p=[(C.I===1e)?I:L C.I(I)];B(C.1b)1p.R(C.1b)}14 1p=C.1b||1b;o 3N=k(){m fn.4j($4T(C.W,fn),1p)};B(C.2g)m 9M(3N,C.2g);B(C.4f)m c3(3N,C.4f);B(C.6f)5j{m 3N()}5c(c9){m O};m 3N()}},bT:k(1p,W){m c.3a({\'1b\':1p,\'W\':W})},6f:k(1p,W){m c.3a({\'1b\':1p,\'W\':W,\'6f\':1e})()},W:k(W,1p){m c.3a({\'W\':W,\'1b\':1p})},c8:k(W,1p){m c.3a({\'W\':W,\'I\':1e,\'1b\':1p})},2g:k(2g,W,1p){m c.3a({\'2g\':2g,\'W\':W,\'1b\':1p})()},4f:k(aV,W,1p){m c.3a({\'4f\':aV,\'W\':W,\'1b\':1p})()}});aN.R({3d:k(){m 5O(c)},aH:k(){m 66(c)},1F:k(3s,1D){m 1c.3s(1D,1c.1D(3s,c))},2q:k(5Y){5Y=1c.3w(10,5Y||0);m 1c.2q(c*5Y)/5Y},c7:k(fn){M(o i=0;i<c;i++)fn(i)}});o P=L 18({1i:k(el,1U){B($F(el)==\'2z\'){B(U.2P&&1U&&(1U.1w||1U.F)){o 1w=(1U.1w)?\' 1w="\'+1U.1w+\'"\':\'\';o F=(1U.F)?\' F="\'+1U.F+\'"\':\'\';57 1U.1w;57 1U.F;el=\'<\'+el+1w+F+\'>\'}el=Q.aJ(el)}el=$(el);m(!1U||!el)?el:el.2j(1U)}});o 26=L 18({1i:k(T){m(T)?$R(T,c):c}});26.R=k(1U){M(o 1V 1a 1U){c.1L[1V]=1U[1V];c[1V]=$5e.6x(1V)}};k $(el){B(!el)m 1n;B(el.5i)m 2F.52(el);B([U,Q].1j(el))m el;o F=$F(el);B(F==\'2z\'){el=Q.6W(el);F=(el)?\'G\':O}B(F!=\'G\')m 1n;B(el.5i)m 2F.52(el);B([\'2I\',\'c4\'].1j(el.6S.5L()))m el;$R(el,P.1L);el.5i=k(){};m 2F.52(el)};Q.6Y=Q.33;k $$(){o T=[];M(o i=0,j=1b.V;i<j;i++){o 1S=1b[i];22($F(1S)){Y\'G\':T.1k(1S);Y\'c5\':1C;Y O:1C;Y\'2z\':1S=Q.6Y(1S,1e);62:T.R(1S)}}m $$.5M(T)};$$.5M=k(1z){o T=[];M(o i=0,l=1z.V;i<l;i++){B(1z[i].$6r)6l;o G=$(1z[i]);B(G&&!G.$6r){G.$6r=1e;T.1k(G)}}M(o n=0,d=T.V;n<d;n++)T[n].$6r=1n;m L 26(T)};26.73=k(K){m k(){o 1p=1b;o 1x=[];o T=1e;M(o i=0,j=c.V,3N;i<j;i++){3N=c[i][K].4j(c[i],1p);B($F(3N)!=\'G\')T=O;1x.1k(3N)};m(T)?$$.5M(1x):1x}};P.R=k(1J){M(o K 1a 1J){5B.1L[K]=1J[K];P.1L[K]=1J[K];P[K]=$5e.6x(K);o aB=(2t.1L[K])?K+\'26\':K;26.1L[aB]=26.73(K)}};P.R({2j:k(1U){M(o 1V 1a 1U){o 4m=1U[1V];22(1V){Y\'8J\':c.4A(4m);1C;Y\'19\':B(c.6j)c.6j(4m);1C;Y\'1J\':c.6o(4m);1C;62:c.7l(1V,4m)}}m c},28:k(el,ay){el=$(el);22(ay){Y\'9k\':el.3n.91(c,el);1C;Y\'94\':o 3x=el.8I();B(!3x)el.3n.86(c);14 el.3n.91(c,3x);1C;Y\'1o\':o 8Z=el.88;B(8Z){el.91(c,8Z);1C}62:el.86(c)}m c},7Y:k(el){m c.28(el,\'9k\')},6v:k(el){m c.28(el,\'94\')},c6:k(el){m c.28(el,\'3P\')},ct:k(el){m c.28(el,\'1o\')},b2:k(){o T=[];$1q(1b,k(4t){T=T.7P(4t)});$$(T).28(c);m c},2K:k(){m c.3n.bl(c)},9G:k(9V){o el=$(c.cu(9V!==O));B(!el.$19)m el;el.$19={};M(o F 1a c.$19)el.$19[F]={\'1O\':$A(c.$19[F].1O),\'1I\':$A(c.$19[F].1I)};m el.78()},cT:k(el){el=$(el);c.3n.cU(el,c);m el},bn:k(1K){c.86(Q.cS(1K));m c},7s:k(1A){m c.1A.1j(1A,\' \')},9z:k(1A){B(!c.7s(1A))c.1A=(c.1A+\' \'+1A).7r();m c},9E:k(1A){c.1A=c.1A.3g(L 7y(\'(^|\\\\s)\'+1A+\'(?:\\\\s|$)\'),\'$1\').7r();m c},cR:k(1A){m c.7s(1A)?c.9E(1A):c.9z(1A)},1P:k(K,J){22(K){Y\'21\':m c.bk(66(J));Y\'cO\':K=(U.2P)?\'cP\':\'cQ\'}K=K.8a();22($F(J)){Y\'4M\':B(![\'cV\',\'ak\'].1j(K))J+=\'4W\';1C;Y\'1z\':J=\'1s(\'+J.2c(\',\')+\')\'}c.1N[K]=J;m c},4A:k(1Z){22($F(1Z)){Y\'2I\':P.72(c,\'1P\',1Z);1C;Y\'2z\':c.1N.87=1Z}m c},bk:k(21){B(21==0){B(c.1N.4z!="4O")c.1N.4z="4O"}14{B(c.1N.4z!="8G")c.1N.4z="8G"}B(!c.6p||!c.6p.cW)c.1N.ak=1;B(U.2P)c.1N.36=(21==1)?\'\':"7d(21="+21*35+")";c.1N.21=c.$1W.21=21;m c},2h:k(K){K=K.8a();o 1M=c.1N[K];B(!$2A(1M)){B(K==\'21\')m c.$1W.21;1M=[];M(o 1N 1a P.4c){B(K==1N){P.4c[1N].1q(k(s){o 1N=c.2h(s);1M.1k(5O(1N)?1N:\'bo\')},c);B(K==\'2R\'){o 4F=1M.4F(k(5d){m(5d==1M[0])});m(4F)?1M[0]:O}m 1M.2c(\' \')}}B(K.1j(\'2R\')){B(P.4c.2R.1j(K)){m[\'bf\',\'7T\',\'2Q\'].2D(k(p){m c.2h(K+p)},c).2c(\' \')}14 B(P.97.1j(K)){m[\'bi\',\'bs\',\'az\',\'a6\'].2D(k(p){m c.2h(\'2R\'+p+K.3g(\'2R\',\'\'))},c).2c(\' \')}}B(Q.aF)1M=Q.aF.d2(c,1n).d3(K.aL());14 B(c.6p)1M=c.6p[K]}B(U.2P)1M=P.b6(K,1M,c);B(1M&&K.2v(/2E/i)&&1M.1j(\'1s\')){m 1M.68(\'1s\').74(1,4).2D(k(2E){m 2E.5E()}).2c(\' \')}m 1M},bg:k(){m P.7H(c,\'2h\',1b)},61:k(6u,1g){6u+=\'d1\';o el=(1g)?c[1g]:c[6u];6Z(el&&$F(el)!=\'G\')el=el[6u];m $(el)},9W:k(){m c.61(\'2l\')},8I:k(){m c.61(\'3x\')},d0:k(){m c.61(\'3x\',\'88\')},80:k(){m c.61(\'2l\',\'cX\')},cY:k(){m $(c.3n)},8H:k(){m $$(c.aC)},8o:k(el){m!!$A(c.33(\'*\')).1j(el)},5R:k(K){o 25=P.6A[K];B(25)m c[25];o 7V=P.a3[K]||0;B(!U.2P||7V)m c.cZ(K,7V);o 81=c.cN[K];m(81)?81.ax:1n},cM:k(K){o 25=P.6A[K];B(25)c[25]=\'\';14 c.a7(K);m c},cA:k(){m P.7H(c,\'5R\',1b)},7l:k(K,J){o 25=P.6A[K];B(25)c[25]=J;14 c.cB(K,J);m c},6o:k(1Z){m P.72(c,\'7l\',1Z)},5s:k(){c.b3=$A(1b).2c(\'\');m c},cC:k(1K){o 3q=c.4D();B([\'1N\',\'2s\'].1j(3q)){B(U.2P){B(3q==\'1N\')c.b4.87=1K;14 B(3q==\'2s\')c.7l(\'1K\',1K);m c}14{c.bl(c.88);m c.bn(1K)}}c[$77(c.83)?\'83\':\'b1\']=1K;m c},cz:k(){o 3q=c.4D();B([\'1N\',\'2s\'].1j(3q)){B(U.2P){B(3q==\'1N\')m c.b4.87;14 B(3q==\'2s\')m c.5R(\'1K\')}14{m c.b3}}m($4T(c.83,c.b1))},4D:k(){m c.6S.5L()},1l:k(){2F.3V(c.33(\'*\'));m c.5s(\'\')}});P.b6=k(K,1M,G){B($2A(5O(1M)))m 1M;B([\'2N\',\'2y\'].1j(K)){o 1I=(K==\'2y\')?[\'1u\',\'4n\']:[\'1o\',\'3P\'];o 3l=0;1I.1q(k(J){3l+=G.2h(\'2R-\'+J+\'-2y\').3d()+G.2h(\'4w-\'+J).3d()});m G[\'1E\'+K.8R()]-3l+\'4W\'}14 B(K.2v(/2R(.+)bf|34|4w/)){m\'bo\'}m 1M};P.4c={\'2R\':[],\'4w\':[],\'34\':[]};[\'bi\',\'bs\',\'az\',\'a6\'].1q(k(9v){M(o 1N 1a P.4c)P.4c[1N].1k(1N+9v)});P.97=[\'cy\',\'cv\',\'cw\'];P.7H=k(el,23,1O){o 1M={};$1q(1O,k(1t){1M[1t]=el[23](1t)});m 1M};P.72=k(el,23,7G){M(o 1t 1a 7G)el[23](1t,7G[1t]);m el};P.6A=L 3M({\'4R\':\'1A\',\'M\':\'cx\',\'cD\':\'cE\',\'cK\':\'cL\',\'cJ\':\'cI\',\'cF\':\'cG\',\'cH\':\'d4\',\'bI\':\'bN\',\'bB\':\'bJ\',\'J\':\'J\',\'7D\':\'7D\',\'7E\':\'7E\',\'7J\':\'7J\',\'7Q\':\'7Q\'});P.a3={\'4N\':2,\'4s\':2};P.2H={6J:{2C:k(F,fn){B(c.8j)c.8j(F,fn,O);14 c.bD(\'67\'+F,fn);m c},3h:k(F,fn){B(c.a4)c.a4(F,fn,O);14 c.bP(\'67\'+F,fn);m c}}};U.R(P.2H.6J);Q.R(P.2H.6J);P.R(P.2H.6J);o 2F={T:[],52:k(el){B(!el.$1W){2F.T.1k(el);el.$1W={\'21\':1}}m el},3V:k(T){M(o i=0,j=T.V,el;i<j;i++){B(!(el=T[i])||!el.$1W)6l;B(el.$19)el.1h(\'3V\').78();M(o p 1a el.$1W)el.$1W[p]=1n;M(o d 1a P.1L)el[d]=1n;2F.T[2F.T.3k(el)]=1n;el.5i=el.$1W=el=1n}2F.T.2K(1n)},1l:k(){2F.52(U);2F.52(Q);2F.3V(2F.T)}};U.2C(\'9t\',k(){U.2C(\'7v\',2F.1l);B(U.2P)U.2C(\'7v\',bH)});o 2X=L 18({1i:k(I){B(I&&I.$bq)m I;c.$bq=1e;I=I||U.I;c.I=I;c.F=I.F;c.3v=I.3v||I.bF;B(c.3v.84==3)c.3v=c.3v.3n;c.aK=I.bx;c.bG=I.bC;c.bK=I.bz;c.bO=I.by;B([\'8b\',\'5a\'].1j(c.F)){c.bS=(I.9p)?I.9p/bQ:-(I.bE||0)/3}14 B(c.F.1j(\'1t\')){c.6O=I.9K||I.bL;M(o 1w 1a 2X.1O){B(2X.1O[1w]==c.6O){c.1t=1w;1C}}B(c.F==\'9X\'){o 6Q=c.6O-bM;B(6Q>0&&6Q<13)c.1t=\'f\'+6Q}c.1t=c.1t||6i.bA(c.6O).5L()}14 B(c.F.2v(/(6h|3m|bw)/)){c.1Y={\'x\':I.8E||I.9f+Q.2Z.5V,\'y\':I.8w||I.at+Q.2Z.63};c.9B={\'x\':I.8E?I.8E-U.99:I.9f,\'y\':I.8w?I.8w-U.9i:I.at};c.bR=(I.9K==3)||(I.bv==2);22(c.F){Y\'90\':c.2o=I.2o||I.ca;1C;Y\'8Y\':c.2o=I.2o||I.8A}c.aU()}m c},1R:k(){m c.6U().6X()},6U:k(){B(c.I.6U)c.I.6U();14 c.I.db=1e;m c},6X:k(){B(c.I.6X)c.I.6X();14 c.I.eK=O;m c}});2X.6m={2o:k(){B(c.2o&&c.2o.84==3)c.2o=c.2o.3n},aD:k(){5j{2X.6m.2o.1X(c)}5c(e){c.2o=c.3v}}};2X.1L.aU=(U.8r)?2X.6m.aD:2X.6m.2o;2X.1O=L 3M({\'eL\':13,\'6P\':38,\'eJ\':40,\'1u\':37,\'4n\':39,\'eI\':27,\'eF\':32,\'eG\':8,\'eH\':9,\'57\':46});P.2H.2p={1B:k(F,fn){c.$19=c.$19||{};c.$19[F]=c.$19[F]||{\'1O\':[],\'1I\':[]};B(c.$19[F].1O.1j(fn))m c;c.$19[F].1O.1k(fn);o 76=F;o 2w=P.2p[F];B(2w){B(2w.7F)2w.7F.1X(c,fn);B(2w.2D)fn=2w.2D;B(2w.F)76=2w.F}B(!c.8j)fn=fn.3a({\'W\':c,\'I\':1e});c.$19[F].1I.1k(fn);m(P.8V.1j(76))?c.2C(76,fn):c},4C:k(F,fn){B(!c.$19||!c.$19[F])m c;o 1m=c.$19[F].1O.3k(fn);B(1m==-1)m c;o 1t=c.$19[F].1O.74(1m,1)[0];o J=c.$19[F].1I.74(1m,1)[0];o 2w=P.2p[F];B(2w){B(2w.2K)2w.2K.1X(c,fn);B(2w.F)F=2w.F}m(P.8V.1j(F))?c.3h(F,J):c},6j:k(1Z){m P.72(c,\'1B\',1Z)},78:k(F){B(!c.$19)m c;B(!F){M(o 6g 1a c.$19)c.78(6g);c.$19=1n}14 B(c.$19[F]){c.$19[F].1O.1q(k(fn){c.4C(F,fn)},c);c.$19[F]=1n}m c},1h:k(F,1p,2g){B(c.$19&&c.$19[F]){c.$19[F].1O.1q(k(fn){fn.3a({\'W\':c,\'2g\':2g,\'1b\':1p})()},c)}m c},au:k(15,F){B(!15.$19)m c;B(!F){M(o 6g 1a 15.$19)c.au(15,6g)}14 B(15.$19[F]){15.$19[F].1O.1q(k(fn){c.1B(F,fn)},c)}m c}};U.R(P.2H.2p);Q.R(P.2H.2p);P.R(P.2H.2p);P.2p=L 3M({\'8N\':{F:\'90\',2D:k(I){I=L 2X(I);B(I.2o!=c&&!c.8o(I.2o))c.1h(\'8N\',I)}},\'8P\':{F:\'8Y\',2D:k(I){I=L 2X(I);B(I.2o!=c&&!c.8o(I.2o))c.1h(\'8P\',I)}},\'5a\':{F:(U.8r)?\'8b\':\'5a\'}});P.8V=[\'6h\',\'eM\',\'5z\',\'5n\',\'5a\',\'8b\',\'90\',\'8Y\',\'2M\',\'9X\',\'eN\',\'eS\',\'4e\',\'7v\',\'9t\',\'eT\',\'5o\',\'eR\',\'eQ\',\'3F\',\'eO\',\'eP\',\'48\',\'aE\',\'8s\',\'eE\',\'2G\'];7Z.R({3e:k(W,1p){m c.3a({\'W\':W,\'1b\':1p,\'I\':2X})}});26.R({eV:k(3q){m L 26(c.36(k(el){m(P.4D(el)==3q)}))},a8:k(1A,2J){o T=c.36(k(el){m(el.1A&&el.1A.1j(1A,\' \'))});m(2J)?T:L 26(T)},a2:k(4u,2J){o T=c.36(k(el){m(el.4u==4u)});m(2J)?T:L 26(T)},a9:k(1w,82,J,2J){o T=c.36(k(el){o 2i=P.5R(el,1w);B(!2i)m O;B(!82)m 1e;22(82){Y\'=\':m(2i==J);Y\'*=\':m(2i.1j(J));Y\'^=\':m(2i.6K(0,J.V)==J);Y\'$=\':m(2i.6K(2i.V-J.V)==J);Y\'!=\':m(2i!=J);Y\'~=\':m 2i.1j(J,\' \')}m O});m(2J)?T:L 26(T)}});k $E(1S,36){m($(36)||Q).9P(1S)};k $et(1S,36){m($(36)||Q).6Y(1S)};$$.3B={\'5C\':/^(\\w*|\\*)(?:#([\\w-]+)|\\.([\\w-]+))?(?:\\[(\\w+)(?:([!*^$]?=)["\']?([^"\'\\]]*)["\']?)?])?$/,\'4a\':{7L:k(1x,3b,1d,i){o 2r=[3b.eu?\'7N:\':\'\',1d[1]];B(1d[2])2r.1k(\'[@4u="\',1d[2],\'"]\');B(1d[3])2r.1k(\'[1j(7P(" ", @4R, " "), " \',1d[3],\' ")]\');B(1d[4]){B(1d[5]&&1d[6]){22(1d[5]){Y\'*=\':2r.1k(\'[1j(@\',1d[4],\', "\',1d[6],\'")]\');1C;Y\'^=\':2r.1k(\'[es-er(@\',1d[4],\', "\',1d[6],\'")]\');1C;Y\'$=\':2r.1k(\'[eo(@\',1d[4],\', 2z-V(@\',1d[4],\') - \',1d[6].V,\' + 1) = "\',1d[6],\'"]\');1C;Y\'=\':2r.1k(\'[@\',1d[4],\'="\',1d[6],\'"]\');1C;Y\'!=\':2r.1k(\'[@\',1d[4],\'!="\',1d[6],\'"]\')}}14{2r.1k(\'[@\',1d[4],\']\')}}1x.1k(2r.2c(\'\'));m 1x},7O:k(1x,3b,2J){o T=[];o 4a=Q.5r(\'.//\'+1x.2c(\'//\'),3b,$$.3B.ac,ep.eq,1n);M(o i=0,j=4a.ev;i<j;i++)T.1k(4a.ew(i));m(2J)?T:L 26(T.2D($))}},\'9T\':{7L:k(1x,3b,1d,i){B(i==0){B(1d[2]){o el=3b.6W(1d[2]);B(!el||((1d[1]!=\'*\')&&(P.4D(el)!=1d[1])))m O;1x=[el]}14{1x=$A(3b.33(1d[1]))}}14{1x=$$.3B.33(1x,1d[1]);B(1d[2])1x=26.a2(1x,1d[2],1e)}B(1d[3])1x=26.a8(1x,1d[3],1e);B(1d[4])1x=26.a9(1x,1d[4],1d[5],1d[6],1e);m 1x},7O:k(1x,3b,2J){m(2J)?1x:$$.5M(1x)}},ac:k(9Z){m(9Z==\'7N\')?\'9Y://aS.eB.eC/eA/7N\':O},33:k(3b,6S){o 7M=[];M(o i=0,j=3b.V;i<j;i++)7M.R(3b[i].33(6S));m 7M}};$$.3B.23=(U.4a)?\'4a\':\'9T\';P.2H.7R={6N:k(1S,2J){o 1x=[];1S=1S.5T().68(\' \');M(o i=0,j=1S.V;i<j;i++){o 9U=1S[i];o 1d=9U.31($$.3B.5C);B(!1d)1C;1d[1]=1d[1]||\'*\';o 2r=$$.3B[$$.3B.23].7L(1x,c,1d,i);B(!2r)1C;1x=2r}m $$.3B[$$.3B.23].7O(1x,c,2J)},9P:k(1S){m $(c.6N(1S,1e)[0]||O)},6Y:k(1S,2J){o T=[];1S=1S.68(\',\');M(o i=0,j=1S.V;i<j;i++)T=T.7P(c.6N(1S[i],1e));m(2J)?T:$$.5M(T)}};P.R({6W:k(4u){o el=Q.6W(4u);B(!el)m O;M(o 1r=el.3n;1r!=c;1r=1r.3n){B(!1r)m O}m el},ez:k(1A){m c.6N(\'.\'+1A)}});Q.R(P.2H.7R);P.R(P.2H.7R);P.R({44:k(){22(c.4D()){Y\'48\':o 1I=[];$1q(c.C,k(3z){B(3z.7Q)1I.1k($4T(3z.J,3z.1K))});m(c.7J)?1I:1I[0];Y\'ab\':B(!(c.7E&&[\'ex\',\'ey\'].1j(c.F))&&![\'4O\',\'1K\',\'eU\'].1j(c.F))1C;Y\'ad\':m c.J}m O},ae:k(){m $$(c.33(\'ab\'),c.33(\'48\'),c.33(\'ad\'))},5A:k(){o 5f=[];c.ae().1q(k(el){o 1w=el.1w;o J=el.44();B(J===O||!1w||el.7D)m;o 7C=k(4m){5f.1k(1w+\'=\'+7e(4m))};B($F(J)==\'1z\')J.1q(7C);14 7C(J)});m 5f.2c(\'&\')}});P.R({3G:k(x,y){c.5V=x;c.63=y},7g:k(){m{\'2G\':{\'x\':c.5V,\'y\':c.63},\'3l\':{\'x\':c.4b,\'y\':c.3R},\'7h\':{\'x\':c.71,\'y\':c.5P}}},3p:k(2k){2k=2k||[];o el=c,1u=0,1o=0;do{1u+=el.fp||0;1o+=el.fh||0;el=el.fj}6Z(el);2k.1q(k(G){1u-=G.5V||0;1o-=G.63||0});m{\'x\':1u,\'y\':1o}},aQ:k(2k){m c.3p(2k).y},aP:k(2k){m c.3p(2k).x},4E:k(2k){o 1v=c.3p(2k);o N={\'2y\':c.4b,\'2N\':c.3R,\'1u\':1v.x,\'1o\':1v.y};N.4n=N.1u+N.2y;N.3P=N.1o+N.2N;m N}});P.2p.7S={7F:k(fn){B(U.6B){fn.1X(c);m}o 5X=k(){B(U.6B)m;U.6B=1e;U.1H=$55(U.1H);c.1h(\'7S\')}.W(c);B(Q.5m&&U.4x){U.1H=k(){B([\'6B\',\'8p\'].1j(Q.5m))5X()}.4f(50)}14 B(Q.5m&&U.2P){B(!$(\'7I\')){o 4s=(U.5k.ff==\'fi:\')?\'://0\':\'8q:fk(0)\';Q.fg(\'<2s 4u="7I" fd 4s="\'+4s+\'"><\\/2s>\');$(\'7I\').7i=k(){B(c.5m==\'8p\')5X()}}}14{U.2C("4e",5X);Q.2C("fe",5X)}}};U.fm=k(fn){m c.1B(\'7S\',fn)};U.R({8m:k(){B(c.5x)m c.fl;B(c.9a)m Q.4B.9c;m Q.2Z.9c},8n:k(){B(c.5x)m c.fo;B(c.9a)m Q.4B.9d;m Q.2Z.9d},93:k(){B(c.2P)m 1c.1D(Q.2Z.4b,Q.2Z.71);B(c.4x)m Q.4B.71;m Q.2Z.71},92:k(){B(c.2P)m 1c.1D(Q.2Z.3R,Q.2Z.5P);B(c.4x)m Q.4B.5P;m Q.2Z.5P},8u:k(){m c.99||Q.2Z.5V},8v:k(){m c.9i||Q.2Z.63},7g:k(){m{\'3l\':{\'x\':c.8m(),\'y\':c.8n()},\'7h\':{\'x\':c.93(),\'y\':c.92()},\'2G\':{\'x\':c.8u(),\'y\':c.8v()}}},3p:k(){m{\'x\':0,\'y\':0}}});o 1f={};1f.2T=L 18({C:{3X:18.1l,1Q:18.1l,7w:18.1l,2f:k(p){m-(1c.av(1c.7W*p)-1)/2},49:fb,2x:\'4W\',3T:1e,98:50},1i:k(C){c.G=c.G||1n;c.2Y(C);B(c.C.1i)c.C.1i.1X(c)},2n:k(){o 3A=$3A();B(3A<c.3A+c.C.49){c.4p=c.C.2f((3A-c.3A)/c.C.49);c.4q();c.4k()}14{c.1R(1e);c.2j(c.17);c.1h(\'1Q\',c.G,10);c.7z()}},2j:k(17){c.12=17;c.4k();m c},4q:k(){c.12=c.4o(c.15,c.17)},4o:k(15,17){m(17-15)*c.4p+15},1g:k(15,17){B(!c.C.3T)c.1R();14 B(c.1H)m c;c.15=15;c.17=17;c.3F=c.17-c.15;c.3A=$3A();c.1H=c.2n.4f(1c.2q(bd/c.C.98),c);c.1h(\'3X\',c.G);m c},1R:k(29){B(!c.1H)m c;c.1H=$55(c.1H);B(!29)c.1h(\'7w\',c.G);m c},2w:k(15,17){m c.1g(15,17)},f1:k(29){m c.1R(29)}});1f.2T.3i(L 7u,L 2p,L 43);1f.3t={48:k(K,17){B(K.2v(/2E/i))m c.2Q;o F=$F(17);B((F==\'1z\')||(F==\'2z\'&&17.1j(\' \')))m c.73;m c.9j},2V:k(el,K,5b){B(!5b.1k)5b=[5b];o 15=5b[0],17=5b[1];B(!$2A(17)){17=15;15=el.2h(K)}o 1y=c.48(K,17);m{\'15\':1y.2V(15),\'17\':1y.2V(17),\'1y\':1y}}};1f.3t.9j={2V:k(J){m 66(J)},56:k(15,17,2O){m 2O.4o(15,17)},44:k(J,2x,K){B(2x==\'4W\'&&K!=\'21\')J=1c.2q(J);m J+2x}};1f.3t.73={2V:k(J){m J.1k?J:J.68(\' \').2D(k(v){m 66(v)})},56:k(15,17,2O){o 12=[];M(o i=0;i<15.V;i++)12[i]=2O.4o(15[i],17[i]);m 12},44:k(J,2x,K){B(2x==\'4W\'&&K!=\'21\')J=J.2D(1c.2q);m J.2c(2x+\' \')+2x}};1f.3t.2Q={2V:k(J){m J.1k?J:J.5G(1e)},56:k(15,17,2O){o 12=[];M(o i=0;i<15.V;i++)12[i]=1c.2q(2O.4o(15[i],17[i]));m 12},44:k(J){m\'1s(\'+J.2c(\',\')+\')\'}};1f.7T=1f.2T.R({1i:k(el,K,C){c.G=$(el);c.K=K;c.1r(C)},3Z:k(){m c.2j(0)},4q:k(){c.12=c.1y.56(c.15,c.17,c)},2j:k(17){c.1y=1f.3t.48(c.K,17);m c.1r(c.1y.2V(17))},1g:k(15,17){B(c.1H&&c.C.3T)m c;o 2e=1f.3t.2V(c.G,c.K,[15,17]);c.1y=2e.1y;m c.1r(2e.15,2e.17)},4k:k(){c.G.1P(c.K,c.1y.44(c.12,c.C.2x,c.K))}});P.R({f2:k(K,C){m L 1f.7T(c,K,C)}});1f.4c=1f.2T.R({1i:k(el,C){c.G=$(el);c.1r(C)},4q:k(){M(o p 1a c.15)c.12[p]=c.1y[p].56(c.15[p],c.17[p],c)},2j:k(17){o 2e={};c.1y={};M(o p 1a 17){c.1y[p]=1f.3t.48(p,17[p]);2e[p]=c.1y[p].2V(17[p])}m c.1r(2e)},1g:k(N){B(c.1H&&c.C.3T)m c;c.12={};c.1y={};o 15={},17={};M(o p 1a N){o 2e=1f.3t.2V(c.G,p,N[p]);15[p]=2e.15;17[p]=2e.17;c.1y[p]=2e.1y}m c.1r(15,17)},4k:k(){M(o p 1a c.12)c.G.1P(p,c.1y[p].44(c.12[p],c.C.2x,p))}});P.R({3U:k(C){m L 1f.4c(c,C)}});1f.26=1f.2T.R({1i:k(T,C){c.T=$$(T);c.1r(C)},4q:k(){M(o i 1a c.15){o 5Q=c.15[i],47=c.17[i],3u=c.1y[i],5U=c.12[i]={};M(o p 1a 5Q)5U[p]=3u[p].56(5Q[p],47[p],c)}},2j:k(17){o 2e={};c.1y={};M(o i 1a 17){o 47=17[i],3u=c.1y[i]={},9u=2e[i]={};M(o p 1a 47){3u[p]=1f.3t.48(p,47[p]);9u[p]=3u[p].2V(47[p])}}m c.1r(2e)},1g:k(N){B(c.1H&&c.C.3T)m c;c.12={};c.1y={};o 15={},17={};M(o i 1a N){o 85=N[i],5Q=15[i]={},47=17[i]={},3u=c.1y[i]={};M(o p 1a 85){o 2e=1f.3t.2V(c.T[i],p,85[p]);5Q[p]=2e.15;47[p]=2e.17;3u[p]=2e.1y}}m c.1r(15,17)},4k:k(){M(o i 1a c.12){o 5U=c.12[i],3u=c.1y[i];M(o p 1a 5U)c.T[i].1P(p,3u[p].44(5U[p],c.C.2x,p))}}});1f.ah=1f.2T.R({C:{2k:[],1E:{\'x\':0,\'y\':0},9r:1e},1i:k(G,C){c.12=[];c.G=$(G);c.1G={\'1R\':c.1R.W(c,O)};c.1r(C);B(c.C.9r){c.1B(\'3X\',k(){Q.1B(\'5a\',c.1G.1R)}.W(c));c.1B(\'1Q\',k(){Q.4C(\'5a\',c.1G.1R)}.W(c))}},4q:k(){M(o i=0;i<2;i++)c.12[i]=c.4o(c.15[i],c.17[i])},3G:k(x,y){B(c.1H&&c.C.3T)m c;o el=c.G.7g();o 1I={\'x\':x,\'y\':y};M(o z 1a el.3l){o 1D=el.7h[z]-el.3l[z];B($2A(1I[z]))1I[z]=($F(1I[z])==\'4M\')?1I[z].1F(0,1D):1D;14 1I[z]=el.2G[z];1I[z]+=c.C.1E[z]}m c.1g([el.2G.x,el.2G.y],[1I.x,1I.y])},f0:k(){m c.3G(O,0)},eZ:k(){m c.3G(O,\'bu\')},eW:k(){m c.3G(0,O)},eX:k(){m c.3G(\'bu\',O)},8A:k(el){o 1r=c.G.3p(c.C.2k);o 3v=$(el).3p(c.C.2k);m c.3G(3v.x-1r.x,3v.y-1r.y)},4k:k(){c.G.3G(c.12[0],c.12[1])}});1f.eY=1f.2T.R({C:{2b:\'8Q\'},1i:k(el,C){c.G=$(el);c.3c=L P(\'4Z\',{\'8J\':$R(c.G.bg(\'34\'),{\'9y\':\'4O\'})}).6v(c.G).b2(c.G);c.G.1P(\'34\',0);c.2Y(C);c.12=[];c.1r(c.C);c.4X=1e;c.1B(\'1Q\',k(){c.4X=(c.12[0]===0)});B(U.5x)c.1B(\'1Q\',k(){B(c.4X)c.G.2K().28(c.3c)})},4q:k(){M(o i=0;i<2;i++)c.12[i]=c.4o(c.15[i],c.17[i])},8Q:k(){c.34=\'34-1o\';c.64=\'2N\';c.1E=c.G.3R},8M:k(){c.34=\'34-1u\';c.64=\'2y\';c.1E=c.G.4b},ba:k(2b){c[2b||c.C.2b]();m c.1g([c.G.2h(c.34).3d(),c.3c.2h(c.64).3d()],[0,c.1E])},bb:k(2b){c[2b||c.C.2b]();m c.1g([c.G.2h(c.34).3d(),c.3c.2h(c.64).3d()],[-c.1E,0])},3Z:k(2b){c[2b||c.C.2b]();c.4X=O;m c.2j([-c.1E,0])},4d:k(2b){c[2b||c.C.2b]();c.4X=1e;m c.2j([0,c.1E])},f3:k(2b){B(c.3c.3R==0||c.3c.4b==0)m c.ba(2b);m c.bb(2b)},4k:k(){c.G.1P(c.34,c.12[0]+c.C.2x);c.3c.1P(c.64,c.12[1]+c.C.2x)}});1f.7U=k(2f,2U){2U=2U||[];B($F(2U)!=\'1z\')2U=[2U];m $R(2f,{f4:k(1m){m 2f(1m,2U)},f9:k(1m){m 1-2f(1-1m,2U)},fa:k(1m){m(1m<=0.5)?2f(2*1m,2U)/2:(2-2f(2*(1-1m),2U))/2}})};1f.3o=L 3M({fc:k(p){m p}});1f.3o.R=k(7B){M(o 2f 1a 7B){1f.3o[2f]=L 1f.7U(7B[2f]);1f.3o.7X(2f)}};1f.3o.7X=k(2f){[\'f8\',\'f7\',\'f5\'].1q(k(89){1f.3o[2f.5L()+89]=1f.3o[2f][\'f6\'+89]})};1f.3o.R({eD:k(p,x){m 1c.3w(p,x[0]||6)},em:k(p){m 1c.3w(2,8*(p-1))},dw:k(p){m 1-1c.bj(1c.dx(p))},dy:k(p){m 1-1c.bj((1-p)*1c.7W/2)},dv:k(p,x){x=x[0]||1.du;m 1c.3w(p,2)*((x+1)*p-x)},dr:k(p){o J;M(o a=0,b=1;1;a+=b,b/=2){B(p>=(7-4*a)/11){J=-1c.3w((11-6*a-11*p)/4,2)+b*b;1C}}m J},ds:k(p,x){m 1c.3w(2,10*--p)*1c.av(20*p*1c.7W*(x[0]||1)/3)}});[\'dt\',\'dz\',\'dA\',\'dG\'].1q(k(2f,i){1f.3o[2f]=L 1f.7U(k(p){m 1c.3w(p,[i+2])});1f.3o.7X(2f)});o 4g={};4g.2T=L 18({C:{3J:O,2x:\'4W\',3X:18.1l,al:18.1l,1Q:18.1l,as:18.1l,8S:18.1l,1F:O,3E:{x:\'1u\',y:\'1o\'},4P:O,6M:6},1i:k(el,C){c.2Y(C);c.G=$(el);c.3J=$(c.C.3J)||c.G;c.3m={\'12\':{},\'1m\':{}};c.J={\'1g\':{},\'12\':{}};c.1G={\'1g\':c.1g.3e(c),\'4i\':c.4i.3e(c),\'3D\':c.3D.3e(c),\'1R\':c.1R.W(c)};c.6V();B(c.C.1i)c.C.1i.1X(c)},6V:k(){c.3J.1B(\'5n\',c.1G.1g);m c},9F:k(){c.3J.4C(\'5n\',c.1G.1g);m c},1g:k(I){c.1h(\'al\',c.G);c.3m.1g=I.1Y;o 1F=c.C.1F;c.1F={\'x\':[],\'y\':[]};M(o z 1a c.C.3E){B(!c.C.3E[z])6l;c.J.12[z]=c.G.2h(c.C.3E[z]).3d();c.3m.1m[z]=I.1Y[z]-c.J.12[z];B(1F&&1F[z]){M(o i=0;i<2;i++){B($2A(1F[z][i]))c.1F[z][i]=($F(1F[z][i])==\'k\')?1F[z][i]():1F[z][i]}}}B($F(c.C.4P)==\'4M\')c.C.4P={\'x\':c.C.4P,\'y\':c.C.4P};Q.2C(\'2M\',c.1G.4i);Q.2C(\'5z\',c.1G.1R);c.1h(\'3X\',c.G);I.1R()},4i:k(I){o ao=1c.2q(1c.dH(1c.3w(I.1Y.x-c.3m.1g.x,2)+1c.3w(I.1Y.y-c.3m.1g.y,2)));B(ao>c.C.6M){Q.3h(\'2M\',c.1G.4i);Q.2C(\'2M\',c.1G.3D);c.3D(I);c.1h(\'as\',c.G)}I.1R()},3D:k(I){c.69=O;c.3m.12=I.1Y;M(o z 1a c.C.3E){B(!c.C.3E[z])6l;c.J.12[z]=c.3m.12[z]-c.3m.1m[z];B(c.1F[z]){B($2A(c.1F[z][1])&&(c.J.12[z]>c.1F[z][1])){c.J.12[z]=c.1F[z][1];c.69=1e}14 B($2A(c.1F[z][0])&&(c.J.12[z]<c.1F[z][0])){c.J.12[z]=c.1F[z][0];c.69=1e}}B(c.C.4P[z])c.J.12[z]-=(c.J.12[z]%c.C.4P[z]);c.G.1P(c.C.3E[z],c.J.12[z]+c.C.2x)}c.1h(\'8S\',c.G);I.1R()},1R:k(){Q.3h(\'2M\',c.1G.4i);Q.3h(\'2M\',c.1G.3D);Q.3h(\'5z\',c.1G.1R);c.1h(\'1Q\',c.G)}});4g.2T.3i(L 2p,L 43);P.R({dF:k(C){m L 4g.2T(c,$2a({3E:{x:\'2y\',y:\'2N\'}},C))}});4g.aM=4g.2T.R({C:{6c:[],2d:O,2k:[]},1i:k(el,C){c.2Y(C);c.G=$(el);c.6c=$$(c.C.6c);c.2d=$(c.C.2d);c.1v={\'G\':c.G.2h(\'1v\'),\'2d\':O};B(c.2d)c.1v.2d=c.2d.2h(\'1v\');B(![\'70\',\'3Y\',\'4V\'].1j(c.1v.G))c.1v.G=\'3Y\';o 1o=c.G.2h(\'1o\').3d();o 1u=c.G.2h(\'1u\').3d();B(c.1v.G==\'3Y\'&&![\'70\',\'3Y\',\'4V\'].1j(c.1v.2d)){1o=$2A(1o)?1o:c.G.aQ(c.C.2k);1u=$2A(1u)?1u:c.G.aP(c.C.2k)}14{1o=$2A(1o)?1o:0;1u=$2A(1u)?1u:0}c.G.4A({\'1o\':1o,\'1u\':1u,\'1v\':c.1v.G});c.1r(c.G)},1g:k(I){c.3f=1n;B(c.2d){o 4r=c.2d.4E();o el=c.G.4E();B(c.1v.G==\'3Y\'&&![\'70\',\'3Y\',\'4V\'].1j(c.1v.2d)){c.C.1F={\'x\':[4r.1u,4r.4n-el.2y],\'y\':[4r.1o,4r.3P-el.2N]}}14{c.C.1F={\'y\':[0,4r.2N-el.2N],\'x\':[0,4r.2y-el.2y]}}}c.1r(I)},3D:k(I){c.1r(I);o 3f=c.69?O:c.6c.36(c.aO,c).80();B(c.3f!=3f){B(c.3f)c.3f.1h(\'dE\',[c.G,c]);c.3f=3f?3f.1h(\'dB\',[c.G,c]):1n}m c},aO:k(el){el=el.4E(c.C.2k);o 12=c.3m.12;m(12.x>el.1u&&12.x<el.4n&&12.y<el.3P&&12.y>el.1o)},1R:k(){B(c.3f&&!c.69)c.3f.1h(\'dC\',[c.G,c]);14 c.G.1h(\'dD\',c);c.1r();m c}});P.R({dq:k(C){m L 4g.aM(c,C)}});o 6n=L 18({C:{23:\'59\',be:1e,9g:18.1l,5h:18.1l,6w:18.1l,aG:1e,5J:\'dp-8\',aZ:O,4J:{}},7q:k(){c.2u=(U.6C)?L 6C():(U.2P?L 9o(\'en.dc\'):O);m c},1i:k(C){c.7q().2Y(C);c.C.5D=c.C.5D||c.5D;c.4J={};B(c.C.aG&&c.C.23==\'59\'){o 5J=(c.C.5J)?\'; dd=\'+c.C.5J:\'\';c.5l(\'9R-F\',\'9J/x-aS-da-d9\'+5J)}B(c.C.1i)c.C.1i.1X(c)},9s:k(){B(c.2u.5m!=4||!c.4Q)m;c.4Q=O;o 4I=0;5j{4I=c.2u.4I}5c(e){};B(c.C.5D.1X(c,4I))c.5h();14 c.6w();c.2u.7i=18.1l},5D:k(4I){m((4I>=d6)&&(4I<d7))},5h:k(){c.3L={\'1K\':c.2u.d8,\'5t\':c.2u.de};c.1h(\'5h\',[c.3L.1K,c.3L.5t]);c.7z()},6w:k(){c.1h(\'6w\',c.2u)},5l:k(1w,J){c.4J[1w]=J;m c},6a:k(2L,1T){B(c.C.aZ)c.95();14 B(c.4Q)m c;c.4Q=1e;B(1T&&c.C.23==\'5q\'){2L=2L+(2L.1j(\'?\')?\'&\':\'?\')+1T;1T=1n}c.2u.4X(c.C.23.7A(),2L,c.C.be);c.2u.7i=c.9s.W(c);B((c.C.23==\'59\')&&c.2u.d5)c.5l(\'df\',\'dl\');$R(c.4J,c.C.4J);M(o F 1a c.4J)5j{c.2u.dm(F,c.4J[F])}5c(e){};c.1h(\'9g\');c.2u.6a($4T(1T,1n));m c},95:k(){B(!c.4Q)m c;c.4Q=O;c.2u.8s();c.2u.7i=18.1l;c.7q();c.1h(\'7w\');m c}});6n.3i(L 7u,L 2p,L 43);o 9b=6n.R({C:{1T:1n,7x:1n,1Q:18.1l,6R:O,7p:O},1i:k(2L,C){c.1B(\'5h\',c.1Q);c.2Y(C);c.C.1T=c.C.1T||c.C.dn;B(![\'59\',\'5q\'].1j(c.C.23)){c.5H=\'5H=\'+c.C.23;c.C.23=\'59\'}c.1r();c.5l(\'X-dk-dj\',\'6C\');c.5l(\'dg\',\'1K/8q, 1K/dh, 9J/5t, 1K/5t, */*\');c.2L=2L},1Q:k(){B(c.C.7x)$(c.C.7x).1l().5s(c.3L.1K);B(c.C.6R||c.C.7p)c.6R();c.1h(\'1Q\',[c.3L.1K,c.3L.5t],20)},9h:k(1T){1T=1T||c.C.1T;22($F(1T)){Y\'G\':1T=$(1T).5A();1C;Y\'2I\':1T=8X.5A(1T)}B(c.5H)1T=(1T)?[c.5H,1T].2c(\'&\'):c.5H;m c.6a(c.2L,1T)},6R:k(){o 2s,3y;B(c.C.7p||(/(di|dI)2s/).2v(c.af(\'9R-F\')))3y=c.3L.1K;14{3y=[];o 5C=/<2s[^>]*>([\\s\\S]*?)<\\/2s>/dJ;6Z((2s=5C.e9(c.3L.1K)))3y.1k(2s[1]);3y=3y.2c(\'\\n\')}B(3y)(U.9O)?U.9O(3y):U.9M(3y,0)},af:k(1w){5j{m c.2u.ea(1w)}5c(e){};m 1n}});8X.5A=k(1Z){o 5f=[];M(o K 1a 1Z)5f.1k(7e(K)+\'=\'+7e(1Z[K]));m 5f.2c(\'&\')};P.R({6a:k(C){m L 9b(c.5R(\'eb\'),$2a({1T:c.5A()},C,{23:\'59\'})).9h()}});o 3H=L 3M({C:{7o:O,7k:O,49:O,5g:O},2j:k(1t,J,C){C=$2a(c.C,C);J=7e(J);B(C.7o)J+=\'; 7o=\'+C.7o;B(C.7k)J+=\'; 7k=\'+C.7k;B(C.49){o 6k=L 96();6k.e8(6k.9w()+C.49*24*60*60*bd);J+=\'; e7=\'+6k.e4()}B(C.5g)J+=\'; 5g\';Q.4K=1t+\'=\'+J;m $R(C,{\'1t\':1t,\'J\':J})},5q:k(1t){o J=Q.4K.31(\'(?:^|;)\\\\s*\'+1t.b5()+\'=([^;]*)\');m J?e5(J[1]):O},2K:k(4K,C){B($F(4K)==\'2I\')c.2j(4K.1t,\'\',$2a(4K,{49:-1}));14 c.2j(4K,\'\',$2a(C,{49:-1}))}});o 3I={4l:k(N){22($F(N)){Y\'2z\':m\'"\'+N.3g(/(["\\\\])/g,\'\\\\$1\')+\'"\';Y\'1z\':m\'[\'+N.2D(3I.4l).2c(\',\')+\']\';Y\'2I\':o 2z=[];M(o K 1a N)2z.1k(3I.4l(K)+\':\'+3I.4l(N[K]));m\'{\'+2z.2c(\',\')+\'}\';Y\'4M\':B(e6(N))1C;Y O:m\'1n\'}m 6i(N)},5r:k(4H,5g){m(($F(4H)!=\'2z\')||(5g&&!4H.2v(/^("(\\\\.|[^"\\\\\\n\\r])*?"|[,:{}\\[\\]0-9.\\-+ec-u \\n\\r\\t])+?$/)))?1n:ed(\'(\'+4H+\')\')}};3I.ej=6n.R({1i:k(2L,C){c.2L=2L;c.1B(\'5h\',c.1Q);c.1r(C);c.5l(\'X-ek\',\'ei\')},6a:k(N){m c.1r(c.2L,\'eh=\'+3I.4l(N))},1Q:k(){c.1h(\'1Q\',[3I.5r(c.3L.1K,c.C.5g)])}});o ar=L 3M({8q:k(1Z,1J){1J=$2a({\'5N\':18.1l},1J);o 2s=L P(\'2s\',{\'4s\':1Z}).6j({\'4e\':1J.5N,\'ee\':k(){B(c.5m==\'8p\')c.1h(\'4e\')}});57 1J.5N;m 2s.6o(1J).28(Q.6e)},1y:k(1Z,1J){m L P(\'4y\',$2a({\'a1\':\'ef\',\'eg\':\'e3\',\'F\':\'1K/1y\',\'4N\':1Z},1J)).28(Q.6e)},4S:k(1Z,1J){1J=$2a({\'5N\':18.1l,\'e2\':18.1l,\'dP\':18.1l},1J);o 4S=L dQ();4S.4s=1Z;o G=L P(\'8x\',{\'4s\':1Z});[\'4e\',\'8s\',\'aE\'].1q(k(F){o I=1J[\'67\'+F];57 1J[\'67\'+F];G.1B(F,k(){c.4C(F,1b.8t);I.1X(c)})});B(4S.2y&&4S.2N)G.1h(\'4e\',G,1);m G.6o(1J)},6s:k(58,C){C=$2a({1Q:18.1l,an:18.1l},C);B(!58.1k)58=[58];o 6s=[];o 6q=0;58.1q(k(1Z){o 8x=L ar.4S(1Z,{\'5N\':k(){C.an.1X(c,6q);6q++;B(6q==58.V)C.1Q()}});6s.1k(8x)});m L 26(6s)}});o 3O=L 18({V:0,1i:k(2I){c.N=2I||{};c.5K()},5q:k(1t){m(c.6t(1t))?c.N[1t]:1n},6t:k(1t){m(1t 1a c.N)},2j:k(1t,J){B(!c.6t(1t))c.V++;c.N[1t]=J;m c},5K:k(){c.V=0;M(o p 1a c.N)c.V++;m c},2K:k(1t){B(c.6t(1t)){57 c.N[1t];c.V--}m c},1q:k(fn,W){$1q(c.N,fn,W)},R:k(N){$R(c.N,N);m c.5K()},2a:k(){c.N=$2a.4j(1n,[c.N].R(1b));m c.5K()},1l:k(){c.N={};c.V=0;m c},1O:k(){o 1O=[];M(o K 1a c.N)1O.1k(K);m 1O},1I:k(){o 1I=[];M(o K 1a c.N)1I.1k(c.N[K]);m 1I}});k $H(N){m L 3O(N)};3O.3H=3O.R({1i:k(1w,C){c.1w=1w;c.C=$R({\'aw\':1e},C||{});c.4e()},aX:k(){B(c.V==0){3H.2K(c.1w,c.C);m 1e}o 4H=3I.4l(c.N);B(4H.V>dR)m O;3H.2j(c.1w,4H,c.C);m 1e},4e:k(){c.N=3I.5r(3H.5q(c.1w),1e)||{};c.5K()}});3O.3H.2H={};[\'R\',\'2j\',\'2a\',\'1l\',\'2K\'].1q(k(23){3O.3H.2H[23]=k(){3O.1L[23].4j(c,1b);B(c.C.aw)c.aX();m c}});3O.3H.3i(3O.3H.2H);o 2Q=L 18({1i:k(2E,F){F=F||(2E.1k?\'1s\':\'3C\');o 1s,2m;22(F){Y\'1s\':1s=2E;2m=1s.8h();1C;Y\'2m\':1s=2E.b9();2m=2E;1C;62:1s=2E.5G(1e);2m=1s.8h()}1s.2m=2m;1s.3C=1s.5E();m $R(1s,2Q.1L)},54:k(){o 5I=$A(1b);o 7d=($F(5I[5I.V-1])==\'4M\')?5I.dO():50;o 1s=c.8e();5I.1q(k(2E){2E=L 2Q(2E);M(o i=0;i<3;i++)1s[i]=1c.2q((1s[i]/ 35 * (35 - 7d)) + (2E[i] /35*7d))});m L 2Q(1s,\'1s\')},dN:k(){m L 2Q(c.2D(k(J){m 51-J}))},dK:k(J){m L 2Q([J,c.2m[1],c.2m[2]],\'2m\')},dL:k(7a){m L 2Q([c.2m[0],7a,c.2m[2]],\'2m\')},dM:k(7a){m L 2Q([c.2m[0],c.2m[1],7a],\'2m\')}});k $dS(r,g,b){m L 2Q([r,g,b],\'1s\')};k $dT(h,s,b){m L 2Q([h,s,b],\'2m\')};2t.R({8h:k(){o 5W=c[0],65=c[1],75=c[2];o 2W,6y,8k;o 1D=1c.1D(5W,65,75),3s=1c.3s(5W,65,75);o 4p=1D-3s;8k=1D/51;6y=(1D!=0)?4p/1D:0;B(6y==0){2W=0}14{o 8l=(1D-5W)/4p;o 8W=(1D-65)/4p;o br=(1D-75)/4p;B(5W==1D)2W=br-8W;14 B(65==1D)2W=2+8l-br;14 2W=4+8W-8l;2W/=6;B(2W<0)2W++}m[1c.2q(2W*bc),1c.2q(6y*35),1c.2q(8k*35)]},b9:k(){o br=1c.2q(c[2]/35*51);B(c[1]==0){m[br,br,br]}14{o 2W=c[0]%bc;o f=2W%60;o p=1c.2q((c[2]*(35-c[1]))/dZ*51);o q=1c.2q((c[2]*(b7-c[1]*f))/bm*51);o t=1c.2q((c[2]*(b7-c[1]*(60-f)))/bm*51);22(1c.9q(2W/60)){Y 0:m[br,t,p];Y 1:m[q,br,p];Y 2:m[p,br,t];Y 3:m[p,q,br];Y 4:m[t,p,br];Y 5:m[br,p,q]}}m O}});o 9x=L 18({C:{6b:20,8O:1,6F:k(x,y){c.G.3G(x,y)}},1i:k(G,C){c.2Y(C);c.G=$(G);c.8y=([U,Q].1j(G))?$(Q.4B):c.G},1g:k(){c.8z=c.9A.3e(c);c.8y.2C(\'2M\',c.8z)},1R:k(){c.8y.3h(\'2M\',c.8z);c.1H=$55(c.1H)},9A:k(I){c.1Y=(c.G==U)?I.9B:I.1Y;B(!c.1H)c.1H=c.2G.4f(50,c)},2G:k(){o el=c.G.7g();o 1m=c.G.3p();o 3F={\'x\':0,\'y\':0};M(o z 1a c.1Y){B(c.1Y[z]<(c.C.6b+1m[z])&&el.2G[z]!=0)3F[z]=(c.1Y[z]-c.C.6b-1m[z])*c.C.8O;14 B(c.1Y[z]+c.C.6b>(el.3l[z]+1m[z])&&el.2G[z]+el.3l[z]!=el.7h[z])3F[z]=(c.1Y[z]-el.3l[z]+c.C.6b-1m[z])*c.C.8O}B(3F.y||3F.x)c.1h(\'6F\',[el.2G.x+3F.x,el.2G.y+3F.y])}});9x.3i(L 2p,L 43);o 8B=L 18({C:{6F:18.1l,1Q:18.1l,8L:k(1m){c.4h.1P(c.p,1m)},2b:\'8M\',6E:35,1E:0},1i:k(el,4h,C){c.G=$(el);c.4h=$(4h);c.2Y(C);c.8K=-1;c.8D=-1;c.2n=-1;c.G.1B(\'5n\',c.9D.3e(c));o 6H,1E;22(c.C.2b){Y\'8M\':c.z=\'x\';c.p=\'1u\';6H={\'x\':\'1u\',\'y\':O};1E=\'4b\';1C;Y\'8Q\':c.z=\'y\';c.p=\'1o\';6H={\'x\':O,\'y\':\'1o\'};1E=\'3R\'}c.1D=c.G[1E]-c.4h[1E]+(c.C.1E*2);c.a5=c.4h[1E]/2;c.ai=c.G[\'5q\'+c.p.8R()].W(c.G);c.4h.1P(\'1v\',\'70\').1P(c.p,-c.C.1E);o 8U={};8U[c.z]=[-c.C.1E,c.1D-c.C.1E];c.3D=L 4g.2T(c.4h,{1F:8U,3E:6H,6M:0,3X:k(){c.6L()}.W(c),8S:k(){c.6L()}.W(c),1Q:k(){c.6L();c.29()}.W(c)});B(c.C.1i)c.C.1i.1X(c)},2j:k(2n){c.2n=2n.1F(0,c.C.6E);c.6G();c.29();c.1h(\'8L\',c.a0(c.2n));m c},9D:k(I){o 1v=I.1Y[c.z]-c.ai()-c.a5;1v=1v.1F(-c.C.1E,c.1D-c.C.1E);c.2n=c.8C(1v);c.6G();c.29();c.1h(\'8L\',1v)},6L:k(){c.2n=c.8C(c.3D.J.12[c.z]);c.6G()},6G:k(){B(c.8K!=c.2n){c.8K=c.2n;c.1h(\'6F\',c.2n)}},29:k(){B(c.8D!==c.2n){c.8D=c.2n;c.1h(\'1Q\',c.2n+\'\')}},8C:k(1v){m 1c.2q((1v+c.C.1E)/c.1D*c.C.6E)},a0:k(2n){m c.1D*2n/c.C.6E}});8B.3i(L 2p);8B.3i(L 43);o e0=1f.ah.R({1i:k(C){c.1r(U,C);c.5w=(c.C.5w)?$$(c.C.5w):$$(Q.5w);o 5k=U.5k.4N.31(/^[^#]*/)[0]+\'#\';c.5w.1q(k(4y){B(4y.4N.3k(5k)!=0)m;o 3K=4y.4N.6K(5k.V);B(3K&&$(3K))c.9L(4y,3K)},c);B(!U.5x)c.1B(\'1Q\',k(){U.5k.e1=c.3K})},9L:k(4y,3K){4y.1B(\'6h\',k(I){c.3K=3K;c.8A(3K);I.1R()}.3e(c))}});o 9S=L 18({C:{4L:O,3X:18.1l,1Q:18.1l,2S:1e,6M:3,9H:k(G,2S){2S.1P(\'21\',0.7);G.1P(\'21\',0.7)},9e:k(G,2S){G.1P(\'21\',1);2S.2K();c.3V.2K()}},1i:k(5p,C){c.2Y(C);c.5p=$(5p);c.T=c.5p.8H();c.4L=(c.C.4L)?$$(c.C.4L):c.T;c.1G={\'1g\':[],\'5y\':c.5y.3e(c)};M(o i=0,l=c.4L.V;i<l;i++){c.1G.1g[i]=c.1g.3e(c,c.T[i])}c.6V();B(c.C.1i)c.C.1i.1X(c);c.1G.5o=c.5o.3e(c);c.1G.29=c.29.W(c)},6V:k(){c.4L.1q(k(3J,i){3J.1B(\'5n\',c.1G.1g[i])},c)},9F:k(){c.4L.1q(k(3J,i){3J.4C(\'5n\',c.1G.1g[i])},c)},1g:k(I,el){c.4G=el;c.8F=c.5p.4E();B(c.C.2S){o 1v=el.3p();c.1E=I.1Y.y-1v.y;c.3V=L P(\'4Z\').28(Q.4B);c.2S=el.9G().28(c.3V).4A({\'1v\':\'3Y\',\'1u\':1v.x,\'1o\':I.1Y.y-c.1E});Q.2C(\'2M\',c.1G.5y);c.1h(\'9H\',[el,c.2S])}Q.2C(\'2M\',c.1G.5o);Q.2C(\'5z\',c.1G.29);c.1h(\'3X\',el);I.1R()},5y:k(I){o J=I.1Y.y-c.1E;J=J.1F(c.8F.1o,c.8F.3P-c.2S.3R);c.2S.1P(\'1o\',J);I.1R()},5o:k(I){o 12=I.1Y.y;c.2l=c.2l||12;o 6P=((c.2l-12)>0);o 6T=c.4G.9W();o 3x=c.4G.8I();B(6T&&6P&&12<6T.4E().3P)c.4G.7Y(6T);B(3x&&!6P&&12>3x.4E().1o)c.4G.6v(3x);c.2l=12},dY:k(9Q){m c.5p.8H().2D(9Q||k(el){m c.T.3k(el)},c)},29:k(){c.2l=1n;Q.3h(\'2M\',c.1G.5o);Q.3h(\'5z\',c.1G.29);B(c.C.2S){Q.3h(\'2M\',c.1G.5y);c.1h(\'9e\',[c.4G,c.2S])}c.1h(\'1Q\',c.4G)}});9S.3i(L 2p,L 43);o aI=L 18({C:{aT:k(3W){3W.1P(\'4z\',\'8G\')},aW:k(3W){3W.1P(\'4z\',\'4O\')},8T:30,bp:35,bt:35,1A:\'dX\',5F:{\'x\':16,\'y\':16},4V:O},1i:k(T,C){c.2Y(C);c.45=L P(\'4Z\',{\'4R\':c.C.1A+\'-3W\',\'8J\':{\'1v\':\'3Y\',\'1o\':\'0\',\'1u\':\'0\',\'4z\':\'4O\'}}).28(Q.4B);c.3c=L P(\'4Z\').28(c.45);$$(T).1q(c.9I,c);B(c.C.1i)c.C.1i.1X(c)},9I:k(el){el.$1W.42=(el.4N&&el.4D()==\'a\')?el.4N.3g(\'9Y://\',\'\'):(el.a1||O);B(el.53){o 6z=el.53.68(\'::\');B(6z.V>1){el.$1W.42=6z[0].5T();el.$1W.5u=6z[1].5T()}14{el.$1W.5u=el.53}el.a7(\'53\')}14{el.$1W.5u=O}B(el.$1W.42&&el.$1W.42.V>c.C.8T)el.$1W.42=el.$1W.42.6K(0,c.C.8T-1)+"&dU;";el.1B(\'8N\',k(I){c.1g(el);B(!c.C.4V)c.8f(I);14 c.1v(el)}.W(c));B(!c.C.4V)el.1B(\'2M\',c.8f.3e(c));o 29=c.29.W(c);el.1B(\'8P\',29);el.1B(\'3V\',29)},1g:k(el){c.3c.1l();B(el.$1W.42){c.53=L P(\'b0\').28(L P(\'4Z\',{\'4R\':c.C.1A+\'-53\'}).28(c.3c)).5s(el.$1W.42)}B(el.$1W.5u){c.1K=L P(\'b0\').28(L P(\'4Z\',{\'4R\':c.C.1A+\'-1K\'}).28(c.3c)).5s(el.$1W.5u)}$55(c.1H);c.1H=c.4d.2g(c.C.bp,c)},29:k(I){$55(c.1H);c.1H=c.3Z.2g(c.C.bt,c)},1v:k(G){o 1m=G.3p();c.45.4A({\'1u\':1m.x+c.C.5F.x,\'1o\':1m.y+c.C.5F.y})},8f:k(I){o am={\'x\':U.8m(),\'y\':U.8n()};o 2G={\'x\':U.8u(),\'y\':U.8v()};o 3W={\'x\':c.45.4b,\'y\':c.45.3R};o 1V={\'x\':\'1u\',\'y\':\'1o\'};M(o z 1a 1V){o 1m=I.1Y[z]+c.C.5F[z];B((1m+3W[z]-2G[z])>am[z])1m=I.1Y[z]-c.C.5F[z]-3W[z];c.45.1P(1V[z],1m)}},4d:k(){B(c.C.aq)c.1H=c.3Z.2g(c.C.aq,c);c.1h(\'aT\',[c.45])},3Z:k(){c.1h(\'aW\',[c.45])}});aI.3i(L 2p,L 43);o dV=L 18({1i:k(){c.6D=$A(1b);c.19={};c.4U={}},1B:k(F,fn){c.4U[F]=c.4U[F]||{};c.19[F]=c.19[F]||[];B(c.19[F].1j(fn))m O;14 c.19[F].1k(fn);c.6D.1q(k(5v,i){5v.1B(F,c.4i.W(c,[F,5v,i]))},c);m c},4i:k(F,5v,i){c.4U[F][i]=1e;o 4F=c.6D.4F(k(2i,j){m c.4U[F][j]||O},c);B(!4F)m;c.4U[F]={};c.19[F].1q(k(I){I.1X(c,c.6D,5v)},c)}});o 7t=1f.26.R({C:{7K:18.1l,aa:18.1l,3Q:0,4d:O,2N:1e,2y:O,21:1e,7f:O,7n:O,3T:O,6I:O},1i:k(){o C,2B,T,2d;$1q(1b,k(4t,i){22($F(4t)){Y\'2I\':C=4t;1C;Y\'G\':2d=$(4t);1C;62:o 2r=$$(4t);B(!2B)2B=2r;14 T=2r}});c.2B=2B||[];c.T=T||[];c.2d=$(2d);c.2Y(C);c.2l=-1;B(c.C.6I)c.C.3T=1e;B($2A(c.C.4d)){c.C.3Q=O;c.2l=c.C.4d}B(c.C.1g){c.C.3Q=O;c.C.4d=O}c.3U={};B(c.C.21)c.3U.21=\'b8\';B(c.C.2y)c.3U.2y=c.C.7n?\'aj\':\'4b\';B(c.C.2N)c.3U.2N=c.C.7f?\'9n\':\'5P\';M(o i=0,l=c.2B.V;i<l;i++)c.aR(c.2B[i],c.T[i]);c.T.1q(k(el,i){B(c.C.4d===i){c.1h(\'7K\',[c.2B[i],el])}14{M(o 2O 1a c.3U)el.1P(2O,0)}},c);c.1r(c.T);B($2A(c.C.3Q))c.3Q(c.C.3Q)},aR:k(3j,G,1m){3j=$(3j);G=$(G);o 2v=c.2B.1j(3j);o 3S=c.2B.V;c.2B.5S(3j);c.T.5S(G);B(3S&&(!2v||1m)){1m=$4T(1m,3S-1);3j.7Y(c.2B[1m]);G.6v(3j)}14 B(c.2d&&!2v){3j.28(c.2d);G.28(c.2d)}o aA=c.2B.3k(3j);3j.1B(\'6h\',c.3Q.W(c,aA));B(c.C.2N)G.4A({\'4w-1o\':0,\'2R-1o\':\'7j\',\'4w-3P\':0,\'2R-3P\':\'7j\'});B(c.C.2y)G.4A({\'4w-1u\':0,\'2R-1u\':\'7j\',\'4w-4n\':0,\'2R-4n\':\'7j\'});G.b8=1;B(c.C.7n)G.aj=c.C.7n;B(c.C.7f)G.9n=c.C.7f;G.1P(\'9y\',\'4O\');B(!2v){M(o 2O 1a c.3U)G.1P(2O,0)}m c},3Q:k(25){25=($F(25)==\'G\')?c.T.3k(25):25;B((c.1H&&c.C.3T)||(25===c.2l&&!c.C.6I))m c;c.2l=25;o N={};c.T.1q(k(el,i){N[i]={};o 3Z=(i!=25)||(c.C.6I&&(el.3R>0));c.1h(3Z?\'aa\':\'7K\',[c.2B[i],el]);M(o 2O 1a c.3U)N[i][2O]=3Z?0:el[c.3U[2O]]},c);m c.1g(N)},dW:k(25){m c.3Q(25)}});1f.7t=7t;',62,956,'||||||||||||this||||||||function||return||var|||||||||||||if|options|||type|element||event|value|property|new|for|obj|false|Element|document|extend||elements|window|length|bind||case||||now||else|from||to|Class|events|in|arguments|Math|param|true|Fx|start|fireEvent|initialize|contains|push|empty|pos|null|top|args|each|parent|rgb|key|left|position|name|items|css|array|className|addEvent|break|max|offset|limit|bound|timer|values|properties|text|prototype|result|style|keys|setStyle|onComplete|stop|selector|data|props|prop|tmp|call|page|source||opacity|switch|method||index|Elements||inject|end|merge|mode|join|container|parsed|transition|delay|getStyle|current|set|overflown|previous|hsb|step|relatedTarget|Events|round|temp|script|Array|transport|test|custom|unit|width|string|chk|togglers|addListener|map|color|Garbage|scroll|Methods|object|nocash|remove|url|mousemove|height|fx|ie|Color|border|ghost|Base|params|parse|hue|Event|setOptions|documentElement||match||getElementsByTagName|margin|100|filter||||create|context|wrapper|toInt|bindWithEvent|overed|replace|removeListener|implement|toggler|indexOf|size|mouse|parentNode|Transitions|getPosition|tag|item|min|CSS|iCss|target|pow|next|scripts|option|time|shared|hex|drag|modifiers|change|scrollTo|Cookie|Json|handle|anchor|response|Abstract|returns|Hash|bottom|display|offsetHeight|len|wait|effects|trash|tip|onStart|absolute|hide||iterable|myTitle|Options|getValue|toolTip||iTo|select|duration|xpath|offsetWidth|Styles|show|load|periodical|Drag|knob|check|apply|increase|toString|val|right|compute|delta|setNow|cont|src|argument|id|chains|padding|webkit|link|visibility|setStyles|body|removeEvent|getTag|getCoordinates|every|active|str|status|headers|cookie|handles|number|href|hidden|grid|running|class|image|pick|checker|fixed|px|open|results|div||255|collect|title|mix|clear|getNow|delete|sources|post|mousewheel|fromTo|catch|bit|native|queryString|secure|onSuccess|htmlElement|try|location|setHeader|readyState|mousedown|move|list|get|evaluate|setHTML|xml|myText|instance|links|webkit419|moveGhost|mouseup|toQueryString|HTMLElement|regexp|isSuccess|rgbToHex|offsets|hexToRgb|_method|colors|encoding|setLength|toLowerCase|unique|onload|parseInt|scrollHeight|iFrom|getProperty|include|trim|iNow|scrollLeft|red|domReady|precision|klass||walk|default|scrollTop|layout|green|parseFloat|on|split|out|send|area|droppables|mp|head|attempt|evType|click|String|addEvents|date|continue|fix|XHR|setProperties|currentStyle|counter|included|images|hasKey|brother|injectAfter|onFailure|generic|saturation|dual|Properties|loaded|XMLHttpRequest|instances|steps|onChange|checkStep|mod|alwaysHide|Listeners|substr|draggedKnob|snap|getElements|code|up|fKey|evalScripts|tagName|prev|stopPropagation|attach|getElementById|preventDefault|getElementsBySelector|while|relative|scrollWidth|setMany|Multi|splice|blue|realType|defined|removeEvents|regex|percent|forEach|typeof|alpha|encodeURIComponent|fixedHeight|getSize|scrollSize|onreadystatechange|none|path|setProperty|proto|fixedWidth|domain|evalResponse|setTransport|clean|hasClass|Accordion|Chain|unload|onCancel|update|RegExp|callChain|toUpperCase|transitions|qs|disabled|checked|add|pairs|getMany|ie_ready|multiple|onActive|getParam|found|xhtml|getItems|concat|selected|Dom|domready|Style|Transition|flag|PI|compat|injectBefore|Function|getLast|node|operator|innerText|nodeType|iProps|appendChild|cssText|firstChild|easeType|camelCase|DOMMouseScroll|random|charAt|copy|locate|newArray|rgbToHsb|merged|addEventListener|brightness|rr|getWidth|getHeight|hasChild|complete|javascript|gecko|abort|callee|getScrollLeft|getScrollTop|pageY|img|mousemover|coord|toElement|Slider|toStep|previousEnd|pageX|coordinates|visible|getChildren|getNext|styles|previousChange|onTick|horizontal|mouseenter|velocity|mouseleave|vertical|capitalize|onDrag|maxTitleChars|lim|NativeEvents|gr|Object|mouseout|first|mouseover|insertBefore|getScrollHeight|getScrollWidth|after|cancel|Date|borderShort|fps|pageXOffset|opera|Ajax|clientWidth|clientHeight|onDragComplete|clientX|onRequest|request|pageYOffset|Single|before|Merge|pp|fullHeight|ActiveXObject|wheelDelta|floor|wheelStops|onStateChange|beforeunload|iParsed|direction|getTime|Scroller|overflow|addClass|getCoords|client|constructor|clickedElement|removeClass|detach|clone|onDragStart|build|application|which|useLink|setTimeout|undefined|execScript|getElement|converter|Content|Sortables|normal|sel|contents|getPrevious|keydown|http|prefix|toPosition|rel|filterById|PropertiesIFlag|removeEventListener|half|Left|removeAttribute|filterByClass|filterByAttribute|onBackground|input|resolver|textarea|getFormElements|getHeader|ie6|Scroll|getPos|fullWidth|zoom|onBeforeStart|win|onProgress|distance||timeout|Asset|onSnap|clientY|cloneEvents|cos|autoSave|nodeValue|where|Bottom|idx|elementsProperty|childNodes|relatedTargetGecko|error|defaultView|urlEncoded|toFloat|Tips|createElement|shift|hyphenate|Move|Number|checkAgainst|getLeft|getTop|addSection|www|onShow|fixRelatedTarget|interval|onHide|save|picked|autoCancel|span|textContent|adopt|innerHTML|styleSheet|escapeRegExp|fixStyle|6000|fullOpacity|hsbToRgb|slideIn|slideOut|360|1000|async|Width|getStyles|slice|Top|sin|setOpacity|removeChild|600000|appendText|0px|showDelay|extended||Right|hideDelay|full|button|menu|shiftKey|metaKey|altKey|fromCharCode|frameborder|ctrlKey|attachEvent|detail|srcElement|control|CollectGarbage|readonly|frameBorder|alt|keyCode|111|readOnly|meta|detachEvent|120|rightClick|wheel|pass|some|associate|getRandom|clearChain|chain|DOMElement|execCommand|BackgroundImageCache|transparent|setInterval|embed|boolean|injectInside|times|bindAsEventListener|err|fromElement|iframe|khtml|whitespace|collection|clearTimeout|textnode|nodeName|MooTools|version|clearInterval|Window|taintEnabled|webkit420|getBoxObjectFor|navigator|all|Document|ie7|injectTop|cloneNode|borderStyle|borderColor|htmlFor|borderWidth|getText|getProperties|setAttribute|setText|colspan|colSpan|tabindex|tabIndex|maxlength|accessKey|accesskey|rowspan|rowSpan|removeProperty|attributes|float|styleFloat|cssFloat|toggleClass|createTextNode|replaceWith|replaceChild|zIndex|hasLayout|lastChild|getParent|getAttribute|getFirst|Sibling|getComputedStyle|getPropertyValue|maxLength|overrideMimeType|200|300|responseText|urlencoded|form|cancelBubble|XMLHTTP|charset|responseXML|Connection|Accept|html|ecma|With|Requested|close|setRequestHeader|postBody||utf|makeDraggable|Bounce|Elastic|Quad|618|Back|Circ|acos|Sine|Cubic|Quart|over|drop|emptydrop|leave|makeResizable|Quint|sqrt|java|gi|setHue|setSaturation|setBrightness|invert|pop|onerror|Image|4096|RGB|HSB|hellip|Group|showThisHideOpen|tool|serialize|10000|SmoothScroll|hash|onabort|screen|toGMTString|decodeURIComponent|isFinite|expires|setTime|exec|getResponseHeader|action|Eaeflnr|eval|readystatechange|stylesheet|media|json|JSON|Remote|Request||Expo|Microsoft|substring|XPathResult|UNORDERED_NODE_SNAPSHOT_TYPE|with|starts|ES|namespaceURI|snapshotLength|snapshotItem|checkbox|radio|getElementsByClassName|1999|w3|org|Pow|contextmenu|space|backspace|tab|esc|down|returnValue|enter|dblclick|keypress|submit|reset|blur|focus|keyup|resize|password|filterByTag|toLeft|toRight|Slide|toBottom|toTop|clearTimer|effect|toggle|easeIn|InOut|ease|Out|In|easeOut|easeInOut|500|linear|defer|DOMContentLoaded|protocol|write|offsetTop|https|offsetParent|void|innerWidth|onDomReady||innerHeight|offsetLeft'.split('|'),0,{}))
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/javascripts/fonctions_wikini.js
New file
0,0 → 1,6
function fKeyDown() {
if (event.keyCode == 9) {
event.returnValue= false;
document.selection.createRange().text = String.fromCharCode(9);
}
}
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/squelettes/default.tpl.html
New file
0,0 → 1,48
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
 
<head>
<title>{WIKINI_TITRE}</title>
{WIKINI_META_ROBOTS}
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<meta name="keywords" content="{WIKINI_MOTS_CLES}" />
<meta name="description" content="{WIKINI_DESCRIPTION}" />
{WIKINI_STYLES_CSS}
{WIKINI_JAVASCRIPTS}
</head>
 
<body {WIKINI_BODY}>
<div style="display: none;"><a href="{WIKINI_RESETSTYLE}" accesskey="7"></a></div>
<div id="wrap" {WIKINI_DOUBLE_CLIC}>
<div id="top">
<h1><a href="http://kaleidos-coop.org" title="Retour &agrave; la page d'accueil">Kaleidos-coop.org</a></h1>
<h2 id="titre_site">{WIKINI_TITRE_SITE}</h2>
<div id="menu">
<ul id="kwicks">
<li id="kwick_red"><a id="accueil" href="http://kaleidos-coop.org" class="kwick">Accueil</a></li>
<li id="kwick_orange"><a href="http://kaleidos-coop.org/blog" class="kwick">Veille</a></li>
<li id="kwick_yellow"><a href="http://kaleidos-coop.org/service" class="kwick">Services</a></li>
<li id="kwick_green"><a href="http://kaleidos-coop.org/demo" class="kwick">D&eacute;mos</a></li>
<li id="kwick_blue"><a href="http://kaleidos-coop.org/wakka.php?wiki=ContacT" class="kwick">Contact</a></li>
</ul>
<span class="clr"><!-- spanner --></span>
</div>
</div>
<div id="content">
<div id="left">
<div id="nav">
{{include page="PageMenu"}}
</div>
</div>
<div id="right">
{WIKINI_PAGE}
</div>
<div id="clear">&nbsp;</div>
</div>
<div id="footer">
<p>Copyright 2007 Kaleidos-coop.org (<a href="http://kaleidos-coop.org/intranet" title="acc&egrave;s &agrave; l'intranet">acc&egrave;s &agrave; l'intranet</a>). Site utilisant <a href="http://wikini.net">Wikini {WIKINI_VERSION}</a> <br />
Inspir&eacute; du design open-source de <a href="http://loadfoo.org/" rel="external">LoadFoO</a>. Valide <a href="http://jigsaw.w3.org/css-validator/check/referer" rel="external">CSS</a> &amp; <a href="http://validator.w3.org/check?uri=referer" rel="external">XHTML</a></p>
</div>
</div>
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/styles/jaune.css
New file
0,0 → 1,277
/* ======================================================== */
/* Created by Devit Schizoper */
/* Created HomePages http://LoadFoo.starzonewebhost.com */
/* Created Day 01.12.2006 */
/* ======================================================== */
 
 
body {
margin: 0px;
background: url(../images/top_bg.gif);
background-repeat: repeat-x;
font-family: Verdana, Arial, sans-serif;
font-size: .6em;
}
 
p {
line-height: 17px;
margin: 11px 0 10px 0;
padding: 0px;
}
 
h2 {
color: #9f9f9f;
margin:0px;
padding:0px;
font-size: 15px;
}
 
ul {
font-size: 10px;
margin:0;
padding:0;
list-style-image: url(../images/bullet.gif);
}
 
a {
color: yellow;
text-decoration: none;
}
 
a:hover {
text-decoration: underline;
}
 
blockquote{
background: #F7FDE3;
color: #606060;
padding: 10px;
}
 
hr {
color: yellow;
background-color: yellow;
height: 2px;
border: 0;
width:100%;
}
 
input, textarea {
margin:1px;
border:1px solid yellow;
}
 
/**** Main Container ***/
 
 
#wrap {
position: relative;
margin-left: auto;
margin-right: auto;
width: 930px;
}
 
 
/**** Top ***/
 
 
#top {
width: 100%;
height: 88px;
color: #fff;
background: #000 url(../images/top_bg.gif);
/*overflow:hidden;*/
}
 
#top h1 {
color: #FFF;
letter-spacing: 3px;
font-size: 2.4em;
font-weight: normal;
position: absolute;
margin: 0px;
top:13px;
display:block;
float:left;
border-left:5px solid yellow;
padding-left: 10px;
 
}
#top h2 {
position: absolute;
margin: 0px;
top:50px;
display:block;
clear:both;
float:left;
padding: 0;
color:yellow;
}
 
#top h1 a {
color: white;
text-decoration: none;
}
 
#top h1 a:hover {
color: #93B300;
}
 
 
/**** Main Menu ***/
 
#menu {
margin:0; padding:0;
display: block;
float:right;
height: 88px;
}
 
#menu ul {
margin: 0;
list-style: none;
}
 
#menu li {
display: block;
float: left;
white-space: nowrap;
}
 
#menu li a {
display: block;
padding:50px 10px 10px 3px;
/*padding: 55px 20px 12px 20px;*/
text-decoration: none;
color: #fff;
font-weight: bold;
}
 
* html #menu a {width:1%;}
 
#menu li a:hover {
background: url(../images/bg_menu.gif);
}
 
#menu li a.current {
letter-spacing: 1px;
color: gray;
background: url(../images/bg_menu.gif);
}
 
#menu li a.current:hover {
color: #fff;
}
 
#kwicks {
position: relative;
}
 
#kwicks .kwick {
float: left;
display: block;
width: 70px;
height: 21px;
}
 
#kwick_red {background:red url(../images/accueil.gif) no-repeat top left;}
#kwick_orange {background:orange url(../images/veille.gif) no-repeat top left;}
#kwick_yellow {background:yellow url(../images/services.gif) no-repeat top left;}
#kwick_green {background:green url(../images/demos.gif) no-repeat top left;}
#kwick_blue {background:blue url(../images/contact.gif) no-repeat top left;}
 
 
/**** Content Container ***/
 
 
#content {
width: 100%;
margin-top:15px;
}
 
#content h2 {
margin: 0;
padding: 10px 0 10px 0;
}
 
 
/**** Content ***/
 
 
#right ul {
padding: 15px 0 15px 35px;
margin:0;
}
 
#right li {
margin-bottom:5px;
}
 
#right {
display: block;
width: 710px;
margin-left: 230px;
}
 
 
/**** Sidebar ***/
 
 
#left {
display:block;
width: 200px;
position: absolute;
left:0;
margin: 0;
padding:5px 5px 20px 5px;
background-color: #F6F6F6;
}
.commentsheader {display:none;}
.hr_clear {display:none;}
 
#nav ul {list-style:none; margin:0; width:200px; float:right;}
#nav li {padding:0; margin:0; list-style-type:none; list-style:none; background-image:none; }
#nav a {
padding:0; margin:0;
display: block;
height: 2.0em;
padding: 0.3em 0.3em 0.3em 0.8em;
background-color: #F6F6F6;
font-weight: bold;
text-decoration: none;
}
#nav br {display:none;}
#nav a:hover {
color: #1a1a1a;
border-left:5px solid yellow;
background-color: #fff;
font-weight: bold;
}
 
/**** Clear Div ***/
 
 
#clear {
display: block;
clear: both;
width: 100%;
height:1px;
overflow:hidden;
}
 
 
/**** Footer ***/
 
 
#footer {
margin: 20px auto 0 auto;
text-align: center;
border-top: dotted 1px gray;
padding: 10px 0 20px 0;
width: 70%;
}
 
#footer p {
margin: 0px;
padding: 0;
}
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/styles/default.css
New file
0,0 → 1,277
/* ======================================================== */
/* Created by Devit Schizoper */
/* Created HomePages http://LoadFoo.starzonewebhost.com */
/* Created Day 01.12.2006 */
/* ======================================================== */
 
 
body {
margin: 0px;
background: url(../images/top_bg.gif);
background-repeat: repeat-x;
font-family: Verdana, Arial, sans-serif;
font-size: .6em;
}
 
p {
line-height: 17px;
margin: 11px 0 10px 0;
padding: 0px;
}
 
h2 {
color: #9f9f9f;
margin:0px;
padding:0px;
font-size: 15px;
}
 
ul {
font-size: 10px;
margin:0;
padding:0;
list-style-image: url(../images/bullet.gif);
}
 
a {
color: red;
text-decoration: none;
}
 
a:hover {
text-decoration: underline;
}
 
blockquote{
background: #F7FDE3;
color: #606060;
padding: 10px;
}
 
hr {
color: red;
background-color: red;
height: 2px;
border: 0;
width:100%;
}
 
input, textarea {
margin:1px;
border:1px solid red;
}
 
/**** Main Container ***/
 
 
#wrap {
position: relative;
margin-left: auto;
margin-right: auto;
width: 930px;
}
 
 
/**** Top ***/
 
 
#top {
width: 100%;
height: 88px;
color: #fff;
background: #000 url(../images/top_bg.gif);
/*overflow:hidden;*/
}
 
#top h1 {
color: #FFF;
letter-spacing: 3px;
font-size: 2.4em;
font-weight: normal;
position: absolute;
margin: 0px;
top:13px;
display:block;
float:left;
border-left:5px solid red;
padding-left: 10px;
 
}
#top h2 {
position: absolute;
margin: 0px;
top:50px;
display:block;
clear:both;
float:left;
padding: 0;
color:red;
}
 
#top h1 a {
color: white;
text-decoration: none;
}
 
#top h1 a:hover {
color: #93B300;
}
 
 
/**** Main Menu ***/
 
#menu {
margin:0; padding:0;
display: block;
float:right;
height: 88px;
}
 
#menu ul {
margin: 0;
list-style: none;
}
 
#menu li {
display: block;
float: left;
white-space: nowrap;
}
 
#menu li a {
display: block;
padding:50px 10px 10px 3px;
/*padding: 55px 20px 12px 20px;*/
text-decoration: none;
color: #fff;
font-weight: bold;
}
 
* html #menu a {width:1%;}
 
#menu li a:hover {
background: url(../images/bg_menu.gif);
}
 
#menu li a.current {
letter-spacing: 1px;
color: gray;
background: url(../images/bg_menu.gif);
}
 
#menu li a.current:hover {
color: #fff;
}
 
#kwicks {
position: relative;
}
 
#kwicks .kwick {
float: left;
display: block;
width: 70px;
height: 21px;
}
 
#kwick_red {background:red url(../images/accueil.gif) no-repeat top left;}
#kwick_orange {background:orange url(../images/veille.gif) no-repeat top left;}
#kwick_yellow {background:yellow url(../images/services.gif) no-repeat top left;}
#kwick_green {background:green url(../images/demos.gif) no-repeat top left;}
#kwick_blue {background:blue url(../images/contact.gif) no-repeat top left;}
 
 
/**** Content Container ***/
 
 
#content {
width: 100%;
margin-top:15px;
}
 
#content h2 {
margin: 0;
padding: 10px 0 10px 0;
}
 
 
/**** Content ***/
 
 
#right ul {
padding: 15px 0 15px 35px;
margin:0;
}
 
#right li {
margin-bottom:5px;
}
 
#right {
display: block;
width: 710px;
margin-left: 230px;
}
 
 
/**** Sidebar ***/
 
 
#left {
display:block;
width: 200px;
position: absolute;
left:0;
margin: 0;
padding:5px 5px 20px 5px;
background-color: #F6F6F6;
}
.commentsheader {display:none;}
.hr_clear {display:none;}
 
#nav ul {list-style:none; margin:0; width:200px; float:right;}
#nav li {padding:0; margin:0; list-style-type:none; list-style:none; background-image:none; }
#nav a {
padding:0; margin:0;
display: block;
height: 2.0em;
padding: 0.3em 0.3em 0.3em 0.8em;
background-color: #F6F6F6;
font-weight: bold;
text-decoration: none;
}
#nav br {display:none;}
#nav a:hover {
color: #1a1a1a;
border-left:5px solid red;
background-color: #fff;
font-weight: bold;
}
 
/**** Clear Div ***/
 
 
#clear {
display: block;
clear: both;
width: 100%;
height:1px;
overflow:hidden;
}
 
 
/**** Footer ***/
 
 
#footer {
margin: 20px auto 0 auto;
text-align: center;
border-top: dotted 1px gray;
padding: 10px 0 20px 0;
width: 70%;
}
 
#footer p {
margin: 0px;
padding: 0;
}
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/styles/bleu.css
New file
0,0 → 1,277
/* ======================================================== */
/* Created by Devit Schizoper */
/* Created HomePages http://LoadFoo.starzonewebhost.com */
/* Created Day 01.12.2006 */
/* ======================================================== */
 
 
body {
margin: 0px;
background: url(../images/top_bg.gif);
background-repeat: repeat-x;
font-family: Verdana, Arial, sans-serif;
font-size: .6em;
}
 
p {
line-height: 17px;
margin: 11px 0 10px 0;
padding: 0px;
}
 
h2 {
color: #9f9f9f;
margin:0px;
padding:0px;
font-size: 15px;
}
 
ul {
font-size: 10px;
margin:0;
padding:0;
list-style-image: url(../images/bullet.gif);
}
 
a {
color: blue;
text-decoration: none;
}
 
a:hover {
text-decoration: underline;
}
 
blockquote{
background: #F7FDE3;
color: #606060;
padding: 10px;
}
 
hr {
color: blue;
background-color: blue;
height: 2px;
border: 0;
width:100%;
}
 
input, textarea {
margin:1px;
border:1px solid blue;
}
 
/**** Main Container ***/
 
 
#wrap {
position: relative;
margin-left: auto;
margin-right: auto;
width: 930px;
}
 
 
/**** Top ***/
 
 
#top {
width: 100%;
height: 88px;
color: #fff;
background: #000 url(../images/top_bg.gif);
/*overflow:hidden;*/
}
 
#top h1 {
color: #FFF;
letter-spacing: 3px;
font-size: 2.4em;
font-weight: normal;
position: absolute;
margin: 0px;
top:13px;
display:block;
float:left;
border-left:5px solid blue;
padding-left: 10px;
 
}
#top h2 {
position: absolute;
margin: 0px;
top:50px;
display:block;
clear:both;
float:left;
padding: 0;
color:blue;
}
 
#top h1 a {
color: white;
text-decoration: none;
}
 
#top h1 a:hover {
color: #93B300;
}
 
 
/**** Main Menu ***/
 
#menu {
margin:0; padding:0;
display: block;
float:right;
height: 88px;
}
 
#menu ul {
margin: 0;
list-style: none;
}
 
#menu li {
display: block;
float: left;
white-space: nowrap;
}
 
#menu li a {
display: block;
padding:50px 10px 10px 3px;
/*padding: 55px 20px 12px 20px;*/
text-decoration: none;
color: #fff;
font-weight: bold;
}
 
* html #menu a {width:1%;}
 
#menu li a:hover {
background: url(../images/bg_menu.gif);
}
 
#menu li a.current {
letter-spacing: 1px;
color: gray;
background: url(../images/bg_menu.gif);
}
 
#menu li a.current:hover {
color: #fff;
}
 
#kwicks {
position: relative;
}
 
#kwicks .kwick {
float: left;
display: block;
width: 70px;
height: 21px;
}
 
#kwick_red {background:red url(../images/accueil.gif) no-repeat top left;}
#kwick_orange {background:orange url(../images/veille.gif) no-repeat top left;}
#kwick_yellow {background:yellow url(../images/services.gif) no-repeat top left;}
#kwick_green {background:green url(../images/demos.gif) no-repeat top left;}
#kwick_blue {background:blue url(../images/contact.gif) no-repeat top left;}
 
 
/**** Content Container ***/
 
 
#content {
width: 100%;
margin-top:15px;
}
 
#content h2 {
margin: 0;
padding: 10px 0 10px 0;
}
 
 
/**** Content ***/
 
 
#right ul {
padding: 15px 0 15px 35px;
margin:0;
}
 
#right li {
margin-bottom:5px;
}
 
#right {
display: block;
width: 710px;
margin-left: 230px;
}
 
 
/**** Sidebar ***/
 
 
#left {
display:block;
width: 200px;
position: absolute;
left:0;
margin: 0;
padding:5px 5px 20px 5px;
background-color: #F6F6F6;
}
.commentsheader {display:none;}
.hr_clear {display:none;}
 
#nav ul {list-style:none; margin:0; width:200px; float:right;}
#nav li {padding:0; margin:0; list-style-type:none; list-style:none; background-image:none; }
#nav a {
padding:0; margin:0;
display: block;
height: 2.0em;
padding: 0.3em 0.3em 0.3em 0.8em;
background-color: #F6F6F6;
font-weight: bold;
text-decoration: none;
}
#nav br {display:none;}
#nav a:hover {
color: #1a1a1a;
border-left:5px solid blue;
background-color: #fff;
font-weight: bold;
}
 
/**** Clear Div ***/
 
 
#clear {
display: block;
clear: both;
width: 100%;
height:1px;
overflow:hidden;
}
 
 
/**** Footer ***/
 
 
#footer {
margin: 20px auto 0 auto;
text-align: center;
border-top: dotted 1px gray;
padding: 10px 0 20px 0;
width: 70%;
}
 
#footer p {
margin: 0px;
padding: 0;
}
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/styles/orange.css
New file
0,0 → 1,277
/* ======================================================== */
/* Created by Devit Schizoper */
/* Created HomePages http://LoadFoo.starzonewebhost.com */
/* Created Day 01.12.2006 */
/* ======================================================== */
 
 
body {
margin: 0px;
background: url(../images/top_bg.gif);
background-repeat: repeat-x;
font-family: Verdana, Arial, sans-serif;
font-size: .6em;
}
 
p {
line-height: 17px;
margin: 11px 0 10px 0;
padding: 0px;
}
 
h2 {
color: #9f9f9f;
margin:0px;
padding:0px;
font-size: 15px;
}
 
ul {
font-size: 10px;
margin:0;
padding:0;
list-style-image: url(../images/bullet.gif);
}
 
a {
color: orange;
text-decoration: none;
}
 
a:hover {
text-decoration: underline;
}
 
blockquote{
background: #F7FDE3;
color: #606060;
padding: 10px;
}
 
hr {
color: orange;
background-color: orange;
height: 2px;
border: 0;
width:100%;
}
 
input, textarea {
margin:1px;
border:1px solid orange;
}
 
/**** Main Container ***/
 
 
#wrap {
position: relative;
margin-left: auto;
margin-right: auto;
width: 930px;
}
 
 
/**** Top ***/
 
 
#top {
width: 100%;
height: 88px;
color: #fff;
background: #000 url(../images/top_bg.gif);
/*overflow:hidden;*/
}
 
#top h1 {
color: #FFF;
letter-spacing: 3px;
font-size: 2.4em;
font-weight: normal;
position: absolute;
margin: 0px;
top:13px;
display:block;
float:left;
border-left:5px solid orange;
padding-left: 10px;
 
}
#top h2 {
position: absolute;
margin: 0px;
top:50px;
display:block;
clear:both;
float:left;
padding: 0;
color:orange;
}
 
#top h1 a {
color: white;
text-decoration: none;
}
 
#top h1 a:hover {
color: #93B300;
}
 
 
/**** Main Menu ***/
 
#menu {
margin:0; padding:0;
display: block;
float:right;
height: 88px;
}
 
#menu ul {
margin: 0;
list-style: none;
}
 
#menu li {
display: block;
float: left;
white-space: nowrap;
}
 
#menu li a {
display: block;
padding:50px 10px 10px 3px;
/*padding: 55px 20px 12px 20px;*/
text-decoration: none;
color: #fff;
font-weight: bold;
}
 
* html #menu a {width:1%;}
 
#menu li a:hover {
background: url(../images/bg_menu.gif);
}
 
#menu li a.current {
letter-spacing: 1px;
color: gray;
background: url(../images/bg_menu.gif);
}
 
#menu li a.current:hover {
color: #fff;
}
 
#kwicks {
position: relative;
}
 
#kwicks .kwick {
float: left;
display: block;
width: 70px;
height: 21px;
}
 
#kwick_red {background:red url(../images/accueil.gif) no-repeat top left;}
#kwick_orange {background:orange url(../images/veille.gif) no-repeat top left;}
#kwick_yellow {background:yellow url(../images/services.gif) no-repeat top left;}
#kwick_green {background:green url(../images/demos.gif) no-repeat top left;}
#kwick_blue {background:blue url(../images/contact.gif) no-repeat top left;}
 
 
/**** Content Container ***/
 
 
#content {
width: 100%;
margin-top:15px;
}
 
#content h2 {
margin: 0;
padding: 10px 0 10px 0;
}
 
 
/**** Content ***/
 
 
#right ul {
padding: 15px 0 15px 35px;
margin:0;
}
 
#right li {
margin-bottom:5px;
}
 
#right {
display: block;
width: 710px;
margin-left: 230px;
}
 
 
/**** Sidebar ***/
 
 
#left {
display:block;
width: 200px;
position: absolute;
left:0;
margin: 0;
padding:5px 5px 20px 5px;
background-color: #F6F6F6;
}
.commentsheader {display:none;}
.hr_clear {display:none;}
 
#nav ul {list-style:none; margin:0; width:200px; float:right;}
#nav li {padding:0; margin:0; list-style-type:none; list-style:none; background-image:none; }
#nav a {
padding:0; margin:0;
display: block;
height: 2.0em;
padding: 0.3em 0.3em 0.3em 0.8em;
background-color: #F6F6F6;
font-weight: bold;
text-decoration: none;
}
#nav br {display:none;}
#nav a:hover {
color: #1a1a1a;
border-left:5px solid orange;
background-color: #fff;
font-weight: bold;
}
 
/**** Clear Div ***/
 
 
#clear {
display: block;
clear: both;
width: 100%;
height:1px;
overflow:hidden;
}
 
 
/**** Footer ***/
 
 
#footer {
margin: 20px auto 0 auto;
text-align: center;
border-top: dotted 1px gray;
padding: 10px 0 20px 0;
width: 70%;
}
 
#footer p {
margin: 0px;
padding: 0;
}
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/styles/vert.css
New file
0,0 → 1,277
/* ======================================================== */
/* Created by Devit Schizoper */
/* Created HomePages http://LoadFoo.starzonewebhost.com */
/* Created Day 01.12.2006 */
/* ======================================================== */
 
 
body {
margin: 0px;
background: url(../images/top_bg.gif);
background-repeat: repeat-x;
font-family: Verdana, Arial, sans-serif;
font-size: .6em;
}
 
p {
line-height: 17px;
margin: 11px 0 10px 0;
padding: 0px;
}
 
h2 {
color: #9f9f9f;
margin:0px;
padding:0px;
font-size: 15px;
}
 
ul {
font-size: 10px;
margin:0;
padding:0;
list-style-image: url(../images/bullet.gif);
}
 
a {
color: green;
text-decoration: none;
}
 
a:hover {
text-decoration: underline;
}
 
blockquote{
background: #F7FDE3;
color: #606060;
padding: 10px;
}
 
hr {
color: green;
background-color: green;
height: 2px;
border: 0;
width:100%;
}
 
input, textarea {
margin:1px;
border:1px solid green;
}
 
/**** Main Container ***/
 
 
#wrap {
position: relative;
margin-left: auto;
margin-right: auto;
width: 930px;
}
 
 
/**** Top ***/
 
 
#top {
width: 100%;
height: 88px;
color: #fff;
background: #000 url(../images/top_bg.gif);
/*overflow:hidden;*/
}
 
#top h1 {
color: #FFF;
letter-spacing: 3px;
font-size: 2.4em;
font-weight: normal;
position: absolute;
margin: 0px;
top:13px;
display:block;
float:left;
border-left:5px solid green;
padding-left: 10px;
 
}
#top h2 {
position: absolute;
margin: 0px;
top:50px;
display:block;
clear:both;
float:left;
padding: 0;
color:green;
}
 
#top h1 a {
color: white;
text-decoration: none;
}
 
#top h1 a:hover {
color: #93B300;
}
 
 
/**** Main Menu ***/
 
#menu {
margin:0; padding:0;
display: block;
float:right;
height: 88px;
}
 
#menu ul {
margin: 0;
list-style: none;
}
 
#menu li {
display: block;
float: left;
white-space: nowrap;
}
 
#menu li a {
display: block;
padding:50px 10px 10px 3px;
/*padding: 55px 20px 12px 20px;*/
text-decoration: none;
color: #fff;
font-weight: bold;
}
 
* html #menu a {width:1%;}
 
#menu li a:hover {
background: url(../images/bg_menu.gif);
}
 
#menu li a.current {
letter-spacing: 1px;
color: gray;
background: url(../images/bg_menu.gif);
}
 
#menu li a.current:hover {
color: #fff;
}
 
#kwicks {
position: relative;
}
 
#kwicks .kwick {
float: left;
display: block;
width: 70px;
height: 21px;
}
 
#kwick_red {background:red url(../images/accueil.gif) no-repeat top left;}
#kwick_orange {background:orange url(../images/veille.gif) no-repeat top left;}
#kwick_yellow {background:yellow url(../images/services.gif) no-repeat top left;}
#kwick_green {background:green url(../images/demos.gif) no-repeat top left;}
#kwick_blue {background:blue url(../images/contact.gif) no-repeat top left;}
 
 
/**** Content Container ***/
 
 
#content {
width: 100%;
margin-top:15px;
}
 
#content h2 {
margin: 0;
padding: 10px 0 10px 0;
}
 
 
/**** Content ***/
 
 
#right ul {
padding: 15px 0 15px 35px;
margin:0;
}
 
#right li {
margin-bottom:5px;
}
 
#right {
display: block;
width: 710px;
margin-left: 230px;
}
 
 
/**** Sidebar ***/
 
 
#left {
display:block;
width: 200px;
position: absolute;
left:0;
margin: 0;
padding:5px 5px 20px 5px;
background-color: #F6F6F6;
}
.commentsheader {display:none;}
.hr_clear {display:none;}
 
#nav ul {list-style:none; margin:0; width:200px; float:right;}
#nav li {padding:0; margin:0; list-style-type:none; list-style:none; background-image:none; }
#nav a {
padding:0; margin:0;
display: block;
height: 2.0em;
padding: 0.3em 0.3em 0.3em 0.8em;
background-color: #F6F6F6;
font-weight: bold;
text-decoration: none;
}
#nav br {display:none;}
#nav a:hover {
color: #1a1a1a;
border-left:5px solid green;
background-color: #fff;
font-weight: bold;
}
 
/**** Clear Div ***/
 
 
#clear {
display: block;
clear: both;
width: 100%;
height:1px;
overflow:hidden;
}
 
 
/**** Footer ***/
 
 
#footer {
margin: 20px auto 0 auto;
text-align: center;
border-top: dotted 1px gray;
padding: 10px 0 20px 0;
width: 70%;
}
 
#footer p {
margin: 0px;
padding: 0;
}
/trunk/wikini/maj_wikini/tools/templates/themes/kaleidos/styles/rouge.css
New file
0,0 → 1,277
/* ======================================================== */
/* Created by Devit Schizoper */
/* Created HomePages http://LoadFoo.starzonewebhost.com */
/* Created Day 01.12.2006 */
/* ======================================================== */
 
 
body {
margin: 0px;
background: url(../images/top_bg.gif);
background-repeat: repeat-x;
font-family: Verdana, Arial, sans-serif;
font-size: .6em;
}
 
p {
line-height: 17px;
margin: 11px 0 10px 0;
padding: 0px;
}
 
h2 {
color: #9f9f9f;
margin:0px;
padding:0px;
font-size: 15px;
}
 
ul {
font-size: 10px;
margin:0;
padding:0;
list-style-image: url(../images/bullet.gif);
}
 
a {
color: red;
text-decoration: none;
}
 
a:hover {
text-decoration: underline;
}
 
blockquote{
background: #F7FDE3;
color: #606060;
padding: 10px;
}
 
hr {
color: red;
background-color: red;
height: 2px;
border: 0;
width:100%;
}
 
input, textarea {
margin:1px;
border:1px solid red;
}
 
/**** Main Container ***/
 
 
#wrap {
position: relative;
margin-left: auto;
margin-right: auto;
width: 930px;
}
 
 
/**** Top ***/
 
 
#top {
width: 100%;
height: 88px;
color: #fff;
background: #000 url(../images/top_bg.gif);
/*overflow:hidden;*/
}
 
#top h1 {
color: #FFF;
letter-spacing: 3px;
font-size: 2.4em;
font-weight: normal;
position: absolute;
margin: 0px;
top:13px;
display:block;
float:left;
border-left:5px solid red;
padding-left: 10px;
 
}
#top h2 {
position: absolute;
margin: 0px;
top:50px;
display:block;
clear:both;
float:left;
padding: 0;
color:red;
}
 
#top h1 a {
color: white;
text-decoration: none;
}
 
#top h1 a:hover {
color: #93B300;
}
 
 
/**** Main Menu ***/
 
#menu {
margin:0; padding:0;
display: block;
float:right;
height: 88px;
}
 
#menu ul {
margin: 0;
list-style: none;
}
 
#menu li {
display: block;
float: left;
white-space: nowrap;
}
 
#menu li a {
display: block;
padding:50px 10px 10px 3px;
/*padding: 55px 20px 12px 20px;*/
text-decoration: none;
color: #fff;
font-weight: bold;
}
 
* html #menu a {width:1%;}
 
#menu li a:hover {
background: url(../images/bg_menu.gif);
}
 
#menu li a.current {
letter-spacing: 1px;
color: gray;
background: url(../images/bg_menu.gif);
}
 
#menu li a.current:hover {
color: #fff;
}
 
#kwicks {
position: relative;
}
 
#kwicks .kwick {
float: left;
display: block;
width: 70px;
height: 21px;
}
 
#kwick_red {background:red url(../images/accueil.gif) no-repeat top left;}
#kwick_orange {background:orange url(../images/veille.gif) no-repeat top left;}
#kwick_yellow {background:yellow url(../images/services.gif) no-repeat top left;}
#kwick_green {background:green url(../images/demos.gif) no-repeat top left;}
#kwick_blue {background:blue url(../images/contact.gif) no-repeat top left;}
 
 
/**** Content Container ***/
 
 
#content {
width: 100%;
margin-top:15px;
}
 
#content h2 {
margin: 0;
padding: 10px 0 10px 0;
}
 
 
/**** Content ***/
 
 
#right ul {
padding: 15px 0 15px 35px;
margin:0;
}
 
#right li {
margin-bottom:5px;
}
 
#right {
display: block;
width: 710px;
margin-left: 230px;
}
 
 
/**** Sidebar ***/
 
 
#left {
display:block;
width: 200px;
position: absolute;
left:0;
margin: 0;
padding:5px 5px 20px 5px;
background-color: #F6F6F6;
}
.commentsheader {display:none;}
.hr_clear {display:none;}
 
#nav ul {list-style:none; margin:0; width:200px; float:right;}
#nav li {padding:0; margin:0; list-style-type:none; list-style:none; background-image:none; }
#nav a {
padding:0; margin:0;
display: block;
height: 2.0em;
padding: 0.3em 0.3em 0.3em 0.8em;
background-color: #F6F6F6;
font-weight: bold;
text-decoration: none;
}
#nav br {display:none;}
#nav a:hover {
color: #1a1a1a;
border-left:5px solid red;
background-color: #fff;
font-weight: bold;
}
 
/**** Clear Div ***/
 
 
#clear {
display: block;
clear: both;
width: 100%;
height:1px;
overflow:hidden;
}
 
 
/**** Footer ***/
 
 
#footer {
margin: 20px auto 0 auto;
text-align: center;
border-top: dotted 1px gray;
padding: 10px 0 20px 0;
width: 70%;
}
 
#footer p {
margin: 0px;
padding: 0;
}
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/squelettes/default.tpl.html
New file
0,0 → 1,47
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
 
<head>
<title>{WIKINI_TITRE}</title>
{WIKINI_META_ROBOTS}
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<meta name="keywords" content="{WIKINI_MOTS_CLES}" />
<meta name="description" content="{WIKINI_DESCRIPTION}" />
{WIKINI_STYLES_CSS}
{WIKINI_JAVASCRIPTS}
</head>
 
<body {WIKINI_BODY}>
<div style="display: none;"><a href="{WIKINI_RESETSTYLE}" accesskey="7"></a></div>
<div id="page">
<div id="zone_bandeau">
<div id="zone_accueil">
<a class="lien_accueil" href="http://mandarinepressee.net/papyrus.php" title="Retour à la page d'accueil">&nbsp;</a>
</div>
<h1 id="titre_site">{WIKINI_TITRE_SITE}</h1>
</div> <!--fin div zone_bandeau-->
<div id="zone_contenu" {WIKINI_DOUBLE_CLIC}>
<div id="colonne_gauche">
<div id="menu_haut">
&nbsp;
</div>
<div id="menu_contenu">
{{include page="PageMenu"}}
</div>
<div id="menu_bas">
&nbsp;
</div>
</div> <!-- fin div colonne_gauche -->
<div id="colonne_droite">
{WIKINI_PAGE}
{WIKINI_BARRE_BAS}
</div> <!-- fin div colonne_droite -->
</div> <!-- fin div zone_contenu -->
<div id="zone_pied">
<div id="copyright">
&copy;&nbsp;<a href="http://mandarinepressee.net" title="Mandarine">Mandarine</a> 2007 - R&eacute;alisation <a href="http://coop-tic.net">Coop-Tic.net</a><br />
Site utilisant <a href="http://wikini.net">Wikini</a><br /><br />
</div> <!-- fin div zone_pied -->
</div> <!-- fin div page -->
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/styles/default.css
New file
0,0 → 1,64
/*****************Proprietes generales******************************************/
* {margin:0; padding:0; text-indent:0;}
body {font:12px Arial, sans-serif; color:#000; background:#ffce18 url(../images/degrade.png) repeat-x top left; text-align:center;}
#page {position:relative; width:960px; text-align:left; margin:0 auto; background:#FFF;}
 
hr { margin:2px; width:100%; color: #7F8343; background-color: #7F8343; height: 1px; }
a { margin:0; padding:0; color:#849F20; text-decoration:none; }
a:hover { text-decoration:none; color:#F90; font-weight:bold; }
.table_cadre {width:500px;margin:2px auto;border-spacing:0;border-collapse:collapse;}
th {font-size:11pt;padding:2px;text-align:center;border: 1px solid #006495;font-weight: normal;background:#66A1BF;height:23px;}
td {font-size:10pt;text-align:center;border: 1px solid #006495;background:#FFF;height:23px;}
 
/*****************Titres********************************************************/
h1, h2, h3, h4, h5, h6 {font-family:Arial, sans-serif; text-align:left; margin:4px 0; padding:2px; }
h1 {font-size:22px; color:#849F20; font-weight:bold; }
h2 {font-size:18px; color:#43218C; font-weight:bold; }
h3 {font-size:17px; color:#849F20; font-weight:bold; }
h4 {font-size:14px; color:#00A0C6; }
h5 {font-size:12px; color:#F90; }
 
/*****************Boutons et formulaires****************************************/
a img {border: none;}
form li {list-style-type:none;color:#000;}
form table, form td, form th {border:0;}
form td:hover {background:transparent;}
 
/*****************Listes********************************************************/
ul {padding:0;margin: 0 0 0 10px;}
li {padding:0;margin: 2px 0 0 10px; color:#000;}
 
/*****************Bandeau du haut********************************************************/
#zone_bandeau {height:175px; width:960px; background:url(../images/Site-bandeau.png) no-repeat top left;}
/*****************Lien de retour vers l'accueil********************************************************/
#zone_accueil {margin:0; padding:0;}
#zone_accueil a {position:absolute; top:10px; left:10px; width:800px; height:165px; text-decoration:none;}
 
/*****************Contenu page (colonne gauche + corps)********************************************************/
#zone_contenu {float:left; margin:0; padding:0 ;width:960px; background:url(../images/barre_conteneur.png) repeat-y top left;}
p, .page {clear:both;background-color:transparent;text-align: justify;line-height: 22px;}
 
/*****************Colonne de gauche********************************************************/
#colonne_gauche {clear:both; float:left; width:176px; padding:0; margin:0; text-align:center;}
#colonne_gauche h1 {padding:6px 0 0 0; margin:0; text-align:center; font-weight:bold; font-size:13px; color:#751451; }
#menu_haut {margin:0 0 0 15px; width:151px; height:34px; background:url(../images/bandeau_menu_haut.png) no-repeat top left;}
#menu_contenu {margin:0 0 0 15px; width:151px; background:url(../images/barre_menu.png) repeat-y top left;}
#menu_bas {margin:0 0 40px 15px; width:151px; height:12px; background:url(../images/bandeau_menu_bas.png) no-repeat top left;}
#menu_contenu ul {display:block;margin:0; padding:1px; color:#FFF; list-style:none; list-style-type:none;}
#menu_contenu li, #menu li li {margin:6px 0; padding:0; color:#000; text-align:left;}
#menu_contenu li ul {margin:0; padding:0; color:#FFF;}
 
.rss_site_titre {font-size:13px;}
.boite_rss {border: 3px solid rgb(239, 181, 33); margin-bottom:10px; padding:6px; width:97%; float: left; -moz-border-radius-topleft: 12px; -moz-border-radius-topright: 12px; -moz-border-radius-bottomright: 12px; -moz-border-radius-bottomleft: 12px;}
.rss_titre_item {font-size:13px;}
.hr_clear, .commentsheader, .footer {display:none;}
 
/*****************Corps********************************************************/
#colonne_droite {float:left; width:760px; margin:0 0 0 10px;}
#zone_contenu_corps {float:left; width:750px;_width:544px; margin:0; padding:0 10px 0 10px; text-align:justify;}
 
/*****************Pied de page********************************************************/
#zone_pied {float:left; text-align:center; margin:0; padding:0 0 0 0; width:960px; height:50px; background:url(../images/bandeau_bas.png) no-repeat top left;}
#zone_pied a {font:12px arial, sans-serif; color:#751451; text-decoration:none;}
#zone_pied a:hover {text-decoration:underline; color:#efb521;}
#copyright {float:left; color:#000; width:960px;}
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/eye.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/eye.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Titre-voiture.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Titre-voiture.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Titre-intermodalite.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Titre-intermodalite.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Agraphe.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Agraphe.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Main_Erreur.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Main_Erreur.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Titre-livrer.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Titre-livrer.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Titre-velo.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Titre-velo.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/go_bas.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/go_bas.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/clock.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/clock.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Puce-verte-bandeau.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Puce-verte-bandeau.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/barre_conteneur.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/barre_conteneur.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/picto.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/picto.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Logo_papyrus.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Logo_papyrus.jpg
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Bandeau_haut.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Bandeau_haut.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/comment.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/comment.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Bandeau_bas.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Bandeau_bas.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/header.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/header.jpg
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/headerbg20.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/headerbg20.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Titre-transports.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Titre-transports.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Partenaires-ecomobilite.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Partenaires-ecomobilite.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/rss.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/rss.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/logo-xhtml11.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/logo-xhtml11.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/logo-firefox.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/logo-firefox.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Modele-Page-generique.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Modele-Page-generique.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Boutons/onglet_contenu_hover_gauche.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Boutons/onglet_contenu_hover_gauche.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Boutons/onglet_contenu_droit.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Boutons/onglet_contenu_droit.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Boutons/left_both_green.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Boutons/left_both_green.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Boutons/onglet_contenu_hover_droit.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Boutons/onglet_contenu_hover_droit.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Boutons/onglet_contenu_milieu.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Boutons/onglet_contenu_milieu.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Boutons/right_both_green.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Boutons/right_both_green.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Boutons/onglet_contenu_hover_milieu.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Boutons/onglet_contenu_hover_milieu.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Boutons/onglet_contenu_gauche.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Boutons/onglet_contenu_gauche.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/content.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/content.jpg
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Titre-travail.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Titre-travail.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Modele-Page-ecomobilite.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Modele-Page-ecomobilite.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Bandeau-ecomobilite.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Bandeau-ecomobilite.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/navigation/adme_administrer.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/navigation/adme_administrer.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/navigation/adme_monter.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/navigation/adme_monter.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/navigation/adme_ouvrir.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/navigation/adme_ouvrir.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/navigation/adme_supprimer.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/navigation/adme_supprimer.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/navigation/adme_augmenter.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/navigation/adme_augmenter.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/navigation/adme_ajouter.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/navigation/adme_ajouter.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/navigation/adme_descendre.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/navigation/adme_descendre.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/navigation/adme_diminuer.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/navigation/adme_diminuer.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/navigation/adme_modifier.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/navigation/adme_modifier.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/navigation/adme_fermer.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/navigation/adme_fermer.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Infos.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Infos.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/quote.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/quote.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Puce-T1-generique.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Puce-T1-generique.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Puce-T2-generique.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Puce-T2-generique.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/headerbg.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/headerbg.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/bandeau_bas.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/bandeau_bas.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Sommaire-ecomobilite.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Sommaire-ecomobilite.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/go.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/go.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/logo-css.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/logo-css.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Puce-T1-ecomobilite.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Puce-T1-ecomobilite.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Puce-T2-ecomobilite.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Puce-T2-ecomobilite.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Titre-CO2.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Titre-CO2.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/footer.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/footer.jpg
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Puce-T3-ecomobilite.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Puce-T3-ecomobilite.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/degrade.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/degrade.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/page.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/page.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Titre-ecole.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Titre-ecole.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/square-green.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/square-green.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Calendrier-coin-jaune.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Calendrier-coin-jaune.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/menu.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/menu.jpg
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Site-bandeau.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Site-bandeau.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Puce-orange-bandeau.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/images/Puce-orange-bandeau.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/mandarine/javascripts/fonctions_wikini.js
New file
0,0 → 1,6
function fKeyDown() {
if (event.keyCode == 9) {
event.returnValue= false;
document.selection.createRange().text = String.fromCharCode(9);
}
}
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/squelettes/default.tpl.html
New file
0,0 → 1,47
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
 
<head>
<title>{WIKINI_TITRE}</title>
{WIKINI_META_ROBOTS}
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<meta name="keywords" content="{WIKINI_MOTS_CLES}" />
<meta name="description" content="{WIKINI_DESCRIPTION}" />
{WIKINI_STYLES_CSS}
{WIKINI_JAVASCRIPTS}
</head>
 
<body {WIKINI_BODY}>
<div style="display: none;"><a href="{WIKINI_RESETSTYLE}" accesskey="7"></a></div>
<div id="page">
<div id="zone_bandeau">
<h1 id="titre_site">{WIKINI_TITRE_SITE}</h1>
</div> <!--fin div zone_bandeau-->
<div id="zone_contenu" {WIKINI_DOUBLE_CLIC}>
<div id="colonne_gauche">
<div id="menu_haut">
<h1>Menu</h1>
</div>
<div id="menu_contenu">
{{include page="PageMenu"}}
</div>
<div id="menu_bas">
&nbsp;
</div>
</div> <!-- fin div colonne_gauche -->
<div id="colonne_milieu">
{WIKINI_PAGE}
</div> <!-- fin div colonne_milieu -->
<div id="colonne_droite">
{{include page="SyndicatioN"}}
</div> <!-- fin div colonne_droite -->
</div> <!-- fin div zone_contenu -->
<div id="zone_pied">
<div id="copyright">
R&eacute;alisation <a href="http://coop-tic.net">Coop-Tic.net</a><br />
Site utilisant <a href="http://wikini.net">Wikini</a><br /><br />
</div> <!-- fin div copyright -->
</div> <!-- fin div zone_pied -->
</div> <!-- fin div page -->
</body>
</html>
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/styles/default.css
New file
0,0 → 1,58
body { background-color: #F5F5F5; color: black; }
 
body, p, td, li, input, select, textarea { font-family: 'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 1.3; }
h1, h2, h3, h4, h5 { margin: 0px; padding: 0px; }
a { color: #993333; }
ul { margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; }
ol { margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; }
form { margin: 0px; padding: 0px; }
tt { color: Navy; }
hr { border: 0px; color: Black; /* Internet Explorer */ background-color: Black; height: 1px; }
 
#selecteur_squelette {position:absolute; top:3px; right:3px;}
#selecteur_style {position:absolute; top:30px; right:3px;}
.wiki_name { float: left; margin: 0px 15px 0px 10px; font-size: 150%; }
.page_name { font-size: 150%; }
 
#page {margin: 0px; padding: 0px ; border: none; height: 100%;width: 100%;}
#colonne_gauche {float:left; background: #f8f8f8; width: 19%; border: 1px solid #ccc; padding:5px;}
#colonne_droite {margin-left:21%; border: none; padding:0;}
 
.error { color: #CC3333; font-weight: bold; }
.indent { margin-left: 40px; }
.additions { color: #008800; }
.deletions { color: #880000; }
.add { font-weight: bold; color: #c00; text-decoration: underline; }
.del { font-style: italic; color: #c00; text-decoration: line-through; }
.header { padding: 10px; padding-top: 0px }
.page { background-color: #FFFFFF; padding: 10px; border: 1px inset; border-bottom: none; }
.prev_alert { background-color: red; color: white; font-size: 1.7em; font-weight: bold; margin-bottom: 5px; }
.edit { width: 100%; height: 400px; }
.footer { background-color: #DDDDDD; padding: 5px 10px; border: 1px inset; border-top: none; border-top: 1px solid #CCCCCC }
.code { background: #FFFFFF; border: solid #888888 2px; font-family: 'Courier New', Courier; width: 100%; height: 400px; overflow: scroll; padding: 3px; }
.revisioninfo { color: #AAAAAA; padding-bottom: 20px; }
 
.commentsheader { background-color: #DDDDDD; padding: 2px 10px; border-left: 1px inset; border-right: 1px inset; border-top: 1px solid #CCCCCC }
.comment { background-color: #EEEEEE; padding: 10px; border-left: 1px inset; border-right: 1px inset; border-top: 1px solid #CCCCCC; border-bottom: 1px solid #EEEEEE; }
.commentinfo { color: #AAAAAA; }
.commentform { background-color: #EEEEEE; padding: 10px; border-left: 1px inset; border-right: 1px inset; border-top: 1px solid #CCCCCC }
 
.copyright { font-size: 11px; color: #AAAAAA; text-align: right; }
.copyright A { color: #AAAAAA; }
.searchbox { background: #FFFFF8; border: 0px; border-bottom: 1px solid #CCCCAA; padding: 0px; margin: 0px; }
.debug { font-size: 11px; color: #888888; }
 
.hr_clear { clear: both; visibility: hidden; }
.include_right { float: right; width: 17%; } /* bloc flotant à droite */
.include_left { float: left; width: 17%; } /* bloc flotant à gauche */
.include_solid_border { border: solid; padding: 2px; } /* encadré noir */
.include_gray_background { background-color: #DDDDDD; } /* fond gris */
.include_small_fonts { font-size: 0.8em; } /* petites polices */
.include_big_fonts { font-size: 1.2em; } /* grandes polces */
.include_height10em { height: 10em; overflow: scroll; } /* boite de 10em de hauteur, avec ascenseur */
.include_height15em { height: 15em; overflow: scroll; }
.include_height30em { height: 30em; overflow: scroll; }
.include_height60em { height: 60em; overflow: scroll; }
 
.trail_table { line-height: 30px;}
.trail_button { color: #993333; }
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/menu_inactif.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/menu_inactif.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/puce_titre.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/puce_titre.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/bandeau_menu_haut.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/bandeau_menu_haut.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/rss.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/rss.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/bandeau_menu_bas.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/bandeau_menu_bas.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/menu_actif.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/menu_actif.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/bg_menu.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/bg_menu.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/barre_conteneur.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/barre_conteneur.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/barre_menu.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/barre_menu.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/bandeau_haut.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/bandeau_haut.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/puce_menu.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/puce_menu.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/bandeau_bas.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/bandeau_bas.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/loupe.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/loupe.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/Info.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/Info.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/puce.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/puce.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/input.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/images/input.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/3-colonnes/javascripts/fonctions_wikini.js
New file
0,0 → 1,6
function fKeyDown() {
if (event.keyCode == 9) {
event.returnValue= false;
document.selection.createRange().text = String.fromCharCode(9);
}
}
/trunk/wikini/maj_wikini/tools/templates/themes/ree05/images/bandeau_haut.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/ree05/images/bandeau_haut.jpg
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/ree05/images/background.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/wikini/maj_wikini/tools/templates/themes/ree05/images/background.png
New file
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/ree05/javascripts/fonctions_wikini.js
New file
0,0 → 1,6
function fKeyDown() {
if (event.keyCode == 9) {
event.returnValue= false;
document.selection.createRange().text = String.fromCharCode(9);
}
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/ree05/squelettes/default.tpl.html
New file
0,0 → 1,43
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
 
<head>
<title>{WIKINI_TITRE}</title>
{WIKINI_META_ROBOTS}
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<meta name="keywords" content="{WIKINI_MOTS_CLES}" />
<meta name="description" content="{WIKINI_DESCRIPTION}" />
{WIKINI_STYLES_CSS}
{WIKINI_JAVASCRIPTS}
</head>
 
<body {WIKINI_BODY}>
<div style="display: none;"><a href="{WIKINI_RESETSTYLE}" accesskey="7"></a></div>
<div id="page">
<div id="zone_bandeau">
<a id="lien_accueil" href="http://ree05.org/papyrus.php" title="Retour &agrave; la page d'accueil">&nbsp;</a>
<h1 id="titre_site">{WIKINI_TITRE_SITE}</h1>
</div> <!--fin div zone_bandeau-->
<div id="zone_contenu" {WIKINI_DOUBLE_CLIC}>
<div id="colonne_gauche">
<div id="menu_haut">
<h1>Menu</h1>
</div>
<div id="menu_contenu">
{{include page="PageMenu"}}
</div>
<div id="menu_bas">
&nbsp;
</div>
</div> <!-- fin div colonne_gauche -->
<div id="colonne_droite">
{WIKINI_PAGE}
{WIKINI_BARRE_BAS}
</div> <!-- fin div colonne_droite -->
</div> <!-- fin div zone_contenu -->
<div id="zone_pied">
Site utilisant <a href="http://wikini.net">Wikini {WIKINI_VERSION}</a><br /><br />
</div> <!-- fin div zone_pied -->
</div> <!-- fin div page -->
</body>
</html>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/wikini/maj_wikini/tools/templates/themes/ree05/styles/default.css
New file
0,0 → 1,386
body {
color:#000;
background:#c53c08 url(../images/background.png) repeat-x top left;
}
 
body,p,td,li,input,select,textarea {
font-family:'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif;
font-size:13px;
line-height:1.3;
}
 
a {
color:#849F20;
text-decoration:none;
margin:0;
padding:0;
}
 
a:hover {
text-decoration:none;
color:#F90;
}
 
 
h1 {
text-align:center;
padding:5px 0 5px 20px;
margin:20px auto;
font-size:22px;
color:#849F20;
font-weight:bold;
width:400px;
}
 
 
 
h2 {
font-weight:bold;
font-size:18px;
text-align:left;
padding:5px 0 5px 30px;
margin:25px 0 25px 0;
color:#7271b5;
}
 
 
 
h3 {
 
font-size:17px;
 
color:#849F20;
 
font-weight:bold;
 
}
 
 
 
h4 {
 
font-size:14px;
 
color:#00A0C6;
 
}
 
 
 
h5 {
 
font-size:12px;
 
color:#F90;
 
}
 
 
 
a img {
 
border:none;
 
}
 
 
form li {
 
list-style-type:none;
 
color:#000;
 
}
 
 
 
ul {
 
margin:0 0 0 10px;
 
padding:0;
 
}
 
 
 
li {
 
color:#000;
 
margin:2px 0 0 10px;
 
padding:0;
 
}
 
#zone_pied {text-align:center;}
 
 
#zone_bandeau {
background:url(../images/bandeau_haut.jpg) no-repeat top left;
width:973px;
height:257px;
margin:0 auto;
}
 
#titre_site {position:absolute; top:220px; left:387px; width:704px; text-align:center;}
#lien_accueil {position:relative; top:20px; left:30px; display:block; width:250px;height:125px;text-decoration:none;}
tt {
color:Navy;
}
 
hr {
border:0;
color:#000;
background-color:#000;
height:1px;
}
 
.wiki_name {
float:left;
font-size:150%;
margin:0 15px 0 10px;
}
 
.page_name {
font-size:150%;
}
 
#page {
border:none;
height:100%;
width:973px;
margin:0 auto;
padding:0;
}
 
#colonne_gauche {
float:left;
background:#FFF;
width:193px;
border:2px solid #c5b9a3;
border-top:none;
margin: 0 0 0 12px;
}
 
#colonne_gauche h1 {
text-align:center;
font-weight:bold;
font-size:13px;
color:#751451;
margin:0;
padding:6px 0;
width:195px;
}
 
#menu_contenu ul {
display:block;
color:#FFF;
list-style:none;
list-style-type:none;
margin:0;
padding:0 0 0 3px;
}
 
#menu_contenu li,#menu li li {
color:#000;
text-align:left;
margin:6px 0;
padding:0;
 
}
 
#colonne_droite {
background-color:#FFF;
border-left:2px solid #c5b9a3;
border-right:2px solid #c5b9a3;
border-bottom:2px solid #c5b9a3;
padding:0;
margin:0 0 0 242px;
height:100%;
width:706px;
}
 
.error {
color:#C33;
font-weight:700;
}
 
.indent {
margin-left:40px;
}
 
.additions {
color:#080;
}
 
.deletions {
color:#800;
}
 
.add {
font-weight:700;
color:#c00;
text-decoration:underline;
}
 
.del {
font-style:italic;
color:#c00;
text-decoration:line-through;
}
 
.header {
padding:0 10px 10px;
}
 
.page {
padding: 0 5px 20px 5px;
}
 
.prev_alert {
background-color:red;
color:#FFF;
font-size:1.7em;
font-weight:700;
margin-bottom:5px;
}
 
.edit {
width:100%;
height:400px;
}
 
.footer {
background-color:#DDD;
padding:5px 10px;
font-size:11px;
}
 
.code {
background:#FFF;
border:solid #888 2px;
font-family:'Courier New', Courier;
width:100%;
height:400px;
overflow:scroll;
padding:3px;
}
 
.revisioninfo {
color:#AAA;
padding-bottom:20px;
}
 
.commentsheader {
border-top:2px solid #c5b9a3;
background-color:#d1d2e7;
margin:0;
padding:5px;
}
 
.comment {
background-color:#d1d2e7;
padding:10px;
}
 
.commentform {
background-color:#d1d2e7;
padding:10px
}
 
.copyright {
font-size:11px;
color:#AAA;
text-align:right;
}
 
.searchbox {
background:#FFFFF8;
border:0;
border-bottom:1px solid #CCA;
margin:0;
padding:0;
}
 
.debug {
font-size:11px;
color:#888;
}
 
.hr_clear {
clear:both;
visibility:hidden;
}
 
.include_right {
float:right;
width:17%;
}
 
.include_left {
float:left;
width:17%;
}
 
.include_solid_border {
border:solid;
padding:2px;
}
 
.include_gray_background {
background-color:#DDD;
}
 
.include_small_fonts {
font-size:.8em;
}
 
.include_big_fonts {
font-size:1.2em;
}
 
.include_height10em {
height:10em;
overflow:scroll;
}
 
.include_height15em {
height:15em;
overflow:scroll;
}
 
.include_height30em {
height:30em;
overflow:scroll;
}
 
.include_height60em {
height:60em;
overflow:scroll;
}
 
.trail_table {
line-height:30px;
}
 
h1,h2,h3,h4,h5,form {
margin:0;
padding:0;
}
 
a,.trail_button {
color:#933;
}
 
ul,ol {
margin-top:0;
margin-bottom:0;
padding-top:0;
padding-bottom:0;
}
 
.commentinfo,.copyright A {
color:#AAA;
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property