管理画面用スキンがちゃんと動作するかは未確認だが、以下の修正を行った。これにより、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のようになる。
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
<?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',
);
/**
- * 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;
}
/**
return;
}
+
/**
* AdminActions::parse_activationmessage()
* Parse skinvar activationmessage
// 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) )
public function parse_adminstylesheets()
{
global $CONF;
- $includePrefix = $this->skin->includePrefix;
+ $includePrefix = $this->skintype->includePrefix;
if ( strlen($includePrefix) > 0 )
{
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
{
}
return;
}
-
}
\ No newline at end of file
{\r
exit;\r
}\r
-require_once dirname(__FILE__) . '/ACTIONS.php';\r
\r
class Skin\r
{\r
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
$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
{\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
{\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
* @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
{\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
\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
* @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
* @return void\r
* \r
*/\r
- function update($type, $content)\r
+ public function update($type, $content)\r
{\r
global $manager;\r
\r
\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
\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
* @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
* @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
*/\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
* @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