-<?php # $Id: functions_entries.inc.php 435 2005-08-25 12:36:39Z garvinhicking $\r
-# Copyright (c) 2003-2005, Jannis Hermanns (on behalf the Serendipity Developer Team)\r
-# All rights reserved. See LICENSE file for licensing details\r
-\r
-include_once(S9Y_INCLUDE_PATH . "include/functions_trackbacks.inc.php");\r
-\r
-/**\r
- * Prints the form for editing/creating new blog entries\r
- *\r
- * This is the core file where your edit form appears. The Heart Of Gold, so to say.\r
- *\r
- * @access public\r
- * @param string The URL where the entry form is submitted to\r
- * @param array An array of hidden input fields that should be passed on to the HTML FORM\r
- * @param array The entry superarray with your entry's contents\r
- * @param string Any error messages that might have occured on the last run\r
- * @return null\r
- */\r
-function serendipity_printEntryForm($targetURL, $hiddens = array(), $entry = array(), $errMsg = "") {\r
- global $serendipity;\r
-\r
- $serendipity['EditorBrowsers'] = '(IE|Mozilla)';\r
-\r
- $draftD = '';\r
- $draftP = '';\r
- $categoryselector_expanded = false;\r
-\r
- serendipity_plugin_api::hook_event('backend_entryform', $entry);\r
-\r
- if ( (isset($entry['isdraft']) && serendipity_db_bool($entry['isdraft'])) ||\r
- (!isset($entry['isdraft']) && $serendipity['publishDefault'] == 'draft') ) {\r
- $draftD = ' selected="selected"';\r
- } else {\r
- $draftP = ' selected="selected"';\r
- }\r
-\r
- if (isset($entry['moderate_comments']) && (serendipity_db_bool($entry['moderate_comments']))) {\r
- $moderate_comments = ' checked="checked"';\r
- } elseif (!isset($entry['moderate_comments']) && ($serendipity['moderateCommentsDefault'] == 'true' || $serendipity['moderateCommentsDefault'] === true)) {\r
- // This is the default on creation of a new entry and depends on the "moderateCommentsDefault" variable of the configuration.\r
- $moderate_comments = ' checked="checked"';\r
- } else {\r
- $moderate_comments = '';\r
- }\r
-\r
-\r
- if (isset($entry['allow_comments']) && (serendipity_db_bool($entry['allow_comments']))) {\r
- $allow_comments = ' checked="checked"';\r
- } elseif ((!isset($entry['allow_comments']) || $entry['allow_comments'] !== 'false') && (!isset($serendipity['allowCommentsDefault']) || $serendipity['allowCommentsDefault'] == 'true' || $serendipity['allowCommentsDefault'] === true)) {\r
- // This is the default on creation of a new entry and depends on the "allowCommentsDefault" variable of the configuration.\r
- $allow_comments = ' checked="checked"';\r
- } else {\r
- $allow_comments = '';\r
- }\r
-\r
- // Fix category list. If the entryForm is displayed after a POST request, the additional category information is lost.\r
- if (is_array($entry['categories']) && !is_array($entry['categories'][0])) {\r
- $categories = (array)$entry['categories'];\r
- $entry['categories'] = array();\r
- foreach ($categories as $catid) {\r
- $entry['categories'][] = serendipity_fetchCategoryInfo($catid);\r
- }\r
- }\r
-\r
- $n = "\n";\r
- $cat_list = '<select id="categoryselector" name="serendipity[categories][]" style="vertical-align: middle;" multiple="multiple">' . $n;\r
- $cat_list .= ' <option value="0">[' . NO_CATEGORY . ']</option>' . $n;\r
- $selected = array();\r
- if (is_array($entry['categories'])) {\r
- if (count($entry['categories']) > 1) {\r
- $categoryselector_expanded = true;\r
- }\r
-\r
- foreach ($entry['categories'] as $cat) {\r
- $selected[] = $cat['categoryid'];\r
- }\r
- }\r
-\r
- if (count($selected) > 1 ||\r
- (isset($serendipity['POST']['categories']) && is_array($serendipity['POST']['categories']) && sizeof($serendipity['POST']['categories']) > 1)) {\r
- $categoryselector_expanded = true;\r
- }\r
-\r
- if (is_array($cats = serendipity_fetchCategories())) {\r
- $cats = serendipity_walkRecursive($cats, 'categoryid', 'parentid', VIEWMODE_THREADED);\r
- foreach ( $cats as $cat ) {\r
- $cat_list .= '<option value="'. $cat['categoryid'] .'"'. (in_array($cat['categoryid'], $selected) ? ' selected="selected"' : '') .'>'. str_repeat(' ', $cat['depth']) . $cat['category_name'] .'</option>' . "\n";\r
- }\r
- }\r
- $cat_list .= '</select>' . $n;\r
-\r
- if (!empty($serendipity['GET']['title'])) {\r
- $entry['title'] = utf8_decode(urldecode($serendipity['GET']['title']));\r
- }\r
-\r
- if (!empty($serendipity['GET']['body'])) {\r
- $entry['body'] = utf8_decode(urldecode($serendipity['GET']['body']));\r
- }\r
-\r
- if (!empty($serendipity['GET']['url'])) {\r
- $entry['body'] .= "\n" . '<br /><a href="' . htmlspecialchars(utf8_decode(urldecode($serendipity['GET']['url']))) . '">' . $entry['title'] . '</a>';\r
- }\r
-\r
- $hidden = '';\r
- foreach($hiddens as $key => $value) {\r
- $hidden .= ' <input type="hidden" name="' . $key . '" value="' . $value . '" />' . $n;\r
- }\r
- $hidden .= ' <input type="hidden" id="entryid" name="serendipity[id]" value="' . (isset($entry['id']) ? $entry['id'] : '') . '" />' . $n;\r
- $hidden .= ' <input type="hidden" name="serendipity[timestamp]" value="' . (isset($entry['timestamp']) ? serendipity_serverOffsetHour($entry['timestamp']) : serendipity_serverOffsetHour(time())) . '" />' . $n;\r
- $hidden .= ' <input type="hidden" name="serendipity[preview]" value="false" />';\r
- $hidden .= ' ' . serendipity_setFormToken();\r
- if (!empty($errMsg)) {\r
-?>\r
- <div class="serendipityAdminMsgError"><?php echo $errMsg; ?></div>\r
-<?php } ?>\r
- <form <?php echo $entry['entry_form']; ?> action="<?php echo $targetURL; ?>" method="post" id="serendipityEntry" style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px">\r
- <?php echo $hidden; ?>\r
-\r
- <table class="serendipityEntryEdit" border="0" width="100%">\r
- <tr>\r
- <td>\r
- <b><?php echo TITLE; ?>:</b>\r
- </td>\r
- <td colspan="2">\r
- <table width="100%" cellspacing="0" cellpadding="0" border="0">\r
- <tr>\r
- <td><input type="text" id="entryTitle" name="serendipity[title]" value="<?php echo isset($entry['title']) ? htmlspecialchars($entry['title']) : ''; ?>" size="60" /></td>\r
- <td align="right">\r
- <select name="serendipity[isdraft]">\r
- <?php if ($_SESSION['serendipityRightPublish']) { ?><option value="false" <?php echo $draftP; ?>><?php echo PUBLISH; ?></option><?php } ?>\r
- <option value="true" <?php echo $draftD; ?>><?php echo DRAFT; ?></option>\r
- </select>\r
- </td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- <tr>\r
-<?php\r
- if (isset($serendipity['allowDateManipulation']) && $serendipity['allowDateManipulation']) {\r
-?>\r
- <td>\r
- <b><?php echo DATE; ?>:</b>\r
- </td>\r
- <td>\r
- <input type="hidden" name="serendipity[chk_timestamp]" value="<?php echo serendipity_serverOffsetHour(isset($entry['timestamp']) && $entry['timestamp'] > 0 ? $entry['timestamp'] : time()); ?>" />\r
- <input type="text" name="serendipity[new_timestamp]" id="serendipityNewTimestamp" value="<?php echo date(DATE_FORMAT_2, serendipity_serverOffsetHour(isset($entry['timestamp']) && $entry['timestamp'] > 0 ? $entry['timestamp'] : time())); ?>" />\r
- <a href="#" onclick="document.getElementById('serendipityNewTimestamp').value = '<?php echo date(DATE_FORMAT_2, serendipity_serverOffsetHour(time())) ?>'; return false;" title="<?php echo RESET_DATE_DESC ?>"><img src="<?php echo serendipity_getTemplateFile('admin/img/clock.png') ?>" border="0" style="vertical-align: text-top;" alt="<?php echo RESET_DATE ?>" /></a>\r
- </td>\r
- <td align="right">\r
-<?php\r
- } else {\r
-?>\r
- <td align="right" colspan="3">\r
-<?php\r
- }\r
-?>\r
- <a style="border:0; text-decoration: none" href="#" onclick="showItem('categoryselector'); return false" title="<?php echo TOGGLE_OPTION; ?>"><img src="<?php echo serendipity_getTemplateFile('img/plus.png') ?>" id="option_categoryselector" style="border: 20px" alt="" border="0" /></a> <b><?php echo CATEGORY; ?>:</b> <?php echo $cat_list ; ?>\r
- <script type="text/javascript" language="JavaScript">\r
-\r
- function toggle_extended(setCookie) {\r
- var textarea = document.getElementById('serendipity[extended]');\r
- var button = document.getElementById('option_extended');\r
- var tools = document.getElementById('tools_extended');\r
- if ( textarea.style.display == 'none' ) {\r
- textarea.style.display = '';\r
- tools.style.display = '';\r
- button.src = '<?php echo serendipity_getTemplateFile('img/minus.png') ?>';\r
- if (setCookie == true) {\r
- document.cookie = 'serendipity[toggle_extended]=true;';\r
- }\r
- } else {\r
- textarea.style.display = 'none';\r
- tools.style.display = 'none';\r
- button.src = '<?php echo serendipity_getTemplateFile('img/plus.png') ?>';\r
- if (setCookie == true) {\r
- document.cookie = 'serendipity[toggle_extended]=;';\r
- }\r
- }\r
- }\r
-\r
- var selector_toggle = new Array();\r
- var selector_store = new Array();\r
- var selector_restore = new Array();\r
-\r
- function showItem(id) {\r
- var selected = 0;\r
- if (typeof(id) == 'undefined' || typeof(id) == 'object') {\r
- id = 'categoryselector';\r
- }\r
-\r
- if (document.getElementById) {\r
- el = document.getElementById(id);\r
- if (selector_toggle[id] && selector_toggle[id] == 'off') {\r
- selector_restore[id] = new Array();\r
- selector_toggle[id] = 'on';\r
-\r
- /* Hack to make sure that when the single dropdown is shown, don't have multiple selections */\r
- last = 0;\r
- \r
- for (i=0; i < el.options.length; i++) {\r
- if (el.options[i].selected == true) {\r
- selected++;\r
- last = i;\r
- selector_restore[id][last] = 'on';\r
- }\r
-\r
- if (selected > 1) {\r
- /* If there is more than one selected, we reset all those to false\r
- This is because otherwise the label will say 'No Category', but the categories will still be selected */\r
- for (j=0; j < el.options.length; j++) {\r
- /* Save selection in array to later restore them */\r
- if (el.options[j].selected == true) {\r
- el.options[j].selected = false;\r
- selector_restore[id][j] = 'on';\r
- last = j;\r
- } else {\r
- selector_restore[id][j] = false;\r
- }\r
- }\r
- break;\r
- }\r
- }\r
- \r
- el.selectedIndex = null;\r
- if (last > 0) {\r
- el.selectedIndex = last;\r
- }\r
-\r
- el.size = 1;\r
-\r
- /* Show a normal dropdown */\r
- if (el.multiple) {\r
- el.multiple = false;\r
- }\r
-\r
- document.getElementById('option_' + id).src = '<?php echo serendipity_getTemplateFile('img/plus.png') ?>';\r
- } else {\r
- selector_store[id] = el.size;\r
- if (selector_store[id] == 0) {\r
- selector_store[id] = 5;\r
- }\r
-\r
- last = 0;\r
- if (el.selectedIndex > 0) {\r
- if (!selector_restore[id]) {\r
- selector_restore[id] = new Array();\r
- }\r
-\r
- for (j=0; j < el.options.length; j++) {\r
- /* Save selection in array to later restore them */\r
- if (el.options[j].selected == true) {\r
- selector_restore[id][j] = 'on';\r
- last = j;\r
- }\r
- }\r
- }\r
- el.selectedIndex = -1;\r
- el.size = <?php echo count($cats)+1; ?>;\r
- selector_toggle[id] = 'off';\r
-\r
- /* Show multiple items */\r
- el.multiple = true;\r
-\r
- /* Restore previously selected items? */\r
- last = 0;\r
- for (i = 0; i < el.options.length; i++) {\r
- if (selector_restore && selector_restore[id] && selector_restore[id][i] && selector_restore[id][i] == 'on') {\r
- val = el.options[i].value;\r
- if (el.options[i].selected != true) {\r
- el.options[i].selected = true;\r
- last = i;\r
- // [TODO] IE Bug: Don't ask me why, but this restoring only works in Internet Explorer if you put this:\r
- // alert('it doesnt matter what, just the alert is important');\r
- }\r
- }\r
- }\r
-\r
- document.getElementById('option_' + id).src = '<?php echo serendipity_getTemplateFile('img/minus.png') ?>';\r
- }\r
- }\r
- }\r
-\r
- function checkSave() {\r
-<?php\r
- $void = null;\r
- serendipity_plugin_api::hook_event('backend_entry_checkSave', $void);\r
-?>\r
- return true;\r
- }\r
- \r
- selector_toggle['categoryselector'] = '<?php echo ($categoryselector_expanded ? 'on' : 'off'); ?>';\r
- addLoadEvent(showItem);\r
- </script>\r
- </td>\r
- </tr>\r
- <tr>\r
-<?php\r
- if (!$serendipity['wysiwyg']) {\r
-?>\r
- <td colspan="2"><b><?php echo ENTRY_BODY; ?></b></td>\r
- <td align="right">\r
-<?php\r
- /* Since the user has WYSIWYG editor disabled, we want to check if we should use the "better" non-WYSIWYG editor */\r
- if (!$serendipity['wysiwyg'] && eregi($serendipity['EditorBrowsers'], $_SERVER['HTTP_USER_AGENT']) ) {\r
-?>\r
- <script type="text/javascript" language="JavaScript">\r
- document.write('<input type="button" class="serendipityPrettyButton" name="insI" value="I" accesskey="i" style="font-style: italic" onclick="wrapSelection(document.forms[\'serendipityEntry\'][\'serendipity[body]\'],\'<i>\',\'</i>\')" />');\r
- document.write('<input type="button" class="serendipityPrettyButton" name="insB" value="B" accesskey="b" style="font-weight: bold" onclick="wrapSelection(document.forms[\'serendipityEntry\'][\'serendipity[body]\'],\'<b>\',\'</b>\')" />');\r
- document.write('<input type="button" class="serendipityPrettyButton" name="insU" value="U" accesskey="u" style="text-decoration: underline;" onclick="wrapSelection(document.forms[\'serendipityEntry\'][\'serendipity[body]\'],\'<u>\',\'</u>\')" />');\r
- document.write('<input type="button" class="serendipityPrettyButton" name="insQ" value="<?php echo QUOTE ?>" accesskey="q" style="font-style: italic" onclick="wrapSelection(document.forms[\'serendipityEntry\'][\'serendipity[body]\'],\'<blockquote>\',\'</blockquote>\')" />');\r
- document.write('<input type="button" class="serendipityPrettyButton" name="insJ" value="img" accesskey="j" onclick="wrapInsImage(document.forms[\'serendipityEntry\'][\'serendipity[body]\'])" />');\r
- document.write('<input type="button" class="serendipityPrettyButton" name="insImage" value="<?php echo MEDIA; ?>" style="" onclick="window.open(\'serendipity_admin_image_selector.php?serendipity[textarea]=body\', \'ImageSel\', \'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1\');" />');\r
- document.write('<input type="button" class="serendipityPrettyButton" name="insURL" value="URL" accesskey="l" onclick="wrapSelectionWithLink(document.forms[\'serendipityEntry\'][\'serendipity[body]\'])" />');\r
- </script>\r
-<?php\r
- /* Do the "old" non-WYSIWYG editor */\r
- } elseif (!$serendipity['wysiwyg']) { ?>\r
- <script type="text/javascript" language="JavaScript">\r
- document.write('<input type="button" class="serendipityPrettyButton" value=" B " onclick="serendipity_insBasic(document.forms[\'serendipityEntry\'][\'serendipity[body]\'], \'b\')">');\r
- document.write('<input type="button" class="serendipityPrettyButton" value=" U " onclick="serendipity_insBasic(document.forms[\'serendipityEntry\'][\'serendipity[body]\'], \'u\')">');\r
- document.write('<input type="button" class="serendipityPrettyButton" value=" I " onclick="serendipity_insBasic(document.forms[\'serendipityEntry\'][\'serendipity[body]\'], \'i\')">');\r
- document.write('<input type="button" class="serendipityPrettyButton" value="<img>" onclick="serendipity_insImage(document.forms[\'serendipityEntry\'][\'serendipity[body]\'])">');\r
- document.write('<input type="button" class="serendipityPrettyButton" value="<?php echo MEDIA; ?>" onclick="window.open(\'serendipity_admin_image_selector.php?serendipity[textarea]=body\', \'ImageSel\', \'width=800,height=600,toolbar=no\');">');\r
- document.write('<input type="button" class="serendipityPrettyButton" value="Link" onclick="serendipity_insLink(document.forms[\'serendipityEntry\'][\'serendipity[body]\'])">');\r
- </script>\r
-<?php }\r
-\r
- serendipity_plugin_api::hook_event('backend_entry_toolbar_body', $entry);\r
- } else {\r
-?>\r
- <td colspan="2"><b><?php echo ENTRY_BODY; ?></b></td>\r
- <td><?php serendipity_plugin_api::hook_event('backend_entry_toolbar_body', $entry); ?>\r
-\r
-<?php } ?>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="3">\r
- <textarea style="width: 100%" name="serendipity[body]" id="serendipity[body]" cols="80" rows="20"><?php echo isset($entry['body']) ? htmlspecialchars($entry['body']) : ''; ?></textarea>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="3">\r
- <table width="100%" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td align="left" width="70%">\r
- <input id="checkbox_allow_comments" type="checkbox" name="serendipity[allow_comments]" value="true" <?php echo $allow_comments; ?> /><label for="checkbox_allow_comments"><?php echo COMMENTS_ENABLE; ?></label><br />\r
- <input id="checkbox_moderate_comments" type="checkbox" name="serendipity[moderate_comments]" value="true" <?php echo $moderate_comments; ?> /><label for="checkbox_moderate_comments"><?php echo COMMENTS_MODERATE; ?></label>\r
- </td>\r
- <td align="right" rowspan="2" valign="middle" width="30%">\r
- <input accesskey="p" type="submit" value="- <?php echo PREVIEW; ?> -" class="serendipityPrettyButton" style="width: 150px" onclick="document.forms['serendipityEntry'].elements['serendipity[preview]'].value='true';" /><br />\r
- <input accesskey="s" type="submit" onclick="return checkSave();" value="- <?php echo SAVE; ?> -" class="serendipityPrettyButton" style="width: 150px" />\r
- </td>\r
- </tr>\r
- </table>\r
- <br />\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="2">\r
-<?php if (!$serendipity['wysiwyg']) { ?>\r
- <a style="border:0; text-decoration: none" href="#" onclick="toggle_extended(true); return false;" title="<?php echo TOGGLE_OPTION; ?>"><img src="<?php echo serendipity_getTemplateFile('img/plus.png') ?>" id="option_extended" alt="+/-" border="0" /></a>\r
-<?php } ?> <b><?php echo EXTENDED_BODY; ?></b></td>\r
- <td align="right">\r
- <?php\r
-if (!$serendipity['wysiwyg']) {\r
-?>\r
- <div id="tools_extended" style="display: none">\r
-<?php\r
- /* Since the user has WYSIWYG editor disabled, we want to check if we should use the "better" non-WYSIWYG editor */\r
- if (eregi($serendipity['EditorBrowsers'], $_SERVER['HTTP_USER_AGENT']) ) {\r
-?>\r
- <input type="button" class="serendipityPrettyButton" name="insI" value="I" accesskey="i" style="font-style: italic" onclick="wrapSelection(document.forms['serendipityEntry']['serendipity[extended]'],'<i>','</i>')" />\r
- <input type="button" class="serendipityPrettyButton" name="insB" value="B" accesskey="b" style="font-weight: bold" onclick="wrapSelection(document.forms['serendipityEntry']['serendipity[extended]'],'<b>','</b>')" />\r
- <input type="button" class="serendipityPrettyButton" name="insU" value="U" accesskey="u" style="text-decoration: underline;" onclick="wrapSelection(document.forms['serendipityEntry']['serendipity[extended]'],'<u>','</u>')" />\r
- <input type="button" class="serendipityPrettyButton" name="insQ" value="<?php echo QUOTE ?>" accesskey="q" style="font-style: italic" onclick="wrapSelection(document.forms['serendipityEntry']['serendipity[extended]'],'<blockquote>','</blockquote>')" />\r
- <input type="button" class="serendipityPrettyButton" name="insJ" value="img" accesskey="j" onclick="wrapInsImage(document.forms['serendipityEntry']['serendipity[extended]'])" />\r
- <input type="button" class="serendipityPrettyButton" name="insImage" value="<?php echo MEDIA; ?>" onclick="window.open('serendipity_admin_image_selector.php?serendipity[textarea]=extended', 'ImageSel', 'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1');" />\r
- <input type="button" class="serendipityPrettyButton" name="insURL" value="URL" accesskey="l" onclick="wrapSelectionWithLink(document.forms['serendipityEntry']['serendipity[extended]'])" />\r
-<?php\r
- /* Do the "old" non-WYSIWYG editor */\r
- } else { ?>\r
- <input type="button" class="serendipityPrettyButton" value=" B " onclick="serendipity_insBasic(document.forms['serendipityEntry']['serendipity[extended]'], 'b')">\r
- <input type="button" class="serendipityPrettyButton" value=" U " onclick="serendipity_insBasic(document.forms['serendipityEntry']['serendipity[extended]'], 'u')">\r
- <input type="button" class="serendipityPrettyButton" value=" I " onclick="serendipity_insBasic(document.forms['serendipityEntry']['serendipity[extended]'], 'i')">\r
- <input type="button" class="serendipityPrettyButton" value="<img>" onclick="serendipity_insImage(document.forms['serendipityEntry']['serendipity[extended]'])">\r
- <input type="button" class="serendipityPrettyButton" value="<?php echo MEDIA; ?>" onclick="window.open('serendipity_admin_image_selector.php?serendipity[textarea]=extended', 'ImageSel', 'width=800,height=600,toolbar=no');">\r
- <input type="button" class="serendipityPrettyButton" value="Link" onclick="serendipity_insLink(document.forms['serendipityEntry']['serendipity[extended]'])">\r
-<?php\r
- }\r
-\r
- serendipity_plugin_api::hook_event('backend_entry_toolbar_extended', $entry);\r
-?>\r
- </div>\r
-<?php } else {\r
- serendipity_plugin_api::hook_event('backend_entry_toolbar_extended', $entry);\r
-} ?>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="3">\r
- <textarea style="width: 100%;" name="serendipity[extended]" id="serendipity[extended]" cols="80" rows="20"><?php echo isset($entry['extended']) ? htmlspecialchars($entry['extended']) : ''; ?></textarea>\r
-<?php if (!$serendipity['wysiwyg']) { ?>\r
- <script type="text/javascript" language="JavaScript">\r
- toggle_extended();\r
- </script>\r
-<?php } ?>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="3">\r
- <br />\r
- <fieldset>\r
- <legend><b><?php echo ADVANCED_OPTIONS; ?></b></legend>\r
-<?php\r
- serendipity_plugin_api::hook_event('backend_display', $entry);\r
-?>\r
- </fieldset>\r
- </td>\r
- </tr>\r
- </table>\r
- </form>\r
-<?php\r
- if ((!empty($entry['extended']) || !empty($serendipity['COOKIE']['toggle_extended'])) && !$serendipity['wysiwyg']) {\r
-?>\r
- <script type="text/javascript" language="JavaScript">\r
- toggle_extended();\r
- </script>\r
-<?php } ?>\r
-<?php\r
- if ($serendipity['wysiwyg']) {\r
- $fields = array(\r
- 'body' => 'serendipity[body]', \r
- 'extended' => 'serendipity[extended]'\r
- );\r
- \r
- foreach($fields AS $f_jsname => $f_item) {\r
- serendipity_emit_htmlarea_code($f_item, $f_jsname);\r
- }\r
- serendipity_plugin_api::hook_event('backend_wysiwyg_finish', $fields);\r
- }\r
-\r
- echo ' <script type="text/javascript" language="JavaScript" src="serendipity_define.js.php"></script>';\r
- echo ' <script type="text/javascript" language="JavaScript" src="serendipity_editor.js"></script>';\r
-}\r
-\r
-function serendipity_emit_htmlarea_code($item, $jsname, $spawnMulti = false) {\r
- static $init = false;\r
- global $serendipity;\r
-\r
- if ($init && $spawnMulti) {\r
- return true;\r
- }\r
-\r
- if (isset($serendipity['wysiwyg']) && $serendipity['wysiwyg']) {\r
-\r
- $eventData = array(\r
- 'init' => &$init,\r
- 'item' => &$item,\r
- 'jsname' => &$jsname,\r
- 'skip' => false\r
- );\r
- serendipity_plugin_api::hook_event('backend_wysiwyg', $eventData);\r
-\r
- if ($eventData['skip']) {\r
- return true;\r
- }\r
-\r
- if (!$init) {\r
-?>\r
- <script type="text/javascript">\r
- _editor_url = "<?php echo $serendipity['serendipityHTTPPath'] . 'htmlarea/'; ?>";\r
- _editor_lang = "<?php echo WYSIWYG_LANG; ?>";\r
- var editorref = '';\r
- </script>\r
- <script type="text/javascript" src="htmlarea/htmlarea.js"></script>\r
- <script type="text/javascript" src="htmlarea/lang/<?php echo WYSIWYG_LANG; ?>.js"></script>\r
- <script type="text/javascript" src="htmlarea/dialog.js"></script>\r
- <style type="text/css">@import url(htmlarea/htmlarea.css);</style>\r
-<?php\r
- }\r
-\r
- $csscode = str_replace(\r
- array(\r
- "\n",\r
- "'",\r
- "\r",\r
- "{LANG_DIRECTION}"\r
- ),\r
-\r
- array(\r
- '\n',\r
- "\'",\r
- "",\r
- (defined('LANG_DIRECTION') ? LANG_DIRECTION : 'ltr')\r
- ),\r
-\r
- file_get_contents(serendipity_getTemplateFile('htmlarea.css', 'serendipityPath'))\r
- );\r
-?>\r
- <script type="text/javascript">\r
- // IF you want to enable HTMLArea's spellchecker, download the SpellChecker plugin from the HTMLArea homepage\r
- // (http://www.sourceforge.net/projects/itools-htmlarea) and uncomment the lines suffixed with ' // [SPELLCHECK]'\r
- // Note that the SpellChecker is a CGI-based application which needs setup in your Apache host ("Options +CGIExec")\r
- // Thanks to Randall for pointing this out!\r
-\r
- // HTMLArea.loadPlugin("SpellChecker"); // [SPELLCHECK]\r
- var editor<?php echo $jsname; ?> = null; var config<?php echo $jsname; ?> = null;\r
- function Spawn<?php echo $jsname; ?>(<?php echo $spawnMulti ? 'id' : ''; ?>) {\r
- var editor<?php echo $jsname; ?> = new HTMLArea("<?php echo $item; ?>"<?php echo $spawnMulti ? ' + id' : ''; ?>);\r
- var config<?php echo $jsname; ?> = editor<?php echo $jsname; ?>.config;\r
- config<?php echo $jsname; ?>.registerButton('image_selector', '<?PHP echo MANAGE_IMAGES; ?>', '<?php echo $serendipity['serendipityHTTPPath']; ?>htmlarea/images/ed_s9yimage.gif', false,\r
- function(editor, id) {\r
- window.open('<?php echo $serendipity['serendipityHTTPPath']; ?>serendipity_admin_image_selector.php?serendipity[textarea]=<?php echo $jsname; ?>', 'ImageSel', 'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1');\r
- editorref = editor<?php echo $jsname; ?>;\r
- }\r
- );\r
- config<?php echo $jsname; ?>.toolbar.push([ "image_selector"]);\r
- config<?php echo $jsname; ?>.cssFile = '<?php echo $csscode; ?>';\r
- config<?php echo $jsname; ?>.toolbar = [\r
- [ "fontname", "space",\r
- "fontsize", "space",\r
- "formatblock", "space",\r
- "bold", "italic", "underline", "strikethrough", "separator",\r
- "subscript", "superscript", "separator",\r
- "copy", "cut", "paste", "space", "undo", "redo" ],\r
-\r
- [ "justifyleft", "justifycenter", "justifyright", "justifyfull", "separator",\r
- "lefttoright", "righttoleft", "separator",\r
- "orderedlist", "unorderedlist", "outdent", "indent", "separator",\r
- "forecolor", "hilitecolor", "separator",\r
- "inserthorizontalrule", "createlink", "insertimage", "image_selector", "inserttable", "htmlmode", "separator",\r
- "popupeditor", "separator", "showhelp", "about" ]\r
- ];\r
- // editor<?php echo $jsname; ?>.registerPlugin(SpellChecker); // [SPELLCHECK]\r
- editor<?php echo $jsname; ?>.generate();\r
- editor<?php echo $jsname; ?>._textArea.className = 'serendipity_entry';\r
- }\r
- </script>\r
-<?php\r
- }\r
-\r
- $init = true;\r
-}\r
+<?php # $Id: functions_entries.inc.php 435 2005-08-25 12:36:39Z garvinhicking $
+# Copyright (c) 2003-2005, Jannis Hermanns (on behalf the Serendipity Developer Team)
+# All rights reserved. See LICENSE file for licensing details
+
+include_once(S9Y_INCLUDE_PATH . "include/functions_trackbacks.inc.php");
+
+/**
+ * Prints the form for editing/creating new blog entries
+ *
+ * This is the core file where your edit form appears. The Heart Of Gold, so to say.
+ *
+ * @access public
+ * @param string The URL where the entry form is submitted to
+ * @param array An array of hidden input fields that should be passed on to the HTML FORM
+ * @param array The entry superarray with your entry's contents
+ * @param string Any error messages that might have occured on the last run
+ * @return null
+ */
+function serendipity_printEntryForm($targetURL, $hiddens = array(), $entry = array(), $errMsg = "") {
+ global $serendipity;
+
+ $serendipity['EditorBrowsers'] = '(IE|Mozilla|Opera)';
+
+ $draftD = '';
+ $draftP = '';
+ $categoryselector_expanded = false;
+
+ serendipity_plugin_api::hook_event('backend_entryform', $entry);
+
+ if ( (isset($entry['isdraft']) && serendipity_db_bool($entry['isdraft'])) ||
+ (!isset($entry['isdraft']) && $serendipity['publishDefault'] == 'draft') ) {
+ $draftD = ' selected="selected"';
+ } else {
+ $draftP = ' selected="selected"';
+ }
+
+ if (isset($entry['moderate_comments']) && (serendipity_db_bool($entry['moderate_comments']))) {
+ $moderate_comments = ' checked="checked"';
+ } elseif (!isset($entry['moderate_comments']) && ($serendipity['moderateCommentsDefault'] == 'true' || $serendipity['moderateCommentsDefault'] === true)) {
+ // This is the default on creation of a new entry and depends on the "moderateCommentsDefault" variable of the configuration.
+ $moderate_comments = ' checked="checked"';
+ } else {
+ $moderate_comments = '';
+ }
+
+
+ if (isset($entry['allow_comments']) && (serendipity_db_bool($entry['allow_comments']))) {
+ $allow_comments = ' checked="checked"';
+ } elseif ((!isset($entry['allow_comments']) || $entry['allow_comments'] !== 'false') && (!isset($serendipity['allowCommentsDefault']) || $serendipity['allowCommentsDefault'] == 'true' || $serendipity['allowCommentsDefault'] === true)) {
+ // This is the default on creation of a new entry and depends on the "allowCommentsDefault" variable of the configuration.
+ $allow_comments = ' checked="checked"';
+ } else {
+ $allow_comments = '';
+ }
+
+ // Fix category list. If the entryForm is displayed after a POST request, the additional category information is lost.
+ if (is_array($entry['categories']) && !is_array($entry['categories'][0])) {
+ $categories = (array)$entry['categories'];
+ $entry['categories'] = array();
+ foreach ($categories as $catid) {
+ $entry['categories'][] = serendipity_fetchCategoryInfo($catid);
+ }
+ }
+
+ $n = "\n";
+ $cat_list = '<select id="categoryselector" name="serendipity[categories][]" style="vertical-align: middle;" multiple="multiple">' . $n;
+ $cat_list .= ' <option value="0">[' . NO_CATEGORY . ']</option>' . $n;
+ $selected = array();
+ if (is_array($entry['categories'])) {
+ if (count($entry['categories']) > 1) {
+ $categoryselector_expanded = true;
+ }
+
+ foreach ($entry['categories'] as $cat) {
+ $selected[] = $cat['categoryid'];
+ }
+ }
+
+ if (count($selected) > 1 ||
+ (isset($serendipity['POST']['categories']) && is_array($serendipity['POST']['categories']) && sizeof($serendipity['POST']['categories']) > 1)) {
+ $categoryselector_expanded = true;
+ }
+
+ if (is_array($cats = serendipity_fetchCategories())) {
+ $cats = serendipity_walkRecursive($cats, 'categoryid', 'parentid', VIEWMODE_THREADED);
+ foreach ( $cats as $cat ) {
+ $cat_list .= '<option value="'. $cat['categoryid'] .'"'. (in_array($cat['categoryid'], $selected) ? ' selected="selected"' : '') .'>'. str_repeat(' ', $cat['depth']) . $cat['category_name'] .'</option>' . "\n";
+ }
+ }
+ $cat_list .= '</select>' . $n;
+
+ if (!empty($serendipity['GET']['title'])) {
+ $entry['title'] = utf8_decode(urldecode($serendipity['GET']['title']));
+ }
+
+ if (!empty($serendipity['GET']['body'])) {
+ $entry['body'] = utf8_decode(urldecode($serendipity['GET']['body']));
+ }
+
+ if (!empty($serendipity['GET']['url'])) {
+ $entry['body'] .= "\n" . '<br /><a href="' . htmlspecialchars(utf8_decode(urldecode($serendipity['GET']['url']))) . '">' . $entry['title'] . '</a>';
+ }
+
+ $hidden = '';
+ foreach($hiddens as $key => $value) {
+ $hidden .= ' <input type="hidden" name="' . $key . '" value="' . $value . '" />' . $n;
+ }
+ $hidden .= ' <input type="hidden" id="entryid" name="serendipity[id]" value="' . (isset($entry['id']) ? $entry['id'] : '') . '" />' . $n;
+ $hidden .= ' <input type="hidden" name="serendipity[timestamp]" value="' . (isset($entry['timestamp']) ? serendipity_serverOffsetHour($entry['timestamp']) : serendipity_serverOffsetHour(time())) . '" />' . $n;
+ $hidden .= ' <input type="hidden" name="serendipity[preview]" value="false" />';
+ $hidden .= ' ' . serendipity_setFormToken();
+ if (!empty($errMsg)) {
+?>
+ <div class="serendipityAdminMsgError"><?php echo $errMsg; ?></div>
+<?php } ?>
+ <form <?php echo $entry['entry_form']; ?> action="<?php echo $targetURL; ?>" method="post" id="serendipityEntry" style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px">
+ <?php echo $hidden; ?>
+
+ <table class="serendipityEntryEdit" border="0" width="100%">
+ <tr>
+ <td>
+ <b><?php echo TITLE; ?>:</b>
+ </td>
+ <td colspan="2">
+ <table width="100%" cellspacing="0" cellpadding="0" border="0">
+ <tr>
+ <td><input type="text" id="entryTitle" name="serendipity[title]" value="<?php echo isset($entry['title']) ? htmlspecialchars($entry['title']) : ''; ?>" size="60" /></td>
+ <td align="right">
+ <select name="serendipity[isdraft]">
+ <?php if ($_SESSION['serendipityRightPublish']) { ?><option value="false" <?php echo $draftP; ?>><?php echo PUBLISH; ?></option><?php } ?>
+ <option value="true" <?php echo $draftD; ?>><?php echo DRAFT; ?></option>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+<?php
+ if (isset($serendipity['allowDateManipulation']) && $serendipity['allowDateManipulation']) {
+?>
+ <td>
+ <b><?php echo DATE; ?>:</b>
+ </td>
+ <td>
+ <input type="hidden" name="serendipity[chk_timestamp]" value="<?php echo serendipity_serverOffsetHour(isset($entry['timestamp']) && $entry['timestamp'] > 0 ? $entry['timestamp'] : time()); ?>" />
+ <input type="text" name="serendipity[new_timestamp]" id="serendipityNewTimestamp" value="<?php echo date(DATE_FORMAT_2, serendipity_serverOffsetHour(isset($entry['timestamp']) && $entry['timestamp'] > 0 ? $entry['timestamp'] : time())); ?>" />
+ <a href="#" onclick="document.getElementById('serendipityNewTimestamp').value = '<?php echo date(DATE_FORMAT_2, serendipity_serverOffsetHour(time())) ?>'; return false;" title="<?php echo RESET_DATE_DESC ?>"><img src="<?php echo serendipity_getTemplateFile('admin/img/clock.png') ?>" border="0" style="vertical-align: text-top;" alt="<?php echo RESET_DATE ?>" /></a>
+ </td>
+ <td align="right">
+<?php
+ } else {
+?>
+ <td align="right" colspan="3">
+<?php
+ }
+?>
+ <a style="border:0; text-decoration: none" href="#" onclick="showItem('categoryselector'); return false" title="<?php echo TOGGLE_OPTION; ?>"><img src="<?php echo serendipity_getTemplateFile('img/plus.png') ?>" id="option_categoryselector" style="border: 20px" alt="" border="0" /></a> <b><?php echo CATEGORY; ?>:</b> <?php echo $cat_list ; ?>
+ <script type="text/javascript" language="JavaScript">
+
+ function toggle_extended(setCookie) {
+ var textarea = document.getElementById('serendipity[extended]');
+ var button = document.getElementById('option_extended');
+ var tools = document.getElementById('tools_extended');
+ if ( textarea.style.display == 'none' ) {
+ textarea.style.display = '';
+ tools.style.display = '';
+ button.src = '<?php echo serendipity_getTemplateFile('img/minus.png') ?>';
+ if (setCookie == true) {
+ document.cookie = 'serendipity[toggle_extended]=true;';
+ }
+ } else {
+ textarea.style.display = 'none';
+ tools.style.display = 'none';
+ button.src = '<?php echo serendipity_getTemplateFile('img/plus.png') ?>';
+ if (setCookie == true) {
+ document.cookie = 'serendipity[toggle_extended]=;';
+ }
+ }
+ }
+
+ var selector_toggle = new Array();
+ var selector_store = new Array();
+ var selector_restore = new Array();
+
+ function showItem(id) {
+ var selected = 0;
+ if (typeof(id) == 'undefined' || typeof(id) == 'object') {
+ id = 'categoryselector';
+ }
+
+ if (document.getElementById) {
+ el = document.getElementById(id);
+ if (selector_toggle[id] && selector_toggle[id] == 'off') {
+ selector_restore[id] = new Array();
+ selector_toggle[id] = 'on';
+
+ /* Hack to make sure that when the single dropdown is shown, don't have multiple selections */
+ last = 0;
+
+ for (i=0; i < el.options.length; i++) {
+ if (el.options[i].selected == true) {
+ selected++;
+ last = i;
+ selector_restore[id][last] = 'on';
+ }
+
+ if (selected > 1) {
+ /* If there is more than one selected, we reset all those to false
+ This is because otherwise the label will say 'No Category', but the categories will still be selected */
+ for (j=0; j < el.options.length; j++) {
+ /* Save selection in array to later restore them */
+ if (el.options[j].selected == true) {
+ el.options[j].selected = false;
+ selector_restore[id][j] = 'on';
+ last = j;
+ } else {
+ selector_restore[id][j] = false;
+ }
+ }
+ break;
+ }
+ }
+
+ el.selectedIndex = null;
+ if (last > 0) {
+ el.selectedIndex = last;
+ }
+
+ el.size = 1;
+
+ /* Show a normal dropdown */
+ if (el.multiple) {
+ el.multiple = false;
+ }
+
+ document.getElementById('option_' + id).src = '<?php echo serendipity_getTemplateFile('img/plus.png') ?>';
+ } else {
+ selector_store[id] = el.size;
+ if (selector_store[id] == 0) {
+ selector_store[id] = 5;
+ }
+
+ last = 0;
+ if (el.selectedIndex > 0) {
+ if (!selector_restore[id]) {
+ selector_restore[id] = new Array();
+ }
+
+ for (j=0; j < el.options.length; j++) {
+ /* Save selection in array to later restore them */
+ if (el.options[j].selected == true) {
+ selector_restore[id][j] = 'on';
+ last = j;
+ }
+ }
+ }
+ el.selectedIndex = -1;
+ el.size = <?php echo count($cats)+1; ?>;
+ selector_toggle[id] = 'off';
+
+ /* Show multiple items */
+ el.multiple = true;
+
+ /* Restore previously selected items? */
+ last = 0;
+ for (i = 0; i < el.options.length; i++) {
+ if (selector_restore && selector_restore[id] && selector_restore[id][i] && selector_restore[id][i] == 'on') {
+ val = el.options[i].value;
+ if (el.options[i].selected != true) {
+ el.options[i].selected = true;
+ last = i;
+ // [TODO] IE Bug: Don't ask me why, but this restoring only works in Internet Explorer if you put this:
+ // alert('it doesnt matter what, just the alert is important');
+ }
+ }
+ }
+
+ document.getElementById('option_' + id).src = '<?php echo serendipity_getTemplateFile('img/minus.png') ?>';
+ }
+ }
+ }
+
+ function checkSave() {
+<?php
+ $void = null;
+ serendipity_plugin_api::hook_event('backend_entry_checkSave', $void);
+?>
+ return true;
+ }
+
+ selector_toggle['categoryselector'] = '<?php echo ($categoryselector_expanded ? 'on' : 'off'); ?>';
+ addLoadEvent(showItem);
+ </script>
+ </td>
+ </tr>
+ <tr>
+<?php
+ if (!$serendipity['wysiwyg']) {
+?>
+ <td colspan="2"><b><?php echo ENTRY_BODY; ?></b></td>
+ <td align="right">
+<?php
+ /* Since the user has WYSIWYG editor disabled, we want to check if we should use the "better" non-WYSIWYG editor */
+ if (!$serendipity['wysiwyg'] && eregi($serendipity['EditorBrowsers'], $_SERVER['HTTP_USER_AGENT']) ) {
+?>
+ <script type="text/javascript" language="JavaScript">
+ document.write('<input type="button" class="serendipityPrettyButton" name="insI" value="I" accesskey="i" style="font-style: italic" onclick="wrapSelection(document.forms[\'serendipityEntry\'][\'serendipity[body]\'],\'<i>\',\'</i>\')" />');
+ document.write('<input type="button" class="serendipityPrettyButton" name="insB" value="B" accesskey="b" style="font-weight: bold" onclick="wrapSelection(document.forms[\'serendipityEntry\'][\'serendipity[body]\'],\'<b>\',\'</b>\')" />');
+ document.write('<input type="button" class="serendipityPrettyButton" name="insU" value="U" accesskey="u" style="text-decoration: underline;" onclick="wrapSelection(document.forms[\'serendipityEntry\'][\'serendipity[body]\'],\'<u>\',\'</u>\')" />');
+ document.write('<input type="button" class="serendipityPrettyButton" name="insQ" value="<?php echo QUOTE ?>" accesskey="q" style="font-style: italic" onclick="wrapSelection(document.forms[\'serendipityEntry\'][\'serendipity[body]\'],\'<blockquote>\',\'</blockquote>\')" />');
+ document.write('<input type="button" class="serendipityPrettyButton" name="insJ" value="img" accesskey="j" onclick="wrapInsImage(document.forms[\'serendipityEntry\'][\'serendipity[body]\'])" />');
+ document.write('<input type="button" class="serendipityPrettyButton" name="insImage" value="<?php echo MEDIA; ?>" style="" onclick="window.open(\'serendipity_admin_image_selector.php?serendipity[textarea]=body\', \'ImageSel\', \'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1\');" />');
+ document.write('<input type="button" class="serendipityPrettyButton" name="insURL" value="URL" accesskey="l" onclick="wrapSelectionWithLink(document.forms[\'serendipityEntry\'][\'serendipity[body]\'])" />');
+ </script>
+<?php
+ /* Do the "old" non-WYSIWYG editor */
+ } elseif (!$serendipity['wysiwyg']) { ?>
+ <script type="text/javascript" language="JavaScript">
+ document.write('<input type="button" class="serendipityPrettyButton" value=" B " onclick="serendipity_insBasic(document.forms[\'serendipityEntry\'][\'serendipity[body]\'], \'b\')">');
+ document.write('<input type="button" class="serendipityPrettyButton" value=" U " onclick="serendipity_insBasic(document.forms[\'serendipityEntry\'][\'serendipity[body]\'], \'u\')">');
+ document.write('<input type="button" class="serendipityPrettyButton" value=" I " onclick="serendipity_insBasic(document.forms[\'serendipityEntry\'][\'serendipity[body]\'], \'i\')">');
+ document.write('<input type="button" class="serendipityPrettyButton" value="<img>" onclick="serendipity_insImage(document.forms[\'serendipityEntry\'][\'serendipity[body]\'])">');
+ document.write('<input type="button" class="serendipityPrettyButton" value="<?php echo MEDIA; ?>" onclick="window.open(\'serendipity_admin_image_selector.php?serendipity[textarea]=body\', \'ImageSel\', \'width=800,height=600,toolbar=no\');">');
+ document.write('<input type="button" class="serendipityPrettyButton" value="Link" onclick="serendipity_insLink(document.forms[\'serendipityEntry\'][\'serendipity[body]\'])">');
+ </script>
+<?php }
+
+ serendipity_plugin_api::hook_event('backend_entry_toolbar_body', $entry);
+ } else {
+?>
+ <td colspan="2"><b><?php echo ENTRY_BODY; ?></b></td>
+ <td><?php serendipity_plugin_api::hook_event('backend_entry_toolbar_body', $entry); ?>
+
+<?php } ?>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="3">
+ <textarea style="width: 100%" name="serendipity[body]" id="serendipity[body]" cols="80" rows="20"><?php echo isset($entry['body']) ? htmlspecialchars($entry['body']) : ''; ?></textarea>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="3">
+ <table width="100%" cellpadding="0" cellspacing="0">
+ <tr>
+ <td align="left" width="70%">
+ <input id="checkbox_allow_comments" type="checkbox" name="serendipity[allow_comments]" value="true" <?php echo $allow_comments; ?> /><label for="checkbox_allow_comments"><?php echo COMMENTS_ENABLE; ?></label><br />
+ <input id="checkbox_moderate_comments" type="checkbox" name="serendipity[moderate_comments]" value="true" <?php echo $moderate_comments; ?> /><label for="checkbox_moderate_comments"><?php echo COMMENTS_MODERATE; ?></label>
+ </td>
+ <td align="right" rowspan="2" valign="middle" width="30%">
+ <input accesskey="p" type="submit" value="- <?php echo PREVIEW; ?> -" class="serendipityPrettyButton" style="width: 150px" onclick="document.forms['serendipityEntry'].elements['serendipity[preview]'].value='true';" /><br />
+ <input accesskey="s" type="submit" onclick="return checkSave();" value="- <?php echo SAVE; ?> -" class="serendipityPrettyButton" style="width: 150px" />
+ </td>
+ </tr>
+ </table>
+ <br />
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+<?php if (!$serendipity['wysiwyg']) { ?>
+ <a style="border:0; text-decoration: none" href="#" onclick="toggle_extended(true); return false;" title="<?php echo TOGGLE_OPTION; ?>"><img src="<?php echo serendipity_getTemplateFile('img/plus.png') ?>" id="option_extended" alt="+/-" border="0" /></a>
+<?php } ?> <b><?php echo EXTENDED_BODY; ?></b></td>
+ <td align="right">
+ <?php
+if (!$serendipity['wysiwyg']) {
+?>
+ <div id="tools_extended" style="display: none">
+<?php
+ /* Since the user has WYSIWYG editor disabled, we want to check if we should use the "better" non-WYSIWYG editor */
+ if (eregi($serendipity['EditorBrowsers'], $_SERVER['HTTP_USER_AGENT']) ) {
+?>
+ <input type="button" class="serendipityPrettyButton" name="insI" value="I" accesskey="i" style="font-style: italic" onclick="wrapSelection(document.forms['serendipityEntry']['serendipity[extended]'],'<i>','</i>')" />
+ <input type="button" class="serendipityPrettyButton" name="insB" value="B" accesskey="b" style="font-weight: bold" onclick="wrapSelection(document.forms['serendipityEntry']['serendipity[extended]'],'<b>','</b>')" />
+ <input type="button" class="serendipityPrettyButton" name="insU" value="U" accesskey="u" style="text-decoration: underline;" onclick="wrapSelection(document.forms['serendipityEntry']['serendipity[extended]'],'<u>','</u>')" />
+ <input type="button" class="serendipityPrettyButton" name="insQ" value="<?php echo QUOTE ?>" accesskey="q" style="font-style: italic" onclick="wrapSelection(document.forms['serendipityEntry']['serendipity[extended]'],'<blockquote>','</blockquote>')" />
+ <input type="button" class="serendipityPrettyButton" name="insJ" value="img" accesskey="j" onclick="wrapInsImage(document.forms['serendipityEntry']['serendipity[extended]'])" />
+ <input type="button" class="serendipityPrettyButton" name="insImage" value="<?php echo MEDIA; ?>" onclick="window.open('serendipity_admin_image_selector.php?serendipity[textarea]=extended', 'ImageSel', 'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1');" />
+ <input type="button" class="serendipityPrettyButton" name="insURL" value="URL" accesskey="l" onclick="wrapSelectionWithLink(document.forms['serendipityEntry']['serendipity[extended]'])" />
+<?php
+ /* Do the "old" non-WYSIWYG editor */
+ } else { ?>
+ <input type="button" class="serendipityPrettyButton" value=" B " onclick="serendipity_insBasic(document.forms['serendipityEntry']['serendipity[extended]'], 'b')">
+ <input type="button" class="serendipityPrettyButton" value=" U " onclick="serendipity_insBasic(document.forms['serendipityEntry']['serendipity[extended]'], 'u')">
+ <input type="button" class="serendipityPrettyButton" value=" I " onclick="serendipity_insBasic(document.forms['serendipityEntry']['serendipity[extended]'], 'i')">
+ <input type="button" class="serendipityPrettyButton" value="<img>" onclick="serendipity_insImage(document.forms['serendipityEntry']['serendipity[extended]'])">
+ <input type="button" class="serendipityPrettyButton" value="<?php echo MEDIA; ?>" onclick="window.open('serendipity_admin_image_selector.php?serendipity[textarea]=extended', 'ImageSel', 'width=800,height=600,toolbar=no');">
+ <input type="button" class="serendipityPrettyButton" value="Link" onclick="serendipity_insLink(document.forms['serendipityEntry']['serendipity[extended]'])">
+<?php
+ }
+
+ serendipity_plugin_api::hook_event('backend_entry_toolbar_extended', $entry);
+?>
+ </div>
+<?php } else {
+ serendipity_plugin_api::hook_event('backend_entry_toolbar_extended', $entry);
+} ?>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="3">
+ <textarea style="width: 100%;" name="serendipity[extended]" id="serendipity[extended]" cols="80" rows="20"><?php echo isset($entry['extended']) ? htmlspecialchars($entry['extended']) : ''; ?></textarea>
+<?php if (!$serendipity['wysiwyg']) { ?>
+ <script type="text/javascript" language="JavaScript">
+ toggle_extended();
+ </script>
+<?php } ?>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="3">
+ <br />
+ <fieldset>
+ <legend><b><?php echo ADVANCED_OPTIONS; ?></b></legend>
+<?php
+ serendipity_plugin_api::hook_event('backend_display', $entry);
+?>
+ </fieldset>
+ </td>
+ </tr>
+ </table>
+ </form>
+<?php
+ if ((!empty($entry['extended']) || !empty($serendipity['COOKIE']['toggle_extended'])) && !$serendipity['wysiwyg']) {
+?>
+ <script type="text/javascript" language="JavaScript">
+ toggle_extended();
+ </script>
+<?php } ?>
+<?php
+ if ($serendipity['wysiwyg']) {
+ $fields = array(
+ 'body' => 'serendipity[body]',
+ 'extended' => 'serendipity[extended]'
+ );
+
+ foreach($fields AS $f_jsname => $f_item) {
+ serendipity_emit_htmlarea_code($f_item, $f_jsname);
+ }
+ serendipity_plugin_api::hook_event('backend_wysiwyg_finish', $fields);
+ }
+
+ echo ' <script type="text/javascript" language="JavaScript" src="serendipity_define.js.php"></script>';
+ echo ' <script type="text/javascript" language="JavaScript" src="serendipity_editor.js"></script>';
+}
+
+function serendipity_emit_htmlarea_code($item, $jsname, $spawnMulti = false) {
+ static $init = false;
+ global $serendipity;
+
+ if ($init && $spawnMulti) {
+ return true;
+ }
+
+ if (isset($serendipity['wysiwyg']) && $serendipity['wysiwyg']) {
+
+ $eventData = array(
+ 'init' => &$init,
+ 'item' => &$item,
+ 'jsname' => &$jsname,
+ 'skip' => false
+ );
+ serendipity_plugin_api::hook_event('backend_wysiwyg', $eventData);
+
+ if ($eventData['skip']) {
+ return true;
+ }
+
+ if (!$init) {
+?>
+ <script type="text/javascript">
+ _editor_url = "<?php echo $serendipity['serendipityHTTPPath'] . 'htmlarea/'; ?>";
+ _editor_lang = "<?php echo WYSIWYG_LANG; ?>";
+ var editorref = '';
+ </script>
+ <script type="text/javascript" src="htmlarea/htmlarea.js"></script>
+ <script type="text/javascript" src="htmlarea/lang/<?php echo WYSIWYG_LANG; ?>.js"></script>
+ <script type="text/javascript" src="htmlarea/dialog.js"></script>
+ <style type="text/css">@import url(htmlarea/htmlarea.css);</style>
+<?php
+ }
+
+ $csscode = str_replace(
+ array(
+ "\n",
+ "'",
+ "\r",
+ "{LANG_DIRECTION}"
+ ),
+
+ array(
+ '\n',
+ "\'",
+ "",
+ (defined('LANG_DIRECTION') ? LANG_DIRECTION : 'ltr')
+ ),
+
+ file_get_contents(serendipity_getTemplateFile('htmlarea.css', 'serendipityPath'))
+ );
+?>
+ <script type="text/javascript">
+ // IF you want to enable HTMLArea's spellchecker, download the SpellChecker plugin from the HTMLArea homepage
+ // (http://www.sourceforge.net/projects/itools-htmlarea) and uncomment the lines suffixed with ' // [SPELLCHECK]'
+ // Note that the SpellChecker is a CGI-based application which needs setup in your Apache host ("Options +CGIExec")
+ // Thanks to Randall for pointing this out!
+
+ // HTMLArea.loadPlugin("SpellChecker"); // [SPELLCHECK]
+ var editor<?php echo $jsname; ?> = null; var config<?php echo $jsname; ?> = null;
+ function Spawn<?php echo $jsname; ?>(<?php echo $spawnMulti ? 'id' : ''; ?>) {
+ var editor<?php echo $jsname; ?> = new HTMLArea("<?php echo $item; ?>"<?php echo $spawnMulti ? ' + id' : ''; ?>);
+ var config<?php echo $jsname; ?> = editor<?php echo $jsname; ?>.config;
+ config<?php echo $jsname; ?>.registerButton('image_selector', '<?PHP echo MANAGE_IMAGES; ?>', '<?php echo $serendipity['serendipityHTTPPath']; ?>htmlarea/images/ed_s9yimage.gif', false,
+ function(editor, id) {
+ window.open('<?php echo $serendipity['serendipityHTTPPath']; ?>serendipity_admin_image_selector.php?serendipity[textarea]=<?php echo $jsname; ?>', 'ImageSel', 'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1');
+ editorref = editor<?php echo $jsname; ?>;
+ }
+ );
+ config<?php echo $jsname; ?>.toolbar.push([ "image_selector"]);
+ config<?php echo $jsname; ?>.cssFile = '<?php echo $csscode; ?>';
+ config<?php echo $jsname; ?>.toolbar = [
+ [ "fontname", "space",
+ "fontsize", "space",
+ "formatblock", "space",
+ "bold", "italic", "underline", "strikethrough", "separator",
+ "subscript", "superscript", "separator",
+ "copy", "cut", "paste", "space", "undo", "redo" ],
+
+ [ "justifyleft", "justifycenter", "justifyright", "justifyfull", "separator",
+ "lefttoright", "righttoleft", "separator",
+ "orderedlist", "unorderedlist", "outdent", "indent", "separator",
+ "forecolor", "hilitecolor", "separator",
+ "inserthorizontalrule", "createlink", "insertimage", "image_selector", "inserttable", "htmlmode", "separator",
+ "popupeditor", "separator", "showhelp", "about" ]
+ ];
+ // editor<?php echo $jsname; ?>.registerPlugin(SpellChecker); // [SPELLCHECK]
+ editor<?php echo $jsname; ?>.generate();
+ editor<?php echo $jsname; ?>._textArea.className = 'serendipity_entry';
+ }
+ </script>
+<?php
+ }
+
+ $init = true;
+}