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...

[email protected]
Newsgroups gmane.comp.cms.lenya.cvs
Message-ID <[email protected]>
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: [email protected]
+\*---------------------------------------*/
+
+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:[email protected]",
+  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/, [email protected]
+{
+  // 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/, [email protected]
+{
+  // 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, [email protected], 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), [email protected]
+{
+  // 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, [email protected]
+
+{
+  // 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, <[email protected]>
+{
+  // 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: [email protected]
+\*---------------------------------------*/
+-->
+<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/, [email protected]
+{
+  "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/, [email protected]
+{
+  "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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.