1: <?php
2: /**
3: * Xoopsemotions plugin for tinymce
4: *
5: * @copyright (c) 2000-2016 XOOPS Project (www.xoops.org)
6: * @license GNU GPL 2.0 or later (https://www.gnu.org/licenses/gpl-2.0.html)
7: * @package class / xoopseditor
8: * @subpackage tinymce / xoops plugins
9: * @since 2.3.0
10: * @author ralf57
11: * @author luciorota <lucio.rota@gmail.com>
12: * @author Laurent JEN <dugris@frxoops.org>
13: */
14:
15: // load mainfile.php
16: $current_path = __DIR__;
17: if (DIRECTORY_SEPARATOR !== '/') {
18: $current_path = str_replace(DIRECTORY_SEPARATOR, '/', $current_path);
19: }
20: $xoops_root_path = substr($current_path, 0, strpos(strtolower($current_path), '/class/xoopseditor/tinymce/'));
21: include_once $xoops_root_path . '/mainfile.php';
22: defined('XOOPS_ROOT_PATH') || exit('XOOPS root path not defined');
23:
24: // include
25: include_once XOOPS_ROOT_PATH . '/modules/system/constants.php';
26:
27: // check user/group
28: $admin = false;
29:
30: /** @var \XoopsGroupPermHandler $gperm_handler */
31: $gperm_handler = xoops_getHandler('groupperm');
32: $groups = is_object($GLOBALS['xoopsUser']) ? $GLOBALS['xoopsUser']->getGroups() : array(XOOPS_GROUP_ANONYMOUS);
33: $admin = $gperm_handler->checkRight('system_admin', XOOPS_SYSTEM_IMAGE, $groups);
34:
35: // check category readability/writability by group
36: /** @var \XoopsImagecategoryHandler $imgcat_handler */
37: $imgcat_handler = xoops_getHandler('imagecategory');
38: $catreadlist = $imgcat_handler->getList($groups, 'imgcat_read', 1); // get readable categories
39: $catwritelist = $imgcat_handler->getList($groups, 'imgcat_write', 1); // get writable categories
40:
41: $canbrowse = ($admin || !empty($catreadlist) || !empty($catwritelist)) ? true : false;
42:
43: echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
44: echo '<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="' . _LANGCODE . '" lang="' . _LANGCODE . '">';
45: ?>
46: <head>
47: <title>{#xoopsimagemanager_dlg.dialog_title}</title>
48: <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
49: <script type="text/javascript" src="../../utils/mctabs.js"></script>
50: <script type="text/javascript" src="../../utils/form_utils.js"></script>
51: <script type="text/javascript" src="../../utils/validate.js"></script>
52: <script type="text/javascript" src="js/xoopsimagemanager.js"></script>
53: <link href="css/xoopsimagemanager.css" rel="stylesheet" type="text/css"/>
54: <base target="_self"/>
55: </head>
56:
57: <body id="xoopsimagemanager" style="display: none;">
58: <form onsubmit="XoopsimagemanagerDialog.insert();return false;" action="#">
59: <div class="tabs">
60: <ul>
61: <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');"
62: onmousedown="return false;">{#xoopsimagemanager_dlg.tab_general}</a></span></li>
63: <li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{#xoopsimagemanager_dlg.tab_appearance}</a></span>
64: </li>
65: <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#xoopsimagemanager_dlg.tab_advanced}</a></span>
66: </li>
67: </ul>
68: </div>
69:
70: <div class="panel_wrapper">
71: <div id="general_panel" class="panel current">
72: <fieldset>
73: <legend>{#xoopsimagemanager_dlg.general}</legend>
74: <table class="properties">
75: <tr>
76: <td class="column1">
77: <label id="srclabel" for="src">{#xoopsimagemanager_dlg.src}</label>
78: </td>
79: <td colspan="2">
80: <table border="0" cellspacing="0" cellpadding="0">
81: <tr>
82: <td>
83: <input name="src" type="text" id="src" value=""
84: onchange="XoopsimagemanagerDialog.showPreviewImage(this.value);"/>
85: <?php echo imageBrowser('src', $canbrowse); ?>
86: </td>
87: <td id="srcbrowsercontainer">&nbsp;</td>
88: </tr>
89: </table>
90: </td>
91: </tr>
92: <tr>
93: <td><label for="src_list">{#xoopsimagemanager_dlg.image_list}</label></td>
94: <td><select id="src_list" name="src_list"
95: onchange="document.getElementById('src').value=this.options[this.selectedIndex].value;document.getElementById('alt').value=this.options[this.selectedIndex].text;document.getElementById('title').value=this.options[this.selectedIndex].text;XoopsimagemanagerDialog.showPreviewImage(this.options[this.selectedIndex].value);"></select>
96: </td>
97: </tr>
98: <tr>
99: <td class="column1"><label id="altlabel" for="alt">{#xoopsimagemanager_dlg.alt}</label></td>
100: <td colspan="2"><input id="alt" name="alt" type="text" value=""/></td>
101: </tr>
102: <tr>
103: <td class="column1"><label id="titlelabel" for="title">{#xoopsimagemanager_dlg.title}</label></td>
104: <td colspan="2"><input id="title" name="title" type="text" value=""/></td>
105: </tr>
106: </table>
107: </fieldset>
108:
109: <fieldset>
110: <legend>{#xoopsimagemanager_dlg.preview}</legend>
111: <div id="prev"></div>
112: </fieldset>
113: </div>
114:
115: <div id="appearance_panel" class="panel">
116: <fieldset>
117: <legend>{#xoopsimagemanager_dlg.tab_appearance}</legend>
118:
119: <table border="0" cellpadding="4" cellspacing="0">
120: <tr>
121: <td class="column1"><label id="alignlabel" for="align">{#xoopsimagemanager_dlg.align}</label></td>
122: <td>
123: <select id="align" name="align"
124: onchange="XoopsimagemanagerDialog.updateStyle('align');XoopsimagemanagerDialog.changeAppearance();">
125: <option value="">{#not_set}</option>
126: <option value="baseline">{#xoopsimagemanager_dlg.align_baseline}</option>
127: <option value="top">{#xoopsimagemanager_dlg.align_top}</option>
128: <option value="middle">{#xoopsimagemanager_dlg.align_middle}</option>
129: <option value="bottom">{#xoopsimagemanager_dlg.align_bottom}</option>
130: <option value="text-top">{#xoopsimagemanager_dlg.align_texttop}</option>
131: <option value="text-bottom">{#xoopsimagemanager_dlg.align_textbottom}</option>
132: <option value="left">{#xoopsimagemanager_dlg.align_left}</option>
133: <option value="right">{#xoopsimagemanager_dlg.align_right}</option>
134: </select>
135: </td>
136: <td rowspan="6" valign="top">
137: <div class="alignPreview">
138: <img id="alignSampleImg" src="img/sample.gif" alt="{#xoopsimagemanager_dlg.example_img}"/>
139: Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam
140: nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum
141: edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam
142: erat volutpat.
143: </div>
144: </td>
145: </tr>
146:
147: <tr>
148: <td class="column1"><label id="widthlabel" for="width">{#xoopsimagemanager_dlg.dimensions}</label></td>
149: <td nowrap="nowrap">
150: <input name="width" type="text" id="width" value="" size="5" maxlength="5" class="size"
151: onchange="XoopsimagemanagerDialog.changeHeight();"/> x
152: <input name="height" type="text" id="height" value="" size="5" maxlength="5" class="size"
153: onchange="XoopsimagemanagerDialog.changeWidth();"/> px
154: </td>
155: </tr>
156:
157: <tr>
158: <td>&nbsp;</td>
159: <td>
160: <table border="0" cellpadding="0" cellspacing="0">
161: <tr>
162: <td><input id="constrain" type="checkbox" name="constrain" class="checkbox"/></td>
163: <td><label id="constrainlabel" for="constrain">{#xoopsimagemanager_dlg.constrain_proportions}</label></td>
164: </tr>
165: </table>
166: </td>
167: </tr>
168:
169: <tr>
170: <td class="column1"><label id="vspacelabel" for="vspace">{#xoopsimagemanager_dlg.vspace}</label></td>
171: <td><input name="vspace" type="text" id="vspace" value="" size="3" maxlength="3" class="number"
172: onchange="XoopsimagemanagerDialog.updateStyle('vspace');XoopsimagemanagerDialog.changeAppearance();"
173: onblur="XoopsimagemanagerDialog.updateStyle('vspace');XoopsimagemanagerDialog.changeAppearance();"/>
174: </td>
175: </tr>
176:
177: <tr>
178: <td class="column1"><label id="hspacelabel" for="hspace">{#xoopsimagemanager_dlg.hspace}</label></td>
179: <td><input name="hspace" type="text" id="hspace" value="" size="3" maxlength="3" class="number"
180: onchange="XoopsimagemanagerDialog.updateStyle('hspace');XoopsimagemanagerDialog.changeAppearance();"
181: onblur="XoopsimagemanagerDialog.updateStyle('hspace');XoopsimagemanagerDialog.changeAppearance();"/></td>
182: </tr>
183:
184: <tr>
185: <td class="column1"><label id="borderlabel" for="border">{#xoopsimagemanager_dlg.border}</label></td>
186: <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" class="number"
187: onchange="XoopsimagemanagerDialog.updateStyle('border');XoopsimagemanagerDialog.changeAppearance();"
188: onblur="XoopsimagemanagerDialog.updateStyle('border');XoopsimagemanagerDialog.changeAppearance();"/></td>
189: </tr>
190:
191: <tr>
192: <td><label for="class_list">{#class_name}</label></td>
193: <td><select id="class_list" name="class_list"></select></td>
194: </tr>
195:
196: <tr>
197: <td class="column1"><label id="stylelabel" for="style">{#xoopsimagemanager_dlg.style}</label></td>
198: <td colspan="2"><input id="style" name="style" type="text" value="" onchange="XoopsimagemanagerDialog.changeAppearance();"/>
199: </td>
200: </tr>
201:
202: <!-- <tr>
203: <td class="column1"><label id="classeslabel" for="classes">{#xoopsimagemanager_dlg.classes}</label></td>
204: <td colspan="2"><input id="classes" name="classes" type="text" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td>
205: </tr> -->
206: </table>
207: </fieldset>
208: </div>
209:
210: <div id="advanced_panel" class="panel">
211: <fieldset>
212: <legend>{#xoopsimagemanager_dlg.swap_image}</legend>
213:
214: <input type="checkbox" id="onmousemovecheck" name="onmousemovecheck" class="checkbox"
215: onclick="XoopsimagemanagerDialog.setSwapImage(this.checked);"/>
216: <label id="onmousemovechecklabel" for="onmousemovecheck">{#xoopsimagemanager_dlg.alt_image}</label>
217:
218: <table border="0" cellpadding="4" cellspacing="0" width="100%">
219: <tr>
220: <td class="column1"><label id="onmouseoversrclabel" for="onmouseoversrc">{#xoopsimagemanager_dlg.mouseover}</label></td>
221: <td>
222: <table border="0" cellspacing="0" cellpadding="0">
223: <tr>
224: <td>
225: <input id="onmouseoversrc" name="onmouseoversrc" type="text" value=""/>
226: <?php echo imageBrowser('onmouseoversrc', $canbrowse); ?>
227: </td>
228: <td id="onmouseoversrccontainer">&nbsp;</td>
229: </tr>
230: </table>
231: </td>
232: </tr>
233: <tr>
234: <td><label for="over_list">{#xoopsimagemanager_dlg.image_list}</label></td>
235: <td><select id="over_list" name="over_list"
236: onchange="document.getElementById('onmouseoversrc').value=this.options[this.selectedIndex].value;"></select></td>
237: </tr>
238: <tr>
239: <td class="column1"><label id="onmouseoutsrclabel" for="onmouseoutsrc">{#xoopsimagemanager_dlg.mouseout}</label></td>
240: <td class="column2">
241: <table border="0" cellspacing="0" cellpadding="0">
242: <tr>
243: <td>
244: <input id="onmouseoutsrc" name="onmouseoutsrc" type="text" value=""/>
245: <?php echo imageBrowser('onmouseoutsrc', $canbrowse); ?>
246: </td>
247: <td id="onmouseoutsrccontainer">&nbsp;</td>
248: </tr>
249: </table>
250: </td>
251: </tr>
252: <tr>
253: <td><label for="out_list">{#xoopsimagemanager_dlg.image_list}</label></td>
254: <td><select id="out_list" name="out_list"
255: onchange="document.getElementById('onmouseoutsrc').value=this.options[this.selectedIndex].value;"></select></td>
256: </tr>
257: </table>
258: </fieldset>
259:
260: <fieldset>
261: <legend>{#xoopsimagemanager_dlg.misc}</legend>
262:
263: <table border="0" cellpadding="4" cellspacing="0">
264: <tr>
265: <td class="column1"><label id="idlabel" for="id">{#xoopsimagemanager_dlg.id}</label></td>
266: <td><input id="id" name="id" type="text" value=""/></td>
267: </tr>
268:
269: <tr>
270: <td class="column1"><label id="dirlabel" for="dir">{#xoopsimagemanager_dlg.langdir}</label></td>
271: <td>
272: <select id="dir" name="dir" onchange="XoopsimagemanagerDialog.changeAppearance();">
273: <option value="">{#not_set}</option>
274: <option value="ltr">{#xoopsimagemanager_dlg.ltr}</option>
275: <option value="rtl">{#xoopsimagemanager_dlg.rtl}</option>
276: </select>
277: </td>
278: </tr>
279:
280: <tr>
281: <td class="column1"><label id="langlabel" for="lang">{#xoopsimagemanager_dlg.langcode}</label></td>
282: <td>
283: <input id="lang" name="lang" type="text" value=""/>
284: </td>
285: </tr>
286:
287: <tr>
288: <td class="column1"><label id="usemaplabel" for="usemap">{#xoopsimagemanager_dlg.map}</label></td>
289: <td>
290: <input id="usemap" name="usemap" type="text" value=""/>
291: </td>
292: </tr>
293:
294: <tr>
295: <td class="column1"><label id="longdesclabel" for="longdesc">{#xoopsimagemanager_dlg.long_desc}</label></td>
296: <td>
297: <table border="0" cellspacing="0" cellpadding="0">
298: <tr>
299: <td><input id="longdesc" name="longdesc" type="text" value=""/></td>
300: <td id="longdesccontainer">&nbsp;</td>
301: </tr>
302: </table>
303: </td>
304: </tr>
305: </table>
306: </fieldset>
307: </div>
308: </div>
309:
310: <div class="mceActionPanel">
311: <div style="float: left;">
312: <input type="button" id="insert" name="insert" value="{#insert}" onclick="XoopsimagemanagerDialog.insert();"/>
313: </div>
314:
315: <div style="float: right;">
316: <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();"/>
317: </div>
318: </div>
319: </form>
320: </body>
321: </html>
322:
323: <?php
324: /**
325: * @param string $inputname
326: * @param bool $canbrowse
327: *
328: * @return string
329: */
330: function imageBrowser($inputname = 'src', $canbrowse = false)
331: {
332: $html = '';
333: if ($canbrowse) {
334: $html = "<img title=\"{#xoopsimagebrowser.desc}\" class=\"xoopsimagebrowser\" src=\"img/xoopsimagemanager.png\"
335: onclick=\"javascript:XoopsImageBrowser('" . $inputname . "');\" />\n";
336: }
337:
338: return $html;
339: }
340:
341: ?>
342: