mirror of
https://github.com/e107inc/e107.git
synced 2025-10-11 04:54:26 +02:00
460 lines
18 KiB
PHP
460 lines
18 KiB
PHP
<?php
|
|
// ================================================
|
|
// tinymce PHP WYSIWYG editor control
|
|
// ================================================
|
|
// Image library dialog
|
|
// ================================================
|
|
// Developed: j-cons.com, mail@j-cons.com
|
|
// Copyright: j-cons (c)2004 All rights reserved.
|
|
// ------------------------------------------------
|
|
// www.j-cons.com
|
|
// ================================================
|
|
// $Revision: 1.3 $Date: 2004/10/04
|
|
// ================================================
|
|
//
|
|
// $Source: /cvs_backup/e107_0.8/e107_plugins/tinymce/plugins/ibrowser/ibrowser.php,v $
|
|
// $Revision: 1.3 $
|
|
// $Date: 2008-10-19 11:35:00 $
|
|
// $Author: e107steved $
|
|
// +----------------------------------------------------------------------------+
|
|
// Major Re-work by CaMer0n
|
|
|
|
|
|
// unset $tinyMCE_imglib_include
|
|
require_once("../../../../class2.php");
|
|
if (!defined('e107_INIT')) { exit; }
|
|
unset($tinyMCE_imglib_include);
|
|
|
|
// include image library config settings
|
|
include 'config.php';
|
|
|
|
$request_uri = urldecode(empty($_POST['request_uri'])?(empty($_GET['request_uri'])?'':$_GET['request_uri']):$_POST['request_uri']);
|
|
|
|
// if set include file specified in $tinyMCE_imglib_include
|
|
if (!empty($tinyMCE_imglib_include))
|
|
{
|
|
include $tinyMCE_imglib_include;
|
|
}
|
|
|
|
|
|
$imglib = isset($_POST['lib'])?$_POST['lib']:'';
|
|
if (empty($imglib) && isset($_GET['lib'])) $imglib = $_GET['lib'];
|
|
|
|
$value_found = false;
|
|
// callback function for preventing listing of non-library directory
|
|
function is_array_value($value, $key, $_imglib)
|
|
{
|
|
global $value_found;
|
|
if (is_array($value)) array_walk($value, 'is_array_value',$_imglib);
|
|
if ($value == $_imglib){
|
|
$value_found=true;
|
|
}
|
|
}
|
|
array_walk($tinyMCE_imglibs, 'is_array_value',$imglib);
|
|
|
|
if (!$value_found || empty($imglib))
|
|
{
|
|
$imglib = $tinyMCE_imglibs[0]['value'];
|
|
}
|
|
$lib_options = liboptions($tinyMCE_imglibs,'',$imglib);
|
|
|
|
|
|
$img = isset($_POST['imglist'])? $_POST['imglist']:'';
|
|
|
|
$preview = e_IMAGE."generic/blank.gif";
|
|
|
|
$errors = array();
|
|
|
|
?>
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
<html>
|
|
<head>
|
|
<title>{$lang_ibrowser_title}</title>
|
|
<script type="text/javaScript" src="../../tiny_mce_popup.js"></script>
|
|
<meta http-equiv="Pragma" content="no-cache">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET ?>" />
|
|
<script type="text/javascript">
|
|
// click ok - select picture or save changes
|
|
function selectClick() {
|
|
|
|
// if (validateParams()) {
|
|
if (document.forms[0].src.value !='') {
|
|
|
|
var src = document.forms[0].src.value;
|
|
var alt = document.forms[0].alt.value;
|
|
var border = document.forms[0].border.value;
|
|
var width = document.forms[0].width.value;
|
|
var height = document.forms[0].height.value;
|
|
|
|
var margleft = document.forms[0].margin_left.value;
|
|
var margright = document.forms[0].margin_right.value;
|
|
var margtop = document.forms[0].margin_top.value;
|
|
var margbottom = document.forms[0].margin_bottom.value;
|
|
|
|
var cssfloat = document.forms[0].align.options[document.forms[0].align.selectedIndex].value;
|
|
var css_style = "";
|
|
|
|
css_style = 'width:' + width + 'px; height:' + height + 'px; border:' + border + 'px solid black; ';
|
|
css_style = (cssfloat) ? css_style + 'float: ' + cssfloat + '; ' : css_style;
|
|
css_style = (margleft != 0) ? css_style + 'margin-left:' + margleft + 'px; ' : css_style;
|
|
css_style = (margright != 0) ? css_style + 'margin-right:' + margright + 'px; ' : css_style;
|
|
css_style = (margtop != 0) ? css_style + 'margin-top:' + margtop + 'px; ' : css_style;
|
|
css_style = (margbottom != 0) ? css_style + 'margin-bottom:' + margbottom + 'px; ' : css_style;
|
|
|
|
var html = '<img src=\''+ src +'\' alt=\''+ alt +'\' style=\'' + css_style + '\' />';
|
|
|
|
// alert(html);
|
|
tinyMCE.execCommand('mceInsertContent',false,html);
|
|
tinyMCEPopup.close();
|
|
|
|
} else {
|
|
alert(tinyMCE.getLang('lang_ibrowser_error')+ ' : '+ tinyMCE.getLang('lang_ibrowser_errornoimg'));}
|
|
}
|
|
// }
|
|
|
|
// validate input values
|
|
function validateParams() {
|
|
// check numeric values for attributes
|
|
if (isNaN(parseInt(document.getElementById("width").value)) && document.getElementById("width").value != '') {
|
|
alert(tinyMCE.getLang('lang_ibrowser_error')+ ' : '+ tinyMCE.getLang('lang_ibrowser_error_width_nan'));
|
|
document.getElementById("width").focus();
|
|
return false;}
|
|
|
|
if (isNaN(parseInt(document.getElementById("height").value)) && document.getElementById("height").value != '') {
|
|
alert(tinyMCE.getLang('lang_ibrowser_error')+ ' : '+ tinyMCE.getLang('lang_ibrowser_error_height_nan'));
|
|
document.getElementById("height").focus();
|
|
return false;}
|
|
|
|
if (isNaN(parseInt(document.getElementById("border").value)) && document.getElementById("border").value != '') {
|
|
alert(tinyMCE.getLang('lang_ibrowser_error')+ ' : '+ tinyMCE.getLang('lang_ibrowser_error_border_nan'));
|
|
document.getElementById("border").focus();
|
|
return false;}
|
|
|
|
if (isNaN(parseInt(document.getElementById("hspace").value)) && document.getElementById("hspace").value != '') {
|
|
alert(tinyMCE.getLang('lang_ibrowser_error')+ ' : '+ tinyMCE.getLang('lang_ibrowser_error_hspace_nan'));
|
|
document.getElementById("hspace").focus();
|
|
return false;}
|
|
|
|
if (isNaN(parseInt(document.getElementById("vspace").value)) && document.getElementById("vspace").value != '') {
|
|
alert(tinyMCE.getLang('lang_ibrowser_error')+ ' : '+ tinyMCE.getLang('lang_ibrowser_error_vspace_nan'));
|
|
document.getElementById("vspace").focus();
|
|
return false;}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
// delete image
|
|
function deleteClick()
|
|
{
|
|
if (document.libbrowser.imglist.selectedIndex>=0)
|
|
{
|
|
if (confirm(tinyMCE.getLang('lang_ibrowser_confirmdelete')))
|
|
{
|
|
document.libbrowser.lib_action.value = 'delete';
|
|
document.libbrowser.submit();
|
|
}
|
|
}
|
|
}
|
|
|
|
// set picture attributes on change
|
|
function selectChange(obj)
|
|
{
|
|
var formObj = document.forms[0];
|
|
// formObj.src.value = '<?php echo $tinyMCE_base_url.$imglib?>'+obj.options[obj.selectedIndex].value;
|
|
// formObj.width.value = obj.options[obj.selectedIndex].img_width;
|
|
// formObj.height.value = obj.options[obj.selectedIndex].img_height;
|
|
// formObj.size.value = obj.options[obj.selectedIndex].f_size;
|
|
// formObj.alt.value = obj.options[obj.selectedIndex].value;
|
|
var splitvar = obj.options[obj.selectedIndex].value.split("|");
|
|
formObj.src.value = '<?php echo $tinyMCE_base_url.$imglib?>'+splitvar[3];
|
|
formObj.width.value = splitvar[0];
|
|
formObj.height.value = splitvar[1];
|
|
formObj.size.value = splitvar[2];
|
|
formObj.alt.value = splitvar[3];
|
|
|
|
owidth = eval(formObj.width.value);
|
|
oheight = eval(formObj.height.value);
|
|
updateStyle()
|
|
}
|
|
|
|
// init functions
|
|
function init()
|
|
{
|
|
// if existing image (image properties)
|
|
if (tinyMCE.getWindowArg('src') != '') {
|
|
|
|
var formObj = document.forms[0];
|
|
for (var i=0; i<document.forms[0].align.options.length; i++) {
|
|
if (document.forms[0].align.options[i].value == tinyMCE.imgElement.style.cssFloat)
|
|
document.forms[0].align.options.selectedIndex = i;
|
|
}
|
|
|
|
formObj.src.value = tinyMCE.getWindowArg('src');
|
|
formObj.alt.value = tinyMCE.imgElement.alt;
|
|
formObj.border.value = tinyMCE.imgElement.style.borderLeftWidth.replace('px','');
|
|
formObj.width.value = tinyMCE.imgElement.style.width.replace('px','');
|
|
formObj.height.value = tinyMCE.imgElement.style.height.replace('px','');
|
|
formObj.margin_left.value = tinyMCE.imgElement.style.marginLeft.replace('px','');
|
|
formObj.margin_right.value = tinyMCE.imgElement.style.marginRight.replace('px','');
|
|
formObj.margin_top.value = tinyMCE.imgElement.style.marginTop.replace('px','');
|
|
formObj.margin_bottom.value = tinyMCE.imgElement.style.marginBottom.replace('px','');
|
|
|
|
formObj.size.value = 'n/a';
|
|
owidth = eval(formObj.width.value);
|
|
oheight = eval(formObj.height.value);
|
|
|
|
frameID = "imgpreview";
|
|
//document.all(frameID).src = tinyMCE.getWindowArg('src');
|
|
document.getElementById("imgpreview").src = tinyMCE.getWindowArg('src');
|
|
updateStyle();
|
|
}
|
|
|
|
window.focus();
|
|
}
|
|
|
|
// updates style settings
|
|
function updateStyle() {
|
|
// if (validateParams()) {
|
|
// alert('val=' + document.getElementById('wrap').style.marginLeft);
|
|
|
|
|
|
document.getElementById('wrap').style.marginLeft = document.libbrowser.margin_left.value;
|
|
document.getElementById('wrap').style.marginRight = document.libbrowser.margin_right.value;
|
|
document.getElementById('wrap').style.marginTop = document.libbrowser.margin_top.value;
|
|
document.getElementById('wrap').style.marginBottom = document.libbrowser.margin_bottom.value;
|
|
document.getElementById('wrap').style.cssFloat = document.libbrowser.align.value;
|
|
document.getElementById('wrap').style.borderWidth = document.libbrowser.border.value;
|
|
document.getElementById('wrap').alt = document.libbrowser.alt.value;
|
|
// }
|
|
}
|
|
|
|
// change picture dimensions
|
|
var oheight; // original width
|
|
var owidth; // original height
|
|
|
|
function changeDim(sel) {
|
|
var formObj = document.forms[0];
|
|
if (formObj.src.value!=''){
|
|
f=oheight/owidth;
|
|
if (sel==0){
|
|
formObj.width.value = Math.round(formObj.height.value/f);
|
|
} else {
|
|
formObj.height.value= Math.round(formObj.width.value*f);}
|
|
}
|
|
}
|
|
|
|
function resetDim() {
|
|
var formObj = document.forms[0];
|
|
formObj.width.value = owidth;
|
|
formObj.height.value = oheight;
|
|
}
|
|
function show_image(obj) {
|
|
var formObj = document.forms[0];
|
|
var splitvar = obj.options[obj.selectedIndex].value.split("|");
|
|
formObj.src.value = splitvar[3];
|
|
// alert('<?php echo $tinyMCE_base_url.$imglib?>' + formObj.src.value);
|
|
if (splitvar[3]) imgpreview.location.href = '<?php echo $tinyMCE_base_url.$imglib?>' + formObj.src.value;
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onLoad="init();">
|
|
<script type="text/javascript">
|
|
window.name = 'imglibrary';
|
|
</script>
|
|
<form name="libbrowser" method="post" action="ibrowser.php?request_uri=<?php echo $_GET['request_uri']?>" enctype="multipart/form-data" target="imglibrary">
|
|
<input type="hidden" name="request_uri" value="<?php echo urlencode($request_uri)?>" />
|
|
<input type="hidden" name="lib_action" value="" />
|
|
<fieldset style= "padding: 5 5 5 5; margin-top: -5px;">
|
|
<legend>{$lang_ibrowser_img_sel}</legend>
|
|
<table width="440" border="0" cellspacing="0" cellpadding="0">
|
|
<tr>
|
|
<td><table width="100%" border="0" cellpadding="2" cellspacing="0">
|
|
<tr>
|
|
<td width="210"><strong>{$lang_ibrowser_library}:</strong></td>
|
|
<td width="5"> </td>
|
|
<td width="210"><strong>{$lang_ibrowser_preview}:</strong></td>
|
|
</tr>
|
|
<tr>
|
|
<td><select name="lib" size="1" style="width: 100%;" onChange="libbrowser.submit();">
|
|
<?php echo $lib_options?>
|
|
</select></td>
|
|
<td> </td>
|
|
<td width="210" rowspan="3" align="left" valign="top"><iframe name="imgpreview" id="imgpreview" class="previewWindow" src="<?php echo $preview?>" style="width: 100%; height: 100%;" scrolling="Auto" marginheight="0" marginwidth="0" frameborder="0"></iframe>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td><strong>{$lang_ibrowser_images}:</strong></td>
|
|
<td> </td>
|
|
</tr>
|
|
<tr>
|
|
<td><?php
|
|
if (!preg_match('#/$#', $_SERVER['DOCUMENT_ROOT'])){
|
|
// $_root = $_SERVER['DOCUMENT_ROOT'].'/';
|
|
$_root = e_BASE;
|
|
} else {
|
|
// $_root = $_SERVER['DOCUMENT_ROOT'];
|
|
$_root = e_BASE;
|
|
}
|
|
// $d = @dir($_root.$imglib);
|
|
// echo "<Br >dir=".$_root.$imglib;
|
|
$d = @dir(e_BASE.$imglib);
|
|
|
|
?>
|
|
<select name="imglist" size="15" style="width: 100%;"
|
|
onChange="show_image(this);selectChange(this);" ondblclick="selectClick();">
|
|
<?php
|
|
if ($d)
|
|
{
|
|
$i = 0;
|
|
while (false !== ($entry = $d->read())) {
|
|
$ext = strtolower(substr(strrchr($entry,'.'), 1));
|
|
if (is_file($_root.$imglib.$entry) && in_array($ext,$tinyMCE_valid_imgs))
|
|
{
|
|
$arr_tinyMCE_image_files[$i][file_name] = $entry;
|
|
$i++;
|
|
}
|
|
}
|
|
$d->close();
|
|
// sort the list of image filenames alphabetically.
|
|
sort($arr_tinyMCE_image_files);
|
|
for($k=0; $k<count($arr_tinyMCE_image_files); $k++){
|
|
$entry = $arr_tinyMCE_image_files[$k][file_name];
|
|
$size = getimagesize($_root.$imglib.$entry);
|
|
$fsize = filesize($_root.$imglib.$entry);
|
|
?>
|
|
<option value="<?php echo $size[0]; ?>|<?php echo $size[1]; ?>|<?php echo $e107->parseMemorySize($fsize,2); ?>|<?php echo $entry?>" <?php echo ($entry == $img)?'selected':''?>><?php echo $entry?></option>
|
|
<?php
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$errors[] = '{$lang_ibrowser_errornodir}';
|
|
}
|
|
?>
|
|
</select></td>
|
|
<td> </td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="3"><table width="100%" border="0" cellspacing="0" cellpadding="0">
|
|
<tr>
|
|
<td width="40%"><?php if ($tinyMCE_img_delete_allowed) { ?>
|
|
<input type="button" value="{$lang_ibrowser_delete}" class="bt" onClick="deleteClick();" />
|
|
<?php } ?></td>
|
|
<td align="right"><input type="button" name="selectbt" value="{$lang_ibrowser_select}" class="bt" onClick="selectClick();" />
|
|
<input type="button" value="{$lang_ibrowser_cancel}" class="bt" onClick="window.close();" /></td>
|
|
</tr>
|
|
</table></td>
|
|
</tr>
|
|
</table></td>
|
|
</tr>
|
|
</table>
|
|
</fieldset>
|
|
<fieldset style= "padding: 5 5 5 5; margin-top: 10px;">
|
|
<legend>{$lang_ibrowser_img_info}</legend>
|
|
<table style='width:440px;border:0px' cellspacing="0" cellpadding="0">
|
|
<tr>
|
|
<td><table style='width:440px;border:0px' cellpadding="2" cellspacing="0">
|
|
<tr>
|
|
<td style='width:80px'>{$lang_ibrowser_src}:</td>
|
|
<td colspan="5"><input name="src" type="text" id="src" value="" style="width: 100%;" /></td>
|
|
</tr>
|
|
<tr>
|
|
<td>{$lang_ibrowser_alt}:</td>
|
|
<td colspan="5"><input name="alt" type="text" id="alt" value="" style="width: 100%;" onChange="updateStyle()" /></td>
|
|
</tr>
|
|
<tr>
|
|
<td>{$lang_ibrowser_align}:</td>
|
|
<td colspan="3"><select name="align" style="width: 100%;" onChange="updateStyle()">
|
|
<option value="">{$lang_insert_image_align_default}</option>
|
|
<option value="left">{$lang_insert_image_align_left}</option>
|
|
<option value="right">{$lang_insert_image_align_right}</option>
|
|
</select></td>
|
|
<td width="5"> </td>
|
|
<td rowspan="8" align="left" valign="top" style='width:210px;overflow:hidden'>
|
|
<div id="stylepreview" style="padding:10px; width: 200px; height:100%; overflow:hidden; background-color:#ffffff; font-size:8px" class="previewWindow">
|
|
<p><img id="wrap" src="images/textflow.gif" width="45" height="45" alt="" style="border:0px; float:right; margin-left:0px; margin-right:0px; margin-top:0px; margin-bottom:0px" />Lorem
|
|
ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum
|
|
edipiscing elit, sed diam nonummy nibh euismod tincidunt ut
|
|
laoreet dolore magna aliquam erat volutpat.Loreum ipsum edipiscing
|
|
elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore
|
|
magna aliquam erat volutpat. Ut wisi enim ad minim veniam,
|
|
quis nostrud exercitation ullamcorper suscipit. Lorem ipsum,
|
|
Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing
|
|
elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore
|
|
magna aliquam erat volutpat.</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>{$lang_ibrowser_size}:</td>
|
|
<td colspan="3"><input name="size" type="text" id="size" value="" readonly="true" style="width: 100%;" /></td>
|
|
<td> </td>
|
|
</tr>
|
|
<tr>
|
|
<td>{$lang_ibrowser_height}:</td>
|
|
<td width="40"><input name="height" type="text" id="height" value="" size="5" maxlength="4" style="text-align: right;" onChange="changeDim(0)" /></td>
|
|
<td width="25" rowspan="2" align="left" valign="middle"><a href="#" onClick="resetDim();" ><img src="images/constrain.gif" alt="{$lang_ibrowser_reset}" width="22" height="29" border="0"></a></td>
|
|
<td rowspan="2"> </td>
|
|
<td> </td>
|
|
</tr>
|
|
<tr>
|
|
<td>{$lang_ibrowser_width}:</td>
|
|
<td><input name="width" type="text" id="width" value="" size="5" maxlength="4" style="text-align: right;" onChange="changeDim(1)" /></td>
|
|
<td> </td>
|
|
</tr>
|
|
<tr>
|
|
<td>{$lang_ibrowser_border}:</td>
|
|
<td colspan="3">
|
|
<input name="border" type="text" id="border" value="0" size="5" maxlength="4" style="text-align: right;" onchange="updateStyle()" />px
|
|
</td>
|
|
<td> </td>
|
|
</tr>
|
|
<tr>
|
|
<td>Margin-left:</td>
|
|
<td colspan="3"><input name="margin_left" type="text" id="margin_left" value="0" size="5" maxlength="4" style="text-align: right;" onchange="updateStyle()" />px
|
|
</td>
|
|
<td> </td>
|
|
</tr>
|
|
<tr>
|
|
<td>Margin-Right:</td>
|
|
<td colspan="3"><input name="margin_right" type="text" id="margin_right" value="0" size="5" maxlength="4" style="text-align: right;" onchange="updateStyle()" />px
|
|
</td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Margin-Top:</td>
|
|
<td colspan="3"><input name="margin_top" type="text" id="margin_top" value="0" size="5" maxlength="4" style="text-align: right;" onchange="updateStyle()" />px
|
|
</td>
|
|
<td> </td>
|
|
</tr>
|
|
<tr>
|
|
<td>Margin-Bottom:</td>
|
|
<td colspan="3"><input name="margin_bottom" type="text" id="margin_bottom" value="0" size="5" maxlength="4" style="text-align: right;" onchange="updateStyle()" />px
|
|
</td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
</table></td>
|
|
</tr>
|
|
</table>
|
|
</fieldset>
|
|
|
|
</form>
|
|
</body>
|
|
</html>
|
|
<?php
|
|
function liboptions($arr, $prefix = '', $sel = '')
|
|
{
|
|
$buf = '';
|
|
foreach($arr as $lib) {
|
|
$buf .= '<option value="'.$lib['value'].'"'.(($lib['value'] == $sel)?' selected':'').'>'.$prefix.$lib['text'].'</option>'."\n";
|
|
}
|
|
return $buf;
|
|
}
|
|
|
|
|
|
|
|
?>
|