Import xinha so we can switch from htmlarea and fix a bunch of in-browser issues that htmlarea has
This commit is contained in:
282
xinha/plugins/InsertPicture/InsertPicture.php
Normal file
282
xinha/plugins/InsertPicture/InsertPicture.php
Normal file
@@ -0,0 +1,282 @@
|
||||
<?PHP
|
||||
//this plugin only use the relativ webpath to the picturefolder
|
||||
//default ~ /htmlarea/plugins/InsertPicture/demo_pictures/
|
||||
strstr( PHP_OS, "WIN") ? $strPathSeparator = "\\" : $strPathSeparator = "/";
|
||||
if (isset($_REQUEST['picturepath'])) {
|
||||
$getRequest = true;
|
||||
$PicturePath = 'http://'.$_SERVER['HTTP_HOST'].$_REQUEST['picturepath'];
|
||||
//$LocalPicturePath = $_REQUEST['localpicturepath'];
|
||||
|
||||
$AInsertPicturePath = explode ('/', 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/demo_pictures/');
|
||||
$ALocalInsertPicturePath = explode($strPathSeparator, dirname(__FILE__).$strPathSeparator.'demo_pictures');
|
||||
$APicturePath = explode('/', 'http://'.$_SERVER['HTTP_HOST'].$_REQUEST['picturepath']);
|
||||
|
||||
$AtheFilePath = array_values (array_diff ($APicturePath, $AInsertPicturePath));
|
||||
$theFilePath = implode($strPathSeparator, $AtheFilePath).$strPathSeparator;
|
||||
|
||||
$AtheRootPath = array_values (array_diff ($ALocalInsertPicturePath, $AInsertPicturePath));
|
||||
$theRootPath = implode($strPathSeparator, $AtheRootPath);
|
||||
|
||||
$LocalPicturePath = $theRootPath.$strPathSeparator.$theFilePath.$strPathSeparator;
|
||||
} else {
|
||||
$getRequest = false;
|
||||
$PicturePath = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/demo_pictures/';
|
||||
$LocalPicturePath = dirname(__FILE__).$strPathSeparator.'demo_pictures';
|
||||
}
|
||||
$limitedext = array(".gif",".jpg",".png",".jpeg"); //Extensions you want files uploaded limited to.
|
||||
$limitedsize = "1000000"; //size limit in bytes
|
||||
$message = "";
|
||||
function formatSize($size)
|
||||
{
|
||||
if($size < 1024)
|
||||
return $size.' bytes';
|
||||
else if($size >= 1024 && $size < 1024*1024)
|
||||
return sprintf('%01.2f',$size/1024.0).' Kb';
|
||||
else
|
||||
return sprintf('%01.2f',$size/(1024.0*1024)).' Mb';
|
||||
}
|
||||
|
||||
if (isset($_FILES['file'])) {
|
||||
$file = $_FILES['file'];
|
||||
$ext = strrchr($file['name'],'.');
|
||||
if (!in_array($ext,$limitedext)) {
|
||||
$message = "The file you are uploading doesn't have the correct extension.";
|
||||
} else if (file_exists($LocalPicturePath.'\\'.$file['name'])) {
|
||||
$message = "The file you are uploading already exists.";
|
||||
} else if ($file['size'] > $limitedsize) {
|
||||
$message = "The file you are uploading is to big. The max Filesize is</span><span> ".formatSize($limitedsize).".";
|
||||
} else {
|
||||
copy($file['tmp_name'], $LocalPicturePath.$strPathSeparator.$file['name']);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Insert Image</title>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../popups/popup.css" />
|
||||
<script type="text/javascript" src="../../popups/popup.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
var HTMLArea = window.opener.HTMLArea;
|
||||
function i18n(str) {
|
||||
return (HTMLArea._lc(str, 'HTMLArea'));
|
||||
};
|
||||
|
||||
function Init() {
|
||||
__dlg_translate("InsertPicture");
|
||||
__dlg_init();
|
||||
window.resizeTo(470, 490);
|
||||
// Make sure the translated string appears in the drop down. (for gecko)
|
||||
document.getElementById("f_align").selectedIndex = 1;
|
||||
document.getElementById("f_align").selectedIndex = 5;
|
||||
var param = window.dialogArguments;
|
||||
if (param) {
|
||||
document.getElementById("f_url").value = param["f_url"];
|
||||
document.getElementById("f_alt").value = param["f_alt"];
|
||||
document.getElementById("f_border").value = param["f_border"];
|
||||
document.getElementById("f_align").value = param["f_align"];
|
||||
document.getElementById("f_vert").value = param["f_vert"];
|
||||
document.getElementById("f_horiz").value = param["f_horiz"];
|
||||
window.ipreview.location.replace(param.f_url);
|
||||
}
|
||||
document.getElementById("f_url").focus();
|
||||
};
|
||||
|
||||
function onOK() {
|
||||
var required = {
|
||||
"f_url": i18n("You must enter the URL")
|
||||
};
|
||||
for (var i in required) {
|
||||
var el = document.getElementById(i);
|
||||
if (!el.value) {
|
||||
alert(required[i]);
|
||||
el.focus();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// pass data back to the calling window
|
||||
var fields = ["f_url", "f_alt", "f_align", "f_border",
|
||||
"f_horiz", "f_vert"];
|
||||
var param = new Object();
|
||||
for (var i in fields) {
|
||||
var id = fields[i];
|
||||
var el = document.getElementById(id);
|
||||
param[id] = el.value;
|
||||
}
|
||||
__dlg_close(param);
|
||||
return false;
|
||||
};
|
||||
|
||||
function onUpload() {
|
||||
var required = {
|
||||
"file": i18n("Please select a file to upload.")
|
||||
};
|
||||
for (var i in required) {
|
||||
var el = document.getElementById(i);
|
||||
if (!el.value) {
|
||||
alert(required[i]);
|
||||
el.focus();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
submit();
|
||||
return false;
|
||||
}
|
||||
|
||||
function onCancel() {
|
||||
__dlg_close(null);
|
||||
return false;
|
||||
};
|
||||
|
||||
function onPreview() {
|
||||
var f_url = document.getElementById("f_url");
|
||||
var url = f_url.value;
|
||||
if (!url) {
|
||||
alert(i18n("You must enter the URL"));
|
||||
f_url.focus();
|
||||
return false;
|
||||
}
|
||||
if (document.all) {
|
||||
window.ipreview.location.replace('viewpicture.html?'+url);
|
||||
} else {
|
||||
window.ipreview.location.replace(url);
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
function CopyToURL(imgName) {
|
||||
document.getElementById("f_url").value = imgName;
|
||||
onPreview();
|
||||
};
|
||||
|
||||
function openFile() {
|
||||
window.open(document.getElementById("f_url").value,'','');
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="dialog" onload="Init()">
|
||||
|
||||
<div class="title">Insert Image</div>
|
||||
<table border="0" width="100%" style="padding: 0px; margin: 0px">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Images on the Server:<br>
|
||||
<select value="" style="width:200" size="10" onClick="CopyToURL(this[this.selectedIndex].value);">
|
||||
<?php
|
||||
$d = @dir($LocalPicturePath);
|
||||
while (false !== ($entry = $d->read())) { //not a dot file or directory
|
||||
if(substr($entry,0,1) != '.') {
|
||||
echo '<OPTION value="' . $PicturePath.$entry. '">' . $entry . '(' . formatSize(filesize($LocalPicturePath.'\\'.$entry)) .')</OPTION>';
|
||||
}
|
||||
}
|
||||
$d->close();
|
||||
?>
|
||||
</select>
|
||||
<?php
|
||||
if ($getRequest == true) {
|
||||
echo '<form method="post" action="'.$_SERVER['PHP_SELF'].'?picturepath='.$_REQUEST['picturepath'].'" enctype="multipart/form-data">';
|
||||
} else {
|
||||
echo '<form method="post" action="'.$_SERVER['PHP_SELF'].'" enctype="multipart/form-data">';
|
||||
}
|
||||
?>
|
||||
<input type="file" name="file" id="file" size="30"><br>
|
||||
<button type="submit" name="ok" onclick="return onUpload();">Upload file</button><br>
|
||||
<span><?php echo $message ?></span>
|
||||
</form>
|
||||
|
||||
</td>
|
||||
<td valign="center" width="200" height="230">
|
||||
<span>Image Preview:</span>
|
||||
<a href="#" onClick="javascript:openFile();"title=" Open file in new window"><img src="img/btn_open.gif" width="18" height="18" border="0" title="Open file in new window" /></a><br />
|
||||
<iframe name="ipreview" id="ipreview" frameborder="0" style="border : 1px solid gray;" height="200" width="200" src=""></iframe>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<form action="" method="get">
|
||||
<table border="0" width="100%" style="padding: 0px; margin: 0px">
|
||||
<tbody>
|
||||
|
||||
<tr>
|
||||
<td style="width: 7em; text-align: right">Image URL:</td>
|
||||
<td><input type="text" name="url" id="f_url" style="width:75%"
|
||||
title="Enter the image URL here" />
|
||||
<button name="preview" onclick="return onPreview();"
|
||||
title="Preview the image in a new window">Preview</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 7em; text-align: right">Alternate text:</td>
|
||||
<td><input type="text" name="alt" id="f_alt" style="width:100%"
|
||||
title="For browsers that don't support images" /></td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p />
|
||||
|
||||
<fieldset style="float: left; margin-left: 5px;">
|
||||
<legend>Layout</legend>
|
||||
|
||||
<div class="space"></div>
|
||||
|
||||
<div class="fl">Alignment:</div>
|
||||
<select size="1" name="align" id="f_align"
|
||||
title="Positioning of this image">
|
||||
<option value="" >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" selected="1" >Baseline</option>
|
||||
<option value="absbottom" >Absbottom</option>
|
||||
<option value="bottom" >Bottom</option>
|
||||
<option value="middle" >Middle</option>
|
||||
<option value="top" >Top</option>
|
||||
</select>
|
||||
|
||||
<p />
|
||||
|
||||
<div class="fl">Border thickness:</div>
|
||||
<input type="text" name="border" id="f_border" size="5"
|
||||
title="Leave empty for no border" />
|
||||
|
||||
<div class="space"></div>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<fieldset style="float:right; margin-right: 5px;">
|
||||
<legend>Spacing</legend>
|
||||
|
||||
<div class="space"></div>
|
||||
|
||||
<div class="fr">Horizontal:</div>
|
||||
<input type="text" name="horiz" id="f_horiz" size="5"
|
||||
title="Horizontal padding" />
|
||||
|
||||
<p />
|
||||
|
||||
<div class="fr">Vertical:</div>
|
||||
<input type="text" name="vert" id="f_vert" size="5"
|
||||
title="Vertical padding" />
|
||||
|
||||
<div class="space"></div>
|
||||
|
||||
</fieldset>
|
||||
<br clear="all" />
|
||||
|
||||
<div id="buttons">
|
||||
<button type="submit" name="ok" onclick="return onOK();">OK</button>
|
||||
<button type="button" name="cancel" onclick="return onCancel();">Cancel</button>
|
||||
</div>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
BIN
xinha/plugins/InsertPicture/img/btn_open.gif
Normal file
BIN
xinha/plugins/InsertPicture/img/btn_open.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 185 B |
BIN
xinha/plugins/InsertPicture/img/nopic.gif
Normal file
BIN
xinha/plugins/InsertPicture/img/nopic.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
93
xinha/plugins/InsertPicture/insert-picture.js
Normal file
93
xinha/plugins/InsertPicture/insert-picture.js
Normal file
@@ -0,0 +1,93 @@
|
||||
// Insert Image plugin for HTMLArea
|
||||
// Original Author - Udo Schmal
|
||||
//
|
||||
// (c) www.Schaffrath-NeueMedien.de 2004
|
||||
// Distributed under the same terms as HTMLArea itself.
|
||||
// This notice MUST stay intact for use (see license.txt).
|
||||
|
||||
//Usage:
|
||||
// if(typeof InsertPicture != 'undefined')
|
||||
// { InsertPicture.PicturePath = [webpath to imagefolder];
|
||||
// InsertPicture.LocalPicturePath = [local server path to imagefolder];
|
||||
// }
|
||||
// for Example:
|
||||
// if(typeof InsertPicture != 'undefined')
|
||||
// { InsertPicture.PicturePath = _editor_url + "plugins/insertPicture/demo_pictures/";
|
||||
// InsertPicture.LocalPicturePath = "d:\\inetpub\\wwwroot\\xinha\\trunk\\plugins\\insertPicture\\demo_pictures";
|
||||
// }
|
||||
|
||||
|
||||
function InsertPicture(editor) {
|
||||
// nothing to do
|
||||
};
|
||||
|
||||
InsertPicture._pluginInfo = {
|
||||
name : "InsertPicture",
|
||||
version : "1.0.1",
|
||||
developer : "Udo Schmal",
|
||||
developer_url : "http://www.Schaffrath-NeueMedien.de/",
|
||||
sponsor : "L.N.Schaffrath NeueMedien",
|
||||
sponsor_url : "http://www.schaffrath-neuemedien.de/",
|
||||
c_owner : "Udo Schmal",
|
||||
license : "htmlArea"
|
||||
};
|
||||
|
||||
HTMLArea.prototype._insertImage = function(image) {
|
||||
var editor = this;
|
||||
var outparam = null;
|
||||
if (typeof image == "undefined") {
|
||||
image = this.getParentElement();
|
||||
if (image && !/^img$/i.test(image.tagName))
|
||||
image = null;
|
||||
}
|
||||
if (image) outparam = {
|
||||
f_url : HTMLArea.is_ie ? image.src : image.getAttribute("src"),
|
||||
f_alt : image.alt,
|
||||
f_border : image.border,
|
||||
f_align : image.align,
|
||||
f_vert : image.vspace,
|
||||
f_horiz : image.hspace,
|
||||
f_width : image.width,
|
||||
f_height : image.height
|
||||
};
|
||||
|
||||
var manager = _editor_url + 'plugins/InsertPicture/InsertPicture.php'
|
||||
+ '?picturepath=' + InsertPicture.PicturePath;
|
||||
|
||||
Dialog(manager, function(param) {
|
||||
if (!param) { // user must have pressed Cancel
|
||||
return false;
|
||||
}
|
||||
if (!image) {
|
||||
var sel = editor._getSelection();
|
||||
var range = editor._createRange(sel);
|
||||
editor._doc.execCommand("insertimage", false, param.f_url);
|
||||
if (HTMLArea.is_ie) {
|
||||
image = range.parentElement();
|
||||
// wonder if this works...
|
||||
if (image.tagName.toLowerCase() != "img") {
|
||||
image = image.previousSibling;
|
||||
}
|
||||
} else {
|
||||
image = range.startContainer.previousSibling;
|
||||
}
|
||||
} else {
|
||||
image.src = param.f_url;
|
||||
}
|
||||
|
||||
for (field in param) {
|
||||
var value = param[field];
|
||||
switch (field) {
|
||||
case "f_alt" : image.alt = value; break;
|
||||
case "f_border" : image.border = parseInt(value || "0"); break;
|
||||
case "f_align" : image.align = value; break;
|
||||
case "f_vert" : image.vspace = parseInt(value || "0"); break;
|
||||
case "f_horiz" : image.hspace = parseInt(value || "0"); break;
|
||||
case "f_width" : image.width = parseInt(value || "0"); break;
|
||||
case "f_height" : image.height = parseInt(value || "0"); break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}, outparam);
|
||||
};
|
||||
17
xinha/plugins/InsertPicture/lang/de.js
Normal file
17
xinha/plugins/InsertPicture/lang/de.js
Normal file
@@ -0,0 +1,17 @@
|
||||
// LANG: "de", ENCODING: UTF-8 | ISO-8859-1
|
||||
// Sponsored by http://www.schaffrath-neuemedien.de
|
||||
// Author: Udo Schmal (gocher), <udo.schmal@t-online.de>
|
||||
//
|
||||
// (c) Udo Schmal & Schaffrath NeueMedien 2005
|
||||
// Distributed under the same terms as HTMLArea itself.
|
||||
// This notice MUST stay intact for use (see license.txt).
|
||||
|
||||
{
|
||||
"The file you are uploading doesn't have the correct extension.": "Die hochgeladene Datei ist im falschen Format.",
|
||||
"The file you are uploading already exists.": "Eine Datei mit diesem Namen existiert schon.",
|
||||
"The file you are uploading is to big. The max Filesize is": "Die hochgeladene Datei ist zu groß. Die maximakle Dateigröße beträgt",
|
||||
"Images on the Server:": "Bilder auf dem Server:",
|
||||
"Please select a file to upload.": "Wählen Sie eine Datei zum hochladen aus.",
|
||||
"Upload file": "Datei hochladen",
|
||||
"Open file in new window": "Datei in neuen Fenster anzeigen"
|
||||
};
|
||||
46
xinha/plugins/InsertPicture/viewpicture.html
Normal file
46
xinha/plugins/InsertPicture/viewpicture.html
Normal file
@@ -0,0 +1,46 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>Preview</title>
|
||||
<script language="JavaScript" type="text/javascript">
|
||||
<!--
|
||||
function imgWait() {
|
||||
waiting = window.setInterval("imgIsLoaded()", 1000)
|
||||
}
|
||||
function imgIsLoaded() {
|
||||
if(document.getElementById("myImg").width > 0) {
|
||||
window.clearInterval(waiting)
|
||||
imgShowWidth()
|
||||
}
|
||||
}
|
||||
function imgShowWidth() {
|
||||
var width = document.getElementById("myImg").width
|
||||
var height = document.getElementById("myImg").height
|
||||
if(width > 120) {
|
||||
var dx = (120 / width);
|
||||
var dy = (120 / height);
|
||||
ratio = dx < dy ? dx : dy;
|
||||
// keep aspect ratio
|
||||
width = width * ratio;
|
||||
height = height * ratio;
|
||||
document.getElementById("myImg").width = width
|
||||
document.getElementById("myImg").height = height
|
||||
}
|
||||
document.getElementById("myImg").style.visibility = 'visible'
|
||||
}
|
||||
function showPreview() {
|
||||
img = document.location.toString().split("?");
|
||||
document.getElementById("myImg").src = img[1];
|
||||
img.onLoad = imgWait()
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
</head>
|
||||
<body marginwidth="5px" marginheight="5px" topmargin="5px" leftmargin="5px" rightmargin="5px">
|
||||
<img id="myImg" src="" Style="visibility:hidden">
|
||||
<script language="JavaScript" type="text/javascript">
|
||||
showPreview()
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user