OSDN Git Service

Skin/Actions/AdminActionsクラスの整備
authorsakamocchi <o-takashi@sakamocchi.jp>
Sat, 7 Apr 2012 13:49:17 +0000 (22:49 +0900)
committersakamocchi <o-takashi@sakamocchi.jp>
Sat, 7 Apr 2012 13:49:17 +0000 (22:49 +0900)
管理画面用スキンがちゃんと動作するかは未確認だが、以下の修正を行った。これにより、Skinオブジェクトのインスタンスをコンストラクトする際の引数によって、通常ページ/管理画面の動作切り替えを可能とした。

1. 以下を新設。
Actions::$page_action_names
Actions::$page_type_friendly_names
Actions::get_allowed_actions_for_type()
Actions::get_page_action_names()
Actions::get_page_type_friendly_names()
AdminActions::$page_action_names
AdminActions::$page_type_friendly_names
AdminActions::get_allowed_actions_for_type()
AdminActions::get_page_action_names()
AdminActions::get_page_type_friendly_names()
AdminActions::__construct()
AdminActions::$parser
AdminActions::$skin
AdminActions::setParser()
AdminActions::setSkin()
Skin::$admin

2. Skin::__construct()の引数に$adminを追加。
併せてActions/AdminActionsクラスのインクルード分岐も追加。分岐と同時にSkin::$adminも設定される。しかし、skin_descテーブルから自動で判断できるようになるのがより適切な実装だろう。

2. Skin::getAllowedActionsForType()の条件分岐をActions/AdminActionsクラスに移動。
このコードは、Skin::$adminの値により選択されて参照される。

3. Skin::$adminの値によりActions/AdminActionsクラスを切り替えて利用できるようにした。
Skin::parse()によりParser::parse()に処理させることを可能とした。

4. Skin::$adminの値により、発生するイベント名が切り替わるようにした。
例えばInitSkinParseとInitAdminSkinParseのようになる。

nucleus/libs/ACTIONS.php
nucleus/libs/AdminActions.php
nucleus/libs/SKIN.php

index eaef5a5..c7c354d 100644 (file)
@@ -43,6 +43,265 @@ class Actions extends BaseActions
        var $amountfound;\r
        \r
        /**\r
+        * AdminActions::$page_action_names\r
+        * list of whole action names with which this class can deal\r
+        */\r
+       static private $page_action_names = array(\r
+               'otherblog',\r
+               'plugin',\r
+               'version',\r
+               'nucleusbutton',\r
+               'include',\r
+               'phpinclude',\r
+               'parsedinclude',\r
+               'loginform',\r
+               'sitevar',\r
+               'otherarchivelist',\r
+               'otherarchivedaylist',\r
+               'otherarchiveyearlist',\r
+               'self',\r
+               'adminurl',\r
+               'todaylink',\r
+               'archivelink',\r
+               'member',\r
+               'category',\r
+               'searchform',\r
+               'referer',\r
+               'skinname',\r
+               'skinfile',\r
+               'set',\r
+               'if',\r
+               'else',\r
+               'endif',\r
+               'elseif',\r
+               'ifnot',\r
+               'elseifnot',\r
+               'charset',\r
+               'bloglist',\r
+               'addlink',\r
+               'addpopupcode',\r
+               'sticky',\r
+               // deprecated (Nucleus v2.0)\r
+               /* TODO: remove this */\r
+               'ifcat'\r
+       );\r
+       \r
+       /**\r
+        * Actions::$page_type_friendly_names\r
+        * friendly name for wrapped page types\r
+        */\r
+       static public $page_type_friendly_names = array(\r
+               'index'                 => _SKIN_PART_MAIN,\r
+               'item'                  => _SKIN_PART_ITEM,\r
+               'archivelist'   => _SKIN_PART_ALIST,\r
+               'archive'               => _SKIN_PART_ARCHIVE,\r
+               'search'                => _SKIN_PART_SEARCH,\r
+               'error'                 => _SKIN_PART_ERROR,\r
+               'member'                => _SKIN_PART_MEMBER,\r
+               'imagepopup'    => _SKIN_PART_POPUP\r
+       );\r
+       \r
+       /**\r
+        * Actions::get_allowed_actions_for_type()\r
+        * \r
+        * @static\r
+        * @param       string  $type   page type\r
+        * @return      array   allowed actions for the page type\r
+        */\r
+       static public function get_allowed_actions_for_type($type)\r
+       {\r
+               $default_actions = array(\r
+                       'addlink',\r
+                       'addpopupcode',\r
+                       'adminurl',\r
+                       'archivelink',\r
+                       'bloglist',\r
+                       'category',\r
+                       'charset',\r
+                       'else',\r
+                       'elseif',\r
+                       'elseifnot',\r
+                       'endif',\r
+                       'if',\r
+                       'ifnot',\r
+                       'include',\r
+                       'loginform',\r
+                       'member',\r
+                       'nucleusbutton',\r
+                       'otherarchivedaylist',\r
+                       'otherarchivelist',\r
+                       'otherarchiveyearlist',\r
+                       'otherblog',\r
+                       'parsedinclude',\r
+                       'phpinclude',\r
+                       'plugin',\r
+                       'referer',\r
+                       'searchform',\r
+                       'self',\r
+                       'set',\r
+                       'sitevar',\r
+                       'skinfile',\r
+                       'skinname',\r
+                       'sticky',\r
+                       'todaylink',\r
+                       'version',\r
+                       // deprecated (Nucleus v2.0)\r
+                       'ifcat'\r
+               );\r
+               \r
+               // extra actions specific for a certain skin type\r
+               $extra_actions = array();\r
+               \r
+               switch ( $type )\r
+               {\r
+                       case 'index':\r
+                               $extra_actions = array(\r
+                                       'blog',\r
+                                       'blogsetting',\r
+                                       'preview',\r
+                                       'additemform',\r
+                                       'categorylist',\r
+                                       'archivelist',\r
+                                       'archivedaylist',\r
+                                       'archiveyearlist',\r
+                                       'nextlink',\r
+                                       'prevlink'\r
+                               );\r
+                               break;\r
+                       case 'archive':\r
+                               $extra_actions = array(\r
+                                       'blog',\r
+                                       'archive',\r
+                                       'otherarchive',\r
+                                       'categorylist',\r
+                                       'archivelist',\r
+                                       'archivedaylist',\r
+                                       'archiveyearlist',\r
+                                       'blogsetting',\r
+                                       'archivedate',\r
+                                       'nextarchive',\r
+                                       'prevarchive',\r
+                                       'nextlink',\r
+                                       'prevlink',\r
+                                       'archivetype'\r
+                               );\r
+                               break;\r
+                       case 'archivelist':\r
+                               $extra_actions = array(\r
+                                       'blog',\r
+                                       'archivelist',\r
+                                       'archivedaylist',\r
+                                       'archiveyearlist',\r
+                                       'categorylist',\r
+                                       'blogsetting'\r
+                               );\r
+                               break;\r
+                       case 'search':\r
+                               $extra_actions = array(\r
+                                       'blog',\r
+                                       'archivelist',\r
+                                       'archivedaylist',\r
+                                       'archiveyearlist',\r
+                                       'categorylist',\r
+                                       'searchresults',\r
+                                       'othersearchresults',\r
+                                       'blogsetting',\r
+                                       'query',\r
+                                       'nextlink',\r
+                                       'prevlink'\r
+                               );\r
+                               break;\r
+                       case 'imagepopup':\r
+                               $extra_actions = array(\r
+                                       'image',\r
+                                       // deprecated (Nucleus v2.0)\r
+                                       /* TODO: remove this */\r
+                                       'imagetext'\r
+                               );\r
+                               break;\r
+                       case 'member':\r
+                               $extra_actions = array(\r
+                                       'membermailform',\r
+                                       'blogsetting',\r
+                                       'nucleusbutton',\r
+                                       'categorylist'\r
+                               );\r
+                               break;\r
+                       case 'item':\r
+                               $extra_actions = array(\r
+                                       'blog',\r
+                                       'item',\r
+                                       'comments',\r
+                                       'commentform',\r
+                                       'vars',\r
+                                       'blogsetting',\r
+                                       'nextitem',\r
+                                       'previtem',\r
+                                       'nextlink',\r
+                                       'prevlink',\r
+                                       'nextitemtitle',\r
+                                       'previtemtitle',\r
+                                       'categorylist',\r
+                                       'archivelist',\r
+                                       'archivedaylist',\r
+                                       'archiveyearlist',\r
+                                       'itemtitle',\r
+                                       'itemid',\r
+                                       'itemlink'\r
+                               );\r
+                               break;\r
+                       case 'error':\r
+                               $extra_actions = array(\r
+                                       'errormessage',\r
+                                       'categorylist'\r
+                               );\r
+                               break;\r
+                       default:\r
+                                       $extra_actions = array(\r
+                                               'blog',\r
+                                               'blogsetting',\r
+                                               'preview',\r
+                                               'additemform',\r
+                                               'categorylist',\r
+                                               'archivelist',\r
+                                               'archivedaylist',\r
+                                               'archiveyearlist',\r
+                                               'nextlink',\r
+                                               'prevlink',\r
+                                               'membermailform',\r
+                                               'nucleusbutton',\r
+                                               'categorylist'\r
+                                       );\r
+                               break;\r
+               }\r
+               return array_merge($default_actions, $extra_actions);\r
+       }\r
+       \r
+       /**\r
+        * AdminActions::get_page_action_names()\r
+        * \r
+        * @static\r
+        * @param       void\r
+        * @return      array   list of page action names\r
+        */\r
+       static public function get_page_action_names()\r
+       {\r
+               return self::$page_action_names;\r
+       }\r
+       \r
+       /**\r
+        * Actions::get_page_type_friendly_names()\r
+        * \r
+        * @static\r
+        * @param       void\r
+        * @return      array   list of friendly names for page actions\r
+        */\r
+       static public function get_page_type_friendly_names()\r
+       {\r
+               return self::$page_type_friendly_names;\r
+       }\r
+       \r
+       /**\r
         * Actions::__construct()\r
         * Constructor for a new Actions object\r
         * \r
index 7acedab..d561b56 100644 (file)
@@ -1,14 +1,18 @@
 <?php
 class AdminActions extends BaseActions
 {
-       /*
-        * TODO: I believe we can push them into Admin class
-        * if Admin class is just a static class.
-        */
+       public $parser;
        private $skintype;
        private $objAdmin;
        
