You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by so...@apache.org on 2007/09/21 12:37:48 UTC

svn commit: r578051 [14/31] - in /lenya/branches/revolution/1.3.x/src: java/org/apache/lenya/cms/content/flat/ webapp/lenya/modules/xinha/ webapp/lenya/modules/xinha/contrib/ webapp/lenya/modules/xinha/examples/ webapp/lenya/modules/xinha/images/ webap...

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/ExtendedFileManager/manager.php
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/ExtendedFileManager/manager.php?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/ExtendedFileManager/manager.php (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/ExtendedFileManager/manager.php Fri Sep 21 03:36:30 2007
@@ -0,0 +1,278 @@
+<?php
+/**
+ * The main GUI for the ExtendedFileManager.
+ * Authors: Wei Zhuo, Afru, Krzysztof Kotowicz, Raimund Meyer
+ * Version: Updated on 08-01-2005 by Afru
+ * Version: Updated on 04-07-2006 by Krzysztof Kotowicz
+ * Version: Updated on 29-10-2006 by Raimund Meyer
+ * Package: ExtendedFileManager (EFM 1.1.3)
+ * http://www.afrusoft.com/htmlarea
+ */
+
+	if(isset($_REQUEST['mode'])) $insertMode=$_REQUEST['mode'];
+	if(!isset($insertMode)) $insertMode="image";
+
+	require_once('config.inc.php');
+	require_once('Classes/ExtendedFileManager.php');
+	
+	$manager = new ExtendedFileManager($IMConfig);
+	$dirs = $manager->getDirs();
+
+	// calculate number of table rows to span for the preview cell
+	$num_rows = 4; // filename & upload & disk info message & width+margin
+		
+	if ($insertMode=='image')
+	{
+		if ($IMConfig['images_enable_styling'] === false)
+		{
+			$hidden_fields[] = 'f_margin';
+			$hidden_fields[] = 'f_padding';
+			$hidden_fields[] = 'f_border';
+			$hidden_fields[] = 'f_backgroundColor';
+			$hidden_fields[] = 'f_borderColor';
+			$num_rows +=2;
+		}
+		else if ($IMConfig['use_color_pickers'] === false)
+		{
+			$hidden_fields[] = 'f_backgroundColor';
+			$hidden_fields[] = 'f_borderColor';
+			$num_rows +=2;
+		}
+		
+		if ($IMConfig['images_enable_align'] === false)
+		{
+			$hidden_fields[] = 'f_align';
+		}
+		if ($IMConfig['images_enable_alt'])
+		{
+			$num_rows++;
+		}
+		else 
+		{
+			$hidden_fields[] = 'f_alt';
+		}
+		if ($IMConfig['images_enable_title'])
+		{
+			$num_rows++;
+		}
+		else 
+		{
+			$hidden_fields[] = 'f_title';
+		}
+	}
+	
+	if ($insertMode == 'link')
+	{
+		if ($IMConfig['link_enable_target'] === false)
+		{
+			$hidden_fields[] = 'f_target';
+		}
+		$num_rows +=2;
+	}
+?>
+<!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>Insert <?php echo ($insertMode == 'image' ? 'Image' : 'File Link') ?></title>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link href="<?php print $IMConfig['base_url'];?>assets/manager.css" rel="stylesheet" type="text/css" />
+ <link href="../../popups/popup.css" rel="stylesheet" type="text/css" />
+<script type="text/javascript" src="../../popups/popup.js"></script>
+<script type="text/javascript" src="<?php print $IMConfig['base_url'];?>assets/popup.js"></script>
+<script type="text/javascript" src="<?php print $IMConfig['base_url'];?>assets/dialog.js"></script>
+<?php if (!empty($IMConfig['use_color_pickers'])) { ?><script type="text/javascript" src="../../modules/ColorPicker/ColorPicker.js"></script><?php } ?>
+<script type="text/javascript">
+/* <![CDATA[ */
+
+	if(window.opener)
+		Xinha = window.opener.Xinha;
+		
+	var thumbdir = "<?php echo $IMConfig['thumbnail_dir']; ?>";
+	var base_url = "<?php echo $manager->getImagesURL(); ?>";
+    var _backend_url = "<?php print $IMConfig['backend_url']; ?>";
+    var _resized_prefix = "<?php echo $IMConfig['resized_prefix']; ?>";
+  	var _resized_dir = "<?php echo $IMConfig['resized_dir']; ?>";
+	<?php
+	if(isset($_REQUEST['mode']))
+	{
+		echo 'var manager_mode="'.$_REQUEST['mode'].'";';
+	}
+	else
+	{
+		echo 'var manager_mode="image";';
+	}
+	?>
+	
+/* ]]> */
+</script>
+<script type="text/javascript" src="<?php print $IMConfig['base_url'];?>assets/manager.js"></script>
+</head>
+<body class="dialog" >
+<div class="title">Insert <?php echo ($insertMode == 'image' ? 'Image' : 'File Link') ?></div>
+<form action="<?php print $IMConfig['backend_url']; ?>" id="uploadForm" method="post" enctype="multipart/form-data">
+<input type="hidden" name="__plugin" value="ExtendedFileManager" />
+<input type="hidden" name="__function" value="images" />
+<input type="hidden" name="mode" value="<?php echo $insertMode; ?>" />
+<input type="hidden" id="manager_mode" value="<?php echo $insertMode;?>" />
+<fieldset><legend>File Manager</legend>
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+<tr>
+<td nowrap style="padding:10px;">
+
+	<label for="dirPath">Directory</label>
+	<select name="dir" class="dirWidth" id="dirPath" onchange="updateDir(this)">
+	<option value="/">/</option>
+<?php foreach($dirs as $relative=>$fullpath) { ?>
+		<option value="<?php echo rawurlencode($relative); ?>"><?php echo $relative; ?></option>
+<?php } ?>
+	</select>
+
+	<a href="#" onclick="javascript: goUpDir();" title="Directory Up"><img src="<?php print $IMConfig['base_url'];?>img/btnFolderUp.gif" height="15" width="15" alt="Directory Up" /></a>
+
+
+<?php if($IMConfig['safe_mode'] == false && $IMConfig['allow_new_dir']) { ?>
+	<a href="#" onclick="newFolder();" title="New Folder"><img src="<?php print $IMConfig['base_url'];?>img/btnFolderNew.gif" height="15" width="15" alt="New Folder" /></a>
+<?php } ?>
+<span id="pasteBtn"></span>
+
+	<select name="viewtype" id="viewtype" onChange="updateView()">
+	<option value="thumbview" <?php if($IMConfig['view_type']=="thumbview") echo "selected";?> >Thumbnail View</option>
+	<option value="listview" <?php if($IMConfig['view_type']=="listview") echo "selected";?> >List View</option>
+	</select>
+</td>
+</tr>
+<tr><td style="padding:10px; padding-top:0px;">
+	<div id="messages" style="display: none;"><span id="message"></span><img src="<?php print $IMConfig['base_url'];?>img/dots.gif" width="22" height="12" alt="..." /></div>
+	<iframe src="<?php print $IMConfig['backend_url']; ?>__function=images&amp;mode=<?php echo $insertMode;?>&amp;viewtype=<?php echo $IMConfig['view_type'] ?>" name="imgManager" id="imgManager" class="imageFrame" scrolling="auto" title="Image Selection" frameborder="0"></iframe>
+</td></tr>
+</table>
+</fieldset>
+<!-- image properties -->
+	<table class="inputTable">
+		<tr>
+			<td align="right" nowrap><label for="f_url"><?php if($insertMode=='image') echo 'File Name'; else echo 'URL';?></label></td>
+			<td colspan="5"><input type="text" id="<?php if($insertMode=='image') echo 'f_url'; else echo 'f_href';?>" class="largelWidth" value="" /></td>
+            <td rowspan="<?php echo $num_rows ?>" colspan="2" valign="top" align="center"><?php if($insertMode=='image') { ?>
+            <div style="padding:4px;background-color:#CCC;border:1px inset;width: 100px; height: 100px;">
+            <img src="<?php print $IMConfig['base_url'];?>img/1x1_transparent.gif" alt="" id="f_preview" />
+            </div>
+            <?php } else if($insertMode=="link" && $IMConfig['link_enable_target'] !== false) {?><label for="f_align" id="f_target_label">Target Window</label>
+			<select id="f_target" style="width:125px;">
+			  <option value="">None (use implicit)</option>
+			  <option value="_blank">New window (_blank)</option>
+			  <option value="_self">Same frame (_self)</option>
+		      <option value="_top">Top frame (_top)</option>
+		    </select><br /><br />
+<input type="text" name="f_other_target" id="f_other_target" style="visibility:hidden; width:120px;" />
+            <?php } ?></td>
+            </tr>
+<?php if($insertMode == 'image' && $IMConfig['images_enable_alt']) { ?>
+		<tr>
+			<td align="right"><label for="f_alt">Alt</label></td>
+			<td colspan="5"><input type="text" id="f_alt" class="largelWidth" value="" /></td>
+        </tr>
+<?php }
+      if ($insertMode == 'link' || $IMConfig['images_enable_title']) { ?>
+      <tr>
+			<td align="right"><label for="f_title">Title (tooltip)</label></td>
+			<td colspan="5"><input type="text" id="f_title" class="largelWidth" value="" /></td>
+      </tr>
+<?php } ?>
+		<tr>
+<?php
+if (!empty($IMConfig['max_foldersize_mb']) && Files::dirSize($manager->getImagesDir()) > ($IMConfig['max_foldersize_mb']*1048576))
+{ ?>
+	<td colspan="6" align="right">Maximum folder size limit reached. Upload disabled.</td>
+<?php }
+else if($IMConfig['allow_upload']) { ?>
+			<td align="right"><label for="upload">Upload</label></td>
+			<td colspan="5">
+				<table cellpadding="0" cellspacing="0" border="0">
+                  <tr>
+                    <td><input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max = (($insertMode == 'image' ? $IMConfig['max_filesize_kb_image'] : $IMConfig['max_filesize_kb_link'] )*1024); ?>" />
+<input type="file" name="upload" id="upload" /></td>
+                    <td><button type="submit" name="submit" onclick="doUpload();">Upload</button>(<?php echo $max/1024 . 'KB'?> max.)</td>
+                  </tr>
+                </table>
+			</td>
+<?php } else { ?>
+			<td colspan="6"></td>
+<?php } ?>
+		</tr>
+		<tr>
+		 <td><?php if (!empty($hidden_fields)) foreach ($hidden_fields as $hf) echo "<input type=\"hidden\" id=\"{$hf}\" name=\"{$hf}\" value=\"\" />"; ?></td>
+		 <td colspan="5"><span id="diskmesg"></span></td>
+      </tr>
+<tr>
+			<td align="right"><?php if($insertMode=='image') { ?> <label for="f_width">Width</label><?php }?></td>
+
+			<td><?php if($insertMode=='image') { ?> <input type="text" id="f_width" class="smallWidth" value="" onchange="javascript:checkConstrains('width');"/><?php } else echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";?></td>
+
+			<td rowspan="2"><?php if($insertMode=='image') { ?><img src="<?php print $IMConfig['base_url'];?>img/locked.gif" id="imgLock" width="25" height="32" alt="Constrained Proportions" />
+				<input type="hidden" id="orginal_width" />
+				<input type="hidden" id="orginal_height" />
+            <input type="checkbox" id="constrain_prop" checked="checked" onclick="javascript:toggleConstrains(this);" /><br />
+            <label for="constrain_prop">Constrain Proportions</label><?php }?>
+            </td>
+
+			<td rowspan="3" align="right"></td>
+
+			<td align="right"><?php if($insertMode=='image' && $IMConfig['images_enable_styling'] !== false) { ?><label for="f_margin">Margin</label><?php }?></td>
+
+			<td><?php if($insertMode=='image' && $IMConfig['images_enable_styling'] !== false) { ?><input type="text" id="f_margin" class="smallWidth" value="" /><?php } ?></td>
+</tr>
+<tr>
+			<td align="right"><?php if($insertMode=='image') { ?><label for="f_height">Height</label><?php }?></td>
+
+			<td class="smallWidth"><?php if($insertMode=='image') { ?><input type="text" id="f_height" class="smallWidth" value="" onchange="javascript:checkConstrains('height');"/><?php }?></td>
+
+			<td align="right"><?php if($insertMode=='image' && $IMConfig['images_enable_styling'] !== false) { ?><label for="f_padding">Padding</label><?php }?></td>
+
+			<td><?php if($insertMode=='image' && $IMConfig['images_enable_styling'] !== false) { ?><input type="text" id="f_padding" class="smallWidth" value="" />
+			<?php }?></td>
+
+            <?php if($insertMode=='image' && !empty($IMConfig['use_color_pickers']) && $IMConfig['images_enable_styling'] !== false) { ?>
+   	            <td align="left">Color</td>
+  	            <td>
+                  <input name="f_backgroundColor" type="text" id="f_backgroundColor" size="7" />
+                </td>
+  	        <?php } ?>
+</tr>
+<tr>
+			<td align="right"><?php if($insertMode=='image' && $IMConfig['images_enable_align'] !== false) { ?><label for="f_align">Align</label><?php }?></td>
+
+			<td colspan="2"><?php if($insertMode=='image' && $IMConfig['images_enable_align'] !== false) { ?>
+				<select size="1" id="f_align"  title="Positioning of this image">
+				  <option value="" selected="selected"         >Not set</option>
+				  <option value="left"                         >Left</option>
+				  <option value="right"                        >Right</option>
+				  <option value="texttop"                      >Texttop</option>
+				  <option value="absmiddle"                    >Absmiddle</option>
+				  <option value="baseline"                     >Baseline</option>
+				  <option value="absbottom"                    >Absbottom</option>
+				  <option value="bottom"                       >Bottom</option>
+				  <option value="middle"                       >Middle</option>
+				  <option value="top"                          >Top</option>
+				</select><?php } ?>
+			</td>
+
+			<td align="right"><?php if($insertMode=='image' && $IMConfig['images_enable_styling'] !== false) { ?><label for="f_border">Border</label><?php }?></td>
+			<td><?php if($insertMode=='image' && $IMConfig['images_enable_styling'] !== false) { ?><input type="text" id="f_border" class="smallWidth" value="" /><?php }?></td>
+			<?php if($insertMode=='image' && !empty($IMConfig['use_color_pickers']) && $IMConfig['images_enable_styling'] !== false) { ?>
+  	        <td align="left">Border Color</td>
+            <td><input name="f_borderColor" type="text" id="f_borderColor" size="7" /></td>
+            <?php } ?>
+</tr>
+</table>
+
+<!--// image properties -->	
+	<div style="text-align: right;"> 
+          <hr />
+		  <button type="button" class="buttons" onclick="return refresh();">Refresh</button>
+          <button type="button" class="buttons" onclick="return onOK();">OK</button>
+          <button type="button" class="buttons" onclick="return onCancel();">Cancel</button>
+    </div>
+</form>
+</body>
+</html>

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/ExtendedFileManager/prompt.html
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/ExtendedFileManager/prompt.html?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/ExtendedFileManager/prompt.html (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/ExtendedFileManager/prompt.html Fri Sep 21 03:36:30 2007
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+<head>
+<title></title>
+ <script type="text/javascript" src="../../popups/popup.js"></script>
+ <style type="text/css">
+ /*<![CDATA[*/
+ html, body {  background-color: ButtonFace;  color: ButtonText; font: 11px Tahoma,Verdana,sans-serif; margin: 0; padding: 0;}
+body { padding: 5px; }
+ .title { background-color: #ddf; color: #000; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px; border-bottom: 1px  solid black; letter-spacing: 2px;}
+select, input, button { font: 11px Tahoma,Verdana,sans-serif; }
+.buttons { width: 70px; text-align: center; }
+form { padding: 0px;  margin: 0;}
+form .elements{
+	padding: 10px; text-align: center;
+}
+ /*]]>*/
+ </style>
+<script type="text/javascript" src="../../popups/popup.js"></script>
+<script type="text/javascript">
+/*<![CDATA[*/
+	
+    if(window.opener)
+        HTMLArea = window.opener.HTMLArea;
+
+	init = function ()
+	{
+		__dlg_translate('ImageManager');
+		
+		var param = opener.Dialog._arguments;
+		
+		if ( param )
+		{
+		  if ( param.title )
+		  {
+		    document.title = param.title;
+		    document.getElementById("title").innerHTML = param.title;
+		  }
+		  if ( param.prompt )
+		  {
+		    document.getElementById("prompt").innerHTML = param.prompt;
+		  }
+		  if ( param.value )
+		  {
+		    document.getElementById("f_input").value = param.value;
+		  }
+		}
+		document.getElementById("f_input").focus();
+		
+		__xinha_dlg_init();
+		
+	};
+
+	function onCancel()
+	{
+		__dlg_close(null);
+		return false;
+	}
+
+	function onOK()
+	{
+		 // pass data back to the calling window
+	  __dlg_close({value:document.getElementById("f_input").value});
+	  return false;
+	}
+
+	function addEvent(obj, evType, fn)
+	{
+		if (obj.addEventListener) { obj.addEventListener(evType, fn, true); return true; }
+		else if (obj.attachEvent) {  var r = obj.attachEvent("on"+evType, fn);  return r;  }
+		else {  return false; }
+	}
+
+	addEvent(window, 'load', init);
+//-->
+</script>
+</head>
+<body >
+<div class="title" id="title" style="white-space:nowrap">Please enter value</div>
+<form action="">
+<div class="elements">
+	<label for="f_input" id="prompt"></label>
+	<input type="text" id="f_input" style="width:50%"/>
+</div>
+<div style="text-align: right;">
+	  <hr />
+	  <button type="button" class="buttons" onclick="return onOK();">OK</button>
+	  <button type="button" class="buttons" onclick="return onCancel();">Cancel</button>
+</div>
+</form>
+</body>
+</html>
\ No newline at end of file

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/ExtendedFileManager/resizer.php
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/ExtendedFileManager/resizer.php?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/ExtendedFileManager/resizer.php (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/ExtendedFileManager/resizer.php Fri Sep 21 03:36:30 2007
@@ -0,0 +1,83 @@
+<?php
+header('Content-Type: text/javascript');
+
+/**
+ * Resize images to a given size, and saving in a new file.
+ * resize.php?img=/relative/path/to/image.jpg&width=<pixels>&height=<pixels>[&to=/relative/path/to/newimage.jpg]
+ * relative to the base_dir given in config.inc.php
+ * This is pretty much just thumbs.php with some mods, I'm too lazy to do it properly
+ * @author $Author: ray $
+ * @version $Id: resizer.php 677 2007-01-19 22:24:36Z ray $
+ * @package ImageManager
+ */
+
+require_once('config.inc.php');
+require_once('Classes/ExtendedFileManager.php');
+require_once('../ImageManager/Classes/Thumbnail.php');
+
+function js_fail($message)    { echo 'alert(\'ha ' . $message . '\'); false'; exit;   }
+function js_success($resultFile)    { echo '\'' . $resultFile . '\''; exit;   }
+
+//check for img parameter in the url
+if(!isset($_GET['img']) || !isset($_GET['width']) || !isset($_GET['height']))
+{
+  js_fail('Missing parameter.');
+}
+
+$manager = new ExtendedFileManager($IMConfig);
+
+//get the image and the full path to the image
+$image = $_GET['img'];
+$fullpath = Files::makeFile($manager->getImagesDir(),$image);
+
+//not a file, so exit
+if(!is_file($fullpath))
+{
+  js_fail("File {$fullpath} does not exist.");
+}
+
+$imgInfo = @getImageSize($fullpath);
+
+//Not an image, bail out.
+if(!is_array($imgInfo))
+{
+	js_fail("File {$fullpath} is not an image.");
+}
+
+if(!isset($_GET['to']))
+{
+  $resized    = $manager->getResizedName($fullpath,$_GET['width'],$_GET['height']);
+  $_GET['to'] = $manager->getResizedName($image,$_GET['width'],$_GET['height'], FALSE);
+}
+else
+{
+  $resized = Files::makeFile($manager->getImagesDir(),$_GET['to']);
+}
+
+// Check to see if it already exists
+if(is_file($resized))
+{
+	// And is newer
+	if(filemtime($resized) >= filemtime($fullpath))
+	{
+		js_success($_GET['to']);
+	}
+}
+
+
+
+// resize (thumbnailer will do this for us just fine)
+$thumbnailer = new Thumbnail($_GET['width'],$_GET['height']);
+$thumbnailer->proportional = FALSE;
+$thumbnailer->createThumbnail($fullpath, $resized);
+
+// did it work?
+if(is_file($resized))
+{
+	js_success($_GET['to']);
+}
+else
+{
+	js_fail("Resize Failed.");
+}
+?>
\ No newline at end of file

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/ExtendedFileManager/thumbs.php
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/ExtendedFileManager/thumbs.php?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/ExtendedFileManager/thumbs.php (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/ExtendedFileManager/thumbs.php Fri Sep 21 03:36:30 2007
@@ -0,0 +1,85 @@
+<?php
+/**
+ * On the fly Thumbnail generation.
+ * Creates thumbnails given by thumbs.php?img=/relative/path/to/image.jpg
+ * relative to the base_dir given in config.inc.php
+ * Authors: Wei Zhuo, Afru, Krzysztof Kotowicz
+ * Version: Updated on 08-01-2005 by Afru
+ * Version: Updated on 21-06-2006 by Krzysztof Kotowicz
+ * Package: ExtendedFileManager (EFM 1.1.1)
+ * http://www.afrusoft.com/htmlarea
+ */
+if(isset($_REQUEST['mode'])) $insertMode=$_REQUEST['mode'];
+if(!isset($insertMode)) $insertMode="image";
+
+require_once('config.inc.php');
+require_once('Classes/ExtendedFileManager.php');
+require_once('../ImageManager/Classes/Thumbnail.php');
+
+//check for img parameter in the url
+if(!isset($_GET['img']))
+	exit();
+
+$manager = new ExtendedFileManager($IMConfig,$insertMode);
+
+//get the image and the full path to the image
+$image = rawurldecode($_GET['img']);
+$fullpath = Files::makeFile($manager->getImagesDir(),$image);
+
+//not a file, so exit
+if(!is_file($fullpath))
+	exit();
+
+$imgInfo = @getImageSize($fullpath);
+
+//Not an image, send default thumbnail
+if(!is_array($imgInfo))
+{
+	//show the default image, otherwise we quit!
+	$default = $manager->getDefaultThumb();
+	if($default)
+	{
+		header('Location: '.$default);
+		exit();
+	}
+}
+//if the image is less than the thumbnail dimensions
+//send the original image as thumbnail
+if ($imgInfo[0] <= $IMConfig['thumbnail_width']
+ && $imgInfo[1] <= $IMConfig['thumbnail_height'])
+ {
+	 header('Location: '.$manager->getFileURL($image));
+	 exit();
+ }
+
+//Check for thumbnails
+$thumbnail = $manager->getThumbName($fullpath);
+if(is_file($thumbnail))
+{
+	//if the thumbnail is newer, send it
+	if(filemtime($thumbnail) >= filemtime($fullpath))
+	{
+		header('Location: '.$manager->getThumbURL($image));
+		exit();
+	}
+}
+
+//creating thumbnails
+$thumbnailer = new Thumbnail($IMConfig['thumbnail_width'],$IMConfig['thumbnail_height']);
+$thumbnailer->createThumbnail($fullpath, $thumbnail);
+
+//Check for NEW thumbnails
+if(is_file($thumbnail))
+{
+	//send the new thumbnail
+	header('Location: '.$manager->getThumbURL($image));
+	exit();
+}
+else
+{
+	//show the default image, otherwise we quit!
+	$default = $manager->getDefaultThumb();
+	if($default)
+		header('Location: '.$default);
+}
+?>
\ No newline at end of file

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/Filter/filter.js
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/Filter/filter.js?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/Filter/filter.js (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/Filter/filter.js Fri Sep 21 03:36:30 2007
@@ -0,0 +1,68 @@
+// Filter plugin for HTMLArea
+// Implementation by Udo Schmal & Schaffrath NeueMedien
+// Original Author - Udo Schmal
+//
+// (c) Udo Schmal & Schaffrath NeueMedien 2004
+// Distributed under the same terms as HTMLArea itself.
+// This notice MUST stay intact for use (see license.txt).
+function Filter(editor) {
+  this.editor = editor;
+  var cfg = editor.config;
+  var self = this;
+  // register the toolbar buttons provided by this plugin
+  cfg.registerButton({
+  id: "filter",
+  tooltip  : this._lc("Filter"),
+  image    : editor.imgURL("ed_filter.gif", "Filter"),
+  textMode : false,
+  action   : function(editor) {
+               self.buttonPress(editor);
+             }
+  });
+  if (!cfg.Filters)
+    cfg.Filters = ["Paragraph","Word"];
+  for (var i = 0; i < editor.config.Filters.length; i++) {
+    self.add(editor.config.Filters[i]);
+  }
+  cfg.addToolbarElement("filter", "removeformat", 1);
+}
+
+Filter._pluginInfo =
+{
+  name          : "Filter",
+  version       : "1.0",
+  developer     : "Udo Schmal (gocher)",
+  developer_url : "",
+  sponsor       : "L.N.Schaffrath NeueMedien",
+  sponsor_url   : "http://www.schaffrath-neuemedien.de/",
+  c_owner       : "Udo Schmal & Schaffrath-NeueMedien",
+  license       : "htmlArea"
+};
+
+Filter.prototype.add = function(filterName) {
+  if(eval('typeof ' + filterName) == 'undefined') {
+    var filter = _editor_url + "plugins/filter/filters/" + filterName + ".js";
+    var head = document.getElementsByTagName("head")[0];
+    var evt = HTMLArea.is_ie ? "onreadystatechange" : "onload";
+    var script = document.createElement("script");
+    script.type = "text/javascript";
+    script.src = filter;
+    script[evt] = function() {
+      if(HTMLArea.is_ie && !/loaded|complete/.test(window.event.srcElement.readyState))  return;
+    }
+    head.appendChild(script);
+    //document.write("<script type='text/javascript' src='" + plugin_file + "'></script>");
+  }
+};
+
+Filter.prototype._lc = function(string) {
+    return HTMLArea._lc(string, 'Filter');
+};
+
+Filter.prototype.buttonPress = function(editor) {
+  var html = editor.getInnerHTML();
+  for (var i = 0; i < editor.config.Filters.length; i++) {
+    html = eval(editor.config.Filters[i])(html);
+  }
+  editor.setHTML(html);
+};
\ No newline at end of file

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/Filter/filters/paragraph.js
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/Filter/filters/paragraph.js?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/Filter/filters/paragraph.js (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/Filter/filters/paragraph.js Fri Sep 21 03:36:30 2007
@@ -0,0 +1,6 @@
+Paragraph = function(html) {
+  html = html.replace(/<\s*p[^>]*>/gi, '');
+  html = html.replace(/<\/\s*p\s*>/gi, '');
+  html = html.trim();
+  return html;
+};
\ No newline at end of file

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/Filter/filters/word.js
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/Filter/filters/word.js?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/Filter/filters/word.js (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/Filter/filters/word.js Fri Sep 21 03:36:30 2007
@@ -0,0 +1,53 @@
+Word = function(html) {
+    // Remove HTML comments
+	html = html.replace(/<!--[\w\s\d@{}:.;,'"%!#_=&|?~()[*+\/\-\]]*-->/gi, "" );
+	html = html.replace(/<!--[^\0]*-->/gi, '');
+    // Remove all HTML tags
+	html = html.replace(/<\/?\s*HTML[^>]*>/gi, "" );
+    // Remove all BODY tags
+    html = html.replace(/<\/?\s*BODY[^>]*>/gi, "" );
+    // Remove all META tags
+	html = html.replace(/<\/?\s*META[^>]*>/gi, "" );
+    // Remove all SPAN tags
+	html = html.replace(/<\/?\s*SPAN[^>]*>/gi, "" );
+	// Remove all FONT tags
+    html = html.replace(/<\/?\s*FONT[^>]*>/gi, "");
+    // Remove all IFRAME tags.
+    html = html.replace(/<\/?\s*IFRAME[^>]*>/gi, "");
+    // Remove all STYLE tags & content
+	html = html.replace(/<\/?\s*STYLE[^>]*>(.|[\n\r\t])*<\/\s*STYLE\s*>/gi, "" );
+    // Remove all TITLE tags & content
+	html = html.replace(/<\s*TITLE[^>]*>(.|[\n\r\t])*<\/\s*TITLE\s*>/gi, "" );
+	// Remove javascript
+    html = html.replace(/<\s*SCRIPT[^>]*>[^\0]*<\/\s*SCRIPT\s*>/gi, "");
+    // Remove all HEAD tags & content
+	html = html.replace(/<\s*HEAD[^>]*>(.|[\n\r\t])*<\/\s*HEAD\s*>/gi, "" );
+	// Remove Class attributes
+	html = html.replace(/<\s*(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3") ;
+	// Remove Style attributes
+	html = html.replace(/<\s*(\w[^>]*) style="([^"]*)"([^>]*)/gi, "<$1$3") ;
+	// Remove Lang attributes
+	html = html.replace(/<\s*(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ;
+	// Remove XML elements and declarations
+	html = html.replace(/<\\?\?xml[^>]*>/gi, "") ;
+	// Remove Tags with XML namespace declarations: <o:p></o:p>
+	html = html.replace(/<\/?\w+:[^>]*>/gi, "") ;
+	// Replace the &nbsp;
+	html = html.replace(/&nbsp;/, " " );
+
+	// Transform <p><br /></p> to <br>
+	//html = html.replace(/<\s*p[^>]*>\s*<\s*br\s*\/>\s*<\/\s*p[^>]*>/gi, "<br>");
+	html = html.replace(/<\s*p[^>]*><\s*br\s*\/?>\s*<\/\s*p[^>]*>/gi, "<br>");
+	
+	// Remove <P> 
+	html = html.replace(/<\s*p[^>]*>/gi, "");
+	
+	// Replace </p> with <br>
+	html = html.replace(/<\/\s*p[^>]*>/gi, "<br>");
+	
+	// Remove any <br> at the end
+	html = html.replace(/(\s*<br>\s*)*$/, "");
+	
+	html = html.trim();
+	return html;
+};
\ No newline at end of file

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/Filter/img/ed_filter.gif
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/Filter/img/ed_filter.gif?rev=578051&view=auto
==============================================================================
Binary file - no diff available.

Propchange: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/Filter/img/ed_filter.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/Filter/lang/ja.js
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/Filter/lang/ja.js?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/Filter/lang/ja.js (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/Filter/lang/ja.js Fri Sep 21 03:36:30 2007
@@ -0,0 +1,5 @@
+// I18N constants
+// LANG: "ja", ENCODING: UTF-8
+{
+  "Filter": "フィルター"
+};

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/find-replace.js
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/find-replace.js?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/find-replace.js (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/find-replace.js Fri Sep 21 03:36:30 2007
@@ -0,0 +1,42 @@
+/*---------------------------------------*\
+ Find and Replace Plugin for HTMLArea-3.0
+ -----------------------------------------
+ author: Cau guanabara 
+ e-mail: caugb@ibest.com.br
+\*---------------------------------------*/
+
+function FindReplace(editor) {
+this.editor = editor;
+var cfg = editor.config;
+var self = this;
+cfg.registerButton("FR-findreplace", this._lc("Find and Replace"),
+                   editor.imgURL("ed_find.gif", "FindReplace"), false,
+                   function(editor) { self.buttonPress(editor); });
+cfg.addToolbarElement(["FR-findreplace","separator"], ["formatblock","fontsize","fontname"], -1);
+}
+
+FindReplace.prototype.buttonPress = function(editor) { 
+FindReplace.editor = editor;
+var sel = editor.getSelectedHTML();
+  if(/\w/.test(sel)) {
+  sel = sel.replace(/<[^>]*>/g,"");
+  sel = sel.replace(/&nbsp;/g,"");
+  }
+var param = /\w/.test(sel) ? {fr_pattern: sel} : null;
+editor._popupDialog("plugin://FindReplace/find_replace", null, param);
+};
+
+FindReplace._pluginInfo = {
+  name          : "FindReplace",
+  version       : "1.0 - beta",
+  developer     : "Cau Guanabara",
+  developer_url : "mailto:caugb@ibest.com.br",
+  c_owner       : "Cau Guanabara",
+  sponsor       : "Independent production",
+  sponsor_url   : "http://www.netflash.com.br/gb/HA3-rc1/examples/find-replace.html",
+  license       : "htmlArea"
+};
+
+FindReplace.prototype._lc = function(string) {
+    return HTMLArea._lc(string, 'FindReplace');
+};
\ No newline at end of file

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/fr_engine.js
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/fr_engine.js?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/fr_engine.js (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/fr_engine.js Fri Sep 21 03:36:30 2007
@@ -0,0 +1,144 @@
+var FindReplace=window.opener.FindReplace;
+var editor=FindReplace.editor;
+var is_mo=window.opener.HTMLArea.is_gecko;
+var tosearch="";
+var pater=null;
+var buffer=null;
+var matches=0;
+var replaces=0;
+var fr_spans=new Array();
+function _lc(_1){
+return (window.opener.HTMLArea._lc(_1,"FindReplace"));
+}
+function execSearch(_2){
+var _3=editor._doc.body.innerHTML;
+if(buffer==null){
+buffer=_3;
+}
+if(_2["fr_pattern"]!=tosearch){
+if(tosearch!=""){
+clearDoc();
+}
+tosearch=_2["fr_pattern"];
+}
+if(matches==0){
+er=_2["fr_words"]?"/(?!<[^>]*)(\\b"+_2["fr_pattern"]+"\\b)(?![^<]*>)/g":"/(?!<[^>]*)("+_2["fr_pattern"]+")(?![^<]*>)/g";
+if(!_2["fr_matchcase"]){
+er+="i";
+}
+pater=eval(er);
+var _4="<span id=frmark>";
+var _5="</span>";
+var _6=_3.replace(pater,_4+"$1"+_5);
+editor.setHTML(_6);
+var _7=editor._doc.body.getElementsByTagName("span");
+for(var i=0;i<_7.length;i++){
+if(/^frmark/.test(_7[i].id)){
+fr_spans.push(_7[i]);
+}
+}
+}
+spanWalker(_2["fr_pattern"],_2["fr_replacement"],_2["fr_replaceall"]);
+}
+function spanWalker(_9,_a,_b){
+var _c=false;
+clearMarks();
+for(var i=matches;i<fr_spans.length;i++){
+var _e=fr_spans[i];
+_c=true;
+if(!(/[0-9]$/.test(_e.id))){
+matches++;
+disab("fr_clear",false);
+_e.id="frmark_"+matches;
+_e.style.color="white";
+_e.style.backgroundColor="highlight";
+_e.style.fontWeight="bold";
+_e.scrollIntoView(false);
+if(/\w/.test(_a)){
+if(_b||confirm(_lc("Substitute this occurrence?"))){
+_e.firstChild.replaceData(0,_e.firstChild.data.length,_a);
+replaces++;
+disab("fr_undo",false);
+}
+if(_b){
+clearMarks();
+continue;
+}
+}
+break;
+}
+}
+var _f=(i>=fr_spans.length-1);
+if(_f||!_c){
+var _10=_lc("Done")+":\n\n";
+if(matches>0){
+if(matches==1){
+_10+=matches+" "+_lc("found item");
+}else{
+_10+=matches+" "+_lc("found items");
+}
+if(replaces>0){
+if(replaces==1){
+_10+=",\n"+replaces+" "+_lc("replaced item");
+}else{
+_10+=",\n"+replaces+" "+_lc("replaced items");
+}
+}
+hiliteAll();
+disab("fr_hiliteall",false);
+}else{
+_10+="\""+_9+"\" "+_lc("not found");
+}
+alert(_10+".");
+}
+}
+function clearDoc(){
+var doc=editor._doc.body.innerHTML;
+var er=/(<span\s+[^>]*id=.?frmark[^>]*>)([^<>]*)(<\/span>)/gi;
+editor._doc.body.innerHTML=doc.replace(er,"$2");
+pater=null;
+tosearch="";
+fr_spans=new Array();
+matches=0;
+replaces=0;
+disab("fr_hiliteall,fr_clear",true);
+}
+function clearMarks(){
+var _13=editor._doc.body.getElementsByTagName("span");
+for(var i=0;i<_13.length;i++){
+var elm=_13[i];
+if(/^frmark/.test(elm.id)){
+var _16=editor._doc.getElementById(elm.id).style;
+_16.backgroundColor="";
+_16.color="";
+_16.fontWeight="";
+}
+}
+}
+function hiliteAll(){
+var _17=editor._doc.body.getElementsByTagName("span");
+for(var i=0;i<_17.length;i++){
+var elm=_17[i];
+if(/^frmark/.test(elm.id)){
+var _1a=editor._doc.getElementById(elm.id).style;
+_1a.backgroundColor="highlight";
+_1a.color="white";
+_1a.fontWeight="bold";
+}
+}
+}
+function resetContents(){
+if(buffer==null){
+return;
+}
+var _1b=editor._doc.body.innerHTML;
+editor._doc.body.innerHTML=buffer;
+buffer=_1b;
+}
+function disab(_1c,_1d){
+var _1e=_1c.split(/[,; ]+/);
+for(var i=0;i<_1e.length;i++){
+document.getElementById(_1e[i]).disabled=_1d;
+}
+}
+

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/img/ed_find.gif
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/img/ed_find.gif?rev=578051&view=auto
==============================================================================
Binary file - no diff available.

Propchange: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/img/ed_find.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/de.js
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/de.js?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/de.js (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/de.js Fri Sep 21 03:36:30 2007
@@ -0,0 +1,27 @@
+// I18N constants
+// LANG: "de", ENCODING: UTF-8
+// translated: Udo Schmal (gocher), http://www.schaffrath-neuemedien.de/, udo.schmal@t-online.de
+{
+  // messages
+  "Substitute this occurrence?": "Treffer ersetzen?",
+  "Enter the text you want to find": "Geben Sie einen Text ein den Sie finden möchten",
+  "Inform a replacement word": "Geben sie einen Text zum ersetzen ein",
+  "found items": "alle Treffer",
+  "replaced items": "ersetzte Treffer",
+  "found item": "Treffer",
+  "replaced item": "ersetzter Treffer",
+  "not found": "kein Teffer",
+  // window
+  "Find and Replace": "Suchen und ersetzen",
+  "Search for:": "Suchen nach:",
+  "Replace with:": "Ersetzen durch:",
+  "Options": "Optionen",
+  "Whole words only": "Ganze Wörter",
+  "Case sensitive search": "Groß-/Kleinschreibung",
+  "Substitute all occurrences": "alle Treffer ersetzen",
+  "Clear": "Nächstes ersetzen",
+  "Highlight": "Hervorheben",
+  "Undo": "Rückgängig",
+  "Next": "Nächster",
+  "Done": "Fertig"
+};
\ No newline at end of file

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/fr.js
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/fr.js?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/fr.js (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/fr.js Fri Sep 21 03:36:30 2007
@@ -0,0 +1,26 @@
+// I18N constants
+// LANG: "fr", ENCODING: UTF-8
+{
+  // messages
+  "Substitute this occurrence?": "Remplacer cette occurrence ?",
+  "Enter the text you want to find": "Texte à trouver",
+  "Inform a replacement word": "Indiquez un mot de remplacement",
+  "found items": "éléments trouvés",
+  "replaced items": "éléments remplacés",
+  "found item": "élément trouvé",
+  "replaced item": "élément remplacé",
+  "not found": "non trouvé",
+  // window
+  "Find and Replace": "Chercher et Remplacer",
+  "Search for:": "Chercher",
+  "Replace with:": "Remplacer par",
+  "Options": "Options",
+  "Whole words only": "Mots entiers seulement",
+  "Case sensitive search": "Recherche sensible à la casse",
+  "Substitute all occurrences": "Remplacer toutes les occurences",
+  "Clear": "Effacer",
+  "Highlight": "Surligner",
+  "Undo": "Annuler",
+  "Next": "Suivant",
+  "Done": "Fin"
+};
\ No newline at end of file

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/ja.js
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/ja.js?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/ja.js (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/ja.js Fri Sep 21 03:36:30 2007
@@ -0,0 +1,26 @@
+// I18N constants
+// LANG: "ja", ENCODING: UTF-8
+{
+  // messages
+  "Substitute this occurrence?": "置換しますか?",
+  "Enter the text you want to find": "検索したいテキストを入力します",
+  "Inform a replacement word": "単語の置換を知らせる",
+  "found items": "件が検索されました",
+  "replaced items": "件が置換されました",
+  "found item": "件が検索されました",
+  "replaced item": "件が置換されました",
+  "not found": "はありません",
+  // window
+  "Find and Replace": "検索/置換",
+  "Search for:": "検索:",
+  "Replace with:": "置換:",
+  "Options": "設定",
+  "Whole words only": "完全一致のみ",
+  "Case sensitive search": "大文字/小文字区別",
+  "Substitute all occurrences": "すべて置換",
+  "Clear": "通常表示",
+  "Highlight": "強調表示",
+  "Undo": "元に戻す",
+  "Next": "次を検索",
+  "Done": "終了"
+};
\ No newline at end of file

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/nb.js
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/nb.js?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/nb.js (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/nb.js Fri Sep 21 03:36:30 2007
@@ -0,0 +1,27 @@
+// I18N constants
+// LANG: "nb", ENCODING: UTF-8
+// translated: Kim Steinhaug, http://www.steinhaug.com/, kim@steinhaug.com
+{
+  // messages
+  "Substitute this occurrence?": "Vennligst bekreft at du vil erstatte?",
+  "Enter the text you want to find": "Skriv inn teksten du ønsker å finne",
+  "Inform a replacement word": "Vennligst skriv inn et erstatningsord / setning",
+  "found items": "forekomster funnet i søket",
+  "replaced items": "forekomster erstattet",
+  "found item": "Treff",
+  "replaced item": "erstattet treff",
+  "not found": "ikke funnet",
+  // window
+  "Find and Replace": "Søk og erstatt",
+  "Search for:": "Søk etter:",
+  "Replace with:": "Erstatt med:",
+  "Options": "Valg", 
+  "Whole words only": "Bare hele ord",
+  "Case sensitive search": "Skille mellom store og små bokstaver",
+  "Substitute all occurrences": "Erstatt alle treff",
+  "Clear": "Tøm",
+  "Highlight": "Uthev",
+  "Undo": "Tilbake",
+  "Next": "Neste",
+  "Done": "Ferdig"
+};
\ No newline at end of file

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/pl.js
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/pl.js?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/pl.js (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/pl.js Fri Sep 21 03:36:30 2007
@@ -0,0 +1,27 @@
+// I18N constants
+// LANG: "pl", ENCODING: UTF-8
+// translated: Krzysztof Kotowicz, koto1sa@o2.pl, http://www.eskot.krakow.pl/portfolio
+{
+  // messages
+  "Substitute this occurrence?": "Zamienić to wystąpienie?",
+  "Enter the text you want to find": "Podaj tekst, jaki chcesz wyszukać",
+  "Inform a replacement word": "Podaj tekst do zamiany",
+  "found items": "znalezionych",
+  "replaced items": "zamienionych",
+  "found item": "znaleziony",
+  "replaced item": "zamieniony",
+  "not found": "nie znaleziony",
+  // window
+  "Find and Replace": "Znajdź i zamień",
+  "Search for:": "Szukaj:",
+  "Replace with:": "Zamień na:",
+  "Options": "Opcje",
+  "Whole words only": "Całe słowa",
+  "Case sensitive search": "Wg wielkości liter",
+  "Substitute all occurrences": "Zamień wszystkie wystąpienia",
+  "Clear": "Wyczyść",
+  "Highlight": "Podświetl",
+  "Undo": "Cofnij",
+  "Next": "Następny",
+  "Done": "Gotowe"
+};
\ No newline at end of file

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/pt_br.js
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/pt_br.js?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/pt_br.js (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/pt_br.js Fri Sep 21 03:36:30 2007
@@ -0,0 +1,27 @@
+// I18N constants
+// LANG: "pt-br"
+// Author: Cau guanabara (independent developer), caugb@ibest.com.br
+{
+  // mensagens
+  "Substitute this occurrence?": "Substituir?",
+  "Enter the text you want to find": "Digite um termo para a busca",
+  "Inform a replacement word": "Informe um termo para a substituição",
+  "found items": "itens localizados",
+  "replaced items": "itens substituídos",
+  "found item": "item localizado",
+  "replaced item": "item substituído",
+  "not found": "não encontrado", 
+  // janela
+  "Find and Replace": "Localizar e Substituir",
+  "Search for:": "Localizar:",
+  "Replace with:": "Substituir por:",
+  "Options": "Opções",
+  "Whole words only": "Apenas palavras inteiras",
+  "Case sensitive search": "Diferenciar caixa alta/baixa",
+  "Substitute all occurrences": "Substituir todas",
+  "Highlight": "Remarcar",
+  "Clear": "Limpar",
+  "Undo": "Desfazer",
+  "Next": "Próxima",
+  "Done": "Concluído"
+};

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/ru.js
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/ru.js?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/ru.js (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/ru.js Fri Sep 21 03:36:30 2007
@@ -0,0 +1,28 @@
+// I18N constants
+// LANG: "ru", ENCODING: UTF-8
+// Author: Andrei Blagorazumov, a@fnr.ru
+
+{
+  // messages
+  "Substitute this occurrence?": "Заменить это вхождение?",
+  "Enter the text you want to find": "Введите текст, который вы хотите найти",
+  "Inform a replacement word": "Показать замещающее слово",
+  "found items": "найти",
+  "replaced items": "замененные",
+  "found item": "найти",
+  "replaced item": "замененная",
+  "not found": "не найдено",
+  // window
+  "Find and Replace": "Найти и заменить",
+  "Search for:": "Найти",
+  "Replace with:": "Заменить с",
+  "Options": "Опции",
+  "Whole words only": "Только слова целиком",
+  "Case sensitive search": "Поиск с учетом регистра",
+  "Substitute all occurrences": "Заменить все вхождения",
+  "Clear": "Очистить",
+  "Highlight": "Выделить",
+  "Undo": "Отменить",
+  "Next": "След.",
+  "Done": "OK"
+};
\ No newline at end of file

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/sv.js
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/sv.js?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/sv.js (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/lang/sv.js Fri Sep 21 03:36:30 2007
@@ -0,0 +1,27 @@
+// I18N constants
+// LANG: "sv" (Swedish), ENCODING: UTF-8
+// translated: Erik Dalén, <da...@jpl.se>
+{
+  // messages
+  "Substitute this occurrence?": "Ersätt denna?",
+  "Enter the text you want to find": "Skriv in text du vill söka",
+  "Inform a replacement word": "Skriv in ett ersättningsord",
+  "found items": "förekomster funna i sökningen",
+  "replaced items": "förekomster erstatta",
+  "found item": "Träff",
+  "replaced item": "erstatt träff",
+  "not found": "inte funnet",
+  // window
+  "Find and Replace": "Sök och ersätt",
+  "Search for:": "Sök efter:",
+  "Replace with:": "Ersätt med:",
+  "Options": "Välj", 
+  "Whole words only": "Bara hela ord",
+  "Case sensitive search": "Skilj mellan stora och små bokstäver",
+  "Substitute all occurrences": "Erstatt alla träffar",
+  "Clear": "Töm",
+  "Highlight": "Markera",
+  "Undo": "Tillbaka",
+  "Next": "Nästa",
+  "Done": "Färdig"
+};

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/popups/find_replace.html
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/popups/find_replace.html?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/popups/find_replace.html (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FindReplace/popups/find_replace.html Fri Sep 21 03:36:30 2007
@@ -0,0 +1,162 @@
+<html>
+<head>
+  <title>Find and Replace</title>
+<!--
+/*---------------------------------------*\
+ Find and Replace Plugin for HTMLArea-3.0
+ -----------------------------------------
+ author: Cau guanabara 
+ e-mail: caugb@ibest.com.br
+\*---------------------------------------*/
+-->
+<script type="text/javascript" src="../fr_engine.js"></script>
+<script type="text/javascript" src="../../../popups/popup.js"></script>
+<link rel="stylesheet" type="text/css" href="../../../popups/popup.css" />
+
+<script type="text/javascript">
+
+window.resizeTo(335, 250);
+
+var accepted = {
+                'fr_pattern'       : true,
+                'fr_replacement'   : true,
+                'fr_words'         : true,
+                'fr_matchcase'     : true,
+                'fr_replaceall'    : true
+               };
+
+function Init() {
+__dlg_translate('FindReplace');
+__dlg_init();
+
+disab("fr_undo,fr_clear,fr_hiliteall",true);
+
+var params = window.dialogArguments;
+  if(params) {
+  document.getElementById('fr_pattern').value = params["fr_pattern"];
+  document.getElementById('fr_replacement').focus();
+  } else {
+  document.getElementById('fr_pattern').focus();
+  }
+  
+document.body.onkeypress = __dlg_key_press;
+}
+
+function onCancel() {
+  clearDoc();
+  __dlg_close(null);
+  return false;
+}
+
+function onOK() {
+  var required = {'fr_pattern' : _lc("Enter the text you want to find")};
+  for (var i in required) {
+    var el = document.getElementById(i);
+      if (!el.value) {
+        alert(required[i]);
+        el.focus();
+        return false;
+      }
+  }
+
+  var param = {};
+  for (var i in accepted) {
+  var el = document.getElementById(i);
+  param[i] = el.type == 'checkbox' ? el.checked : el.value;
+  }
+  execSearch(param);
+  return false;
+}
+
+function __dlg_key_press(ev) {
+ev || (ev = window.event);
+  switch(ev.keyCode) {
+    case 13:
+    document.getElementById('fr_go').click();
+    document.getElementById('fr_pattern').focus();
+      break;
+    case 27:
+    clearDoc();
+    window.close();
+    return false;
+  }
+return true;
+}
+
+</script>
+
+<style type="text/css">
+table .label { text-align: right; width: 12em; }
+.title {
+background: #ddf;
+color: #000;
+font-weight: bold;
+font-size: 120%;
+padding: 3px 10px;
+margin-bottom: 10px;
+border-bottom: 1px solid black;
+letter-spacing: 2px;
+}
+.buttons { border-top: 1px solid #999; padding: 2px; text-align: right; }
+.hrstyle { border-width: 1px; border-color: #666; width: 95%; padding: 2px; }
+</style>
+  </head>
+  <body class="dialog" onload="Init()">
+  <div class="title">Find and Replace</div>
+  <form action="" method="get">
+  <table border="0" style="width: 100%; padding: 2px;"><!---->
+    <tbody>
+      <tr> 
+        <td width="29%" align="right" valign="bottom">Search for:</td>
+        <td width="71%" colspan="2" valign="bottom"> 
+        <input id="fr_pattern" type="text" style="width: 200px" onFocus="this.select();"> 
+        </td>
+      </tr>
+      <tr> 
+        <td align="right">Replace with:</td>
+        <td colspan="2"> 
+        <input id="fr_replacement" type="text" style="width: 200px" onFocus="this.select();"> 
+        </td>
+      </tr>
+      <tr> 
+        <td colspan="3"><table width="100%" border="0" cellpadding="1" cellspacing="0">
+            <tr> 
+              <td width="78%" style="padding: 2px">
+              <FIELDSET style="width:90%; padding: 5px">
+                <LEGEND><span>Options</span></LEGEND>
+                  <input id="fr_words" type="checkbox" checked onClick="clearDoc();">
+                <span onClick="e = document.getElementById('fr_words'); 
+                e.click(); e.focus();" style="cursor:default"> 
+                  <span>Whole words only</span></span><br />
+                  <input id="fr_matchcase" type="checkbox" onClick="clearDoc();">
+                <span onClick="e = document.getElementById('fr_matchcase'); 
+                e.click(); e.focus();" style="cursor:default"> 
+                  <span>Case sensitive search</span></span><br />
+                  <input id="fr_replaceall" type="checkbox" onClick="
+                  if(document.getElementById('fr_replacement').value == '') {
+                  alert(_lc('Inform a replacement word'));
+                  return false;
+                  }
+                  clearDoc();">
+                <span onClick="e = document.getElementById('fr_replaceall'); 
+                e.click(); e.focus();" style="cursor:default"> 
+                  <span>Substitute all occurrences</span></span>
+                </FIELDSET></td>
+<td width="22%" align="center" valign="bottom" style="text-align: right; padding: 4px"> 
+<button type="button" id="fr_clear" onClick="clearMarks()">Clear</button>
+<div class="space"></div>
+<button type="button" id="fr_hiliteall" onClick="hiliteAll()">Highlight</button>
+<div class="space"></div>
+<button type="button" id="fr_undo" onClick="resetContents();">Undo</button>
+</td>
+            </tr>
+          </table></td>
+      </tr>
+    </tbody>
+  </table>
+<div style="border-top: 1px solid #999; padding: 2px; padding: 5px; text-align: right; height: 20px"><button type="button" id="fr_go" onclick="return onOK();">Next</button>
+<button type="button" name="cancel" onclick="return onCancel();">Done</button>
+</div>
+</form>
+</body>
+</html>
\ No newline at end of file

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/README
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/README?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/README (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/README Fri Sep 21 03:36:30 2007
@@ -0,0 +1,32 @@
+Form Operations Plugin
+----------------------
+
+Usage:
+  1. Follow the standard procedure for loading a plugin.
+  2. You may configure the plugin by setting the following configuration variables, or leave them as the defaults.
+
+      xinha_config.FormOperations.multiple_field_format
+        = 'php'
+              this will cause checkbox and "multiple" select fields to have []
+              appended to thier field names silently
+        = 'unmodified'
+              field names will not be silently modified
+
+      xinha_config.FormOperations.allow_edit_form
+        = true
+              the user will be able to edit the action, and method of forms
+        = false
+              neither action, nor method is editable
+
+      xinha_config.FormOperations.default_form_action
+        = 'whatever you want'
+              the default form action to set when inserting a form.  The standard one is a php file in the Form Operations directory which will email the form post to enquiries@<server hostname here>
+
+      xinha_config.FormOperations.default_form_html
+        = '<form>whatever you want here</form>'
+              the default html to insert when inserting a form.  The standard one is a basic contact form.  If you would like to specify an external file which contains the HTML for the form, you may do so via
+              = HTMLArea._geturlcontent('http://absolute/url/to/file.html')
+              see default_form.html for a suitable example, pay attention to the form tag.
+
+
+

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/default_form.html
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/default_form.html?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/default_form.html (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/default_form.html Fri Sep 21 03:36:30 2007
@@ -0,0 +1,36 @@
+<form>
+  <table class="contact_form">
+    <caption>Contact Us</caption>
+    <tbody>
+      <tr>
+        <th>Your name:</th>
+        <td><input type="text" name="Name" value="" /></td>
+      </tr>
+      <tr>
+        <th>Your email:</th>
+        <td><input type="text" name="Email" value="" /></td>
+      </tr>
+      <tr>
+        <th>Message Subject:</th>
+        <td><input type="text" name="Subject" value="" /></td>
+      </tr>
+      <tr>
+        <th>What are your hobbies?</th>
+        <td>
+          <input type="checkbox" value="Marbles" name="Hobbies[]" /> Marbles <br />
+          <input type="checkbox" value="Conkers" name="Hobbies[]" /> Conkers <br />
+          <input type="checkbox" value="Jacks" name="Hobbies[]" /> Jacks
+        </td>
+      </tr>
+      <tr>
+        <th>Message Body:</th>
+      </tr>
+      <tr>
+        <td colspan="2">
+          <textarea name="Message"> </textarea>
+        </td>
+      </tr>
+    </tbody>
+  </table>
+  <input type="submit" value="Send" /> &nbsp;&nbsp; <input type="reset" value="Reset" />
+</form>
\ No newline at end of file

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/form-operations.js
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/form-operations.js?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/form-operations.js (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/form-operations.js Fri Sep 21 03:36:30 2007
@@ -0,0 +1,432 @@
+Xinha.Config.prototype.FormOperations={"multiple_field_format":"php","allow_edit_form":false,"default_form_action":_editor_url+"plugins/FormOperations/formmail.php","default_form_html":Xinha._geturlcontent(_editor_url+"plugins/FormOperations/default_form.html")};
+FormOperations._pluginInfo={name:"FormOperations",version:"1.0",developer:"James Sleeman",developer_url:"http://www.gogo.co.nz/",c_owner:"Gogo Internet Services",license:"htmlArea",sponsor:"Gogo Internet Services",sponsor_url:"http://www.gogo.co.nz/"};
+function FormOperations(_1){
+this.editor=_1;
+this.panel=false;
+this.html=false;
+this.ready=false;
+this.activeElement=null;
+this._preparePanel();
+_1.config.pageStyleSheets.push(_editor_url+"plugins/FormOperations/iframe.css");
+var _2=["separator","insert_form","insert_text_field","insert_textarea_field","insert_select_field","insert_cb_field","insert_rb_field","insert_button"];
+this.editor.config.toolbar.push(_2);
+function pasteAndSelect(_3){
+var id=Xinha.uniq("fo");
+_3=_3.replace(/^<([^ \/>]+)/i,"<$1 id=\""+id+"\"");
+_1.insertHTML(_3);
+var el=_1._doc.getElementById(id);
+el.setAttribute("id","");
+_1.selectNodeContents(el);
+_1.updateToolbar();
+return el;
+}
+var _6=_1.imgURL("buttons.gif","FormOperations");
+FormOperations.prototype._lc=function(_7){
+return Xinha._lc(_7,"FormOperations");
+};
+this.editor.config.btnList.insert_form=[this._lc("Insert a Form."),[_6,0,0],false,function(){
+var _8=null;
+if(_1.config.FormOperations.default_form_html){
+_8=pasteAndSelect(_1.config.FormOperations.default_form_html);
+}else{
+_8=pasteAndSelect("<form>&nbsp;</form>");
+}
+if(_1.config.FormOperations.default_form_action&&!_8.action){
+_8.action=_1.config.FormOperations.default_form_action;
+}
+}];
+this.editor.config.btnList.insert_text_field=[this._lc("Insert a text, password or hidden field."),[_6,1,0],false,function(){
+pasteAndSelect("<input type=\"text\" />");
+},"form"];
+this.editor.config.btnList.insert_textarea_field=[this._lc("Insert a multi-line text field."),[_6,2,0],false,function(){
+pasteAndSelect("<textarea> </textarea>");
+},"form"];
+this.editor.config.btnList.insert_select_field=[this._lc("Insert a select field."),[_6,3,0],false,function(){
+pasteAndSelect("<select> <option value=\"\">Please Select...</option> </select>");
+},"form"];
+this.editor.config.btnList.insert_cb_field=[this._lc("Insert a check box."),[_6,4,0],false,function(){
+pasteAndSelect("<input type=\"checkbox\" />");
+},"form"];
+this.editor.config.btnList.insert_rb_field=[this._lc("Insert a radio button."),[_6,5,0],false,function(){
+pasteAndSelect("<input type=\"radio\" />");
+},"form"];
+this.editor.config.btnList.insert_button=[this._lc("Insert a submit/reset button."),[_6,6,0],false,function(){
+pasteAndSelect("<input type=\"submit\" value=\"Send\" />");
+},"form"];
+}
+FormOperations.prototype.onGenerate=function(){
+if(Xinha.is_gecko){
+var _9=this.editor;
+var _a=this.editor._doc;
+Xinha._addEvents(_a,["mousemove"],function(_b){
+return _9._editorEvent(_b);
+});
+}
+};
+FormOperations.prototype._preparePanel=function(){
+var fo=this;
+if(this.html==false){
+Xinha._getback(_editor_url+"plugins/FormOperations/panel.html",function(_d){
+fo.html=_d;
+fo._preparePanel();
+});
+return false;
+}
+if(typeof Xinha.Dialog=="undefined"){
+Xinha._loadback(_editor_url+"modules/Dialogs/inline-dialog.js",function(){
+fo._preparePanel();
+});
+return false;
+}
+if(typeof Xinha.PanelDialog=="undefined"){
+Xinha._loadback(_editor_url+"modules/Dialogs/panel-dialog.js",function(){
+fo._preparePanel();
+});
+return false;
+}
+this.panel=new Xinha.PanelDialog(this.editor,"bottom",this.html,"FormOperations");
+this.panel.hide();
+this.ready=true;
+};
+FormOperations.prototype.onUpdateToolbar=function(){
+if(!this.ready){
+return true;
+}
+var _e=this.editor._activeElement(this.editor._getSelection());
+if(_e!=null){
+if(_e==this.activeElement){
+return true;
+}
+var _f=_e.tagName.toLowerCase();
+this.hideAll();
+if(_f==="form"){
+if(this.editor.config.FormOperations.allow_edit_form){
+this.showForm(_e);
+}else{
+this.panel.hide();
+this.activeElement=null;
+this.panel.hide();
+return true;
+}
+}else{
+if(this.editor.config.FormOperations.allow_edit_form&&typeof _e.form!="undefined"&&_e.form){
+this.showForm(_e.form);
+}
+switch(_f){
+case "form":
+this.showForm(_e);
+break;
+case "input":
+switch(_e.getAttribute("type").toLowerCase()){
+case "text":
+case "password":
+case "hidden":
+this.showText(_e);
+break;
+case "radio":
+case "checkbox":
+this.showCbRd(_e);
+break;
+case "submit":
+case "reset":
+case "button":
+this.showButton(_e);
+break;
+}
+break;
+case "textarea":
+this.showTextarea(_e);
+break;
+case "select":
+this.showSelect(_e);
+break;
+default:
+this.activeElement=null;
+this.panel.hide();
+return true;
+}
+}
+this.panel.show();
+this.activeElement=_e;
+return true;
+}else{
+this.activeElement=null;
+this.panel.hide();
+return true;
+}
+};
+FormOperations.prototype.hideAll=function(){
+this.panel.getElementById("fs_form").style.display="none";
+this.panel.getElementById("fs_text").style.display="none";
+this.panel.getElementById("fs_textarea").style.display="none";
+this.panel.getElementById("fs_select").style.display="none";
+this.panel.getElementById("fs_cbrd").style.display="none";
+this.panel.getElementById("fs_button").style.display="none";
+};
+FormOperations.prototype.showForm=function(_10){
+this.panel.getElementById("fs_form").style.display="";
+var _11={"action":_10.action,"method":_10.method.toUpperCase()};
+this.panel.setValues(_11);
+var f=_10;
+this.panel.getElementById("action").onkeyup=function(){
+f.action=this.value;
+};
+this.panel.getElementById("method").onchange=function(){
+f.method=this.options[this.selectedIndex].value;
+};
+};
+FormOperations.prototype.showText=function(_13){
+this.panel.getElementById("fs_text").style.display="";
+var _14={"text_name":this.deformatName(_13,_13.name),"text_value":_13.value,"text_type":_13.type.toLowerCase(),"text_width":_13.style.width?parseFloat(_13.style.width.replace(/[^0-9.]/,"")):"","text_width_units":_13.style.width?_13.style.width.replace(/[0-9.]/,"").toLowerCase():"ex","text_maxlength":_13.maxlength?_13.maxlength:""};
+this.panel.setValues(_14);
+var i=_13;
+var fo=this;
+this.panel.getElementById("text_name").onkeyup=function(){
+i.name=fo.formatName(i,this.value);
+};
+this.panel.getElementById("text_value").onkeyup=function(){
+i.value=this.value;
+};
+this.panel.getElementById("text_type").onchange=function(){
+if(!Xinha.is_ie){
+i.type=this.options[this.selectedIndex].value;
+}else{
+var _17=fo.editor._doc.createElement("div");
+if(!/type=/.test(i.outerHTML)){
+_17.innerHTML=i.outerHTML.replace(/<INPUT/i,"<input type=\""+this.options[this.selectedIndex].value+"\"");
+}else{
+_17.innerHTML=i.outerHTML.replace(/type="?[a-z]+"?/i,"type=\""+this.options[this.selectedIndex].value+"\"");
+}
+var _18=Xinha.removeFromParent(_17.childNodes[0]);
+i.parentNode.insertBefore(_18,i);
+Xinha.removeFromParent(i);
+_13=i=_18;
+}
+};
+var w=this.panel.getElementById("text_width");
+var wu=this.panel.getElementById("text_width_units");
+this.panel.getElementById("text_width").onkeyup=this.panel.getElementById("text_width_units").onchange=function(){
+if(!w.value||isNaN(parseFloat(w.value))){
+i.style.width="";
+}
+i.style.width=parseFloat(w.value)+wu.options[wu.selectedIndex].value;
+};
+this.panel.getElementById("text_maxlength").onkeyup=function(){
+i.maxlength=this.value;
+};
+};
+FormOperations.prototype.showCbRd=function(_1b){
+this.panel.getElementById("fs_cbrd").style.display="";
+var _1c={"cbrd_name":this.deformatName(_1b,_1b.name),"cbrd_value":_1b.value,"cbrd_checked":_1b.checked?1:0,"cbrd_type":_1b.type.toLowerCase()};
+this.panel.setValues(_1c);
+var i=_1b;
+var fo=this;
+this.panel.getElementById("cbrd_name").onkeyup=function(){
+i.name=fo.formatName(i,this.value);
+};
+this.panel.getElementById("cbrd_value").onkeyup=function(){
+i.value=this.value;
+};
+this.panel.getElementById("cbrd_type").onchange=function(){
+if(!Xinha.is_ie){
+i.type=this.options[this.selectedIndex].value;
+}else{
+var _1f=fo.editor._doc.createElement("div");
+if(!/type=/.test(i.outerHTML)){
+_1f.innerHTML=i.outerHTML.replace(/<INPUT/i,"<input type=\""+this.options[this.selectedIndex].value+"\"");
+}else{
+_1f.innerHTML=i.outerHTML.replace(/type="?[a-z]+"?/i,"type=\""+this.options[this.selectedIndex].value+"\"");
+}
+var _20=Xinha.removeFromParent(_1f.childNodes[0]);
+i.parentNode.insertBefore(_20,i);
+Xinha.removeFromParent(i);
+_1b=i=_20;
+}
+};
+this.panel.getElementById("cbrd_checked").onclick=function(){
+i.checked=this.checked;
+};
+};
+FormOperations.prototype.showButton=function(_21){
+this.panel.getElementById("fs_button").style.display="";
+var _22={"button_name":this.deformatName(_21,_21.name),"button_value":_21.value,"button_type":_21.type.toLowerCase()};
+this.panel.setValues(_22);
+var i=_21;
+var fo=this;
+this.panel.getElementById("button_name").onkeyup=function(){
+i.name=fo.formatName(i,this.value);
+};
+this.panel.getElementById("button_value").onkeyup=function(){
+i.value=this.value;
+};
+this.panel.getElementById("button_type").onchange=function(){
+if(!Xinha.is_ie){
+i.type=this.options[this.selectedIndex].value;
+}else{
+var _25=fo.editor._doc.createElement("div");
+if(!/type=/.test(i.outerHTML)){
+_25.innerHTML=i.outerHTML.replace(/<INPUT/i,"<input type=\""+this.options[this.selectedIndex].value+"\"");
+}else{
+_25.innerHTML=i.outerHTML.replace(/type="?[a-z]+"?/i,"type=\""+this.options[this.selectedIndex].value+"\"");
+}
+var _26=Xinha.removeFromParent(_25.childNodes[0]);
+i.parentNode.insertBefore(_26,i);
+Xinha.removeFromParent(i);
+_21=i=_26;
+}
+};
+};
+FormOperations.prototype.showTextarea=function(_27){
+this.panel.getElementById("fs_textarea").style.display="";
+var _28={"textarea_name":this.deformatName(_27,_27.name),"textarea_value":_27.value,"textarea_width":_27.style.width?parseFloat(_27.style.width.replace(/[^0-9.]/,"")):"","textarea_width_units":_27.style.width?_27.style.width.replace(/[0-9.]/,"").toLowerCase():"ex","textarea_height":_27.style.height?parseFloat(_27.style.height.replace(/[^0-9.]/,"")):"","textarea_height_units":_27.style.height?_27.style.height.replace(/[0-9.]/,"").toLowerCase():"ex"};
+this.panel.setValues(_28);
+var i=_27;
+var fo=this;
+this.panel.getElementById("textarea_name").onkeyup=function(){
+i.name=fo.formatName(i,this.value);
+};
+this.panel.getElementById("textarea_value").onkeyup=function(){
+i.value=i.innerHTML=this.value;
+};
+var w=this.panel.getElementById("textarea_width");
+var wu=this.panel.getElementById("textarea_width_units");
+this.panel.getElementById("textarea_width").onkeyup=this.panel.getElementById("textarea_width_units").onchange=function(){
+if(!w.value||isNaN(parseFloat(w.value))){
+i.style.width="";
+}
+i.style.width=parseFloat(w.value)+wu.options[wu.selectedIndex].value;
+};
+var h=this.panel.getElementById("textarea_height");
+var hu=this.panel.getElementById("textarea_height_units");
+this.panel.getElementById("textarea_height").onkeyup=this.panel.getElementById("textarea_height_units").onchange=function(){
+if(!h.value||isNaN(parseFloat(h.value))){
+i.style.height="";
+}
+i.style.height=parseFloat(h.value)+hu.options[hu.selectedIndex].value;
+};
+};
+FormOperations.prototype.showSelect=function(_2f){
+this.panel.getElementById("fs_select").style.display="";
+var _30={"select_name":this.deformatName(_2f,_2f.name),"select_multiple":_2f.multiple?1:0,"select_width":_2f.style.width?parseFloat(_2f.style.width.replace(/[^0-9.]/,"")):"","select_width_units":_2f.style.width?_2f.style.width.replace(/[0-9.]/,"").toLowerCase():"ex","select_height":_2f.style.height?parseFloat(_2f.style.height.replace(/[^0-9.]/,"")):(_2f.size&&_2f.size>0?_2f.size:1),"select_height_units":_2f.style.height?_2f.style.height.replace(/[0-9.]/,"").toLowerCase():"items"};
+this.panel.setValues(_30);
+var i=_2f;
+var fo=this;
+this.panel.getElementById("select_name").onkeyup=function(){
+i.name=fo.formatName(i,this.value);
+};
+this.panel.getElementById("select_multiple").onclick=function(){
+i.multiple=this.checked;
+};
+var w=this.panel.getElementById("select_width");
+var wu=this.panel.getElementById("select_width_units");
+this.panel.getElementById("select_width").onkeyup=this.panel.getElementById("select_width_units").onchange=function(){
+if(!w.value||isNaN(parseFloat(w.value))){
+i.style.width="";
+}
+i.style.width=parseFloat(w.value)+wu.options[wu.selectedIndex].value;
+};
+var h=this.panel.getElementById("select_height");
+var hu=this.panel.getElementById("select_height_units");
+this.panel.getElementById("select_height").onkeyup=this.panel.getElementById("select_height_units").onchange=function(){
+if(!h.value||isNaN(parseFloat(h.value))){
+i.style.height="";
+return;
+}
+if(hu.selectedIndex==0){
+i.style.height="";
+i.size=parseInt(h.value);
+}else{
+i.style.height=parseFloat(h.value)+hu.options[hu.selectedIndex].value;
+}
+};
+var _37=this.panel.getElementById("select_options");
+this.arrayToOpts(this.optsToArray(_2f.options),_37.options);
+this.panel.getElementById("add_option").onclick=function(){
+var txt=prompt(Xinha._lc("Enter the name for new option.","FormOperations"));
+if(txt==null){
+return;
+}
+var _39=new Option(txt);
+var _3a=fo.optsToArray(_37.options);
+if(_37.selectedIndex>=0){
+_3a.splice(_37.selectedIndex,0,_39);
+}else{
+_3a.push(_39);
+}
+fo.arrayToOpts(_3a,_2f.options);
+fo.arrayToOpts(_3a,_37.options);
+};
+this.panel.getElementById("del_option").onclick=function(){
+var _3b=fo.optsToArray(_37.options);
+var _3c=[];
+for(var i=0;i<_3b.length;i++){
+if(_3b[i].selected){
+continue;
+}
+_3c.push(_3b[i]);
+}
+fo.arrayToOpts(_3c,_2f.options);
+fo.arrayToOpts(_3c,_37.options);
+};
+this.panel.getElementById("up_option").onclick=function(){
+if(!(_37.selectedIndex>0)){
+return;
+}
+var _3e=fo.optsToArray(_37.options);
+var _3f=_3e.splice(_37.selectedIndex,1).pop();
+_3e.splice(_37.selectedIndex-1,0,_3f);
+fo.arrayToOpts(_3e,_2f.options);
+fo.arrayToOpts(_3e,_37.options);
+};
+this.panel.getElementById("down_option").onclick=function(){
+if(_37.selectedIndex==_37.options.length-1){
+return;
+}
+var _40=fo.optsToArray(_37.options);
+var _41=_40.splice(_37.selectedIndex,1).pop();
+_40.splice(_37.selectedIndex+1,0,_41);
+fo.arrayToOpts(_40,_2f.options);
+fo.arrayToOpts(_40,_37.options);
+};
+this.panel.getElementById("select_options").onchange=function(){
+fo.arrayToOpts(fo.optsToArray(_37.options),_2f.options);
+};
+};
+FormOperations.prototype.optsToArray=function(o){
+var a=[];
+for(var i=0;i<o.length;i++){
+a.push({"text":o[i].text,"value":o[i].value,"defaultSelected":o[i].defaultSelected,"selected":o[i].selected});
+}
+return a;
+};
+FormOperations.prototype.arrayToOpts=function(a,o){
+for(var i=o.length-1;i>=0;i--){
+o[i]=null;
+}
+for(var i=0;i<a.length;i++){
+o[i]=new Option(a[i].text,a[i].value,a[i].defaultSelected,a[i].selected);
+}
+};
+FormOperations.prototype.formatName=function(_48,_49){
+var _4a=_49;
+switch(this.editor.config.FormOperations.multiple_field_format){
+case "php":
+_4a+="[]";
+break;
+case "unmodified":
+break;
+default:
+throw ("Unknown multiple field format "+this.editor.config.FormOperations.multiple_field_format);
+}
+if((_48.tagName.toLowerCase()=="select"&&_48.multiple)||(_48.tagName.toLowerCase()=="input"&&_48.type.toLowerCase()=="checkbox")){
+_49=_4a;
+}
+return _49;
+};
+FormOperations.prototype.deformatName=function(_4b,_4c){
+if(this.editor.config.FormOperations.multiple_field_format=="php"){
+_4c=_4c.replace(/\[\]$/,"");
+}
+return _4c;
+};
+

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/formmail.php
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/formmail.php?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/formmail.php (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/formmail.php Fri Sep 21 03:36:30 2007
@@ -0,0 +1,95 @@
+<?php
+
+  $send_to      = 'Website Enquiries <enquiries@' . preg_replace('/^www./', '', $_SERVER['HTTP_HOST']) . '>';
+
+  $emailfield   = NULL;
+  $subjectfield = NULL;
+  $namefield    = NULL;
+
+  $when_done_goto    = isset($_REQUEST['when_done_goto']) ? $_REQUEST['when_done_goto'] : NULL;
+
+  if($_POST)
+  {
+    unset($_POST['when_done_goto']);
+    $message    = '';
+    $longestKey = 0;
+    foreach(array_keys($_POST) as $key)
+    {
+      $longestKey = max(strlen($key), $longestKey);
+    }
+    $longestKey = max($longestKey, 15);
+
+    foreach($_POST as $Var => $Val)
+    {
+      if(!$emailfield)
+      {
+        if(preg_match('/(^|\s)e-?mail(\s|$)/i', $Var))
+        {
+          $emailfield = $Var;
+        }
+      }
+
+      if(!$subjectfield)
+      {
+        if(preg_match('/(^|\s)subject(\s|$)/i', $Var))
+        {
+          $subjectfield = $Var;
+        }
+      }
+
+      if(!$namefield)
+      {
+        if(preg_match('/(^|\s)from(\s|$)/i', $Var) || preg_match('/(^|\s)name(\s|$)/i', $Var))
+        {
+          $namefield = $Var;
+        }
+      }
+
+      if(is_array($Val))
+      {
+        $Val = implode(', ', $Val);
+      }
+
+      $message .= $Var;
+      if(strlen($Var) < $longestKey)
+      {
+        $message .= str_repeat('.', $longestKey - strlen($Var));
+      }
+      $message .= ':';
+      if((64 - max(strlen($Var), $longestKey) < strlen($Val)) || preg_match('/\r?\n/', $Val))
+      {
+        $message .= "\r\n  ";
+        $message .= preg_replace('/\r?\n/', "\r\n  ", wordwrap($Val, 62));
+      }
+      else
+      {
+        $message .= ' ' . $Val . "\r\n";
+      }
+    }
+
+    $subject = $subjectfield ? $_POST[$subjectfield] : 'Enquiry';
+    $email   = $emailfield   ? $_POST[$emailfield]   :  $send_to;
+    if($namefield)
+    {
+      $from = $_POST[$namefield] . ' <' . $email . '>';
+    }
+    else
+    {
+      $from = 'Website Visitor' . ' <' . $email . '>';
+    }
+
+    mail($send_to, $subject, $message, "From: $from");
+
+    if(!$when_done_goto)
+    {
+      ?>
+      <html><head><title>Message Sent</title></head><body><h1>Message Sent</h1></body></html>
+      <?php
+    }
+    else
+    {
+      header("location: $when_done_goto");
+      exit;
+    }
+  }
+?>

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/iframe.css
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/iframe.css?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/iframe.css (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/iframe.css Fri Sep 21 03:36:30 2007
@@ -0,0 +1 @@
+form { border: 1px red dotted; }
\ No newline at end of file

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/img/buttons.gif
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/img/buttons.gif?rev=578051&view=auto
==============================================================================
Binary file - no diff available.

Propchange: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/img/buttons.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/lang/de.js
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/lang/de.js?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/lang/de.js (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/lang/de.js Fri Sep 21 03:36:30 2007
@@ -0,0 +1,12 @@
+// I18N constants
+// LANG: "de", ENCODING: UTF-8
+// translated: Udo Schmal (gocher), http://www.schaffrath-neuemedien.de/, udo.schmal@t-online.de
+{
+  "Insert a Form.": "Email Form einfügen.",
+  "Insert a text, password or hidden field.": "Passwort oder unsichtbares Feld einfügen.",
+  "Insert a multi-line text field.": "Mehrzeiliges Textfeld einfügen.",
+  "Insert a select field.": "Auswahlfeld einfügen.",
+  "Insert a check box.": "Häkchenfeld einfügen",
+  "Insert a radio button.": "Optionsfeld einfügen",
+  "Insert a submit/reset button.": "Senden/zurücksetzen Schaltfläche"
+};

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/lang/fr.js
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/lang/fr.js?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/lang/fr.js (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/lang/fr.js Fri Sep 21 03:36:30 2007
@@ -0,0 +1,11 @@
+// I18N constants
+// LANG: "fr", ENCODING: UTF-8
+{
+  "Insert a Form.": "Insérer un formulaire",
+  "Insert a text, password or hidden field.": "Insérer un texte, un mot de passe ou un champ invisible",
+  "Insert a multi-line text field.": "Insérer un champ texte à lignes multiples",
+  "Insert a select field.": "Insérer une boite de sélection",
+  "Insert a check box.": "Insérer une case à cocher",
+  "Insert a radio button.": "Insérer un bouton radio",
+  "Insert a submit/reset button.": "Insérer un bouton de soumission/annulation"
+};
\ No newline at end of file

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/lang/ja.js
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/lang/ja.js?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/lang/ja.js (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/lang/ja.js Fri Sep 21 03:36:30 2007
@@ -0,0 +1,51 @@
+// I18N constants
+// LANG: "ja", ENCODING: UTF-8
+{
+  "Insert a Form.": "フォームを挿入",
+  "Insert a text, password or hidden field.": "テキスト/パスワード/非表示フィールドを挿入",
+  "Insert a multi-line text field.": "複数行テキストフィールドを挿入",
+  "Insert a select field.": "選択リストを挿入",
+  "Insert a check box.": "チェックボックスを挿入",
+  "Insert a radio button.": "ラジオボタンを挿入",
+  "Insert a submit/reset button.": "送信/リセットボタンを挿入",
+  "Form Editor": "フォームエディタ",
+  "Form": "フォーム",
+  "Text Field": "テキストフィールド",
+  "Check Box/Radio Button": "チェックボックス/ラジオボタン",
+  "Button": "ボタン",
+  "Multi-line Field": "複数行フィールド",
+  "Drop-Down/List Field": "ドロップダウン/リスト",
+  "Action:": "アクション:",
+  "Method:": "メソッド:",
+  "Name:": "名前:",
+  "Type:": "タイプ:",
+  "Label:": "ラベル:",
+  "Value:": "値:",
+  "Width:": "幅:",
+  "Height:": "高さ:",
+  "Initial Value:": "初期値:",
+  "Initial Value": "初期値",
+  "Max Length:": "最大長:",
+  "Selected by default:": "デフォルト選択:",
+  "May Choose Multiple:": "複数選択可能:",
+  "Options": "選択肢",
+  "POST": "POST",
+  "GET": "GET",
+  'Check Box ("Select Many")': "チェックボックス(複数選択)",
+  'Radio Button ("Select One")': "ラジオボタン(単一選択)",
+  "normal text field": "標準テキストフィールド",
+  "password": "パスワード",
+  "hidden field": "非表示フィールド",
+  "Submit": "送信",
+  "Reset": "リセット",
+  "chars": "文字",
+  "px": "ピクセル",
+  "%": "%",
+  "items": "項目",
+  "Add": "追加",
+  "Delete": "削除",
+  "Move Up": "上へ",
+  "Move Down": "下へ",
+  "Tip: Check boxes (select many) and radio buttons (select one only) that are choices for a single question should have the same Name to work correctly.": "ヒント:ひとつの質問について、複数のチェックボックス(複数選択)、または複数のラジオボタン(単一選択)がある場合、すべてに同じ名前を付けなければ正しく機能しません。",
+  "Enter the name for new option.": "新しい選択肢に名前をつけてください。"
+};

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/lang/nb.js
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/lang/nb.js?rev=578051&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/lang/nb.js (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/modules/xinha/plugins/FormOperations/lang/nb.js Fri Sep 21 03:36:30 2007
@@ -0,0 +1,12 @@
+// I18N constants
+// LANG: "nb", ENCODING: UTF-8
+// translated: Kim Steinhaug, http://www.steinhaug.com/, kim@steinhaug.com
+{
+  "Insert a Form.": "Sett inn skjema",
+  "Insert a text, password or hidden field.": "Sett inn formfelt",
+  "Insert a multi-line text field.": "Sett inn tekstfelt med flere linjer",
+  "Insert a select field.": "Sett inn valgboks/ netrekksboks",
+  "Insert a check box.": "Hakeboks",
+  "Insert a radio button.": "Sett inn en radioknapp",
+  "Insert a submit/reset button.": "Sett inn send-/nullstill knapp for skjemaet"
+};
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org