OSDN Git Service

Modify JavaScript parse error in item edit page when the login user turn it off to...
[nucleus-jp/nucleus-jp-ancient.git] / utf8 / nucleus / libs / PAGEFACTORY.php
index d95ca9d..3a2a7eb 100755 (executable)
-<?php
-/**
-  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/) 
-  * Copyright (C) 2002-2004 The Nucleus Group
-  *
-  * This program is free software; you can redistribute it and/or
-  * modify it under the terms of the GNU General Public License
-  * as published by the Free Software Foundation; either version 2
-  * of the License, or (at your option) any later version.
-  * (see nucleus/documentation/index.html#license for more info)
-  *
-  * $Id: PAGEFACTORY.php,v 1.1.1.1 2005-02-28 07:14:51 kimitake Exp $
-  */
-
-/**
- * The formfactory class can be used to insert add/edit item forms into 
- * admin area, bookmarklet, skins or any other places where such a form
- * might be needed
- */
-class PAGEFACTORY extends BaseActions {
-
-       // ref to the blog object for which an add:edit form is created
-       var $blog;
-       
-       // allowed actions (for parser)
-       var $actions;
-       
-       // allowed types of forms (bookmarklet/admin)
-       var $allowedTypes;
-       var $type;              // one of the types in $allowedTypes
-       
-       // 'add' or 'edit'
-       var $method;
-       
-       // info to fill out in the form (e.g. catid, itemid, ...)
-       var $variables;
-
-       /**
-        * creates a new PAGEFACTORY object
-        */
-       function PAGEFACTORY($blogid) {
-               // call constructor of superclass first
-               $this->BaseActions();                   
-               
-               global $manager;
-               $this->blog =& $manager->getBlog($blogid);
-               
-               // TODO: move the definition of actions to the createXForm 
-               // methods
-               $this->actions = Array(
-                       'actionurl', 
-                       'title',
-                       'body',
-                       'more',
-                       'blogid',
-                       'bloglink',
-                       'blogname',
-                       'authorname',
-                       'checkedonval',
-                       'helplink',
-                       'currenttime',
-                       'itemtime',
-                       'init',
-                       'text',
-                       'jsinput',
-                       'jsbuttonbar',
-                       'categories',
-                       'contents',
-                       'ifblogsetting',
-                       'ifitemproperty',
-                       'else',
-                       'endif',
-                       'pluginextras',
-                       'itemoptions',
-                       'extrahead',
-                       'ticket'
-               );
-               
-               // TODO: maybe add 'skin' later on?
-               // TODO: maybe add other pages from admin area
-               $this->allowedTypes = Array('bookmarklet','admin');     
-       }
-
-       /**
-        * creates a "add item" form for a given type of page
-        *
-        * @param type
-        *              'admin' or 'bookmarklet' 
-        */
-       function createAddForm($type, $contents = array()) {
-               if (!in_array($type, $this->allowedTypes))
-                       return;
-               $this->type = $type;
-               $this->method = 'add';
-               
-               global $manager;
-               $manager->notify('PreAddItemForm', array('contents' => &$contents, 'blog' => &$this->blog));
-               
-               $this->createForm($contents);
-       }
-       
-       /**
-        * creates a "add item" form for a given type of page
-        *
-        * @param type
-        *              'admin' or 'bookmarklet' 
-        * @param contents
-        *              An associative array
-        *                      'author' => author
-        *                      '' => 
-        */
-       function createEditForm($type, $contents) {
-               if (!in_array($type, $this->allowedTypes))
-                       return;
-               $this->type = $type;
-               $this->method = 'edit';
-               $this->createForm($contents);
-       }
-       
-       /**
-        * (private) creates a form for a given type of page
-        */
-       function createForm($contents) {
-               // save contents
-               $this->variables = $contents;
-               
-               // get template to use
-               $template = $this->getTemplateFor($this->type);
-               
-               // use the PARSER engine to parse that template
-               $parser =& new PARSER($this->actions, $this);
-               $parser->parse($template);
-       }
-       
-       /**
-        * returns an appropriate template
-        */
-       function getTemplateFor($type) {
-               global $DIR_LIBS;
-               
-               $filename = $DIR_LIBS . 'include/' . $this->type . '-' . $this->method . '.template';
-               
-               if (!file_exists($filename)) 
-                       return '';
-
-               $fsize = filesize($filename);
-               if ($fsize <= 0)
-                       return '';
-                       
-               // read file and return it
-               $fd = fopen ($filename, 'r');
-               $contents = fread ($fd, $fsize);
-               fclose ($fd);
-               
-               return $contents;
-               
-       }
-       
-       // create category dropdown box
-       function parse_categories($startidx = 0) {
-                       if ($this->variables['catid']) 
-                               $catid = $this->variables['catid'];                             // on edit item
-                       else
-                               $catid = $this->blog->getDefaultCategory();             // on add item
-                       
-                       ADMIN::selectBlogCategory('catid',$catid,$startidx,1,$this->blog->getID());
-       }
-       
-       function parse_blogid() {
-               echo $this->blog->getID();
-       }
-       
-       function parse_blogname() {
-               echo $this->blog->getName();
-       }
-       
-       function parse_bloglink() {
-               echo '<a href="'.htmlspecialchars($this->blog->getURL()).'">'.$this->blog->getName().'</a>';
-       }
-       
-       function parse_authorname() {
-               // don't use on add item?
-               global $member;
-               echo $member->getDisplayName();
-       }
-
-       function parse_title() {
-               echo $this->contents['title'];
-       }
-
-       /**
-        * Indicates the start of a conditional block of data. It will be added to
-        * the output only if the blogsetting with the given name equals the 
-        * given value (default for value = 1 = true)
-        *
-        * the name of the blogsetting is the column name in the nucleus_blog table
-        *
-        * the conditional block ends with an <endif> var
-        */
-       function parse_ifblogsetting($name,$value=1) {
-               $this->_addIfCondition(($this->blog->getSetting($name) == $value));
-       }
-       
-       function parse_ifitemproperty($name,$value=1) {
-               $this->_addIfCondition(($this->variables[$name] == $value));
-       }
-       
-       function parse_helplink($topic) {
-               help($topic);
-       }
-       
-       // for future items
-       function parse_currenttime($what) {
-               $nu = getdate($this->blog->getCorrectTime());
-               echo $nu[$what];
-       }
-       
-       // date change on edit item
-       function parse_itemtime($what) {
-               $itemtime = getdate($this->variables['timestamp']);
-               echo $itemtime[$what];
-       }
-       
-       // some init stuff for all forms
-       function parse_init() {
-               $authorid = ($this->method == 'edit') ? $this->variables['authorid'] : '';
-               $this->blog->insertJavaScriptInfo($authorid);           
-       }
-       
-       // on bookmarklets only: insert extra html header information (by plugins)
-       function parse_extrahead() {
-               global $manager;
-               
-               $extrahead = '';
-               
-               $manager->notify(
-                       'BookmarkletExtraHead',
-                       array(
-                               'extrahead' => &$extrahead
-                       )
-               );
-               
-               echo $extrahead;
-       }
-       
-       // inserts some localized text
-       function parse_text($which) {
-               // constant($which) only available from 4.0.4 :(
-               if (defined($which)) {  
-                       eval("echo $which;");
-               } else {
-                       echo $which;    // this way we see where definitions are missing
-               }
-               
-       }
-       
-       function parse_contents($which) {
-               echo htmlspecialchars($this->variables[$which]);
-       }
-       
-       function parse_checkedonval($value, $name) {
-               if ($this->variables[$name] == $value)
-                       echo "checked='checked'";
-       }
-       
-       // extra javascript for input and textarea fields
-       function parse_jsinput($which) {
-               global $CONF;
-       ?>
-                       name="<?php echo $which?>" 
-                       id="input<?php echo $which?>" 
-       <?php
-               if ($CONF['DisableJsTools'] != 1) {
-       ?>
-                       onkeyup="storeCaret(this); updPreview('<?php echo $which?>');"
-                       onclick="storeCaret(this);"
-                       onselect="storeCaret(this);" 
-
-       <?php           
-               } 
-               
-               if ($CONF['DisableJsTools'] == 0) {
-       ?>
-                   onkeypress="shortCuts();"                   
-       <?php           }
-       }
-       
-       // shows the javascript button bar
-       function parse_jsbuttonbar($extrabuttons = "") {
-               global $CONF;
-               switch($CONF['DisableJsTools']) {
-
-                       case "0":       
-                               echo '<div class="jsbuttonbar">';
-
-                                       $this->_jsbutton('cut','cutThis()',_ADD_CUT_TT . " (Ctrl + X)");
-                                       $this->_jsbutton('copy','copyThis()',_ADD_COPY_TT . " (Ctrl + C)");
-                                       $this->_jsbutton('paste','pasteThis()',_ADD_PASTE_TT . " (Ctrl + V)");
-                                       $this->_jsbuttonspacer();
-                                       $this->_jsbutton('bold',"boldThis()",_ADD_BOLD_TT ." (Ctrl + Shift + B)");
-                                       $this->_jsbutton('italic',"italicThis()",_ADD_ITALIC_TT ." (Ctrl + Shift + I)");
-                                       $this->_jsbutton('link',"ahrefThis()",_ADD_HREF_TT ." (Ctrl + Shift + A)");
-                                       $this->_jsbuttonspacer();                                       
-                                       $this->_jsbutton('alignleft',"alignleftThis()",_ADD_ALIGNLEFT_TT);
-                                       $this->_jsbutton('alignright',"alignrightThis()",_ADD_ALIGNRIGHT_TT);
-                                       $this->_jsbutton('aligncenter',"aligncenterThis()",_ADD_ALIGNCENTER_TT);
-                                       $this->_jsbuttonspacer();                                       
-                                       $this->_jsbutton('left',"leftThis()",_ADD_LEFT_TT);
-                                       $this->_jsbutton('right',"rightThis()",_ADD_RIGHT_TT);
-
-                               
-                                       if ($extrabuttons) {
-                                               $btns = explode('+',$extrabuttons);
-                                               $this->_jsbuttonspacer();
-                                               foreach ($btns as $button) {
-                                                       switch($button) {
-                                                               case "media":
-                                                                       $this->_jsbutton('media',"addMedia()",_ADD_MEDIA_TT .   " (Ctrl + Shift + M)");                                                 
-                                                                       break;
-                                                               case "preview":
-                                                                       $this->_jsbutton('preview',"showedit()",_ADD_PREVIEW_TT);
-                                                                       break;
-                                                       }
-                                               }
-                                       } 
-                                       
-                               echo '</div>';
-                               
-                               break;
-                       case "2":
-                               echo '<div class="jsbuttonbar">';
-
-                                       $this->_jsbutton('bold',"boldThis()",_ADD_BOLD_TT .'');
-                                       $this->_jsbutton('italic',"italicThis()",_ADD_ITALIC_TT .'');
-                                       $this->_jsbutton('link',"ahrefThis()",_ADD_HREF_TT .'');
-                                       $this->_jsbuttonspacer();                                                                               
-                                       $this->_jsbutton('alignleft',"alignleftThis()",_ADD_ALIGNLEFT_TT);
-                                       $this->_jsbutton('alignright',"alignrightThis()",_ADD_ALIGNRIGHT_TT);
-                                       $this->_jsbutton('aligncenter',"aligncenterThis()",_ADD_ALIGNCENTER_TT);
-                                       $this->_jsbuttonspacer();                                       
-                                       $this->_jsbutton('left',"leftThis()",_ADD_LEFT_TT);
-                                       $this->_jsbutton('right',"rightThis()",_ADD_RIGHT_TT);
-                                       
-
-                                       if ($extrabuttons) {
-                                               $btns = explode('+',$extrabuttons);
-                                               $this->_jsbuttonspacer();
-                                               foreach ($btns as $button) {
-                                                       switch($button) {
-                                                               case "media":
-                                                                       $this->_jsbutton('media',"addMedia()",'');                                                      
-                                                                       break;
-                                                       }
-                                               }
-                                       } 
-                                       
-                               echo '</div>';
-                               
-                               break;                  
-               }
-       }
-       
-       /**
-        * Allows plugins to add their own custom fields
-        */
-       function parse_pluginextras() {
-               global $manager;
-                       
-               switch ($this->method) {
-                       case 'add':
-                               $manager->notify('AddItemFormExtras', 
-                                               array(
-                                                       'blog' => &$this->blog
-                                               )
-                               );
-                               break;
-                       case 'edit':
-                               $manager->notify('EditItemFormExtras', 
-                                               array(
-                                                       'variables' => $this->variables,
-                                                       'blog' => &$this->blog,
-                                                       'itemid' => $this->variables['itemid']
-                                               )
-                               );
-                               break;
-               }
-       }
-       
-       /**
-        * Adds the itemOptions of a plugin to a page
-        * @author TeRanEX
-        */
-    function parse_itemoptions() {
-               global $itemid;
-               ADMIN::_insertPluginOptions('item', $itemid);
-    }
-    
-    function parse_ticket() {
-       global $manager;
-       $manager->addTicketHidden();
-    }
-       
-       /**
-        * convenience method
-        */
-       function _jsbutton($type, $code ,$tooltip) {
-       ?>
-                       <span class="jsbutton"
-                               onmouseover="BtnHighlight(this);" 
-                               onmouseout="BtnNormal(this);" 
-                               onclick="<?php echo $code?>" >                  
-                               <img src="images/button-<?php echo $type?>.gif" alt="<?php echo $tooltip?>" width="16" height="16"/>
-                       </span>                         
-       <?php   }
-       
-       function _jsbuttonspacer() {
-               echo '<span class="jsbuttonspacer"></span>';
-       }
-       
-}
- ?>
\ No newline at end of file
+<?php\r
+/*\r
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
+ * Copyright (C) 2002-2010 The Nucleus Group\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * (see nucleus/documentation/index.html#license for more info)\r
+ */\r
+/**\r
+ * @license http://nucleuscms.org/license.txt GNU General Public License\r
+ * @copyright Copyright (C) 2002-2010 The Nucleus Group\r
+ * @version $Id$\r
+ * $NucleusJP: PAGEFACTORY.php,v 1.8.2.2 2007/10/30 16:12:27 shizuki Exp $\r
+ */\r
+\r
+/**\r
+ * The formfactory class can be used to insert add/edit item forms into\r
+ * admin area, bookmarklet, skins or any other places where such a form\r
+ * might be needed\r
+ */\r
+class PAGEFACTORY extends BaseActions {\r
+\r
+       // ref to the blog object for which an add:edit form is created\r
+       var $blog;\r
+\r
+       // allowed actions (for parser)\r
+       var $actions;\r
+\r
+       // allowed types of forms (bookmarklet/admin)\r
+       var $allowedTypes;\r
+       var $type;              // one of the types in $allowedTypes\r
+\r
+       // 'add' or 'edit'\r
+       var $method;\r
+\r
+       // info to fill out in the form (e.g. catid, itemid, ...)\r
+       var $variables;\r
+\r
+       /**\r
+        * creates a new PAGEFACTORY object\r
+        */\r
+       function PAGEFACTORY($blogid) {\r
+               // call constructor of superclass first\r
+               $this->BaseActions();\r
+\r
+               global $manager;\r
+               $this->blog =& $manager->getBlog($blogid);\r
+\r
+               // TODO: move the definition of actions to the createXForm\r
+               // methods\r
+               $this->actions = Array(\r
+                       'actionurl',\r
+                       'title',\r
+                       'body',\r
+                       'more',\r
+                       'blogid',\r
+                       'bloglink',\r
+                       'blogname',\r
+                       'authorname',\r
+                       'checkedonval',\r
+                       'helplink',\r
+                       'currenttime',\r
+                       'itemtime',\r
+                       'init',\r
+                       'text',\r
+                       'jsinput',\r
+                       'jsbuttonbar',\r
+                       'categories',\r
+                       'contents',\r
+                       'ifblogsetting',\r
+                       'ifitemproperty',\r
+                       'else',\r
+                       'endif',\r
+                       'pluginextras',\r
+                       'itemoptions',\r
+                       'extrahead',\r
+                       'ticket',\r
+                       'autosave',\r
+                       'autosaveinfo',\r
+                       'ifautosave'\r
+               );\r
+\r
+               // TODO: maybe add 'skin' later on?\r
+               // TODO: maybe add other pages from admin area\r
+               $this->allowedTypes = Array('bookmarklet','admin');\r
+       }\r
+\r
+       /**\r
+        * creates a "add item" form for a given type of page\r
+        *\r
+        * @param type\r
+        *              'admin' or 'bookmarklet'\r
+        */\r
+       function createAddForm($type, $contents = array()) {\r
+               if (!in_array($type, $this->allowedTypes))\r
+                       return;\r
+               $this->type = $type;\r
+               $this->method = 'add';\r
+\r
+               global $manager;\r
+               $manager->notify('PreAddItemForm', array('contents' => &$contents, 'blog' => &$this->blog));\r
+\r
+               $this->createForm($contents);\r
+       }\r
+\r
+       /**\r
+        * creates a "add item" form for a given type of page\r
+        *\r
+        * @param type\r
+        *              'admin' or 'bookmarklet'\r
+        * @param contents\r
+        *              An associative array\r
+        *                      'author' => author\r
+        *                      '' =>\r
+        */\r
+       function createEditForm($type, $contents) {\r
+               if (!in_array($type, $this->allowedTypes))\r
+                       return;\r
+               $this->type = $type;\r
+               $this->method = 'edit';\r
+               $this->createForm($contents);\r
+       }\r
+\r
+       /**\r
+        * (private) creates a form for a given type of page\r
+        */\r
+       function createForm($contents) {\r
+               // save contents\r
+               $this->variables = $contents;\r
+\r
+               // get template to use\r
+               $template = $this->getTemplateFor($this->type);\r
+\r
+               // use the PARSER engine to parse that template\r
+               $parser =& new PARSER($this->actions, $this);\r
+               $parser->parse($template);\r
+       }\r
+\r
+       /**\r
+        * returns an appropriate template\r
+        */\r
+       function getTemplateFor($type) {\r
+               global $DIR_LIBS;\r
+\r
+               $filename = $DIR_LIBS . 'include/' . $this->type . '-' . $this->method . '.template';\r
+\r
+               if (!file_exists($filename))\r
+                       return '';\r
+\r
+               $fsize = filesize($filename);\r
+               if ($fsize <= 0)\r
+                       return '';\r
+\r
+               // read file and return it\r
+               $fd = fopen ($filename, 'r');\r
+               $contents = fread ($fd, $fsize);\r
+               fclose ($fd);\r
+\r
+               return $contents;\r
+\r
+       }\r
+\r
+       // create category dropdown box\r
+       function parse_categories($startidx = 0) {\r
+                       if ($this->variables['catid'])\r
+                               $catid = $this->variables['catid'];                             // on edit item\r
+                       else\r
+                               $catid = $this->blog->getDefaultCategory();             // on add item\r
+\r
+                       ADMIN::selectBlogCategory('catid',$catid,$startidx,1,$this->blog->getID());\r
+       }\r
+\r
+       function parse_blogid() {\r
+               echo $this->blog->getID();\r
+       }\r
+\r
+       function parse_blogname() {\r
+               echo $this->blog->getName();\r
+       }\r
+\r
+       function parse_bloglink() {\r
+               echo '<a href="'.htmlspecialchars($this->blog->getURL()).'">'.htmlspecialchars($this->blog->getName()).'</a>';\r
+       }\r
+\r
+       function parse_authorname() {\r
+               // don't use on add item?\r
+               global $member;\r
+               echo $member->getDisplayName();\r
+       }\r
+\r
+       function parse_title() {\r
+               echo $this->contents['title'];\r
+       }\r
+\r
+       /**\r
+        * Indicates the start of a conditional block of data. It will be added to\r
+        * the output only if the blogsetting with the given name equals the\r
+        * given value (default for value = 1 = true)\r
+        *\r
+        * the name of the blogsetting is the column name in the nucleus_blog table\r
+        *\r
+        * the conditional block ends with an <endif> var\r
+        */\r
+       function parse_ifblogsetting($name,$value=1) {\r
+               $this->_addIfCondition(($this->blog->getSetting($name) == $value));\r
+       }\r
+\r
+       function parse_ifitemproperty($name,$value=1) {\r
+               $this->_addIfCondition(($this->variables[$name] == $value));\r
+       }\r
+\r
+       function parse_ifautosave($name,$value=1) {\r
+               global $member;\r
+               $this->_addIfCondition($member->getAutosave() == $value);\r
+       }\r
+\r
+       function parse_helplink($topic) {\r
+               help($topic);\r
+       }\r
+\r
+       // for future items\r
+       function parse_currenttime($what) {\r
+               $nu = getdate($this->blog->getCorrectTime());\r
+               echo $nu[$what];\r
+       }\r
+\r
+       // date change on edit item\r
+       function parse_itemtime($what) {\r
+               $itemtime = getdate($this->variables['timestamp']);\r
+               echo $itemtime[$what];\r
+       }\r
+\r
+       // some init stuff for all forms\r
+       function parse_init() {\r
+               $authorid = ($this->method == 'edit') ? $this->variables['authorid'] : '';\r
+               $this->blog->insertJavaScriptInfo($authorid);\r
+       }\r
+\r
+       // on bookmarklets only: insert extra html header information (by plugins)\r
+       function parse_extrahead() {\r
+               global $manager;\r
+\r
+               $extrahead = '';\r
+\r
+               $manager->notify(\r
+                       'BookmarkletExtraHead',\r
+                       array(\r
+                               'extrahead' => &$extrahead\r
+                       )\r
+               );\r
+\r
+               echo $extrahead;\r
+       }\r
+\r
+       // inserts some localized text\r
+       function parse_text($which) {\r
+               // constant($which) only available from 4.0.4 :(\r
+               if (defined($which)) {\r
+                       eval("echo $which;");\r
+               } else {\r
+                       echo $which;    // this way we see where definitions are missing\r
+               }\r
+\r
+       }\r
+\r
+       function parse_contents($which) {\r
+               if (!isset($this->variables[$which])) $this->variables[$which] = '';\r
+               echo htmlspecialchars($this->variables[$which],ENT_QUOTES);\r
+       }\r
+\r
+       function parse_checkedonval($value, $name) {\r
+               if (!isset($this->variables[$name])) $this->variables[$name] = '';\r
+               if ($this->variables[$name] == $value)\r
+                       echo 'checked="checked"';\r
+       }\r
+\r
+       // extra javascript for input and textarea fields\r
+       function parse_jsinput($which) {\r
+               global $CONF, $member;\r
+               \r
+               $attributes  = " name=\"{$which}\"";\r
+               $attributes .= " id=\"input{$which}\"";\r
+               \r
+               if ($CONF['DisableJsTools'] != 1) {\r
+                       $attributes .= ' onclick="storeCaret(this);"';\r
+                       $attributes .= ' onselect="storeCaret(this);"';\r
+                       if ($member->getAutosave()) {\r
+                               $attributes .= " onkeyup=\"storeCaret(this); updPreview('{$which}'); doMonitor();\"";\r
+                       } else {\r
+                               $attributes .= " onkeyup=\"storeCaret(this); updPreview('{$which}');\"";\r
+                       }\r
+               }\r
+               else {\r
+                       if ($CONF['DisableJsTools'] == 0) {\r
+                               $attributes .= ' onkeypress="shortCuts();"';\r
+                       }\r
+                       if ($member->getAutosave()) {\r
+                               $attributes .= ' onkeyup="doMonitor();"';\r
+                       }\r
+               }\r
+               echo $attributes;\r
+       }\r
+\r
+       // shows the javascript button bar\r
+       function parse_jsbuttonbar($extrabuttons = "") {\r
+               global $CONF;\r
+               switch($CONF['DisableJsTools']) {\r
+\r
+                       case "0":\r
+                               echo '<div class="jsbuttonbar">';\r
+\r
+                                       $this->_jsbutton('cut','cutThis()',_ADD_CUT_TT . " (Ctrl + X)");\r
+                                       $this->_jsbutton('copy','copyThis()',_ADD_COPY_TT . " (Ctrl + C)");\r
+                                       $this->_jsbutton('paste','pasteThis()',_ADD_PASTE_TT . " (Ctrl + V)");\r
+                                       $this->_jsbuttonspacer();\r
+                                       $this->_jsbutton('bold',"boldThis()",_ADD_BOLD_TT ." (Ctrl + Shift + B)");\r
+                                       $this->_jsbutton('italic',"italicThis()",_ADD_ITALIC_TT ." (Ctrl + Shift + I)");\r
+                                       $this->_jsbutton('link',"ahrefThis()",_ADD_HREF_TT ." (Ctrl + Shift + A)");\r
+                                       $this->_jsbuttonspacer();\r
+                                       $this->_jsbutton('alignleft',"alignleftThis()",_ADD_ALIGNLEFT_TT);\r
+                                       $this->_jsbutton('alignright',"alignrightThis()",_ADD_ALIGNRIGHT_TT);\r
+                                       $this->_jsbutton('aligncenter',"aligncenterThis()",_ADD_ALIGNCENTER_TT);\r
+                                       $this->_jsbuttonspacer();\r
+                                       $this->_jsbutton('left',"leftThis()",_ADD_LEFT_TT);\r
+                                       $this->_jsbutton('right',"rightThis()",_ADD_RIGHT_TT);\r
+\r
+\r
+                                       if ($extrabuttons) {\r
+                                               $btns = explode('+',$extrabuttons);\r
+                                               $this->_jsbuttonspacer();\r
+                                               foreach ($btns as $button) {\r
+                                                       switch($button) {\r
+                                                               case "media":\r
+                                                                       $this->_jsbutton('media',"addMedia()",_ADD_MEDIA_TT .   " (Ctrl + Shift + M)");\r
+                                                                       break;\r
+                                                               case "preview":\r
+                                                                       $this->_jsbutton('preview',"showedit()",_ADD_PREVIEW_TT);\r
+                                                                       break;\r
+                                                       }\r
+                                               }\r
+                                       }\r
+\r
+                               echo '</div>';\r
+\r
+                               break;\r
+                       case "2":\r
+                               echo '<div class="jsbuttonbar">';\r
+\r
+                                       $this->_jsbutton('bold',"boldThis()",_ADD_BOLD_TT);\r
+                                       $this->_jsbutton('italic',"italicThis()",_ADD_ITALIC_TT);\r
+                                       $this->_jsbutton('link',"ahrefThis()",_ADD_HREF_TT);\r
+                                       $this->_jsbuttonspacer();\r
+                                       $this->_jsbutton('alignleft',"alignleftThis()",_ADD_ALIGNLEFT_TT);\r
+                                       $this->_jsbutton('alignright',"alignrightThis()",_ADD_ALIGNRIGHT_TT);\r
+                                       $this->_jsbutton('aligncenter',"aligncenterThis()",_ADD_ALIGNCENTER_TT);\r
+                                       $this->_jsbuttonspacer();\r
+                                       $this->_jsbutton('left',"leftThis()",_ADD_LEFT_TT);\r
+                                       $this->_jsbutton('right',"rightThis()",_ADD_RIGHT_TT);\r
+\r
+\r
+                                       if ($extrabuttons) {\r
+                                               $btns = explode('+',$extrabuttons);\r
+                                               $this->_jsbuttonspacer();\r
+                                               foreach ($btns as $button) {\r
+                                                       switch($button) {\r
+                                                               case "media":\r
+                                                                       $this->_jsbutton('media',"addMedia()",_ADD_MEDIA_TT);\r
+                                                                       break;\r
+                                                       }\r
+                                               }\r
+                                       }\r
+\r
+                               echo '</div>';\r
+\r
+                               break;\r
+               }\r
+       }\r
+\r
+       /**\r
+        * Allows plugins to add their own custom fields\r
+        */\r
+       function parse_pluginextras() {\r
+               global $manager;\r
+\r
+               switch ($this->method) {\r
+                       case 'add':\r
+                               $manager->notify('AddItemFormExtras',\r
+                                               array(\r
+                                                       'blog' => &$this->blog\r
+                                               )\r
+                               );\r
+                               break;\r
+                       case 'edit':\r
+                               $manager->notify('EditItemFormExtras',\r
+                                               array(\r
+                                                       'variables' => $this->variables,\r
+                                                       'blog' => &$this->blog,\r
+                                                       'itemid' => $this->variables['itemid']\r
+                                               )\r
+                               );\r
+                               break;\r
+               }\r
+       }\r
+\r
+       /**\r
+        * Adds the itemOptions of a plugin to a page\r
+        * @author TeRanEX\r
+        */\r
+       function parse_itemoptions() {\r
+               global $itemid;\r
+               ADMIN::_insertPluginOptions('item', $itemid);\r
+       }\r
+\r
+       function parse_ticket() {\r
+               global $manager;\r
+               $manager->addTicketHidden();\r
+       }\r
+\r
+       /**\r
+        * convenience method\r
+        */\r
+       function _jsbutton($type, $code ,$tooltip) {\r
+       ?>\r
+                       <span class="jsbutton"\r
+                               onmouseover="BtnHighlight(this);"\r
+                               onmouseout="BtnNormal(this);"\r
+                               onclick="<?php echo $code?>" >\r
+                               <img src="images/button-<?php echo $type?>.gif" alt="<?php echo $tooltip?>" title="<?php echo $tooltip?>" width="16" height="16"/>\r
+                       </span>\r
+       <?php   }\r
+       \r
+       function _jsbuttonspacer() {\r
+               echo '<span class="jsbuttonspacer">&nbsp;</span>';\r
+       }\r
+\r
+}\r
+\r
+?>
\ No newline at end of file