-       private $actions = array(
+       /* FIXME: this is really needed or not */
+       private $skin;
+       
+       /**
+        * AdminActions::$page_action_names
+        * list of whole action names with which this class can deal
+        */
+       static private $page_action_names = array(
                'actionloglist',
                'activationmessage',
                'addtickettourl',
@@ -128,16 +132,679 @@ class AdminActions extends BaseActions
        );
        
        /**
-        * AdminActions::getDefinedActions()
+        * AdminActions::$page_type_friendly_names
+        * friendly name for wrapped page types
+        */
+       static private $page_type_friendly_names = array(
+               'actionlog'                             => _ADM_SKPRT_ACTIONLOG,
+               'activate'                              => _ADM_SKPRT_ACTIVATE,
+               'activatesetpwd'                => _ADM_SKPRT_ACTIVATESETPWD,
+               'addnewlog'                             => _ADM_SKPRT_ADDNEWLOG,
+               'adminerrorpage'                => _ADM_SKPRT_ADMINERRORPAGE,
+               'adminskindelete'               => _ADM_SKPRT_ADMINSKINDELETE,
+               'adminskinedit'                 => _ADM_SKPRT_ADMINSKINEDIT,
+               'adminskinedittype'             => _ADM_SKPRT_ADMINSKINEDITTYPE,
+               'adminskiniedoimport'   => _ADM_SKPRT_ADMINSKINIEDOIMPORT,
+               'adminskinieimport'             => _ADM_SKPRT_ADMINSKINIEIMPORT,
+               'adminskinieoverview'   => _ADM_SKPRT_ADMINSKINIEOVERVIEW,
+               'adminskinoverview'             => _ADM_SKPRT_ADMINSKINOVERVIEW,
+               'adminskinremovetype'   => _ADM_SKPRT_ADMINSKINREMOVETYPE,
+               'admintemplatedelete'   => _ADM_SKPRT_ADMINTEMPLATEDELETE,
+               'admintemplateedit'             => _ADM_SKPRT_ADMINTEMPLATEEDIT,
+               'admintemplateoverview' => _ADM_SKPRT_ADMINTEMPLATEOVERVIEW,
+               'backupoverview'                => _ADM_SKPRT_BACKUPOVERVIEW,
+               'backuprestore'                 => _ADM_SKPRT_BACKUPRESTORE,
+               'banlist'                               => _ADM_SKPRT_BANLIST,
+               'banlistdelete'                 => _ADM_SKPRT_BANLISTDELETE,
+               'banlistdeleteconfirm'  => _ADM_SKPRT_BANLISTDELETECONFIRM,
+               'banlistnew'                    => _ADM_SKPRT_BANLISTNEW,
+               'batchcategory'                 => _ADM_SKPRT_BATCHCATEGORY,
+               'batchcomment'                  => _ADM_SKPRT_BATCHCOMMENT,
+               'batchdelete'                   => _ADM_SKPRT_BATCHDELETE,
+               'batchitem'                             => _ADM_SKPRT_BATCHITEM,
+               'batchmember'                   => _ADM_SKPRT_BATCHMEMBER,
+               'batchmove'                             => _ADM_SKPRT_BATCHMOVE,
+               'batchteam'                             => _ADM_SKPRT_BATCHTEAM,
+               'blogcommentlist'               => _ADM_SKPRT_BLOGCOMMENTLIST,
+               'blogselectbox'                 => _ADM_SKPRT_BLOGSELECTBOX,
+               'blogsettings'                  => _ADM_SKPRT_BLOGSETTINGS,
+               'bookmarklet'                   => _ADM_SKPRT_BOOKMARKLET,
+               'browseowncomments'             => _ADM_SKPRT_BROWSEOWNCOMMENTS,
+               'browseownitems'                => _ADM_SKPRT_BROWSEOWNITEMS,
+               'categorydelete'                => _ADM_SKPRT_CATEGORYDELETE,
+               'categoryedit'                  => _ADM_SKPRT_CATEGORYEDIT,
+               'commentdelete'                 => _ADM_SKPRT_COMMENTDELETE,
+               'commentedit'                   => _ADM_SKPRT_COMMENTEDIT,
+               'createitem'                    => _ADM_SKPRT_CREATEITEM,
+               'createnewlog'                  => _ADM_SKPRT_CREATENEWLOG,
+               'deleteblog'                    => _ADM_SKPRT_DELETEBLOG,
+               'editmembersettings'    => _ADM_SKPRT_EDITMEMBERSETTINGS,
+               'insertpluginoptions'   => _ADM_SKPRT_INSERTPLUGINO,
+               'itemcommentlist'               => _ADM_SKPRT_ITEMCOMMENTLIST,
+               'itemdelete'                    => _ADM_SKPRT_ITEMDELETE,
+               'itemedit'                              => _ADM_SKPRT_ITEMEDIT,
+               'itemlist'                              => _ADM_SKPRT_ITEMLIST,
+               'itemmove'                              => _ADM_SKPRT_ITEMMOVE,
+               'manage'                                => _ADM_SKPRT_MANAGE,
+               'manageteam'                    => _ADM_SKPRT_MANAGETEAM,
+               'memberdelete'                  => _ADM_SKPRT_MEMBERDELETE,
+               'overview'                              => _ADM_SKPRT_OVERVIEW,
+               'pagefoot'                              => _ADM_SKPRT_PAGEFOOT,
+               'pagehead'                              => _ADM_SKPRT_PAGEHEAD,
+               'plugindelete'                  => _ADM_SKPRT_PLUGINDELETE,
+               'pluginhelp'                    => _ADM_SKPRT_PLUGINHELP,
+               'pluginlist'                    => _ADM_SKPRT_PLUGINLIST,
+               'pluginoptions'                 => _ADM_SKPRT_PLUGINOPTIONS,
+               'settingsedit'                  => _ADM_SKPRT_SETTINGSEDIT,
+               'showlogin'                             => _ADM_SKPRT_SHOWLOGIN,
+               'skindelete'                    => _ADM_SKPRT_SKINDELETE,
+               'skinedit'                              => _ADM_SKPRT_SKINEDIT,
+               'skinedittype'                  => _ADM_SKPRT_SKINEDITTYPE,
+               'skiniedoimport'                => _ADM_SKPRT_SKINIEDOIMPORT,
+               'skinieimport'                  => _ADM_SKPRT_SKINIEIMPORT,
+               'skinieoverview'                => _ADM_SKPRT_SKINIEOVERVIEW,
+               'skinoverview'                  => _ADM_SKPRT_SKINOVERVIEW,
+               'skinremovetype'                => _ADM_SKPRT_SKINREMOVETYPE,
+               'systemoverview'                => _ADM_SKPRT_SYSTEMOVERVIEW,
+               'teamdelete'                    => _ADM_SKPRT_TEAMDELETE,
+               'templatedelete'                => _ADM_SKPRT_TEMPLATEDELETE,
+               'templateedit'                  => _ADM_SKPRT_TEMPLATEEDIT,
+               'templateoverview'              => _ADM_SKPRT_TEMPLATEOVERVIEW,
+               'usermanagement'                => _ADM_SKPRT_USERMANAGEMENT,
+       );
+       
+       /**
+        * AdminActions::get_allowed_actions_for_type()
+        * 
+        * @static
+        * @param       string  $type   page type
+        * @return      array   allowed actions for the page type
+        */
+       static public function get_allowed_actions_for_type($type)
+       {
+               $default_actions = array(
+                       'text',
+                       'if',
+                       'ifnot',
+                       'else',
+                       'elseif',
+                       'elseifnot',
+                       'endif',
+                       'addtickettourl',
+                       'headmessage',
+                       'ticket',
+                       'sprinttext',
+                       'helplink',
+                       'customhelplink',
+                       'adminurl'
+               );
+               
+               $extra_actions = array();
+               
+               switch ($type)
+               {
+               /* NOTE: admin actions */
+                       case 'actionlog':
+                               $extra_actions = array(
+                                       'actionloglist',
+                               );
+                               break;
+                       case 'activate':
+                               $extra_actions = array(
+                                       'activationmessage',
+                                       'eventformextra',
+                               );
+                               break;
+                       case 'activatesetpwd':
+                               $extra_actions = array(
+                               );
+                               break;
+                       case 'addnewlog':
+                               $extra_actions = array(
+                                       'getblogsetting',
+                                       'blogsetting',
+                                       'requestblogid',
+                                       );
+                               break;
+                       case 'adminerrorpage':
+                               $extra_actions = array(
+                               );
+                               break;
+                       case 'adminskindelete':
+                               $extra_actions = array(
+                                       'editadminskintype',
+                               );
+                               break;
+                       case 'adminskinedit':
+                               $extra_actions = array(
+                                       'editadminskin',
+                                       'defaultadminskintypes',
+                                       'adminspecialskinlist',
+                               );
+                               break;
+                       case 'adminskinedittype':
+                               $extra_actions = array(
+                                       'editadminskintype',
+                                       'skintypehelp',
+                                       'allowedadminskinactions',
+                                       'adminskineditallowedlist',
+                               );
+                               break;
+                       case 'adminskiniedoimport':
+                               $extra_actions = array(
+                                       'importskininfo',
+                               );
+                               break;
+                       case 'adminskinieimport':
+                               $extra_actions = array(
+                                       'importskininfo',
+                               );
+                               break;
+                       case 'adminskinieoverview':
+                               $extra_actions = array(
+                                       'selectlocaladminskinfiles',
+                                       'adminskinielist',
+                               );
+                               break;
+                       case 'adminskinoverview':
+                               $extra_actions = array(
+                                       'adminskinoverview',
+                               );
+                               break;
+                       case 'adminskinremovetype':
+                               $extra_actions = array(
+                                       'editadminskintype',
+                               );
+                               break;
+                       case 'admintemplateedit':
+                               $extra_actions = array(
+                                       'editadmintemplateinfo',
+                               );
+                               break;
+                       case 'admintemplateoverview':
+                               $extra_actions = array(
+                                       'admintemplateoverview',
+                               );
+                               break;
+                       case 'backupoverview':
+                               $extra_actions = array(
+                               );
+                               break;
+                       case 'backuprestore':
+                               $extra_actions = array(
+                               );
+                               break;
+                       case 'banlist':
+                               $extra_actions = array(
+                                       'adminbloglink',
+                                       'adminbanlist',
+                                       'requestblogid',
+                               );
+                               break;
+                       case 'banlistdelete':
+                               $extra_actions = array(
+                                       'requestiprange',
+                                       'requestblogid',
+                               );
+                               break;
+                       case 'banlistdeleteconfirm':
+                               $extra_actions = array(
+                                       'banlistdeletedlist',
+                                       'requestblogid',
+                               );
+                               break;
+                       case 'banlistnew':
+                               $extra_actions = array(
+                                       'iprangeinput',
+                                       'requestblogid',
+                                       'blogsetting',
+                               );
+                               break;
+                       case 'batchcategory':
+                               $extra_actions = array(
+                                       'adminbatchaction',
+                                       'adminbatchlist',
+                               );
+                               break;
+                       case 'batchcomment':
+                               $extra_actions = array(
+                                       'adminbatchaction',
+                                       'adminbatchlist',
+                               );
+                               break;
+                       case 'batchdelete':
+                               $extra_actions = array(
+                                       'batchdeletetype',
+                                       'batchdeletelist',
+                               );
+                               break;
+                       case 'batchitem':
+                               $extra_actions = array(
+                                       'adminbatchaction',
+                                       'adminbatchlist',
+                               );
+                               break;
+                       case 'batchmember':
+                               $extra_actions = array(
+                                       'adminbatchaction',
+                                       'adminbatchlist',
+                               );
+                               break;
+                       case 'batchmove':
+                               $extra_actions = array(
+                                       'batchmovetitle',
+                                       'batchmovetype',
+                                       'batchmovelist',
+                                       'movedistselect',
+                                       'batchmovebtn',
+                               );
+                               break;
+                       case 'batchteam':
+                               $extra_actions = array(
+                                       'requestblogid',
+                                       'adminbatchaction',
+                                       'adminbatchlist',
+                               );
+                               break;
+                       case 'blogcommentlist':
+                               $extra_actions = array(
+                                       'adminbloglink',
+                                       'commentnavlist',
+                                       'adminbatchlist',
+                               );
+                               break;
+                       case 'blogselectbox':
+                               $extra_actions = array(
+                                       'blogselectbox',
+                               );
+                               break;
+                       case 'blogsettings':
+                               $extra_actions = array(
+                                       'adminbloglink',
+                                       'blogteammembers',
+                                       'requestblogid',
+                                       'blogsetting',
+                                       'blognotifysetting',
+                                       'defcatselect',
+                                       'blogtime',
+                                       'blogsettingyesno',
+                                       'pluginoptions',
+                                       'blogcatlist',
+                                       'pluginextras',
+                               );
+                               break;
+                       case 'bookmarklet':
+                               $extra_actions = array(
+                                       'bookmarkletadmin',
+                               );
+                               break;
+                       case 'browseowncomments':
+                               $extra_actions = array(
+                                       'commentnavlist',
+                               );
+                               break;
+                       case 'browseownitems':
+                               $extra_actions = array(
+                                       'itemnavlist',
+                               );
+                               break;
+                       case 'categorydelete':
+                               $extra_actions = array(
+                                       'categorysetting',
+                                       'requestblogid',
+                               );
+                               break;
+                       case 'categoryedit':
+                               $extra_actions = array(
+                                       'requestblogid',
+                                       'categorysetting',
+                                       'editdesturl',
+                               );
+                               break;
+                       case 'commentdelete':
+                               $extra_actions = array(
+                                       'deletecomment',
+                               );
+                               break;
+                       case 'commentedit':
+                               $extra_actions = array(
+                                       'editcomment',
+                               );
+                               break;
+                       case 'createitem':
+                               $extra_actions = array(
+                                       'adminbloglink',
+                                       'ifautosave',
+                                       'blogid',
+                                       'jsinput',
+                                       'jsbuttonbar',
+                                       'contents',
+                                       'ifblogsetting',
+                                       'categories',
+                                       'currenttime',
+                                       'pluginextras',
+                                       'itemoptions',
+                               );
+                               break;
+                       case 'createnewlog':
+                               $extra_actions = array(
+                                       'defskinselect',
+                                       'blogtime',
+                               );
+                               break;
+                       case 'deleteblog':
+                               $extra_actions = array(
+                                       'blogsetting',
+                                       'requestblogid',
+                               );
+                               break;
+                       case 'editmembersettings':
+                               $extra_actions = array(
+                                       'editmember',
+                                       'languageselectoptions',
+                                       'adminskinselectoptions',
+                                       'pluginoptions',
+                               );
+                               break;
+                       case 'insertpluginoptions':
+                               $extra_actions = array(
+                                       'insertpluginoptions',
+                               );
+                               break;
+                       case 'itemcommentlist':
+                               $extra_actions = array(
+                                       'requestblogid',
+                                       'commentnavlist',
+                               );
+                               break;
+                       case 'itemdelete':
+                               $extra_actions = array(
+                                       'deleteitemtitle',
+                                       'deleteitembody',
+                                       'deleteitemid',
+                               );
+                               break;
+                       case 'itemedit':
+                               $extra_actions = array(
+                                       'init',
+                                       'ifautosave',
+                                       'contents',
+                                       'jsinput',
+                                       'jsbuttonbar',
+                                       'ifblogsetting',
+                                       'checkedonval',
+                                       'categories',
+                                       'ifitemproperty',
+                                       'currenttime',
+                                       'itemtime',
+                                       'pluginextras',
+                                       'itemoptions',
+                               );
+                               break;
+                       case 'itemlist':
+                               $extra_actions = array(
+                                       'adminbloglink',
+                                       'ilistaddnew',
+                                       'itemnavlist',
+                               );
+                               break;
+                       case 'itemmove':
+                               $extra_actions = array(
+                                       'moveitemid',
+                                       'movedistselect',
+                               );
+                               break;
+                       case 'manage':
+                               $extra_actions = array(
+                               );
+                               break;
+                       case 'manageteam':
+                               $extra_actions = array(
+                                       'requestblogid',
+                                       'blogsetting',
+                                       'blogteamlist',
+                                       'newmemberselect',
+                                       'inputyesno',
+                               );
+                               break;
+                       case 'memberdelete':
+                               $extra_actions = array(
+                                       'editmember',
+                               );
+                               break;
+                       case 'overview':
+                               $extra_actions = array(
+                                       'yrbloglist',
+                               );
+                               break;
+                       case 'pagefoot':
+                               $extra_actions = array(
+                                       'date',
+                                       'qmenuaddselect',
+                                       'member',
+                                       'quickmenu',
+                               );
+                               break;
+                       case 'pagehead':
+                               $extra_actions = array(
+                                       'charset',
+                                       'sitevar',
+                                       'adminstyleseets',
+                                       'adminurl',
+                                       'extrahead',
+                                       'member',
+                                       'versioncheckurl',
+                                       'version',
+                                       'codename',
+                                       'newestcompare',
+                               );
+                               break;
+                       case 'plugindelete':
+                               $extra_actions = array(
+                                       'editpluginfo',
+                               );
+                               break;
+                       case 'pluginhelp':
+                               $extra_actions = array(
+                                       'helpplugname',
+                                       'pluginhelp',
+                               );
+                               break;
+                       case 'pluginlist':
+                               $extra_actions = array(
+                                       'pluginlistlist',
+                                       'newpluginlist',
+                               );
+                               break;
+                       case 'pluginoptions':
+                               $extra_actions = array(
+                                       'editpluginfo',
+                                       'editplugoptionslist',
+                               );
+                               break;
+                       case 'settingsedit':
+                               $extra_actions = array(
+                                       'defblogselect',
+                                       'defskinselect',
+                                       'configsettingsedit',
+                                       'languageselectoptions',
+                                       'configsettingsyesno',
+                                       'outputspecialdirs',
+                                       'jstoolbaroptions',
+                                       'adminstyleselectoptions',
+                                       'mediadirwarning',
+                                       'pluginextras',
+                               );
+                               break;
+                       case 'showlogin':
+                               $extra_actions = array(
+                                       'passrequestvars',
+                                       'adminstyleseets',
+                               );
+                               break;
+                       case 'skindelete':
+                               $extra_actions = array(
+                                       'editskintype',
+                               );
+                               break;
+                       case 'skinedit':
+                               $extra_actions = array(
+                                       'editskin',
+                                       'specialskinlist',
+                               );
+                               break;
+                       case 'skinedittype':
+                               $extra_actions = array(
+                                       'editskintype',
+                                       'skintypehelp',
+                                       'allowedskinactions',
+                                       'skineditallowedlist',
+                                       'skineditallowedlist',
+                               );
+                               break;
+                       case 'skiniedoimport':
+                               $extra_actions = array(
+                                       'importskininfo',
+                               );
+                               break;
+                       case 'skinieimport':
+                               $extra_actions = array(
+                                       'importskininfo',
+                               );
+                               break;
+                       case 'skinieoverview':
+                               $extra_actions = array(
+                                       'selectlocalskinfiles',
+                                       'skinielist',
+                               );
+                               break;
+                       case 'skinoverview':
+                               $extra_actions = array(
+                                       'skinoverview',
+                               );
+                               break;
+                       case 'skinremovetype':
+                               $extra_actions = array(
+                                       'editskintype',
+                               );
+                               break;
+                       case 'systemoverview':
+                               $extra_actions = array(
+                                       'systemsettings',
+                               );
+                               break;
+                       case 'teamdelete':
+                               $extra_actions = array(
+                                       'editmember',
+                                       'blogsetting',
+                                       'requestblogid',
+                               );
+                               break;
+                       case 'templatedelete':
+                               $extra_actions = array(
+                                       'edittemplateinfo',
+                               );
+                               break;
+                       case 'templateedit':
+                               $extra_actions = array(
+                                       'edittemplateinfo',
+                               );
+                               break;
+                       case 'templateoverview':
+                               $extra_actions = array(
+                                       'templateoverview',
+                               );
+                               break;
+                       case 'usermanagement':
+                               $extra_actions = array(
+                                       'editmemberlist',
+                                       'inputyesno',
+                               );
+                               break;
+                       case 'importAdmin':
+                               $extra_actions = array(
+                                       'charset',
+                                       'sitevar',
+                                       'adminstyleseets',
+                                       'adminurl',
+                                       'extrahead',
+                                       'member',
+                                       'versioncheckurl',
+                                       'version',
+                                       'codename',
+                                       'newestcompare',
+                                       'selectlocaladminskinfiles',
+                                       'adminskinielist',
+                               );
+                               break;
+                       default:
+                               break;
+               }
+               return array_merge($default_actions, $extra_actions);
+       }
+       
+       /**
+        * AdminActions::get_defined_actions()
         * Returns an array with the actions that are defined
         * in the AdminActions class
         * 
         * @param       void
         * @return      void
         */
-       public function getDefinedActions()
+       static public function get_page_action_names()
+       {
+               return self::$page_action_names;
+       }
+       
+       /**
+        * AdminActions::get_page_type_friendly_names()
+        * 
+        * @static
+        * @param       void
+        * @return      array   list of friendly names for page actions
+        */
+       static public function get_page_type_friendly_names()
+       {
+               return self::$page_type_friendly_names;
+       }
+       
+       /**
+        * Actions::__construct()
+        * Constructor for a new Actions object
+        * 
+        * @param       string  $type
+        * @return      void
+        */
+       public function __construct($type)
+       {
+               $this->BaseActions();
+               $this->skintype = $type;
+               return;
+       }
+       
+       /**
+        * Actions::setSkin()
+        * Set the skin
+        * @param       object  $skin   an instance of Skin class
+        * @return      void
+        */
+       public function setSkin(&$skin)
        {
-               return $this->actions;
+               $this->skin =& $skin;
+               return;
+       }
+       
+       /**
+        * Actions::setParser()
+        * Set the parser
+        * 
+        * @param       object  $parser an instance of Parser class
+        * @return      void
+        */
+       public function setParser(&$parser)
+       {
+               $this->parser =& $parser;
+               return;
        }
        
        /**
@@ -157,6 +824,7 @@ class AdminActions extends BaseActions
                return;
        }
        
+       
        /**
         * AdminActions::parse_activationmessage()
         * Parse skinvar activationmessage
@@ -528,7 +1196,7 @@ class AdminActions extends BaseActions
                        // max. depth reached (avoid endless loop)
                        return;
                }
-               $skin = new Skin($this->skin->id);
+               $skin = new Skin($this->skintype->id);
                $file = $this->getIncludeFileName($filename);
                
                if ( !$skin->isValid && !file_exists($file) )
@@ -768,7 +1436,7 @@ class AdminActions extends BaseActions
        public function parse_adminstylesheets()
        {
                global $CONF;
-               $includePrefix = $this->skin->includePrefix;
+               $includePrefix = $this->skintype->includePrefix;
                
                if ( strlen($includePrefix) > 0 )
                {
@@ -792,9 +1460,9 @@ class AdminActions extends BaseActions
        public function parse_adminstyleselectoptions()
        {
                global $CONF, $manager, $DIR_NUCLEUS;
-               if ( strlen($this->skin->includePrefix) > 0 )
+               if ( strlen($this->skintype->includePrefix) > 0 )
                {
-                       $scndir = $DIR_NUCLEUS . 'adminskins/' . $this->skin->includePrefix;
+                       $scndir = $DIR_NUCLEUS . 'adminskins/' . $this->skintype->includePrefix;
                }
                else
                {
@@ -4184,5 +4852,4 @@ class AdminActions extends BaseActions
                }
                return;
        }
-
 }
\ No newline at end of file
index e78043a..d24d836 100644 (file)
@@ -21,7 +21,6 @@ if ( !function_exists('requestVar') )
 {\r
        exit;\r
 }\r
-require_once dirname(__FILE__) . '/ACTIONS.php';\r
 \r
 class Skin\r
 {\r
@@ -36,15 +35,27 @@ class Skin
        private $includePrefix;\r
        private $name;\r
        \r
+       /* \r
+        * FIXME:\r
+        * whether to be used by Admin class or not\r
+        * the other way is preferrable instead of this\r
+        * for example, adding admindir to normal/skindir in nucleus_skin_desc.sdincmode \r
+        * \r
+        */\r
+       private $admin = FALSE;\r
+       \r
        /**\r
         * Skin::__construct()\r
         * Constructor for a new SKIN object\r
         * \r
-        * @param       integer $id     id of the skin\r
+        * @param       integer $id             id of the skin\r
+        * @param       boolean $admin  for admin pages or not\r
         * @return      void\r
         */\r
-       public function __construct($id)\r
+       public function __construct($id, $admin=FALSE)\r
        {\r
+               global $DIR_LIBS;\r
+               \r
                $this->id = (integer) $id;\r
                \r
                // read skin name/description/content type\r
@@ -63,6 +74,27 @@ class Skin
                $this->contentType = $obj->sdtype;\r
                $this->includeMode = $obj->sdincmode;\r
                $this->includePrefix = $obj->sdincpref;\r
+               /*\r
+                * FIXME: this key should be replaced by other way\r
+                * such that adding admin key into skin table and so on\r
+                */\r
+               if ( !$admin )\r
+               {\r
+                       if ( !class_exists('Actions', FALSE) )\r
+                       {\r
+                               include("{$DIR_LIBS}ACTIONS.php");\r
+                       }\r
+                       $this->admin = FALSE;\r
+               }\r
+               else\r
+               {\r
+                       if ( !class_exists('AdminActions', FALSE) )\r
+                       {\r
+                               include("{$DIR_LIBS}AdminActions.php");\r
+                       }\r
+                       $this->admin = TRUE;\r
+               }\r
+               \r
                return;\r
        }\r
        \r
@@ -169,7 +201,7 @@ class Skin
        {\r
                $query = "SELECT COUNT (*) AS result FROM %s WHERE sdname='%s';";\r
                $query = sprintf($query, sql_table('skin_desc'), sql_real_escape_string($name));\r
-               return quickQuery($query) > 0;\r
+               return (quickQuery($query) > 0);\r
        }\r
        \r
        /**\r
@@ -184,7 +216,7 @@ class Skin
        {\r
                $query = "SELECT COUNT(*) AS result FROM %s WHERE sdnumber=%d;";\r
                $query = sprintf($query, sql_table('skin_desc'), (integer) $id);\r
-               return quickQuery($query) > 0;\r
+               return (quickQuery($query) > 0);\r
        }\r
        \r
        /**\r
@@ -244,7 +276,7 @@ class Skin
         * @param       String  $includePrefix  value for nucleus_skin.sdincpref\r
         * @return      Integer ID for just inserted record\r
         */\r
-       function createNew($name, $desc, $type = 'text/html', $includeMode = 'normal', $includePrefix = '')\r
+       public function createNew($name, $desc, $type = 'text/html', $includeMode = 'normal', $includePrefix = '')\r
        {\r
                global $manager;\r
                \r
@@ -294,7 +326,14 @@ class Skin
        {\r
                global $currentSkinName, $manager, $CONF;\r
                \r
-               $manager->notify('InitSkinParse',array('skin' => &$this, 'type' => $type));\r
+               if ( !$this->admin )\r
+               {\r
+                       $manager->notify('InitSkinParse',array('skin' => &$this, 'type' => $type));\r
+               }\r
+               else\r
+               {\r
+                       $manager->notify('InitAdminSkinParse',array('skin' => &$this, 'type' => $type));\r
+               }\r
                \r
                // set output type\r
                sendContentType($this->getContentType(), 'skin');\r
@@ -317,19 +356,41 @@ class Skin
                \r
                $actions = $this->getAllowedActionsForType($type);\r
                \r
-               $manager->notify('PreSkinParse',array('skin' => &$this, 'type' => $type, 'contents' => &$contents));\r
+               if ( !$this->admin )\r
+               {\r
+                       $manager->notify('PreSkinParse',array('skin' => &$this, 'type' => $type, 'contents' => &$contents));\r
+               }\r
+               else\r
+               {\r
+                       $manager->notify('PreAdminSkinParse',array('skin' => &$this, 'type' => $type, 'contents' => &$contents));\r
+               }\r
                \r
                // set IncludeMode properties of parser\r
                Parser::setProperty('IncludeMode', $this->getIncludeMode());\r
                Parser::setProperty('IncludePrefix', $this->getIncludePrefix());\r
                \r
-               $handler = new Actions($type, $this);\r
+               if ( !$this->admin )\r
+               {\r
+                       $handler = new Actions($type);\r
+               }\r
+               else\r
+               {\r
+                       $handler = new AdminActions($type);\r
+               }\r
+               \r
                $parser = new Parser($actions, $handler);\r
                $handler->setParser($parser);\r
                $handler->setSkin($this);\r
                $parser->parse($contents);\r
                \r
-               $manager->notify('PostSkinParse',array('skin' => &$this, 'type' => $type));\r
+               if ( !$this->admin )\r
+               {\r
+                       $manager->notify('PostSkinParse',array('skin' => &$this, 'type' => $type));\r
+               }\r
+               else\r
+               {\r
+                       $manager->notify('PostSkinParse',array('skin' => &$this, 'type' => $type));\r
+               }\r
                return;\r
        }\r
        \r
@@ -340,7 +401,7 @@ class Skin
         * @param       string  $type   type of the skin (e.g. index, item, search ...)\r
         * @return      string  content of scontent\r
         */\r
-       function getContent($type)\r
+       public function getContent($type)\r
        {\r
                $query = "SELECT scontent FROM %s WHERE sdesc=%d and stype='%s';";\r
                $query = sprintf($query, sql_table('skin'), (integer) $this->id, sql_real_escape_string($type));\r
@@ -362,7 +423,7 @@ class Skin
         * @return      void\r
         * \r
         */\r
-       function update($type, $content)\r
+       public function update($type, $content)\r
        {\r
                global $manager;\r
                \r
@@ -375,38 +436,56 @@ class Skin
                \r
                if( $skintypevalue && $skintypeexists )\r
                {\r
-                       // PreUpdateSkinPart event\r
-                       $manager->notify(\r
-                               'PreUpdateSkinPart',\r
-                               array(\r
-                                       'skinid' => $this->id,\r
-                                       'type' => $type,\r
-                                       'content' => &$content\r
-                               )\r
+                       $data = array(\r
+                               'skinid'        =>  $this->id,\r
+                               'type'          =>  $type,\r
+                               'content'       => &$content\r
                        );\r
+                       \r
+                       // PreUpdateSkinPart event\r
+                       if ( !$this->admin )\r
+                       {\r
+                               $manager->notify('PreUpdateSkinPart', $data);\r
+                       }\r
+                       else\r
+                       {\r
+                               $manager->notify('PreUpdateAdminSkinPart', $data);\r
+                       }\r
                }\r
                else if( $skintypevalue && !$skintypeexists )\r
                {\r
-                       // PreAddSkinPart event\r
-                       $manager->notify(\r
-                               'PreAddSkinPart',\r
-                               array(\r
-                                       'skinid' => $this->id,\r
-                                       'type' => $type,\r
-                                       'content' => &$content\r
-                               )\r
+                       $data = array(\r
+                               'skinid' => $this->id,\r
+                               'type' => $type,\r
+                               'content' => &$content\r
                        );\r
+                       \r
+                       // PreAddSkinPart event\r
+                       if ( !$this->admin )\r
+                       {\r
+                               $manager->notify('PreAddSkinPart', $data);\r
+                       }\r
+                       else\r
+                       {\r
+                               $manager->notify('PreAddAdminSkinPart', $data);\r
+                       }\r
                }\r
                else if( !$skintypevalue && $skintypeexists )\r
                {\r
-                       // PreDeleteSkinPart event\r
-                       $manager->notify(\r
-                               'PreDeleteSkinPart',\r
-                               array(\r
-                                       'skinid' => $this->id,\r
-                                       'type' => $type\r
-                               )\r
+                       $data = array(\r
+                               'skinid' => $this->id,\r
+                               'type' => $type\r
                        );\r
+                       \r
+                       // PreDeleteSkinPart event\r
+                       if ( !$this->admin )\r
+                       {\r
+                               $manager->notify('PreDeleteSkinPart', $data);\r
+                       }\r
+                       else\r
+                       {\r
+                               $manager->notify('PreDeleteAdminSkinPart', $data);\r
+                       }\r
                }\r
                \r
                // delete old thingie\r
@@ -424,38 +503,56 @@ class Skin
                \r
                if( $skintypevalue && $skintypeexists )\r
                {\r
-                       // PostUpdateSkinPart event\r
-                       $manager->notify(\r
-                       'PostUpdateSkinPart',\r
-                               array(\r
-                                       'skinid'        => $this->id,\r
-                                       'type'          => $type,\r
-                                       'content'       => &$content\r
-                               )\r
+                       $data = array(\r
+                               'skinid'        => $this->id,\r
+                               'type'          => $type,\r
+                               'content'       => &$content\r
                        );\r
+                       \r
+                       // PostUpdateSkinPart event\r
+                       if ( !$this->admin )\r
+                       {\r
+                               $manager->notify('PostUpdateSkinPart', $data);\r
+                       }\r
+                       else\r
+                       {\r
+                               $manager->notify('PostUpdateAdminSkinPart', $data);\r
+                       }\r
                }\r
                else if( $skintypevalue && (!$skintypeexists) )\r
                {\r
-                       // PostAddSkinPart event\r
-                       $manager->notify(\r
-                               'PostAddSkinPart',\r
-                               array(\r
-                                       'skinid'        => $this->id,\r
-                                       'type'          => $type,\r
-                                       'content'       => &$content\r
-                               )\r
+                       $data = array(\r
+                               'skinid'        => $this->id,\r
+                               'type'          => $type,\r
+                               'content'       => &$content\r
                        );\r
+                       \r
+                       // PostAddSkinPart event\r
+                       if ( !$this->admin )\r
+                       {\r
+                               $manager->notify('PostAddSkinPart', $data);\r
+                       }\r
+                       else\r
+                       {\r
+                               $manager->notify('PostAddAdminSkinPart', $data);\r
+                       }\r
                }\r
                else if( (!$skintypevalue) && $skintypeexists )\r
                {\r
-                       // PostDeleteSkinPart event\r
-                       $manager->notify(\r
-                               'PostDeleteSkinPart',\r
-                               array(\r
-                                       'skinid'        => $this->id,\r
-                                       'type'          => $type\r
-                               )\r
+                       $data = array(\r
+                               'skinid'        => $this->id,\r
+                               'type'          => $type\r
                        );\r
+                       \r
+                       // PostDeleteSkinPart event\r
+                       if ( !$this->admin )\r
+                       {\r
+                               $manager->notify('PostDeleteSkinPart', $data);\r
+                       }\r
+                       else\r
+                       {\r
+                               $manager->notify('PostDeleteAdminSkinPart', $data);\r
+                       }\r
                }\r
                return;\r
        }\r
@@ -467,7 +564,7 @@ class Skin
         * @param       void\r
         * @return      void\r
         */\r
-       function deleteAllParts()\r
+       public function deleteAllParts()\r
        {\r
                $query = "DELETE FROM %s WHERE sdesc=%d;";\r
                $query = sprintf($query, sql_table('skin'), (integer) $this->id);\r
@@ -485,7 +582,7 @@ class Skin
         * @param       string  $includePrefix  include prefix of the skin\r
         * @return      void\r
         */\r
-       function updateGeneralInfo($name, $desc, $type = 'text/html', $includeMode = 'normal', $includePrefix = '')\r
+       public function updateGeneralInfo($name, $desc, $type = 'text/html', $includeMode = 'normal', $includePrefix = '')\r
        {\r
                $name                   = sql_real_escape_string($name);\r
                $desc                   = sql_real_escape_string($desc);\r
@@ -510,26 +607,26 @@ class Skin
         */\r
        static public function getFriendlyNames()\r
        {\r
-               $skintypes = array(\r
-                       'index'                 => _SKIN_PART_MAIN,\r
-                       'item'                  => _SKIN_PART_ITEM,\r
-                       'archivelist'   => _SKIN_PART_ALIST,\r
-                       'archive'               => _SKIN_PART_ARCHIVE,\r
-                       'search'                => _SKIN_PART_SEARCH,\r
-                       'error'                 => _SKIN_PART_ERROR,\r
-                       'member'                => _SKIN_PART_MEMBER,\r
-                       'imagepopup'    => _SKIN_PART_POPUP\r
-               );\r
+               if ( !$this->$admin )\r
+               {\r
+                       $friendly_names = Actions::get_page_type_friendly_names();\r
+                       $action_names = Actions::get_page_action_names();\r
+               }\r
+               else\r
+               {\r
+                       $friendly_names = AdminActions::get_page_type_friendly_names();\r
+                       $action_names = AdminActions::get_page_action_names();\r
+               }\r
                \r
-               $query = "SELECT stype FROM " . sql_table('skin')\r
-                      . " WHERE stype NOT IN ('index', 'item', 'error', 'search', 'archive', 'archivelist', 'imagepopup', 'member')";\r
+               $query = "SELECT stype FROM %s WHERE stype NOT IN ('%s');";\r
+               $query = sprintf($query, sql_table('skin'), implode("','", $action_names));\r
                $res = sql_query($query);\r
+               \r
                while ( $row = sql_fetch_array($res) )\r
                {\r
-                       /* TODO: ucfirst() depends on the current locale  */\r
-                       $skintypes[strtolower($row['stype'])] = ucfirst($row['stype']);\r
+                       $friendly_names[strtolower($row['stype'])] = $row['stype'];\r
                }\r
-               return $skintypes;\r
+               return $friendly_names;\r
        }\r
        \r
        /**\r
@@ -540,179 +637,15 @@ class Skin
         * @param       string  $type   type of the skin (e.g. index, item, search ...)\r
         * @return      array   allowed action types\r
         */\r
-       function getAllowedActionsForType($type)\r
+       public function getAllowedActionsForType($type)\r
        {\r
-               global $blogid;\r
-               \r
-               // some actions that can be performed at any time, from anywhere\r
-               $defaultActions = array(\r
-                       'otherblog',\r
-                       'plugin',\r
-                       'version',\r
-                       'nucleusbutton',\r
-                       'include',\r
-                       'phpinclude',\r
-                       'parsedinclude',\r
-                       'loginform',\r
-                       'sitevar',\r
-                       'otherarchivelist',\r
-                       'otherarchivedaylist',\r
-                       'otherarchiveyearlist',\r
-                       'self',\r
-                       'adminurl',\r
-                       'todaylink',\r
-                       'archivelink',\r
-                       'member',\r
-                       'category',\r
-                       'searchform',\r
-                       'referer',\r
-                       'skinname',\r
-                       'skinfile',\r
-                       'set',\r
-                       'if',\r
-                       'else',\r
-                       'endif',\r
-                       'elseif',\r
-                       'ifnot',\r
-                       'elseifnot',\r
-                       'charset',\r
-                       'bloglist',\r
-                       'addlink',\r
-                       'addpopupcode',\r
-                       'sticky',\r
-                       // deprecated (Nucleus v2.0)\r
-                       /* TODO: remove this */\r
-                       'ifcat'\r
-               );\r
-               \r
-               // extra actions specific for a certain skin type\r
-               $extraActions = array();\r
-               \r
-               switch ( $type )\r
+               if ( !$this->admin )\r
+               {\r
+                       return Actions::get_allowed_actions_for_type($type);\r
+               }\r
+               else\r
                {\r
-                       case 'index':\r
-                               $extraActions = array(\r
-                                       'blog',\r
-                                       'blogsetting',\r
-                                       'preview',\r
-                                       'additemform',\r
-                                       'categorylist',\r
-                                       'archivelist',\r
-                                       'archivedaylist',\r
-                                       'archiveyearlist',\r
-                                       'nextlink',\r
-                                       'prevlink'\r
-                               );\r
-                               break;\r
-                       case 'archive':\r
-                               $extraActions = array(\r
-                                       'blog',\r
-                                       'archive',\r
-                                       'otherarchive',\r
-                                       'categorylist',\r
-                                       'archivelist',\r
-                                       'archivedaylist',\r
-                                       'archiveyearlist',\r
-                                       'blogsetting',\r
-                                       'archivedate',\r
-                                       'nextarchive',\r
-                                       'prevarchive',\r
-                                       'nextlink',\r
-                                       'prevlink',\r
-                                       'archivetype'\r
-                               );\r
-                               break;\r
-                       case 'archivelist':\r
-                               $extraActions = array(\r
-                                       'blog',\r
-                                       'archivelist',\r
-                                       'archivedaylist',\r
-                                       'archiveyearlist',\r
-                                       'categorylist',\r
-                                       'blogsetting'\r
-                               );\r
-                               break;\r
-                       case 'search':\r
-                               $extraActions = array(\r
-                                       'blog',\r
-                                       'archivelist',\r
-                                       'archivedaylist',\r
-                                       'archiveyearlist',\r
-                                       'categorylist',\r
-                                       'searchresults',\r
-                                       'othersearchresults',\r
-                                       'blogsetting',\r
-                                       'query',\r
-                                       'nextlink',\r
-                                       'prevlink'\r
-                               );\r
-                               break;\r
-                       case 'imagepopup':\r
-                               $extraActions = array(\r
-                                       'image',\r
-                                       // deprecated (Nucleus v2.0)\r
-                                       /* TODO: remove this */\r
-                                       'imagetext'\r
-                               );\r
-                               break;\r
-                       case 'member':\r
-                               $extraActions = array(\r
-                                       'membermailform',\r
-                                       'blogsetting',\r
-                                       'nucleusbutton',\r
-                                       'categorylist'\r
-                               );\r
-                               break;\r
-                       case 'item':\r
-                               $extraActions = array(\r
-                                       'blog',\r
-                                       'item',\r
-                                       'comments',\r
-                                       'commentform',\r
-                                       'vars',\r
-                                       'blogsetting',\r
-                                       'nextitem',\r
-                                       'previtem',\r
-                                       'nextlink',\r
-                                       'prevlink',\r
-                                       'nextitemtitle',\r
-                                       'previtemtitle',\r
-                                       'categorylist',\r
-                                       'archivelist',\r
-                                       'archivedaylist',\r
-                                       'archiveyearlist',\r
-                                       'itemtitle',\r
-                                       'itemid',\r
-                                       'itemlink'\r
-                               );\r
-                               break;\r
-                       case 'error':\r
-                               $extraActions = array(\r
-                                       'errormessage',\r
-                                       'categorylist'\r
-                               );\r
-                               break;\r
-                       default:\r
-                               if ( $blogid && $blogid > 0 )\r
-                               {\r
-                                       $extraActions = array(\r
-                                               'blog',\r
-                                               'blogsetting',\r
-                                               'preview',\r
-                                               'additemform',\r
-                                               'categorylist',\r
-                                               'archivelist',\r
-                                               'archivedaylist',\r
-                                               'archiveyearlist',\r
-                                               'nextlink',\r
-                                               'prevlink',\r
-                                               'membermailform',\r
-                                               'nucleusbutton',\r
-                                               'categorylist'\r
-                                       );\r
-                               }\r
-                               break;\r
+                       return AdminActions::get_allowed_actions_for_type($type);\r
                }\r
-               return array_merge($defaultActions, $extraActions);\r
        }\r
 }\r